Merge branch 'main' into feature/add-model-selector-command

This commit is contained in:
TonyGeez
2025-10-07 20:45:22 -04:00
committed by GitHub
8 changed files with 209 additions and 224 deletions

View File

@@ -587,5 +587,7 @@ A huge thank you to all our sponsors for their generous support!
- @\*霄 - @\*霄
- @\*\*吉 - @\*\*吉
- @\*\*飞 - @\*\*飞
- @\*\*驰
- @x\*g
(If your name is masked, please contact me via my homepage email to update it with your GitHub username.) (If your name is masked, please contact me via my homepage email to update it with your GitHub username.)

View File

@@ -560,6 +560,8 @@ jobs:
- @\*霄 - @\*霄
- @\*\*吉 - @\*\*吉
- @\*\*飞 - @\*\*飞
- @\*\*驰
- @x\*g
(如果您的名字被屏蔽,请通过我的主页电子邮件与我联系,以便使用您的 GitHub 用户名进行更新。) (如果您的名字被屏蔽,请通过我的主页电子邮件与我联系,以便使用您的 GitHub 用户名进行更新。)

View File

@@ -1,6 +1,6 @@
{ {
"name": "@musistudio/claude-code-router", "name": "@musistudio/claude-code-router",
"version": "1.0.55", "version": "1.0.58",
"description": "Use Claude Code without an Anthropics account and route it to another LLM provider", "description": "Use Claude Code without an Anthropics account and route it to another LLM provider",
"bin": { "bin": {
"ccr": "dist/cli.js" "ccr": "dist/cli.js"
@@ -20,8 +20,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@fastify/static": "^8.2.0", "@fastify/static": "^8.2.0",
"@inquirer/prompts": "^5.0.0", "@musistudio/llms": "^1.0.36",
"@musistudio/llms": "^1.0.35",
"dotenv": "^16.4.7", "dotenv": "^16.4.7",
"find-process": "^2.0.0", "find-process": "^2.0.0",
"json5": "^2.2.3", "json5": "^2.2.3",

403
pnpm-lock.yaml generated
View File

@@ -15,8 +15,8 @@ importers:
specifier: ^5.0.0 specifier: ^5.0.0
version: 5.5.0 version: 5.5.0
'@musistudio/llms': '@musistudio/llms':
specifier: ^1.0.35 specifier: ^1.0.36
version: 1.0.35(ws@8.18.3) version: 1.0.36(ws@8.18.3)
dotenv: dotenv:
specifier: ^16.4.7 specifier: ^16.4.7
version: 16.6.1 version: 16.6.1
@@ -50,19 +50,19 @@ importers:
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^24.0.15 specifier: ^24.0.15
version: 24.3.0 version: 24.7.0
esbuild: esbuild:
specifier: ^0.25.1 specifier: ^0.25.1
version: 0.25.9 version: 0.25.10
fastify: fastify:
specifier: ^5.4.0 specifier: ^5.4.0
version: 5.5.0 version: 5.6.1
shx: shx:
specifier: ^0.4.0 specifier: ^0.4.0
version: 0.4.0 version: 0.4.0
typescript: typescript:
specifier: ^5.8.2 specifier: ^5.8.2
version: 5.9.2 version: 5.9.3
packages: packages:
@@ -70,158 +70,158 @@ packages:
resolution: {integrity: sha512-xyoCtHJnt/qg5GG6IgK+UJEndz8h8ljzt/caKXmq3LfBF81nC/BW6E4x2rOWCZcvsLyVW+e8U5mtIr6UCE/kJw==} resolution: {integrity: sha512-xyoCtHJnt/qg5GG6IgK+UJEndz8h8ljzt/caKXmq3LfBF81nC/BW6E4x2rOWCZcvsLyVW+e8U5mtIr6UCE/kJw==}
hasBin: true hasBin: true
'@esbuild/aix-ppc64@0.25.9': '@esbuild/aix-ppc64@0.25.10':
resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
'@esbuild/android-arm64@0.25.9': '@esbuild/android-arm64@0.25.10':
resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@esbuild/android-arm@0.25.9': '@esbuild/android-arm@0.25.10':
resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@esbuild/android-x64@0.25.9': '@esbuild/android-x64@0.25.10':
resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
'@esbuild/darwin-arm64@0.25.9': '@esbuild/darwin-arm64@0.25.10':
resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@esbuild/darwin-x64@0.25.9': '@esbuild/darwin-x64@0.25.10':
resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@esbuild/freebsd-arm64@0.25.9': '@esbuild/freebsd-arm64@0.25.10':
resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-x64@0.25.9': '@esbuild/freebsd-x64@0.25.10':
resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@esbuild/linux-arm64@0.25.9': '@esbuild/linux-arm64@0.25.10':
resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@esbuild/linux-arm@0.25.9': '@esbuild/linux-arm@0.25.10':
resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@esbuild/linux-ia32@0.25.9': '@esbuild/linux-ia32@0.25.10':
resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
'@esbuild/linux-loong64@0.25.9': '@esbuild/linux-loong64@0.25.10':
resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
'@esbuild/linux-mips64el@0.25.9': '@esbuild/linux-mips64el@0.25.10':
resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
'@esbuild/linux-ppc64@0.25.9': '@esbuild/linux-ppc64@0.25.10':
resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@esbuild/linux-riscv64@0.25.9': '@esbuild/linux-riscv64@0.25.10':
resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@esbuild/linux-s390x@0.25.9': '@esbuild/linux-s390x@0.25.10':
resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@esbuild/linux-x64@0.25.9': '@esbuild/linux-x64@0.25.10':
resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@esbuild/netbsd-arm64@0.25.9': '@esbuild/netbsd-arm64@0.25.10':
resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [netbsd] os: [netbsd]
'@esbuild/netbsd-x64@0.25.9': '@esbuild/netbsd-x64@0.25.10':
resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
'@esbuild/openbsd-arm64@0.25.9': '@esbuild/openbsd-arm64@0.25.10':
resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-x64@0.25.9': '@esbuild/openbsd-x64@0.25.10':
resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
'@esbuild/openharmony-arm64@0.25.9': '@esbuild/openharmony-arm64@0.25.10':
resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openharmony] os: [openharmony]
'@esbuild/sunos-x64@0.25.9': '@esbuild/sunos-x64@0.25.10':
resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
'@esbuild/win32-arm64@0.25.9': '@esbuild/win32-arm64@0.25.10':
resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@esbuild/win32-ia32@0.25.9': '@esbuild/win32-ia32@0.25.10':
resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@esbuild/win32-x64@0.25.9': '@esbuild/win32-x64@0.25.10':
resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -241,14 +241,14 @@ packages:
'@fastify/fast-json-stringify-compiler@5.0.3': '@fastify/fast-json-stringify-compiler@5.0.3':
resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==} resolution: {integrity: sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==}
'@fastify/forwarded@3.0.0': '@fastify/forwarded@3.0.1':
resolution: {integrity: sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==} resolution: {integrity: sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==}
'@fastify/merge-json-schemas@0.2.1': '@fastify/merge-json-schemas@0.2.1':
resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==}
'@fastify/proxy-addr@5.0.0': '@fastify/proxy-addr@5.1.0':
resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} resolution: {integrity: sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==}
'@fastify/send@4.1.0': '@fastify/send@4.1.0':
resolution: {integrity: sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==} resolution: {integrity: sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==}
@@ -341,8 +341,8 @@ packages:
resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
engines: {node: '>=8'} engines: {node: '>=8'}
'@musistudio/llms@1.0.35': '@musistudio/llms@1.0.36':
resolution: {integrity: sha512-fW7DCHrhzMNtQiaXlAAivSsn+4+vqOYWAURi1OfwESijRDfJk4Gpi0rhedI9o4e0ucr7ftVRO707sOeo/+TJNA==} resolution: {integrity: sha512-N2PUnFXu60FdR2lmyELytEALp5DFn8r85Rd9h94tnsNWSCNf2DASIzIcGH3GtJEm8RTmgMJfAGvC3dK06GQQ5Q==}
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -356,14 +356,8 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
'@types/mute-stream@0.0.4': '@types/node@24.7.0':
resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==}
'@types/node@22.18.8':
resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==}
'@types/node@24.3.0':
resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==}
'@types/wrap-ansi@3.0.0': '@types/wrap-ansi@3.0.0':
resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==}
@@ -394,16 +388,16 @@ packages:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'} engines: {node: '>=8'}
ansi-regex@6.1.0: ansi-regex@6.2.2:
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
engines: {node: '>=12'} engines: {node: '>=12'}
ansi-styles@4.3.0: ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'} engines: {node: '>=8'}
ansi-styles@6.2.1: ansi-styles@6.2.3:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'} engines: {node: '>=12'}
atomic-sleep@1.0.0: atomic-sleep@1.0.0:
@@ -504,8 +498,8 @@ packages:
end-of-stream@1.4.5: end-of-stream@1.4.5:
resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
esbuild@0.25.9: esbuild@0.25.10:
resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
@@ -533,24 +527,20 @@ packages:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'} engines: {node: '>=8.6.0'}
fast-json-stringify@6.0.1: fast-json-stringify@6.1.1:
resolution: {integrity: sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==} resolution: {integrity: sha512-DbgptncYEXZqDUOEl4krff4mUiVrTZZVI7BBrQR/T3BqMj/eM1flTC1Uk2uUoLcWCxjT95xKulV/Lc6hhOZsBQ==}
fast-querystring@1.1.2: fast-querystring@1.1.2:
resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
fast-redact@3.5.0: fast-uri@3.1.0:
resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
engines: {node: '>=6'}
fast-uri@3.0.6: fastify-plugin@5.1.0:
resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} resolution: {integrity: sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==}
fastify-plugin@5.0.1: fastify@5.6.1:
resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==} resolution: {integrity: sha512-WjjlOciBF0K8pDUPZoGPhqhKrQJ02I8DKaDIfO51EL0kbSMwQFl85cRwhOvmSDWoukNOdTo27gLN549pLCcH7Q==}
fastify@5.5.0:
resolution: {integrity: sha512-ZWSWlzj3K/DcULCnCjEiC2zn2FBPdlZsSA/pnPa/dbUfLvxkD/Nqmb0XXMXLrWkeM4uQPUvjdJpwtXmTfriXqw==}
fastq@1.19.1: fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
@@ -704,8 +694,8 @@ packages:
json-bigint@1.0.0: json-bigint@1.0.0:
resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
json-schema-ref-resolver@2.0.1: json-schema-ref-resolver@3.0.0:
resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==} resolution: {integrity: sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==}
json-schema-traverse@1.0.0: json-schema-traverse@1.0.0:
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
@@ -850,8 +840,8 @@ packages:
pino-std-serializers@7.0.0: pino-std-serializers@7.0.0:
resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==}
pino@9.9.0: pino@9.13.1:
resolution: {integrity: sha512-zxsRIQG9HzG+jEljmvmZupOMDUQ0Jpj0yAgE28jQvvrdYTlEaiGwelJpdndMl/MBuRr70heIj83QyqJUWaU8mQ==} resolution: {integrity: sha512-Szuj+ViDTjKPQYiKumGmEn3frdl+ZPSdosHyt9SnUevFosOkMY2b7ipxlEctNKPmMD/VibeBI+ZcZCJK+4DPuw==}
hasBin: true hasBin: true
process-warning@4.0.1: process-warning@4.0.1:
@@ -914,11 +904,8 @@ packages:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'} engines: {node: '>=10'}
safer-buffer@2.1.2: secure-json-parse@4.1.0:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} resolution: {integrity: sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==}
secure-json-parse@4.0.0:
resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==}
semver@5.7.2: semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
@@ -972,6 +959,9 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'} engines: {node: '>=14'}
slow-redact@0.3.1:
resolution: {integrity: sha512-NvFvl1GuLZNW4U046Tfi8b26zXo8aBzgCAS2f7yVJR/fArN93mOqSA99cB9uITm92ajSz01bsu1K7SCVVjIMpQ==}
sonic-boom@4.2.0: sonic-boom@4.2.0:
resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==}
@@ -995,8 +985,8 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'} engines: {node: '>=8'}
strip-ansi@7.1.0: strip-ansi@7.1.2:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
engines: {node: '>=12'} engines: {node: '>=12'}
strip-eof@1.0.0: strip-eof@1.0.0:
@@ -1036,20 +1026,13 @@ packages:
tr46@0.0.3: tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
type-fest@0.21.3: typescript@5.9.3:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=10'}
typescript@5.9.2:
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
hasBin: true hasBin: true
undici-types@6.21.0: undici-types@7.14.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==}
undici-types@7.10.0:
resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==}
undici@7.16.0: undici@7.16.0:
resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
@@ -1117,82 +1100,82 @@ snapshots:
'@anthropic-ai/sdk@0.54.0': {} '@anthropic-ai/sdk@0.54.0': {}
'@esbuild/aix-ppc64@0.25.9': '@esbuild/aix-ppc64@0.25.10':
optional: true optional: true
'@esbuild/android-arm64@0.25.9': '@esbuild/android-arm64@0.25.10':
optional: true optional: true
'@esbuild/android-arm@0.25.9': '@esbuild/android-arm@0.25.10':
optional: true optional: true
'@esbuild/android-x64@0.25.9': '@esbuild/android-x64@0.25.10':
optional: true optional: true
'@esbuild/darwin-arm64@0.25.9': '@esbuild/darwin-arm64@0.25.10':
optional: true optional: true
'@esbuild/darwin-x64@0.25.9': '@esbuild/darwin-x64@0.25.10':
optional: true optional: true
'@esbuild/freebsd-arm64@0.25.9': '@esbuild/freebsd-arm64@0.25.10':
optional: true optional: true
'@esbuild/freebsd-x64@0.25.9': '@esbuild/freebsd-x64@0.25.10':
optional: true optional: true
'@esbuild/linux-arm64@0.25.9': '@esbuild/linux-arm64@0.25.10':
optional: true optional: true
'@esbuild/linux-arm@0.25.9': '@esbuild/linux-arm@0.25.10':
optional: true optional: true
'@esbuild/linux-ia32@0.25.9': '@esbuild/linux-ia32@0.25.10':
optional: true optional: true
'@esbuild/linux-loong64@0.25.9': '@esbuild/linux-loong64@0.25.10':
optional: true optional: true
'@esbuild/linux-mips64el@0.25.9': '@esbuild/linux-mips64el@0.25.10':
optional: true optional: true
'@esbuild/linux-ppc64@0.25.9': '@esbuild/linux-ppc64@0.25.10':
optional: true optional: true
'@esbuild/linux-riscv64@0.25.9': '@esbuild/linux-riscv64@0.25.10':
optional: true optional: true
'@esbuild/linux-s390x@0.25.9': '@esbuild/linux-s390x@0.25.10':
optional: true optional: true
'@esbuild/linux-x64@0.25.9': '@esbuild/linux-x64@0.25.10':
optional: true optional: true
'@esbuild/netbsd-arm64@0.25.9': '@esbuild/netbsd-arm64@0.25.10':
optional: true optional: true
'@esbuild/netbsd-x64@0.25.9': '@esbuild/netbsd-x64@0.25.10':
optional: true optional: true
'@esbuild/openbsd-arm64@0.25.9': '@esbuild/openbsd-arm64@0.25.10':
optional: true optional: true
'@esbuild/openbsd-x64@0.25.9': '@esbuild/openbsd-x64@0.25.10':
optional: true optional: true
'@esbuild/openharmony-arm64@0.25.9': '@esbuild/openharmony-arm64@0.25.10':
optional: true optional: true
'@esbuild/sunos-x64@0.25.9': '@esbuild/sunos-x64@0.25.10':
optional: true optional: true
'@esbuild/win32-arm64@0.25.9': '@esbuild/win32-arm64@0.25.10':
optional: true optional: true
'@esbuild/win32-ia32@0.25.9': '@esbuild/win32-ia32@0.25.10':
optional: true optional: true
'@esbuild/win32-x64@0.25.9': '@esbuild/win32-x64@0.25.10':
optional: true optional: true
'@fastify/accept-negotiator@2.0.1': {} '@fastify/accept-negotiator@2.0.1': {}
@@ -1201,28 +1184,28 @@ snapshots:
dependencies: dependencies:
ajv: 8.17.1 ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1) ajv-formats: 3.0.1(ajv@8.17.1)
fast-uri: 3.0.6 fast-uri: 3.1.0
'@fastify/cors@11.1.0': '@fastify/cors@11.1.0':
dependencies: dependencies:
fastify-plugin: 5.0.1 fastify-plugin: 5.1.0
toad-cache: 3.7.0 toad-cache: 3.7.0
'@fastify/error@4.2.0': {} '@fastify/error@4.2.0': {}
'@fastify/fast-json-stringify-compiler@5.0.3': '@fastify/fast-json-stringify-compiler@5.0.3':
dependencies: dependencies:
fast-json-stringify: 6.0.1 fast-json-stringify: 6.1.1
'@fastify/forwarded@3.0.0': {} '@fastify/forwarded@3.0.1': {}
'@fastify/merge-json-schemas@0.2.1': '@fastify/merge-json-schemas@0.2.1':
dependencies: dependencies:
dequal: 2.0.3 dequal: 2.0.3
'@fastify/proxy-addr@5.0.0': '@fastify/proxy-addr@5.1.0':
dependencies: dependencies:
'@fastify/forwarded': 3.0.0 '@fastify/forwarded': 3.0.1
ipaddr.js: 2.2.0 ipaddr.js: 2.2.0
'@fastify/send@4.1.0': '@fastify/send@4.1.0':
@@ -1238,7 +1221,7 @@ snapshots:
'@fastify/accept-negotiator': 2.0.1 '@fastify/accept-negotiator': 2.0.1
'@fastify/send': 4.1.0 '@fastify/send': 4.1.0
content-disposition: 0.5.4 content-disposition: 0.5.4
fastify-plugin: 5.0.1 fastify-plugin: 5.1.0
fastq: 1.19.1 fastq: 1.19.1
glob: 11.0.3 glob: 11.0.3
@@ -1362,20 +1345,20 @@ snapshots:
dependencies: dependencies:
string-width: 5.1.2 string-width: 5.1.2
string-width-cjs: string-width@4.2.3 string-width-cjs: string-width@4.2.3
strip-ansi: 7.1.0 strip-ansi: 7.1.2
strip-ansi-cjs: strip-ansi@6.0.1 strip-ansi-cjs: strip-ansi@6.0.1
wrap-ansi: 8.1.0 wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0 wrap-ansi-cjs: wrap-ansi@7.0.0
'@lukeed/ms@2.0.2': {} '@lukeed/ms@2.0.2': {}
'@musistudio/llms@1.0.35(ws@8.18.3)': '@musistudio/llms@1.0.36(ws@8.18.3)':
dependencies: dependencies:
'@anthropic-ai/sdk': 0.54.0 '@anthropic-ai/sdk': 0.54.0
'@fastify/cors': 11.1.0 '@fastify/cors': 11.1.0
'@google/genai': 1.22.0 '@google/genai': 1.22.0
dotenv: 16.6.1 dotenv: 16.6.1
fastify: 5.5.0 fastify: 5.6.1
google-auth-library: 10.4.0 google-auth-library: 10.4.0
json5: 2.2.3 json5: 2.2.3
jsonrepair: 3.13.1 jsonrepair: 3.13.1
@@ -1403,17 +1386,9 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5 '@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1 fastq: 1.19.1
'@types/mute-stream@0.0.4': '@types/node@24.7.0':
dependencies: dependencies:
'@types/node': 24.3.0 undici-types: 7.14.0
'@types/node@22.18.8':
dependencies:
undici-types: 6.21.0
'@types/node@24.3.0':
dependencies:
undici-types: 7.10.0
'@types/wrap-ansi@3.0.0': {} '@types/wrap-ansi@3.0.0': {}
@@ -1428,7 +1403,7 @@ snapshots:
ajv@8.17.1: ajv@8.17.1:
dependencies: dependencies:
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
fast-uri: 3.0.6 fast-uri: 3.1.0
json-schema-traverse: 1.0.0 json-schema-traverse: 1.0.0
require-from-string: 2.0.2 require-from-string: 2.0.2
@@ -1438,13 +1413,13 @@ snapshots:
ansi-regex@5.0.1: {} ansi-regex@5.0.1: {}
ansi-regex@6.1.0: {} ansi-regex@6.2.2: {}
ansi-styles@4.3.0: ansi-styles@4.3.0:
dependencies: dependencies:
color-convert: 2.0.1 color-convert: 2.0.1
ansi-styles@6.2.1: {} ansi-styles@6.2.3: {}
atomic-sleep@1.0.0: {} atomic-sleep@1.0.0: {}
@@ -1526,34 +1501,34 @@ snapshots:
dependencies: dependencies:
once: 1.4.0 once: 1.4.0
esbuild@0.25.9: esbuild@0.25.10:
optionalDependencies: optionalDependencies:
'@esbuild/aix-ppc64': 0.25.9 '@esbuild/aix-ppc64': 0.25.10
'@esbuild/android-arm': 0.25.9 '@esbuild/android-arm': 0.25.10
'@esbuild/android-arm64': 0.25.9 '@esbuild/android-arm64': 0.25.10
'@esbuild/android-x64': 0.25.9 '@esbuild/android-x64': 0.25.10
'@esbuild/darwin-arm64': 0.25.9 '@esbuild/darwin-arm64': 0.25.10
'@esbuild/darwin-x64': 0.25.9 '@esbuild/darwin-x64': 0.25.10
'@esbuild/freebsd-arm64': 0.25.9 '@esbuild/freebsd-arm64': 0.25.10
'@esbuild/freebsd-x64': 0.25.9 '@esbuild/freebsd-x64': 0.25.10
'@esbuild/linux-arm': 0.25.9 '@esbuild/linux-arm': 0.25.10
'@esbuild/linux-arm64': 0.25.9 '@esbuild/linux-arm64': 0.25.10
'@esbuild/linux-ia32': 0.25.9 '@esbuild/linux-ia32': 0.25.10
'@esbuild/linux-loong64': 0.25.9 '@esbuild/linux-loong64': 0.25.10
'@esbuild/linux-mips64el': 0.25.9 '@esbuild/linux-mips64el': 0.25.10
'@esbuild/linux-ppc64': 0.25.9 '@esbuild/linux-ppc64': 0.25.10
'@esbuild/linux-riscv64': 0.25.9 '@esbuild/linux-riscv64': 0.25.10
'@esbuild/linux-s390x': 0.25.9 '@esbuild/linux-s390x': 0.25.10
'@esbuild/linux-x64': 0.25.9 '@esbuild/linux-x64': 0.25.10
'@esbuild/netbsd-arm64': 0.25.9 '@esbuild/netbsd-arm64': 0.25.10
'@esbuild/netbsd-x64': 0.25.9 '@esbuild/netbsd-x64': 0.25.10
'@esbuild/openbsd-arm64': 0.25.9 '@esbuild/openbsd-arm64': 0.25.10
'@esbuild/openbsd-x64': 0.25.9 '@esbuild/openbsd-x64': 0.25.10
'@esbuild/openharmony-arm64': 0.25.9 '@esbuild/openharmony-arm64': 0.25.10
'@esbuild/sunos-x64': 0.25.9 '@esbuild/sunos-x64': 0.25.10
'@esbuild/win32-arm64': 0.25.9 '@esbuild/win32-arm64': 0.25.10
'@esbuild/win32-ia32': 0.25.9 '@esbuild/win32-ia32': 0.25.10
'@esbuild/win32-x64': 0.25.9 '@esbuild/win32-x64': 0.25.10
escape-html@1.0.3: {} escape-html@1.0.3: {}
@@ -1587,40 +1562,38 @@ snapshots:
merge2: 1.4.1 merge2: 1.4.1
micromatch: 4.0.8 micromatch: 4.0.8
fast-json-stringify@6.0.1: fast-json-stringify@6.1.1:
dependencies: dependencies:
'@fastify/merge-json-schemas': 0.2.1 '@fastify/merge-json-schemas': 0.2.1
ajv: 8.17.1 ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1) ajv-formats: 3.0.1(ajv@8.17.1)
fast-uri: 3.0.6 fast-uri: 3.1.0
json-schema-ref-resolver: 2.0.1 json-schema-ref-resolver: 3.0.0
rfdc: 1.4.1 rfdc: 1.4.1
fast-querystring@1.1.2: fast-querystring@1.1.2:
dependencies: dependencies:
fast-decode-uri-component: 1.0.1 fast-decode-uri-component: 1.0.1
fast-redact@3.5.0: {} fast-uri@3.1.0: {}
fast-uri@3.0.6: {} fastify-plugin@5.1.0: {}
fastify-plugin@5.0.1: {} fastify@5.6.1:
fastify@5.5.0:
dependencies: dependencies:
'@fastify/ajv-compiler': 4.0.2 '@fastify/ajv-compiler': 4.0.2
'@fastify/error': 4.2.0 '@fastify/error': 4.2.0
'@fastify/fast-json-stringify-compiler': 5.0.3 '@fastify/fast-json-stringify-compiler': 5.0.3
'@fastify/proxy-addr': 5.0.0 '@fastify/proxy-addr': 5.1.0
abstract-logging: 2.0.1 abstract-logging: 2.0.1
avvio: 9.1.0 avvio: 9.1.0
fast-json-stringify: 6.0.1 fast-json-stringify: 6.1.1
find-my-way: 9.3.0 find-my-way: 9.3.0
light-my-request: 6.6.0 light-my-request: 6.6.0
pino: 9.9.0 pino: 9.13.1
process-warning: 5.0.0 process-warning: 5.0.0
rfdc: 1.4.1 rfdc: 1.4.1
secure-json-parse: 4.0.0 secure-json-parse: 4.1.0
semver: 7.7.2 semver: 7.7.2
toad-cache: 3.7.0 toad-cache: 3.7.0
@@ -1815,7 +1788,7 @@ snapshots:
dependencies: dependencies:
bignumber.js: 9.3.1 bignumber.js: 9.3.1
json-schema-ref-resolver@2.0.1: json-schema-ref-resolver@3.0.0:
dependencies: dependencies:
dequal: 2.0.3 dequal: 2.0.3
@@ -1922,10 +1895,9 @@ snapshots:
pino-std-serializers@7.0.0: {} pino-std-serializers@7.0.0: {}
pino@9.9.0: pino@9.13.1:
dependencies: dependencies:
atomic-sleep: 1.0.0 atomic-sleep: 1.0.0
fast-redact: 3.5.0
on-exit-leak-free: 2.1.2 on-exit-leak-free: 2.1.2
pino-abstract-transport: 2.0.0 pino-abstract-transport: 2.0.0
pino-std-serializers: 7.0.0 pino-std-serializers: 7.0.0
@@ -1933,6 +1905,7 @@ snapshots:
quick-format-unescaped: 4.0.4 quick-format-unescaped: 4.0.4
real-require: 0.2.0 real-require: 0.2.0
safe-stable-stringify: 2.5.0 safe-stable-stringify: 2.5.0
slow-redact: 0.3.1
sonic-boom: 4.2.0 sonic-boom: 4.2.0
thread-stream: 3.1.0 thread-stream: 3.1.0
@@ -1983,9 +1956,7 @@ snapshots:
safe-stable-stringify@2.5.0: {} safe-stable-stringify@2.5.0: {}
safer-buffer@2.1.2: {} secure-json-parse@4.1.0: {}
secure-json-parse@4.0.0: {}
semver@5.7.2: {} semver@5.7.2: {}
@@ -2025,6 +1996,8 @@ snapshots:
signal-exit@4.1.0: {} signal-exit@4.1.0: {}
slow-redact@0.3.1: {}
sonic-boom@4.2.0: sonic-boom@4.2.0:
dependencies: dependencies:
atomic-sleep: 1.0.0 atomic-sleep: 1.0.0
@@ -2043,15 +2016,15 @@ snapshots:
dependencies: dependencies:
eastasianwidth: 0.2.0 eastasianwidth: 0.2.0
emoji-regex: 9.2.2 emoji-regex: 9.2.2
strip-ansi: 7.1.0 strip-ansi: 7.1.2
strip-ansi@6.0.1: strip-ansi@6.0.1:
dependencies: dependencies:
ansi-regex: 5.0.1 ansi-regex: 5.0.1
strip-ansi@7.1.0: strip-ansi@7.1.2:
dependencies: dependencies:
ansi-regex: 6.1.0 ansi-regex: 6.2.2
strip-eof@1.0.0: {} strip-eof@1.0.0: {}
@@ -2081,13 +2054,9 @@ snapshots:
tr46@0.0.3: {} tr46@0.0.3: {}
type-fest@0.21.3: {} typescript@5.9.3: {}
typescript@5.9.2: {} undici-types@7.14.0: {}
undici-types@6.21.0: {}
undici-types@7.10.0: {}
undici@7.16.0: {} undici@7.16.0: {}
@@ -2126,9 +2095,9 @@ snapshots:
wrap-ansi@8.1.0: wrap-ansi@8.1.0:
dependencies: dependencies:
ansi-styles: 6.2.1 ansi-styles: 6.2.3
string-width: 5.1.2 string-width: 5.1.2
strip-ansi: 7.1.0 strip-ansi: 7.1.2
wrappy@1.0.2: {} wrappy@1.0.2: {}

