@nalvietnam/avatar-cli 3.17.5 → 3.17.6

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/index.js CHANGED
@@ -103,7 +103,7 @@ Y\xEAu c\u1EA7u: ch\u1EC9 ch\u1EEF/s\u1ED1/dash/underscore/dot, kh\xF4ng '/', '\
103
103
  `),{padding:1,borderStyle:"round"})}
104
104
  `);let o=In(t,ct);if(await g(o)){let i=await ma(o);i&&process.stdout.write(`
105
105
  ${i}
106
- `)}fa()}import{join as Ln}from"path";v();h();var Ca=3;async function Sa(t,e,n,r=!1){let o=0;for(;;)try{return{pinnedTag:(await la(t,e)).pinnedTag,skipped:!1}}catch(i){if(i instanceof Wt)throw i;if(i instanceof Tt){s.error(i.message);let l=await q({taskName:"T\u1EA3i team-ai-pack (x\xE1c th\u1EF1c NAL)",reason:i.message,allowSkip:!0,hint:"Ch\u1EA1y 'avatar login' v\u1EDBi t\xE0i kho\u1EA3n @nal.vn r\u1ED3i th\u1EED l\u1EA1i. Ho\u1EB7c skip + 'avatar sync' sau."});if(l==="abort")throw new P("User abort t\u1EA1i b\u01B0\u1EDBc x\xE1c th\u1EF1c t\u1EA3i pack.");if(l==="skip")return s.warn("Skip team-ai-pack. Workspace d\xF9ng \u0111\u01B0\u1EE3c nh\u01B0ng ch\u01B0a c\xF3 pack. Pull sau qua `avatar sync`."),{pinnedTag:null,skipped:!0};continue}if(i instanceof at&&o<Ca){o+=1,s.warn(`T\u1EA3i pack l\u1ED7i m\u1EA1ng (l\u1EA7n ${o}/${Ca}): ${i.message}`),await md(1e3*o);continue}let a=i instanceof Error?i.message:String(i),c=await q({taskName:"T\u1EA3i team-ai-pack tarball",reason:a,allowSkip:!0,hint:"Network glitch? Retry th\u01B0\u1EDDng work. Skip \u2192 d\xF9ng `avatar sync` sau."});if(c==="abort")throw new P("User abort t\u1EA1i b\u01B0\u1EDBc t\u1EA3i team-ai-pack.");if(c==="skip")return s.warn("Skip team-ai-pack. Workspace d\xF9ng \u0111\u01B0\u1EE3c nh\u01B0ng ch\u01B0a c\xF3 pack. Pull sau qua `avatar sync`."),{pinnedTag:null,skipped:!0};o=0}}function md(t){return new Promise(e=>setTimeout(e,t))}It();import{confirm as pd,input as Mn,password as Ta,select as ao}from"@inquirer/prompts";h();async function Ea(t){if(!await pd({message:"B\u1EA1n c\xF3 mu\u1ED1n setup giao ti\u1EBFp gi\u1EEFa DEV v\xE0 PO kh\xF4ng?",default:!0}))return{ok:!1,reason:"skipped"};if(await ao({message:"Ch\u1ECDn k\xEAnh giao ti\u1EBFp:",choices:[{name:"Mattermost (https://mm.nal.vn)",value:"mattermost"},{name:"H\u1EE7y",value:"cancel"}]})==="cancel")return{ok:!1,reason:"skipped"};s.info("Setup Mattermost cho workspace...");let r=(await Mn({message:"Mattermost URL:",default:mn})).trim(),o=(await Mn({message:"T\xEAn bot Mattermost:",default:et})).trim(),i=(await Mn({message:"T\xEAn channel chat (ho\u1EB7c team/channel):",validate:p=>p.trim().length>0?!0:"Kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng"})).trim(),a=o===et?await ln(o):null,c=!a&&o===et?await cn(o):null,l;if(a)s.info("D\xF9ng bot token @avatar \u0111\xE3 l\u01B0u trong keychain."),l=a;else if(c)s.info("\u0110\xE3 l\u1EA5y bot token @avatar t\u1EEB server NAL."),l=c,await Kt(o,l);else if(o===et&&s.dim("Ch\u01B0a login? Ch\u1EA1y avatar login, ho\u1EB7c d\xE1n token th\u1EE7 c\xF4ng:"),l=(await Ta({message:"D\xE1n bot token Mattermost:",mask:"*"})).trim(),!l)throw new Error("Token r\u1ED7ng \u2014 h\u1EE7y Setup Communication.");let u;for(;;)try{u=await un(r,l,o,i,async p=>ao({message:`Channel c\xF3 \u1EDF ${p.length} team \u2014 ch\u1ECDn:`,choices:p.map(f=>({name:`${f.teamName}/${i} (${f.teamDisplayName})`,value:f}))}));break}catch(p){let f=p instanceof G?p.kind:"other",w=p instanceof Error?p.message:String(p);s.warn(w);let k=f==="token";if(await ao({message:"X\u1EED l\xFD th\u1EBF n\xE0o?",choices:[{name:k?"Nh\u1EADp l\u1EA1i token":"\u0110i\u1EC1n l\u1EA1i t\xEAn channel",value:"retry"},{name:"Setup l\u1EA1i sau v\u1EDBi l\u1EC7nh avatar comm-connect",value:"defer"}]})==="defer")return{ok:!1,reason:"deferred"};if(k){if(l=(await Ta({message:"D\xE1n bot token Mattermost:",mask:"*"})).trim(),!l)throw new Error("Token r\u1ED7ng \u2014 h\u1EE7y Setup Communication.")}else i=(await Mn({message:"T\xEAn channel chat (ho\u1EB7c team/channel):",validate:_=>_.trim().length>0?!0:"Kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng"})).trim()}await Kt(o,l);let d={mattermostUrl:r,botName:o,botToken:l,teamId:u.teamId,defaultChannelId:u.channelId,defaultChannelName:u.channelName};return await Wr(t.workspacePath,d),s.success(`Mattermost ready \xB7 channel: ${u.channelName}`),{ok:!0,channelName:u.channelName}}v();import{promises as dd}from"fs";import{join as $a}from"path";var gd=[".claude","pack","tools"];function fd(t){return $a(t,...gd)}async function Ae(t){let e=fd(t);if(!await g(e))return[];let n=await dd.readdir(e,{withFileTypes:!0}),r=[];for(let o of n)o.isDirectory()&&await g($a(e,o.name,"tool.json"))&&r.push(o.name);return r.sort()}async function Ce(t){let[e,n]=await Promise.all([Ae(t),Ht(t)]);return{available:e,enabled:n}}h();var hd=new Set(["ai-orchestrator"]);async function Ra(t,e={}){let r=(await Ae(t)).filter(o=>!hd.has(o));if(r.length!==0){s.info(`B\u1EADt ${r.length} tool m\u1EB7c \u0111\u1ECBnh (g\u1EE1 sau b\u1EB1ng 'avatar tools disable <t\xEAn>')...`);for(let o of r)await X(t,o,{silent:!0}),s.dim(` \u2713 ${o}`)}}import{promises as Nn}from"fs";import{dirname as co,join as _a,relative as lo}from"path";import{promises as wd}from"fs";function kd(){let t=new Date,e=n=>n.toString().padStart(2,"0");return`${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}-${e(t.getHours())}${e(t.getMinutes())}`}async function Pa(t){let e=`${t}.backup-${kd()}`;return await wd.rename(t,e),e}v();var uo=["skills","agents","commands","hooks","workflows","scripts","knowledge"];async function yd(t){try{return(await Nn.lstat(t)).isSymbolicLink()}catch{return!1}}async function vd(t,e,n){let r=lo(co(e),e)||e;if(!await g(t))return{dir:r,action:"source-missing"};if(await g(e))if(await yd(e))await Nn.unlink(e);else if(n){let i=await Pa(e),a=lo(co(e),t);return await Nn.symlink(a,e),{dir:r,action:"backed-up-and-linked",backupPath:i}}else return{dir:r,action:"skipped-conflict"};let o=lo(co(e),t);return await Nn.symlink(o,e),{dir:r,action:"created"}}async function On(t,e,n){let r=[];for(let o of uo){let i=_a(t,o),a=_a(e,o);r.push(await vd(i,a,n))}return r}h();function bd(t){return t?`
106
+ `)}fa()}import{join as Ln}from"path";v();h();var Ca=3;async function Sa(t,e,n,r=!1){let o=0;for(;;)try{return{pinnedTag:(await la(t,e)).pinnedTag,skipped:!1}}catch(i){if(i instanceof Wt)throw i;if(i instanceof Tt){s.error(i.message);let l=await q({taskName:"T\u1EA3i team-ai-pack (x\xE1c th\u1EF1c NAL)",reason:i.message,allowSkip:!0,hint:"Ch\u1EA1y 'avatar login' v\u1EDBi t\xE0i kho\u1EA3n @nal.vn r\u1ED3i th\u1EED l\u1EA1i. Ho\u1EB7c skip + 'avatar sync' sau."});if(l==="abort")throw new P("User abort t\u1EA1i b\u01B0\u1EDBc x\xE1c th\u1EF1c t\u1EA3i pack.");if(l==="skip")return s.warn("Skip team-ai-pack. Workspace d\xF9ng \u0111\u01B0\u1EE3c nh\u01B0ng ch\u01B0a c\xF3 pack. Pull sau qua `avatar sync`."),{pinnedTag:null,skipped:!0};continue}if(i instanceof at&&o<Ca){o+=1,s.warn(`T\u1EA3i pack l\u1ED7i m\u1EA1ng (l\u1EA7n ${o}/${Ca}): ${i.message}`),await md(1e3*o);continue}let a=i instanceof Error?i.message:String(i),c=await q({taskName:"T\u1EA3i team-ai-pack tarball",reason:a,allowSkip:!0,hint:"Network glitch? Retry th\u01B0\u1EDDng work. Skip \u2192 d\xF9ng `avatar sync` sau."});if(c==="abort")throw new P("User abort t\u1EA1i b\u01B0\u1EDBc t\u1EA3i team-ai-pack.");if(c==="skip")return s.warn("Skip team-ai-pack. Workspace d\xF9ng \u0111\u01B0\u1EE3c nh\u01B0ng ch\u01B0a c\xF3 pack. Pull sau qua `avatar sync`."),{pinnedTag:null,skipped:!0};o=0}}function md(t){return new Promise(e=>setTimeout(e,t))}It();import{confirm as pd,input as Mn,password as Ta,select as ao}from"@inquirer/prompts";h();async function Ea(t){if(!await pd({message:"B\u1EA1n c\xF3 mu\u1ED1n setup giao ti\u1EBFp gi\u1EEFa DEV v\xE0 PO kh\xF4ng?",default:!1}))return{ok:!1,reason:"skipped"};if(await ao({message:"Ch\u1ECDn k\xEAnh giao ti\u1EBFp:",choices:[{name:"Mattermost (https://mm.nal.vn)",value:"mattermost"},{name:"H\u1EE7y",value:"cancel"}]})==="cancel")return{ok:!1,reason:"skipped"};s.info("Setup Mattermost cho workspace...");let r=(await Mn({message:"Mattermost URL:",default:mn})).trim(),o=(await Mn({message:"T\xEAn bot Mattermost:",default:et})).trim(),i=(await Mn({message:"T\xEAn channel chat (ho\u1EB7c team/channel):",validate:p=>p.trim().length>0?!0:"Kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng"})).trim(),a=o===et?await ln(o):null,c=!a&&o===et?await cn(o):null,l;if(a)s.info("D\xF9ng bot token @avatar \u0111\xE3 l\u01B0u trong keychain."),l=a;else if(c)s.info("\u0110\xE3 l\u1EA5y bot token @avatar t\u1EEB server NAL."),l=c,await Kt(o,l);else if(o===et&&s.dim("Ch\u01B0a login? Ch\u1EA1y avatar login, ho\u1EB7c d\xE1n token th\u1EE7 c\xF4ng:"),l=(await Ta({message:"D\xE1n bot token Mattermost:",mask:"*"})).trim(),!l)throw new Error("Token r\u1ED7ng \u2014 h\u1EE7y Setup Communication.");let u;for(;;)try{u=await un(r,l,o,i,async p=>ao({message:`Channel c\xF3 \u1EDF ${p.length} team \u2014 ch\u1ECDn:`,choices:p.map(f=>({name:`${f.teamName}/${i} (${f.teamDisplayName})`,value:f}))}));break}catch(p){let f=p instanceof G?p.kind:"other",w=p instanceof Error?p.message:String(p);s.warn(w);let k=f==="token";if(await ao({message:"X\u1EED l\xFD th\u1EBF n\xE0o?",choices:[{name:k?"Nh\u1EADp l\u1EA1i token":"\u0110i\u1EC1n l\u1EA1i t\xEAn channel",value:"retry"},{name:"Setup l\u1EA1i sau v\u1EDBi l\u1EC7nh avatar comm-connect",value:"defer"}]})==="defer")return{ok:!1,reason:"deferred"};if(k){if(l=(await Ta({message:"D\xE1n bot token Mattermost:",mask:"*"})).trim(),!l)throw new Error("Token r\u1ED7ng \u2014 h\u1EE7y Setup Communication.")}else i=(await Mn({message:"T\xEAn channel chat (ho\u1EB7c team/channel):",validate:_=>_.trim().length>0?!0:"Kh\xF4ng \u0111\u01B0\u1EE3c r\u1ED7ng"})).trim()}await Kt(o,l);let d={mattermostUrl:r,botName:o,botToken:l,teamId:u.teamId,defaultChannelId:u.channelId,defaultChannelName:u.channelName};return await Wr(t.workspacePath,d),s.success(`Mattermost ready \xB7 channel: ${u.channelName}`),{ok:!0,channelName:u.channelName}}v();import{promises as dd}from"fs";import{join as $a}from"path";var gd=[".claude","pack","tools"];function fd(t){return $a(t,...gd)}async function Ae(t){let e=fd(t);if(!await g(e))return[];let n=await dd.readdir(e,{withFileTypes:!0}),r=[];for(let o of n)o.isDirectory()&&await g($a(e,o.name,"tool.json"))&&r.push(o.name);return r.sort()}async function Ce(t){let[e,n]=await Promise.all([Ae(t),Ht(t)]);return{available:e,enabled:n}}h();var hd=new Set(["ai-orchestrator"]);async function Ra(t,e={}){let r=(await Ae(t)).filter(o=>!hd.has(o));if(r.length!==0){s.info(`B\u1EADt ${r.length} tool m\u1EB7c \u0111\u1ECBnh (g\u1EE1 sau b\u1EB1ng 'avatar tools disable <t\xEAn>')...`);for(let o of r)await X(t,o,{silent:!0}),s.dim(` \u2713 ${o}`)}}import{promises as Nn}from"fs";import{dirname as co,join as _a,relative as lo}from"path";import{promises as wd}from"fs";function kd(){let t=new Date,e=n=>n.toString().padStart(2,"0");return`${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}-${e(t.getHours())}${e(t.getMinutes())}`}async function Pa(t){let e=`${t}.backup-${kd()}`;return await wd.rename(t,e),e}v();var uo=["skills","agents","commands","hooks","workflows","scripts","knowledge"];async function yd(t){try{return(await Nn.lstat(t)).isSymbolicLink()}catch{return!1}}async function vd(t,e,n){let r=lo(co(e),e)||e;if(!await g(t))return{dir:r,action:"source-missing"};if(await g(e))if(await yd(e))await Nn.unlink(e);else if(n){let i=await Pa(e),a=lo(co(e),t);return await Nn.symlink(a,e),{dir:r,action:"backed-up-and-linked",backupPath:i}}else return{dir:r,action:"skipped-conflict"};let o=lo(co(e),t);return await Nn.symlink(o,e),{dir:r,action:"created"}}async function On(t,e,n){let r=[];for(let o of uo){let i=_a(t,o),a=_a(e,o);r.push(await vd(i,a,n))}return r}h();function bd(t){return t?`
107
107
  ### \u{1F9E0} CODEBASE INTELLIGENCE \u2014 GitNexus
108
108
 
109
109
  Workspace c\xF3 GitNexus index t\u1EA1i \`.gitnexus/\` cung c\u1EA5p architectural awareness