@dahawa/hawa-code 1.27.2 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.js +1538 -1395
- package/hawa.js +1 -1
- package/package.json +1 -1
package/hawa.js
CHANGED
|
@@ -41,4 +41,4 @@ Calls to async() callback can have unexpected results.`),p=!0,function(g,_){g?d(
|
|
|
41
41
|
`).trimEnd();return[K,F]});var rt=ie(He(),1);var Lb={icon:{cursor:he.pointer},style:{disabled:r=>rt.default.dim(`- ${r}`),description:r=>rt.default.cyan(r),keysHelpTip:r=>r.map(([e,t])=>`${rt.default.bold(e)} ${rt.default.dim(t)}`).join(rt.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function et(r){return!k.isSeparator(r)&&!r.disabled}function Rb(r){return r.map(e=>{if(k.isSeparator(e))return e;if(typeof e=="string")return{value:e,name:e,short:e,disabled:!1};let t=e.name??String(e.value),n={value:e.value,name:t,short:e.short??t,disabled:e.disabled??!1};return e.description&&(n.description=e.description),n})}var Zn=Q((r,e)=>{let{loop:t=!0,pageSize:n=7}=r,i=z(Lb,r.theme),{keybindings:o}=i,[a,u]=C("idle"),s=H({status:a,theme:i}),c=Or(),f=!o.includes("vim"),d=ue(()=>Rb(r.choices),[r.choices]),p=ue(()=>{let A=d.findIndex(et),K=d.findLastIndex(et);if(A===-1)throw new Fe("[select prompt] No selectable choices. All choices are disabled.");return{first:A,last:K}},[d]),h=ue(()=>"default"in r?d.findIndex(A=>et(A)&&A.value===r.default):-1,[r.default,d]),[m,v]=C(h===-1?p.first:h),b=d[m];Y((A,K)=>{if(clearTimeout(c.current),G(A))u("done"),e(b.value);else if(Z(A,o)||ae(A,o)){if(K.clearLine(0),t||Z(A,o)&&m!==p.first||ae(A,o)&&m!==p.last){let F=Z(A,o)?-1:1,w=m;do w=(w+F+d.length)%d.length;while(!et(d[w]));v(w)}}else if(Wt(A)&&!Number.isNaN(Number(K.line))){let F=Number(K.line)-1,w=-1,T=d.findIndex(X=>k.isSeparator(X)?!1:(w++,w===F)),N=d[T];N!=null&&et(N)&&v(T),c.current=setTimeout(()=>{K.clearLine(0)},700)}else if(_r(A))K.clearLine(0);else if(f){let F=K.line.toLowerCase(),w=d.findIndex(T=>k.isSeparator(T)||!et(T)?!1:T.name.toLowerCase().startsWith(F));w!==-1&&v(w),c.current=setTimeout(()=>{K.clearLine(0)},700)}}),xe(()=>()=>{clearTimeout(c.current)},[]);let y=i.style.message(r.message,a),g;if(i.helpMode!=="never")if(r.instructions){let{pager:A,navigation:K}=r.instructions;g=i.style.help(d.length>n?A:K)}else g=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let _=0,P=Fr({items:d,active:m,renderItem({item:A,isActive:K,index:F}){if(k.isSeparator(A))return _++,` ${A.separator}`;let w=i.indexMode==="number"?`${F+1-_}. `:"";if(A.disabled){let X=typeof A.disabled=="string"?A.disabled:"(disabled)";return i.style.disabled(`${w}${A.name} ${X}`)}let T=K?i.style.highlight:X=>X,N=K?i.icon.cursor:" ";return T(`${N} ${w}${A.name}`)},pageSize:n,loop:t});if(a==="done")return[s,y,i.style.answer(b.short)].filter(Boolean).join(" ");let{description:O}=b;return`${[[s,y].filter(Boolean).join(" "),P," ",O?i.style.description(O):"",g].filter(Boolean).join(`
|
|
42
42
|
`).trimEnd()}${Qr}`});var $=ie(b1(),1),qc=ie(g1(),1),_1=ie(Fa(),1);import QO from"node:readline";var D1={set:(r,e="",t)=>{let n=r;e.split(".").forEach((i,o,a)=>{i==="__proto__"||i==="constructor"||(o===a.length-1?n[i]=t:(!(i in n)||typeof n[i]!="object")&&(n[i]={}),n=n[i])})},get:(r,e="",t)=>{let n=o=>String.prototype.split.call(e,o).filter(Boolean).reduce((a,u)=>a==null?a:a[u],r),i=n(/[,[\]]+?/)||n(/[,.[\]]+?/);return i===void 0||i===r?t:i}};async function Cc(r,e,t){let n=r[e];return typeof n=="function"?(0,qc.default)(n)(t):n}var Ac=class extends Error{name="TTYError";isTtyError=!0};function JO(r){r.skipTTYChecks=r.skipTTYChecks===void 0?!0:r.skipTTYChecks;let e=r.input||process.stdin;if(!r.skipTTYChecks&&!e.isTTY)throw new Ac("Prompts can not be meaningfully rendered in non-TTY environments");let t=new _1.default;return t.pipe(r.output||process.stdout),{terminal:!0,...r,input:e,output:t}}function XO(r){return Array.isArray(r)}function ZO(r){return Object.values(r).every(e=>typeof e=="object"&&!Array.isArray(e)&&e!=null)}function eF(r){return!!(r.prototype&&"run"in r.prototype&&typeof r.prototype.run=="function")}var Ut=class{prompts;answers={};process=$.EMPTY;abortController=new AbortController;opt;constructor(e,t={}){this.opt=t,this.prompts=e}async run(e,t){this.abortController=new AbortController,this.answers=typeof t=="object"?{...t}:{};let n;return XO(e)?n=(0,$.from)(e):(0,$.isObservable)(e)?n=e:ZO(e)?n=(0,$.from)(Object.entries(e).map(([i,o])=>Object.assign({},o,{name:i}))):n=(0,$.from)([e]),this.process=n.pipe((0,$.concatMap)(i=>(0,$.of)(i).pipe((0,$.concatMap)(o=>(0,$.from)(this.shouldRun(o).then(a=>{if(a)return o})).pipe((0,$.filter)(a=>a!=null))),(0,$.concatMap)(o=>(0,$.defer)(()=>(0,$.from)(this.fetchAnswer(o))))))),(0,$.lastValueFrom)(this.process.pipe((0,$.reduce)((i,o)=>(D1.set(i,o.name,o.answer),i),this.answers))).then(()=>this.answers).finally(()=>this.close())}prepareQuestion=async e=>{let[t,n,i]=await Promise.all([Cc(e,"message",this.answers),Cc(e,"default",this.answers),Cc(e,"choices",this.answers)]),o;return Array.isArray(i)&&(o=i.map(a=>{let u=typeof a!="object"||a==null?{name:a,value:a}:{...a,value:"value"in a?a.value:"name"in a?a.name:void 0};return"value"in u&&Array.isArray(n)?{checked:n.includes(u.value),...u}:u})),Object.assign({},e,{message:t,default:n,choices:o,type:e.type in this.prompts?e.type:"input"})};fetchAnswer=async e=>{let t=await this.prepareQuestion(e),n=this.prompts[t.type];if(n==null)throw new Error(`Prompt for type ${t.type} not found`);let i,o=eF(n)?(f,d)=>new Promise((p,h)=>{let{signal:m}=d;if(m.aborted){h(new wr({cause:m.reason}));return}let v=QO.createInterface(JO(d)),b=()=>{this.close(),process.kill(process.pid,"SIGINT"),console.log("")},y=()=>{process.removeListener("exit",b),v.removeListener("SIGINT",b),v.setPrompt(""),v.output.unmute(),v.output.write(An),v.output.end(),v.close()};process.on("exit",b),v.on("SIGINT",b);let g=new n(f,v,this.answers),_=()=>{y(),i?.()},P=()=>{h(new wr({cause:m.reason})),_()};m.addEventListener("abort",P),i=()=>{m.removeEventListener("abort",P),i=void 0},g.run().then(p,h).finally(_)}):n,a,{signal:u}=this.opt;if(u?.aborted)this.abortController.abort(u.reason);else if(u){let f=()=>this.abortController.abort(u.reason);u.addEventListener("abort",f),a=()=>{u.removeEventListener("abort",f)}}let{filter:s=f=>f}=t,{signal:c}=this.abortController;return o(t,{...this.opt,signal:c}).then(f=>({name:t.name,answer:s(f,this.answers)})).finally(()=>{i?.(),a?.()})};close=()=>{this.abortController.abort()};shouldRun=async e=>{if(e.askAnswered!==!0&&D1.get(this.answers,e.name)!==void 0)return!1;let{when:t}=e;return typeof t=="function"?!!await(0,qc.default)(t)(this.answers):t!==!1}};var w1={input:as,select:Zn,list:Zn,number:us,confirm:os,rawlist:ls,expand:cs,checkbox:Ua,password:fs,editor:is,search:ds};function S1(r){function e(t,n){let i=new Ut(e.prompts,r),o=i.run(t,n);return Object.assign(o,{ui:i})}return e.prompts={...w1},e.registerPrompt=function(t,n){return e.prompts[t]=n,this},e.restoreDefaultPrompts=function(){e.prompts={...w1}},e}var Pc=S1();function rF(r,e){Pc.registerPrompt(r,e)}function tF(){Pc.restoreDefaultPrompts()}var nF={prompt:Pc,ui:{Prompt:Ut},createPromptModule:S1,registerPrompt:rF,restoreDefaultPrompts:tF,Separator:k},E1=nF;import pa from"path";import{fileURLToPath as k1}from"url";import{existsSync as fa,readFileSync as bF,writeFileSync as xa,mkdirSync as vF,watch as j1}from"fs";import{join as M1,dirname as mF}from"path";import{homedir as yF}from"os";import{existsSync as C1,mkdirSync as oF}from"fs";import{dirname as aF,join as pe}from"path";import{writeFileSync as uF,readFileSync as cB,appendFileSync as sF}from"fs";import{randomUUID as cF}from"crypto";import{homedir as lF}from"os";import*as A1 from"os";import{randomUUID as iF}from"crypto";var la=class{datas={};setData(e,t){this.datas[e]=t}getData(e){return this.datas[e]}takeData(e){let t=this.datas[e];return delete this.datas[e],t}clear(){this.datas={}}},mn=class extends la{startTime;constructor(e=null){super(),this.startTime=e}},O1=iF(),jc=class extends la{PENDING_PROMPTS_KEY="pendingPrompts";addPendingPrompt(e){let t=this.getPendingPrompts();t.push(e),this.setData(this.PENDING_PROMPTS_KEY,t)}getPendingPrompts(){let e=this.getData(this.PENDING_PROMPTS_KEY);return Array.isArray(e)?e:[]}takePendingPrompts(){let e=this.getPendingPrompts();return this.setData(this.PENDING_PROMPTS_KEY,[]),e}async waitGetPendingPrompts(e){let n=Date.now(),i=e*1e3;for(;Date.now()-n<i;){let o=this.getPendingPrompts();if(o.length>0)return o;await new Promise(a=>setTimeout(a,200))}return[]}getSessionId(){return O1}switchSessionId(e){O1=e}},Mc=class r{static sessionContext={};static inQueryContextHolder={};static queryContext={};onQueryStart(e="defalt"){e||(e="defalt");let t=r.inQueryContextHolder[e+""];t&&t.startTime&&t.startTime>0||(r.inQueryContextHolder[e+""]=new mn(Date.now()))}onQueryEnd(e="defalt",t=!1){e||(e="defalt"),r.inQueryContextHolder[e+""]=new mn(-1),t||(r.queryContext[e+""]={})}getSessionContext(e="defalt"){e||(e="defalt");let t=r.sessionContext[e+""];return t||(t=new jc,r.sessionContext[e+""]=t),t}getInQueryContext(e="defalt"){e||(e="defalt");let t=r.inQueryContextHolder[e+""];return t||(t=new mn,r.inQueryContextHolder[e+""]=t),t}getQueryContext(e="defalt"){e||(e="defalt");let t=r.queryContext[e+""];return t||(t={},r.queryContext[e+""]=t),t}isQuerying(e="defalt"){return e||(e="defalt"),this.getInQueryContext(e).startTime>0}},F1=new Mc;var hB=cF(),Ge=pe(lF(),Kr);function gr(r){return r.replace(/[^a-zA-Z0-9]/g,"-")}function fF(){return F1.getSessionContext().getSessionId()||Tc}var q1={temp:()=>pe(A1.tmpdir(),`${Rc}`),plan:()=>pe(Ge,"plan"),memory:()=>pe(Ge,"projects",gr(process.cwd()),"memory"),apis:()=>pe(Ge,"projects",gr(process.cwd()),"apis"),errors:()=>pe(Ge,"projects",gr(process.cwd()),"errors"),messages:()=>pe(Ge,"projects",gr(process.cwd()),"messages"),mcpLogs:r=>pe(Ge,"projects",gr(process.cwd()),`mcp-logs-${r}`),log:()=>pe(Ge,"projects",gr(process.cwd()),"log"),vcrFixtures:()=>pe(Ge,"projects",gr(process.cwd()),"vcr-fixtures"),sessionSummary:()=>pe(Ge,"projects",gr(process.cwd()),"messages",fF(),"session-summary")};function xF(r){return r.toISOString().replace(/[:.]/g,"-")}var Tc=xF(new Date);function dF(){return pe(q1.log(),Tc+".log")}function pF(){return pe(q1.log(),"error-"+Tc+".log")}function P1(r,e,...t){let n=t.map(i=>i instanceof Error?`${i.name}: ${i.message}
|
|
43
43
|
${i.stack.replace(/^/gm," ")}`:i);hF(e,{level:r,message:n.length==1?n[0]:n})}function yn(...r){P1("info",dF(),...r)}function Bc(...r){P1("error",pF(),...r)}function hF(r,e){let t=aF(r);C1(t)||oF(t,{recursive:!0});let i=(typeof e=="string"?e:JSON.stringify(e))+`
|
|
44
|
-
`;C1(r)?sF(r,i,"utf8"):uF(r,i,"utf8")}var bB=5*1024*1024,vB=1024*1024,mB=Buffer.from('"compact_boundary"');var da={env:{},permissions:{allow:[],deny:[],ask:[]},enableAllProjectMcpServers:!1,enabledMcpjsonServers:[],autoCompactEnabled:!0,language:"auto",disableSuggestion:!1,autoMemory:{enabled:!0,minTokens:3e3,minTurns:3,teamMemoryEnabled:!1},autoDream:{enabled:!0,minHours:24,minSessions:5}},kc=class r{static test=!1;static testSettings;static setSettings(e){r.testSettings=e}static instance;static isTasksEnable(){return process.env.HAWA_CODE_ENABLE_TASKS=="true"||r.isAgentTeamEnable()}static isAgentTeamEnable(){return process.env.HAWA_CODE_EXPERIMENTAL_AGENT_TEAMS=="1"}constructor(){this.initializeConfigDirectories()}initializeConfigDirectories(){let e=this.getUserSettingsPath(),t=this.getProjectSettingsPath();this.ensureDirExists(e),fa(e)||xa(e,JSON.stringify(this.getDefaultSettingsStructure(),null,2),"utf-8"),this.ensureDirExists(t),fa(t)||xa(t,JSON.stringify(this.getDefaultSettingsStructure(),null,2),"utf-8")}getDefaultSettingsStructure(){return{env:{},permissions:{allow:[],deny:[],ask:[]},autoMode:{enabled:!1,model:"",maxConsecutiveDenials:3,maxTotalDenials:20}}}static getInstance(){return r.instance||(r.instance=new r),r.instance}addProjectAllowedTools(e){let t=this.loadSettingsFromFile(this.getProjectSettingsPath()),n=t.permissions||{allow:[],deny:[]};if(n.allow||(n.allow=[]),n.allow.includes(e))yn(`\u5DE5\u5177 '${e}' \u5DF2\u5B58\u5728\u4E8E\u9879\u76EE\u5141\u8BB8\u5217\u8868\u4E2D\uFF0C\u65E0\u9700\u91CD\u590D\u6DFB\u52A0`);else{n.allow.push(e),n.allow.sort();let i={...t,permissions:{...n}};this.saveSettingsToFile(this.getProjectSettingsPath(),i,da),yn(`\u5DF2\u5C06\u5DE5\u5177 '${e}' \u6DFB\u52A0\u5230\u9879\u76EE\u5141\u8BB8\u5217\u8868`)}}getUserSettingsPath(){return M1(yF(),".hcode","settings.json")}getProjectSettingsPath(){let e=process.cwd();return M1(e,".hcode","settings.json")}ensureDirExists(e){let t=mF(e);fa(t)||vF(t,{recursive:!0})}loadSettingsFromFile(e){if(!fa(e))return{};let t="";try{return t=bF(e,"utf-8"),JSON.parse(t)}catch(n){return console.error(`Error reading settings file ${e} => ${t} `,n),{}}}saveSettingsToFile(e,t,n){let i={...t};for(let[o,a]of Object.entries(t))if(o in n)if(typeof a=="object"&&typeof n[o]=="object"){if(
|
|
44
|
+
`;C1(r)?sF(r,i,"utf8"):uF(r,i,"utf8")}var bB=5*1024*1024,vB=1024*1024,mB=Buffer.from('"compact_boundary"');var da={env:{},permissions:{allow:[],deny:[],ask:[]},enableAllProjectMcpServers:!1,enabledMcpjsonServers:[],autoCompactEnabled:!0,language:"auto",disableSuggestion:!1,autoMemory:{enabled:!0,minTokens:3e3,minTurns:3,teamMemoryEnabled:!1},autoDream:{enabled:!0,minHours:24,minSessions:5}},kc=class r{static test=!1;static testSettings;static setSettings(e){r.testSettings=e}static instance;static isTasksEnable(){return process.env.HAWA_CODE_ENABLE_TASKS=="true"||r.isAgentTeamEnable()}static isAgentTeamEnable(){return process.env.HAWA_CODE_EXPERIMENTAL_AGENT_TEAMS=="1"}constructor(){this.initializeConfigDirectories()}initializeConfigDirectories(){let e=this.getUserSettingsPath(),t=this.getProjectSettingsPath();this.ensureDirExists(e),fa(e)||xa(e,JSON.stringify(this.getDefaultSettingsStructure(),null,2),"utf-8"),this.ensureDirExists(t),fa(t)||xa(t,JSON.stringify(this.getDefaultSettingsStructure(),null,2),"utf-8")}getDefaultSettingsStructure(){return{env:{},permissions:{allow:[],deny:[],ask:[]},autoMode:{enabled:!1,model:"",maxConsecutiveDenials:3,maxTotalDenials:20}}}static getInstance(){return r.instance||(r.instance=new r),r.instance}addProjectAllowedTools(e){let t=this.loadSettingsFromFile(this.getProjectSettingsPath()),n=t.permissions||{allow:[],deny:[]};if(n.allow||(n.allow=[]),n.allow.includes(e))yn(`\u5DE5\u5177 '${e}' \u5DF2\u5B58\u5728\u4E8E\u9879\u76EE\u5141\u8BB8\u5217\u8868\u4E2D\uFF0C\u65E0\u9700\u91CD\u590D\u6DFB\u52A0`);else{n.allow.push(e),n.allow.sort();let i={...t,permissions:{...n}};this.saveSettingsToFile(this.getProjectSettingsPath(),i,da),yn(`\u5DF2\u5C06\u5DE5\u5177 '${e}' \u6DFB\u52A0\u5230\u9879\u76EE\u5141\u8BB8\u5217\u8868`)}}getUserSettingsPath(){return M1(yF(),".hcode","settings.json")}getProjectSettingsPath(){let e=process.cwd();return M1(e,".hcode","settings.json")}ensureDirExists(e){let t=mF(e);fa(t)||vF(t,{recursive:!0})}loadSettingsFromFile(e){if(!fa(e))return{};let t="";try{return t=bF(e,"utf-8"),JSON.parse(t)}catch(n){return console.error(`Error reading settings file ${e} => ${t} `,n),{}}}saveSettingsToFile(e,t,n){let i={...t};for(let[o,a]of Object.entries(t))if(o in n)if(typeof a=="object"&&typeof n[o]=="object"){if(JSON.stringify(a)===JSON.stringify(n[o]))delete i[o];else if(o==="permissions"&&a&&typeof a=="object"){let u=n.permissions||{},s=a;Array.isArray(s.allow)&&Array.isArray(u.allow)&&JSON.stringify(s.allow)===JSON.stringify(u.allow)&&delete s.allow,Array.isArray(s.deny)&&Array.isArray(u.deny)&&JSON.stringify(s.deny)===JSON.stringify(u.deny)&&delete s.deny,Object.keys(s).length===0&&delete i[o]}}else a===n[o]&&delete i[o];this.ensureDirExists(e),Object.keys(i).length===0?xa(e,"{}","utf-8"):xa(e,JSON.stringify(i,null,2),"utf-8")}mergeStringArrays(e,t){if(!e&&!t)return;let n=[...e||[]];return(t||[]).forEach(i=>{n.includes(i)||n.push(i)}),n}loadSettings(){let e=this.loadSettingsFromFile(this.getUserSettingsPath()),t=this.loadSettingsFromFile(this.getProjectSettingsPath()),n={...e.env,...t.env},i={...e.permissions};if(e.permissions?.allow&&t.permissions?.allow){let s=[...e.permissions.allow];t.permissions.allow.forEach(c=>{s.includes(c)||s.push(c)}),i.allow=s}else t.permissions?.allow&&(i.allow=[...t.permissions.allow]);if(e.permissions?.deny&&t.permissions?.deny){let s=[...e.permissions.deny];t.permissions.deny.forEach(c=>{s.includes(c)||s.push(c)}),i.deny=s}else t.permissions?.deny&&(i.deny=[...t.permissions.deny]);if(e.permissions?.ask&&t.permissions?.ask){let s=[...e.permissions.ask];t.permissions.ask.forEach(c=>{s.includes(c)||s.push(c)}),i.ask=s}else t.permissions?.ask&&(i.ask=[...t.permissions.ask]);let o={...da,...e,...t};n&&Object.keys(n).length>0&&(o.env=n),i&&(i.allow||i.deny||i.ask)&&(o.permissions=i);let a=e.sandbox,u=t.sandbox;if(a||u){let s={...a,...u},c=a?.filesystem,f=u?.filesystem;(c||f)&&(s.filesystem={...c,...f,allowWrite:this.mergeStringArrays(c?.allowWrite,f?.allowWrite),denyWrite:this.mergeStringArrays(c?.denyWrite,f?.denyWrite),denyRead:this.mergeStringArrays(c?.denyRead,f?.denyRead),allowRead:this.mergeStringArrays(c?.allowRead,f?.allowRead)});let d=a?.network,p=u?.network;(d||p)&&(s.network={...d,...p,allowedDomains:this.mergeStringArrays(d?.allowedDomains,p?.allowedDomains),deniedDomains:this.mergeStringArrays(d?.deniedDomains,p?.deniedDomains),allowUnixSockets:this.mergeStringArrays(d?.allowUnixSockets,p?.allowUnixSockets)});let h=a?.ignoreViolations,m=u?.ignoreViolations;if(h||m){let v={};if(h)for(let[b,y]of Object.entries(h))v[b]=[...y];if(m)for(let[b,y]of Object.entries(m))v[b]?v[b]=this.mergeStringArrays(v[b],y)??[]:v[b]=[...y];s.ignoreViolations=v}o.sandbox=s}return o}saveUserSettings(e){let t=this.getUserSettingsPath();this.saveSettingsToFile(t,e,da)}saveProjectSettings(e){let t=this.getProjectSettingsPath();this.saveSettingsToFile(t,e,da)}getSetting(e){return this.loadSettings()[e]}updateSetting(e,t){let i={...this.loadSettings(),[e]:t};this.saveProjectSettings(i)}resetSetting(e){let n={...this.loadSettings()};delete n[e],this.saveProjectSettings(n)}getAllSettings(){return this.loadSettings()}},gn=kc.getInstance(),T1=gn.getAllSettings();function Ic(){let r=gn.getUserSettingsPath(),e=gn.getProjectSettingsPath();j1(r,(t,n)=>{t==="change"&&(T1=null,yn("\u7528\u6237\u7EA7\u914D\u7F6E\u5DF2\u70ED\u52A0\u8F7D"))}).on("error",t=>{Bc("\u7528\u6237\u7EA7\u914D\u7F6E\u76D1\u63A7\u51FA\u9519:",t),setTimeout(()=>Ic(),100)}),j1(e,(t,n)=>{t==="change"&&(T1=null,yn("\u9879\u76EE\u7EA7\u914D\u7F6E\u5DF2\u70ED\u52A0\u8F7D",n))}).on("error",t=>{Bc("\u9879\u76EE\u7EA7\u914D\u7F6E\u76D1\u63A7\u51FA\u9519:",t),setTimeout(()=>Ic(),100)})}Ic();function gF(){Wc();let r=Vc(),e=[];Object.entries(r).forEach(([t,n],i)=>{n.enable===!0&&e.push({name:`${i}. ${t}`,value:t})}),e.length===0&&(console.error(`\u8BF7\u68C0\u67E5\u914D\u7F6E\u6587\u4EF6 ~/${Kr}/config.json\uFF0C\u786E\u4FDD\u81F3\u5C11\u6709\u4E00\u4E2A\u6A21\u578B\u7684 enable \u8BBE\u7F6E\u4E3A true\u3002`),process.exit(1)),(async()=>{let t=await E1.prompt([{type:"list",name:"choice",message:"\u8BF7\u9009\u62E9\u4E00\u4E2A\u6A21\u578B\uFF1A",choices:e}]);var n=r[t.choice];let i=n.env,o={};Object.keys(i).forEach(d=>{["BASE_URL","AUTH_TOKEN","MODEL","SMALL_FAST_MODEL"].includes(d)?o[`ANTHROPIC_${d}`]=i[d]:o[d]=i[d]});let a=gn.getSetting("env")||{};process.platform==="win32"&&!process.env.HCODE_GIT_BASH_PATH&&!o.HCODE_GIT_BASH_PATH&&!a.HCODE_GIT_BASH_PATH&&(console.error("\u5728 Windows \u7CFB\u7EDF\u4E0A\u8FD0\u884C\uFF0C\u8BF7\u786E\u4FDD\u914D\u7F6E\u73AF\u5883\u53D8\u91CF HCODE_GIT_BASH_PATH\uFF0C\u53C2\u8003\u6587\u6863\uFF1Ahttps://www.hawacode.com/docs"),process.exit(1));let u=k1(import.meta.url),s=pa.dirname(u),c=pa.join(s,"cli.js"),f=B1(process.execPath,["--no-deprecation",c,...process.argv.slice(2)],{env:{...process.env,...o,...a},stdio:"inherit",cwd:process.cwd()});f.on("error",d=>{console.error("Failed to start command:",d.message),process.exit(1)}),f.on("close",d=>{process.exit(d||0)})})()}async function DF(){let r=k1(import.meta.url),e=pa.dirname(r),t=pa.join(e,"cli.js"),n=B1(process.execPath,["--no-deprecation",t,...process.argv.slice(2)],{env:process.env,stdio:"inherit",cwd:process.cwd()});n.on("error",i=>{console.error("Failed to start command:",i.message),process.exit(1)}),n.on("close",i=>{process.exit(i||0)})}async function _F(){process.argv.length<=2?gF():await DF()}await _F();
|