@trydecember/cli 0.4.16 → 0.4.17

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 (35) hide show
  1. package/dist/chunk-1w0ffpnp.js +1 -0
  2. package/dist/{chunk-jjfhy2x1.js → chunk-2kmt1zgn.js} +1 -1
  3. package/dist/{chunk-0x66zzs3.js → chunk-2v3whmk6.js} +2 -2
  4. package/dist/{chunk-qpm7em0z.js → chunk-30rph1jz.js} +1 -1
  5. package/dist/{chunk-yqe790kh.js → chunk-45h3ghy9.js} +1 -1
  6. package/dist/{chunk-16j5ajd9.js → chunk-6k0j49z8.js} +1 -1
  7. package/dist/{chunk-j77wv5z8.js → chunk-838g1q94.js} +1 -1
  8. package/dist/{chunk-b9mkrg3w.js → chunk-91d1p189.js} +2 -2
  9. package/dist/{chunk-p1bpqzpr.js → chunk-a9f9akac.js} +1 -1
  10. package/dist/{chunk-zdg7ye4q.js → chunk-eghr4f7v.js} +1 -1
  11. package/dist/{chunk-06m9rkf5.js → chunk-gh8x9zrw.js} +1 -1
  12. package/dist/chunk-hce06q17.js +1 -0
  13. package/dist/{chunk-6agwsmkh.js → chunk-jv16a9em.js} +1 -1
  14. package/dist/{chunk-v9qfg9qs.js → chunk-na0teb8x.js} +1 -1
  15. package/dist/{chunk-f7mf3a1w.js → chunk-nnsdn2kx.js} +2 -2
  16. package/dist/{chunk-zp7qwwbs.js → chunk-p7ypw1ek.js} +1 -1
  17. package/dist/{chunk-f0bms32h.js → chunk-r3xqtcj0.js} +2 -2
  18. package/dist/chunk-r9cwadte.js +1 -0
  19. package/dist/{chunk-a2ktpvbd.js → chunk-s6qwb256.js} +1 -1
  20. package/dist/{chunk-nzfg7x7p.js → chunk-s8xnygcc.js} +1 -1
  21. package/dist/chunk-tfm9hw72.js +1 -0
  22. package/dist/{chunk-9eqjzxmq.js → chunk-thj1c82c.js} +11 -11
  23. package/dist/{chunk-dzg63jm4.js → chunk-vw0a344g.js} +1 -1
  24. package/dist/{chunk-c1abe60q.js → chunk-w6v3r8wn.js} +1 -1
  25. package/dist/{chunk-f1htnt08.js → chunk-x72hwsq5.js} +1 -1
  26. package/dist/{chunk-hx3vcz8k.js → chunk-xmvf453q.js} +1 -1
  27. package/dist/{chunk-g0hrnzak.js → chunk-xy30xdh4.js} +1 -1
  28. package/dist/{chunk-fw9zbdny.js → chunk-y4exfe42.js} +1 -1
  29. package/dist/{chunk-8hrcfehw.js → chunk-z9q20rdk.js} +1 -1
  30. package/dist/december.js +8 -8
  31. package/package.json +1 -1
  32. package/dist/chunk-2d7a3axf.js +0 -1
  33. package/dist/chunk-8fp4jhg4.js +0 -1
  34. package/dist/chunk-jw9ezcf3.js +0 -1
  35. package/dist/chunk-ngdy60dw.js +0 -1
@@ -0,0 +1 @@
1
+ import{We,Ve}from"./chunk-91d1p189.js";export{We as generatePKCE,Ve as startLocalOAuthServer};
@@ -37,6 +37,6 @@ import{execSync as k}from"node:child_process";import d from"node:fs/promises";im
37
37
  el.dispatchEvent(new Event('change', { bubbles: true }));
38
38
  return { success: true, tagName: el.tagName, value: el.value };
39
39
  })(${JSON.stringify(s)}, ${JSON.stringify(e)})
40
- `,i=(await this.sendSessionCommand("Runtime.evaluate",{expression:r,returnByValue:!0}))?.result?.value;if(!i||!i.success)return{success:!1,output:"",error:i?.error||`Input element "${s}" not found.`,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]};return{success:!0,output:`Typed "${e}" into <${i.tagName}> (${s})`,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async screenshot(s=!1,e){let r={format:"png"};if(s)r.captureBeyondViewport=!0;let i=(await this.sendSessionCommand("Page.captureScreenshot",r))?.data;if(!i)return{success:!1,output:"",error:"Failed to capture screenshot data from Chrome."};let o=e||P.join(y.tmpdir(),`december-screenshot-${Date.now()}-${Math.random().toString(36).slice(2,6)}.png`);return await f.writeFile(o,Buffer.from(i,"base64")),{success:!0,output:"Screenshot captured successfully.",screenshotPath:o,screenshotBase64:i,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async getConsoleErrors(){return{consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async close(){if(this.ws){try{this.ws.close()}catch{}this.ws=null}if(this.chromeProc){try{this.chromeProc.kill("SIGTERM"),setTimeout(()=>{if(this.chromeProc&&!this.chromeProc.killed)this.chromeProc.kill("SIGKILL")},1000)}catch{}this.chromeProc=null}if(this.tmpProfileDir){try{await f.rm(this.tmpProfileDir,{recursive:!0,force:!0})}catch{}this.tmpProfileDir=null}}}class S{activeSession=null;cleanupRegistered=!1;registerCleanup(){if(this.cleanupRegistered)return;this.cleanupRegistered=!0;let s=()=>{if(this.activeSession)this.activeSession.close().catch(()=>{}),this.activeSession=null};process.once("exit",s),process.once("SIGINT",s),process.once("SIGTERM",s)}async getSession(){if(this.activeSession)return this.activeSession;let s=Boolean(process.env.BUN_TEST)||Boolean(process.env.VITEST);if(s&&process.env.DECEMBER_ENABLE_TEST_BROWSER!=="1")return null;let e=await C();if(!e)return null;try{let{loadConfig:r}=await import("./chunk-qpm7em0z.js"),n=await r().catch(()=>null),i=process.platform!=="linux"||Boolean(process.env.DISPLAY||process.env.WAYLAND_DISPLAY),o=process.env.HEADED==="1"||process.env.DECEMBER_HEADED==="1",t=!(process.env.HEADED==="0"||process.env.DECEMBER_HEADED==="0")&&(o||!s&&i&&n?.browserVisible!==!1),c=new g({chromePath:e,headless:!t});return await c.launch(),this.activeSession=c,this.registerCleanup(),c}catch{return null}}async staticFallbackFetch(s){try{let e=await fetch(s,{headers:{"User-Agent":"Mozilla/5.0 (compatible; DecemberAgent/1.0)"}}),r=await e.text();if(!e.ok)return{text:"",error:`HTTP Error (${e.status}): ${r}`,networkErrors:[`HTTP ${e.status} - ${s}`]};return{text:r.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"").replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()+`
40
+ `,i=(await this.sendSessionCommand("Runtime.evaluate",{expression:r,returnByValue:!0}))?.result?.value;if(!i||!i.success)return{success:!1,output:"",error:i?.error||`Input element "${s}" not found.`,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]};return{success:!0,output:`Typed "${e}" into <${i.tagName}> (${s})`,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async screenshot(s=!1,e){let r={format:"png"};if(s)r.captureBeyondViewport=!0;let i=(await this.sendSessionCommand("Page.captureScreenshot",r))?.data;if(!i)return{success:!1,output:"",error:"Failed to capture screenshot data from Chrome."};let o=e||P.join(y.tmpdir(),`december-screenshot-${Date.now()}-${Math.random().toString(36).slice(2,6)}.png`);return await f.writeFile(o,Buffer.from(i,"base64")),{success:!0,output:"Screenshot captured successfully.",screenshotPath:o,screenshotBase64:i,consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async getConsoleErrors(){return{consoleErrors:[...this.consoleErrors],networkErrors:[...this.networkErrors]}}async close(){if(this.ws){try{this.ws.close()}catch{}this.ws=null}if(this.chromeProc){try{this.chromeProc.kill("SIGTERM"),setTimeout(()=>{if(this.chromeProc&&!this.chromeProc.killed)this.chromeProc.kill("SIGKILL")},1000)}catch{}this.chromeProc=null}if(this.tmpProfileDir){try{await f.rm(this.tmpProfileDir,{recursive:!0,force:!0})}catch{}this.tmpProfileDir=null}}}class S{activeSession=null;cleanupRegistered=!1;registerCleanup(){if(this.cleanupRegistered)return;this.cleanupRegistered=!0;let s=()=>{if(this.activeSession)this.activeSession.close().catch(()=>{}),this.activeSession=null};process.once("exit",s),process.once("SIGINT",s),process.once("SIGTERM",s)}async getSession(){if(this.activeSession)return this.activeSession;let s=Boolean(process.env.BUN_TEST)||Boolean(process.env.VITEST);if(s&&process.env.DECEMBER_ENABLE_TEST_BROWSER!=="1")return null;let e=await C();if(!e)return null;try{let{loadConfig:r}=await import("./chunk-30rph1jz.js"),n=await r().catch(()=>null),i=process.platform!=="linux"||Boolean(process.env.DISPLAY||process.env.WAYLAND_DISPLAY),o=process.env.HEADED==="1"||process.env.DECEMBER_HEADED==="1",t=!(process.env.HEADED==="0"||process.env.DECEMBER_HEADED==="0")&&(o||!s&&i&&n?.browserVisible!==!1),c=new g({chromePath:e,headless:!t});return await c.launch(),this.activeSession=c,this.registerCleanup(),c}catch{return null}}async staticFallbackFetch(s){try{let e=await fetch(s,{headers:{"User-Agent":"Mozilla/5.0 (compatible; DecemberAgent/1.0)"}}),r=await e.text();if(!e.ok)return{text:"",error:`HTTP Error (${e.status}): ${r}`,networkErrors:[`HTTP ${e.status} - ${s}`]};return{text:r.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi,"").replace(/<[^>]+>/g," ").replace(/\s+/g," ").trim()+`
41
41
 
