aicommit2 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +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 ce,cli as Ks}from"cleye";import{createRequire as zs}from"module";import Ws from"crypto";import Z from"fs";import Le from"os";import M from"path";import{Buffer as Kr}from"node:buffer";import we from"node:path";import jt,{ChildProcess as zr,exec as Ys}from"node:child_process";import le from"node:process";import Vs,{execSync as rt,exec as qs}from"child_process";import{fileURLToPath as Wr}from"node:url";import Js,{constants as Yr}from"node:os";import Vr from"assert";import qr from"events";import{createWriteStream as Xs,createReadStream as Qs,readFileSync as Zs}from"node:fs";import en from"buffer";import Bt from"stream";import Jr,{promisify as tn}from"util";import{debuglog as rn,promisify as on}from"node:util";import ot from"inquirer";import{of as Xr,concatMap as F,from as N,map as T,catchError as L,tap as Qr,mergeMap as Zr,BehaviorSubject as eo,ReplaySubject as sn,Subscription as Gt,lastValueFrom as Ut,toArray as Ht,filter as to,Subject as Kt}from"rxjs";import D from"fs/promises";import g from"chalk";import ro from"openai";import{fromPromise as j}from"rxjs/internal/observable/innerFrom";import{xxh64 as oo}from"@pacote/xxhash";import K from"winston";import"winston-daily-rotate-file";import nn from"http";import so from"https";import an from"net";import cn from"tls";import ln,{fileURLToPath as un,pathToFileURL as dn}from"url";import no from"tty";import mn from"@anthropic-ai/sdk";import pn from"axios";import{CohereClientV2 as fn}from"cohere-ai";import{GoogleGenerativeAI as hn,HarmCategory as st,HarmBlockThreshold as nt}from"@google/generative-ai";import gn from"groq-sdk";import{Ollama as yn}from"ollama";import{fetch as wn,Agent as vn}from"undici";import it from"readline";import io from"figlet";import Cn from"gradient-string";import ao from"ora";import bn from"inquirer-reactive-list-prompt";import{readdir as co,stat as En,rm as $n}from"node:fs/promises";import Pn from"chokidar";import{takeUntil as lo,finalize as uo}from"rxjs/operators";var An="aicommit2",mo="2.5.0",Sn="A Reactive CLI that generates commit messages for Git and Jujutsu with various AI",kn=["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"],In="MIT",Mn="tak-bro/aicommit2",xn="Hyungtak Jin(@tak-bro)",Rn="module",On=["dist"],Dn={aicommit2:"./dist/cli.mjs",aic2:"./dist/cli.mjs"},_n={prepare:"simple-git-hooks",build:"pkgroll --minify",lint:"eslint --cache .","type-check":"tsc",test:"tsx tests",prepack:"pnpm build && clean-pkg-json",prettier:"prettier"},Nn={"@anthropic-ai/sdk":"^0.39.0","@aws-sdk/client-bedrock-runtime":"^3.678.0","@aws-sdk/credential-providers":"^3.678.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"},Tn={"@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"}}]},Fn={branches:["main"],plugins:[["@semantic-release/commit-analyzer",{preset:"conventionalcommits",releaseRules:[{type:"docs",release:!1},{type:"style",release:!1},{type:"test",release:!1},{type:"ci",release:!1},{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"]},jn={name:An,version:mo,description:Sn,keywords:kn,license:In,repository:Mn,author:xn,type:Rn,files:On,bin:Dn,scripts:_n,"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*.ts":["prettier --config ./.prettierrc --write","eslint --fix"]},dependencies:Nn,devDependencies:Tn,eslintConfig:Ln,release:Fn},Bn=zs(import.meta.url),H=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pe(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ae={exports:{}},zt,po;function Gn(){if(po)return zt;po=1,zt=o,o.sync=s;var t=Z;function e(n,i){var a=i.pathExt!==void 0?i.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var c=0;c<a.length;c++){var d=a[c].toLowerCase();if(d&&n.substr(-d.length).toLowerCase()===d)return!0}return!1}function r(n,i,a){return!n.isSymbolicLink()&&!n.isFile()?!1:e(i,a)}function o(n,i,a){t.stat(n,function(c,d){a(c,c?!1:r(d,n,i))})}function s(n,i){return r(t.statSync(n),n,i)}return zt}var Wt,fo;function Un(){if(fo)return Wt;fo=1,Wt=e,e.sync=r;var t=Z;function e(n,i,a){t.stat(n,function(c,d){a(c,c?!1:o(d,i))})}function r(n,i){return o(t.statSync(n),i)}function o(n,i){return n.isFile()&&s(n,i)}function s(n,i){var a=n.mode,c=n.uid,d=n.gid,l=i.uid!==void 0?i.uid:process.getuid&&process.getuid(),u=i.gid!==void 0?i.gid:process.getgid&&process.getgid(),p=parseInt("100",8),f=parseInt("010",8),h=parseInt("001",8),y=p|f,w=a&h||a&f&&d===u||a&p&&c===l||a&y&&l===0;return w}return Wt}var at;process.platform==="win32"||H.TESTING_WINDOWS?at=Gn():at=Un();var Hn=Yt;Yt.sync=Kn;function Yt(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,s){Yt(t,e||{},function(n,i){n?s(n):o(i)})})}at(t,e||{},function(o,s){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,s=!1),r(o,s)})}function Kn(t,e){try{return at.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}const Se=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ho=M,zn=Se?";":":",go=Hn,yo=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),wo=(t,e)=>{const r=e.colon||zn,o=t.match(/\//)||Se&&t.match(/\\/)?[""]:[...Se?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=Se?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=Se?s.split(r):[""];return Se&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:s}},vo=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});const{pathEnv:o,pathExt:s,pathExtExe:n}=wo(t,e),i=[],a=d=>new Promise((l,u)=>{if(d===o.length)return e.all&&i.length?l(i):u(yo(t));const p=o[d],f=/^".*"$/.test(p)?p.slice(1,-1):p,h=ho.join(f,t),y=!f&&/^\.[\\\/]/.test(t)?t.slice(0,2)+h:h;l(c(y,d,0))}),c=(d,l,u)=>new Promise((p,f)=>{if(u===s.length)return p(a(l+1));const h=s[u];go(d+h,{pathExt:n},(y,w)=>{if(!y&&w)if(e.all)i.push(d+h);else return p(d+h);return p(c(d,l,u+1))})});return r?a(0).then(d=>r(null,d),r):a(0)},Wn=(t,e)=>{e=e||{};const{pathEnv:r,pathExt:o,pathExtExe:s}=wo(t,e),n=[];for(let i=0;i<r.length;i++){const a=r[i],c=/^".*"$/.test(a)?a.slice(1,-1):a,d=ho.join(c,t),l=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+d:d;for(let u=0;u<o.length;u++){const p=l+o[u];try{if(go.sync(p,{pathExt:s}))if(e.all)n.push(p);else return p}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw yo(t)};var Yn=vo;vo.sync=Wn;var Vt={exports:{}};const Co=(t={})=>{const e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};Vt.exports=Co,Vt.exports.default=Co;var Vn=Vt.exports;const bo=M,qn=Yn,Jn=Vn;function Eo(t,e){const r=t.options.env||process.env,o=process.cwd(),s=t.options.cwd!=null,n=s&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let i;try{i=qn.sync(t.command,{path:r[Jn({env:r})],pathExt:e?bo.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return i&&(i=bo.resolve(s?t.options.cwd:"",i)),i}function Xn(t){return Eo(t)||Eo(t,!0)}var Qn=Xn,qt={};const Jt=/([()\][%!^"`<>&|;, *?])/g;function Zn(t){return t=t.replace(Jt,"^$1"),t}function ei(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Jt,"^$1"),e&&(t=t.replace(Jt,"^$1")),t}qt.command=Zn,qt.argument=ei;var ti=/^#!(.*)/;const ri=ti;var oi=(t="")=>{const e=t.match(ri);if(!e)return null;const[r,o]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?o:o?`${s} ${o}`:s};const Xt=Z,si=oi;function ni(t){const r=Buffer.alloc(150);let o;try{o=Xt.openSync(t,"r"),Xt.readSync(o,r,0,150,0),Xt.closeSync(o)}catch{}return si(r.toString())}var ii=ni;const ai=M,$o=Qn,Po=qt,ci=ii,li=process.platform==="win32",ui=/\.(?:com|exe)$/i,di=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function mi(t){t.file=$o(t);const e=t.file&&ci(t.file);return e?(t.args.unshift(t.file),t.command=e,$o(t)):t.file}function pi(t){if(!li)return t;const e=mi(t),r=!ui.test(e);if(t.options.forceShell||r){const o=di.test(e);t.command=ai.normalize(t.command),t.command=Po.command(t.command),t.args=t.args.map(n=>Po.argument(n,o));const s=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${s}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function fi(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);const o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:pi(o)}var hi=fi;const Qt=process.platform==="win32";function Zt(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function gi(t,e){if(!Qt)return;const r=t.emit;t.emit=function(o,s){if(o==="exit"){const n=Ao(s,e);if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function Ao(t,e){return Qt&&t===1&&!e.file?Zt(e.original,"spawn"):null}function yi(t,e){return Qt&&t===1&&!e.file?Zt(e.original,"spawnSync"):null}var wi={hookChildProcess:gi,verifyENOENT:Ao,verifyENOENTSync:yi,notFoundError:Zt};const So=Vs,er=hi,tr=wi;function ko(t,e,r){const o=er(t,e,r),s=So.spawn(o.command,o.args,o.options);return tr.hookChildProcess(s,o),s}function vi(t,e,r){const o=er(t,e,r),s=So.spawnSync(o.command,o.args,o.options);return s.error=s.error||tr.verifyENOENTSync(s.status,o),s}Ae.exports=ko,Ae.exports.spawn=ko,Ae.exports.sync=vi,Ae.exports._parse=er,Ae.exports._enoent=tr;var Ci=Ae.exports,bi=Pe(Ci);function Ei(t){const e=typeof t=="string"?`
|
|
2
|
+
import{command as ce,cli as Ks}from"cleye";import{createRequire as zs}from"module";import Ws from"crypto";import Z from"fs";import Le from"os";import M from"path";import{Buffer as Kr}from"node:buffer";import we from"node:path";import jt,{ChildProcess as zr,exec as Ys}from"node:child_process";import le from"node:process";import Vs,{execSync as rt,exec as qs}from"child_process";import{fileURLToPath as Wr}from"node:url";import Js,{constants as Yr}from"node:os";import Vr from"assert";import qr from"events";import{createWriteStream as Xs,createReadStream as Qs,readFileSync as Zs}from"node:fs";import en from"buffer";import Bt from"stream";import Jr,{promisify as tn}from"util";import{debuglog as rn,promisify as on}from"node:util";import ot from"inquirer";import{of as Xr,concatMap as F,from as N,map as T,catchError as L,tap as Qr,mergeMap as Zr,BehaviorSubject as eo,ReplaySubject as sn,Subscription as Gt,lastValueFrom as Ut,toArray as Ht,filter as to,Subject as Kt}from"rxjs";import D from"fs/promises";import g from"chalk";import ro from"openai";import{fromPromise as j}from"rxjs/internal/observable/innerFrom";import{xxh64 as oo}from"@pacote/xxhash";import K from"winston";import"winston-daily-rotate-file";import nn from"http";import so from"https";import an from"net";import cn from"tls";import ln,{fileURLToPath as un,pathToFileURL as dn}from"url";import no from"tty";import mn from"@anthropic-ai/sdk";import pn from"axios";import{CohereClientV2 as fn}from"cohere-ai";import{GoogleGenerativeAI as hn,HarmCategory as st,HarmBlockThreshold as nt}from"@google/generative-ai";import gn from"groq-sdk";import{Ollama as yn}from"ollama";import{fetch as wn,Agent as vn}from"undici";import it from"readline";import io from"figlet";import Cn from"gradient-string";import ao from"ora";import bn from"inquirer-reactive-list-prompt";import{readdir as co,stat as En,rm as $n}from"node:fs/promises";import Pn from"chokidar";import{takeUntil as lo,finalize as uo}from"rxjs/operators";var An="aicommit2",mo="2.5.1",Sn="A Reactive CLI that generates commit messages for Git and Jujutsu with various AI",kn=["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"],In="MIT",Mn="tak-bro/aicommit2",xn="Hyungtak Jin(@tak-bro)",Rn="module",On=["dist"],Dn={aicommit2:"./dist/cli.mjs",aic2:"./dist/cli.mjs"},_n={prepare:"simple-git-hooks",build:"pkgroll --minify",lint:"eslint --cache .","type-check":"tsc",test:"tsx tests",prepack:"pnpm build && clean-pkg-json",prettier:"prettier"},Nn={"@anthropic-ai/sdk":"^0.39.0","@aws-sdk/client-bedrock-runtime":"^3.678.0","@aws-sdk/credential-providers":"^3.678.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"},Tn={"@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"}}]},Fn={branches:["main"],plugins:[["@semantic-release/commit-analyzer",{preset:"conventionalcommits",releaseRules:[{type:"docs",release:!1},{type:"style",release:!1},{type:"test",release:!1},{type:"ci",release:!1},{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"]},jn={name:An,version:mo,description:Sn,keywords:kn,license:In,repository:Mn,author:xn,type:Rn,files:On,bin:Dn,scripts:_n,"simple-git-hooks":{"pre-commit":"pnpm lint-staged"},"lint-staged":{"*.ts":["prettier --config ./.prettierrc --write","eslint --fix"]},dependencies:Nn,devDependencies:Tn,eslintConfig:Ln,release:Fn},Bn=zs(import.meta.url),H=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pe(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Ae={exports:{}},zt,po;function Gn(){if(po)return zt;po=1,zt=o,o.sync=s;var t=Z;function e(n,i){var a=i.pathExt!==void 0?i.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var c=0;c<a.length;c++){var d=a[c].toLowerCase();if(d&&n.substr(-d.length).toLowerCase()===d)return!0}return!1}function r(n,i,a){return!n.isSymbolicLink()&&!n.isFile()?!1:e(i,a)}function o(n,i,a){t.stat(n,function(c,d){a(c,c?!1:r(d,n,i))})}function s(n,i){return r(t.statSync(n),n,i)}return zt}var Wt,fo;function Un(){if(fo)return Wt;fo=1,Wt=e,e.sync=r;var t=Z;function e(n,i,a){t.stat(n,function(c,d){a(c,c?!1:o(d,i))})}function r(n,i){return o(t.statSync(n),i)}function o(n,i){return n.isFile()&&s(n,i)}function s(n,i){var a=n.mode,c=n.uid,d=n.gid,l=i.uid!==void 0?i.uid:process.getuid&&process.getuid(),u=i.gid!==void 0?i.gid:process.getgid&&process.getgid(),p=parseInt("100",8),f=parseInt("010",8),h=parseInt("001",8),y=p|f,w=a&h||a&f&&d===u||a&p&&c===l||a&y&&l===0;return w}return Wt}var at;process.platform==="win32"||H.TESTING_WINDOWS?at=Gn():at=Un();var Hn=Yt;Yt.sync=Kn;function Yt(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,s){Yt(t,e||{},function(n,i){n?s(n):o(i)})})}at(t,e||{},function(o,s){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,s=!1),r(o,s)})}function Kn(t,e){try{return at.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}const Se=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ho=M,zn=Se?";":":",go=Hn,yo=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),wo=(t,e)=>{const r=e.colon||zn,o=t.match(/\//)||Se&&t.match(/\\/)?[""]:[...Se?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],s=Se?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=Se?s.split(r):[""];return Se&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:s}},vo=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});const{pathEnv:o,pathExt:s,pathExtExe:n}=wo(t,e),i=[],a=d=>new Promise((l,u)=>{if(d===o.length)return e.all&&i.length?l(i):u(yo(t));const p=o[d],f=/^".*"$/.test(p)?p.slice(1,-1):p,h=ho.join(f,t),y=!f&&/^\.[\\\/]/.test(t)?t.slice(0,2)+h:h;l(c(y,d,0))}),c=(d,l,u)=>new Promise((p,f)=>{if(u===s.length)return p(a(l+1));const h=s[u];go(d+h,{pathExt:n},(y,w)=>{if(!y&&w)if(e.all)i.push(d+h);else return p(d+h);return p(c(d,l,u+1))})});return r?a(0).then(d=>r(null,d),r):a(0)},Wn=(t,e)=>{e=e||{};const{pathEnv:r,pathExt:o,pathExtExe:s}=wo(t,e),n=[];for(let i=0;i<r.length;i++){const a=r[i],c=/^".*"$/.test(a)?a.slice(1,-1):a,d=ho.join(c,t),l=!c&&/^\.[\\\/]/.test(t)?t.slice(0,2)+d:d;for(let u=0;u<o.length;u++){const p=l+o[u];try{if(go.sync(p,{pathExt:s}))if(e.all)n.push(p);else return p}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw yo(t)};var Yn=vo;vo.sync=Wn;var Vt={exports:{}};const Co=(t={})=>{const e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};Vt.exports=Co,Vt.exports.default=Co;var Vn=Vt.exports;const bo=M,qn=Yn,Jn=Vn;function Eo(t,e){const r=t.options.env||process.env,o=process.cwd(),s=t.options.cwd!=null,n=s&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let i;try{i=qn.sync(t.command,{path:r[Jn({env:r})],pathExt:e?bo.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return i&&(i=bo.resolve(s?t.options.cwd:"",i)),i}function Xn(t){return Eo(t)||Eo(t,!0)}var Qn=Xn,qt={};const Jt=/([()\][%!^"`<>&|;, *?])/g;function Zn(t){return t=t.replace(Jt,"^$1"),t}function ei(t,e){return t=`${t}`,t=t.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),t=t.replace(/(?=(\\+?)?)\1$/,"$1$1"),t=`"${t}"`,t=t.replace(Jt,"^$1"),e&&(t=t.replace(Jt,"^$1")),t}qt.command=Zn,qt.argument=ei;var ti=/^#!(.*)/;const ri=ti;var oi=(t="")=>{const e=t.match(ri);if(!e)return null;const[r,o]=e[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?o:o?`${s} ${o}`:s};const Xt=Z,si=oi;function ni(t){const r=Buffer.alloc(150);let o;try{o=Xt.openSync(t,"r"),Xt.readSync(o,r,0,150,0),Xt.closeSync(o)}catch{}return si(r.toString())}var ii=ni;const ai=M,$o=Qn,Po=qt,ci=ii,li=process.platform==="win32",ui=/\.(?:com|exe)$/i,di=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function mi(t){t.file=$o(t);const e=t.file&&ci(t.file);return e?(t.args.unshift(t.file),t.command=e,$o(t)):t.file}function pi(t){if(!li)return t;const e=mi(t),r=!ui.test(e);if(t.options.forceShell||r){const o=di.test(e);t.command=ai.normalize(t.command),t.command=Po.command(t.command),t.args=t.args.map(n=>Po.argument(n,o));const s=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${s}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function fi(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);const o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:pi(o)}var hi=fi;const Qt=process.platform==="win32";function Zt(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function gi(t,e){if(!Qt)return;const r=t.emit;t.emit=function(o,s){if(o==="exit"){const n=Ao(s,e);if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function Ao(t,e){return Qt&&t===1&&!e.file?Zt(e.original,"spawn"):null}function yi(t,e){return Qt&&t===1&&!e.file?Zt(e.original,"spawnSync"):null}var wi={hookChildProcess:gi,verifyENOENT:Ao,verifyENOENTSync:yi,notFoundError:Zt};const So=Vs,er=hi,tr=wi;function ko(t,e,r){const o=er(t,e,r),s=So.spawn(o.command,o.args,o.options);return tr.hookChildProcess(s,o),s}function vi(t,e,r){const o=er(t,e,r),s=So.spawnSync(o.command,o.args,o.options);return s.error=s.error||tr.verifyENOENTSync(s.status,o),s}Ae.exports=ko,Ae.exports.spawn=ko,Ae.exports.sync=vi,Ae.exports._parse=er,Ae.exports._enoent=tr;var Ci=Ae.exports,bi=Pe(Ci);function Ei(t){const e=typeof t=="string"?`
|
|
3
3
|
`:`
|
|
4
4
|
`.charCodeAt(),r=typeof t=="string"?"\r":"\r".charCodeAt();return t[t.length-1]===e&&(t=t.slice(0,-1)),t[t.length-1]===r&&(t=t.slice(0,-1)),t}function Io(t={}){const{env:e=process.env,platform:r=process.platform}=t;return r!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"}const $i=({cwd:t=le.cwd(),path:e=le.env[Io()],preferLocal:r=!0,execPath:o=le.execPath,addExecPath:s=!0}={})=>{const n=t instanceof URL?Wr(t):t,i=we.resolve(n),a=[];return r&&Pi(a,i),s&&Ai(a,o,i),[...a,e].join(we.delimiter)},Pi=(t,e)=>{let r;for(;r!==e;)t.push(we.join(e,"node_modules/.bin")),r=e,e=we.resolve(e,"..")},Ai=(t,e,r)=>{const o=e instanceof URL?Wr(e):e;t.push(we.resolve(r,o,".."))},Si=({env:t=le.env,...e}={})=>{t={...t};const r=Io({env:t});return e.path=t[r],t[r]=$i(e),t},ki=(t,e,r,o)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const s=Object.getOwnPropertyDescriptor(t,r),n=Object.getOwnPropertyDescriptor(e,r);!Ii(s,n)&&o||Object.defineProperty(t,r,n)},Ii=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},Mi=(t,e)=>{const r=Object.getPrototypeOf(e);r!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,r)},xi=(t,e)=>`/* Wrapped ${t}*/
|
|
5
5
|
${e}`,Ri=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Oi=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),Di=(t,e,r)=>{const o=r===""?"":`with ${r.trim()}() `,s=xi.bind(null,o,e.toString());Object.defineProperty(s,"name",Oi),Object.defineProperty(t,"toString",{...Ri,value:s})};function _i(t,e,{ignoreNonConfigurable:r=!1}={}){const{name:o}=t;for(const s of Reflect.ownKeys(e))ki(t,e,s,r);return Mi(t,e),Di(t,e,o),t}const ct=new WeakMap,Mo=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,o=0;const s=t.displayName||t.name||"<anonymous>",n=function(...i){if(ct.set(n,++o),o===1)r=t.apply(this,i),t=null;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return r};return _i(n,t),ct.set(n,o),n};Mo.callCount=t=>{if(!ct.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return ct.get(t)};const Ni=()=>{const t=Ro-xo+1;return Array.from({length:t},Ti)},Ti=(t,e)=>({name:`SIGRT${e+1}`,number:xo+e,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),xo=34,Ro=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"}],Oo=()=>{const t=Ni();return[...Li,...t].map(Fi)},Fi=({name:t,number:e,description:r,action:o,forced:s=!1,standard:n})=>{const{signals:{[t]:i}}=Yr,a=i!==void 0;return{name:t,number:a?i:e,description:r,supported:a,action:o,forced:s,standard:n}},ji=()=>{const t=Oo();return Object.fromEntries(t.map(Bi))},Bi=({name:t,number:e,description:r,supported:o,action:s,forced:n,standard:i})=>[t,{name:t,number:e,description:r,supported:o,action:s,forced:n,standard:i}],Gi=ji(),Ui=()=>{const t=Oo(),e=Ro+1,r=Array.from({length:e},(o,s)=>Hi(s,t));return Object.assign({},...r)},Hi=(t,e)=>{const r=Ki(t,e);if(r===void 0)return{};const{name:o,description:s,supported:n,action:i,forced:a,standard:c}=r;return{[t]:{name:o,number:t,description:s,supported:n,action:i,forced:a,standard:c}}},Ki=(t,e)=>{const r=e.find(({name:o})=>Yr.signals[o]===t);return r!==void 0?r:e.find(o=>o.number===t)};Ui();const zi=({timedOut:t,timeout:e,errorCode:r,signal:o,signalDescription:s,exitCode:n,isCanceled:i})=>t?`timed out after ${e} milliseconds`:i?"was canceled":r!==void 0?`failed with ${r}`:o!==void 0?`was killed with ${o} (${s})`:n!==void 0?`failed with exit code ${n}`:"failed",lt=({stdout:t,stderr:e,all:r,error:o,signal:s,exitCode:n,command:i,escapedCommand:a,timedOut:c,isCanceled:d,killed:l,parsed:{options:{timeout:u,cwd:p=le.cwd()}}})=>{n=n===null?void 0:n,s=s===null?void 0:s;const f=s===void 0?void 0:Gi[s].description,h=o&&o.code,w=`Command ${zi({timedOut:c,timeout:u,errorCode:h,signal:s,signalDescription:f,exitCode:n,isCanceled:d})}: ${i}`,C=Object.prototype.toString.call(o)==="[object Error]",b=C?`${w}
|
|
@@ -18,7 +18,7 @@ Expected formats:
|
|
|
18
18
|
- ARN: Full Amazon Resource Name
|
|
19
19
|
See https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html`),o}).filter(r=>!!r&&r.length>0):["anthropic.claude-haiku-4-5-20251001-v1:0"],runtimeMode:t=>{t&&console.warn("[Bedrock] DEPRECATION: runtimeMode is no longer used. Authentication method is now auto-detected from configured credentials.")},region:t=>t||process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"",profile:t=>t||process.env.AWS_PROFILE||"",accessKeyId:t=>t||process.env.AWS_ACCESS_KEY_ID||"",secretAccessKey:t=>t||process.env.AWS_SECRET_ACCESS_KEY||"",sessionToken:t=>t||process.env.AWS_SESSION_TOKEN||"",applicationEndpointId:t=>t||process.env.BEDROCK_APPLICATION_ENDPOINT_ID||"",applicationInferenceProfileArn:t=>t||process.env.BEDROCK_APPLICATION_INFERENCE_PROFILE_ARN||process.env.BEDROCK_INFERENCE_PROFILE_ARN||"",applicationBaseUrl:t=>t||process.env.BEDROCK_APPLICATION_BASE_URL||"",systemPrompt:m.systemPrompt,systemPromptPath:m.systemPromptPath,codeReviewPromptPath:m.codeReviewPromptPath,timeout:m.timeout,temperature:t=>{if(!t)return;R("temperature",/^(2|\d)(\.\d{1,2})?$/.test(t),"Must be decimal between 0 and 2");const e=Number(t);return R("temperature",e>0,"Must be greater than 0"),R("temperature",e<=2,"Must be less than or equal to 2"),e},maxTokens:t=>{if(t)return R("maxTokens",/^\d+$/.test(t),"Must be an integer"),Number(t)},logging:m.logging,locale:m.locale,generate:m.generate,type:m.type,maxLength:m.maxLength,includeBody:m.includeBody,topP:t=>{if(!t)return;R("topP",/^(1|\d)(\.\d{1,2})?$/.test(t),"Must be decimal between 0 and 1");const e=Number(t);return R("topP",e>0,"Must be greater than 0"),R("topP",e<=1,"Must be less than or equal to 1"),e},codeReview:m.codeReview,disabled:m.disabled,watchMode:m.watchMode,disableLowerCase:m.disableLowerCase,inferenceParameters:t=>{if(!t)return{};if(typeof t=="object")return t;try{const e=JSON.parse(t);return R("BEDROCK.inferenceParameters",typeof e=="object"&&e!==null&&!Array.isArray(e),"Must be a valid JSON object"),e}catch(e){throw new v(`Invalid BEDROCK.inferenceParameters: Must be valid JSON. Error: ${e.message}`)}}}},oc=t=>typeof t=="object"&&t!==null,ds=(t,e)=>{Object.keys(t).forEach(r=>{const o=t[r];oc(o)&&e in o&&(o[e]=!0)})},sc=t=>{ds(t,"includeBody")},nc=t=>{ds(t,"disableLowerCase")};let ze;const ic=(t=[])=>{const e={};for(const r of t)if(r.startsWith("--")){const[o,s]=r.slice(2).split("="),[n,i]=o.split(".");n&&i&&n in Ke?(e[n]||(e[n]={}),e[n][i]=s):e[o]=s}return e},ac=()=>{const t=Le.homedir(),e=process.env.AICOMMIT_CONFIG_PATH,r=cs,o=M.join(t,".aicommit2");return[e,r,o].filter(s=>!!s)},Re=async()=>{const t=ac();for(const e of t)if(await gt(e))return e;return cs},cc=t=>t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}|\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(e,r,o)=>{const s=r||o;return process.env[s]??""}),We=async()=>{const t=await Re();ze=t;try{const e=await D.readFile(t,"utf8"),r=cc(e);return xe.parse(r)}catch(e){return e.code==="ENOENT"?(ze=void 0,{}):(console.error(`Error reading config file ${t}:`,e),ze=void 0,{})}},ge=async(t,e=[])=>{const r=await We(),o=ic(e),s={...t,...o},n={},i=rc(r),a={};for(const d of i){const l=r[d]?.envKey;let u;l?(u=[l],d==="BEDROCK"&&l!=="BEDROCK_APPLICATION_API_KEY"&&u.push("BEDROCK_APPLICATION_API_KEY")):d==="BEDROCK"?u=["BEDROCK_API_KEY","BEDROCK_APPLICATION_API_KEY"]:u=[`${d}_API_KEY`];const p=u.map(f=>f?process.env[f]:void 0).find(f=>typeof f=="string"&&f.length>0);p&&(a[d]={key:p})}const c=(d,l)=>{const u=s[`${d}.${l}`]??s[d]?.[l],p=a[d]?.[l],f=r[d]?.[l],h=s[l]??r[l];return u!==void 0?u:p!==void 0?p:f!==void 0?f:h};for(const[d,l]of Object.entries(m)){const u=s[d]??r[d];n[d]=l(u)}for(const d of i){n[d]={};const l=Ke[d]||Et(d);for(const[u,p]of Object.entries(l)){const f=c(d,u);n[d][u]=p(f)}}return n},fr=async t=>{const e=await We();for(const[s,n]of t){const[i,a]=s.split(".");if(!a){const l=m[s];if(!l)throw new v(`Invalid config property: ${s}`);e[s]=l(n);continue}if(e[i]||(e[i]={}),He.includes(i)){const l=Ke[i][a];if(!l)throw new v(`Invalid config property: ${s}`);e[i][a]=l(n);continue}if(!/^[A-Z][A-Z0-9_]*$/.test(i))throw new v(`Invalid service name: ${i}. Service names must be uppercase letters, numbers, and underscores.`);const d=Et(i);if(!d[a])throw new v(`Invalid config property for custom service: ${s}`);try{e[i][a]=d[a](n)}catch(l){throw l instanceof v?l:new v(`Invalid value for ${s}: ${l.message}`)}}const r=await Re(),o=M.dirname(r);await D.mkdir(o,{recursive:!0}),await D.writeFile(r,xe.stringify(e),"utf8")},lc=async t=>{const e=await We();for(const[s,n]of t){const[i,a]=s.split("."),c=e[i];if(a==="model"){c||(e[i]={});const l=e[i][a]||[],u=typeof n=="string"?n.split(",").map(p=>p.trim()).filter(p=>!!p):n;e[i][a]=vt([...l,...u]);continue}if(c&&c.compatible===!0){c||(e[i]={});const l=Et(i);if(!l[a])throw new v(`Invalid config property: ${s}`);try{e[i][a]=l[a](n)}catch(u){throw u instanceof v?u:new v(`Invalid value for ${s}: ${u.message}`)}continue}if(i in Ke){c||(e[i]={});const l=Ke[i][a];if(!l)throw new v(`Invalid config property: ${s}`);e[i][a]=l(n)}else{const l=Et(i);if(!l[a])throw new v(`Invalid config property: ${s}`);e[i]||(e[i]={}),e[i][a]=l[a](n)}}const r=await Re(),o=M.dirname(r);await D.mkdir(o,{recursive:!0}),await D.writeFile(r,xe.stringify(e),"utf8")},uc=async()=>{const t=await We();console.log(xe.stringify(t))},dc=async()=>{console.log(await Re())},Et=t=>({compatible:pe("compatible"),stream:pe("stream"),url:e=>e?(R(`${t}.url`,/^https?:\/\//.test(e),"Must be a valid URL"),e):"",path:e=>e||"",key:e=>e||"",envKey:e=>e||"",model:e=>e?(typeof e=="string"?e?.split(","):e).map(o=>o.trim()).filter(o=>!!o&&o.length>0):[],systemPrompt:m.systemPrompt,systemPromptPath:m.systemPromptPath,codeReviewPromptPath:m.codeReviewPromptPath,timeout:m.timeout,temperature:m.temperature,maxTokens:m.maxTokens,logging:m.logging,locale:m.locale,generate:m.generate,type:m.type,maxLength:m.maxLength,includeBody:m.includeBody,topP:m.topP,codeReview:m.codeReview,disabled:m.disabled,watchMode:m.watchMode,disableLowerCase:m.disableLowerCase}),Y=t=>typeof t=="string"&&t.trim().length>0,Ce=t=>(Array.isArray(t.model)?t.model:Y(t.model)?[t.model.trim()]:[]).length>0,$t=t=>{const e=Y(t.key),r=Y(t.region)||Y(process.env.AWS_REGION)||Y(process.env.AWS_DEFAULT_REGION),o=Y(t.profile)||Y(process.env.AWS_PROFILE),s=Y(t.accessKeyId)&&Y(t.secretAccessKey)||Y(process.env.AWS_ACCESS_KEY_ID)&&Y(process.env.AWS_SECRET_ACCESS_KEY),n=Y(t.applicationBaseUrl)||Y(process.env.BEDROCK_APPLICATION_BASE_URL),i=Y(t.applicationEndpointId)||Y(process.env.BEDROCK_APPLICATION_ENDPOINT_ID),a=Y(process.env.BEDROCK_APPLICATION_API_KEY);return r&&(e||o||s)||(n&&e||i&&a)},Oe=(t,e)=>Object.entries(t).map(([r,o])=>[r,o]).filter(([r,o])=>!o.disabled).filter(([r,o])=>He.includes(r)||o.compatible===!0).filter(([r,o])=>{switch(e){case"commit":return r==="OLLAMA"?!!o&&Ce(o):r==="HUGGINGFACE"?!!o&&!!o.cookie:r==="BEDROCK"?Ce(o)&&$t(o):!!o.key&&o.key.length>0;case"review":const s=t.codeReview||o.codeReview;return r==="OLLAMA"?!!o&&Ce(o)&&s:r==="HUGGINGFACE"?!!o&&!!o.cookie&&s:r==="BEDROCK"?Ce(o)&&$t(o)&&s:!!o.key&&o.key.length>0&&s;case"watch":const n=t.watchMode||o.watchMode;return r==="OLLAMA"?!!o&&Ce(o)&&n:r==="HUGGINGFACE"?!!o&&!!o.cookie&&n:r==="BEDROCK"?Ce(o)&&$t(o)&&n:o.compatible?!!o.url&&!!o.key&&n:!!o.key&&o.key.length>0&&n}}).map(([r])=>r);class mc{static create(e,r){return new e(r)}}const Ye=new Map,be=(t,e,r)=>{const o=oo(0).update(e).digest("hex").substring(0,8),s=`${t}_${o}_${r}`;if(Ye.has(s))return Ye.get(s);const n=new Date,i=hc(n,t,e,r),a=`${ue}/${i}`,c=K.createLogger({level:"info",format:K.format.combine(K.format.timestamp({format:"YYYY-MM-DDTHH:mm:ss.SSSZ"}),K.format.printf(({timestamp:d,level:l,message:u,...p})=>p&&Object.keys(p).length>0?`[${d}] ${l}: ${u} ${JSON.stringify(p,null,2)}`:`[${d}] ${l}: ${u}`)),transports:[new K.transports.File({filename:a})]});return c.info(`=== ${t.toUpperCase()} AI SERVICE LOG ===`),c.info(`Diff Hash: ${o}`),c.info(`Request Type: ${r.toUpperCase()}`),c.info(`Start Time: ${n.toISOString()}`),c.info("=".repeat(50)),c.info(""),Ye.set(s,c),c},pc=t=>{const e={...t},r=["authorization","x-api-key","x-goog-api-key","api-key","x-amzn-bedrock-application-key"];for(const o of r){const s=o.toLowerCase(),n=Object.keys(e).find(i=>i.toLowerCase()===s);n&&e[n]&&typeof e[n]=="string"&&(e[n].startsWith("Bearer ")?e[n]="Bearer [MASKED]":e[n]="[MASKED]")}return e},ee=(t,e,r,o,s,n,i=!0)=>{if(!i)return;const a=be(r,t,e);a.info(`Making request to ${r} API with model: ${o}`),a.info(`Request URL: ${s}`),a.info("Request headers:",pc(n))},ne=(t,e,r,o,s=!0)=>{if(!s)return;be(r,t,e).info("Request payload:",o)},te=(t,e,r,o,s,n=!0)=>{if(!n)return;const i=be(r,t,e);i.info("System prompt:",{prompt:o}),i.info("User prompt:",{prompt:s})},V=(t,e,r,o,s=!0)=>{if(!s)return;be(r,t,e).info("Response received:",o)},G=(t,e,r,o,s=!0)=>{if(!s)return;be(r,t,e).error("API request failed:",o)},q=(t,e,r,o,s,n=!0)=>{if(!n)return;const i=be(r,t,e);o?i.info(`Request completed successfully in ${o}ms`):i.info("Request completed successfully"),s&&i.info("Final processed response:",{response:s}),i.info(""),i.info("=".repeat(50)),i.info(`End Time: ${new Date().toISOString()}`),i.info("=== REQUEST COMPLETED ===")},fc=(t,e,r,o,s,n,i,a=!0)=>{if(!a)return;const c=be(r,t,e);i?c.error(`Request failed after ${n}ms:`,{error:i}):(c.info(`Request completed in ${n}ms`),c.info("Response:",{response:s})),q(t,e,r,n,s,a)},hc=(t,e,r,o)=>{const{year:s,month:n,day:i,hours:a,minutes:c,seconds:d}=gc(t),u=oo(0).update(r).digest("hex").substring(0,8),p=e.toLowerCase().replace(/[^a-z0-9]/g,"").substring(0,20);return o==="review"?`${s}-${n}-${i}_${a}-${c}-${d}_${u}_${p}_review.log`:`${s}-${n}-${i}_${a}-${c}-${d}_${u}_${p}_commit.log`},gc=t=>{const e=t.getFullYear().toString(),r=(t.getMonth()+1).toString().padStart(2,"0"),o=t.getDate().toString().padStart(2,"0"),s=t.getHours().toString().padStart(2,"0"),n=t.getMinutes().toString().padStart(2,"0"),i=t.getSeconds().toString().padStart(2,"0");return{year:e,month:r,day:o,hours:s,minutes:n,seconds:i}},hr=()=>{for(const[t,e]of Ye.entries())try{e.close()}catch(r){console.error(`Failed to close logger ${t}:`,r)}Ye.clear()};process.on("exit",hr),process.on("SIGINT",()=>{hr(),process.exit(0)}),process.on("SIGTERM",()=>{hr(),process.exit(0)});const A={label:g.bold.green,command:g.bold.white,hint:g.gray,highlight:g.bold.magenta,dim:g.dim},x={MISSING_API_KEY:"MISSING_API_KEY",INVALID_API_KEY:"INVALID_API_KEY",AUTH_FAILED:"AUTH_FAILED",RATE_LIMITED:"RATE_LIMITED",QUOTA_EXCEEDED:"QUOTA_EXCEEDED",MODEL_NOT_FOUND:"MODEL_NOT_FOUND",MODEL_ACCESS_DENIED:"MODEL_ACCESS_DENIED",NETWORK_ERROR:"NETWORK_ERROR",TIMEOUT:"TIMEOUT",SERVICE_UNAVAILABLE:"SERVICE_UNAVAILABLE",NO_STAGED_CHANGES:"NO_STAGED_CHANGES",EMPTY_COMMIT_MESSAGE:"EMPTY_COMMIT_MESSAGE",VCS_NOT_FOUND:"VCS_NOT_FOUND",INVALID_CONFIG:"INVALID_CONFIG",CONFIG_NOT_FOUND:"CONFIG_NOT_FOUND",SERVER_ERROR:"SERVER_ERROR",UNKNOWN:"UNKNOWN"},gr={missingApiKey:t=>{const e=t.toUpperCase();return[`Missing API key for ${A.highlight(e)}.`,"",`${A.label("\u2192")} Run: ${A.command(`aicommit2 config set ${e}.key=YOUR_API_KEY`)}`].join(`
|
|
20
20
|
`)},invalidApiKey:t=>{const e=t.toUpperCase();return[`Invalid or expired API key for ${A.highlight(e)}.`,"",`${A.label("\u2192")} Update: ${A.command(`aicommit2 config set ${e}.key=YOUR_NEW_KEY`)}`].join(`
|
|
21
|
-
`)},noApiKeysConfigured:()=>["No AI provider API keys configured.","",`${A.label("\u2192")}
|
|
21
|
+
`)},noApiKeysConfigured:()=>["No AI provider API keys configured.","",`${A.label("\u2192")} Please set at least one API key:`,` ${A.command("aicommit2 config set OPENAI.key=sk-...")}`,` ${A.command("aicommit2 config set ANTHROPIC.key=sk-ant-...")}`,` ${A.command("aicommit2 config set OLLAMA.model=llama3.2")} ${A.dim("(no key needed)")}`,"",`${A.hint("Tip:")} ${A.command("aicommit2 config get")} ${A.hint("to see current config")}`].join(`
|
|
22
22
|
`),rateLimited:t=>[`Rate limit exceeded${t?` for ${A.highlight(t)}`:""}.`,"",`${A.label("\u2192")} Wait a moment and try again`,`${A.label("\u2192")} Or use a different AI provider`].join(`
|
|
23
23
|
`),quotaExceeded:t=>[`API quota exceeded${t?` for ${A.highlight(t)}`:""}.`,"",`${A.label("\u2192")} Upgrade your API plan or wait for reset`].join(`
|
|
24
24
|
`),modelNotFound:(t,e)=>{const r=e.toUpperCase();return[`Model ${A.highlight(`"${t}"`)} not found for ${A.highlight(r)}.`,"",`${A.label("\u2192")} Update: ${A.command(`aicommit2 config set ${r}.model=VALID_MODEL`)}`].join(`
|