aicommit2 2.4.19 → 2.4.20

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 (2) hide show
  1. package/dist/cli.mjs +2 -2
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{command as ne,cli as hs}from"cleye";import{createRequire as gs}from"module";import ys from"crypto";import W from"fs";import ke from"os";import S from"path";import{Buffer as br}from"node:buffer";import ce from"node:path";import vt,{ChildProcess as Er,exec as ws}from"node:child_process";import te from"node:process";import vs,{execSync as Ue,exec as Cs}from"child_process";import{fileURLToPath as Pr}from"node:url";import bs,{constants as $r}from"node:os";import Ar from"assert";import xr from"events";import{createWriteStream as Es,createReadStream as Ps,readFileSync as $s}from"node:fs";import As from"buffer";import Ct from"stream";import kr,{promisify as xs}from"util";import{debuglog as ks,promisify as Ss}from"node:util";import ze from"inquirer";import C from"chalk";import{of as bt,concatMap as j,from as R,map as D,catchError as F,mergeMap as Sr,BehaviorSubject as Mr,ReplaySubject as Ms,Subscription as Et,lastValueFrom as Ir,filter as Rr,toArray as Dr,Subject as Pt}from"rxjs";import Is from"@anthropic-ai/sdk";import{fromPromise as T}from"rxjs/internal/observable/innerFrom";import{xxh64 as Or}from"@pacote/xxhash";import H from"winston";import O from"fs/promises";import"winston-daily-rotate-file";import Rs from"axios";import{CohereClientV2 as Ds}from"cohere-ai";import Fr from"openai";import{GoogleGenerativeAI as Os,HarmCategory as We,HarmBlockThreshold as Ye}from"@google/generative-ai";import Fs from"http";import Ls from"https";import js from"net";import Ts from"tls";import Ns,{fileURLToPath as _s,pathToFileURL as Gs}from"url";import Lr from"tty";import Bs from"groq-sdk";import{Ollama as Hs}from"ollama";import{fetch as Us,Agent as zs}from"undici";import Ke from"readline";import jr from"figlet";import Ws from"gradient-string";import Tr from"ora";import Ys from"inquirer-reactive-list-prompt";import{readdir as Nr,stat as Ks,rm as Js}from"node:fs/promises";import Vs from"chokidar";import{takeUntil as _r,finalize as Gr}from"rxjs/operators";var qs="aicommit2",Br="2.4.19",Xs="A Reactive CLI that generates commit messages for Git and Jujutsu with various AI",Qs=["cli","ai","git","jujutsu","jj","vcs","version-control","commit","git-commit","jujutsu-commit","command-line","commandline","aipick","aicommit","aicommits","aicommit2","openai","huggingface","anthropic","claude","claude3","gemini","gemini-pro","generative-ai","mistral","ollama","llama3","llama3.2","llama3.3","gemma","llm","chatgpt","cohere","groq","codestral","perplexity","deepseek","deepseek-r1","pre-commit"],Zs="MIT",en="tak-bro/aicommit2",tn="Hyungtak Jin(@tak-bro)",rn="module",on=["dist"],sn={aicommit2:"./dist/cli.mjs",aic2:"./dist/cli.mjs"},nn={prepare:"simple-git-hooks",build:"pkgroll --minify",lint:"eslint --cache .","type-check":"tsc",test:"tsx tests",prepack:"pnpm build && clean-pkg-json",prettier:"prettier"},an={"@anthropic-ai/sdk":"^0.39.0","@dqbd/tiktoken":"^1.0.21","@google/generative-ai":"^0.24.1","@inquirer/prompts":"^3.3.2","@pacote/xxhash":"^0.3.2","@types/winston":"^2.4.4",axios:"^1.9.0",chalk:"^5.4.1",chokidar:"^4.0.3",cleye:"^1.3.4","cohere-ai":"^7.19.0","copy-paste":"^1.5.3",figlet:"^1.8.1","formdata-node":"^6.0.3","gradient-string":"^3.0.0","groq-sdk":"^0.7.0",inquirer:"9.2.8","inquirer-reactive-list-prompt":"^1.0.16",ollama:"^0.5.15",openai:"^6.3.0",ora:"^8.2.0",readline:"^1.3.0",rxjs:"^7.8.2",undici:"^7.10.0",uuid:"^9.0.1",winston:"^3.17.0","winston-daily-rotate-file":"^5.0.0"},cn={"@pvtnbr/eslint-config":"^0.33.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^12.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^10.3.5","@semantic-release/npm":"^12.0.1","@semantic-release/release-notes-generator":"^13.0.0","@types/figlet":"^1.7.0","@types/ini":"^1.3.34","@types/inquirer":"^9.0.8","@types/node":"^18.19.103","@types/uuid":"^9.0.8","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","clean-pkg-json":"^1.3.0","conventional-changelog-conventionalcommits":"^7.0.2","conventional-commits-parser":"^5.0.0",eslint:"^8.57.1","eslint-config-prettier":"^8.10.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-jsonc":"^2.20.1","eslint-plugin-no-use-extend-native":"^0.5.0","eslint-plugin-promise":"^6.6.0","eslint-plugin-unicorn":"^49.0.0","eslint-plugin-unused-imports":"^3.2.0",execa:"^7.2.0","fs-fixture":"^1.2.0","https-proxy-agent":"^5.0.1",ini:"^3.0.1","lint-staged":"^13.3.0",manten:"^0.7.0",pkgroll:"^1.11.1",prettier:"^3.5.3","semantic-release":"^23.1.1","simple-git-hooks":"^2.13.0",tsx:"^3.14.0",typescript:"^4.9.5","undici-types":"^7.10.0"},ln={extends:["@pvtnbr","prettier"],rules:{"unicorn/no-process-exit":"off"},overrides:[{files:"./src/commands/prepare-commit-msg-hook.ts",rules:{"unicorn/prevent-abbreviations":"off"}}]},un={branches:["main"],plugins:[["@semantic-release/commit-analyzer",{preset:"conventionalcommits",releaseRules:[{type:"refactor",release:"patch"},{type:"chore",release:"patch"},{type:"feat",release:"patch"},{scope:"major",release:"major"},{scope:"minor",release:"minor"},{scope:"patch",release:"patch"}]}],"@semantic-release/release-notes-generator",["@semantic-release/changelog",{changelogFile:"CHANGELOG.md"}],"@semantic-release/github",["@semantic-release/git",{assets:["CHANGELOG.md"],message:"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/npm"]},dn={name:qs,version:Br,description:Xs,keywords:Qs,license:Zs,repository:en,author:tn,type:rn,files:on,bin:sn,scripts:nn,"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*.ts":["prettier --config ./.prettierrc --write","eslint --fix"]},dependencies:an,devDependencies:cn,eslintConfig:ln,release:un},mn=gs(import.meta.url),B=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function me(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var fe={exports:{}},$t,Hr;function fn(){if(Hr)return $t;Hr=1,$t=o,o.sync=s;var r=W;function e(n,i){var l=i.pathExt!==void 0?i.pathExt:process.env.PATHEXT;if(!l||(l=l.split(";"),l.indexOf("")!==-1))return!0;for(var a=0;a<l.length;a++){var d=l[a].toLowerCase();if(d&&n.substr(-d.length).toLowerCase()===d)return!0}return!1}function t(n,i,l){return!n.isSymbolicLink()&&!n.isFile()?!1:e(i,l)}function o(n,i,l){r.stat(n,function(a,d){l(a,a?!1:t(d,n,i))})}function s(n,i){return t(r.statSync(n),n,i)}return $t}var At,Ur;function pn(){if(Ur)return At;Ur=1,At=e,e.sync=t;var r=W;function e(n,i,l){r.stat(n,function(a,d){l(a,a?!1:o(d,i))})}function t(n,i){return o(r.statSync(n),i)}function o(n,i){return n.isFile()&&s(n,i)}function s(n,i){var l=n.mode,a=n.uid,d=n.gid,c=i.uid!==void 0?i.uid:process.getuid&&process.getuid(),u=i.gid!==void 0?i.gid:process.getgid&&process.getgid(),m=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),g=m|p,y=l&h||l&p&&d===u||l&m&&a===c||l&g&&c===0;return y}return At}var Je;process.platform==="win32"||B.TESTING_WINDOWS?Je=fn():Je=pn();var hn=xt;xt.sync=gn;function xt(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,s){xt(r,e||{},function(n,i){n?s(n):o(i)})})}Je(r,e||{},function(o,s){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,s=!1),t(o,s)})}function gn(r,e){try{return Je.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}const pe=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",zr=S,yn=pe?";":":",Wr=hn,Yr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Kr=(r,e)=>{const t=e.colon||yn,o=r.match(/\//)||pe&&r.match(/\\/)?[""]:[...pe?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],s=pe?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=pe?s.split(t):[""];return pe&&r.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:s}},Jr=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});const{pathEnv:o,pathExt:s,pathExtExe:n}=Kr(r,e),i=[],l=d=>new Promise((c,u)=>{if(d===o.length)return e.all&&i.length?c(i):u(Yr(r));const m=o[d],p=/^".*"$/.test(m)?m.slice(1,-1):m,h=zr.join(p,r),g=!p&&/^\.[\\\/]/.test(r)?r.slice(0,2)+h:h;c(a(g,d,0))}),a=(d,c,u)=>new Promise((m,p)=>{if(u===s.length)return m(l(c+1));const h=s[u];Wr(d+h,{pathExt:n},(g,y)=>{if(!g&&y)if(e.all)i.push(d+h);else return m(d+h);return m(a(d,c,u+1))})});return t?l(0).then(d=>t(null,d),t):l(0)},wn=(r,e)=>{e=e||{};const{pathEnv:t,pathExt:o,pathExtExe:s}=Kr(r,e),n=[];for(let i=0;i<t.length;i++){const l=t[i],a=/^".*"$/.test(l)?l.slice(1,-1):l,d=zr.join(a,r),c=!a&&/^\.[\\\/]/.test(r)?r.slice(0,2)+d:d;for(let u=0;u<o.length;u++){const m=c+o[u];try{if(Wr.sync(m,{pathExt:s}))if(e.all)n.push(m);else return m}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw Yr(r)};var vn=Jr;Jr.sync=wn;var kt={exports:{}};const Vr=(r={})=>{const e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};kt.exports=Vr,kt.exports.default=Vr;var Cn=kt.exports;const qr=S,bn=vn,En=Cn;function Xr(r,e){const t=r.options.env||process.env,o=process.cwd(),s=r.options.cwd!=null,n=s&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(r.options.cwd)}catch{}let i;try{i=bn.sync(r.command,{path:t[En({env:t})],pathExt:e?qr.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return i&&(i=qr.resolve(s?r.options.cwd:"",i)),i}function Pn(r){return Xr(r)||Xr(r,!0)}var $n=Pn,St={};const Mt=/([()\][%!^"`<>&|;, *?])/g;function An(r){return r=r.replace(Mt,"^$1"),r}function xn(r,e){return r=`${r}`,r=r.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),r=r.replace(/(?=(\\+?)?)\1$/,"$1$1"),r=`"${r}"`,r=r.replace(Mt,"^$1"),e&&(r=r.replace(Mt,"^$1")),r}St.command=An,St.argument=xn;var kn=/^#!(.*)/;const Sn=kn;var Mn=(r="")=>{const e=r.match(Sn);if(!e)return null;const[t,o]=e[0].replace(/#! ?/,"").split(" "),s=t.split("/").pop();return s==="env"?o:o?`${s} ${o}`:s};const It=W,In=Mn;function Rn(r){const t=Buffer.alloc(150);let o;try{o=It.openSync(r,"r"),It.readSync(o,t,0,150,0),It.closeSync(o)}catch{}return In(t.toString())}var Dn=Rn;const On=S,Qr=$n,Zr=St,Fn=Dn,Ln=process.platform==="win32",jn=/\.(?:com|exe)$/i,Tn=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Nn(r){r.file=Qr(r);const e=r.file&&Fn(r.file);return e?(r.args.unshift(r.file),r.command=e,Qr(r)):r.file}function _n(r){if(!Ln)return r;const e=Nn(r),t=!jn.test(e);if(r.options.forceShell||t){const o=Tn.test(e);r.command=On.normalize(r.command),r.command=Zr.command(r.command),r.args=r.args.map(n=>Zr.argument(n,o));const s=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${s}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Gn(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);const o={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?o:_n(o)}var Bn=Gn;const Rt=process.platform==="win32";function Dt(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Hn(r,e){if(!Rt)return;const t=r.emit;r.emit=function(o,s){if(o==="exit"){const n=eo(s,e);if(n)return t.call(r,"error",n)}return t.apply(r,arguments)}}function eo(r,e){return Rt&&r===1&&!e.file?Dt(e.original,"spawn"):null}function Un(r,e){return Rt&&r===1&&!e.file?Dt(e.original,"spawnSync"):null}var zn={hookChildProcess:Hn,verifyENOENT:eo,verifyENOENTSync:Un,notFoundError:Dt};const to=vs,Ot=Bn,Ft=zn;function ro(r,e,t){const o=Ot(r,e,t),s=to.spawn(o.command,o.args,o.options);return Ft.hookChildProcess(s,o),s}function Wn(r,e,t){const o=Ot(r,e,t),s=to.spawnSync(o.command,o.args,o.options);return s.error=s.error||Ft.verifyENOENTSync(s.status,o),s}fe.exports=ro,fe.exports.spawn=ro,fe.exports.sync=Wn,fe.exports._parse=Ot,fe.exports._enoent=Ft;var Yn=fe.exports,Kn=me(Yn);function Jn(r){const e=typeof r=="string"?`
2
+ import{command as ne,cli as hs}from"cleye";import{createRequire as gs}from"module";import ys from"crypto";import W from"fs";import ke from"os";import S from"path";import{Buffer as br}from"node:buffer";import ce from"node:path";import vt,{ChildProcess as Er,exec as ws}from"node:child_process";import te from"node:process";import vs,{execSync as Ue,exec as Cs}from"child_process";import{fileURLToPath as Pr}from"node:url";import bs,{constants as $r}from"node:os";import Ar from"assert";import xr from"events";import{createWriteStream as Es,createReadStream as Ps,readFileSync as $s}from"node:fs";import As from"buffer";import Ct from"stream";import kr,{promisify as xs}from"util";import{debuglog as ks,promisify as Ss}from"node:util";import ze from"inquirer";import C from"chalk";import{of as bt,concatMap as j,from as R,map as D,catchError as F,mergeMap as Sr,BehaviorSubject as Mr,ReplaySubject as Ms,Subscription as Et,lastValueFrom as Ir,filter as Rr,toArray as Dr,Subject as Pt}from"rxjs";import Is from"@anthropic-ai/sdk";import{fromPromise as T}from"rxjs/internal/observable/innerFrom";import{xxh64 as Or}from"@pacote/xxhash";import H from"winston";import O from"fs/promises";import"winston-daily-rotate-file";import Rs from"axios";import{CohereClientV2 as Ds}from"cohere-ai";import Fr from"openai";import{GoogleGenerativeAI as Os,HarmCategory as We,HarmBlockThreshold as Ye}from"@google/generative-ai";import Fs from"http";import Ls from"https";import js from"net";import Ts from"tls";import Ns,{fileURLToPath as _s,pathToFileURL as Gs}from"url";import Lr from"tty";import Bs from"groq-sdk";import{Ollama as Hs}from"ollama";import{fetch as Us,Agent as zs}from"undici";import Ke from"readline";import jr from"figlet";import Ws from"gradient-string";import Tr from"ora";import Ys from"inquirer-reactive-list-prompt";import{readdir as Nr,stat as Ks,rm as Js}from"node:fs/promises";import Vs from"chokidar";import{takeUntil as _r,finalize as Gr}from"rxjs/operators";var qs="aicommit2",Br="2.4.20",Xs="A Reactive CLI that generates commit messages for Git and Jujutsu with various AI",Qs=["cli","ai","git","jujutsu","jj","vcs","version-control","commit","git-commit","jujutsu-commit","command-line","commandline","aipick","aicommit","aicommits","aicommit2","openai","huggingface","anthropic","claude","claude3","gemini","gemini-pro","generative-ai","mistral","ollama","llama3","llama3.2","llama3.3","gemma","llm","chatgpt","cohere","groq","codestral","perplexity","deepseek","deepseek-r1","pre-commit"],Zs="MIT",en="tak-bro/aicommit2",tn="Hyungtak Jin(@tak-bro)",rn="module",on=["dist"],sn={aicommit2:"./dist/cli.mjs",aic2:"./dist/cli.mjs"},nn={prepare:"simple-git-hooks",build:"pkgroll --minify",lint:"eslint --cache .","type-check":"tsc",test:"tsx tests",prepack:"pnpm build && clean-pkg-json",prettier:"prettier"},an={"@anthropic-ai/sdk":"^0.39.0","@dqbd/tiktoken":"^1.0.21","@google/generative-ai":"^0.24.1","@inquirer/prompts":"^3.3.2","@pacote/xxhash":"^0.3.2","@types/winston":"^2.4.4",axios:"^1.9.0",chalk:"^5.4.1",chokidar:"^4.0.3",cleye:"^1.3.4","cohere-ai":"^7.19.0","copy-paste":"^1.5.3",figlet:"^1.8.1","formdata-node":"^6.0.3","gradient-string":"^3.0.0","groq-sdk":"^0.7.0",inquirer:"9.2.8","inquirer-reactive-list-prompt":"^1.0.16",ollama:"^0.5.15",openai:"^6.3.0",ora:"^8.2.0",readline:"^1.3.0",rxjs:"^7.8.2",undici:"^7.10.0",uuid:"^9.0.1",winston:"^3.17.0","winston-daily-rotate-file":"^5.0.0"},cn={"@pvtnbr/eslint-config":"^0.33.0","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^12.0.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^10.3.5","@semantic-release/npm":"^12.0.1","@semantic-release/release-notes-generator":"^13.0.0","@types/figlet":"^1.7.0","@types/ini":"^1.3.34","@types/inquirer":"^9.0.8","@types/node":"^18.19.103","@types/uuid":"^9.0.8","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","clean-pkg-json":"^1.3.0","conventional-changelog-conventionalcommits":"^7.0.2","conventional-commits-parser":"^5.0.0",eslint:"^8.57.1","eslint-config-prettier":"^8.10.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-import":"^2.31.0","eslint-plugin-jsonc":"^2.20.1","eslint-plugin-no-use-extend-native":"^0.5.0","eslint-plugin-promise":"^6.6.0","eslint-plugin-unicorn":"^49.0.0","eslint-plugin-unused-imports":"^3.2.0",execa:"^7.2.0","fs-fixture":"^1.2.0","https-proxy-agent":"^5.0.1",ini:"^3.0.1","lint-staged":"^13.3.0",manten:"^0.7.0",pkgroll:"^1.11.1",prettier:"^3.5.3","semantic-release":"^23.1.1","simple-git-hooks":"^2.13.0",tsx:"^3.14.0",typescript:"^4.9.5","undici-types":"^7.10.0"},ln={extends:["@pvtnbr","prettier"],rules:{"unicorn/no-process-exit":"off"},overrides:[{files:"./src/commands/prepare-commit-msg-hook.ts",rules:{"unicorn/prevent-abbreviations":"off"}}]},un={branches:["main"],plugins:[["@semantic-release/commit-analyzer",{preset:"conventionalcommits",releaseRules:[{type:"refactor",release:"patch"},{type:"chore",release:"patch"},{type:"feat",release:"patch"},{scope:"major",release:"major"},{scope:"minor",release:"minor"},{scope:"patch",release:"patch"}]}],"@semantic-release/release-notes-generator",["@semantic-release/changelog",{changelogFile:"CHANGELOG.md"}],"@semantic-release/github",["@semantic-release/git",{assets:["CHANGELOG.md"],message:"chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"}],"@semantic-release/npm"]},dn={name:qs,version:Br,description:Xs,keywords:Qs,license:Zs,repository:en,author:tn,type:rn,files:on,bin:sn,scripts:nn,"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*.ts":["prettier --config ./.prettierrc --write","eslint --fix"]},dependencies:an,devDependencies:cn,eslintConfig:ln,release:un},mn=gs(import.meta.url),B=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function me(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var fe={exports:{}},$t,Hr;function fn(){if(Hr)return $t;Hr=1,$t=o,o.sync=s;var r=W;function e(n,i){var l=i.pathExt!==void 0?i.pathExt:process.env.PATHEXT;if(!l||(l=l.split(";"),l.indexOf("")!==-1))return!0;for(var a=0;a<l.length;a++){var d=l[a].toLowerCase();if(d&&n.substr(-d.length).toLowerCase()===d)return!0}return!1}function t(n,i,l){return!n.isSymbolicLink()&&!n.isFile()?!1:e(i,l)}function o(n,i,l){r.stat(n,function(a,d){l(a,a?!1:t(d,n,i))})}function s(n,i){return t(r.statSync(n),n,i)}return $t}var At,Ur;function pn(){if(Ur)return At;Ur=1,At=e,e.sync=t;var r=W;function e(n,i,l){r.stat(n,function(a,d){l(a,a?!1:o(d,i))})}function t(n,i){return o(r.statSync(n),i)}function o(n,i){return n.isFile()&&s(n,i)}function s(n,i){var l=n.mode,a=n.uid,d=n.gid,c=i.uid!==void 0?i.uid:process.getuid&&process.getuid(),u=i.gid!==void 0?i.gid:process.getgid&&process.getgid(),m=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),g=m|p,y=l&h||l&p&&d===u||l&m&&a===c||l&g&&c===0;return y}return At}var Je;process.platform==="win32"||B.TESTING_WINDOWS?Je=fn():Je=pn();var hn=xt;xt.sync=gn;function xt(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,s){xt(r,e||{},function(n,i){n?s(n):o(i)})})}Je(r,e||{},function(o,s){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,s=!1),t(o,s)})}function gn(r,e){try{return Je.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}const pe=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",zr=S,yn=pe?";":":",Wr=hn,Yr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Kr=(r,e)=>{const t=e.colon||yn,o=r.match(/\//)||pe&&r.match(/\\/)?[""]:[...pe?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],s=pe?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=pe?s.split(t):[""];return pe&&r.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:s}},Jr=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});const{pathEnv:o,pathExt:s,pathExtExe:n}=Kr(r,e),i=[],l=d=>new Promise((c,u)=>{if(d===o.length)return e.all&&i.length?c(i):u(Yr(r));const m=o[d],p=/^".*"$/.test(m)?m.slice(1,-1):m,h=zr.join(p,r),g=!p&&/^\.[\\\/]/.test(r)?r.slice(0,2)+h:h;c(a(g,d,0))}),a=(d,c,u)=>new Promise((m,p)=>{if(u===s.length)return m(l(c+1));const h=s[u];Wr(d+h,{pathExt:n},(g,y)=>{if(!g&&y)if(e.all)i.push(d+h);else return m(d+h);return m(a(d,c,u+1))})});return t?l(0).then(d=>t(null,d),t):l(0)},wn=(r,e)=>{e=e||{};const{pathEnv:t,pathExt:o,pathExtExe:s}=Kr(r,e),n=[];for(let i=0;i<t.length;i++){const l=t[i],a=/^".*"$/.test(l)?l.slice(1,-1):l,d=zr.join(a,r),c=!a&&/^\.[\\\/]/.test(r)?r.slice(0,2)+d:d;for(let u=0;u<o.length;u++){const m=c+o[u];try{if(Wr.sync(m,{pathExt:s}))if(e.all)n.push(m);else return m}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw Yr(r)};var vn=Jr;Jr.sync=wn;var kt={exports:{}};const Vr=(r={})=>{const e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};kt.exports=Vr,kt.exports.default=Vr;var Cn=kt.exports;const qr=S,bn=vn,En=Cn;function Xr(r,e){const t=r.options.env||process.env,o=process.cwd(),s=r.options.cwd!=null,n=s&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(r.options.cwd)}catch{}let i;try{i=bn.sync(r.command,{path:t[En({env:t})],pathExt:e?qr.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return i&&(i=qr.resolve(s?r.options.cwd:"",i)),i}function Pn(r){return Xr(r)||Xr(r,!0)}var $n=Pn,St={};const Mt=/([()\][%!^"`<>&|;, *?])/g;function An(r){return r=r.replace(Mt,"^$1"),r}function xn(r,e){return r=`${r}`,r=r.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),r=r.replace(/(?=(\\+?)?)\1$/,"$1$1"),r=`"${r}"`,r=r.replace(Mt,"^$1"),e&&(r=r.replace(Mt,"^$1")),r}St.command=An,St.argument=xn;var kn=/^#!(.*)/;const Sn=kn;var Mn=(r="")=>{const e=r.match(Sn);if(!e)return null;const[t,o]=e[0].replace(/#! ?/,"").split(" "),s=t.split("/").pop();return s==="env"?o:o?`${s} ${o}`:s};const It=W,In=Mn;function Rn(r){const t=Buffer.alloc(150);let o;try{o=It.openSync(r,"r"),It.readSync(o,t,0,150,0),It.closeSync(o)}catch{}return In(t.toString())}var Dn=Rn;const On=S,Qr=$n,Zr=St,Fn=Dn,Ln=process.platform==="win32",jn=/\.(?:com|exe)$/i,Tn=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Nn(r){r.file=Qr(r);const e=r.file&&Fn(r.file);return e?(r.args.unshift(r.file),r.command=e,Qr(r)):r.file}function _n(r){if(!Ln)return r;const e=Nn(r),t=!jn.test(e);if(r.options.forceShell||t){const o=Tn.test(e);r.command=On.normalize(r.command),r.command=Zr.command(r.command),r.args=r.args.map(n=>Zr.argument(n,o));const s=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${s}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Gn(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);const o={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?o:_n(o)}var Bn=Gn;const Rt=process.platform==="win32";function Dt(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Hn(r,e){if(!Rt)return;const t=r.emit;r.emit=function(o,s){if(o==="exit"){const n=eo(s,e);if(n)return t.call(r,"error",n)}return t.apply(r,arguments)}}function eo(r,e){return Rt&&r===1&&!e.file?Dt(e.original,"spawn"):null}function Un(r,e){return Rt&&r===1&&!e.file?Dt(e.original,"spawnSync"):null}var zn={hookChildProcess:Hn,verifyENOENT:eo,verifyENOENTSync:Un,notFoundError:Dt};const to=vs,Ot=Bn,Ft=zn;function ro(r,e,t){const o=Ot(r,e,t),s=to.spawn(o.command,o.args,o.options);return Ft.hookChildProcess(s,o),s}function Wn(r,e,t){const o=Ot(r,e,t),s=to.spawnSync(o.command,o.args,o.options);return s.error=s.error||Ft.verifyENOENTSync(s.status,o),s}fe.exports=ro,fe.exports.spawn=ro,fe.exports.sync=Wn,fe.exports._parse=Ot,fe.exports._enoent=Ft;var Yn=fe.exports,Kn=me(Yn);function Jn(r){const e=typeof r=="string"?`
3
3
  `:`
4
4
  `.charCodeAt(),t=typeof r=="string"?"\r":"\r".charCodeAt();return r[r.length-1]===e&&(r=r.slice(0,-1)),r[r.length-1]===t&&(r=r.slice(0,-1)),r}function oo(r={}){const{env:e=process.env,platform:t=process.platform}=r;return t!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"}const Vn=({cwd:r=te.cwd(),path:e=te.env[oo()],preferLocal:t=!0,execPath:o=te.execPath,addExecPath:s=!0}={})=>{const n=r instanceof URL?Pr(r):r,i=ce.resolve(n),l=[];return t&&qn(l,i),s&&Xn(l,o,i),[...l,e].join(ce.delimiter)},qn=(r,e)=>{let t;for(;t!==e;)r.push(ce.join(e,"node_modules/.bin")),t=e,e=ce.resolve(e,"..")},Xn=(r,e,t)=>{const o=e instanceof URL?Pr(e):e;r.push(ce.resolve(t,o,".."))},Qn=({env:r=te.env,...e}={})=>{r={...r};const t=oo({env:r});return e.path=r[t],r[t]=Vn(e),r},Zn=(r,e,t,o)=>{if(t==="length"||t==="prototype"||t==="arguments"||t==="caller")return;const s=Object.getOwnPropertyDescriptor(r,t),n=Object.getOwnPropertyDescriptor(e,t);!ei(s,n)&&o||Object.defineProperty(r,t,n)},ei=function(r,e){return r===void 0||r.configurable||r.writable===e.writable&&r.enumerable===e.enumerable&&r.configurable===e.configurable&&(r.writable||r.value===e.value)},ti=(r,e)=>{const t=Object.getPrototypeOf(e);t!==Object.getPrototypeOf(r)&&Object.setPrototypeOf(r,t)},ri=(r,e)=>`/* Wrapped ${r}*/
5
5
  ${e}`,oi=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),si=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),ni=(r,e,t)=>{const o=t===""?"":`with ${t.trim()}() `,s=ri.bind(null,o,e.toString());Object.defineProperty(s,"name",si),Object.defineProperty(r,"toString",{...oi,value:s})};function ii(r,e,{ignoreNonConfigurable:t=!1}={}){const{name:o}=r;for(const s of Reflect.ownKeys(e))Zn(r,e,s,t);return ti(r,e),ni(r,e,o),r}const Ve=new WeakMap,so=(r,e={})=>{if(typeof r!="function")throw new TypeError("Expected a function");let t,o=0;const s=r.displayName||r.name||"<anonymous>",n=function(...i){if(Ve.set(n,++o),o===1)t=r.apply(this,i),r=null;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return t};return ii(n,r),Ve.set(n,o),n};so.callCount=r=>{if(!Ve.has(r))throw new Error(`The given function \`${r.name}\` is not wrapped by the \`onetime\` package`);return Ve.get(r)};const ai=()=>{const r=io-no+1;return Array.from({length:r},ci)},ci=(r,e)=>({name:`SIGRT${e+1}`,number:no+e,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),no=34,io=64,li=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}],ao=()=>{const r=ai();return[...li,...r].map(ui)},ui=({name:r,number:e,description:t,action:o,forced:s=!1,standard:n})=>{const{signals:{[r]:i}}=$r,l=i!==void 0;return{name:r,number:l?i:e,description:t,supported:l,action:o,forced:s,standard:n}},di=()=>{const r=ao();return Object.fromEntries(r.map(mi))},mi=({name:r,number:e,description:t,supported:o,action:s,forced:n,standard:i})=>[r,{name:r,number:e,description:t,supported:o,action:s,forced:n,standard:i}],fi=di(),pi=()=>{const r=ao(),e=io+1,t=Array.from({length:e},(o,s)=>hi(s,r));return Object.assign({},...t)},hi=(r,e)=>{const t=gi(r,e);if(t===void 0)return{};const{name:o,description:s,supported:n,action:i,forced:l,standard:a}=t;return{[r]:{name:o,number:r,description:s,supported:n,action:i,forced:l,standard:a}}},gi=(r,e)=>{const t=e.find(({name:o})=>$r.signals[o]===r);return t!==void 0?t:e.find(o=>o.number===r)};pi();const yi=({timedOut:r,timeout:e,errorCode:t,signal:o,signalDescription:s,exitCode:n,isCanceled:i})=>r?`timed out after ${e} milliseconds`:i?"was canceled":t!==void 0?`failed with ${t}`:o!==void 0?`was killed with ${o} (${s})`:n!==void 0?`failed with exit code ${n}`:"failed",qe=({stdout:r,stderr:e,all:t,error:o,signal:s,exitCode:n,command:i,escapedCommand:l,timedOut:a,isCanceled:d,killed:c,parsed:{options:{timeout:u,cwd:m=te.cwd()}}})=>{n=n===null?void 0:n,s=s===null?void 0:s;const p=s===void 0?void 0:fi[s].description,h=o&&o.code,y=`Command ${yi({timedOut:a,timeout:u,errorCode:h,signal:s,signalDescription:p,exitCode:n,isCanceled:d})}: ${i}`,v=Object.prototype.toString.call(o)==="[object Error]",b=v?`${y}
@@ -77,7 +77,7 @@ Focus on understanding the purpose and impact of these changes to create meaning
77
77
 
78
78
  ${a}`),l.statusCode===500&&(d+=`
79
79
 
80
- Check the API status: ${r}`),new w(d)}return JSON.parse(a)},es=r=>r.trim(),kc=["gpt-5","gpt-5-mini","gpt-5-nano","gpt-5-codex","o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"],lr=r=>{const e=r.toLowerCase();return kc.some(t=>e===t||e.startsWith(`${t}-`))},Sc=async(r,e,t,o,s,n,i,l,a,d,c,u,m,p)=>{try{const h=Ee(n,m),g=lr(s),y={model:s,messages:[{role:"system",content:c},{role:"user",content:h}],stream:!1,n:1,frequency_penalty:0,presence_penalty:0,...g?{max_completion_tokens:l,temperature:1}:{max_tokens:l,top_p:d,temperature:a}},v=new URL(e),b=`${v.protocol}//${v.host}${t}`,E={Authorization:`Bearer ${o}`,"Content-Type":"application/json"};V(n,m,r,s,b,E,u),q(n,m,r,c,h,u),oe(n,m,r,y,u);const x=Date.now(),A=await xc(e,t,o,y,i,p),P=Date.now()-x;X(n,m,r,A,u);const $=A.choices.filter(k=>k.message?.content).map(k=>es(k.message.content)).join();return Y(n,m,r,P,$,u),A.choices.filter(k=>k.message?.content).map(k=>es(k.message.content))}catch(h){G(n,m,r,h,u);const g=h;throw g.code==="ENOTFOUND"?new w(`Error connecting to ${g.hostname} (${g.syscall})`):g}};class Mc extends Q{constructor(e){super(e),this.params=e,this.baseURL="https://models.github.ai",this.colors={primary:"#24292e",secondary:"#FFF"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[GitHub Models]"),this.errorPrefix=C.red.bold("[GitHub Models]")}getServiceSpecificErrorMessage(e){switch(e.code){case"MISSING_TOKEN":return"GitHub token is required. Run: aicommit2 github-login";case"AUTHENTICATION_FAILED":return"Authentication failed. Your GitHub token may be expired or invalid. Run: aicommit2 github-login";case"ACCESS_DENIED":return'Access denied. Make sure your GitHub token has "Models" permission in GitHub settings';case"NO_CONTENT":return"No content received from GitHub Models. The model may have failed to generate a response";default:return null}}generateCommitMessage$(){return T(this.generateMessage("commit")).pipe(j(e=>R(e)),D(e=>({name:`${this.serviceName} ${e.title}`,short:e.title,value:this.params.config.includeBody?e.value:e.title,description:this.params.config.includeBody?e.value:"",isError:!1})),F(this.handleError$))}generateCodeReview$(){return T(this.generateMessage("review")).pipe(j(e=>R(e)),D(e=>({name:`${this.serviceName} ${e.title}`,short:e.title,value:e.value,description:e.value,isError:!1})),F(this.handleError$))}async generateMessage(e){if(!this.params.config.key){const p=new Error("GitHub token is required for GitHub Models. Use: aicommit2 github-login");throw p.code="MISSING_TOKEN",p}const t=this.params.stagedDiff.diff,{systemPrompt:o,systemPromptPath:s,codeReviewPromptPath:n,locale:i,generate:l,type:a,maxLength:d}=this.params.config,c={...K,locale:i,maxLength:d,type:a,generate:l,systemPrompt:o,systemPromptPath:s,codeReviewPromptPath:n},u=e==="review"?ee(c):Z(c),m=await this.makeRequest(u,t,e);return e==="review"?this.sanitizeResponse(m):this.parseMessage(m,a,l)}async makeRequest(e,t,o){const s=Array.isArray(this.params.config.model)?this.params.config.model[0]:this.params.config.model||"gpt-4o-mini",n=[{role:"system",content:e},{role:"user",content:o==="review"?t:`Here's the diff:
80
+ Check the API status: ${r}`),new w(d)}return JSON.parse(a)},es=r=>r.trim(),kc=["gpt-5","gpt-5-mini","gpt-5-nano","gpt-5-codex","o1","o1-mini","o1-pro","o3","o3-mini","o3-pro","o4-mini"],lr=r=>{const e=r.toLowerCase();return kc.some(t=>e===t||e.startsWith(`${t}-`)||e.startsWith(`${t}.`))},Sc=async(r,e,t,o,s,n,i,l,a,d,c,u,m,p)=>{try{const h=Ee(n,m),g=lr(s),y={model:s,messages:[{role:"system",content:c},{role:"user",content:h}],stream:!1,n:1,frequency_penalty:0,presence_penalty:0,...g?{max_completion_tokens:l,temperature:1}:{max_tokens:l,top_p:d,temperature:a}},v=new URL(e),b=`${v.protocol}//${v.host}${t}`,E={Authorization:`Bearer ${o}`,"Content-Type":"application/json"};V(n,m,r,s,b,E,u),q(n,m,r,c,h,u),oe(n,m,r,y,u);const x=Date.now(),A=await xc(e,t,o,y,i,p),P=Date.now()-x;X(n,m,r,A,u);const $=A.choices.filter(k=>k.message?.content).map(k=>es(k.message.content)).join();return Y(n,m,r,P,$,u),A.choices.filter(k=>k.message?.content).map(k=>es(k.message.content))}catch(h){G(n,m,r,h,u);const g=h;throw g.code==="ENOTFOUND"?new w(`Error connecting to ${g.hostname} (${g.syscall})`):g}};class Mc extends Q{constructor(e){super(e),this.params=e,this.baseURL="https://models.github.ai",this.colors={primary:"#24292e",secondary:"#FFF"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[GitHub Models]"),this.errorPrefix=C.red.bold("[GitHub Models]")}getServiceSpecificErrorMessage(e){switch(e.code){case"MISSING_TOKEN":return"GitHub token is required. Run: aicommit2 github-login";case"AUTHENTICATION_FAILED":return"Authentication failed. Your GitHub token may be expired or invalid. Run: aicommit2 github-login";case"ACCESS_DENIED":return'Access denied. Make sure your GitHub token has "Models" permission in GitHub settings';case"NO_CONTENT":return"No content received from GitHub Models. The model may have failed to generate a response";default:return null}}generateCommitMessage$(){return T(this.generateMessage("commit")).pipe(j(e=>R(e)),D(e=>({name:`${this.serviceName} ${e.title}`,short:e.title,value:this.params.config.includeBody?e.value:e.title,description:this.params.config.includeBody?e.value:"",isError:!1})),F(this.handleError$))}generateCodeReview$(){return T(this.generateMessage("review")).pipe(j(e=>R(e)),D(e=>({name:`${this.serviceName} ${e.title}`,short:e.title,value:e.value,description:e.value,isError:!1})),F(this.handleError$))}async generateMessage(e){if(!this.params.config.key){const p=new Error("GitHub token is required for GitHub Models. Use: aicommit2 github-login");throw p.code="MISSING_TOKEN",p}const t=this.params.stagedDiff.diff,{systemPrompt:o,systemPromptPath:s,codeReviewPromptPath:n,locale:i,generate:l,type:a,maxLength:d}=this.params.config,c={...K,locale:i,maxLength:d,type:a,generate:l,systemPrompt:o,systemPromptPath:s,codeReviewPromptPath:n},u=e==="review"?ee(c):Z(c),m=await this.makeRequest(u,t,e);return e==="review"?this.sanitizeResponse(m):this.parseMessage(m,a,l)}async makeRequest(e,t,o){const s=Array.isArray(this.params.config.model)?this.params.config.model[0]:this.params.config.model||"gpt-4o-mini",n=[{role:"system",content:e},{role:"user",content:o==="review"?t:`Here's the diff:
81
81
 
82
82
  ${t}`}],i=lr(s),l={messages:n,model:s,stream:!1,...i?{max_completion_tokens:this.params.config.maxTokens||1024,temperature:1}:{max_tokens:this.params.config.maxTokens||1024,top_p:this.params.config.topP||.95,temperature:this.params.config.temperature||.7}},a=`${this.baseURL}/inference/chat/completions`,d={"Content-Type":"application/json",Accept:"application/vnd.github+json",Authorization:`Bearer ${this.params.config.key}`},{logging:c}=this.params.config;V(t,o,"GitHub Models",s,a,d,c),q(t,o,"GitHub Models",e,o==="review"?t:`Here's the diff:
83
83
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aicommit2",
3
- "version": "2.4.19",
3
+ "version": "2.4.20",
4
4
  "description": "A Reactive CLI that generates commit messages for Git and Jujutsu with various AI",
5
5
  "keywords": [
6
6
  "cli",