@killingjacky/claude-code-router 2.1.0 → 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.
- package/README.md +53 -19
- package/dist/cli.js +234 -238
- package/dist/main/cli.js +8896 -0
- package/dist/main/fusion-tool-fallback-mcp.js +5 -0
- package/dist/main/fusion-vision-mcp.js +10 -0
- package/dist/main/gateway-bootstrap.js +2 -0
- package/dist/main/local-agent-auth-provider-hook.js +294 -0
- package/dist/main/media-tools-proxy-mcp.js +6 -0
- package/dist/main/request-log-worker.js +951 -0
- package/dist/main/route-script-worker.js +61 -0
- package/dist/main/toolhub-mcp.js +48 -0
- package/dist/main/upstream-header-sanitizer.js +1 -0
- package/dist/models.json +657155 -0
- package/dist/renderer/assets/assets/anthropic-CJYB5ODC.png +0 -0
- package/dist/renderer/assets/assets/bailian-6RH6ASGG.ico +0 -0
- package/dist/renderer/assets/assets/claude-code-WX35JWK4.png +0 -0
- package/dist/renderer/assets/assets/claudeapi-A6VUG2I3.png +0 -0
- package/dist/renderer/assets/assets/code0-XF6QJ6WD.png +0 -0
- package/dist/renderer/assets/assets/codex-3X2KBXKY.png +0 -0
- package/dist/renderer/assets/assets/deepseek-ZIDCDTQF.ico +0 -0
- package/dist/renderer/assets/assets/fenno-XFKUO3XQ.jpg +0 -0
- package/dist/renderer/assets/assets/gemini-7QB7T63T.svg +1 -0
- package/dist/renderer/assets/assets/grok-RUIG6CO6.ico +0 -0
- package/dist/renderer/assets/assets/infistar-ai-QGWTTUZK.jpg +0 -0
- package/dist/renderer/assets/assets/kilo-WKXQUJ25.svg +13 -0
- package/dist/renderer/assets/assets/logo-IPLFWCDN.png +0 -0
- package/dist/renderer/assets/assets/mascot-transition-DUBPNIIV.svg +100 -0
- package/dist/renderer/assets/assets/minimax-5TL6POE3.ico +0 -0
- package/dist/renderer/assets/assets/mistral-2RFSC6K3.webp +0 -0
- package/dist/renderer/assets/assets/moonshot-FNEXMLNW.ico +0 -0
- package/dist/renderer/assets/assets/nvidia-CCRWBFBH.svg +1 -0
- package/dist/renderer/assets/assets/openai-2EIP7LI2.png +0 -0
- package/dist/renderer/assets/assets/opencode-CEWXDOQI.ico +0 -0
- package/dist/renderer/assets/assets/openrouter-CZIFREDB.ico +0 -0
- package/dist/renderer/assets/assets/pi-O6OOC4YY.svg +21 -0
- package/dist/renderer/assets/assets/qiniu-ai-A5VJAOJ6.png +0 -0
- package/dist/renderer/assets/assets/runapi-UAX35AOL.jpg +0 -0
- package/dist/renderer/assets/assets/siliconflow-QCZUQAH2.png +0 -0
- package/dist/renderer/assets/assets/teamorouter-3LCEETRZ.png +0 -0
- package/dist/renderer/assets/assets/tray-cyan-C3U4WBE7.png +0 -0
- package/dist/renderer/assets/assets/tray-orange-VUJTRHBB.png +0 -0
- package/dist/renderer/assets/assets/tray-violet-EGMLZ2GB.png +0 -0
- package/dist/renderer/assets/assets/unity2-QCJYG2D6.jpg +0 -0
- package/dist/renderer/assets/assets/workbuddy-LBUELROU.png +0 -0
- package/dist/renderer/assets/assets/xiaomi-mimo-LQ6RRXCR.png +0 -0
- package/dist/renderer/assets/assets/zai-global-coding-OMCES3LL.svg +219 -0
- package/dist/renderer/assets/assets/zai-global-general-OMCES3LL.svg +219 -0
- package/dist/renderer/assets/assets/zcode-Z7V7YY2Q.png +0 -0
- package/dist/renderer/assets/assets/zhipu-cn-coding-7BBWPUTC.png +0 -0
- package/dist/renderer/assets/assets/zhipu-cn-general-7BBWPUTC.png +0 -0
- package/dist/renderer/assets/browser.js +408 -0
- package/dist/renderer/assets/log-body.worker.js +3 -0
- package/dist/renderer/assets/main.css +2 -0
- package/dist/renderer/assets/main.js +103 -0
- package/dist/renderer/assets/tray.js +8 -0
- package/dist/renderer/assets/web-client-bridge.js +1 -0
- package/dist/renderer/pages/browser/index.html +13 -0
- package/dist/renderer/pages/home/index.html +18 -0
- package/dist/renderer/pages/tray/index.html +17 -0
- package/package.json +6 -2
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";var C="2024-11-05",J=f("CCR_MEDIA_MCP_URL"),R=f("CCR_MEDIA_MCP_API_KEY"),h=T(Number(f("CCR_MEDIA_MCP_REQUEST_TIMEOUT_MS")),1e3,36e5,63e4),y=_(),i=Buffer.alloc(0);J||(process.stderr.write(`CCR_MEDIA_MCP_URL is required.
|
|
2
|
+
`),process.exit(1));process.stdin.on("data",n=>{i=Buffer.concat([i,Buffer.isBuffer(n)?n:Buffer.from(n)]),b().catch(e=>{p(u(null,-32603,m(e)))})});process.stdin.resume();async function b(){for(;;){let n=i.indexOf(`\r
|
|
3
|
+
\r
|
|
4
|
+
`);if(n<0)return;let e=M(i.subarray(0,n).toString("utf8"));if(e===void 0){i=i.subarray(n+4),p(u(null,-32600,"Missing or invalid Content-Length header."));continue}let t=n+4,s=t+e;if(i.length<s)return;let r=i.subarray(t,s).toString("utf8");i=i.subarray(s);let o;try{o=JSON.parse(r)}catch(d){p(u(null,-32700,`Invalid JSON-RPC request: ${m(d)}`));continue}let a=await w(o);a&&p(a)}}async function w(n){if(!c(n))return u(null,-32600,"JSON-RPC request must be an object.");let e=n,t=e.id??null;if(!(e.id===void 0&&e.method?.startsWith("notifications/"))){if(e.jsonrpc!=="2.0"||!e.method)return u(t,-32600,"Invalid JSON-RPC 2.0 request.");switch(e.method){case"initialize":return l(t,{capabilities:{tools:{}},protocolVersion:C,serverInfo:{name:"ccr-media-tools",title:"CCR Media Tools",version:"1.0.0"}});case"ping":return l(t,{});case"tools/list":return l(t,{tools:y});case"tools/call":return S(e,t);default:return u(t,-32601,`Unsupported MCP method: ${e.method}`)}}}async function S(n,e){let t=new AbortController,s=setTimeout(()=>t.abort(),h);try{let r={accept:"application/json, text/event-stream","content-type":"application/json","mcp-protocol-version":C};R&&(r.authorization=`Bearer ${R}`);let o=await fetch(J,{body:JSON.stringify(n),headers:r,method:"POST",signal:t.signal}),a=await o.text();if(!o.ok)return u(e,-32603,I(o.status,a));let d;try{d=JSON.parse(a)}catch{return u(e,-32603,"CCR media endpoint returned an invalid JSON-RPC response.")}return P(d)?d:u(e,-32603,"CCR media endpoint returned an invalid JSON-RPC response.")}catch(r){return u(e,-32603,m(r))}finally{clearTimeout(s)}}function _(){let n=f("CCR_MEDIA_MCP_TOOLS_JSON");if(!n)return[];let e;try{e=JSON.parse(n)}catch{return[]}if(!Array.isArray(e))return[];let t=new Set,s=[];for(let r of e){if(!c(r))continue;let o=g(r.name);!o||t.has(o)||(t.add(o),s.push({description:g(r.description)??"CCR media generation tool.",inputSchema:c(r.inputSchema)?r.inputSchema:{type:"object",properties:{}},name:o}))}return s}function M(n){let e=/(?:^|\r?\n)content-length\s*:\s*(\d+)\s*(?:\r?\n|$)/i.exec(n);if(!e)return;let t=Number(e[1]);return Number.isSafeInteger(t)&&t>=0?t:void 0}function I(n,e){try{let t=JSON.parse(e);if(c(t)&&c(t.error)&&typeof t.error.message=="string")return`CCR media endpoint returned HTTP ${n}: ${t.error.message}`}catch{}return`CCR media endpoint returned HTTP ${n}${e.trim()?`: ${e.trim().slice(0,500)}`:"."}`}function l(n,e){return{id:n,jsonrpc:"2.0",result:e}}function u(n,e,t){return{error:{code:e,message:t},id:n,jsonrpc:"2.0"}}function p(n){let e=JSON.stringify(n);process.stdout.write(`Content-Length: ${Buffer.byteLength(e,"utf8")}\r
|
|
5
|
+
\r
|
|
6
|
+
${e}`)}function P(n){return!c(n)||n.jsonrpc!=="2.0"||!("id"in n)?!1:"result"in n||c(n.error)&&typeof n.error.message=="string"&&typeof n.error.code=="number"}function f(n){return process.env[n]?.trim()||void 0}function g(n){return typeof n=="string"&&n.trim()?n.trim():void 0}function T(n,e,t,s){return Number.isFinite(n)?Math.min(t,Math.max(e,Math.trunc(n))):s}function c(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function m(n){return n instanceof Error?n.name==="AbortError"?`CCR media tool call timed out after ${h}ms.`:n.message:String(n)}
|