@killingjacky/claude-code-router 2.1.1 → 2.2.0

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.
Files changed (60) hide show
  1. package/README.md +53 -19
  2. package/dist/cli.js +234 -238
  3. package/dist/main/cli.js +8896 -0
  4. package/dist/main/fusion-tool-fallback-mcp.js +5 -0
  5. package/dist/main/fusion-vision-mcp.js +10 -0
  6. package/dist/main/gateway-bootstrap.js +2 -0
  7. package/dist/main/local-agent-auth-provider-hook.js +294 -0
  8. package/dist/main/media-tools-proxy-mcp.js +6 -0
  9. package/dist/main/request-log-worker.js +951 -0
  10. package/dist/main/route-script-worker.js +61 -0
  11. package/dist/main/toolhub-mcp.js +48 -0
  12. package/dist/main/upstream-header-sanitizer.js +1 -0
  13. package/dist/models.json +657155 -0
  14. package/dist/renderer/assets/assets/anthropic-CJYB5ODC.png +0 -0
  15. package/dist/renderer/assets/assets/bailian-6RH6ASGG.ico +0 -0
  16. package/dist/renderer/assets/assets/claude-code-WX35JWK4.png +0 -0
  17. package/dist/renderer/assets/assets/claudeapi-A6VUG2I3.png +0 -0
  18. package/dist/renderer/assets/assets/code0-XF6QJ6WD.png +0 -0
  19. package/dist/renderer/assets/assets/codex-3X2KBXKY.png +0 -0
  20. package/dist/renderer/assets/assets/deepseek-ZIDCDTQF.ico +0 -0
  21. package/dist/renderer/assets/assets/fenno-XFKUO3XQ.jpg +0 -0
  22. package/dist/renderer/assets/assets/gemini-7QB7T63T.svg +1 -0
  23. package/dist/renderer/assets/assets/grok-RUIG6CO6.ico +0 -0
  24. package/dist/renderer/assets/assets/infistar-ai-QGWTTUZK.jpg +0 -0
  25. package/dist/renderer/assets/assets/kilo-WKXQUJ25.svg +13 -0
  26. package/dist/renderer/assets/assets/logo-IPLFWCDN.png +0 -0
  27. package/dist/renderer/assets/assets/mascot-transition-DUBPNIIV.svg +100 -0
  28. package/dist/renderer/assets/assets/minimax-5TL6POE3.ico +0 -0
  29. package/dist/renderer/assets/assets/mistral-2RFSC6K3.webp +0 -0
  30. package/dist/renderer/assets/assets/moonshot-FNEXMLNW.ico +0 -0
  31. package/dist/renderer/assets/assets/nvidia-CCRWBFBH.svg +1 -0
  32. package/dist/renderer/assets/assets/openai-2EIP7LI2.png +0 -0
  33. package/dist/renderer/assets/assets/opencode-CEWXDOQI.ico +0 -0
  34. package/dist/renderer/assets/assets/openrouter-CZIFREDB.ico +0 -0
  35. package/dist/renderer/assets/assets/pi-O6OOC4YY.svg +21 -0
  36. package/dist/renderer/assets/assets/qiniu-ai-A5VJAOJ6.png +0 -0
  37. package/dist/renderer/assets/assets/runapi-UAX35AOL.jpg +0 -0
  38. package/dist/renderer/assets/assets/siliconflow-QCZUQAH2.png +0 -0
  39. package/dist/renderer/assets/assets/teamorouter-3LCEETRZ.png +0 -0
  40. package/dist/renderer/assets/assets/tray-cyan-C3U4WBE7.png +0 -0
  41. package/dist/renderer/assets/assets/tray-orange-VUJTRHBB.png +0 -0
  42. package/dist/renderer/assets/assets/tray-violet-EGMLZ2GB.png +0 -0
  43. package/dist/renderer/assets/assets/unity2-QCJYG2D6.jpg +0 -0
  44. package/dist/renderer/assets/assets/workbuddy-LBUELROU.png +0 -0
  45. package/dist/renderer/assets/assets/xiaomi-mimo-LQ6RRXCR.png +0 -0
  46. package/dist/renderer/assets/assets/zai-global-coding-OMCES3LL.svg +219 -0
  47. package/dist/renderer/assets/assets/zai-global-general-OMCES3LL.svg +219 -0
  48. package/dist/renderer/assets/assets/zcode-Z7V7YY2Q.png +0 -0
  49. package/dist/renderer/assets/assets/zhipu-cn-coding-7BBWPUTC.png +0 -0
  50. package/dist/renderer/assets/assets/zhipu-cn-general-7BBWPUTC.png +0 -0
  51. package/dist/renderer/assets/browser.js +408 -0
  52. package/dist/renderer/assets/log-body.worker.js +3 -0
  53. package/dist/renderer/assets/main.css +2 -0
  54. package/dist/renderer/assets/main.js +103 -0
  55. package/dist/renderer/assets/tray.js +8 -0
  56. package/dist/renderer/assets/web-client-bridge.js +1 -0
  57. package/dist/renderer/pages/browser/index.html +13 -0
  58. package/dist/renderer/pages/home/index.html +18 -0
  59. package/dist/renderer/pages/tray/index.html +17 -0
  60. package/package.json +5 -2
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var u="/api/ccr/rpc",d="x-ccr-web-auth",i="ccr_web_token",p="ccr.webAuthToken",s=g();async function t(e,r=[]){let n=await fetch(u,{body:JSON.stringify({args:y(r),method:e}),headers:{"content-type":"application/json",...s?{[d]:s}:{}},method:"POST"}),a;try{a=await n.json()}catch{a=void 0}if(!n.ok||!a?.ok){let c=a&&!a.ok?a.error.message:n.status===404?"CCR management service is unavailable. Make sure the CCR app or ccr ui command is running, then retry.":`CCR web API failed with HTTP ${n.status}`;throw new Error(c)}return a.value}function y(e){let r=e.length;for(;r>0&&e[r-1]===void 0;)r-=1;return r===e.length?e:e.slice(0,r)}function g(){let e=l();return e?(A(e),e):C()}function l(){try{let e=new URL(window.location.href),r=e.searchParams.get(i)?.trim()??"";return r?(e.searchParams.delete(i),window.history.replaceState(window.history.state,"",`${e.pathname}${e.search}${e.hash}`),r):""}catch{return""}}function C(){try{return window.sessionStorage.getItem(p)?.trim()??""}catch{return""}}function A(e){try{window.sessionStorage.setItem(p,e)}catch{}}function o(){return()=>{}}async function P(){let e=window.prompt("Plugin directory path");if(e?.trim())return t("selectPluginDirectory",[e.trim()])}function w(e){let r=new URL(e.trim());if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error("Only http and https URLs can be opened.");return r.toString()}var R={applyClaudeAppGateway:e=>t("applyClaudeAppGateway",[e]),applyProfile:()=>t("applyProfile"),cancelBotGatewayQrLogin:e=>t("cancelBotGatewayQrLogin",[e]),checkProviderConnectivity:e=>t("checkProviderConnectivity",[e]),clearProxyNetworkCaptures:()=>t("clearProxyNetworkCaptures"),closeBotGatewayQrWindow:e=>t("closeBotGatewayQrWindow",[e]),closeTray:()=>Promise.resolve(),detectProviderIcon:e=>t("detectProviderIcon",[e]),exportData:()=>t("exportData"),fetchProviderManifest:e=>t("fetchProviderManifest",[e]),getAgentAnalysis:e=>t("getAgentAnalysis",[e]),getAgentTracePayload:e=>t("getAgentTracePayload",[e]),getAppInfo:()=>t("getAppInfo"),getConfig:()=>t("getConfig"),getGatewayStatus:()=>t("getGatewayStatus"),getLocalAgentProviderCandidates:()=>t("getLocalAgentProviderCandidates"),getOnboardingFinished:()=>t("getOnboardingFinished"),getPendingProviderDeepLinks:()=>Promise.resolve([]),getPluginMarketplace:()=>t("getPluginMarketplace"),getProfileOpenCommand:e=>t("getProfileOpenCommand",[e]),getProfileRuntimeStatus:()=>t("getProfileRuntimeStatus"),getProviderAccountSnapshots:(e,r)=>t("getProviderAccountSnapshots",[e,r]),getProviderCatalogModels:e=>t("getProviderCatalogModels",[e]),getOpenRouterProviderCatalog:e=>t("getOpenRouterProviderCatalog",[e]),getProviderPresets:()=>t("getProviderPresets"),getProxyCertificateStatus:()=>t("getProxyCertificateStatus"),getProxyNetworkCaptures:()=>t("getProxyNetworkCaptures"),getProxyStatus:()=>t("getProxyStatus"),getRequestLogDetail:e=>t("getRequestLogDetail",[e]),getRequestLogBodyChunk:e=>t("getRequestLogBodyChunk",[e]),getRequestLogs:e=>t("getRequestLogs",[e]),getUpdateStatus:()=>t("getUpdateStatus"),getUsageStats:(e,r)=>t("getUsageStats",[e,r]),importLocalAgentProvider:e=>t("importLocalAgentProvider",[e]),installProxyCertificate:()=>t("installProxyCertificate"),listMcpServerTools:e=>t("listMcpServerTools",[e]),onBeforeQuit:o,onOpenSettingsRequest:o,onOpenUpdateRequest:o,onProviderDeepLink:o,onUpdateStatusChanged:o,openBotGatewayQrWindow:e=>t("openBotGatewayQrWindow",[e]),openBuiltInBrowser:e=>t("openBuiltInBrowser",[e]),openExternal:async e=>{window.open(w(e),"_blank","noopener,noreferrer")},openProfile:e=>t("openProfile",[e]),probeLocalAgentProvider:e=>t("probeLocalAgentProvider",[e]),probeProvider:e=>t("probeProvider",[e]),probeProviderCandidates:e=>t("probeProviderCandidates",[e]),quitApp:()=>t("quitApp"),restartGateway:()=>t("restartGateway"),restartProxy:()=>t("restartProxy"),revealProxyCertificate:()=>t("revealProxyCertificate"),resetCodexRateLimitCredit:e=>t("resetCodexRateLimitCredit",[e]),saveApiKeys:e=>t("saveApiKeys",[e]),saveConfig:(e,r)=>t("saveConfig",[e,r]),scanBotHandoffBluetoothTargets:()=>t("scanBotHandoffBluetoothTargets"),scanBotHandoffWifiTargets:()=>t("scanBotHandoffWifiTargets"),selectPluginDirectory:()=>P(),setOnboardingFinished:()=>t("setOnboardingFinished"),setProxyNetworkCaptureEnabled:e=>t("setProxyNetworkCaptureEnabled",[e]),setTrayDetailOpen:()=>Promise.resolve(),showMainWindow:()=>Promise.resolve(),startBotGatewayQrLogin:e=>t("startBotGatewayQrLogin",[e]),startGateway:()=>t("startGateway"),stopGateway:()=>t("stopGateway"),stopProfile:e=>t("stopProfile",[e]),testProviderAccountConnector:e=>t("testProviderAccountConnector",[e]),testRouteScript:e=>t("testRouteScript",[e]),updateCheck:()=>t("updateCheck"),updateDownload:()=>t("updateDownload"),updateInstall:()=>t("updateInstall"),validateRouteScript:e=>t("validateRouteScript",[e]),waitBotGatewayQrLogin:e=>t("waitBotGatewayQrLogin",[e])};window.ccr||(window.ccr=R);})();
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>CCR APPs</title>
7
+ <link rel="stylesheet" href="../../assets/main.css" />
8
+ </head>
9
+ <body>
10
+ <div id="root"></div>
11
+ <script type="module" src="../../assets/browser.js"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1,18 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta
7
+ http-equiv="Content-Security-Policy"
8
+ content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: file:; font-src 'self' data:; connect-src 'self' http://127.0.0.1:* http://localhost:* ws://127.0.0.1:* ws://localhost:*; object-src 'none'; base-uri 'none'; form-action 'none'"
9
+ />
10
+ <title>Claude Code Router</title>
11
+ <link rel="stylesheet" href="../../assets/main.css" />
12
+ </head>
13
+ <body>
14
+ <div id="root"></div>
15
+ <script src="../../assets/web-client-bridge.js"></script>
16
+ <script type="module" src="../../assets/main.js"></script>
17
+ </body>
18
+ </html>
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta
7
+ http-equiv="Content-Security-Policy"
8
+ content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: file:; font-src 'self' data:; connect-src 'self' http://127.0.0.1:* http://localhost:* ws://127.0.0.1:* ws://localhost:*; object-src 'none'; base-uri 'none'; form-action 'none'"
9
+ />
10
+ <title>Claude Code Router Usage</title>
11
+ <link rel="stylesheet" href="../../assets/main.css" />
12
+ </head>
13
+ <body>
14
+ <div id="root"></div>
15
+ <script type="module" src="../../assets/tray.js"></script>
16
+ </body>
17
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@killingjacky/claude-code-router",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Use Claude Code without an Anthropics account and route it to another LLM provider",
5
5
  "files": [
6
6
  "dist",
@@ -40,7 +40,10 @@
40
40
  ],
41
41
  "author": "killingjacky",
42
42
  "license": "MIT",
43
- "repository": "https://github.com/KillingJacky/claude-code-router.git",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/KillingJacky/claude-code-router.git"
46
+ },
44
47
  "devDependencies": {
45
48
  "@types/node": "^24.0.15",
46
49
  "esbuild": "^0.25.1",