42
42
  [Note: Local Chrome/Chromium not detected. Displaying static HTML text. Install Chrome or Chromium for client-side JavaScript rendering and interactive actions.]`,consoleErrors:[],networkErrors:[]}}catch(e){return{text:"",error:e.message,networkErrors:[`Network request failed: ${e.message}`]}}}navigate=async(s)=>{let e=await this.getSession();if(e)try{return await e.navigate(s)}catch{}return this.staticFallbackFetch(s)};action=async(s)=>{let{action:e,url:r,selector:n,text:i,fullPage:o}=s;if(e==="navigate"){if(!r)return{success:!1,action:"navigate",error:'Action "navigate" requires a valid "url" parameter.'};let t=await this.navigate(r);if(t.error)return{success:!1,action:"navigate",error:t.error,networkErrors:t.networkErrors};return{success:!0,action:"navigate",text:t.text,consoleErrors:t.consoleErrors,networkErrors:t.networkErrors}}if(e==="get_console_errors"){if(this.activeSession){let t=await this.activeSession.getConsoleErrors();return{success:!0,action:"get_console_errors",output:t.consoleErrors.length+t.networkErrors.length>0?`Captured ${t.consoleErrors.length} console error(s) and ${t.networkErrors.length} network error(s).`:"No console or network errors detected.",consoleErrors:t.consoleErrors,networkErrors:t.networkErrors}}return{success:!0,action:"get_console_errors",output:"No active browser session running."}}let a=await this.getSession();if(!a)return{success:!1,action:e,error:`Interactive browser action "${e}" requires Google Chrome or Chromium. Please install Chrome or Chromium, or set the CHROME_PATH environment variable.`};switch(e){case"click":{if(!n)return{success:!1,action:"click",error:'Action "click" requires a "selector" parameter.'};let t=await a.click(n);return{success:t.success,action:"click",output:t.output,error:t.error,consoleErrors:t.consoleErrors,networkErrors:t.networkErrors}}case"type":{if(!n)return{success:!1,action:"type",error:'Action "type" requires a "selector" parameter.'};let t=await a.type(n,i||"");return{success:t.success,action:"type",output:t.output,error:t.error,consoleErrors:t.consoleErrors,networkErrors:t.networkErrors}}case"screenshot":{let t=await a.screenshot(Boolean(o));return{success:t.success,action:"screenshot",output:t.output,screenshotPath:t.screenshotPath,screenshotBase64:t.screenshotBase64,error:t.error,consoleErrors:t.consoleErrors,networkErrors:t.networkErrors}}default:return{success:!1,action:e,error:`Unsupported browser action: ${e}`}}};close=async()=>{if(this.activeSession)await this.activeSession.close(),this.activeSession=null}}var F=new S;export{F as browserRunner};
@@ -1,3 +1,3 @@
1
- import{M,ie,Q}from"./chunk-hx3vcz8k.js";import h from"node:fs";import p from"node:fs/promises";import b from"node:os";import u from"node:path";function se(){let e=process.env.HOME||process.env.USERPROFILE||b.homedir();if(!!process.env.VITEST&&e===b.homedir())return u.join(b.tmpdir(),"december-test-config",".config","december");if(process.env.XDG_CONFIG_HOME)return u.join(process.env.XDG_CONFIG_HOME,"december");return u.join(e,".config","december")}function g(){return u.join(se(),"config.json")}function G(){if(process.env.DECEMBER_CONFIG_DIR)return process.env.DECEMBER_CONFIG_DIR;let e=process.env.HOME||process.env.USERPROFILE||b.homedir();if(!!process.env.VITEST&&e===b.homedir())return u.join(b.tmpdir(),"december-test-config",".december");let r=u.join(e,".december"),t=u.join(e,".config","december");if(h.existsSync(r)||!h.existsSync(t))return r;return t}function f(){return u.join(G(),"config.json")}function w(e,i){let r={...e};for(let t of Object.keys(i)){let s=i[t],o=e[t];if(s===void 0)continue;if(typeof s==="object"&&s!==null&&!Array.isArray(s)&&typeof o==="object"&&o!==null&&!Array.isArray(o))r[t]={...o,...s};else r[t]=s}return r}async function l(){try{let e=f(),i;try{i=await p.readFile(e,"utf-8")}catch(t){let s=g();if(s!==e&&h.existsSync(s)){i=await p.readFile(s,"utf-8");try{await p.mkdir(u.dirname(e),{recursive:!0}),await p.writeFile(e,i,"utf-8"),await p.chmod(e,384).catch(()=>{})}catch{}}else throw t}let r;try{r=JSON.parse(i)}catch{try{let t=i.replace(/,\s*([\]}])/g,"$1");r=JSON.parse(t)}catch{try{let t=`${e}.corrupt.${Date.now()}`;await p.writeFile(t,i,"utf-8")}catch{}return{providers:{}}}}try{let t=u.join(process.cwd(),".december","settings.json"),s=await p.readFile(t,"utf-8"),o=JSON.parse(s);r=w(r,o)}catch{}if(!r||typeof r!=="object")r={providers:{}};else if(!r.providers||typeof r.providers!=="object"||Array.isArray(r.providers))r.providers={};if(!r.activeProvider){if(r.providers&&Object.keys(r.providers).length>0)r.activeProvider=Object.keys(r.providers)[0];else if(r.subscriptions&&Object.keys(r.subscriptions).length>0){if(r.activeProvider=Object.keys(r.subscriptions)[0],!r.authPriority)r.authPriority="subscription"}}return r}catch{return{providers:{}}}}async function d(e){let i=!!process.env.VITEST,r=G(),t=f(),s=b.homedir(),o=t===u.join(s,".december","config.json")||t===u.join(s,".config","december","config.json");if(i&&o)r=u.join(b.tmpdir(),"december-test-config",".december"),t=u.join(r,"config.json");await p.mkdir(r,{recursive:!0}),await p.writeFile(t,JSON.stringify(e,null,2),"utf-8"),await p.chmod(t,384).catch(()=>{});try{let n=u.join(process.cwd(),".december","settings.json");await p.access(n);let c={};try{let v=await p.readFile(n,"utf-8");c=JSON.parse(v)}catch{}if(e.thinkingLevel!==void 0)c.thinkingLevel=e.thinkingLevel;if(e.steeringMode!==void 0)c.steeringMode=e.steeringMode;if(e.followUpMode!==void 0)c.followUpMode=e.followUpMode;if(e.toolPermission!==void 0)c.toolPermission=e.toolPermission;if(e.pathGuard!==void 0)c.pathGuard=e.pathGuard;if(e.nonWorkspaceAccess!==void 0)c.nonWorkspaceAccess=e.nonWorkspaceAccess;await p.writeFile(n,JSON.stringify(c,null,2)+`
2
- `,"utf-8")}catch{}}function C(e){if(!e.subscriptions||Object.keys(e.subscriptions).length===0)return;let i=e.activeProvider;if(i&&e.subscriptions[i])return{provider:i,bundle:e.subscriptions[i]};if(i){if((i==="anthropic"||i==="claude")&&e.subscriptions.claude)return{provider:"claude",bundle:e.subscriptions.claude};if((i==="openai"||i==="codex"||i==="chatgpt")&&e.subscriptions.codex)return{provider:"codex",bundle:e.subscriptions.codex};if((i==="google"||i==="gemini"||i==="antigravity")&&(e.subscriptions.gemini||e.subscriptions.google||e.subscriptions.antigravity)){let t=e.subscriptions.gemini||e.subscriptions.google||e.subscriptions.antigravity;return{provider:t.provider||"gemini",bundle:t}}}let r=!!(i&&e.providers&&e.providers[i]);if(e.authPriority==="subscription"||!r||!i){let t=Object.keys(e.subscriptions)[0];if(t&&e.subscriptions[t])return{provider:t,bundle:e.subscriptions[t]}}return}async function ut(){let e=await l(),i=!!(e.activeProvider&&e.providers&&e.providers[e.activeProvider]),r=!!e.decemberToken,t=C(e);if(e.authPriority==="december"&&r)return{provider:"december_proxy",apiKey:e.decemberToken,model:"december-auto",authMethod:"december"};if((e.authPriority==="byok"||i&&e.authPriority!=="subscription")&&i){let s=Q(e.activeProvider,e.activeModel);return{provider:e.activeProvider,apiKey:e.providers[e.activeProvider],model:s,authMethod:"byok"}}if(t&&(e.authPriority==="subscription"||!i&&e.authPriority!=="december"||e.authPriority!=="byok"&&e.authPriority!=="december")){let{resolveSubscriptionToken:s}=await import("./chunk-6agwsmkh.js"),o=await s(t.provider,t.bundle),n=o.provider||t.provider,c=Q(n,e.activeModel);return{provider:n,apiKey:o.accessToken,model:c,authMethod:"subscription",subscription:o,baseURL:o.endpoint}}if(i){let s=Q(e.activeProvider,e.activeModel);return{provider:e.activeProvider,apiKey:e.providers[e.activeProvider],model:s,authMethod:"byok"}}if(r)return{provider:"december_proxy",apiKey:e.decemberToken,model:"december-auto",authMethod:"december"};if(process.env.CLAUDE_CODE_OAUTH_TOKEN||process.env.ANTHROPIC_AUTH_TOKEN||process.env.COPILOT_TOKEN||process.env.GITHUB_COPILOT_TOKEN||process.env.OPENAI_OAUTH_TOKEN||process.env.CODEX_TOKEN||process.env.GEMINI_OAUTH_TOKEN||process.env.ANTIGRAVITY_TOKEN){let{detectAllSubscriptions:s,resolveSubscriptionToken:o}=await import("./chunk-6agwsmkh.js"),n=await s(),c=e.unlinkedSubscriptions||[],m=Object.keys(n).filter((y)=>!c.includes(y))[0];if(m&&n[m]){let y=await o(m,n[m]),k=y.provider||m,P=Q(k,e.activeModel);return{provider:k,apiKey:y.accessToken,model:P,authMethod:"subscription",subscription:y,baseURL:y.endpoint}}}return}async function dt(){let e=await l(),i=!!(e.activeProvider&&e.providers&&e.providers[e.activeProvider]),r=e.subscriptions?Object.keys(e.subscriptions):[],t=r.length>0;return{hasByok:i,hasDecember:!!e.decemberToken,hasSubscription:t,subscriptions:r,authPriority:e.authPriority||(t?"subscription":"byok")}}function q(e){switch((e||"").toLowerCase().trim()){case"openai":return"OpenAI";case"anthropic":return"Anthropic";case"gemini":case"google":return"Google Gemini";case"deepseek":return"DeepSeek";case"openrouter":return"OpenRouter";case"groq":return"Groq";case"sambanova":return"SambaNova";case"cerebras":return"Cerebras";case"siliconflow":return"SiliconFlow";case"together":return"Together AI";case"hyperbolic":return"Hyperbolic";case"fireworks":return"Fireworks AI";case"perplexity":return"Perplexity";case"cohere":return"Cohere";case"mistral":return"Mistral";case"minimax":return"MiniMax";case"arcee":return"Arcee AI";case"meta":return"Meta AI";case"sakana":case"sakanaai":case"sakana-ai":return"Sakana AI";case"sarvam":case"sarvamai":case"sarvam-ai":return"Sarvam AI";case"stepfun":case"stepfunai":case"stepfun-ai":return"StepFun (Global)";case"upstage":case"upstageai":case"solar":return"Upstage Solar";case"thinkingmachines":case"tinker":case"inkling":return"Thinking Machines (Tinker)";case"xai":return"xAI";case"zai":case"zhipu":case"zhipuai":return"Zhipu AI";case"xiaomi":case"mimo":return"Xiaomi";case"abliteration":case"abliterationai":case"abliteration-ai":return"Abliteration AI";case"agnes":case"agnesai":case"agnes-ai":return"Agnes AI";case"aiand":return"AI&";case"aki":case"aki-io":case"akiio":return"AKI.IO";case"ambient":return"Ambient";case"auriko":case"aurikoai":case"auriko-ai":return"Auriko";case"baseten":case"basetenco":case"baseten-co":return"Baseten";case"abacus":return"Abacus";case"above":return"above.dev";case"ai21":return"AI21 Labs";case"amd":return"AMD";case"anyapi":return"AnyAPI";case"berget":return"Berget.AI";case"blueclaw":return"Blue Claw";case"chutes":return"Chutes";case"clarifai":return"Clarifai";case"cloudferro-sherlock":return"CloudFerro Sherlock";case"cloudflare-ai-gateway":return"Cloudflare AI Gateway";case"coralbricks":return"CoralBricks";case"cortecs":return"Cortecs";case"crusoe":return"Crusoe";case"deepinfra":return"Deep Infra";case"digitalocean":return"DigitalOcean";case"dinference":return"DInference";case"drun":return"D.Run (China)";case"edenai":return"Eden AI";case"empiriolabs":return"EmpirioLabs AI";case"evroc":return"evroc";case"fastrouter":return"FastRouter";case"friendli":return"Friendli";case"helicone":return"Helicone";case"hetzner":return"Hetzner";case"hpc-ai":return"HPC-AI";case"hyper":return"Charm Hyper";case"inception":return"Inception";case"inco":return"Inco";case"io-net":return"IO.NET";case"iteracompute":return"IteraCompute";case"kilo":return"Kilo Gateway";case"kimi-code-plan-cn":return"Kimi For Coding (kimi.com)";case"kimi-code-plan-global":return"Kimi For Coding (kimi.ai)";case"kosmik":return"Kosmik Compute";case"llmgateway":return"DevPass (LLM Gateway)";case"merge-gateway":return"Merge Gateway";case"modal":return"Modal";case"modelscope":return"ModelScope";case"morph":return"Morph";case"nano-gpt":return"NanoGPT";case"nearai":return"NEAR AI Cloud";case"nebius":return"Nebius Token Factory";case"novita-ai":return"NovitaAI";case"opencode":return"OpenCode Zen";case"opencode-go":return"OpenCode Go";case"openreason":return"OpenReason";case"opper":return"Opper";case"orcarouter":return"OrcaRouter";case"ovhcloud":return"OVHcloud AI Endpoints";case"pendra":return"Pendra";case"perplexity-agent":return"Perplexity Agent";case"poe":return"Poe";case"qiniu-ai":return"Qiniu";case"regolo-ai":return"Regolo AI";case"requesty":return"Requesty";case"runinfra":return"RunInfra";case"salad-cloud":return"SaladCloud AI Gateway";case"scaleway":return"Scaleway";case"stackit":return"STACKIT";case"standardcompute":return"Standard Compute";case"subconscious":return"Subconscious";case"synthetic":return"Synthetic";case"tencent-tokenhub":return"Tencent TokenHub";case"the-grid-ai":return"The Grid AI";case"tinfoil":return"Tinfoil";case"venice":return"Venice AI";case"vercel":return"Vercel AI Gateway";case"vivgrid":return"Vivgrid";case"volcengine":return"Volcengine Ark";case"vultr":return"Vultr";case"wafer.ai":return"Wafer";case"watsonx":return"watsonx.ai";case"claude":return"Claude";case"copilot":return"GitHub Copilot";case"codex":case"chatgpt":return"ChatGPT";case"december":case"december_proxy":return"December";default:return e.charAt(0).toUpperCase()+e.slice(1)}}function a(e,i){let r=(i||"").toLowerCase().trim();if(r==="december"||r==="december_proxy")return"december-auto";let t=e.lastUsedModels?.[i];if(t&&M(i,t))return t;if(e.activeProvider===i&&e.activeModel&&M(i,e.activeModel))return e.activeModel;return ie(i)}function be(e){let i=[],r=(o)=>{if(e.authPriority==="subscription"){if(e.activeProvider===o)return!0;if(!e.activeProvider&&Object.keys(e.subscriptions||{})[0]===o)return!0;if(e.activeProvider==="anthropic"&&o==="claude")return!0;if(e.activeProvider==="openai"&&o==="codex")return!0;if(e.activeProvider==="google"&&o==="gemini")return!0}if(!e.authPriority&&e.activeProvider===o)return!0;return!1},t=()=>{if(e.authPriority==="december"&&e.decemberToken)return!0;if(!e.authPriority&&!e.activeProvider&&!e.subscriptions&&e.decemberToken)return!0;if(e.activeProvider==="december_proxy"||e.activeProvider==="december")return!0;return!1},s=(o)=>{if(e.authPriority==="byok"&&e.activeProvider===o)return!0;if(!e.authPriority&&e.activeProvider===o&&!e.subscriptions?.[o])return!0;return!1};if(e.subscriptions)for(let[o,n]of Object.entries(e.subscriptions)){let c=q(o),v=a(e,o),m=r(o);i.push({label:`${c} (Subscription)`,value:`subscription:${o}`,provider:o,type:"subscription",model:v,isActive:m,account:n.email||n.accountName})}if(e.decemberToken){let o=a(e,"december_proxy"),n=t();i.push({label:"December (Cloud Wallet)",value:"decemberToken",provider:"december_proxy",type:"december",model:o,isActive:n,account:e.email})}if(e.providers)for(let[o]of Object.entries(e.providers)){let n=q(o),c=a(e,o),v=s(o);i.push({label:n,value:`provider:${o}`,provider:o,type:"byok",model:c,isActive:v})}return i}function Ie(e,i){if(!i)return;let r=i.trim().toLowerCase();if(!r)return;if(r==="decembertoken"){if(e.decemberToken)return{provider:"december_proxy",authPriority:"december",model:a(e,"december_proxy")};return}if(r.startsWith("subscription:")){let t=r.slice(13);if(e.subscriptions&&e.subscriptions[t])return{provider:t,authPriority:"subscription",model:a(e,t)};return}if(r.startsWith("provider:")||r.startsWith("byok:")){let t=r.replace(/^(provider|byok):/,"");if(e.providers&&e.providers[t])return{provider:t,authPriority:"byok",model:a(e,t)};return}if(e.subscriptions){if(["claude","anthropic"].includes(r)&&e.subscriptions.claude)return{provider:"claude",authPriority:"subscription",model:a(e,"claude")};if(["copilot","github","github_copilot"].includes(r)&&e.subscriptions.copilot)return{provider:"copilot",authPriority:"subscription",model:a(e,"copilot")};if(["codex","chatgpt","openai"].includes(r)&&e.subscriptions.codex)return{provider:"codex",authPriority:"subscription",model:a(e,"codex")};if(["gemini","google","antigravity"].includes(r)&&e.subscriptions.gemini)return{provider:"gemini",authPriority:"subscription",model:a(e,"gemini")};if(e.subscriptions[r])return{provider:r,authPriority:"subscription",model:a(e,r)}}if(e.providers){if(e.providers[r])return{provider:r,authPriority:"byok",model:a(e,r)};if(r==="google"&&e.providers.gemini)return{provider:"gemini",authPriority:"byok",model:a(e,"gemini")};if(r==="gemini"&&e.providers.google)return{provider:"google",authPriority:"byok",model:a(e,"google")};if(r==="claude"&&e.providers.anthropic)return{provider:"anthropic",authPriority:"byok",model:a(e,"anthropic")};if(r==="chatgpt"&&e.providers.openai)return{provider:"openai",authPriority:"byok",model:a(e,"openai")};if(["solar","upstageai"].includes(r)&&e.providers.upstage)return{provider:"upstage",authPriority:"byok",model:a(e,"upstage")};if(["tinker","inkling"].includes(r)&&e.providers.thinkingmachines)return{provider:"thinkingmachines",authPriority:"byok",model:a(e,"thinkingmachines")};if(["stepfunai","stepfun-ai"].includes(r)&&e.providers.stepfun)return{provider:"stepfun",authPriority:"byok",model:a(e,"stepfun")};if(["sarvamai","sarvam-ai"].includes(r)&&e.providers.sarvam)return{provider:"sarvam",authPriority:"byok",model:a(e,"sarvam")};if(["mimo"].includes(r)&&e.providers.xiaomi)return{provider:"xiaomi",authPriority:"byok",model:a(e,"xiaomi")};if(["zhipu","zhipuai"].includes(r)&&e.providers.zai)return{provider:"zai",authPriority:"byok",model:a(e,"zai")};if(["zai","zhipu"].includes(r)&&e.providers.zhipuai)return{provider:"zhipuai",authPriority:"byok",model:a(e,"zhipuai")};if(["abliterationai","abliteration-ai"].includes(r)&&e.providers.abliteration)return{provider:"abliteration",authPriority:"byok",model:a(e,"abliteration")};if(["agnesai","agnes-ai"].includes(r)&&e.providers.agnes)return{provider:"agnes",authPriority:"byok",model:a(e,"agnes")};if(["ai-router"].includes(r)&&e.providers.airouter)return{provider:"airouter",authPriority:"byok",model:a(e,"airouter")};if(["airouter"].includes(r)&&e.providers["ai-router"])return{provider:"ai-router",authPriority:"byok",model:a(e,"ai-router")};if(["aki-io","akiio"].includes(r)&&e.providers.aki)return{provider:"aki",authPriority:"byok",model:a(e,"aki")};if(["aki"].includes(r)&&e.providers["aki-io"])return{provider:"aki-io",authPriority:"byok",model:a(e,"aki-io")};if(["aurikoai","auriko-ai"].includes(r)&&e.providers.auriko)return{provider:"auriko",authPriority:"byok",model:a(e,"auriko")};if(["auriko"].includes(r)&&e.providers.aurikoai)return{provider:"aurikoai",authPriority:"byok",model:a(e,"aurikoai")};if(["basetenco","baseten-co"].includes(r)&&e.providers.baseten)return{provider:"baseten",authPriority:"byok",model:a(e,"baseten")};if(["baseten"].includes(r)&&e.providers.basetenco)return{provider:"basetenco",authPriority:"byok",model:a(e,"basetenco")}}if(["december","wallet","cloud","december_proxy"].includes(r)){if(e.decemberToken)return{provider:"december_proxy",authPriority:"december",model:a(e,"december_proxy")}}return}function we(e,i){e.authPriority=i.authPriority,e.activeProvider=i.provider;let r=i.model;if(!r||!M(i.provider,r))r=a(e,i.provider);return e.activeModel=r,e.lastUsedModels=e.lastUsedModels||{},e.lastUsedModels[i.provider]=r,{config:e,model:r}}
1
+ import{M,ie,Q}from"./chunk-xmvf453q.js";import h from"node:fs";import p from"node:fs/promises";import b from"node:os";import u from"node:path";function se(){let e=process.env.HOME||process.env.USERPROFILE||b.homedir();if(!!process.env.VITEST&&e===b.homedir())return u.join(b.tmpdir(),"december-test-config",".config","december");if(process.env.XDG_CONFIG_HOME)return u.join(process.env.XDG_CONFIG_HOME,"december");return u.join(e,".config","december")}function g(){return u.join(se(),"config.json")}function G(){if(process.env.DECEMBER_CONFIG_DIR)return process.env.DECEMBER_CONFIG_DIR;let e=process.env.HOME||process.env.USERPROFILE||b.homedir();if(!!process.env.VITEST&&e===b.homedir())return u.join(b.tmpdir(),"december-test-config",".december");let r=u.join(e,".december"),t=u.join(e,".config","december");if(h.existsSync(r)||!h.existsSync(t))return r;return t}function f(){return u.join(G(),"config.json")}function w(e,i){let r={...e};for(let t of Object.keys(i)){let s=i[t],o=e[t];if(s===void 0)continue;if(typeof s==="object"&&s!==null&&!Array.isArray(s)&&typeof o==="object"&&o!==null&&!Array.isArray(o))r[t]={...o,...s};else r[t]=s}return r}async function l(){try{let e=f(),i;try{i=await p.readFile(e,"utf-8")}catch(t){let s=g();if(s!==e&&h.existsSync(s)){i=await p.readFile(s,"utf-8");try{await p.mkdir(u.dirname(e),{recursive:!0}),await p.writeFile(e,i,"utf-8"),await p.chmod(e,384).catch(()=>{})}catch{}}else throw t}let r;try{r=JSON.parse(i)}catch{try{let t=i.replace(/,\s*([\]}])/g,"$1");r=JSON.parse(t)}catch{try{let t=`${e}.corrupt.${Date.now()}`;await p.writeFile(t,i,"utf-8")}catch{}return{providers:{}}}}try{let t=u.join(process.cwd(),".december","settings.json"),s=await p.readFile(t,"utf-8"),o=JSON.parse(s);r=w(r,o)}catch{}if(!r||typeof r!=="object")r={providers:{}};else if(!r.providers||typeof r.providers!=="object"||Array.isArray(r.providers))r.providers={};if(!r.activeProvider){if(r.providers&&Object.keys(r.providers).length>0)r.activeProvider=Object.keys(r.providers)[0];else if(r.subscriptions&&Object.keys(r.subscriptions).length>0){if(r.activeProvider=Object.keys(r.subscriptions)[0],!r.authPriority)r.authPriority="subscription"}}return r}catch{return{providers:{}}}}async function d(e){let i=!!process.env.VITEST,r=G(),t=f(),s=b.homedir(),o=t===u.join(s,".december","config.json")||t===u.join(s,".config","december","config.json");if(i&&o)r=u.join(b.tmpdir(),"december-test-config",".december"),t=u.join(r,"config.json");await p.mkdir(r,{recursive:!0}),await p.writeFile(t,JSON.stringify(e,null,2),"utf-8"),await p.chmod(t,384).catch(()=>{});try{let n=u.join(process.cwd(),".december","settings.json");await p.access(n);let c={};try{let v=await p.readFile(n,"utf-8");c=JSON.parse(v)}catch{}if(e.thinkingLevel!==void 0)c.thinkingLevel=e.thinkingLevel;if(e.steeringMode!==void 0)c.steeringMode=e.steeringMode;if(e.followUpMode!==void 0)c.followUpMode=e.followUpMode;if(e.toolPermission!==void 0)c.toolPermission=e.toolPermission;if(e.pathGuard!==void 0)c.pathGuard=e.pathGuard;if(e.nonWorkspaceAccess!==void 0)c.nonWorkspaceAccess=e.nonWorkspaceAccess;await p.writeFile(n,JSON.stringify(c,null,2)+`
2
+ `,"utf-8")}catch{}}function C(e){if(!e.subscriptions||Object.keys(e.subscriptions).length===0)return;let i=e.activeProvider;if(i&&e.subscriptions[i])return{provider:i,bundle:e.subscriptions[i]};if(i){if((i==="anthropic"||i==="claude")&&e.subscriptions.claude)return{provider:"claude",bundle:e.subscriptions.claude};if((i==="openai"||i==="codex"||i==="chatgpt")&&e.subscriptions.codex)return{provider:"codex",bundle:e.subscriptions.codex};if((i==="google"||i==="gemini"||i==="antigravity")&&(e.subscriptions.gemini||e.subscriptions.google||e.subscriptions.antigravity)){let t=e.subscriptions.gemini||e.subscriptions.google||e.subscriptions.antigravity;return{provider:t.provider||"gemini",bundle:t}}}let r=!!(i&&e.providers&&e.providers[i]);if(e.authPriority==="subscription"||!r||!i){let t=Object.keys(e.subscriptions)[0];if(t&&e.subscriptions[t])return{provider:t,bundle:e.subscriptions[t]}}return}async function ut(){let e=await l(),i=!!(e.activeProvider&&e.providers&&e.providers[e.activeProvider]),r=!!e.decemberToken,t=C(e);if(e.authPriority==="december"&&r)return{provider:"december_proxy",apiKey:e.decemberToken,model:"december-auto",authMethod:"december"};if((e.authPriority==="byok"||i&&e.authPriority!=="subscription")&&i){let s=Q(e.activeProvider,e.activeModel);return{provider:e.activeProvider,apiKey:e.providers[e.activeProvider],model:s,authMethod:"byok"}}if(t&&(e.authPriority==="subscription"||!i&&e.authPriority!=="december"||e.authPriority!=="byok"&&e.authPriority!=="december")){let{resolveSubscriptionToken:s}=await import("./chunk-jv16a9em.js"),o=await s(t.provider,t.bundle),n=o.provider||t.provider,c=Q(n,e.activeModel);return{provider:n,apiKey:o.accessToken,model:c,authMethod:"subscription",subscription:o,baseURL:o.endpoint}}if(i){let s=Q(e.activeProvider,e.activeModel);return{provider:e.activeProvider,apiKey:e.providers[e.activeProvider],model:s,authMethod:"byok"}}if(r)return{provider:"december_proxy",apiKey:e.decemberToken,model:"december-auto",authMethod:"december"};if(process.env.CLAUDE_CODE_OAUTH_TOKEN||process.env.ANTHROPIC_AUTH_TOKEN||process.env.COPILOT_TOKEN||process.env.GITHUB_COPILOT_TOKEN||process.env.OPENAI_OAUTH_TOKEN||process.env.CODEX_TOKEN||process.env.GEMINI_OAUTH_TOKEN||process.env.ANTIGRAVITY_TOKEN){let{detectAllSubscriptions:s,resolveSubscriptionToken:o}=await import("./chunk-jv16a9em.js"),n=await s(),c=e.unlinkedSubscriptions||[],m=Object.keys(n).filter((y)=>!c.includes(y))[0];if(m&&n[m]){let y=await o(m,n[m]),k=y.provider||m,P=Q(k,e.activeModel);return{provider:k,apiKey:y.accessToken,model:P,authMethod:"subscription",subscription:y,baseURL:y.endpoint}}}return}async function dt(){let e=await l(),i=!!(e.activeProvider&&e.providers&&e.providers[e.activeProvider]),r=e.subscriptions?Object.keys(e.subscriptions):[],t=r.length>0;return{hasByok:i,hasDecember:!!e.decemberToken,hasSubscription:t,subscriptions:r,authPriority:e.authPriority||(t?"subscription":"byok")}}function q(e){switch((e||"").toLowerCase().trim()){case"openai":return"OpenAI";case"anthropic":return"Anthropic";case"gemini":case"google":return"Google Gemini";case"deepseek":return"DeepSeek";case"openrouter":return"OpenRouter";case"groq":return"Groq";case"sambanova":return"SambaNova";case"cerebras":return"Cerebras";case"siliconflow":return"SiliconFlow";case"together":return"Together AI";case"hyperbolic":return"Hyperbolic";case"fireworks":return"Fireworks AI";case"perplexity":return"Perplexity";case"cohere":return"Cohere";case"mistral":return"Mistral";case"minimax":return"MiniMax";case"arcee":return"Arcee AI";case"meta":return"Meta AI";case"sakana":case"sakanaai":case"sakana-ai":return"Sakana AI";case"sarvam":case"sarvamai":case"sarvam-ai":return"Sarvam AI";case"stepfun":case"stepfunai":case"stepfun-ai":return"StepFun (Global)";case"upstage":case"upstageai":case"solar":return"Upstage Solar";case"thinkingmachines":case"tinker":case"inkling":return"Thinking Machines (Tinker)";case"xai":return"xAI";case"zai":case"zhipu":case"zhipuai":return"Zhipu AI";case"xiaomi":case"mimo":return"Xiaomi";case"abliteration":case"abliterationai":case"abliteration-ai":return"Abliteration AI";case"agnes":case"agnesai":case"agnes-ai":return"Agnes AI";case"aiand":return"AI&";case"aki":case"aki-io":case"akiio":return"AKI.IO";case"ambient":return"Ambient";case"auriko":case"aurikoai":case"auriko-ai":return"Auriko";case"baseten":case"basetenco":case"baseten-co":return"Baseten";case"abacus":return"Abacus";case"above":return"above.dev";case"ai21":return"AI21 Labs";case"amd":return"AMD";case"anyapi":return"AnyAPI";case"berget":return"Berget.AI";case"blueclaw":return"Blue Claw";case"chutes":return"Chutes";case"clarifai":return"Clarifai";case"cloudferro-sherlock":return"CloudFerro Sherlock";case"cloudflare-ai-gateway":return"Cloudflare AI Gateway";case"coralbricks":return"CoralBricks";case"cortecs":return"Cortecs";case"crusoe":return"Crusoe";case"deepinfra":return"Deep Infra";case"digitalocean":return"DigitalOcean";case"dinference":return"DInference";case"drun":return"D.Run (China)";case"edenai":return"Eden AI";case"empiriolabs":return"EmpirioLabs AI";case"evroc":return"evroc";case"fastrouter":return"FastRouter";case"friendli":return"Friendli";case"helicone":return"Helicone";case"hetzner":return"Hetzner";case"hpc-ai":return"HPC-AI";case"hyper":return"Charm Hyper";case"inception":return"Inception";case"inco":return"Inco";case"io-net":return"IO.NET";case"iteracompute":return"IteraCompute";case"kilo":return"Kilo Gateway";case"kimi-code-plan-cn":return"Kimi For Coding (kimi.com)";case"kimi-code-plan-global":return"Kimi For Coding (kimi.ai)";case"kosmik":return"Kosmik Compute";case"llmgateway":return"DevPass (LLM Gateway)";case"merge-gateway":return"Merge Gateway";case"modal":return"Modal";case"modelscope":return"ModelScope";case"morph":return"Morph";case"nano-gpt":return"NanoGPT";case"nearai":return"NEAR AI Cloud";case"nebius":return"Nebius Token Factory";case"novita-ai":return"NovitaAI";case"opencode":return"OpenCode Zen";case"opencode-go":return"OpenCode Go";case"openreason":return"OpenReason";case"opper":return"Opper";case"orcarouter":return"OrcaRouter";case"ovhcloud":return"OVHcloud AI Endpoints";case"pendra":return"Pendra";case"perplexity-agent":return"Perplexity Agent";case"poe":return"Poe";case"qiniu-ai":return"Qiniu";case"regolo-ai":return"Regolo AI";case"requesty":return"Requesty";case"runinfra":return"RunInfra";case"salad-cloud":return"SaladCloud AI Gateway";case"scaleway":return"Scaleway";case"stackit":return"STACKIT";case"standardcompute":return"Standard Compute";case"subconscious":return"Subconscious";case"synthetic":return"Synthetic";case"tencent-tokenhub":return"Tencent TokenHub";case"the-grid-ai":return"The Grid AI";case"tinfoil":return"Tinfoil";case"venice":return"Venice AI";case"vercel":return"Vercel AI Gateway";case"vivgrid":return"Vivgrid";case"volcengine":return"Volcengine Ark";case"vultr":return"Vultr";case"wafer.ai":return"Wafer";case"watsonx":return"watsonx.ai";case"claude":return"Claude";case"copilot":return"GitHub Copilot";case"codex":case"chatgpt":return"ChatGPT";case"december":case"december_proxy":return"December";default:return e.charAt(0).toUpperCase()+e.slice(1)}}function a(e,i){let r=(i||"").toLowerCase().trim();if(r==="december"||r==="december_proxy")return"december-auto";let t=e.lastUsedModels?.[i];if(t&&M(i,t))return t;if(e.activeProvider===i&&e.activeModel&&M(i,e.activeModel))return e.activeModel;return ie(i)}function be(e){let i=[],r=(o)=>{if(e.authPriority==="subscription"){if(e.activeProvider===o)return!0;if(!e.activeProvider&&Object.keys(e.subscriptions||{})[0]===o)return!0;if(e.activeProvider==="anthropic"&&o==="claude")return!0;if(e.activeProvider==="openai"&&o==="codex")return!0;if(e.activeProvider==="google"&&o==="gemini")return!0}if(!e.authPriority&&e.activeProvider===o)return!0;return!1},t=()=>{if(e.authPriority==="december"&&e.decemberToken)return!0;if(!e.authPriority&&!e.activeProvider&&!e.subscriptions&&e.decemberToken)return!0;if(e.activeProvider==="december_proxy"||e.activeProvider==="december")return!0;return!1},s=(o)=>{if(e.authPriority==="byok"&&e.activeProvider===o)return!0;if(!e.authPriority&&e.activeProvider===o&&!e.subscriptions?.[o])return!0;return!1};if(e.subscriptions)for(let[o,n]of Object.entries(e.subscriptions)){let c=q(o),v=a(e,o),m=r(o);i.push({label:`${c} (Subscription)`,value:`subscription:${o}`,provider:o,type:"subscription",model:v,isActive:m,account:n.email||n.accountName})}if(e.decemberToken){let o=a(e,"december_proxy"),n=t();i.push({label:"December (Cloud Wallet)",value:"decemberToken",provider:"december_proxy",type:"december",model:o,isActive:n,account:e.email})}if(e.providers)for(let[o]of Object.entries(e.providers)){let n=q(o),c=a(e,o),v=s(o);i.push({label:n,value:`provider:${o}`,provider:o,type:"byok",model:c,isActive:v})}return i}function Ie(e,i){if(!i)return;let r=i.trim().toLowerCase();if(!r)return;if(r==="decembertoken"){if(e.decemberToken)return{provider:"december_proxy",authPriority:"december",model:a(e,"december_proxy")};return}if(r.startsWith("subscription:")){let t=r.slice(13);if(e.subscriptions&&e.subscriptions[t])return{provider:t,authPriority:"subscription",model:a(e,t)};return}if(r.startsWith("provider:")||r.startsWith("byok:")){let t=r.replace(/^(provider|byok):/,"");if(e.providers&&e.providers[t])return{provider:t,authPriority:"byok",model:a(e,t)};return}if(e.subscriptions){if(["claude","anthropic"].includes(r)&&e.subscriptions.claude)return{provider:"claude",authPriority:"subscription",model:a(e,"claude")};if(["copilot","github","github_copilot"].includes(r)&&e.subscriptions.copilot)return{provider:"copilot",authPriority:"subscription",model:a(e,"copilot")};if(["codex","chatgpt","openai"].includes(r)&&e.subscriptions.codex)return{provider:"codex",authPriority:"subscription",model:a(e,"codex")};if(["gemini","google","antigravity"].includes(r)&&e.subscriptions.gemini)return{provider:"gemini",authPriority:"subscription",model:a(e,"gemini")};if(e.subscriptions[r])return{provider:r,authPriority:"subscription",model:a(e,r)}}if(e.providers){if(e.providers[r])return{provider:r,authPriority:"byok",model:a(e,r)};if(r==="google"&&e.providers.gemini)return{provider:"gemini",authPriority:"byok",model:a(e,"gemini")};if(r==="gemini"&&e.providers.google)return{provider:"google",authPriority:"byok",model:a(e,"google")};if(r==="claude"&&e.providers.anthropic)return{provider:"anthropic",authPriority:"byok",model:a(e,"anthropic")};if(r==="chatgpt"&&e.providers.openai)return{provider:"openai",authPriority:"byok",model:a(e,"openai")};if(["solar","upstageai"].includes(r)&&e.providers.upstage)return{provider:"upstage",authPriority:"byok",model:a(e,"upstage")};if(["tinker","inkling"].includes(r)&&e.providers.thinkingmachines)return{provider:"thinkingmachines",authPriority:"byok",model:a(e,"thinkingmachines")};if(["stepfunai","stepfun-ai"].includes(r)&&e.providers.stepfun)return{provider:"stepfun",authPriority:"byok",model:a(e,"stepfun")};if(["sarvamai","sarvam-ai"].includes(r)&&e.providers.sarvam)return{provider:"sarvam",authPriority:"byok",model:a(e,"sarvam")};if(["mimo"].includes(r)&&e.providers.xiaomi)return{provider:"xiaomi",authPriority:"byok",model:a(e,"xiaomi")};if(["zhipu","zhipuai"].includes(r)&&e.providers.zai)return{provider:"zai",authPriority:"byok",model:a(e,"zai")};if(["zai","zhipu"].includes(r)&&e.providers.zhipuai)return{provider:"zhipuai",authPriority:"byok",model:a(e,"zhipuai")};if(["abliterationai","abliteration-ai"].includes(r)&&e.providers.abliteration)return{provider:"abliteration",authPriority:"byok",model:a(e,"abliteration")};if(["agnesai","agnes-ai"].includes(r)&&e.providers.agnes)return{provider:"agnes",authPriority:"byok",model:a(e,"agnes")};if(["ai-router"].includes(r)&&e.providers.airouter)return{provider:"airouter",authPriority:"byok",model:a(e,"airouter")};if(["airouter"].includes(r)&&e.providers["ai-router"])return{provider:"ai-router",authPriority:"byok",model:a(e,"ai-router")};if(["aki-io","akiio"].includes(r)&&e.providers.aki)return{provider:"aki",authPriority:"byok",model:a(e,"aki")};if(["aki"].includes(r)&&e.providers["aki-io"])return{provider:"aki-io",authPriority:"byok",model:a(e,"aki-io")};if(["aurikoai","auriko-ai"].includes(r)&&e.providers.auriko)return{provider:"auriko",authPriority:"byok",model:a(e,"auriko")};if(["auriko"].includes(r)&&e.providers.aurikoai)return{provider:"aurikoai",authPriority:"byok",model:a(e,"aurikoai")};if(["basetenco","baseten-co"].includes(r)&&e.providers.baseten)return{provider:"baseten",authPriority:"byok",model:a(e,"baseten")};if(["baseten"].includes(r)&&e.providers.basetenco)return{provider:"basetenco",authPriority:"byok",model:a(e,"basetenco")}}if(["december","wallet","cloud","december_proxy"].includes(r)){if(e.decemberToken)return{provider:"december_proxy",authPriority:"december",model:a(e,"december_proxy")}}return}function we(e,i){e.authPriority=i.authPriority,e.activeProvider=i.provider;let r=i.model;if(!r||!M(i.provider,r))r=a(e,i.provider);return e.activeModel=r,e.lastUsedModels=e.lastUsedModels||{},e.lastUsedModels[i.provider]=r,{config:e,model:r}}
3
3
  export{se,G,l,d,ut,dt,q,be,Ie,we};
@@ -1 +1 @@
1
- import{se,G,l,d,ut,dt,q,be,Ie,we}from"./chunk-0x66zzs3.js";import"./chunk-hx3vcz8k.js";import"./chunk-f0bms32h.js";import"./chunk-f29e6jpz.js";export{we as applyProviderSwitch,q as formatProviderName,dt as getAuthStatus,G as getConfigDir,be as getConfiguredProviders,se as getLegacyConfigDir,ut as getProviderConfig,l as loadConfig,Ie as resolveSwitchTarget,d as saveConfig};
1
+ import{se,G,l,d,ut,dt,q,be,Ie,we}from"./chunk-2v3whmk6.js";import"./chunk-xmvf453q.js";import"./chunk-r3xqtcj0.js";import"./chunk-f29e6jpz.js";export{we as applyProviderSwitch,q as formatProviderName,dt as getAuthStatus,G as getConfigDir,be as getConfiguredProviders,se as getLegacyConfigDir,ut as getProviderConfig,l as loadConfig,Ie as resolveSwitchTarget,d as saveConfig};
@@ -1 +1 @@
1
- import{He,Ge,qe,it,ot,at}from"./chunk-5ax9zqhw.js";import{me,ee,ge,te,P,Ye,je,v,Ze,Xe,et}from"./chunk-b9mkrg3w.js";import"./chunk-w8v2c87g.js";import"./chunk-0x66zzs3.js";import"./chunk-hx3vcz8k.js";import"./chunk-f0bms32h.js";import"./chunk-f29e6jpz.js";export{me as claudeAdapter,ee as codexAdapter,ge as copilotAdapter,Ye as detectAllSubscriptions,Ze as forceRefreshSubscription,at as formatSubscriptionCard,He as formatSubscriptionDisplayName,qe as formatSubscriptionIdentity,Ge as formatSubscriptionPlan,ot as formatSubscriptionSuccessMessage,it as formatSubscriptionToast,te as geminiAdapter,P as getSubscriptionAdapter,je as importLocalSubscriptions,Xe as loginSubscription,v as resolveSubscriptionToken,et as verifyAndResolveSubscription};
1
+ import{He,Ge,qe,it,ot,at}from"./chunk-5ax9zqhw.js";import{me,ee,ge,te,P,Ye,je,v,Ze,Xe,et}from"./chunk-91d1p189.js";import"./chunk-w8v2c87g.js";import"./chunk-2v3whmk6.js";import"./chunk-xmvf453q.js";import"./chunk-r3xqtcj0.js";import"./chunk-f29e6jpz.js";export{me as claudeAdapter,ee as codexAdapter,ge as copilotAdapter,Ye as detectAllSubscriptions,Ze as forceRefreshSubscription,at as formatSubscriptionCard,He as formatSubscriptionDisplayName,qe as formatSubscriptionIdentity,Ge as formatSubscriptionPlan,ot as formatSubscriptionSuccessMessage,it as formatSubscriptionToast,te as geminiAdapter,P as getSubscriptionAdapter,je as importLocalSubscriptions,Xe as loginSubscription,v as resolveSubscriptionToken,et as verifyAndResolveSubscription};
@@ -1,4 +1,4 @@
1
- import"./chunk-f29e6jpz.js";import"./chunk-f0bms32h.js";import"./chunk-hx3vcz8k.js";import{se,G}from"./chunk-0x66zzs3.js";import o from"node:fs/promises";import g from"node:path";class u{sessionDir;legacySessionDir;sessionCache={};constructor(t){if(t)this.sessionDir=t;else{this.sessionDir=g.join(G(),"sessions");let i=g.join(se(),"sessions");if(i!==this.sessionDir)this.legacySessionDir=i}}async saveContext(t,i){await o.mkdir(this.sessionDir,{recursive:!0});let r=g.join(this.sessionDir,`${t}.jsonl`),n=this.sessionCache[t];if(!n){n={},this.sessionCache[t]=n;try{let c=(await o.readFile(r,"utf-8")).split(`
1
+ import"./chunk-f29e6jpz.js";import"./chunk-r3xqtcj0.js";import"./chunk-xmvf453q.js";import{se,G}from"./chunk-2v3whmk6.js";import o from"node:fs/promises";import g from"node:path";class u{sessionDir;legacySessionDir;sessionCache={};constructor(t){if(t)this.sessionDir=t;else{this.sessionDir=g.join(G(),"sessions");let i=g.join(se(),"sessions");if(i!==this.sessionDir)this.legacySessionDir=i}}async saveContext(t,i){await o.mkdir(this.sessionDir,{recursive:!0});let r=g.join(this.sessionDir,`${t}.jsonl`),n=this.sessionCache[t];if(!n){n={},this.sessionCache[t]=n;try{let c=(await o.readFile(r,"utf-8")).split(`
2
2
  `).filter((h)=>h.trim().length>0);for(let h of c)try{let l=JSON.parse(h);if(l.id)n[l.id]=l}catch{}}catch{}}let a="";for(let s of i)if(s.id){let c=n[s.id];if(!c||JSON.stringify(c)!==JSON.stringify(s))n[s.id]={...s},a+=JSON.stringify(s)+`
3
3
  `}if(a)await o.appendFile(r,a,"utf-8")}async loadContext(t){let i=g.join(this.sessionDir,`${t}.jsonl`);try{let r;try{r=await o.readFile(i,"utf-8")}catch(e){if(this.legacySessionDir){let f=g.join(this.legacySessionDir,`${t}.jsonl`);r=await o.readFile(f,"utf-8"),i=f}else throw e}let n=r.split(`
4
4
  `).filter((e)=>e.trim().length>0),a=new Map;for(let e of n)try{let f=JSON.parse(e);if(f.id)a.set(f.id,f)}catch{}let s=Array.from(a.values());if(s.length===0)return[];let c=s[0];for(let e of s)if((e.timestamp||0)>=(c.timestamp||0))c=e;let h=[],l=c,y=!1;while(l){if(h.unshift(l),!l.parentId){y=!0;break}l=a.get(l.parentId)}let m=s.some((e)=>Boolean(e.parentId)),p=(!y||!m&&s.length>1)&&h.length<s.length?[...s].sort((e,f)=>(e.timestamp||0)-(f.timestamp||0)):h;if(s.length<n.length){let e=s.map((f)=>JSON.stringify(f)).join(`
@@ -1,4 +1,4 @@
1
- import{Ne,H,y}from"./chunk-f29e6jpz.js";import{R}from"./chunk-f0bms32h.js";import{a}from"./chunk-dszyjkp3.js";var r={colors:{brand:"#89B4F8",text:"white",muted:"#AAAAAA",subtle:"#777777",dim:"#666666",border:"#333333",success:"#6EE7B7",error:"#FCA5A5",warning:"#FDD663",diffAddBg:"#122f1e",diffDeleteBg:"#3f1316",codespanBg:"#303030"},padding:{paddingX:2,paddingLeft:2,paddingRight:4},glyphs:{prompt:"❭",selector:"❭",bullet:"•",status:"●",connected:"✓"}},hi={...r.colors,primary:r.colors.text,info:r.colors.muted};var Kt={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,gray:90,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},Yt={black:40,red:41,green:42,yellow:43,blue:44,magenta:45,cyan:46,white:47,gray:100,brightBlack:100,brightRed:101,brightGreen:102,brightYellow:103,brightBlue:104,brightMagenta:105,brightCyan:106,brightWhite:107};function ct(e){let t=e.trim();if(t.startsWith("#"))t=t.slice(1);if(t.length===3){let s=Number.parseInt(t[0]+t[0],16),i=Number.parseInt(t[1]+t[1],16),n=Number.parseInt(t[2]+t[2],16);if(!Number.isNaN(s)&&!Number.isNaN(i)&&!Number.isNaN(n))return{r:s,g:i,b:n}}else if(t.length===6){let s=Number.parseInt(t.slice(0,2),16),i=Number.parseInt(t.slice(2,4),16),n=Number.parseInt(t.slice(4,6),16);if(!Number.isNaN(s)&&!Number.isNaN(i)&&!Number.isNaN(n))return{r:s,g:i,b:n}}return}function ne(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return!1;if(typeof e==="object"&&typeof t==="object")return e.r===t.r&&e.g===t.g&&e.b===t.b;if(typeof e==="string"&&typeof t==="string")return e.toLowerCase()===t.toLowerCase();if(typeof e==="string"&&typeof t==="object"){let s=ct(e);return s?s.r===t.r&&s.g===t.g&&s.b===t.b:!1}if(typeof e==="object"&&typeof t==="string"){let s=ct(t);return s?s.r===e.r&&s.g===e.g&&s.b===e.b:!1}return!1}function pe(e,t){if(e===void 0)return t?"49":"39";if(typeof e==="string"&&((e in Kt)||(e in Yt))){let n=(t?Yt:Kt)[e];if(n!==void 0)return String(n)}if(typeof e==="number"){let i=Math.max(0,Math.min(255,Math.floor(e)));return`${t?"48;5":"38;5"};${i}`}let s;if(typeof e==="object")s=e;else if(typeof e==="string"&&(e.startsWith("#")||e.length===3||e.length===6))s=ct(e);if(s){let i=Math.max(0,Math.min(255,Math.floor(s.r))),n=Math.max(0,Math.min(255,Math.floor(s.g))),l=Math.max(0,Math.min(255,Math.floor(s.b)));return`${t?"48;2":"38;2"};${i};${n};${l}`}return t?"49":"39"}var Be=Object.freeze({char:" ",width:1});function _e(e=" ",t){let s=He(e);if(!t)return{char:e,width:s};return{char:e,width:s,fg:t.fg,bg:t.bg,bold:t.bold,dim:t.dim,italic:t.italic,underline:t.underline,inverse:t.inverse,strikethrough:t.strikethrough}}function Y(e){return{char:e.char,width:e.width,fg:e.fg,bg:e.bg,bold:e.bold,dim:e.dim,italic:e.italic,underline:e.underline,inverse:e.inverse,strikethrough:e.strikethrough}}function zt(e,t){if(e===t)return!0;if(e.char!==t.char)return!1;if((e.width??1)!==(t.width??1))return!1;if(!ne(e.fg,t.fg))return!1;if(!ne(e.bg,t.bg))return!1;if(Boolean(e.bold)!==Boolean(t.bold))return!1;if(Boolean(e.dim)!==Boolean(t.dim))return!1;if(Boolean(e.italic)!==Boolean(t.italic))return!1;if(Boolean(e.underline)!==Boolean(t.underline))return!1;if(Boolean(e.inverse)!==Boolean(t.inverse))return!1;if(Boolean(e.strikethrough)!==Boolean(t.strikethrough))return!1;return!0}function ht(e,t){if(e===t)return!0;if(!ne(e.fg,t.fg))return!1;if(!ne(e.bg,t.bg))return!1;if(Boolean(e.bold)!==Boolean(t.bold))return!1;if(Boolean(e.dim)!==Boolean(t.dim))return!1;if(Boolean(e.italic)!==Boolean(t.italic))return!1;if(Boolean(e.underline)!==Boolean(t.underline))return!1;if(Boolean(e.inverse)!==Boolean(t.inverse))return!1;if(Boolean(e.strikethrough)!==Boolean(t.strikethrough))return!1;return!0}function jt(e){return{fg:e.fg,bg:e.bg,bold:e.bold,dim:e.dim,italic:e.italic,underline:e.underline,inverse:e.inverse,strikethrough:e.strikethrough}}function We(e){return Boolean(e.fg!==void 0||e.bg!==void 0||e.bold||e.dim||e.italic||e.underline||e.inverse||e.strikethrough)}function Ls(e){let t=[];if(e.bold)t.push("1");if(e.dim)t.push("2");if(e.italic)t.push("3");if(e.underline)t.push("4");if(e.inverse)t.push("7");if(e.strikethrough)t.push("9");if(e.fg!==void 0)t.push(pe(e.fg,!1));if(e.bg!==void 0)t.push(pe(e.bg,!0));return t}function Xt(e,t){if(ht(e,t))return"";let s=We(t),i=We(e);if(!s)return i?"\x1B[0m":"";let n=Ls(t),l=n.length>0?`\x1B[0;${n.join(";")}m`:"\x1B[0m";if(!i)return`\x1B[${n.join(";")}m`;let o=[];if(e.bold&&!t.bold)o.push("22");if(!e.bold&&t.bold)o.push("1");if(e.dim&&!t.dim&&!t.bold)o.push("22");if(!e.dim&&t.dim)o.push("2");if(e.italic&&!t.italic)o.push("23");if(!e.italic&&t.italic)o.push("3");if(e.underline&&!t.underline)o.push("24");if(!e.underline&&t.underline)o.push("4");if(e.inverse&&!t.inverse)o.push("27");if(!e.inverse&&t.inverse)o.push("7");if(e.strikethrough&&!t.strikethrough)o.push("29");if(!e.strikethrough&&t.strikethrough)o.push("9");if(!ne(e.fg,t.fg))o.push(pe(t.fg,!1));if(!ne(e.bg,t.bg))o.push(pe(t.bg,!0));if(o.length===0)return"";let g=`\x1B[${o.join(";")}m`;return g.length<=l.length?g:l}function He(e){if(!e)return 0;let t=e.codePointAt(0);if(t===void 0)return 0;if(t<32||t>=127&&t<160)return 0;if(t>=32&&t<=126)return 1;if(t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8203&&t<=8207||t>=8232&&t<=8238||t>=8288&&t<=8303||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t===65279||t>=917760&&t<=917999)return 0;if(t>=4352&&t<=4447||t===9001||t===9002||t>=11904&&t<=12350||t>=12352&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129535||t>=129536&&t<=129791||t>=131072&&t<=262143)return 2;return 1}class re{width;height;cells;constructor(e,t){this.width=Math.max(1,Math.floor(e)),this.height=Math.max(1,Math.floor(t)),this.cells=Array(this.width*this.height),this.clear()}getIndex(e,t){return t*this.width+e}isInBounds(e,t){return e>=0&&e<this.width&&t>=0&&t<this.height}get(e,t){if(!this.isInBounds(e,t))return;return this.cells[this.getIndex(e,t)]}set(e,t,s){if(!this.isInBounds(e,t))return;this.cells[this.getIndex(e,t)]=Y(s)}setChar(e,t,s,i){if(!this.isInBounds(e,t))return;this.cells[this.getIndex(e,t)]=_e(s,i)}write(e,t,s,i){let n=e,l=t;for(let o of s){if(o==="\r")continue;if(o===`
1
+ import{Ne,H,y}from"./chunk-f29e6jpz.js";import{R}from"./chunk-r3xqtcj0.js";import{a}from"./chunk-dszyjkp3.js";var r={colors:{brand:"#89B4F8",text:"white",muted:"#AAAAAA",subtle:"#777777",dim:"#666666",border:"#333333",success:"#6EE7B7",error:"#FCA5A5",warning:"#FDD663",diffAddBg:"#122f1e",diffDeleteBg:"#3f1316",codespanBg:"#303030"},padding:{paddingX:2,paddingLeft:2,paddingRight:4},glyphs:{prompt:"❭",selector:"❭",bullet:"•",status:"●",connected:"✓"}},hi={...r.colors,primary:r.colors.text,info:r.colors.muted};var Kt={black:30,red:31,green:32,yellow:33,blue:34,magenta:35,cyan:36,white:37,gray:90,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},Yt={black:40,red:41,green:42,yellow:43,blue:44,magenta:45,cyan:46,white:47,gray:100,brightBlack:100,brightRed:101,brightGreen:102,brightYellow:103,brightBlue:104,brightMagenta:105,brightCyan:106,brightWhite:107};function ct(e){let t=e.trim();if(t.startsWith("#"))t=t.slice(1);if(t.length===3){let s=Number.parseInt(t[0]+t[0],16),i=Number.parseInt(t[1]+t[1],16),n=Number.parseInt(t[2]+t[2],16);if(!Number.isNaN(s)&&!Number.isNaN(i)&&!Number.isNaN(n))return{r:s,g:i,b:n}}else if(t.length===6){let s=Number.parseInt(t.slice(0,2),16),i=Number.parseInt(t.slice(2,4),16),n=Number.parseInt(t.slice(4,6),16);if(!Number.isNaN(s)&&!Number.isNaN(i)&&!Number.isNaN(n))return{r:s,g:i,b:n}}return}function ne(e,t){if(e===t)return!0;if(e===void 0||t===void 0)return!1;if(typeof e==="object"&&typeof t==="object")return e.r===t.r&&e.g===t.g&&e.b===t.b;if(typeof e==="string"&&typeof t==="string")return e.toLowerCase()===t.toLowerCase();if(typeof e==="string"&&typeof t==="object"){let s=ct(e);return s?s.r===t.r&&s.g===t.g&&s.b===t.b:!1}if(typeof e==="object"&&typeof t==="string"){let s=ct(t);return s?s.r===e.r&&s.g===e.g&&s.b===e.b:!1}return!1}function pe(e,t){if(e===void 0)return t?"49":"39";if(typeof e==="string"&&((e in Kt)||(e in Yt))){let n=(t?Yt:Kt)[e];if(n!==void 0)return String(n)}if(typeof e==="number"){let i=Math.max(0,Math.min(255,Math.floor(e)));return`${t?"48;5":"38;5"};${i}`}let s;if(typeof e==="object")s=e;else if(typeof e==="string"&&(e.startsWith("#")||e.length===3||e.length===6))s=ct(e);if(s){let i=Math.max(0,Math.min(255,Math.floor(s.r))),n=Math.max(0,Math.min(255,Math.floor(s.g))),l=Math.max(0,Math.min(255,Math.floor(s.b)));return`${t?"48;2":"38;2"};${i};${n};${l}`}return t?"49":"39"}var Be=Object.freeze({char:" ",width:1});function _e(e=" ",t){let s=He(e);if(!t)return{char:e,width:s};return{char:e,width:s,fg:t.fg,bg:t.bg,bold:t.bold,dim:t.dim,italic:t.italic,underline:t.underline,inverse:t.inverse,strikethrough:t.strikethrough}}function Y(e){return{char:e.char,width:e.width,fg:e.fg,bg:e.bg,bold:e.bold,dim:e.dim,italic:e.italic,underline:e.underline,inverse:e.inverse,strikethrough:e.strikethrough}}function zt(e,t){if(e===t)return!0;if(e.char!==t.char)return!1;if((e.width??1)!==(t.width??1))return!1;if(!ne(e.fg,t.fg))return!1;if(!ne(e.bg,t.bg))return!1;if(Boolean(e.bold)!==Boolean(t.bold))return!1;if(Boolean(e.dim)!==Boolean(t.dim))return!1;if(Boolean(e.italic)!==Boolean(t.italic))return!1;if(Boolean(e.underline)!==Boolean(t.underline))return!1;if(Boolean(e.inverse)!==Boolean(t.inverse))return!1;if(Boolean(e.strikethrough)!==Boolean(t.strikethrough))return!1;return!0}function ht(e,t){if(e===t)return!0;if(!ne(e.fg,t.fg))return!1;if(!ne(e.bg,t.bg))return!1;if(Boolean(e.bold)!==Boolean(t.bold))return!1;if(Boolean(e.dim)!==Boolean(t.dim))return!1;if(Boolean(e.italic)!==Boolean(t.italic))return!1;if(Boolean(e.underline)!==Boolean(t.underline))return!1;if(Boolean(e.inverse)!==Boolean(t.inverse))return!1;if(Boolean(e.strikethrough)!==Boolean(t.strikethrough))return!1;return!0}function jt(e){return{fg:e.fg,bg:e.bg,bold:e.bold,dim:e.dim,italic:e.italic,underline:e.underline,inverse:e.inverse,strikethrough:e.strikethrough}}function We(e){return Boolean(e.fg!==void 0||e.bg!==void 0||e.bold||e.dim||e.italic||e.underline||e.inverse||e.strikethrough)}function Ls(e){let t=[];if(e.bold)t.push("1");if(e.dim)t.push("2");if(e.italic)t.push("3");if(e.underline)t.push("4");if(e.inverse)t.push("7");if(e.strikethrough)t.push("9");if(e.fg!==void 0)t.push(pe(e.fg,!1));if(e.bg!==void 0)t.push(pe(e.bg,!0));return t}function Xt(e,t){if(ht(e,t))return"";let s=We(t),i=We(e);if(!s)return i?"\x1B[0m":"";let n=Ls(t),l=n.length>0?`\x1B[0;${n.join(";")}m`:"\x1B[0m";if(!i)return`\x1B[${n.join(";")}m`;let o=[];if(e.bold&&!t.bold)o.push("22");if(!e.bold&&t.bold)o.push("1");if(e.dim&&!t.dim&&!t.bold)o.push("22");if(!e.dim&&t.dim)o.push("2");if(e.italic&&!t.italic)o.push("23");if(!e.italic&&t.italic)o.push("3");if(e.underline&&!t.underline)o.push("24");if(!e.underline&&t.underline)o.push("4");if(e.inverse&&!t.inverse)o.push("27");if(!e.inverse&&t.inverse)o.push("7");if(e.strikethrough&&!t.strikethrough)o.push("29");if(!e.strikethrough&&t.strikethrough)o.push("9");if(!ne(e.fg,t.fg))o.push(pe(t.fg,!1));if(!ne(e.bg,t.bg))o.push(pe(t.bg,!0));if(o.length===0)return"";let g=`\x1B[${o.join(";")}m`;return g.length<=l.length?g:l}function He(e){if(!e)return 0;let t=e.codePointAt(0);if(t===void 0)return 0;if(t<32||t>=127&&t<160)return 0;if(t>=32&&t<=126)return 1;if(t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8203&&t<=8207||t>=8232&&t<=8238||t>=8288&&t<=8303||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t===65279||t>=917760&&t<=917999)return 0;if(t>=4352&&t<=4447||t===9001||t===9002||t>=11904&&t<=12350||t>=12352&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65135||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=127744&&t<=129535||t>=129536&&t<=129791||t>=131072&&t<=262143)return 2;return 1}class re{width;height;cells;constructor(e,t){this.width=Math.max(1,Math.floor(e)),this.height=Math.max(1,Math.floor(t)),this.cells=Array(this.width*this.height),this.clear()}getIndex(e,t){return t*this.width+e}isInBounds(e,t){return e>=0&&e<this.width&&t>=0&&t<this.height}get(e,t){if(!this.isInBounds(e,t))return;return this.cells[this.getIndex(e,t)]}set(e,t,s){if(!this.isInBounds(e,t))return;this.cells[this.getIndex(e,t)]=Y(s)}setChar(e,t,s,i){if(!this.isInBounds(e,t))return;this.cells[this.getIndex(e,t)]=_e(s,i)}write(e,t,s,i){let n=e,l=t;for(let o of s){if(o==="\r")continue;if(o===`
2
2
  `){l+=1,n=e;continue}if(l>=this.height)break;let g=He(o);if(g===0){if(n>0&&this.isInBounds(n-1,l)){let c=this.get(n-1,l);if(c)c.char+=o}continue}if(g===2){if(n+1>=this.width){if(l+=1,n=e,l>=this.height)break}if(this.isInBounds(n,l)){if(this.cells[this.getIndex(n,l)]={char:o,width:2,fg:i?.fg,bg:i?.bg,bold:i?.bold,dim:i?.dim,italic:i?.italic,underline:i?.underline,inverse:i?.inverse,strikethrough:i?.strikethrough},this.isInBounds(n+1,l))this.cells[this.getIndex(n+1,l)]={char:"",width:0,fg:i?.fg,bg:i?.bg}}n+=2}else{if(n>=this.width){if(l+=1,n=e,l>=this.height)break}if(this.isInBounds(n,l))this.cells[this.getIndex(n,l)]={char:o,width:1,fg:i?.fg,bg:i?.bg,bold:i?.bold,dim:i?.dim,italic:i?.italic,underline:i?.underline,inverse:i?.inverse,strikethrough:i?.strikethrough};n+=1}}return{x:n,y:l}}fill(e){let t=e?Y(e):Y(Be);for(let s=0;s<this.cells.length;s++)this.cells[s]=Y(t)}clear(e){let t=e?_e(" ",e):Y(Be);for(let s=0;s<this.cells.length;s++)this.cells[s]=Y(t)}clearArea(e,t,s,i,n){let l=n?_e(" ",n):Y(Be);for(let o=0;o<i;o++){let g=t+o;if(g<0||g>=this.height)continue;for(let c=0;c<s;c++){let h=e+c;if(h<0||h>=this.width)continue;this.cells[this.getIndex(h,g)]=Y(l)}}}dimRegion(e,t,s,i){let n=Math.min(this.width,e+s),l=Math.min(this.height,t+i);for(let o=Math.max(0,t);o<l;o++)for(let g=Math.max(0,e);g<n;g++){let c=this.cells[this.getIndex(g,o)];if(c&&c.char&&c.char!==" ")c.dim=!0,c.bold=!1}}clone(){let e=new re(this.width,this.height);return e.copyFrom(this),e}copyFrom(e){let t=Math.min(this.width,e.width),s=Math.min(this.height,e.height);for(let i=0;i<s;i++)for(let n=0;n<t;n++){let l=e.get(n,i);if(l)this.cells[this.getIndex(n,i)]=Y(l)}}resize(e,t){let s=new re(e,t);return s.copyFrom(this),s}getLine(e){if(e<0||e>=this.height)return"";let t="";for(let s=0;s<this.width;s++){let i=this.get(s,e);if(i)t+=i.char}return t}}function Zt(e,t,s){let i="",n=-1,l=-1,o={},g=Math.min(e.width,t.width),c=Math.min(e.height,t.height),h=Boolean(s?.forceFullRedraw);for(let d=0;d<c;d++)for(let m=0;m<g;m++){let f=t.get(m,d);if(!f)continue;if(f.width===0)continue;let p=e.get(m,d);if(!h&&p&&zt(p,f))continue;if(n!==m||l!==d)i+=`\x1B[${d+1};${m+1}H`,n=m,l=d;let x=jt(f);if(!ht(o,x)){let w=Xt(o,x);if(w)i+=w;o=x}let b=f.char||" ";i+=b;let S=f.width??1;if(n+=S,n>=g)n=-1,l=-1}if(We(o))i+="\x1B[0m";if(s?.cursor){let d=Math.max(0,Math.min(g-1,s.cursor.x)),m=Math.max(0,Math.min(c-1,s.cursor.y));if(i+=`\x1B[${m+1};${d+1}H`,s.cursor.visible!==void 0)i+=s.cursor.visible?"\x1B[?25h":"\x1B[?25l"}if(i.length===0)return"";if(s?.synchronized)return`\x1B[?2025h${i}\x1B[?2025l`;return i}class xe{stdin;stdout;handleSignals;inAlternateScreen=!1;rawModeEnabled=!1;cursorHidden=!1;isCleanedUp=!1;resizeListeners=new Set;onSigwinchBound;onExitBound;onSigintBound;onSigtermBound;onSighupBound;onUncaughtExceptionBound;constructor(e){if(this.stdin=e?.stdin??process.stdin,this.stdout=e?.stdout??process.stdout,this.handleSignals=e?.handleSignals??!0,this.onSigwinchBound=this.handleSigwinch.bind(this),this.onExitBound=this.cleanup.bind(this),this.onSigintBound=()=>{this.cleanup(),process.exit(130)},this.onSigtermBound=()=>{this.cleanup(),process.exit(143)},this.onSighupBound=()=>{this.cleanup(),process.exit(129)},this.onUncaughtExceptionBound=(t)=>{throw this.cleanup(),t},this.handleSignals&&typeof process.on==="function")process.on("SIGWINCH",this.onSigwinchBound),process.on("exit",this.onExitBound),process.on("SIGINT",this.onSigintBound),process.on("SIGTERM",this.onSigtermBound),process.on("SIGHUP",this.onSighupBound),process.on("uncaughtException",this.onUncaughtExceptionBound)}get columns(){return this.stdout.columns&&this.stdout.columns>0?this.stdout.columns:80}get rows(){return this.stdout.rows&&this.stdout.rows>0?this.stdout.rows:24}write(e){if(!e||this.isCleanedUp)return;this.stdout.write(e)}enterAlternateScreen(){if(this.inAlternateScreen||this.isCleanedUp)return;this.write("\x1B[?1049h"),this.inAlternateScreen=!0}exitAlternateScreen(){if(!this.inAlternateScreen)return;this.write("\x1B[?1049l"),this.inAlternateScreen=!1}hideCursor(){if(this.cursorHidden||this.isCleanedUp)return;this.write("\x1B[?25l"),this.cursorHidden=!0}showCursor(){if(!this.cursorHidden)return;this.write("\x1B[?25h"),this.cursorHidden=!1}enableBracketedPaste(){if(this.isCleanedUp)return;this.write("\x1B[?2004h")}disableBracketedPaste(){if(this.isCleanedUp)return;this.write("\x1B[?2004l")}enableRawMode(){if(this.rawModeEnabled||this.isCleanedUp)return;try{if(typeof this.stdin.setRawMode==="function")this.stdin.setRawMode(!0);if(typeof this.stdin.resume==="function")this.stdin.resume();this.rawModeEnabled=!0}catch{}}disableRawMode(){if(!this.rawModeEnabled)return;try{if(typeof this.stdin.setRawMode==="function")this.stdin.setRawMode(!1);if(typeof this.stdin.pause==="function")this.stdin.pause()}catch{}this.rawModeEnabled=!1}onResize(e){return this.resizeListeners.add(e),()=>{this.resizeListeners.delete(e)}}handleSigwinch(){let e=this.columns,t=this.rows;for(let s of this.resizeListeners)s(e,t)}cleanup(){if(this.isCleanedUp)return;this.isCleanedUp=!0;try{this.stdout.write("\x1B[?1006l\x1B[?1002l\x1B[?1000l\x1B[?1007l\x1B[?2004l")}catch{}try{this.stdout.write("\x1B[0m")}catch{}if(this.cursorHidden)try{this.stdout.write("\x1B[?25h"),this.cursorHidden=!1}catch{}if(this.inAlternateScreen)try{this.stdout.write("\x1B[?1049l"),this.inAlternateScreen=!1}catch{}if(this.disableRawMode(),this.handleSignals&&typeof process.removeListener==="function")process.removeListener("SIGWINCH",this.onSigwinchBound),process.removeListener("exit",this.onExitBound),process.removeListener("SIGINT",this.onSigintBound),process.removeListener("SIGTERM",this.onSigtermBound),process.removeListener("SIGHUP",this.onSighupBound),process.removeListener("uncaughtException",this.onUncaughtExceptionBound);this.resizeListeners.clear()}}class dt{terminal;frontBuffer;backBuffer;_width;_height;synchronized;cursor;forceFullRedraw=!1;isRunning=!1;unsubscribeResize;resizeListeners=new Set;constructor(e){this.terminal=e?.terminal??new xe,this._width=e?.width??this.terminal.columns,this._height=e?.height??this.terminal.rows,this.synchronized=e?.synchronized??!0,this.frontBuffer=new re(this._width,this._height),this.backBuffer=new re(this._width,this._height)}get columns(){return this._width}get rows(){return this._height}get width(){return this._width}get height(){return this._height}start(){if(this.isRunning)return;this.isRunning=!0,this.terminal.enterAlternateScreen(),this.terminal.hideCursor(),this.terminal.enableRawMode(),this.terminal.write("\x1B[?1006h\x1B[?1007h\x1B[?2004h"),this.unsubscribeResize=this.terminal.onResize((e,t)=>{this.handleResize(e,t)}),this.forceFullRedraw=!0,this.backBuffer.clear(),this.render()}stop(){if(!this.isRunning)return;if(this.isRunning=!1,this.unsubscribeResize)this.unsubscribeResize(),this.unsubscribeResize=void 0;this.terminal.write("\x1B[?1006l\x1B[?1002l\x1B[?1000l\x1B[?1007l\x1B[?2004l"),this.terminal.cleanup()}onResize(e){return this.resizeListeners.add(e),()=>{this.resizeListeners.delete(e)}}handleResize(e,t){let s=Math.max(1,Math.floor(e)),i=Math.max(1,Math.floor(t));if(s===this._width&&i===this._height)return;this._width=s,this._height=i,this.backBuffer=this.backBuffer.resize(s,i),this.frontBuffer=new re(s,i),this.forceFullRedraw=!0;for(let n of this.resizeListeners)n(this.width,this.height)}setCursor(e,t,s=!1){this.cursor={x:e,y:t,visible:s}}get cursorPosition(){return this.cursor}clear(e){this.backBuffer.clear(e)}write(e,t,s,i){return this.backBuffer.write(e,t,s,i)}render(e){let t={forceFullRedraw:e?.forceFullRedraw??this.forceFullRedraw,synchronized:e?.synchronized??this.synchronized,cursor:e?.cursor??this.cursor},s=Zt(this.frontBuffer,this.backBuffer,t);if(s.length>0)this.terminal.write(s);return this.frontBuffer.copyFrom(this.backBuffer),this.forceFullRedraw=!1,s}}function u(e,t,s){let{x:i,y:n,maxWidth:l=e.width-i,style:o,wrap:g=!1,ellipsis:c=!1}=s;if(l<=0)return{x:i,y:n,linesRendered:0};if(!g){let p=t;if(c&&p.length>l&&l>1)p=p.slice(0,l-1)+"…";else if(p.length>l)p=p.slice(0,l);return e.write(i,n,p,o),{x:i+p.length,y:n,linesRendered:1}}let h=t.split(/(\s+)/),d=i,m=n,f=1;for(let p of h){if(p===`
3
3
  `){m+=1,d=i,f+=1;continue}let x=p.length;if(d+x>i+l){if(d>i)m+=1,d=i,f+=1;if(p.trim()==="")continue}if(m>=e.height)break;e.write(d,m,p,o),d+=x}return{x:d,y:m,linesRendered:f}}function Qe(e,t,s,i){let{x:n,y:l,maxWidth:o=e.width-n,normalStyle:g,highlightStyle:c}=i;if(o<=0||!t)return{x:n,y:l,linesRendered:0};let h=s.trim();if(!h)return u(e,t,{x:n,y:l,maxWidth:o,style:g}),{x:n+Math.min(t.length,o),y:l,linesRendered:1};let d=t.toLowerCase(),m=h.toLowerCase(),f=h.length,p=n,x=0,b=d.indexOf(m,x);while(b!==-1&&p<n+o){if(b>x){let v=t.slice(x,b),I=n+o-p,C=v.slice(0,I);if(C)e.write(p,l,C,g),p+=C.length}if(p>=n+o)break;let S=n+o-p,w=t.slice(b,b+f).slice(0,S);if(w)e.write(p,l,w,c),p+=w.length;x=b+f,b=d.indexOf(m,x)}if(x<t.length&&p<n+o){let S=t.slice(x),w=n+o-p,v=S.slice(0,w);if(v)e.write(p,l,v,g),p+=v.length}return{x:p,y:l,linesRendered:1}}function U(e,t){let{x:s=0,y:i,width:n,char:l="─",style:o}=t;for(let g=0;g<n;g++)e.setChar(s+g,i,l,o)}import be from"node:fs";import{homedir as As}from"node:os";import ut from"node:path";var oe=void 0;function mt(e=process.cwd()){if(oe!==void 0)return oe;try{let t=ut.resolve(e,".git");if(be.existsSync(t)){let s=be.statSync(t),i=ut.resolve(t,"HEAD");if(s.isFile()){let n=be.readFileSync(t,"utf-8").trim();if(n.startsWith("gitdir:")){let l=n.slice(7).trim();i=ut.resolve(e,l,"HEAD")}}if(be.existsSync(i)){let n=be.readFileSync(i,"utf-8").trim();if(n.startsWith("ref: refs/heads/"))return oe=n.replace("ref: refs/heads/","").trim(),oe;if(n)return oe=n.slice(0,7),oe}}}catch{}return oe=null,null}function ft(){try{let e=process.cwd(),t=As();return e.startsWith(t)?"~"+e.slice(t.length):e}catch{return"~"}}function gt(e){if(!e)return"";let t=e.trim(),s=t.toLowerCase(),i={"claude-3-7-sonnet":"Claude 3.7 Sonnet","claude-3.7-sonnet":"Claude 3.7 Sonnet","claude-3-5-sonnet":"Claude 3.5 Sonnet","claude-3.5-sonnet":"Claude 3.5 Sonnet","claude-3-5-haiku":"Claude 3.5 Haiku","claude-3.5-haiku":"Claude 3.5 Haiku","claude-4-5-opus":"Claude 4.5 Opus","claude-4.5-opus":"Claude 4.5 Opus","claude-opus-5":"Claude Opus 5","claude-sonnet-4.6":"Claude Sonnet 4.6","claude-sonnet-5":"Claude Sonnet 5","gemini-2.5-flash":"Gemini 2.5 Flash","gemini-2.5-pro":"Gemini 2.5 Pro","gemini-3.7-flash":"Gemini 3.7 Flash","gemini-3.6-flash":"Gemini 3.6 Flash","gemini-3.8-flash":"Gemini 3.8 Flash","gpt-5.6-sol":"GPT-5.6 Sol","gpt-5.6-luna":"GPT-5.6 Luna","gpt-4o":"GPT-4o","gpt-4o-mini":"GPT-4o Mini",o1:"o1","o1-mini":"o1-mini",o3:"o3","o3-mini":"o3-mini","o4-mini":"o4-mini","december-auto":"Humans R1",auto:"Humans R1","humans-r1":"Humans R1"};if(i[s])return i[s];let n=t.split(/[/:]/);return n[n.length-1].split(/[-_]/).map((o)=>{if(/^\d+(\.\d+)*$/.test(o))return o;if(/^(gpt|llm|ai|api|oss)$/i.test(o))return o.toUpperCase();return o.charAt(0).toUpperCase()+o.slice(1)}).join(" ")}function pt(e,t,s,i=!0){if(!i)return"Not connected · Run /login";let n=(t||"").toLowerCase().trim(),l=(s||"").toLowerCase().trim(),o="API";if(n==="copilot"||n==="github")o="Copilot";else if(n==="claude"||n==="anthropic")o="Claude";else if(n==="codex"||n==="chatgpt")o="ChatGPT";else if(n==="openai")o=e==="subscription"?"ChatGPT":"OpenAI";else if(n==="gemini"||n==="google")o="Gemini";else if(n==="deepseek")o="DeepSeek";else if(n==="groq")o="Groq";else if(n==="mistral"||n.includes("mistral"))o="Mistral";else if(n==="openrouter")o="OpenRouter";else if(n)o=n.charAt(0).toUpperCase()+n.slice(1);else if(l.includes("claude")||l.includes("sonnet")||l.includes("opus")||l.includes("haiku"))o="Claude";else if(l.includes("gpt")||l.includes("o1")||l.includes("o3")||l.includes("o4"))o=e==="subscription"?"ChatGPT":"OpenAI";else if(l.includes("gemini"))o="Gemini";else if(l.includes("deepseek"))o="DeepSeek";if(e==="december")return"December Wallet";if(e==="subscription")return`${o} Subscription`;if(e==="byok"||e==="env")return`${o} API`;return o?`${o} API`:"API"}var qe={toLines(e,t){let s=[],i=(e.x??0)+(r.padding.paddingLeft??2),n=" ".repeat(i);s.push([{text:"",style:{}}]);let l=e.cliVersion?` v${e.cliVersion.replace(/^v/,"")}`:"";if(s.push([{text:`${n}✱ `,style:{fg:r.colors.brand,bold:!0}},{text:"December",style:{fg:r.colors.text,bold:!0}},{text:l,style:{fg:r.colors.subtle}}]),e.userEmail)s.push([{text:`${n}${e.userEmail}`,style:{fg:r.colors.subtle}}]);let o;if(e.isAuthenticated===!1)o="Not connected · Run /login";else{let d=e.modelLabel||gt(e.activeModel),m=pt(e.authMethod,e.selectedProvider,e.activeModel,e.isAuthenticated??!0);if(d&&m)o=`${d} · ${m}`;else if(d)o=d;else o=m||"API"}s.push([{text:`${n}${o}`,style:{fg:r.colors.subtle}}]);let g=e.cwd||ft(),c=e.branch!==void 0?e.branch:mt(),h=c?`${g} (${c})`:g;if(s.push([{text:`${n}${h}`,style:{fg:r.colors.subtle}}]),e.latestVersion){s.push([{text:"",style:{}}]);let d=e.cliVersion?e.cliVersion.replace(/^v/,""):"0.1.0",m=e.latestVersion.replace(/^v/,"");s.push([{text:`${n}▎ `,style:{fg:r.colors.brand,bold:!0}},{text:`A new version is available: v${d} → v${m}`,style:{fg:r.colors.text,bold:!0}}]),s.push([{text:`${n}▎ `,style:{fg:r.colors.brand,bold:!0}},{text:"Run /update to upgrade · Changelog: trydecember.com/docs/changelog",style:{fg:r.colors.muted}}])}else if(e.announcement){s.push([{text:"",style:{}}]);let d=e.announcement.title||`What's New in v${e.announcement.version}`;s.push([{text:`${n}▎ `,style:{fg:r.colors.brand,bold:!0}},{text:d,style:{fg:r.colors.text,bold:!0}}]);let m=(e.announcement.bullets||[]).slice(0,2);for(let f of m)s.push([{text:`${n}▎ `,style:{fg:r.colors.brand,bold:!0}},{text:f,style:{fg:r.colors.muted}}]);if(e.announcement.url)s.push([{text:`${n}▎ `,style:{fg:r.colors.brand,bold:!0}},{text:"Check out detailed changelog on ",style:{fg:r.colors.muted}},{text:e.announcement.url,style:{fg:r.colors.brand}}])}return s.push([{text:"",style:{}}]),s},getHeight(e){let t=4;if(e?.userEmail)t+=1;if(e?.latestVersion)t+=3;else if(e?.announcement){let s=Math.min(2,e.announcement.bullets?.length||0),i=e.announcement.url?1:0;t+=2+s+i}return t+1},render(e,t){let s=(t.x??0)+(r.padding.paddingLeft??2),i=(t.y??0)+1,n=Math.max(10,t.width-s-2),l=t.cliVersion?` v${t.cliVersion.replace(/^v/,"")}`:"";if(u(e,"✱ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}}),u(e,"December",{x:s+2,y:i,style:{fg:r.colors.text,bold:!0}}),l)u(e,l,{x:s+10,y:i,style:{fg:r.colors.subtle}});if(i+=1,t.userEmail)u(e,t.userEmail,{x:s,y:i,maxWidth:n,style:{fg:r.colors.subtle}}),i+=1;let o;if(t.isAuthenticated===!1)o="Not connected · Run /login";else{let d=t.modelLabel||gt(t.activeModel),m=pt(t.authMethod,t.selectedProvider,t.activeModel,t.isAuthenticated??!0);if(d&&m)o=`${d} · ${m}`;else if(d)o=d;else o=m||"API"}u(e,o,{x:s,y:i,maxWidth:n,style:{fg:r.colors.subtle}}),i+=1;let g=t.cwd||ft(),c=t.branch!==void 0?t.branch:mt(),h=c?`${g} (${c})`:g;if(u(e,h,{x:s,y:i,maxWidth:n,style:{fg:r.colors.subtle}}),i+=1,t.latestVersion){i+=1,u(e,"▎ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}});let d=t.cliVersion?t.cliVersion.replace(/^v/,""):"0.1.0",m=t.latestVersion.replace(/^v/,"");u(e,`A new version is available: v${d} → v${m}`,{x:s+2,y:i,maxWidth:n-2,style:{fg:r.colors.text,bold:!0}}),i+=1,u(e,"▎ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}}),u(e,"Run /update to upgrade · Changelog: trydecember.com/docs/changelog",{x:s+2,y:i,maxWidth:n-2,style:{fg:r.colors.muted}}),i+=1}else if(t.announcement){i+=1;let d=t.announcement.title||`What's New in v${t.announcement.version}`;u(e,"▎ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}}),u(e,d,{x:s+2,y:i,maxWidth:n-2,style:{fg:r.colors.text,bold:!0}}),i+=1;let m=(t.announcement.bullets||[]).slice(0,2);for(let f of m)u(e,"▎ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}}),u(e,f,{x:s+2,y:i,maxWidth:n-2,style:{fg:r.colors.muted}}),i+=1;if(t.announcement.url){u(e,"▎ ",{x:s,y:i,style:{fg:r.colors.brand,bold:!0}}),u(e,"Check out detailed changelog on ",{x:s+2,y:i,style:{fg:r.colors.muted}});let f=32;u(e,t.announcement.url,{x:s+2+f,y:i,maxWidth:Math.max(10,n-2-f),style:{fg:r.colors.brand}}),i+=1}}return i-(t.y??0)+1}};function J(e){if(e>=1e6){let t=e/1e6;return`${Number.isInteger(t)?t:t.toFixed(1).replace(/\.0$/,"")}M`}if(e>=1000){let t=e/1000;return`${Number.isInteger(t)?t:t.toFixed(1).replace(/\.0$/,"")}k`}return e.toString()}var xt={getHeight(e="",t=80){if(!e)return 4;let s=e.split(`
4
4
  `),i=r.padding.paddingLeft??2,n=r.padding.paddingRight??4,l=i+`${r.glyphs.prompt} `.length,o=Math.max(10,t-l-n),g=0;for(let h of s){let d=Math.max(1,Math.ceil(h.length/o));g+=d}return Math.min(8,Math.max(1,Math.max(s.length,g)))+3},render(e,t){let s=t.x??0,{y:i,width:n,input:l}=t,o=t.cursorPos??l.length,g=r.padding.paddingLeft??2,c=r.padding.paddingRight??4,h=Math.max(10,n-g-c),d=l?l.split(`
@@ -1,4 +1,4 @@
1
- import{l,d}from"./chunk-0x66zzs3.js";import{N}from"./chunk-w8v2c87g.js";import he from"node:fs/promises";import fe from"node:os";import M from"node:path";var V="9d1c250a-e61b-44d9-88ed-5944d1962f5e",Te="https://claude.ai/oauth/authorize",Q="https://platform.claude.com/v1/oauth/token",J=53692,ne="/callback",oe=`http://localhost:${J}${ne}`,_e="org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload",I="https://api.anthropic.com",me={provider:"claude",displayName:"Claude Code (Anthropic)",async detectLocal(){let e=process.env.CLAUDE_CODE_OAUTH_TOKEN||process.env.ANTHROPIC_AUTH_TOKEN;if(e)return{provider:"claude",accessToken:e,subscriptionType:"claude_pro",source:"env",updatedAt:Date.now(),endpoint:I};let t=process.env.HOME||fe.homedir(),n=[M.join(t,".claude.json"),M.join(t,".claude",".credentials.json"),M.join(t,".config","claude","credentials.json")];for(let r of n)try{let s=await he.readFile(r,"utf-8"),o=JSON.parse(s),i=o.primaryApiKey||o.apiKey;if(i){let c=o.oauthAccount||{};return{provider:"claude",accessToken:i,email:c.emailAddress||c.email,accountName:c.displayName||c.name,subscriptionType:c.seatTier||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}if(o.claudeAiOauth){let c=o.claudeAiOauth,f=c.accessToken||c.access_token;if(f)return{provider:"claude",accessToken:f,refreshToken:c.refreshToken||c.refresh_token,expiresAt:typeof c.expiresAt==="number"?c.expiresAt:c.expires_at?Number(c.expires_at):void 0,email:c.account?.email||c.email,accountName:c.account?.name||c.name,subscriptionType:c.subscriptionType||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}let a=o.accessToken||o.access_token||o.tokens?.access_token||o.oauth_token;if(a)return{provider:"claude",accessToken:a,refreshToken:o.refreshToken||o.tokens?.refresh_token,expiresAt:o.expiresAt||o.tokens?.expires_at,email:o.email||o.account?.email,subscriptionType:o.subscriptionType||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}catch{}return null},async refreshToken(e){if(!e.refreshToken)return e;try{let t=await fetch(Q,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:V,refresh_token:e.refreshToken})});if(t.ok){let n=await t.json(),r=n.access_token||n.accessToken,s=n.refresh_token||n.refreshToken||e.refreshToken,o=n.expires_in||3600;return{...e,accessToken:r,refreshToken:s,expiresAt:Date.now()+o*1000,updatedAt:Date.now(),endpoint:e.endpoint||I}}}catch{}return e},async loginOAuth(e){let{openUrl:t}=await import("./chunk-y11aydfy.js"),{startLocalOAuthServer:n,generatePKCE:r}=await import("./chunk-jw9ezcf3.js"),s=r(),o;try{o=await n({port:J,path:ne,redirectHost:"localhost",timeoutMs:180000})}catch(i){let a=await this.detectLocal();if(a)return a;throw Error(`Unable to start Claude OAuth callback server on port ${J}: ${i.message}
1
+ import{l,d}from"./chunk-2v3whmk6.js";import{N}from"./chunk-w8v2c87g.js";import he from"node:fs/promises";import fe from"node:os";import M from"node:path";var V="9d1c250a-e61b-44d9-88ed-5944d1962f5e",Te="https://claude.ai/oauth/authorize",Q="https://platform.claude.com/v1/oauth/token",J=53692,ne="/callback",oe=`http://localhost:${J}${ne}`,_e="org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload",I="https://api.anthropic.com",me={provider:"claude",displayName:"Claude Code (Anthropic)",async detectLocal(){let e=process.env.CLAUDE_CODE_OAUTH_TOKEN||process.env.ANTHROPIC_AUTH_TOKEN;if(e)return{provider:"claude",accessToken:e,subscriptionType:"claude_pro",source:"env",updatedAt:Date.now(),endpoint:I};let t=process.env.HOME||fe.homedir(),n=[M.join(t,".claude.json"),M.join(t,".claude",".credentials.json"),M.join(t,".config","claude","credentials.json")];for(let r of n)try{let s=await he.readFile(r,"utf-8"),o=JSON.parse(s),i=o.primaryApiKey||o.apiKey;if(i){let c=o.oauthAccount||{};return{provider:"claude",accessToken:i,email:c.emailAddress||c.email,accountName:c.displayName||c.name,subscriptionType:c.seatTier||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}if(o.claudeAiOauth){let c=o.claudeAiOauth,f=c.accessToken||c.access_token;if(f)return{provider:"claude",accessToken:f,refreshToken:c.refreshToken||c.refresh_token,expiresAt:typeof c.expiresAt==="number"?c.expiresAt:c.expires_at?Number(c.expires_at):void 0,email:c.account?.email||c.email,accountName:c.account?.name||c.name,subscriptionType:c.subscriptionType||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}let a=o.accessToken||o.access_token||o.tokens?.access_token||o.oauth_token;if(a)return{provider:"claude",accessToken:a,refreshToken:o.refreshToken||o.tokens?.refresh_token,expiresAt:o.expiresAt||o.tokens?.expires_at,email:o.email||o.account?.email,subscriptionType:o.subscriptionType||"claude_pro",source:"local_import",updatedAt:Date.now(),endpoint:I,extra:{filePath:r}}}catch{}return null},async refreshToken(e){if(!e.refreshToken)return e;try{let t=await fetch(Q,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:V,refresh_token:e.refreshToken})});if(t.ok){let n=await t.json(),r=n.access_token||n.accessToken,s=n.refresh_token||n.refreshToken||e.refreshToken,o=n.expires_in||3600;return{...e,accessToken:r,refreshToken:s,expiresAt:Date.now()+o*1000,updatedAt:Date.now(),endpoint:e.endpoint||I}}}catch{}return e},async loginOAuth(e){let{openUrl:t}=await import("./chunk-y11aydfy.js"),{startLocalOAuthServer:n,generatePKCE:r}=await import("./chunk-1w0ffpnp.js"),s=r(),o;try{o=await n({port:J,path:ne,redirectHost:"localhost",timeoutMs:180000})}catch(i){let a=await this.detectLocal();if(a)return a;throw Error(`Unable to start Claude OAuth callback server on port ${J}: ${i.message}
2
2
  Please ensure no other Claude CLI instance is using port 53692 or run \`claude login\`.`)}try{let i=new URL(Te);i.searchParams.set("code","true"),i.searchParams.set("client_id",V),i.searchParams.set("response_type","code"),i.searchParams.set("redirect_uri",oe),i.searchParams.set("scope",_e),i.searchParams.set("code_challenge",s.codeChallenge),i.searchParams.set("code_challenge_method","S256"),i.searchParams.set("state",s.state);let a=i.toString();if(e)e("CLAUDE-AUTH",a);else t(a).catch(()=>{});let c=await o.waitForCallback();if(c.error)throw Error(c.errorDescription||c.error||"Claude authorization was denied or failed.");let f=c.code;if(!f)throw Error("No authorization code returned from Claude authorization server.");let p=await fetch(Q,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",client_id:V,code:f,state:c.state||s.state,redirect_uri:oe,code_verifier:s.codeVerifier})});if(!p.ok){let A=await p.text().catch(()=>"");throw Error(`Claude token exchange failed (${p.status}): ${A}`)}let h=await p.json(),_=h.access_token||h.accessToken,x=h.refresh_token||h.refreshToken,b=h.expires_in||43200;return{provider:"claude",accessToken:_,refreshToken:x,expiresAt:Date.now()+b*1000,subscriptionType:"claude_pro",source:"oauth_login",updatedAt:Date.now(),endpoint:I}}finally{if(o)await o.close().catch(()=>{})}},async verifyToken(e){if(!e||!e.accessToken)return!1;if(e.expiresAt&&e.expiresAt<Date.now()&&!e.refreshToken)return!1;return!0}};import xe from"node:fs/promises";import Ae from"node:os";import H from"node:path";import W from"node:crypto";import ke from"node:http";function We(){let e=W.randomBytes(32).toString("base64url"),t=W.createHash("sha256").update(e).digest("base64url"),n=W.randomBytes(16).toString("hex");return{codeVerifier:e,codeChallenge:t,state:n}}var re=`<svg class="logo" viewBox="5 4 14 16" fill="none" stroke="white" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">
3
3
  <line x1="12" y1="12" x2="12" y2="5.3" />
4
4
  <line x1="12" y1="7.5" x2="13.9" y2="6.4" />
@@ -154,7 +154,7 @@ Please ensure no other Claude CLI instance is using port 53692 or run \`claude l
154
154
  </div>
155
155
  </body>
156
156
  </html>`}async function Ve(e){let t=e?.path||"/callback",n=e?.timeoutMs||120000,r=null,s=!1;return new Promise((i,a)=>{let c=ke.createServer();r=c;let f,p,h=new Promise((g,y)=>{f=g,p=y}),_=setTimeout(()=>{if(!s)x(),p(Error("OAuth authentication timed out waiting for browser authorization."))},n),x=async()=>{if(s)return;s=!0,clearTimeout(_);try{await new Promise((g)=>c.close(()=>g()))}catch{}};c.on("request",(g,y)=>{let k=g.url||"/",T=new URL(k,"http://127.0.0.1");if(T.pathname===t){let w={};for(let[z,F]of T.searchParams.entries())w[z]=F;let{code:u,state:m,error:O}=w,C=w.error_description||w.errorDescription,G=O?we(C||O):ye;y.writeHead(200,{"Content-Type":"text/html; charset=utf-8",Connection:"close"}),y.end(G),x().finally(()=>{f({code:u,state:m,error:O,errorDescription:C,params:w})})}else y.writeHead(404,{"Content-Type":"text/plain"}),y.end("Not Found")}),c.on("error",(g)=>{clearTimeout(_),a(g)});let b=e?.port!==void 0?e.port:0,A=e?.host||"127.0.0.1";c.listen(b,A,()=>{let y=c.address().port,k=e?.redirectHost||(A==="0.0.0.0"?"localhost":A),T=e?.redirectUri||`http://${k}:${y}${t}`;i({port:y,redirectUri:T,waitForCallback:()=>h,close:x})})})}var L="app_EMoamEEZ73f0CkXaXp7hrann",D="https://auth.openai.com",ve=`${D}/oauth/authorize`,Y=`${D}/oauth/token`,ie="http://localhost:1455/auth/callback",be=`${D}/api/accounts/deviceauth/usercode`,Ee=`${D}/api/accounts/deviceauth/token`,se=`${D}/codex/device`,Oe=`${D}/deviceauth/callback`,Se="openid profile email offline_access",j="https://chatgpt.com/backend-api";function R(e){try{let t=e.split("."),n=t[1];if(t.length===3&&n){let r=Buffer.from(n,"base64url").toString("utf-8");return JSON.parse(r)}}catch{}return null}function U(e){if(!e)return"chatgpt_plus";let t=e.toLowerCase();if(t==="pro")return"chatgpt_pro";if(t==="team")return"chatgpt_team";if(t==="go")return"chatgpt_go";return"chatgpt_plus"}var ee={provider:"codex",displayName:"OpenAI Codex / ChatGPT Subscription",async detectLocal(){let e=process.env.OPENAI_OAUTH_TOKEN||process.env.CODEX_TOKEN||process.env.OPENAI_CODEX_TOKEN;if(e){let r=R(e),s=r?.["https://api.openai.com/auth"],o=r?.["https://api.openai.com/profile"];return{provider:"codex",accessToken:e,subscriptionType:U(s?.chatgpt_plan_type),email:o?.email,source:"env",updatedAt:Date.now(),endpoint:j,extra:{accountId:s?.chatgpt_account_id,planType:s?.chatgpt_plan_type}}}let t=process.env.HOME||Ae.homedir(),n=[H.join(t,".codex","auth.json"),H.join(t,".config","codex","auth.json"),H.join(t,".codex.json"),H.join(t,".config","openai","auth.json")];for(let r of n)try{let s=await xe.readFile(r,"utf-8"),o=JSON.parse(s),i=o.tokens?.access_token||o.tokens?.accessToken||o.access_token||o.accessToken||o.session_token;if(i){let a=R(i),c=a?.["https://api.openai.com/auth"],f=a?.["https://api.openai.com/profile"],p=c?.chatgpt_plan_type||o.plan||o.subscription_type||o.subscriptionType;return{provider:"codex",accessToken:i,refreshToken:o.tokens?.refresh_token||o.refresh_token||o.refreshToken,expiresAt:o.tokens?.expires_at||o.expires_at||o.expiresAt,email:f?.email||o.user?.email||o.email,accountName:o.user?.name||o.name,subscriptionType:U(p),source:"local_import",updatedAt:Date.now(),endpoint:j,extra:{filePath:r,accountId:c?.chatgpt_account_id,planType:c?.chatgpt_plan_type||p}}}}catch{}return null},async refreshToken(e){if(!e.refreshToken)return e;try{let t=await fetch(Y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:L})});if(t.ok){let n=await t.json(),r=n.access_token||n.accessToken,s=n.refresh_token||e.refreshToken,o=n.expires_in||3600,i=R(r),a=i?.["https://api.openai.com/auth"],c=i?.["https://api.openai.com/profile"];return{...e,accessToken:r,refreshToken:s,expiresAt:Date.now()+o*1000,updatedAt:Date.now(),email:c?.email||e.email,subscriptionType:U(a?.chatgpt_plan_type||e.subscriptionType),endpoint:e.endpoint||j,extra:{...e.extra||{},accountId:a?.chatgpt_account_id||e.extra?.accountId,planType:a?.chatgpt_plan_type||e.extra?.planType}}}}catch{}return e},async loginOAuth(e){let t=We(),n=null;try{n=await Ve({port:1455,path:"/auth/callback",timeoutMs:180000})}catch{n=null}if(n)try{let u=new URL(ve);if(u.searchParams.set("response_type","code"),u.searchParams.set("client_id",L),u.searchParams.set("redirect_uri",ie),u.searchParams.set("scope",Se),u.searchParams.set("code_challenge",t.codeChallenge),u.searchParams.set("code_challenge_method","S256"),u.searchParams.set("state",t.state),u.searchParams.set("id_token_add_organizations","true"),u.searchParams.set("codex_cli_simplified_flow","true"),u.searchParams.set("originator","december"),e)e("CODEX-AUTH",u.toString());else try{await N(u.toString())}catch{}let m=await n.waitForCallback();if(m.error)throw Error(`OpenAI authentication failed: ${m.errorDescription||m.error}`);if(!m.code)throw Error("No authorization code received from OpenAI callback.");let O=await fetch(Y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:L,code:m.code,code_verifier:t.codeVerifier,redirect_uri:ie})});if(!O.ok){let de=await O.text().catch(()=>"");throw Error(`Failed to exchange authorization code with OpenAI (${O.status}): ${de}`)}let C=await O.json(),{access_token:G,refresh_token:z}=C,F=C.expires_in||3600,Z=R(G),K=Z?.["https://api.openai.com/auth"],ue=Z?.["https://api.openai.com/profile"];return{provider:"codex",accessToken:G,refreshToken:z,expiresAt:Date.now()+F*1000,email:ue?.email,subscriptionType:U(K?.chatgpt_plan_type),source:"oauth_login",updatedAt:Date.now(),endpoint:j,extra:{accountId:K?.chatgpt_account_id,planType:K?.chatgpt_plan_type}}}finally{await n.close()}let r=await fetch(be,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:L})});if(!r.ok){let u=await r.text().catch(()=>"");throw Error(`OpenAI device authentication request failed (${r.status}): ${u}`)}let s=await r.json(),{device_auth_id:o,user_code:i,interval:a}=s,c=(typeof a==="number"?a:Number(a)||5)*1000;if(e)e(i,se);else try{await N(se)}catch{}let f=900000,p=Date.now(),h=null,_=null;while(Date.now()-p<f){await new Promise((u)=>setTimeout(u,c));try{let u=await fetch(Ee,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_auth_id:o,user_code:i})});if(u.ok){let m=await u.json();if(m.authorization_code&&m.code_verifier){h=m.authorization_code,_=m.code_verifier;break}}else if(u.status===403||u.status===404)continue;else if((await u.json().catch(()=>({})))?.error?.code==="deviceauth_authorization_pending")continue}catch{}}if(!h||!_)throw Error("OpenAI device code authentication timed out");let x=await fetch(Y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:L,code:h,code_verifier:_,redirect_uri:Oe})});if(!x.ok){let u=await x.text().catch(()=>"");throw Error(`Failed to exchange OpenAI device code (${x.status}): ${u}`)}let b=await x.json(),{access_token:A,refresh_token:g}=b,y=b.expires_in||3600,k=R(A),T=k?.["https://api.openai.com/auth"],w=k?.["https://api.openai.com/profile"];return{provider:"codex",accessToken:A,refreshToken:g,expiresAt:Date.now()+y*1000,email:w?.email,subscriptionType:U(T?.chatgpt_plan_type),source:"oauth_login",updatedAt:Date.now(),endpoint:j,extra:{accountId:T?.chatgpt_account_id,planType:T?.chatgpt_plan_type}}},async verifyToken(e){if(!e||!e.accessToken)return!1;if(e.expiresAt&&e.expiresAt<Date.now()&&!e.refreshToken)return!1;return!0}};import Ce from"node:fs/promises";import Pe from"node:os";import E from"node:path";var ae="Iv1.b507a08c87ecfe98",Ie="https://api.github.com/copilot_internal/v2/token";async function q(e){let t=await fetch(Ie,{headers:{Authorization:`token ${e}`,"Editor-Version":"vscode/1.95.0","Editor-Plugin-Version":"copilot/1.240.0","Copilot-Integration-Id":"vscode-chat","User-Agent":"GithubCopilot/1.240.0",Accept:"application/json"}});if(!t.ok){let i=await t.text().catch(()=>""),a=null;try{a=JSON.parse(i)}catch{}if(t.status===403){let c=a?.error_details;if(c?.notification_id==="no_copilot_access"){let f=c.message||"",p=f.match(/logged in as ([^.]+)/i),h=p?` for account @${p[1].trim()}`:"";throw Error(`No active GitHub Copilot subscription found${h}. ${f} Please sign up at https://github.com/github-copilot/signup or ensure your browser is logged into an authorized GitHub account.`)}if(c?.message)throw Error(`GitHub Copilot subscription verification failed (403): ${c.message}`);if(a?.message)throw Error(`GitHub Copilot subscription verification failed (403): ${a.message}`)}if(a?.message)throw Error(`Failed to exchange GitHub token for Copilot token (${t.status}): ${a.message}`);throw Error(`Failed to exchange GitHub token for Copilot token (${t.status}): ${i}`)}let n=await t.json(),r=n.token,s=typeof n.expires_at==="number"?n.expires_at*1000:Date.now()+1800000,o=n.endpoints?.api||"https://api.individual.githubcopilot.com";return{token:r,expiresAt:s,endpoint:o}}var ge={provider:"copilot",displayName:"GitHub Copilot Subscription",async detectLocal(){let e=process.env.COPILOT_TOKEN||process.env.GITHUB_COPILOT_TOKEN||process.env.GITHUB_TOKEN||process.env.GH_TOKEN;if(e)return{provider:"copilot",accessToken:e,subscriptionType:"copilot",source:"env",updatedAt:Date.now(),extra:{rawToken:e}};let t=process.env.HOME||Pe.homedir(),n=process.env.APPDATA||E.join(t,"AppData","Roaming"),r=process.env.LOCALAPPDATA||E.join(t,"AppData","Local"),s=[E.join(t,".config","github-copilot","hosts.json"),E.join(t,".config","github-copilot","apps.json"),E.join(t,".config","github-copilot","config.json"),E.join(n,"GitHub Copilot","hosts.json"),E.join(n,"github-copilot","hosts.json"),E.join(r,"github-copilot","hosts.json"),E.join(r,"github-copilot","apps.json"),E.join(t,"Library","Application Support","github-copilot","hosts.json"),E.join(t,"Library","Application Support","github-copilot","apps.json")];for(let o of s)try{let i=await Ce.readFile(o,"utf-8"),a=JSON.parse(i);if(a["github.com"]){let f=a["github.com"],p=f.oauth_token||f.oauthToken||f.token;if(p)return{provider:"copilot",accessToken:p,accountName:f.user||f.account,subscriptionType:"copilot",source:"local_import",updatedAt:Date.now(),extra:{filePath:o,rawToken:p}}}let c=a.oauth_token||a.oauthToken||a.token||a.accessToken;if(c)return{provider:"copilot",accessToken:c,accountName:a.user||a.account,subscriptionType:"copilot",source:"local_import",updatedAt:Date.now(),extra:{filePath:o,rawToken:c}}}catch{}return null},async refreshToken(e){let t=e.extra?.rawToken||e.accessToken;if(t.startsWith("gho_")||t.startsWith("ghu_")||t.startsWith("github_pat_")||t.startsWith("ghp_"))try{let{token:n,expiresAt:r,endpoint:s}=await q(t);return{...e,accessToken:n,endpoint:s,expiresAt:r,updatedAt:Date.now(),extra:{...e.extra,rawToken:t}}}catch{}return e},async loginOAuth(e){let t=await fetch("https://github.com/login/device/code",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:ae,scope:"read:user"})});if(!t.ok)throw Error(`Failed to request GitHub device code (${t.status})`);let n=await t.json(),{device_code:r,user_code:s,verification_uri:o,expires_in:i,interval:a}=n;if(e)e(s,o);else N(o).catch(()=>{});let c=(a||5)*1000,f=Date.now(),p=(i||900)*1000,h=await new Promise((k,T)=>{let w=async()=>{if(Date.now()-f>p){T(Error("GitHub device code expired."));return}try{let m=await(await fetch("https://github.com/login/oauth/access_token",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({client_id:ae,device_code:r,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})})).json();if(m.access_token){k(m.access_token);return}if(m.error==="authorization_pending"||m.error==="slow_down")setTimeout(w,c);else T(Error(m.error_description||m.error||"Authentication failed"))}catch{setTimeout(w,c)}};setTimeout(w,c)}),_;try{_=await q(h)}catch(k){let T=k?.message||String(k);if(T.includes("No active GitHub Copilot subscription")||T.includes("GitHub Copilot subscription verification failed"))throw k;throw Error(`GitHub Copilot subscription verification failed. Please make sure your GitHub account has an active Copilot subscription and that external integrations are allowed by your organization. (${T})`,{cause:k})}let x=_.token,b=_.endpoint,A=_.expiresAt,g,y;try{let k=await fetch("https://api.github.com/user",{headers:{Authorization:`token ${h}`,"User-Agent":"GithubCopilot/1.240.0",Accept:"application/json"}});if(k.ok){let T=await k.json();g=T.login||T.name,y=T.email}}catch{}return{provider:"copilot",accessToken:x,accountName:g,email:y,endpoint:b,expiresAt:A,subscriptionType:"copilot",source:"oauth_login",updatedAt:Date.now(),extra:{rawToken:h}}},async verifyToken(e){if(!e||!e.accessToken)return!1;if(e.expiresAt&&e.expiresAt>Date.now())return!0;let t=e.extra?.rawToken||e.accessToken;if(t&&(t.startsWith("gho_")||t.startsWith("ghu_")||t.startsWith("github_pat_")||t.startsWith("ghp_")))try{return!!(await q(t)).token}catch{return!1}if(e.accessToken.includes("tid=")||e.accessToken.includes("exp=")){if(e.expiresAt&&e.expiresAt<Date.now())return!1;return!0}return!0}};import{execSync as De}from"node:child_process";import Ne from"node:fs/promises";import Le from"node:os";import S from"node:path";var B="https://daily-cloudcode-pa.googleapis.com",ce=String.fromCharCode(49,48,55,49,48,48,54,48,54,48,53,57,49,45,116,109,104,115,115,105,110,50,104,50,49,108,99,114,101,50,51,53,118,116,111,108,111,106,104,52,103,52,48,51,101,112,46,97,112,112,115,46,103,111,111,103,108,101,117,115,101,114,99,111,110,116,101,110,116,46,99,111,109),pe=String.fromCharCode(71,79,67,83,80,88,45,75,53,56,70,87,82,52,56,54,76,100,76,74,49,109,76,66,56,115,88,67,52,122,54,113,68,65,102);function X(){try{let e=process.platform==="win32"?"2>NUL":"2>/dev/null",t=De(`gcloud auth application-default print-access-token ${e} || gcloud auth print-access-token ${e}`,{encoding:"utf-8",timeout:3000,stdio:["pipe","pipe","ignore"]}).trim();if(t&&t.startsWith("ya29."))return t}catch{}return null}var te={provider:"gemini",displayName:"Google Antigravity / Gemini Advanced",async detectLocal(){let e=process.env.ANTIGRAVITY_TOKEN||process.env.GEMINI_OAUTH_TOKEN||process.env.GOOGLE_OAUTH_TOKEN;if(e)return{provider:"gemini",accessToken:e,subscriptionType:"gemini_advanced",source:"env",updatedAt:Date.now(),endpoint:B};let t=process.env.HOME||Le.homedir(),n=[S.join(t,".gemini","antigravity-cli","antigravity-oauth-token"),S.join(t,".gemini","antigravity-cli","auth.json"),S.join(t,".gemini","google_accounts.json"),S.join(t,".gemini","auth.json"),S.join(t,".gemini","credentials.json"),S.join(t,".config","gcloud","application_default_credentials.json"),S.join(t,".gemini","gemini-credentials.json")];if(process.env.GOOGLE_APPLICATION_CREDENTIALS)n.unshift(process.env.GOOGLE_APPLICATION_CREDENTIALS);for(let s of n)try{let o=await Ne.readFile(s,"utf-8"),i;try{i=JSON.parse(o)}catch{let p=o.trim();if(p.length>20&&!p.includes(`
157
- `)&&!p.includes(":")&&p.startsWith("ya29."))return{provider:"gemini",accessToken:p,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),extra:{filePath:s}};continue}let a=typeof i.token==="object"&&i.token!==null?i.token:i,c=a.access_token||a.accessToken||a.token||i.access_token||i.accessToken||(typeof i.token==="string"&&!i.token.includes(":")?i.token:void 0),f=a.refresh_token||a.refreshToken||i.refresh_token||i.refreshToken;if(c||f){if(c&&c.includes(":"))continue;let p,h=a.expiry||a.expires_at||a.expiresAt||i.token_expiry||i.expires_at||i.expiresAt;if(h)p=typeof h==="string"?new Date(h).getTime():h*(h<1000000000000?1000:1);return{provider:"gemini",accessToken:c||"",refreshToken:f,expiresAt:p,email:i.account||i.email||i.client_email,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),endpoint:B,extra:{filePath:s,client_id:i.client_id||a.client_id,client_secret:i.client_secret||a.client_secret}}}}catch{}let r=X();if(r)return{provider:"gemini",accessToken:r,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),expiresAt:Date.now()+3300000,extra:{source:"gcloud_cli"}};return null},async refreshToken(e){if(!e.refreshToken){if(e.extra?.source==="gcloud_cli"){let r=X();if(r)return{...e,accessToken:r,updatedAt:Date.now(),expiresAt:Date.now()+3300000}}return e}let t=e.extra?.client_id||process.env.GOOGLE_OAUTH_CLIENT_ID||process.env.GEMINI_OAUTH_CLIENT_ID||ce,n=e.extra?.client_secret||process.env.GOOGLE_OAUTH_CLIENT_SECRET||process.env.GEMINI_OAUTH_CLIENT_SECRET||pe;try{let r={grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:t};if(n)r.client_secret=n;let s=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(s.ok){let o=await s.json(),i=o.access_token||o.accessToken,a=o.expires_in||3600;return{...e,accessToken:i,expiresAt:Date.now()+a*1000,updatedAt:Date.now()}}}catch{}return e},async loginOAuth(e){let{openUrl:t}=await import("./chunk-y11aydfy.js"),{startLocalOAuthServer:n,generatePKCE:r}=await import("./chunk-jw9ezcf3.js"),s=process.env.GOOGLE_OAUTH_CLIENT_ID||process.env.GEMINI_OAUTH_CLIENT_ID||ce,o=process.env.GOOGLE_OAUTH_CLIENT_SECRET||process.env.GEMINI_OAUTH_CLIENT_SECRET||pe;if(!s){let h=X();if(h)return{provider:"gemini",accessToken:h,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),endpoint:B,extra:{source:"gcloud_cli"}};throw Error(`Google OAuth Client ID is required for interactive browser login.
157
+ `)&&!p.includes(":")&&p.startsWith("ya29."))return{provider:"gemini",accessToken:p,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),extra:{filePath:s}};continue}let a=typeof i.token==="object"&&i.token!==null?i.token:i,c=a.access_token||a.accessToken||a.token||i.access_token||i.accessToken||(typeof i.token==="string"&&!i.token.includes(":")?i.token:void 0),f=a.refresh_token||a.refreshToken||i.refresh_token||i.refreshToken;if(c||f){if(c&&c.includes(":"))continue;let p,h=a.expiry||a.expires_at||a.expiresAt||i.token_expiry||i.expires_at||i.expiresAt;if(h)p=typeof h==="string"?new Date(h).getTime():h*(h<1000000000000?1000:1);return{provider:"gemini",accessToken:c||"",refreshToken:f,expiresAt:p,email:i.account||i.email||i.client_email,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),endpoint:B,extra:{filePath:s,client_id:i.client_id||a.client_id,client_secret:i.client_secret||a.client_secret}}}}catch{}let r=X();if(r)return{provider:"gemini",accessToken:r,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),expiresAt:Date.now()+3300000,extra:{source:"gcloud_cli"}};return null},async refreshToken(e){if(!e.refreshToken){if(e.extra?.source==="gcloud_cli"){let r=X();if(r)return{...e,accessToken:r,updatedAt:Date.now(),expiresAt:Date.now()+3300000}}return e}let t=e.extra?.client_id||process.env.GOOGLE_OAUTH_CLIENT_ID||process.env.GEMINI_OAUTH_CLIENT_ID||ce,n=e.extra?.client_secret||process.env.GOOGLE_OAUTH_CLIENT_SECRET||process.env.GEMINI_OAUTH_CLIENT_SECRET||pe;try{let r={grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:t};if(n)r.client_secret=n;let s=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(s.ok){let o=await s.json(),i=o.access_token||o.accessToken,a=o.expires_in||3600;return{...e,accessToken:i,expiresAt:Date.now()+a*1000,updatedAt:Date.now()}}}catch{}return e},async loginOAuth(e){let{openUrl:t}=await import("./chunk-y11aydfy.js"),{startLocalOAuthServer:n,generatePKCE:r}=await import("./chunk-1w0ffpnp.js"),s=process.env.GOOGLE_OAUTH_CLIENT_ID||process.env.GEMINI_OAUTH_CLIENT_ID||ce,o=process.env.GOOGLE_OAUTH_CLIENT_SECRET||process.env.GEMINI_OAUTH_CLIENT_SECRET||pe;if(!s){let h=X();if(h)return{provider:"gemini",accessToken:h,subscriptionType:"gemini_advanced",source:"local_import",updatedAt:Date.now(),endpoint:B,extra:{source:"gcloud_cli"}};throw Error(`Google OAuth Client ID is required for interactive browser login.
158
158
  Please set GOOGLE_OAUTH_CLIENT_ID in your environment, authenticate via gcloud:
159
159
  gcloud auth application-default login
160
160
  or set ANTIGRAVITY_TOKEN / GEMINI_OAUTH_TOKEN.`)}let i="https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/cclog https://www.googleapis.com/auth/experimentsandconfigs openid",{codeVerifier:a,codeChallenge:c,state:f}=r(),p;try{p=await n({timeoutMs:120000});let h=`https://accounts.google.com/o/oauth2/v2/auth?client_id=${encodeURIComponent(s)}&redirect_uri=${encodeURIComponent(p.redirectUri)}&response_type=code&scope=${encodeURIComponent(i)}&code_challenge=${encodeURIComponent(c)}&code_challenge_method=S256&state=${encodeURIComponent(f)}&access_type=offline&prompt=${encodeURIComponent("select_account consent")}`;if(e)e("GOOGLE-AUTH",h);else t(h).catch(()=>{});let _=await p.waitForCallback();if(_.error)throw Error(_.errorDescription||_.error||"Google authorization failed");let x=_.code;if(!x)throw Error("No authorization code returned from Google login redirect.");let b={grant_type:"authorization_code",code:x,redirect_uri:p.redirectUri,client_id:s,code_verifier:a};if(o)b.client_secret=o;let A=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!A.ok){let u=await A.text().catch(()=>"");throw Error(`Google token exchange failed (${A.status}): ${u}`)}let g=await A.json(),y=g.access_token||g.accessToken,k=g.refresh_token||g.refreshToken,T=g.expires_in||3600,w;if(g.id_token)try{let u=g.id_token.split("."),m=u[1];if(u.length>=2&&m)w=JSON.parse(Buffer.from(m,"base64url").toString("utf-8")).email}catch{}return{provider:"gemini",accessToken:y,refreshToken:k,expiresAt:Date.now()+T*1000,email:w,subscriptionType:"gemini_advanced",source:"oauth_login",updatedAt:Date.now(),endpoint:B,extra:{client_id:s,client_secret:o}}}catch(h){if(p)await p.close().catch(()=>{});throw Error(`Google Antigravity / Gemini authorization failed: ${h.message}
@@ -1,3 +1,3 @@
1
- var A={name:"@trydecember/cli",version:"0.4.16",description:"a (so much) better coding agent.",homepage:"https://trydecember.com",repository:{type:"git",url:"git+https://github.com/phasehumans/december.git",directory:"apps/cli"},bugs:{url:"https://github.com/phasehumans/december/issues"},module:"src/index.ts",type:"module",private:!1,author:"Chaitanya Sonawane",license:"MIT",keywords:["december","terminal","agent"],engines:{node:">=18.0.0"},publishConfig:{access:"public"},main:"./dist/december.js",bin:{december:"dist/december.js"},files:["dist","README.md","LICENSE"],scripts:{build:'bun build ./src/index.ts --target=node --minify --splitting --outdir=./dist --entry-naming=december.js --chunk-naming="chunk-[hash].js"',prepublishOnly:"bun run build",typecheck:'NODE_OPTIONS="--max-old-space-size=4096" tsc --noEmit',test:"bun test","test:unit":"bun test test/unit test/*.test.ts","test:integration":"bun test test/integration"},devDependencies:{"@december/agent":"workspace:*","@december/providers":"workspace:*","@december/shared":"workspace:*","@december/tools":"workspace:*","@december/tui":"workspace:*","@types/bun":"latest","fast-glob":"3.3.3",vitest:"^3.0.7",zustand:"5.0.14"},peerDependencies:{typescript:"^5"},dependencies:{}};import c from"node:fs";import r from"node:path";var a=["GEMINI_API_KEY","GOOGLE_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY","GROQ_API_KEY","DEEPSEEK_API_KEY","MISTRAL_API_KEY","TOGETHER_API_KEY","KIMI_API_KEY","MOONSHOT_API_KEY","CEREBRAS_API_KEY","COHERE_API_KEY","DASHSCOPE_API_KEY","FIREWORKS_API_KEY","HF_TOKEN","HUGGINGFACE_API_KEY","HYPERBOLIC_API_KEY","MINIMAX_API_KEY","NVIDIA_API_KEY","PERPLEXITY_API_KEY","SAMBANOVA_API_KEY","SARVAM_API_KEY","STEPFUN_API_KEY","UPSTAGE_API_KEY","TINKER_API_KEY","THINKINGMACHINES_API_KEY","SILICONFLOW_API_KEY","XAI_API_KEY","ZAI_API_KEY","ZHIPUAI_API_KEY","ZHIPU_API_KEY","XIAOMI_API_KEY","MIMO_API_KEY","ABLITERATION_API_KEY","ABLIT_KEY","AGNES_API_KEY","AGNES_AI_KEY","AI_ROUTER_API_KEY","AIROUTER_API_KEY","AIAND_API_KEY","AKI_API_KEY","AKI_IO_KEY","AMBIENT_API_KEY","AURIKO_API_KEY","AURIKO_AI_KEY","BASETEN_API_KEY","BASETEN_CO_KEY","AGENTROUTER_API_KEY","ARCEE_API_KEY","META_API_KEY","MODEL_API_KEY","COPILOT_TOKEN","GITHUB_COPILOT_TOKEN","GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_AUTH_TOKEN","OPENAI_OAUTH_TOKEN","CODEX_TOKEN","OPENAI_CODEX_TOKEN","GEMINI_OAUTH_TOKEN","ANTIGRAVITY_TOKEN","GOOGLE_OAUTH_TOKEN","DECEMBER_TOKEN"];function P(_){let e=_.toUpperCase();if(a.includes(e))return!0;return e.endsWith("_API_KEY")||e.endsWith("_APIKEY")||e.endsWith("_AUTH_TOKEN")||e.endsWith("_OAUTH_TOKEN")}function O(_){let e=[],E=_.split(`
1
+ var A={name:"@trydecember/cli",version:"0.4.17",description:"a (so much) better coding agent.",homepage:"https://trydecember.com",repository:{type:"git",url:"git+https://github.com/phasehumans/december.git",directory:"apps/cli"},bugs:{url:"https://github.com/phasehumans/december/issues"},module:"src/index.ts",type:"module",private:!1,author:"Chaitanya Sonawane",license:"MIT",keywords:["december","terminal","agent"],engines:{node:">=18.0.0"},publishConfig:{access:"public"},main:"./dist/december.js",bin:{december:"dist/december.js"},files:["dist","README.md","LICENSE"],scripts:{build:'bun build ./src/index.ts --target=node --minify --splitting --outdir=./dist --entry-naming=december.js --chunk-naming="chunk-[hash].js"',prepublishOnly:"bun run build",typecheck:'NODE_OPTIONS="--max-old-space-size=4096" tsc --noEmit',test:"bun test","test:unit":"bun test test/unit test/*.test.ts","test:integration":"bun test test/integration"},devDependencies:{"@december/agent":"workspace:*","@december/providers":"workspace:*","@december/shared":"workspace:*","@december/tools":"workspace:*","@december/tui":"workspace:*","@types/bun":"latest","fast-glob":"3.3.3",vitest:"^3.0.7",zustand:"5.0.14"},peerDependencies:{typescript:"^5"},dependencies:{}};import c from"node:fs";import r from"node:path";var a=["GEMINI_API_KEY","GOOGLE_API_KEY","OPENAI_API_KEY","ANTHROPIC_API_KEY","OPENROUTER_API_KEY","GROQ_API_KEY","DEEPSEEK_API_KEY","MISTRAL_API_KEY","TOGETHER_API_KEY","KIMI_API_KEY","MOONSHOT_API_KEY","CEREBRAS_API_KEY","COHERE_API_KEY","DASHSCOPE_API_KEY","FIREWORKS_API_KEY","HF_TOKEN","HUGGINGFACE_API_KEY","HYPERBOLIC_API_KEY","MINIMAX_API_KEY","NVIDIA_API_KEY","PERPLEXITY_API_KEY","SAMBANOVA_API_KEY","SARVAM_API_KEY","STEPFUN_API_KEY","UPSTAGE_API_KEY","TINKER_API_KEY","THINKINGMACHINES_API_KEY","SILICONFLOW_API_KEY","XAI_API_KEY","ZAI_API_KEY","ZHIPUAI_API_KEY","ZHIPU_API_KEY","XIAOMI_API_KEY","MIMO_API_KEY","ABLITERATION_API_KEY","ABLIT_KEY","AGNES_API_KEY","AGNES_AI_KEY","AI_ROUTER_API_KEY","AIROUTER_API_KEY","AIAND_API_KEY","AKI_API_KEY","AKI_IO_KEY","AMBIENT_API_KEY","AURIKO_API_KEY","AURIKO_AI_KEY","BASETEN_API_KEY","BASETEN_CO_KEY","AGENTROUTER_API_KEY","ARCEE_API_KEY","META_API_KEY","MODEL_API_KEY","COPILOT_TOKEN","GITHUB_COPILOT_TOKEN","GITHUB_TOKEN","GH_TOKEN","CLAUDE_CODE_OAUTH_TOKEN","ANTHROPIC_AUTH_TOKEN","OPENAI_OAUTH_TOKEN","CODEX_TOKEN","OPENAI_CODEX_TOKEN","GEMINI_OAUTH_TOKEN","ANTIGRAVITY_TOKEN","GOOGLE_OAUTH_TOKEN","DECEMBER_TOKEN"];function P(_){let e=_.toUpperCase();if(a.includes(e))return!0;return e.endsWith("_API_KEY")||e.endsWith("_APIKEY")||e.endsWith("_AUTH_TOKEN")||e.endsWith("_OAUTH_TOKEN")}function O(_){let e=[],E=_.split(`
2
2
  `);for(let t of E){let n=t.trim();if(!n||n.startsWith("#"))continue;let s=(n.startsWith("export ")?n.slice(7).trim():n).match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);if(s&&s[1])e.push(s[1])}return e}function p(_=process.cwd()){let e=[],E=[".env",".env.local",".env.development",".env.development.local",".env.test",".env.test.local",".env.production",".env.production.local",".env.staging"],t=r.resolve(_),n=r.resolve(process.env.HOME||"");while(!0){for(let I of E){let i=r.join(t,I);try{if(c.existsSync(i)&&c.statSync(i).isFile())e.push(i)}catch{}}for(let I of E){let i=r.join(t,".december",I);try{if(c.existsSync(i)&&c.statSync(i).isFile())e.push(i)}catch{}}let o=r.join(t,".git");if(c.existsSync(o))break;let s=r.dirname(t);if(s===t||n&&t===n)break;t=s}return e}function x(_=process.cwd()){let e=p(_),E=[];for(let t of e)try{let n=c.readFileSync(t,"utf-8"),o=O(n);for(let s of o)if(P(s)){if(process.env[s]!==void 0)delete process.env[s],E.push(s)}}catch{}return E}
3
3
  export{A,x};
@@ -1,3 +1,3 @@
1
- import"./chunk-f29e6jpz.js";import"./chunk-pm6vrdbq.js";import"./chunk-f0bms32h.js";import"./chunk-dzg63jm4.js";import"./chunk-z6n9adth.js";import{u}from"./chunk-rzb7f538.js";import{Z}from"./chunk-f7mf3a1w.js";import{spawn as C}from"node:child_process";function R(c,p={}){let{timeoutMs:d=20000,serverReadyDelayMs:S=2500,onData:a,onBackground:k}=p,n="",l=!1,s,y=!1,m=process.platform==="win32",i=C(m?"cmd.exe":"/bin/bash",m?["/d","/s","/c",c]:["-c",c],{cwd:process.cwd(),env:process.env,stdio:["pipe","pipe","pipe"],detached:!m});try{i.stdin?.end?.()}catch{}let o=null,r=null;return{promise:new Promise((g)=>{let f=!1,T=()=>{if(f||l)return;if(l=!0,o)clearTimeout(o);if(r)clearTimeout(r);let e=u.addTask(c,i);if(s=e.id,n)u.appendOutput(e.id,n);if(k)k(e.id);g({output:n,exitCode:0,isBackground:!0,taskId:e.id})},h=(e)=>{if(!l&&!r&&Z.test(e))r=setTimeout(()=>{T()},S)};i.stdout?.on("data",(e)=>{let t=typeof e==="string"?e:e.toString("utf8");if(n+=t,l&&s)u.appendOutput(s,t);else if(a)a(t);h(t)}),i.stderr?.on("data",(e)=>{let t=typeof e==="string"?e:e.toString("utf8");if(n+=t,l&&s)u.appendOutput(s,t);else if(a)a(t);h(t)}),i.on("error",(e)=>{if(f)return;f=!0;let t=`
1
+ import"./chunk-f29e6jpz.js";import"./chunk-pm6vrdbq.js";import"./chunk-r3xqtcj0.js";import"./chunk-vw0a344g.js";import"./chunk-z6n9adth.js";import{u}from"./chunk-rzb7f538.js";import{Z}from"./chunk-nnsdn2kx.js";import{spawn as C}from"node:child_process";function R(c,p={}){let{timeoutMs:d=20000,serverReadyDelayMs:S=2500,onData:a,onBackground:k}=p,n="",l=!1,s,y=!1,m=process.platform==="win32",i=C(m?"cmd.exe":"/bin/bash",m?["/d","/s","/c",c]:["-c",c],{cwd:process.cwd(),env:process.env,stdio:["pipe","pipe","pipe"],detached:!m});try{i.stdin?.end?.()}catch{}let o=null,r=null;return{promise:new Promise((g)=>{let f=!1,T=()=>{if(f||l)return;if(l=!0,o)clearTimeout(o);if(r)clearTimeout(r);let e=u.addTask(c,i);if(s=e.id,n)u.appendOutput(e.id,n);if(k)k(e.id);g({output:n,exitCode:0,isBackground:!0,taskId:e.id})},h=(e)=>{if(!l&&!r&&Z.test(e))r=setTimeout(()=>{T()},S)};i.stdout?.on("data",(e)=>{let t=typeof e==="string"?e:e.toString("utf8");if(n+=t,l&&s)u.appendOutput(s,t);else if(a)a(t);h(t)}),i.stderr?.on("data",(e)=>{let t=typeof e==="string"?e:e.toString("utf8");if(n+=t,l&&s)u.appendOutput(s,t);else if(a)a(t);h(t)}),i.on("error",(e)=>{if(f)return;f=!0;let t=`
2
2
  Failed to start process: ${e?.message||e}
3
3
  `;if(n+=t,a)a(t);if(o)clearTimeout(o);if(r)clearTimeout(r);g({output:n,exitCode:1,isBackground:l,taskId:s})});let D=(e)=>{if(f)return;if(f=!0,o)clearTimeout(o);if(r)clearTimeout(r);let t=y?130:e??0;if(l&&s)u.markCompleted(s,t);else g({output:n,exitCode:t,isBackground:!1})};if(i.on("close",D),i.on("exit",(e)=>{setTimeout(()=>D(e),50)}),d>0&&d<1/0)o=setTimeout(()=>{T()},d)}),abort:()=>{if(y=!0,o)clearTimeout(o);if(r)clearTimeout(r);if(l&&s)u.killTask(s);else try{if(i.pid)if(process.platform!=="win32")process.kill(-i.pid,"SIGINT");else i.kill("SIGINT");else i.kill()}catch{try{i.kill()}catch{}}},child:i}}async function b(c,p={}){let{promise:d}=R(c,p);return d}b.start=R;export{R as startDirectCommand};
@@ -1 +1 @@
1
- import"./chunk-f29e6jpz.js";import{p,S,_e,Se,xe,oe,Te,ae}from"./chunk-f0bms32h.js";import"./chunk-hx3vcz8k.js";import"./chunk-0x66zzs3.js";import{v}from"./chunk-b9mkrg3w.js";import"./chunk-w8v2c87g.js";function d(i,n){return typeof i==="object"&&i!==null?{...i,id:n}:i}function f(i,n,e){let a=(i||"").toLowerCase().trim();switch(a){case"copilot":case"github_copilot":case"github":{let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription,c=s?async()=>{try{let t=await v("copilot",s);if(t?.accessToken)return s.accessToken=t.accessToken,s.expiresAt=t.expiresAt,s.endpoint=t.endpoint,t.accessToken}catch{}return s.accessToken}:void 0;return xe(n,{endpoint:r,headers:e?.headers,getToken:c})}case"codex":case"chatgpt":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription?.extra?.accountId;return Te(n,{endpoint:r,accountId:s,headers:e?.headers})}if(e?.baseURL||e?.headers)return p(e?.baseURL,n,e?.headers);return p(void 0,n)}case"openai":{if(e?.baseURL||e?.headers)return p(e?.baseURL,n,e?.headers);return p(void 0,n)}case"antigravity":{let r=e?.subscription,s=r?async()=>{try{let c=await v("gemini",r);if(c?.accessToken)return r.accessToken=c.accessToken,r.expiresAt=c.expiresAt,r.endpoint=c.endpoint,c.accessToken}catch{}return r.accessToken}:void 0;return oe(n,{endpoint:e?.baseURL,headers:e?.headers,getToken:s})}case"claude":case"anthropic":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint;return S(r,n,{...e?.headers,"anthropic-beta":"claude-code-20250219,oauth-2024-06-20"})}if(e?.baseURL||e?.headers)return S(e?.baseURL,n,e?.headers);return S(void 0,n)}case"gemini":case"google":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription,c=s?async()=>{try{let t=await v("gemini",s);if(t?.accessToken)return s.accessToken=t.accessToken,s.expiresAt=t.expiresAt,s.endpoint=t.endpoint,t.accessToken}catch{}return s.accessToken}:void 0;return oe(n,{endpoint:r,headers:e?.headers,getToken:c})}return _e(n)}case"openrouter":return Se(n);case"kimi":return d(S("https://api.kimi.com/coding",n),"kimi");case"thinkingmachines":case"tinker":case"inkling":return d(S("https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api",n,{"anthropic-beta":"oauth-2024-11-18"}),"thinkingmachines");default:{let r=ae(a);if(r){let t=r.defaultHeaders||e?.headers?{...r.defaultHeaders,...e?.headers}:void 0,o=e?.baseURL||r.baseURL,u=n||(r.envVar?process.env[r.envVar]:void 0);return d(t!==void 0?p(o,u,t):p(o,u),a)}let c=`${(process.env.SERVER_URL||(process.env.SERVER_PORT?`http://localhost:${process.env.SERVER_PORT}`:"https://api.trydecember.com")).replace(/\/+$/,"")}/api/v1/cli`;return p(c,n)}}}export{f as instantiateProvider};
1
+ import"./chunk-f29e6jpz.js";import{p,S,_e,Se,xe,oe,Te,ae}from"./chunk-r3xqtcj0.js";import"./chunk-xmvf453q.js";import"./chunk-2v3whmk6.js";import{v}from"./chunk-91d1p189.js";import"./chunk-w8v2c87g.js";function d(i,n){return typeof i==="object"&&i!==null?{...i,id:n}:i}function f(i,n,e){let a=(i||"").toLowerCase().trim();switch(a){case"copilot":case"github_copilot":case"github":{let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription,c=s?async()=>{try{let t=await v("copilot",s);if(t?.accessToken)return s.accessToken=t.accessToken,s.expiresAt=t.expiresAt,s.endpoint=t.endpoint,t.accessToken}catch{}return s.accessToken}:void 0;return xe(n,{endpoint:r,headers:e?.headers,getToken:c})}case"codex":case"chatgpt":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription?.extra?.accountId;return Te(n,{endpoint:r,accountId:s,headers:e?.headers})}if(e?.baseURL||e?.headers)return p(e?.baseURL,n,e?.headers);return p(void 0,n)}case"openai":{if(e?.baseURL||e?.headers)return p(e?.baseURL,n,e?.headers);return p(void 0,n)}case"antigravity":{let r=e?.subscription,s=r?async()=>{try{let c=await v("gemini",r);if(c?.accessToken)return r.accessToken=c.accessToken,r.expiresAt=c.expiresAt,r.endpoint=c.endpoint,c.accessToken}catch{}return r.accessToken}:void 0;return oe(n,{endpoint:e?.baseURL,headers:e?.headers,getToken:s})}case"claude":case"anthropic":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint;return S(r,n,{...e?.headers,"anthropic-beta":"claude-code-20250219,oauth-2024-06-20"})}if(e?.baseURL||e?.headers)return S(e?.baseURL,n,e?.headers);return S(void 0,n)}case"gemini":case"google":{if(e?.authMethod==="subscription"||e?.subscription){let r=e?.baseURL||e?.subscription?.endpoint,s=e?.subscription,c=s?async()=>{try{let t=await v("gemini",s);if(t?.accessToken)return s.accessToken=t.accessToken,s.expiresAt=t.expiresAt,s.endpoint=t.endpoint,t.accessToken}catch{}return s.accessToken}:void 0;return oe(n,{endpoint:r,headers:e?.headers,getToken:c})}return _e(n)}case"openrouter":return Se(n);case"kimi":return d(S("https://api.kimi.com/coding",n),"kimi");case"thinkingmachines":case"tinker":case"inkling":return d(S("https://tinker.thinkingmachines.dev/services/tinker-prod/anthropic/api",n,{"anthropic-beta":"oauth-2024-11-18"}),"thinkingmachines");default:{let r=ae(a);if(r){let t=r.defaultHeaders||e?.headers?{...r.defaultHeaders,...e?.headers}:void 0,o=e?.baseURL||r.baseURL,u=n||(r.envVar?process.env[r.envVar]:void 0);return d(t!==void 0?p(o,u,t):p(o,u),a)}let c=`${(process.env.SERVER_URL||(process.env.SERVER_PORT?`http://localhost:${process.env.SERVER_PORT}`:"https://api.trydecember.com")).replace(/\/+$/,"")}/api/v1/cli`;return p(c,n)}}}export{f as instantiateProvider};
@@ -0,0 +1 @@
1
+ import{Ue,Z,nt}from"./chunk-nnsdn2kx.js";import"./chunk-rzb7f538.js";import"./chunk-z6n9adth.js";import"./chunk-vw0a344g.js";import"./chunk-r3xqtcj0.js";import"./chunk-pm6vrdbq.js";import"./chunk-f29e6jpz.js";export{Z as SERVER_READY_REGEX,nt as localOperations,Ue as setActiveScopeDir};
@@ -1 +1 @@
1
- import{P,Ye,je,v,Ze,Xe,et}from"./chunk-b9mkrg3w.js";import"./chunk-w8v2c87g.js";import"./chunk-0x66zzs3.js";import"./chunk-hx3vcz8k.js";import"./chunk-f0bms32h.js";import"./chunk-f29e6jpz.js";export{Ye as detectAllSubscriptions,Ze as forceRefreshSubscription,P as getSubscriptionAdapter,je as importLocalSubscriptions,Xe as loginSubscription,v as resolveSubscriptionToken,et as verifyAndResolveSubscription};
1
+ import{P,Ye,je,v,Ze,Xe,et}from"./chunk-91d1p189.js";import"./chunk-w8v2c87g.js";import"./chunk-2v3whmk6.js";import"./chunk-xmvf453q.js";import"./chunk-r3xqtcj0.js";import"./chunk-f29e6jpz.js";export{Ye as detectAllSubscriptions,Ze as forceRefreshSubscription,P as getSubscriptionAdapter,je as importLocalSubscriptions,Xe as loginSubscription,v as resolveSubscriptionToken,et as verifyAndResolveSubscription};
@@ -1,2 +1,2 @@
1
- import{l,d}from"./chunk-0x66zzs3.js";import p from"node:https";var u=14400000;function h(t,s){let e=t.replace(/^v/,""),c=s.replace(/^v/,""),n=e.split(".").map((o)=>Number(o)||0),r=c.split(".").map((o)=>Number(o)||0);for(let o=0;o<Math.max(n.length,r.length);o++){let a=n[o]??0,i=r[o]??0;if(i>a)return!0;if(a>i)return!1}return!1}async function lt(t,s){try{let e=await l(),c=Date.now();if(!s?.bypassCache&&e.versionCheckCache){let{latestVersion:r,checkedAt:o}=e.versionCheckCache;if(c-o<u){if(r&&h(t,r))return r;return null}}let n=await re();if(n){if(e.versionCheckCache={latestVersion:n,checkedAt:c},await d(e).catch(()=>{}),h(t,n))return n}}catch{}return null}function re(){return new Promise((t)=>{let s=p.get("https://registry.npmjs.org/@trydecember/cli/latest",{timeout:5000},(e)=>{if(e.statusCode!==200){t(null);return}let c="";e.on("data",(n)=>{c+=n}),e.on("end",()=>{try{let r=JSON.parse(c).version;if(r&&typeof r==="string")t(r);else t(null)}catch{t(null)}})});s.on("error",()=>t(null)),s.on("timeout",()=>{s.destroy(),t(null)})})}async function ne(){try{let t=await l();if(t.versionCheckCache)delete t.versionCheckCache,await d(t)}catch{}}
1
+ import{l,d}from"./chunk-2v3whmk6.js";import p from"node:https";var u=14400000;function h(t,s){let e=t.replace(/^v/,""),c=s.replace(/^v/,""),n=e.split(".").map((o)=>Number(o)||0),r=c.split(".").map((o)=>Number(o)||0);for(let o=0;o<Math.max(n.length,r.length);o++){let a=n[o]??0,i=r[o]??0;if(i>a)return!0;if(a>i)return!1}return!1}async function lt(t,s){try{let e=await l(),c=Date.now();if(!s?.bypassCache&&e.versionCheckCache){let{latestVersion:r,checkedAt:o}=e.versionCheckCache;if(c-o<u){if(r&&h(t,r))return r;return null}}let n=await re();if(n){if(e.versionCheckCache={latestVersion:n,checkedAt:c},await d(e).catch(()=>{}),h(t,n))return n}}catch{}return null}function re(){return new Promise((t)=>{let s=p.get("https://registry.npmjs.org/@trydecember/cli/latest",{timeout:5000},(e)=>{if(e.statusCode!==200){t(null);return}let c="";e.on("data",(n)=>{c+=n}),e.on("end",()=>{try{let r=JSON.parse(c).version;if(r&&typeof r==="string")t(r);else t(null)}catch{t(null)}})});s.on("error",()=>t(null)),s.on("timeout",()=>{s.destroy(),t(null)})})}async function ne(){try{let t=await l();if(t.versionCheckCache)delete t.versionCheckCache,await d(t)}catch{}}
2
2
  export{lt,re,ne};
@@ -1,4 +1,4 @@
1
- import{Y,ce}from"./chunk-f29e6jpz.js";import{I,ke}from"./chunk-pm6vrdbq.js";import{X}from"./chunk-dzg63jm4.js";import{Ae}from"./chunk-z6n9adth.js";import{u}from"./chunk-rzb7f538.js";import{a}from"./chunk-dszyjkp3.js";import{exec as H,spawn as D,spawnSync as U}from"node:child_process";import G from"node:fs";import E from"node:fs/promises";import f from"node:path";import P from"node:readline";import{promisify as J}from"node:util";var W=a(Ae(),1);var gt=J(H),mt=ke(),M;function Ue(t){M=t}function b(){if(M)return f.resolve(process.cwd(),M);return process.cwd()}var Z=/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\]):\d+|listening on (?:port |http)|ready in \d+(?:\.\d+)?\s*(?:m?s)|ready on http|local:\s+http:\/\//i,K=20000,V=2500,A;function N(){if(A!==void 0)return A;try{let{status:t}=U("rg",["--version"],{stdio:"ignore"});A=t===0}catch{A=!1}return Boolean(A)}var C=1000;function Q(t,e,r,o){return new Promise((s,d)=>{let g=["--files","--hidden"];if(e){if(g.push("-g",e),!e.endsWith("/")&&!e.endsWith("*"))g.push("-g",`${e}/**`)}for(let n of r){if(n.includes("!"))continue;g.push("-g",`!${n}`)}g.push(t);let m;try{m=D("rg",g,{cwd:o,stdio:["ignore","pipe","pipe"]})}catch(n){return d(n)}let T=P.createInterface({input:m.stdout,crlfDelay:1/0}),i=[],c=!1;T.on("line",(n)=>{let l=n.trim();if(!l)return;let h=f.isAbsolute(l)?f.relative(o,l):l;if(i.push(h),i.length>=C&&!c)c=!0,m.kill(),s(i.join(`
1
+ import{Y,ce}from"./chunk-f29e6jpz.js";import{I,ke}from"./chunk-pm6vrdbq.js";import{X}from"./chunk-vw0a344g.js";import{Ae}from"./chunk-z6n9adth.js";import{u}from"./chunk-rzb7f538.js";import{a}from"./chunk-dszyjkp3.js";import{exec as H,spawn as D,spawnSync as U}from"node:child_process";import G from"node:fs";import E from"node:fs/promises";import f from"node:path";import P from"node:readline";import{promisify as J}from"node:util";var W=a(Ae(),1);var gt=J(H),mt=ke(),M;function Ue(t){M=t}function b(){if(M)return f.resolve(process.cwd(),M);return process.cwd()}var Z=/(?:localhost|127\.0\.0\.1|0\.0\.0\.0|\[::1\]):\d+|listening on (?:port |http)|ready in \d+(?:\.\d+)?\s*(?:m?s)|ready on http|local:\s+http:\/\//i,K=20000,V=2500,A;function N(){if(A!==void 0)return A;try{let{status:t}=U("rg",["--version"],{stdio:"ignore"});A=t===0}catch{A=!1}return Boolean(A)}var C=1000;function Q(t,e,r,o){return new Promise((s,d)=>{let g=["--files","--hidden"];if(e){if(g.push("-g",e),!e.endsWith("/")&&!e.endsWith("*"))g.push("-g",`${e}/**`)}for(let n of r){if(n.includes("!"))continue;g.push("-g",`!${n}`)}g.push(t);let m;try{m=D("rg",g,{cwd:o,stdio:["ignore","pipe","pipe"]})}catch(n){return d(n)}let T=P.createInterface({input:m.stdout,crlfDelay:1/0}),i=[],c=!1;T.on("line",(n)=>{let l=n.trim();if(!l)return;let h=f.isAbsolute(l)?f.relative(o,l):l;if(i.push(h),i.length>=C&&!c)c=!0,m.kill(),s(i.join(`
2
2
  `))});let p="";m.stderr?.on("data",(n)=>{p+=n.toString()}),m.on("error",(n)=>{if(!c)c=!0,d(n)}),m.on("close",(n)=>{if(!c)if(c=!0,n===0||n===1)s(i.join(`
3
3
  `));else d(Error(p.trim()||`rg exited with code ${n}`))})})}function z(t,e,r,o){return new Promise((s,d)=>{let g=["-n","-H","--no-heading","--color=never","--hidden","-i"];for(let n of r){if(n.includes("!"))continue;g.push("-g",`!${n}`)}g.push("-e",e,t);let m;try{m=D("rg",g,{cwd:o,stdio:["ignore","pipe","pipe"]})}catch(n){return d(n)}let T=P.createInterface({input:m.stdout,crlfDelay:1/0}),i=[],c=!1;T.on("line",(n)=>{let l=n.trim();if(!l)return;let h=l.indexOf(":");if(h!==-1){let w=l.slice(0,h),x=l.slice(h),L=f.isAbsolute(w)?f.relative(o,w):w;i.push(L+x)}else i.push(l);if(i.length>=C&&!c)c=!0,m.kill(),s(i.join(`
4
4
  `))});let p="";m.stderr?.on("data",(n)=>{p+=n.toString()}),m.on("error",(n)=>{if(!c)c=!0,d(n)}),m.on("close",(n)=>{if(!c)if(c=!0,n===0||n===1)s(i.join(`
@@ -9,5 +9,5 @@ import{Y,ce}from"./chunk-f29e6jpz.js";import{I,ke}from"./chunk-pm6vrdbq.js";impo
9
9
  `));else d(Error(`grep exited with code ${w}`))}),p.on("error",(w)=>{if(!h)h=!0,d(w)})}catch(p){d(p)}})})}var nt={bash:{exec:async(t,e,r={})=>{let o=typeof e==="string"?e:b(),s=typeof e==="function"?{onData:e,...r}:r??{},d=s.waitMsBeforeAsync??K,g=s.serverReadyDelayMs??V;return new Promise((m,T)=>{let i=D(t,{cwd:o,detached:process.platform!=="win32",env:s.env??process.env,shell:!0,stdio:["pipe","pipe","pipe"]}),c="",p=!1,n=!1,l,h=()=>{if(p||n)return;n=!0;let y=u.addTask(t,i);if(l=y.id,c)u.appendOutput(y.id,c);p=!0,m({exitCode:null,output:c,taskId:y.id})},w,x=(y)=>{if(!n&&!w&&Z.test(y))w=setTimeout(()=>{h()},g)},L=(y)=>{let v=typeof y==="string"?y:y.toString();if(c+=v,n&&l)u.appendOutput(l,v);else if(!p&&s.onData)s.onData(v);x(v)};i.stdout?.on("data",L),i.stderr?.on("data",L);let _;if(s.timeout)_=setTimeout(()=>{if(i.pid)I(i.pid);if(n&&l)u.killTask(l);else try{i.kill("SIGKILL")}catch{}},s.timeout*1000);let F=()=>{if(i.pid)I(i.pid);if(n&&l)u.killTask(l);else try{i.kill("SIGKILL")}catch{}};if(s.signal)if(s.signal.aborted)F();else s.signal.addEventListener("abort",F,{once:!0});let B=d>0&&d<1/0?setTimeout(()=>{h()},d):void 0,O=()=>{if(w)clearTimeout(w);if(B)clearTimeout(B);if(_)clearTimeout(_);if(s.signal)s.signal.removeEventListener("abort",F)},j=(y)=>{if(O(),n&&l)u.markCompleted(l,y);if(!p)p=!0,m({exitCode:y,output:c})};i.on("close",j),i.on("exit",(y)=>{setTimeout(()=>j(y),50)}),i.on("error",(y)=>{if(O(),n&&l)u.markCompleted(l,1);if(!p){p=!0;let v=`
10
10
  Failed to start process: ${y?.message||y}
11
11
  `;c+=v,m({exitCode:1,output:c})}})})},getTaskStatus:async(t)=>{let e=u.getTask(t);if(!e)return{status:"failed",output:"Task not found"};return{status:e.status,output:e.output}},killTask:async(t)=>u.killTask(t)},fs:{readFile:async(t)=>{let e=b(),r=f.isAbsolute(t)?t:f.resolve(e,t);return E.readFile(r,"utf8")},writeFile:async(t,e)=>{let r=b(),o=f.isAbsolute(t)?t:f.resolve(r,t);await E.mkdir(f.dirname(o),{recursive:!0}),await E.writeFile(o,e,"utf8")},readdir:async(t)=>{let e=b(),r=f.isAbsolute(t)?t:f.resolve(e,t),o=await E.readdir(r,{withFileTypes:!0}),s=Y(e);return o.filter((d)=>!ce(d.name,s)).map((d)=>`[${d.isDirectory()?"DIR ":"FILE"}] ${d.name}`)},mkdir:async(t,e)=>{let r=b(),o=f.isAbsolute(t)?t:f.resolve(r,t);await E.mkdir(o,e)},exists:async(t)=>{let e=b(),r=f.isAbsolute(t)?t:f.resolve(e,t);try{return await E.access(r),!0}catch{return!1}}},search:{find:async(t,e)=>{let r=b(),o=f.isAbsolute(t)?t:f.resolve(r,t),s=Y(r);if(N())try{return await Q(o,e,s,r)}catch(g){if(g.code==="ENOENT")throw g}return(await W.default([e],{cwd:o,ignore:s,dot:!0})).join(`
12
- `)},grep:async(t,e)=>{let r=b(),o=f.isAbsolute(t)?t:f.resolve(r,t),s=Y(r);if(N())return await z(o,e,s,r);return await q(o,e,s,r)}},env:{cwd:()=>b(),get:(t)=>process.env[t],setCwd:(t)=>{if(t===process.cwd())Ue(void 0);else Ue(t)}},ui:{askQuestion:async()=>{throw Error("Not implemented here")},reviewArtifact:async()=>({action:"proceed"}),requestPermission:async()=>({block:!1})},browser:{navigate:async(t)=>{let{browserRunner:e}=await import("./chunk-jjfhy2x1.js");return e.navigate(t)},action:async(t)=>{let{browserRunner:e}=await import("./chunk-jjfhy2x1.js");return e.action(t)},close:async()=>{let{browserRunner:t}=await import("./chunk-jjfhy2x1.js");return t.close()}},diagnostics:{getDiagnostics:async(t)=>{let e=await R();if(!e)return[];return e.getDiagnostics(t)}},lsp:{getDefinition:async(t,e,r)=>{let o=await R();if(!o)return[];return o.getDefinition(t,e,r)},getReferences:async(t,e,r)=>{let o=await R();if(!o)return[];return o.getReferences(t,e,r)},getOutline:async(t)=>{let e=await R();if(!e)return[];return e.getOutline(t)},getDiagnostics:async(t)=>{let e=await R();if(!e)return[];return e.getDiagnostics(t)},shutdown:async()=>{if(k)await k.shutdown(),k=null,S=null}},subagentTracker:{registerSubagentTask:(t)=>u.addSubagentTask(t),appendOutput:(t,e)=>u.appendOutput(t,e),markCompleted:(t,e)=>u.markCompleted(t,e),getTask:(t)=>u.getTask(t),killTask:(t)=>u.killTask(t)}},k=null,S=null;function tt(t){return G.existsSync(f.join(t,"tsconfig.json"))||G.existsSync(f.join(t,"package.json"))}async function R(t){let e=t||b();if(k&&S===e)return k;if(!tt(e))return null;if(k){try{await k.shutdown()}catch{}k=null,S=null}let r=new X({workspaceRoot:e});k=r,S=e;try{await r.start()}catch{return k=null,S=null,null}return k}process.on("exit",()=>{if(k)try{k.shutdown()}catch{}});
12
+ `)},grep:async(t,e)=>{let r=b(),o=f.isAbsolute(t)?t:f.resolve(r,t),s=Y(r);if(N())return await z(o,e,s,r);return await q(o,e,s,r)}},env:{cwd:()=>b(),get:(t)=>process.env[t],setCwd:(t)=>{if(t===process.cwd())Ue(void 0);else Ue(t)}},ui:{askQuestion:async()=>{throw Error("Not implemented here")},reviewArtifact:async()=>({action:"proceed"}),requestPermission:async()=>({block:!1})},browser:{navigate:async(t)=>{let{browserRunner:e}=await import("./chunk-2kmt1zgn.js");return e.navigate(t)},action:async(t)=>{let{browserRunner:e}=await import("./chunk-2kmt1zgn.js");return e.action(t)},close:async()=>{let{browserRunner:t}=await import("./chunk-2kmt1zgn.js");return t.close()}},diagnostics:{getDiagnostics:async(t)=>{let e=await R();if(!e)return[];return e.getDiagnostics(t)}},lsp:{getDefinition:async(t,e,r)=>{let o=await R();if(!o)return[];return o.getDefinition(t,e,r)},getReferences:async(t,e,r)=>{let o=await R();if(!o)return[];return o.getReferences(t,e,r)},getOutline:async(t)=>{let e=await R();if(!e)return[];return e.getOutline(t)},getDiagnostics:async(t)=>{let e=await R();if(!e)return[];return e.getDiagnostics(t)},shutdown:async()=>{if(k)await k.shutdown(),k=null,S=null}},subagentTracker:{registerSubagentTask:(t)=>u.addSubagentTask(t),appendOutput:(t,e)=>u.appendOutput(t,e),markCompleted:(t,e)=>u.markCompleted(t,e),getTask:(t)=>u.getTask(t),killTask:(t)=>u.killTask(t)}},k=null,S=null;function tt(t){return G.existsSync(f.join(t,"tsconfig.json"))||G.existsSync(f.join(t,"package.json"))}async function R(t){let e=t||b();if(k&&S===e)return k;if(!tt(e))return null;if(k){try{await k.shutdown()}catch{}k=null,S=null}let r=new X({workspaceRoot:e});k=r,S=e;try{await r.start()}catch{return k=null,S=null,null}return k}process.on("exit",()=>{if(k)try{k.shutdown()}catch{}});
13
13
  export{Ue,Z,nt};
@@ -1,4 +1,4 @@
1
- import"./chunk-f29e6jpz.js";import"./chunk-f0bms32h.js";import"./chunk-hx3vcz8k.js";import{l,d}from"./chunk-0x66zzs3.js";import{execSync as L}from"node:child_process";import u from"node:fs";import E from"node:os";import t from"node:path";import b from"node:readline";function P(r=process.cwd()){let s=t.resolve(r);try{let o=L("git rev-parse --show-toplevel",{cwd:s,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim();if(o&&u.existsSync(o))return t.resolve(o)}catch{}let e=s,p=t.resolve(E.homedir());while(!0){if(u.existsSync(t.join(e,".git")))return e;let o=t.dirname(e);if(o===e||e===p)break;e=o}return s}function B(r){let s=t.resolve(E.homedir()),e=t.resolve(r);if(e===s)return"~";if(e.startsWith(s+t.sep))return"~"+e.slice(s.length);return e}function I(r,s){let e=t.resolve(r);try{if(u.existsSync(e))e=u.realpathSync(e)}catch{}let p=t.resolve(E.homedir()),o=(s.trustedWorkspaces||[]).map((n)=>{let c=t.resolve(n);try{return u.existsSync(c)?u.realpathSync(c):c}catch{return c}});for(let n of o){if(e===n)return!0;if(n!=="/"&&n!==p){let c=t.relative(n,e);if(!c.startsWith("..")&&!t.isAbsolute(c))return!0}}return!1}async function N(r){let s=await l(),e=t.resolve(r);try{if(u.existsSync(e))e=u.realpathSync(e)}catch{}let p=(s.trustedWorkspaces||[]).map((o)=>{let n=t.resolve(o);try{return u.existsSync(n)?u.realpathSync(n):n}catch{return n}});if(!p.includes(e))s.trustedWorkspaces=[...p,e],await d(s)}async function M(r){if(!process.stdin.isTTY)return!1;let s=t.resolve(E.homedir()),e=r===s||r==="/",p=B(r),o="\x1B[38;2;137;180;248m",n=o,c="\x1B[38;2;244;244;245m",W="\x1B[38;2;161;161;170m",D="\x1B[38;2;253;224;71m",k="\x1B[1m",m="\x1B[0m",g=e?[{label:"Cancel",value:!1},{label:"Trust and continue anyway",value:!0}]:[{label:"Trust and continue",value:!0},{label:"Cancel",value:!1}];return console.clear(),new Promise((x)=>{let v=0,T=0,C=process.stdin.isRaw;if(typeof process.stdin.setRawMode==="function")process.stdin.setRawMode(!0);process.stdin.resume(),b.emitKeypressEvents(process.stdin);let w=()=>{if(process.stdin.removeListener("keypress",S),typeof process.stdin.setRawMode==="function"&&!C)process.stdin.setRawMode(!1);process.stdin.pause(),process.stdout.write("\x1B[?25h")},y=()=>{if(T>0)b.cursorTo(process.stdout,0),b.moveCursor(process.stdout,0,-(T-1)),b.clearScreenDown(process.stdout)},R=()=>{y();let i=[];if(i.push(""),i.push(` ${k}${c}Trust workspace:${m} ${o}${p}${m}`),e)i.push(` ${D}Warning: Home or root directory gives access to all personal files.${m}`);i.push("");for(let f=0;f<g.length;f++){let h=g[f];if(f===v)i.push(` ${n}❭${m} ${k}${c}${h.label}${m}`);else i.push(` ${W}${h.label}${m}`)}i.push(""),i.push(` ${W}Enter confirm · Esc cancel${m}`),i.push(""),T=i.length,process.stdout.write(i.join(`
1
+ import"./chunk-f29e6jpz.js";import"./chunk-r3xqtcj0.js";import"./chunk-xmvf453q.js";import{l,d}from"./chunk-2v3whmk6.js";import{execSync as L}from"node:child_process";import u from"node:fs";import E from"node:os";import t from"node:path";import b from"node:readline";function P(r=process.cwd()){let s=t.resolve(r);try{let o=L("git rev-parse --show-toplevel",{cwd:s,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim();if(o&&u.existsSync(o))return t.resolve(o)}catch{}let e=s,p=t.resolve(E.homedir());while(!0){if(u.existsSync(t.join(e,".git")))return e;let o=t.dirname(e);if(o===e||e===p)break;e=o}return s}function B(r){let s=t.resolve(E.homedir()),e=t.resolve(r);if(e===s)return"~";if(e.startsWith(s+t.sep))return"~"+e.slice(s.length);return e}function I(r,s){let e=t.resolve(r);try{if(u.existsSync(e))e=u.realpathSync(e)}catch{}let p=t.resolve(E.homedir()),o=(s.trustedWorkspaces||[]).map((n)=>{let c=t.resolve(n);try{return u.existsSync(c)?u.realpathSync(c):c}catch{return c}});for(let n of o){if(e===n)return!0;if(n!=="/"&&n!==p){let c=t.relative(n,e);if(!c.startsWith("..")&&!t.isAbsolute(c))return!0}}return!1}async function N(r){let s=await l(),e=t.resolve(r);try{if(u.existsSync(e))e=u.realpathSync(e)}catch{}let p=(s.trustedWorkspaces||[]).map((o)=>{let n=t.resolve(o);try{return u.existsSync(n)?u.realpathSync(n):n}catch{return n}});if(!p.includes(e))s.trustedWorkspaces=[...p,e],await d(s)}async function M(r){if(!process.stdin.isTTY)return!1;let s=t.resolve(E.homedir()),e=r===s||r==="/",p=B(r),o="\x1B[38;2;137;180;248m",n=o,c="\x1B[38;2;244;244;245m",W="\x1B[38;2;161;161;170m",D="\x1B[38;2;253;224;71m",k="\x1B[1m",m="\x1B[0m",g=e?[{label:"Cancel",value:!1},{label:"Trust and continue anyway",value:!0}]:[{label:"Trust and continue",value:!0},{label:"Cancel",value:!1}];return console.clear(),new Promise((x)=>{let v=0,T=0,C=process.stdin.isRaw;if(typeof process.stdin.setRawMode==="function")process.stdin.setRawMode(!0);process.stdin.resume(),b.emitKeypressEvents(process.stdin);let w=()=>{if(process.stdin.removeListener("keypress",S),typeof process.stdin.setRawMode==="function"&&!C)process.stdin.setRawMode(!1);process.stdin.pause(),process.stdout.write("\x1B[?25h")},y=()=>{if(T>0)b.cursorTo(process.stdout,0),b.moveCursor(process.stdout,0,-(T-1)),b.clearScreenDown(process.stdout)},R=()=>{y();let i=[];if(i.push(""),i.push(` ${k}${c}Trust workspace:${m} ${o}${p}${m}`),e)i.push(` ${D}Warning: Home or root directory gives access to all personal files.${m}`);i.push("");for(let f=0;f<g.length;f++){let h=g[f];if(f===v)i.push(` ${n}❭${m} ${k}${c}${h.label}${m}`);else i.push(` ${W}${h.label}${m}`)}i.push(""),i.push(` ${W}Enter confirm · Esc cancel${m}`),i.push(""),T=i.length,process.stdout.write(i.join(`
2
2
  `))},S=(i,f)=>{if(!f&&!i)return;let h=(i||"").toLowerCase(),a=f?.name;if(h==="t"||h==="y"){w(),y(),x(!0);return}if(h==="c"||h==="n"){w(),y(),x(!1);return}if(a==="up"||a==="k")v=Math.max(0,v-1),R();else if(a==="down"||a==="j"||a==="tab")v=Math.min(g.length-1,v+1),R();else if(a==="return"||a==="enter"||a==="space")w(),y(),x(g[v].value);else if(a==="escape"||f?.ctrl&&a==="c")w(),y(),x(!1)};process.stdout.write("\x1B[?25l"),process.stdin.on("keypress",S),R()})}async function U(r={}){let s=P(r.targetDir||process.cwd()),e=await l();if(I(s,e))return;if(Boolean(r.isHeadless)||!process.stdin.isTTY||Boolean(process.env.NON_INTERACTIVE)||Boolean(process.env.CI))console.error(`
3
3
  \x1B[38;2;252;165;165mError:\x1B[0m Workspace "${s}" is not trusted.`),console.error(`Please run "december" interactively first to review and trust this workspace.
4
4
  `),process.exit(1);if(!await M(s))console.log(`