View File

@@ -158,7 +158,7 @@ async function run(options: RunOptions = {}) {
}); });
}); });
server.addHook("preHandler", async (req, reply) => { server.addHook("preHandler", async (req, reply) => {
if (req.url.startsWith("/v1/messages")) { if (req.url.startsWith("/v1/messages") && !req.url.startsWith("/v1/messages/count_tokens")) {
const useAgents = [] const useAgents = []
for (const agent of agentsManager.getAllAgents()) { for (const agent of agentsManager.getAllAgents()) {
@@ -198,7 +198,7 @@ async function run(options: RunOptions = {}) {
event.emit('onError', request, reply, error); event.emit('onError', request, reply, error);
}) })
server.addHook("onSend", (req, reply, payload, done) => { server.addHook("onSend", (req, reply, payload, done) => {
if (req.sessionId && req.url.startsWith("/v1/messages")) { if (req.sessionId && req.url.startsWith("/v1/messages") && !req.url.startsWith("/v1/messages/count_tokens")) {
if (payload instanceof ReadableStream) { if (payload instanceof ReadableStream) {
if (req.agents) { if (req.agents) {
const abortController = new AbortController(); const abortController = new AbortController();

View File

@@ -5,10 +5,17 @@ import { join } from "path";
import fastifyStatic from "@fastify/static"; import fastifyStatic from "@fastify/static";
import { readdirSync, statSync, readFileSync, writeFileSync, existsSync } from "fs"; import { readdirSync, statSync, readFileSync, writeFileSync, existsSync } from "fs";
import { homedir } from "os"; import { homedir } from "os";
import {calculateTokenCount} from "./utils/router";
export const createServer = (config: any): Server => { export const createServer = (config: any): Server => {
const server = new Server(config); const server = new Server(config);
server.app.post("/v1/messages/count_tokens", async (req, reply) => {
const {messages, tools, system} = req.body;
const tokenCount = calculateTokenCount(messages, system, tools);
return { "input_tokens": tokenCount }
});
// Add endpoint to read config.json with access control // Add endpoint to read config.json with access control
server.app.get("/api/config", async (req, reply) => { server.app.get("/api/config", async (req, reply) => {
return await readConfigFile(); return await readConfigFile();

View File

@@ -63,7 +63,13 @@ export async function executeCodeCommand(args: string[] = []) {
const argsArr = [] const argsArr = []
for (const [argsObjKey, argsObjValue] of Object.entries(argsObj)) { for (const [argsObjKey, argsObjValue] of Object.entries(argsObj)) {
if (argsObjKey !== '_' && argsObj[argsObjKey]) { if (argsObjKey !== '_' && argsObj[argsObjKey]) {
argsArr.push(`${argsObjKey.length === 1 ? '-' : '--'}${argsObjKey} ${JSON.stringify(argsObjValue)}`); const prefix = argsObjKey.length === 1 ? '-' : '--';
// For boolean flags, don't append the value
if (argsObjValue === true) {
argsArr.push(`${prefix}${argsObjKey}`);
} else {
argsArr.push(`${prefix}${argsObjKey} ${JSON.stringify(argsObjValue)}`);
}
} }
} }
const claudeProcess = spawn( const claudeProcess = spawn(

View File

@@ -9,7 +9,7 @@ import { readFile } from 'fs/promises'
const enc = get_encoding("cl100k_base"); const enc = get_encoding("cl100k_base");
const calculateTokenCount = ( export const calculateTokenCount = (
messages: MessageParam[], messages: MessageParam[],
system: any, system: any,
tools: Tool[] tools: Tool[]