copilot-proxy-api
Version:
Self-hosted GitHub Copilot bridge for Claude Code and Codex CLI with OpenAI Responses, Anthropic Messages, streaming resilience, and context management.
3 lines • 1.57 kB
JavaScript
import e from"consola";var t=class extends Error{response;constructor(e,t){super(e),this.response=t}};function n(e){switch(e){case 400:return`invalid_request_error`;case 401:return`authentication_error`;case 403:return`permission_error`;case 404:return`not_found_error`;case 413:return`request_too_large`;case 429:return`rate_limit_error`;case 529:return`overloaded_error`;default:return e>=500?`api_error`:`invalid_request_error`}}function r(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.type!==`error`)return!1;let n=t.error;if(typeof n!=`object`||!n)return!1;let r=n;return typeof r.type==`string`&&typeof r.message==`string`}function i(e){if(/copilot token not found/i.test(e))return`Upstream authentication unavailable`;if(/copilot/i.test(e)&&/token/i.test(e))return`Upstream authentication error`;let t=e.split(`
`,1)[0];return t.length>500?t.slice(0,500)+`…`:t}async function a(a,o){if(e.error(`Error occurred:`,o),o instanceof t){let t=await o.response.text(),s=o.response.status,c;try{c=JSON.parse(t)}catch{c=t}if(e.error(`HTTP error body:`,c),r(c))return a.json(c,s);let l;if(typeof c==`string`)l=c;else if(c&&typeof c==`object`){let e=c,n=e.error;l=typeof n==`string`?n:n&&typeof n.message==`string`?n.message:typeof e.message==`string`?e.message:t.slice(0,500)}else l=t.slice(0,500);let u={type:`error`,error:{type:n(s),message:i(l)}};return a.json(u,s)}let s={type:`error`,error:{type:`api_error`,message:i(o instanceof Error?o.message:`An unknown error occurred`)}};return a.json(s,500)}export{a as n,t};
//# sourceMappingURL=error-wiGHep5P.mjs.map