colana 1.0.0-beta.95 → 1.0.0-beta.97
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/bin/admin.js +1 -1
- package/bin/colana.js +1 -1
- package/package.json +1 -1
- package/public/dist/app.js +1 -1
- package/public/vendor/xterm/xterm.css +81 -5
- package/public/vendor/xterm/xterm.js +1 -1
- package/public/vendor/xterm-addon-fit/xterm-addon-fit.js +2 -2
- package/public/vendor/xterm-addon-search/xterm-addon-search.js +2 -2
- package/public/vendor/xterm-addon-unicode11/xterm-addon-unicode11.js +2 -2
- package/public/vendor/xterm-addon-web-links/xterm-addon-web-links.js +2 -2
- package/public/wizard.js +1 -1
- package/server/admin.js +1 -1
- package/server/agent/index.js +1 -1
- package/server/agent/manager.js +1 -1
- package/server/agent-control-routes.js +1 -1
- package/server/analytics-routes.js +1 -1
- package/server/analytics.js +1 -1
- package/server/auth.js +1 -1
- package/server/auto-resume.js +1 -1
- package/server/blueprint-exporter.js +1 -1
- package/server/blueprint-importer.js +1 -1
- package/server/blueprint-routes.js +1 -1
- package/server/blueprint-store.js +1 -1
- package/server/blueprint-sync.js +1 -1
- package/server/brand.js +1 -1
- package/server/checkpoint-store.js +1 -1
- package/server/config.js +1 -1
- package/server/context-sync.js +1 -1
- package/server/db.js +1 -1
- package/server/dependency-detector.js +1 -1
- package/server/diagnostics-routes.js +1 -1
- package/server/error-recovery.js +1 -1
- package/server/errors.js +1 -1
- package/server/file-browser.js +1 -1
- package/server/git-ops.js +1 -1
- package/server/gog-auth.js +1 -1
- package/server/index.js +1 -1
- package/server/installer/index.js +1 -1
- package/server/installer/manager.js +1 -1
- package/server/integration-hub.js +1 -1
- package/server/integration-routes.js +1 -1
- package/server/key-manager.js +1 -1
- package/server/license-routes.js +1 -1
- package/server/license.js +1 -1
- package/server/logger.js +1 -1
- package/server/openclaw-config.js +1 -1
- package/server/permission-mcp.js +1 -1
- package/server/permission-routes.js +1 -1
- package/server/personal-agent-routes.js +1 -1
- package/server/personal-chat-store.js +1 -1
- package/server/platform.js +1 -1
- package/server/port-finder.js +1 -1
- package/server/preflight.js +1 -1
- package/server/project-config.js +1 -1
- package/server/project-routes.js +1 -1
- package/server/project-store.js +1 -1
- package/server/pty/index.js +1 -1
- package/server/pty/manager.js +1 -1
- package/server/runtime-policy.js +1 -1
- package/server/server-control-routes.js +1 -1
- package/server/service-manager.js +1 -1
- package/server/session-routes.js +1 -1
- package/server/session-store.js +1 -1
- package/server/settings-routes.js +1 -1
- package/server/settings-store.js +1 -1
- package/server/snippet-routes.js +1 -1
- package/server/snippet-store.js +1 -1
- package/server/spawn-env.js +1 -1
- package/server/system-info.js +1 -1
- package/server/template-routes.js +1 -1
- package/server/template-store.js +1 -1
- package/server/updater.js +1 -1
- package/server/usage-tracker.js +1 -1
- package/server/validation.js +1 -1
- package/server/webhook-routes.js +1 -1
- package/server/wizard-routes.js +1 -1
- package/server/worktree-manager.js +1 -1
package/bin/admin.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x479eb0=a0_0x3c6f;(function(_0x3da012,_0x3f04a5){const _0x60e9c5=a0_0x3c6f,_0x472c9b=_0x3da012();while(!![]){try{const _0x38f556=parseInt(_0x60e9c5(0x1a5))/0x1+parseInt(_0x60e9c5(0x1ed))/0x2*(-parseInt(_0x60e9c5(0x1b6))/0x3)+-parseInt(_0x60e9c5(0x1ce))/0x4*(-parseInt(_0x60e9c5(0x1b0))/0x5)+parseInt(_0x60e9c5(0x1e7))/0x6*(parseInt(_0x60e9c5(0x1be))/0x7)+-parseInt(_0x60e9c5(0x1e2))/0x8+parseInt(_0x60e9c5(0x1e6))/0x9*(parseInt(_0x60e9c5(0x195))/0xa)+parseInt(_0x60e9c5(0x1c3))/0xb;if(_0x38f556===_0x3f04a5)break;else _0x472c9b['push'](_0x472c9b['shift']());}catch(_0x2f9f03){_0x472c9b['push'](_0x472c9b['shift']());}}}(a0_0x1202,0x87e98));import a0_0x8ca31b from'fs';import a0_0x108baf from'path';import a0_0x1f5977 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x108baf[a0_0x479eb0(0x1d7)](fileURLToPath(import.meta.url));function parseArgs(_0x210ae8){const _0x252c79=a0_0x479eb0,_0x53cb1d=_0x210ae8['slice'](0x2),_0x1c5e21=_0x53cb1d[0x0],_0xace269=[],_0x33a371={};for(let _0x9d7329=0x1;_0x9d7329<_0x53cb1d[_0x252c79(0x1ae)];_0x9d7329++){if(_0x53cb1d[_0x9d7329][_0x252c79(0x1ef)]('--')){let _0x95c584=_0x53cb1d[_0x9d7329][_0x252c79(0x1af)](0x2),_0x17f437;const _0x245df6=_0x95c584['indexOf']('=');_0x245df6!==-0x1?(_0x17f437=_0x95c584['slice'](_0x245df6+0x1),_0x95c584=_0x95c584['slice'](0x0,_0x245df6)):_0x17f437=_0x9d7329+0x1<_0x53cb1d[_0x252c79(0x1ae)]&&!_0x53cb1d[_0x9d7329+0x1][_0x252c79(0x1ef)]('--')?_0x53cb1d[++_0x9d7329]:'true',_0x33a371[_0x95c584]=_0x17f437;}else _0xace269['push'](_0x53cb1d[_0x9d7329]);}return{'command':_0x1c5e21,'flags':_0x33a371,'positional':_0xace269};}function maskKey(_0x582e8e){const _0x3e7300=a0_0x479eb0;if(!_0x582e8e||_0x582e8e['length']<=0x8)return _0x3e7300(0x1a7);return _0x582e8e['slice'](0x0,0x4)+'****';}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x140374=a0_0x479eb0;for(let _0xe53e3a=0x0;_0xe53e3a<MAX_PORT_SCAN;_0xe53e3a++){const _0x568347=DEFAULT_PORT+_0xe53e3a;try{const _0x4deb42=await fetch('http://127.0.0.1:'+_0x568347+_0x140374(0x1aa),{'signal':AbortSignal['timeout'](0x1f4)});if(_0x4deb42['ok']){const _0x4c31aa=await _0x4deb42[_0x140374(0x1ab)]();if(_0x4c31aa['status']==='ok')return _0x140374(0x1a1)+_0x568347;}}catch{}}return null;}async function createKeyViaApi(_0xa5b2cc,_0x15e558){const _0x3020d1=a0_0x479eb0,_0x5ab30a=await fetch(_0xa5b2cc+_0x3020d1(0x1bd),{'method':_0x3020d1(0x1bc),'headers':{'Content-Type':_0x3020d1(0x1cd)},'body':JSON['stringify'](_0x15e558)});if(!_0x5ab30a['ok']){const _0x1a26a1=await _0x5ab30a['json']()[_0x3020d1(0x1c7)](()=>({'error':'HTTP\x20'+_0x5ab30a[_0x3020d1(0x1e3)]}));throw new Error(_0x1a26a1['error']||_0x3020d1(0x1de)+_0x5ab30a[_0x3020d1(0x1e3)]);}return _0x5ab30a[_0x3020d1(0x1ab)]();}async function listKeysViaApi(_0x93e524,_0x4a17b4){const _0x4febd6=a0_0x479eb0,_0x2fe4ad=new URLSearchParams();if(_0x4a17b4[_0x4febd6(0x1c2)])_0x2fe4ad[_0x4febd6(0x198)]('type',_0x4a17b4[_0x4febd6(0x1c2)]);if(_0x4a17b4['status'])_0x2fe4ad['set']('status',_0x4a17b4['status']);const _0x562972=_0x2fe4ad['toString'](),_0x10f8ce=await fetch(_0x93e524+'/api/admin/keys'+(_0x562972?'?'+_0x562972:''));if(!_0x10f8ce['ok']){const _0x3a2bb7=await _0x10f8ce[_0x4febd6(0x1ab)]()['catch'](()=>({'error':'HTTP\x20'+_0x10f8ce[_0x4febd6(0x1e3)]}));throw new Error(_0x3a2bb7['error']||_0x4febd6(0x1de)+_0x10f8ce[_0x4febd6(0x1e3)]);}return _0x10f8ce[_0x4febd6(0x1ab)]();}async function revokeKeyViaApi(_0x3debbc,_0x3059f1){const _0x138f4a=a0_0x479eb0,_0x14ea0a=await fetch(_0x3debbc+_0x138f4a(0x1a2)+_0x3059f1,{'method':'DELETE'});if(!_0x14ea0a['ok']){const _0x59ac20=await _0x14ea0a[_0x138f4a(0x1ab)]()['catch'](()=>({'error':'HTTP\x20'+_0x14ea0a[_0x138f4a(0x1e3)]}));throw new Error(_0x59ac20[_0x138f4a(0x1a6)]||'Server\x20responded\x20with\x20'+_0x14ea0a['status']);}return _0x14ea0a['json']();}let _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0x58b11a}=await import('../server/db.js');await _0x58b11a(),_dbReady=!![];}async function createKey(_0x3e0929){const _0x36bf5a=a0_0x479eb0,_0xcb9003=_0x3e0929['name'],_0x511056=_0x3e0929['type']||'staff',_0x31fe43=_0x3e0929['email']||null,_0x55f6c2=_0x3e0929['expires']||null;if(!_0xcb9003){console[_0x36bf5a(0x1a6)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x36bf5a(0x1a6)]+'ERROR:\x20--name\x20is\x20required.'+c['reset']+'\x0a'),console[_0x36bf5a(0x1a6)]('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process['exit'](0x1);return;}const _0x2300d7=[_0x36bf5a(0x1c1),_0x36bf5a(0x1b5),'beta'];if(!_0x2300d7['includes'](_0x511056)){console[_0x36bf5a(0x1a6)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x36bf5a(0x1a6)]+'ERROR:\x20Invalid\x20type\x20\x22'+_0x511056+_0x36bf5a(0x19b)+_0x2300d7[_0x36bf5a(0x19d)](',\x20')+c[_0x36bf5a(0x1db)]+'\x0a'),process['exit'](0x1);return;}const _0x2e9ffe=await findRunningServer();let _0x2c75a3;if(_0x2e9ffe)try{_0x2c75a3=await createKeyViaApi(_0x2e9ffe,{'name':_0xcb9003,'type':_0x511056,'email':_0x31fe43||undefined,'expires':_0x55f6c2||undefined});}catch(_0x417839){console[_0x36bf5a(0x1a6)](_0x36bf5a(0x18e)+icons[_0x36bf5a(0x1b4)]+'\x20'+c[_0x36bf5a(0x1a6)]+_0x417839[_0x36bf5a(0x191)]+c[_0x36bf5a(0x1db)]+'\x20'+c['muted']+'(via\x20server)'+c[_0x36bf5a(0x1db)]+'\x0a'),process[_0x36bf5a(0x1c4)](0x1);return;}else{await ensureDb();const {generateKey:_0x459ac8}=await import(_0x36bf5a(0x196));try{_0x2c75a3=_0x459ac8(_0xcb9003,_0x511056,_0x31fe43,_0x55f6c2);}catch(_0x7aca40){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x7aca40['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}if(!_0x2c75a3||!_0x2c75a3['name']){console[_0x36bf5a(0x1a6)](_0x36bf5a(0x18e)+icons['fail']+'\x20'+c[_0x36bf5a(0x1a6)]+'Key\x20generation\x20returned\x20an\x20unexpected\x20response.'+c[_0x36bf5a(0x1db)]+'\x0a'),process['exit'](0x1);return;}console[_0x36bf5a(0x19e)](''),console['log']('\x20\x20'+icons['pass']+_0x36bf5a(0x1da)),console['log']('\x20\x20'+c[_0x36bf5a(0x19c)]+'─'[_0x36bf5a(0x1bf)](0x28)+c[_0x36bf5a(0x1db)]),console[_0x36bf5a(0x19e)]('\x20\x20\x20\x20'+c['muted']+'Name:'+c['reset']+_0x36bf5a(0x18f)+c[_0x36bf5a(0x1c5)]+_0x2c75a3[_0x36bf5a(0x1ee)]+c['reset']),console[_0x36bf5a(0x19e)]('\x20\x20\x20\x20'+c[_0x36bf5a(0x19c)]+'Type:'+c[_0x36bf5a(0x1db)]+_0x36bf5a(0x18f)+c[_0x36bf5a(0x1c5)]+_0x2c75a3['type']+c['reset']),console[_0x36bf5a(0x19e)]('\x20\x20\x20\x20'+c['muted']+'ID:'+c[_0x36bf5a(0x1db)]+'\x20\x20\x20\x20\x20\x20'+c['value']+_0x2c75a3['id']+c['reset']),console[_0x36bf5a(0x19e)]('\x20\x20\x20\x20'+c['muted']+_0x36bf5a(0x1e5)+c[_0x36bf5a(0x1db)]+_0x36bf5a(0x1b3)+c[_0x36bf5a(0x1cf)]+_0x2c75a3['raw']+c[_0x36bf5a(0x1db)]),console[_0x36bf5a(0x19e)]('\x20\x20'+c['muted']+'─'[_0x36bf5a(0x1bf)](0x28)+c[_0x36bf5a(0x1db)]),console['log']('\x20\x20'+c['warn']+_0x36bf5a(0x1c0)+c[_0x36bf5a(0x1db)]),_0x2e9ffe?console['log']('\x20\x20'+c['muted']+'(Created\x20via\x20running\x20server)'+c['reset']):console['log']('\x20\x20'+c['muted']+_0x36bf5a(0x1a4)+c[_0x36bf5a(0x1db)]),console[_0x36bf5a(0x19e)]('');}async function listKeysCmd(_0x52b25d){const _0x3d5c07=a0_0x479eb0,_0x586816={};if(_0x52b25d[_0x3d5c07(0x1c2)])_0x586816['type']=_0x52b25d[_0x3d5c07(0x1c2)];if(_0x52b25d['status'])_0x586816['status']=_0x52b25d['status'];const _0x1788d4=await findRunningServer();let _0x5c1a1a;if(_0x1788d4)try{_0x5c1a1a=await listKeysViaApi(_0x1788d4,_0x586816);}catch(_0x1182ca){console[_0x3d5c07(0x1a6)]('\x0a\x20\x20'+icons[_0x3d5c07(0x1b4)]+'\x20'+c['error']+_0x1182ca[_0x3d5c07(0x191)]+c['reset']+'\x20'+c[_0x3d5c07(0x19c)]+'(via\x20server)'+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {listKeys:_0x32148e}=await import('../server/key-manager.js');_0x5c1a1a=_0x32148e(_0x586816);}if(!_0x5c1a1a||!_0x5c1a1a['keys']||!_0x5c1a1a['keys']['length']){console['log']('\x0a\x20\x20No\x20keys\x20found.\x0a');return;}console[_0x3d5c07(0x19e)](''),console[_0x3d5c07(0x19e)]('\x20\x20'+c['heading']+_0x3d5c07(0x1b2)+c[_0x3d5c07(0x1db)]),console['log']('\x20\x20'+c[_0x3d5c07(0x19c)]+'─'[_0x3d5c07(0x1bf)](0x50)+c[_0x3d5c07(0x1db)]),console[_0x3d5c07(0x19e)]('\x20\x20'+c['muted']+'ID'[_0x3d5c07(0x1e4)](0xa)+_0x3d5c07(0x1a3)['padEnd'](0x14)+'Type'[_0x3d5c07(0x1e4)](0xa)+_0x3d5c07(0x1dc)['padEnd'](0xa)+_0x3d5c07(0x1ca)['padEnd'](0xf)+_0x3d5c07(0x1b1)+c[_0x3d5c07(0x1db)]),console['log']('\x20\x20'+c[_0x3d5c07(0x19c)]+'─'['repeat'](0x50)+c['reset']);for(const _0x79eb0c of _0x5c1a1a[_0x3d5c07(0x1d5)]){const _0x447302=(_0x79eb0c['id']||'')['slice'](0x0,0x8),_0x3d4773=(_0x79eb0c['name']||'')[_0x3d5c07(0x1af)](0x0,0x12)[_0x3d5c07(0x1e4)](0x14),_0x406f73=(_0x79eb0c[_0x3d5c07(0x1c2)]||'')['padEnd'](0xa),_0x8b0459=(_0x79eb0c[_0x3d5c07(0x1e3)]||'')['padEnd'](0xa),_0x4f0897=(_0x79eb0c['expiry']?new Date(_0x79eb0c[_0x3d5c07(0x190)])['toLocaleDateString']():'Never')['padEnd'](0xf),_0x5ddb23=_0x79eb0c[_0x3d5c07(0x1b8)]?new Date(_0x79eb0c[_0x3d5c07(0x1b8)])['toLocaleDateString']():'-';console['log']('\x20\x20'+_0x447302[_0x3d5c07(0x1e4)](0xa)+_0x3d4773+_0x406f73+_0x8b0459+_0x4f0897+_0x5ddb23);}console[_0x3d5c07(0x19e)]('\x20\x20'+c[_0x3d5c07(0x19c)]+'─'['repeat'](0x50)+c[_0x3d5c07(0x1db)]),console['log']('\x20\x20'+c['muted']+'Total:\x20'+_0x5c1a1a[_0x3d5c07(0x1d5)]['length']+'\x20key(s)'+c['reset']+'\x0a');}async function revokeKeyCmd(_0xc58d7c){const _0x1df053=a0_0x479eb0,_0x2dbb30=_0xc58d7c[0x0];if(!_0x2dbb30){console[_0x1df053(0x1a6)](_0x1df053(0x18e)+icons[_0x1df053(0x1b4)]+'\x20'+c[_0x1df053(0x1a6)]+_0x1df053(0x1ea)+c['reset']+'\x0a'),console['error']('\x20\x20Usage:\x20colana\x20admin\x20revoke-key\x20<id>\x0a'),process['exit'](0x1);return;}const _0x2e8bb4=await findRunningServer();if(_0x2e8bb4)try{await revokeKeyViaApi(_0x2e8bb4,_0x2dbb30),console[_0x1df053(0x19e)]('\x0a\x20\x20'+icons[_0x1df053(0x1bb)]+'\x20Key\x20'+c[_0x1df053(0x1c5)]+_0x2dbb30+c[_0x1df053(0x1db)]+'\x20has\x20been\x20revoked.\x0a');}catch(_0x3c859b){console['error'](_0x1df053(0x18e)+icons[_0x1df053(0x1b4)]+'\x20'+c['error']+_0x3c859b[_0x1df053(0x191)]+c['reset']+'\x20'+c['muted']+_0x1df053(0x1e1)+c['reset']+'\x0a'),process[_0x1df053(0x1c4)](0x1);return;}else{await ensureDb();const {revokeKey:_0xb900d1}=await import(_0x1df053(0x196));try{_0xb900d1(_0x2dbb30),console[_0x1df053(0x19e)]('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x2dbb30+c[_0x1df053(0x1db)]+_0x1df053(0x19f));}catch(_0x2d7c47){console[_0x1df053(0x1a6)]('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x2d7c47['message']+c[_0x1df053(0x1db)]+'\x0a'),process[_0x1df053(0x1c4)](0x1);return;}}}function a0_0x3c6f(_0x44dd4c,_0x5d145c){_0x44dd4c=_0x44dd4c-0x18e;const _0x1202b7=a0_0x1202();let _0x3c6fd2=_0x1202b7[_0x44dd4c];if(a0_0x3c6f['ciTiGx']===undefined){var _0x21f279=function(_0x1c6b9){const _0xe6946d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x8ca31b='',_0x108baf='';for(let _0x1f5977=0x0,_0x210ae8,_0x53cb1d,_0x1c5e21=0x0;_0x53cb1d=_0x1c6b9['charAt'](_0x1c5e21++);~_0x53cb1d&&(_0x210ae8=_0x1f5977%0x4?_0x210ae8*0x40+_0x53cb1d:_0x53cb1d,_0x1f5977++%0x4)?_0x8ca31b+=String['fromCharCode'](0xff&_0x210ae8>>(-0x2*_0x1f5977&0x6)):0x0){_0x53cb1d=_0xe6946d['indexOf'](_0x53cb1d);}for(let _0xace269=0x0,_0x33a371=_0x8ca31b['length'];_0xace269<_0x33a371;_0xace269++){_0x108baf+='%'+('00'+_0x8ca31b['charCodeAt'](_0xace269)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x108baf);};a0_0x3c6f['suQJJi']=_0x21f279,a0_0x3c6f['VfGTDH']={},a0_0x3c6f['ciTiGx']=!![];}const _0x24c2d2=_0x1202b7[0x0],_0x4f51b4=_0x44dd4c+_0x24c2d2,_0x288dc7=a0_0x3c6f['VfGTDH'][_0x4f51b4];return!_0x288dc7?(_0x3c6fd2=a0_0x3c6f['suQJJi'](_0x3c6fd2),a0_0x3c6f['VfGTDH'][_0x4f51b4]=_0x3c6fd2):_0x3c6fd2=_0x288dc7,_0x3c6fd2;}function showHelp(){const _0x2b5224=a0_0x479eb0;console['log']('\x0a\x20\x20'+brandName()+'\x20'+c[_0x2b5224(0x19c)]+'Admin\x20CLI'+c['reset']+'\x0a\x0a\x20\x20'+c['heading']+_0x2b5224(0x1c8)+c[_0x2b5224(0x1db)]+'\x0a\x20\x20\x20\x20'+c[_0x2b5224(0x1e0)]+'colana\x20admin\x20doctor'+c[_0x2b5224(0x1db)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20system\x20diagnostics\x0a\x20\x20\x20\x20'+c[_0x2b5224(0x1e0)]+_0x2b5224(0x1c9)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20configured\x20staff/admin\x20keys\x20(env\x20vars)\x0a\x20\x20\x20\x20'+c[_0x2b5224(0x1e0)]+_0x2b5224(0x1a9)+c[_0x2b5224(0x1db)]+_0x2b5224(0x19a)+c['muted']+'--name\x20\x22Name\x22'+c['reset']+_0x2b5224(0x1e9)+c[_0x2b5224(0x19c)]+_0x2b5224(0x1ec)+c[_0x2b5224(0x1db)]+_0x2b5224(0x1eb)+c[_0x2b5224(0x19c)]+_0x2b5224(0x1d8)+c[_0x2b5224(0x1db)]+_0x2b5224(0x1e8)+c[_0x2b5224(0x19c)]+'--expires\x202026-12-31'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Expiry\x20date\x20(optional)\x0a\x20\x20\x20\x20'+c['cmd']+_0x2b5224(0x193)+c['reset']+_0x2b5224(0x199)+c['muted']+'--type\x20staff|admin|beta'+c[_0x2b5224(0x1db)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20type\x0a\x20\x20\x20\x20\x20\x20'+c[_0x2b5224(0x19c)]+'--status\x20active|revoked'+c[_0x2b5224(0x1db)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20status\x0a\x20\x20\x20\x20'+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c[_0x2b5224(0x1db)]+_0x2b5224(0x1dd)+c[_0x2b5224(0x19c)]+'Polar.sh\x20key\x20management:'+c[_0x2b5224(0x1db)]+_0x2b5224(0x1ad)+c['url']+_0x2b5224(0x1c6)+c['reset']+'\x0a');}function doctor(){const _0x2b5ae9=a0_0x479eb0;console[_0x2b5ae9(0x19e)](_0x2b5ae9(0x1a8));}function staffKeys(){const _0x1600f4=a0_0x479eb0,_0xf706ea=process[_0x1600f4(0x1cb)]['STAFF_KEYS']||'',_0x62f406=process[_0x1600f4(0x1cb)][_0x1600f4(0x197)]||'',_0x1769ba=_0xf706ea['split'](',')[_0x1600f4(0x1d3)](_0x21c7c1=>_0x21c7c1[_0x1600f4(0x1d4)]())[_0x1600f4(0x1ba)](Boolean),_0x1bac12=_0x62f406[_0x1600f4(0x194)](',')[_0x1600f4(0x1d3)](_0x2267a2=>_0x2267a2['trim']())[_0x1600f4(0x1ba)](Boolean);if(_0x1769ba['length']===0x0&&_0x1bac12['length']===0x0){console[_0x1600f4(0x19e)](_0x1600f4(0x1cc));return;}console['log'](''),_0x1769ba['length']>0x0&&(console['log']('\x20\x20'+c[_0x1600f4(0x1d6)]+_0x1600f4(0x192)+c[_0x1600f4(0x1db)]),console['log']('\x20\x20'+c['muted']+'─'[_0x1600f4(0x1bf)](0xa)+c['reset']),_0x1769ba['forEach']((_0x2ef733,_0x3cb1f7)=>{const _0x55d0af=_0x1600f4;console[_0x55d0af(0x19e)]('\x20\x20\x20\x20'+(_0x3cb1f7+0x1)+'.\x20'+maskKey(_0x2ef733)+_0x55d0af(0x1df));}),console['log']('')),_0x1bac12['length']>0x0&&(console['log']('\x20\x20'+c['heading']+_0x1600f4(0x1d1)+c[_0x1600f4(0x1db)]),console[_0x1600f4(0x19e)]('\x20\x20'+c['muted']+'─'[_0x1600f4(0x1bf)](0xa)+c[_0x1600f4(0x1db)]),_0x1bac12[_0x1600f4(0x1d9)]((_0x914d0,_0x4a7d69)=>{console['log']('\x20\x20\x20\x20'+(_0x4a7d69+0x1)+'.\x20'+maskKey(_0x914d0)+'\x20\x20(ADMIN_KEYS)');}),console[_0x1600f4(0x19e)]('')),console[_0x1600f4(0x19e)](_0x1600f4(0x1a0));}function a0_0x1202(){const _0x1153b7=['y3jLyxrLlwTLEq','y3jLyxrLzf9HDa','ifvUA25VD24Gy29TBwfUzdOG','zMLSDgvY','CgfZCW','ue9tva','l2fWAs9Hzg1PBI9RzxLZ','mJuYmda3BKndBfPX','CMvWzwf0','su1qt1juqu5uoIbdB3b5ihrOAxmGA2v5ig5VDY4GsxqGy2fUBM90igjLihjLDhjPzxzLzcbSyxrLCI4','ywrTAw4','DhLWzq','nZK1mdG4ofD4uxLcvG','zxHPDa','DMfSDwu','Ahr0Chm6lY9KyxnOyM9HCMqUCg9SyxiUC2G','y2f0y2G','vxnHz2u6','y29Syw5HigfKBwLUihn0ywzMlwTLExm','rxHWAxjLCW','zw52','cIaGtM8GC3rHzMyGB3iGywrTAw4GA2v5CYbJB25MAwD1CMvKlIbtzxqGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO','yxbWBgLJyxrPB24VANnVBG','nJaZnZaWwen4vunN','D2fYBG','zg9JDg9Y','qwrTAw4Gs2v5CZO','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','BwfW','DhjPBq','A2v5CW','AgvHzgLUzW','zgLYBMfTzq','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','zM9YrwfJAa','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','CMvZzxq','u3rHDhvZ','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','icaOu1rbrKzFs0vzuYK','y21K','khzPysbZzxj2zxiP','mJGYndaWmeD6AwLgua','C3rHDhvZ','CgfKrw5K','s2v5oG','mJmXmJffs2DnzeC','mZbkzxjszwy','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','icaGicaGicaGicaGicaGicaGicaGuMvJAxbPzw50ig5HBwuGkhjLCxvPCMvKkqOGicaGica','rvjst1i6ieTLEsbjrcbPCYbYzxf1AxjLzc4','icaGicaGicaGicblzxKGDhLWzsaOzgvMyxvSDdOGC3rHzMyPcIaGicaGia','ls10ExbLihn0ywzMFgfKBwLUFgjLDge','mJiWntG1neLTr3DPqG','BMfTzq','C3rHCNrZv2L0Aa','cIaG','icaGia','zxHWAxj5','BwvZC2fNzq','u3rHzMyGs2v5CZO','y29Syw5HigfKBwLUigXPC3qTA2v5CW','C3bSAxq','ndeWBLvOu3Hz','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','qurnsu5Fs0vzuW','C2v0','icaGicaGicaGicaGicbmAxn0ierclxn0B3jLzcbSAwnLBNnLigTLExmkicaGicaG','icaGicaGicaGicaGieDLBMvYyxrLigeGBMv3igXPy2vUC2uGA2v5icHZDg9YzwqGAw4GreiPcIaGicaGia','iI4GtxvZDcbIzsbVBMuGB2y6ia','Bxv0zwq','AM9PBG','Bg9N','igHHCYbIzwvUihjLDM9RzwqUcG','icbuBYbHzgqVCMvTB3zLigTLExmSihvWzgf0zsb0AguGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO','Ahr0CdOVlZeYnY4WlJaUmtO','l2fWAs9Hzg1PBI9RzxLZlW','tMfTzq','kenYzwf0zwqGDMLHigrPCMvJDcbeqIdIGjqGCMvZDgfYDcbZzxj2zxiGDg8GCgLJAYb1CcK','oduZntu2q1DTChLv','zxjYB3i','kIOQkG','cIaGuNvUicDJB2XHBMeGzg9JDg9YjYbMB3iGC3LZDgvTigrPywDUB3n0AwnZlGO','y29Syw5HigfKBwLUignYzwf0zs1RzxK','l2fWAs9OzwfSDgG','ANnVBG','yxjNDG','cIaGica','BgvUz3rO','C2XPy2u','nuzZA1HLzW','q3jLyxrLza','tgLJzw5ZzsblzxLZoG','icaGica','zMfPBa','C3rHzMy','m29JDe5pza'];a0_0x1202=function(){return _0x1153b7;};return a0_0x1202();}async function main(){const _0x54b01d=a0_0x479eb0,{command:_0x1e02dc,flags:_0x15b0b7,positional:_0x52d943}=parseArgs(process[_0x54b01d(0x1ac)]);if(!_0x1e02dc||_0x1e02dc==='help'||_0x1e02dc==='--help'){showHelp();return;}switch(_0x1e02dc){case _0x54b01d(0x1d0):return doctor();case'staff-keys':return staffKeys();case _0x54b01d(0x1b7):return createKey(_0x15b0b7);case'list-keys':return listKeysCmd(_0x15b0b7);case'revoke-key':return revokeKeyCmd(_0x52d943);default:console['error']('\x20\x20'+icons[_0x54b01d(0x1b4)]+_0x54b01d(0x1b9)+c[_0x54b01d(0x1c5)]+_0x1e02dc+c['reset']),console[_0x54b01d(0x1a6)]('\x20\x20'+c[_0x54b01d(0x19c)]+_0x54b01d(0x1d2)+c[_0x54b01d(0x1db)]),process['exit'](0x1);return;}}main()[a0_0x479eb0(0x1c7)](_0x12fe76=>{const _0x5a7ae8=a0_0x479eb0;console[_0x5a7ae8(0x1a6)]('\x20\x20'+icons[_0x5a7ae8(0x1b4)]+'\x20'+c['error']+(_0x12fe76['message']||_0x12fe76)+c[_0x5a7ae8(0x1db)]),process['exit'](0x1);});
|
|
3
|
+
(function(_0x388fd6,_0x3d9616){const _0x1ff590=a0_0x3621,_0x1e0767=_0x388fd6();while(!![]){try{const _0x3431e1=-parseInt(_0x1ff590(0x1ee))/0x1*(parseInt(_0x1ff590(0x1d3))/0x2)+parseInt(_0x1ff590(0x208))/0x3*(-parseInt(_0x1ff590(0x207))/0x4)+-parseInt(_0x1ff590(0x1dc))/0x5+parseInt(_0x1ff590(0x201))/0x6+-parseInt(_0x1ff590(0x22c))/0x7*(-parseInt(_0x1ff590(0x211))/0x8)+-parseInt(_0x1ff590(0x222))/0x9*(parseInt(_0x1ff590(0x1d7))/0xa)+parseInt(_0x1ff590(0x1e9))/0xb;if(_0x3431e1===_0x3d9616)break;else _0x1e0767['push'](_0x1e0767['shift']());}catch(_0x448f37){_0x1e0767['push'](_0x1e0767['shift']());}}}(a0_0x17eb,0x7b579));import a0_0x1dc55b from'fs';import a0_0x3466a6 from'path';import a0_0x45ed78 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';function a0_0x3621(_0x4d394f,_0x51ee3d){_0x4d394f=_0x4d394f-0x1cf;const _0x17eb6f=a0_0x17eb();let _0x3621db=_0x17eb6f[_0x4d394f];if(a0_0x3621['UBYaNm']===undefined){var _0x80415f=function(_0x24929f){const _0x34f46c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1dc55b='',_0x3466a6='';for(let _0x45ed78=0x0,_0x229abe,_0x1bbfd2,_0x51ff3e=0x0;_0x1bbfd2=_0x24929f['charAt'](_0x51ff3e++);~_0x1bbfd2&&(_0x229abe=_0x45ed78%0x4?_0x229abe*0x40+_0x1bbfd2:_0x1bbfd2,_0x45ed78++%0x4)?_0x1dc55b+=String['fromCharCode'](0xff&_0x229abe>>(-0x2*_0x45ed78&0x6)):0x0){_0x1bbfd2=_0x34f46c['indexOf'](_0x1bbfd2);}for(let _0x37961e=0x0,_0x2722f0=_0x1dc55b['length'];_0x37961e<_0x2722f0;_0x37961e++){_0x3466a6+='%'+('00'+_0x1dc55b['charCodeAt'](_0x37961e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3466a6);};a0_0x3621['UxWFzT']=_0x80415f,a0_0x3621['XaPDIB']={},a0_0x3621['UBYaNm']=!![];}const _0x342b0a=_0x17eb6f[0x0],_0x596e0c=_0x4d394f+_0x342b0a,_0x5ce960=a0_0x3621['XaPDIB'][_0x596e0c];return!_0x5ce960?(_0x3621db=a0_0x3621['UxWFzT'](_0x3621db),a0_0x3621['XaPDIB'][_0x596e0c]=_0x3621db):_0x3621db=_0x5ce960,_0x3621db;}const __dirname=a0_0x3466a6['dirname'](fileURLToPath(import.meta.url));function parseArgs(_0x229abe){const _0x453ef6=a0_0x3621,_0x1bbfd2=_0x229abe['slice'](0x2),_0x51ff3e=_0x1bbfd2[0x0],_0x37961e=[],_0x2722f0={};for(let _0x586af0=0x1;_0x586af0<_0x1bbfd2['length'];_0x586af0++){if(_0x1bbfd2[_0x586af0][_0x453ef6(0x1fb)]('--')){let _0x76d071=_0x1bbfd2[_0x586af0]['slice'](0x2),_0x9a9c00;const _0x2364bc=_0x76d071[_0x453ef6(0x1ef)]('=');_0x2364bc!==-0x1?(_0x9a9c00=_0x76d071[_0x453ef6(0x1e1)](_0x2364bc+0x1),_0x76d071=_0x76d071['slice'](0x0,_0x2364bc)):_0x9a9c00=_0x586af0+0x1<_0x1bbfd2[_0x453ef6(0x20e)]&&!_0x1bbfd2[_0x586af0+0x1][_0x453ef6(0x1fb)]('--')?_0x1bbfd2[++_0x586af0]:'true',_0x2722f0[_0x76d071]=_0x9a9c00;}else _0x37961e['push'](_0x1bbfd2[_0x586af0]);}return{'command':_0x51ff3e,'flags':_0x2722f0,'positional':_0x37961e};}function maskKey(_0x134676){const _0x1b3139=a0_0x3621;if(!_0x134676||_0x134676[_0x1b3139(0x20e)]<=0x8)return _0x1b3139(0x1e8);return _0x134676[_0x1b3139(0x1e1)](0x0,0x4)+'****';}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x51b9c9=a0_0x3621;for(let _0x184070=0x0;_0x184070<MAX_PORT_SCAN;_0x184070++){const _0xbc051e=DEFAULT_PORT+_0x184070;try{const _0x11f774=await fetch(_0x51b9c9(0x1f3)+_0xbc051e+_0x51b9c9(0x1f8),{'signal':AbortSignal['timeout'](0x1f4)});if(_0x11f774['ok']){const _0x40517c=await _0x11f774[_0x51b9c9(0x1f6)]();if(_0x40517c[_0x51b9c9(0x1d4)]==='ok')return'http://127.0.0.1:'+_0xbc051e;}}catch{}}return null;}async function createKeyViaApi(_0x231bec,_0x562f99){const _0x42cbf0=a0_0x3621,_0x5c419a=await fetch(_0x231bec+_0x42cbf0(0x227),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x562f99)});if(!_0x5c419a['ok']){const _0x2ec9db=await _0x5c419a[_0x42cbf0(0x1f6)]()['catch'](()=>({'error':'HTTP\x20'+_0x5c419a[_0x42cbf0(0x1d4)]}));throw new Error(_0x2ec9db['error']||'Server\x20responded\x20with\x20'+_0x5c419a['status']);}return _0x5c419a[_0x42cbf0(0x1f6)]();}async function listKeysViaApi(_0x313d3c,_0x4eb82a){const _0x1ce7e9=a0_0x3621,_0x24ebe9=new URLSearchParams();if(_0x4eb82a[_0x1ce7e9(0x217)])_0x24ebe9[_0x1ce7e9(0x219)](_0x1ce7e9(0x217),_0x4eb82a['type']);if(_0x4eb82a[_0x1ce7e9(0x1d4)])_0x24ebe9[_0x1ce7e9(0x219)](_0x1ce7e9(0x1d4),_0x4eb82a['status']);const _0x4a7e22=_0x24ebe9[_0x1ce7e9(0x224)](),_0x589de2=await fetch(_0x313d3c+'/api/admin/keys'+(_0x4a7e22?'?'+_0x4a7e22:''));if(!_0x589de2['ok']){const _0x3bf756=await _0x589de2['json']()[_0x1ce7e9(0x200)](()=>({'error':'HTTP\x20'+_0x589de2['status']}));throw new Error(_0x3bf756[_0x1ce7e9(0x22a)]||'Server\x20responded\x20with\x20'+_0x589de2['status']);}return _0x589de2[_0x1ce7e9(0x1f6)]();}async function revokeKeyViaApi(_0x21f2d9,_0x6045d2){const _0x3a3aa6=a0_0x3621,_0x3951fb=await fetch(_0x21f2d9+'/api/admin/keys/'+_0x6045d2,{'method':'DELETE'});if(!_0x3951fb['ok']){const _0x4c1bd9=await _0x3951fb['json']()[_0x3a3aa6(0x200)](()=>({'error':'HTTP\x20'+_0x3951fb['status']}));throw new Error(_0x4c1bd9[_0x3a3aa6(0x22a)]||'Server\x20responded\x20with\x20'+_0x3951fb['status']);}return _0x3951fb['json']();}let _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0x2fcf4e}=await import('../server/db.js');await _0x2fcf4e(),_dbReady=!![];}async function createKey(_0xc28b21){const _0xf1a6e=a0_0x3621,_0x32a368=_0xc28b21['name'],_0x1ae58e=_0xc28b21['type']||_0xf1a6e(0x1f0),_0x12e40e=_0xc28b21[_0xf1a6e(0x212)]||null,_0x47ee95=_0xc28b21[_0xf1a6e(0x20c)]||null;if(!_0x32a368){console['error'](_0xf1a6e(0x209)+icons[_0xf1a6e(0x1f1)]+'\x20'+c['error']+'ERROR:\x20--name\x20is\x20required.'+c[_0xf1a6e(0x225)]+'\x0a'),console['error']('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process['exit'](0x1);return;}const _0x55245b=[_0xf1a6e(0x1dd),_0xf1a6e(0x1f0),_0xf1a6e(0x1f2)];if(!_0x55245b[_0xf1a6e(0x1d6)](_0x1ae58e)){console[_0xf1a6e(0x22a)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0xf1a6e(0x22a)]+'ERROR:\x20Invalid\x20type\x20\x22'+_0x1ae58e+_0xf1a6e(0x1fe)+_0x55245b[_0xf1a6e(0x223)](',\x20')+c[_0xf1a6e(0x225)]+'\x0a'),process['exit'](0x1);return;}const _0x28429e=await findRunningServer();let _0x460c1e;if(_0x28429e)try{_0x460c1e=await createKeyViaApi(_0x28429e,{'name':_0x32a368,'type':_0x1ae58e,'email':_0x12e40e||undefined,'expires':_0x47ee95||undefined});}catch(_0x16d530){console[_0xf1a6e(0x22a)](_0xf1a6e(0x209)+icons['fail']+'\x20'+c[_0xf1a6e(0x22a)]+_0x16d530[_0xf1a6e(0x214)]+c[_0xf1a6e(0x225)]+'\x20'+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1d1)+c[_0xf1a6e(0x225)]+'\x0a'),process[_0xf1a6e(0x21d)](0x1);return;}else{await ensureDb();const {generateKey:_0x1bbe90}=await import('../server/key-manager.js');try{_0x460c1e=_0x1bbe90(_0x32a368,_0x1ae58e,_0x12e40e,_0x47ee95);}catch(_0x307131){console[_0xf1a6e(0x22a)]('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x307131['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}if(!_0x460c1e||!_0x460c1e['name']){console['error']('\x0a\x20\x20'+icons[_0xf1a6e(0x1f1)]+'\x20'+c[_0xf1a6e(0x22a)]+_0xf1a6e(0x218)+c[_0xf1a6e(0x225)]+'\x0a'),process['exit'](0x1);return;}console[_0xf1a6e(0x20b)](''),console[_0xf1a6e(0x20b)]('\x20\x20'+icons[_0xf1a6e(0x1e0)]+'\x20Key\x20generated\x20successfully!'),console[_0xf1a6e(0x20b)]('\x20\x20'+c[_0xf1a6e(0x1fc)]+'─'[_0xf1a6e(0x1e4)](0x28)+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)]('\x20\x20\x20\x20'+c[_0xf1a6e(0x1fc)]+'Name:'+c['reset']+'\x20\x20\x20\x20'+c['value']+_0x460c1e[_0xf1a6e(0x1ed)]+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)](_0xf1a6e(0x221)+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1e7)+c[_0xf1a6e(0x225)]+_0xf1a6e(0x221)+c[_0xf1a6e(0x1ea)]+_0x460c1e[_0xf1a6e(0x217)]+c['reset']),console['log']('\x20\x20\x20\x20'+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1e2)+c['reset']+_0xf1a6e(0x1d5)+c[_0xf1a6e(0x1ea)]+_0x460c1e['id']+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)](_0xf1a6e(0x221)+c['muted']+'Key:'+c['reset']+'\x20\x20\x20\x20\x20'+c[_0xf1a6e(0x22b)]+_0x460c1e[_0xf1a6e(0x1df)]+c['reset']),console[_0xf1a6e(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)]('\x20\x20'+c[_0xf1a6e(0x22b)]+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c[_0xf1a6e(0x225)]),_0x28429e?console[_0xf1a6e(0x20b)]('\x20\x20'+c['muted']+_0xf1a6e(0x229)+c['reset']):console['log']('\x20\x20'+c[_0xf1a6e(0x1fc)]+'(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)'+c['reset']),console['log']('');}function a0_0x17eb(){const _0x204fff=['y29Syw5HigfKBwLUigXPC3qTA2v5CW','igHHCYbIzwvUihjLDM9RzwqUcG','igTLEsHZkq','zxHPDa','ls1LEhbPCMvZidiWmJyTmtiTmZe','zw52','y3jLyxrLzf9HDa','icaGia','odq5odi0munAwxnzAa','AM9PBG','Dg9tDhjPBMC','CMvZzxq','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','l2fWAs9Hzg1PBI9RzxLZ','icaGicaGicaGicblzxKGDhLWzsaOzgvMyxvSDdOGC3rHzMyPcIaGicaGia','kenYzwf0zwqGDMLHihj1BM5PBMCGC2vYDMvYkq','zxjYB3i','D2fYBG','mZeXnJmZmhfKuej2rq','AgvSCa','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','khzPysbZzxj2zxiP','CgfKrw5K','otqXnJzszxrtANm','C3rHDhvZ','icaGicaG','Aw5JBhvKzxm','mtbHCezPsfK','y21K','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','BwfW','tMfTzq','nJeYmda1Eu5jqwvK','ywrTAw4','qwrTAw4Gs2v5CZO','CMf3','CgfZCW','C2XPy2u','suq6','qwrTAw4Gq0Xj','CMvWzwf0','icaGicaGicaGicaGicbmAxn0ierclxn0B3jLzcbSAwnLBNnLigTLExmkicaGicaG','vxnHz2u6','vhLWztO','kIOQkG','mti1mZe5ndHdCez4zfG','DMfSDwu','AgvHzgLUzW','yxjNDG','BMfTzq','m3DJtvLjuq','Aw5KzxHpzG','C3rHzMy','zMfPBa','yMv0yq','Ahr0CdOVlZeYnY4WlJaUmtO','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','ls1ZDgf0DxmGywn0AxzLFhjLDM9Rzwq','ANnVBG','icaOqurnsu5Fs0vzuYK','l2fWAs9OzwfSDgG','A2v5CW','vg90ywW6ia','C3rHCNrZv2L0Aa','Bxv0zwq','ug9SyxiUC2GGA2v5ig1HBMfNzw1LBNq6','iI4GtxvZDcbIzsbVBMuGB2y6ia','DhjPBq','y2f0y2G','mta5ndG5ohz0txLmCW','CMv2B2TLlwTLEq','icaGicaGicaGicbgAwX0zxiGyNKGDhLWzqOGicaGica','rvjst1i6ieTLEsbjrcbPCYbYzxf1AxjLzc4','cIaGica','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','mZzozunkBKq','mty2mZqXr3r2Dg50','cIaG','zM9YrwfJAa','Bg9N','zxHWAxjLCW','icbvC2fNztOGy29Syw5HigfKBwLUihjLDM9Rzs1RzxKGpgLKpGO','BgvUz3rO','icaOu1rbrKzFs0vzuYK','tMv2zxi','mtzOtNDesuS','zw1HAwW','u3rHDhvZ','BwvZC2fNzq','cGOGia','icaGicaGicaGicaGicaGicbsDw4GC3LZDgvTigrPywDUB3n0AwnZcIaGica','DhLWzq','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','C2v0'];a0_0x17eb=function(){return _0x204fff;};return a0_0x17eb();}async function listKeysCmd(_0x2526ec){const _0x1d12ec=a0_0x3621,_0x3e1da4={};if(_0x2526ec[_0x1d12ec(0x217)])_0x3e1da4[_0x1d12ec(0x217)]=_0x2526ec[_0x1d12ec(0x217)];if(_0x2526ec['status'])_0x3e1da4[_0x1d12ec(0x1d4)]=_0x2526ec[_0x1d12ec(0x1d4)];const _0x455625=await findRunningServer();let _0x5c85d8;if(_0x455625)try{_0x5c85d8=await listKeysViaApi(_0x455625,_0x3e1da4);}catch(_0x46b417){console[_0x1d12ec(0x22a)](_0x1d12ec(0x209)+icons['fail']+'\x20'+c[_0x1d12ec(0x22a)]+_0x46b417['message']+c[_0x1d12ec(0x225)]+'\x20'+c['muted']+_0x1d12ec(0x1d1)+c[_0x1d12ec(0x225)]+'\x0a'),process[_0x1d12ec(0x21d)](0x1);return;}else{await ensureDb();const {listKeys:_0x454a9b}=await import(_0x1d12ec(0x1f4));_0x5c85d8=_0x454a9b(_0x3e1da4);}if(!_0x5c85d8||!_0x5c85d8[_0x1d12ec(0x1f9)]||!_0x5c85d8['keys']['length']){console['log']('\x0a\x20\x20No\x20keys\x20found.\x0a');return;}console['log'](''),console[_0x1d12ec(0x20b)]('\x20\x20'+c[_0x1d12ec(0x1eb)]+'License\x20Keys:'+c['reset']),console['log']('\x20\x20'+c['muted']+'─'[_0x1d12ec(0x1e4)](0x50)+c['reset']),console[_0x1d12ec(0x20b)]('\x20\x20'+c[_0x1d12ec(0x1fc)]+'ID'['padEnd'](0xa)+_0x1d12ec(0x1db)[_0x1d12ec(0x1d2)](0x14)+'Type'['padEnd'](0xa)+_0x1d12ec(0x213)[_0x1d12ec(0x1d2)](0xa)+'Expires'['padEnd'](0xf)+'Created'+c[_0x1d12ec(0x225)]),console[_0x1d12ec(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x1d12ec(0x225)]);for(const _0xf6237e of _0x5c85d8['keys']){const _0x1dd0b=(_0xf6237e['id']||'')[_0x1d12ec(0x1e1)](0x0,0x8),_0x1fec43=(_0xf6237e[_0x1d12ec(0x1ed)]||'')[_0x1d12ec(0x1e1)](0x0,0x12)[_0x1d12ec(0x1d2)](0x14),_0x44d0c6=(_0xf6237e[_0x1d12ec(0x217)]||'')['padEnd'](0xa),_0x4a3440=(_0xf6237e['status']||'')['padEnd'](0xa),_0x10bfbb=(_0xf6237e['expiry']?new Date(_0xf6237e['expiry'])['toLocaleDateString']():_0x1d12ec(0x210))[_0x1d12ec(0x1d2)](0xf),_0x28e302=_0xf6237e[_0x1d12ec(0x220)]?new Date(_0xf6237e['created_at'])['toLocaleDateString']():'-';console[_0x1d12ec(0x20b)]('\x20\x20'+_0x1dd0b['padEnd'](0xa)+_0x1fec43+_0x44d0c6+_0x4a3440+_0x10bfbb+_0x28e302);}console['log']('\x20\x20'+c[_0x1d12ec(0x1fc)]+'─'['repeat'](0x50)+c[_0x1d12ec(0x225)]),console[_0x1d12ec(0x20b)]('\x20\x20'+c['muted']+_0x1d12ec(0x1fa)+_0x5c85d8['keys'][_0x1d12ec(0x20e)]+_0x1d12ec(0x21c)+c[_0x1d12ec(0x225)]+'\x0a');}async function revokeKeyCmd(_0x1e134d){const _0x12c1d5=a0_0x3621,_0x257ea5=_0x1e134d[0x0];if(!_0x257ea5){console[_0x12c1d5(0x22a)]('\x0a\x20\x20'+icons[_0x12c1d5(0x1f1)]+'\x20'+c[_0x12c1d5(0x22a)]+_0x12c1d5(0x204)+c['reset']+'\x0a'),console['error'](_0x12c1d5(0x20d)),process[_0x12c1d5(0x21d)](0x1);return;}const _0x44efd9=await findRunningServer();if(_0x44efd9)try{await revokeKeyViaApi(_0x44efd9,_0x257ea5),console[_0x12c1d5(0x20b)](_0x12c1d5(0x209)+icons['pass']+'\x20Key\x20'+c['value']+_0x257ea5+c['reset']+_0x12c1d5(0x21b));}catch(_0x146fe9){console[_0x12c1d5(0x22a)](_0x12c1d5(0x209)+icons[_0x12c1d5(0x1f1)]+'\x20'+c[_0x12c1d5(0x22a)]+_0x146fe9[_0x12c1d5(0x214)]+c[_0x12c1d5(0x225)]+'\x20'+c[_0x12c1d5(0x1fc)]+'(via\x20server)'+c[_0x12c1d5(0x225)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x311d56}=await import(_0x12c1d5(0x1f4));try{_0x311d56(_0x257ea5),console['log']('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x257ea5+c[_0x12c1d5(0x225)]+'\x20has\x20been\x20revoked.\x0a');}catch(_0x5a1b2f){console[_0x12c1d5(0x22a)](_0x12c1d5(0x209)+icons['fail']+'\x20'+c[_0x12c1d5(0x22a)]+_0x5a1b2f['message']+c['reset']+'\x0a'),process[_0x12c1d5(0x21d)](0x1);return;}}}function showHelp(){const _0x1bc5fe=a0_0x3621;console['log']('\x0a\x20\x20'+brandName()+'\x20'+c[_0x1bc5fe(0x1fc)]+_0x1bc5fe(0x1e3)+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x215)+c[_0x1bc5fe(0x1eb)]+_0x1bc5fe(0x1e6)+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x205)+c[_0x1bc5fe(0x1d8)]+'colana\x20admin\x20doctor'+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x216)+c['cmd']+'colana\x20admin\x20staff-keys'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20configured\x20staff/admin\x20keys\x20(env\x20vars)\x0a\x20\x20\x20\x20'+c[_0x1bc5fe(0x1d8)]+'colana\x20admin\x20create-key'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Generate\x20a\x20new\x20license\x20key\x20(stored\x20in\x20DB)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--name\x20\x22Name\x22'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Recipient\x20name\x20(required)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--type\x20staff|admin|beta'+c['reset']+_0x1bc5fe(0x228)+c['muted']+_0x1bc5fe(0x1cf)+c['reset']+_0x1bc5fe(0x226)+c[_0x1bc5fe(0x1fc)]+_0x1bc5fe(0x21e)+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Expiry\x20date\x20(optional)\x0a\x20\x20\x20\x20'+c[_0x1bc5fe(0x1d8)]+_0x1bc5fe(0x21a)+c['reset']+_0x1bc5fe(0x1e5)+c['muted']+'--type\x20staff|admin|beta'+c['reset']+_0x1bc5fe(0x203)+c['muted']+_0x1bc5fe(0x1f5)+c['reset']+_0x1bc5fe(0x1d9)+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c['reset']+_0x1bc5fe(0x1d0)+c['muted']+_0x1bc5fe(0x1fd)+c[_0x1bc5fe(0x225)]+'\x0a\x20\x20\x20\x20'+c['url']+'https://dashboard.polar.sh'+c[_0x1bc5fe(0x225)]+'\x0a');}function doctor(){const _0x2c823c=a0_0x3621;console[_0x2c823c(0x20b)]('\x0a\x20\x20Run\x20\x27colana\x20doctor\x27\x20for\x20system\x20diagnostics.\x0a');}function staffKeys(){const _0x517b56=a0_0x3621,_0x159de0=process[_0x517b56(0x21f)]['STAFF_KEYS']||'',_0x5ad8eb=process['env']['ADMIN_KEYS']||'',_0x5dc3ca=_0x159de0['split'](',')[_0x517b56(0x1da)](_0x16e73f=>_0x16e73f[_0x517b56(0x1ff)]())['filter'](Boolean),_0x1d0d97=_0x5ad8eb['split'](',')[_0x517b56(0x1da)](_0x1a95a8=>_0x1a95a8[_0x517b56(0x1ff)]())['filter'](Boolean);if(_0x5dc3ca[_0x517b56(0x20e)]===0x0&&_0x1d0d97[_0x517b56(0x20e)]===0x0){console[_0x517b56(0x20b)]('\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');return;}console[_0x517b56(0x20b)](''),_0x5dc3ca['length']>0x0&&(console[_0x517b56(0x20b)]('\x20\x20'+c[_0x517b56(0x1eb)]+'Staff\x20Keys:'+c[_0x517b56(0x225)]),console[_0x517b56(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c['reset']),_0x5dc3ca[_0x517b56(0x20a)]((_0x2e82a2,_0x4ece15)=>{const _0x34109a=_0x517b56;console['log']('\x20\x20\x20\x20'+(_0x4ece15+0x1)+'.\x20'+maskKey(_0x2e82a2)+_0x34109a(0x20f));}),console[_0x517b56(0x20b)]('')),_0x1d0d97['length']>0x0&&(console[_0x517b56(0x20b)]('\x20\x20'+c['heading']+_0x517b56(0x1de)+c[_0x517b56(0x225)]),console['log']('\x20\x20'+c['muted']+'─'[_0x517b56(0x1e4)](0xa)+c[_0x517b56(0x225)]),_0x1d0d97['forEach']((_0x2a81d0,_0x3120bf)=>{const _0x1e0043=_0x517b56;console[_0x1e0043(0x20b)](_0x1e0043(0x221)+(_0x3120bf+0x1)+'.\x20'+maskKey(_0x2a81d0)+_0x1e0043(0x1f7));}),console[_0x517b56(0x20b)]('')),console[_0x517b56(0x20b)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}async function main(){const _0x40774a=a0_0x3621,{command:_0x2ac0cc,flags:_0x4d31e9,positional:_0x1e2343}=parseArgs(process[_0x40774a(0x1ec)]);if(!_0x2ac0cc||_0x2ac0cc===_0x40774a(0x22d)||_0x2ac0cc==='--help'){showHelp();return;}switch(_0x2ac0cc){case'doctor':return doctor();case'staff-keys':return staffKeys();case'create-key':return createKey(_0x4d31e9);case'list-keys':return listKeysCmd(_0x4d31e9);case _0x40774a(0x202):return revokeKeyCmd(_0x1e2343);default:console[_0x40774a(0x22a)]('\x20\x20'+icons['fail']+'\x20Unknown\x20command:\x20'+c['value']+_0x2ac0cc+c[_0x40774a(0x225)]),console['error']('\x20\x20'+c['muted']+_0x40774a(0x206)+c[_0x40774a(0x225)]),process['exit'](0x1);return;}}main()['catch'](_0x168c79=>{const _0x5a6505=a0_0x3621;console[_0x5a6505(0x22a)]('\x20\x20'+icons['fail']+'\x20'+c['error']+(_0x168c79['message']||_0x168c79)+c['reset']),process[_0x5a6505(0x21d)](0x1);});
|
package/bin/colana.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x35e4fa=a0_0xc12a;(function(_0x2aefe7,_0xa0e2d4){const _0x58aeb6=a0_0xc12a,_0x4a6fbb=_0x2aefe7();while(!![]){try{const _0x14828d=-parseInt(_0x58aeb6(0x230))/0x1+-parseInt(_0x58aeb6(0x1f7))/0x2*(-parseInt(_0x58aeb6(0x22e))/0x3)+-parseInt(_0x58aeb6(0x266))/0x4*(-parseInt(_0x58aeb6(0x20e))/0x5)+-parseInt(_0x58aeb6(0x284))/0x6+parseInt(_0x58aeb6(0x214))/0x7*(-parseInt(_0x58aeb6(0x209))/0x8)+-parseInt(_0x58aeb6(0x22f))/0x9*(parseInt(_0x58aeb6(0x1f5))/0xa)+parseInt(_0x58aeb6(0x27c))/0xb;if(_0x14828d===_0xa0e2d4)break;else _0x4a6fbb['push'](_0x4a6fbb['shift']());}catch(_0x26ae60){_0x4a6fbb['push'](_0x4a6fbb['shift']());}}}(a0_0x1d32,0x928ab));import{execSync,execFileSync,spawn}from'child_process';function a0_0xc12a(_0x23066a,_0x1c585a){_0x23066a=_0x23066a-0x1ea;const _0x1d32ff=a0_0x1d32();let _0xc12af6=_0x1d32ff[_0x23066a];if(a0_0xc12a['aUSlgm']===undefined){var _0x145b54=function(_0x3d12bf){const _0x405196='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2fb391='',_0xee6f43='';for(let _0x439e83=0x0,_0x20415c,_0xcf0cb7,_0x592c15=0x0;_0xcf0cb7=_0x3d12bf['charAt'](_0x592c15++);~_0xcf0cb7&&(_0x20415c=_0x439e83%0x4?_0x20415c*0x40+_0xcf0cb7:_0xcf0cb7,_0x439e83++%0x4)?_0x2fb391+=String['fromCharCode'](0xff&_0x20415c>>(-0x2*_0x439e83&0x6)):0x0){_0xcf0cb7=_0x405196['indexOf'](_0xcf0cb7);}for(let _0x4a3ebd=0x0,_0x5c729e=_0x2fb391['length'];_0x4a3ebd<_0x5c729e;_0x4a3ebd++){_0xee6f43+='%'+('00'+_0x2fb391['charCodeAt'](_0x4a3ebd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xee6f43);};a0_0xc12a['hGghFb']=_0x145b54,a0_0xc12a['lZfbLV']={},a0_0xc12a['aUSlgm']=!![];}const _0x2920bb=_0x1d32ff[0x0],_0x5ef1fc=_0x23066a+_0x2920bb,_0xb5e088=a0_0xc12a['lZfbLV'][_0x5ef1fc];return!_0xb5e088?(_0xc12af6=a0_0xc12a['hGghFb'](_0xc12af6),a0_0xc12a['lZfbLV'][_0x5ef1fc]=_0xc12af6):_0xc12af6=_0xb5e088,_0xc12af6;}function a0_0x1d32(){const _0x1db993=['icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','yxjNDG','CgXHDgzVCM0','z2GGy29WAwXVDcaTlxzLCNnPB24','zMfPBa','ls1WB3j0','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','Chr5t2S','Cgf0Aa','4OcuihjLCxvPCMvZihyXocS','y29Syw5HihnLCNzPy2uGBg9NCW','icbdAgvJA2LUzYb5B3vYigvUDMLYB25Tzw50lI4U','icaGicaGicaGicaGicaGicaGu3rHCNqGDgHLigrHC2HIB2fYzaOGia','yMLUyxj5','Aw5ZDgfSBa','mZLeqwX0DeW','mJq2nJbrqLzTvLe','mta1mtyYm1feq2PkrW','Dg9mB3DLCKnHC2u','zgv0zwn0q21K','cIaG','y29Syw5HigrVy3rVCIaTlxzLCMjVC2u','DMvYC2LVBG','y21K','CMvZzxq','tMv4DcbZDgvWCYb0BYbYzxnVBhzLoG','icaGicaGicaGicbdAgvJAYbdteKGywDLBNrZigfUzcbZExn0zw0GAgvHBhrOcIaG','CgLWigLUC3rHBgWGDxy','sw5ZDgfSBgLUzYbwAxn1ywWGu3r1zgLViej1AwXKifrVB2XZihzPysb3Aw5NzxqUlI4','DJaUmc4W','AwDUB3jL','zg9JDg9Y','zw52','pYaO','vxnLCI1JB25MAwD1CMvKig1VzgvSigTLExm','y2f0y2G','C3rHDhvZ','q29TBwfUzhm6','ls12zxjZAw9U','idXUDw1Izxi+icaGicaGicaGvxnLihnWzwnPzMLJihbVCNqG','ifLVDsDYzsbNB29KihrVigDVisa','icboyxrPDMuGv2LUzg93CYbKzxrLy3rLzcb3AxrOifDttdiGyxzHAwXHyMXLlG','icaGicaGihDZBcaTzcbvyNvUDhu','sw5ZDgfSBcbVBMuGyw55DgLTzsbMCM9TifnLDhrPBMDZid4GquKGq0XjiefNzw50CY4','D2LUmZi','CgfYC2u','C3rKAw4','D3jPDgvgAwXLu3LUyW','igjHy2TNCM91BMqGC2vYDMLJzs4UlG','ihDPBgWGC3rHCNqGyNv0ihLVDsb3B24NDcbIzsbHyMXLihrVihj1BIbHz2vUDhmU','zgfYD2LU','ChjLCMvX','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','DhjPBq','uhL0Ag9Uia','CNvUBMLUzW','BNbT','Bxv0zwq','zMfSBgjHy2TezxrLy3rdBwq','r2vTAw5Pienmsq','ig5VzguTChr5ia','lI4U','BNbTigLUC3rHBgWGlwCGqgfUDgHYB3bPyY1HAs9JBgf1zguTy29Kzq','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','icaGifS','BxnIDwLSza','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','AgvHzgLUzW','ls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhm','z2vTAw5P','Bg9NCW','mtiWrKf3uhby','icboBYbbssbJB2rPBMCGywDLBNrZigzVDw5KlIa','icbjBNn0ywXSia','icaGifSWxsbtA2LWicH5B3uNBgWGBMvLzcb0BYbPBNn0ywXSig9UzsbTyw51ywXSEsK','C3vJy2vZCW','icbszwnVBw1LBMrLzdOG','D2fYBG','CNvUDgLTzq','q09mqu5bx1bpuLq','D3nSic0TBgLZDcaTlxf1Awv0','q291BgqGBM90igLUC3rHBgWGDxyU','idXJBwq+icaGicaGqwrTAw4Gq0XjicHJCMvHDguTA2v5lcbYzxzVA2uTA2v5lcbSAxn0lwTLExmSigTLEs1PBMzVkqOGia','y29Syw5H','y2XVC2u','ChL0Ag9UmW','C2v0Dxb0B29SCW','r2L0shvIienmsq','uhL0Ag9U','qNvPBgqGDg9VBhmGBwf5igjLig5LzwrLzc4Gqxr0zw1WDgLUzYbHDxrVBwf0AwmGAw5ZDgfSBc4UlG','DxjS','CgLWzq','Aw5ZDgfSBgvK','mti2nJa5nZHct3zov3G','BwvZC2fNzq','ugXHDgzVCM06','icaGia','ls1VDMvYCMLKzq','icaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMCkica','AM9PBG','icaGifLVDsbJyw4GAw5ZDgfSBcbVDgHLCNmGyw55DgLTzsbMCM9TifnLDhrPBMDZlG','mZu1ntCYyvHnC3zJ','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','CMvHzezPBgvtEw5J','uMvXDwLYzxmGqw50AhjVCgLJihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','Ahr0CdOVl2XVy2fSAg9ZDdO','icaGica','igzPCNn0lG','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','zMLSDgvY','CxvLC3rPB24','BwTKAxjtEw5J','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','DMfSDwu','EgnVzguTC2vSzwn0','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLlI4U','z3LW','BwLUB3i','ChjVDMLKzxjZ','icbjBNn0ywXSAw5Nia','Aw5JBhvKzxm','Ahr0CdOVl2XVy2fSAg9ZDdO5odC2','yNjLDYbPBNn0ywXSihv2','BM9Kzu9R','BgvUz3rO','yxv0Aa','zxHPDa','Dg9tDhjPBMC','Dg9ju09tDhjPBMC','DxrMltG','yxjYB3C','B3bLBMnSyxC','B3bLBIaI','v2fPDcbMB3iGDgHLigLUC3rHBgWGDg8Gy29TCgXLDguGkdiTnsbTAw51DgvZkq','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','y29Syw5HigfKBwLUigXPC3qTA2v5CW','icaGicaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mP','ChjLCMvXrMfSBgjHy2S','ChL0Ag9UihnLDhvWDg9VBhm','icaGifrYEwLUzYbMywXSyMfJAZOG','nZyWy0H0C1DP','ie5VzguUANmG','mtaWmJm4rhjHsfrr','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','C3bSAxq','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','C2vYDMLJzq','t3bLBKnSyxC','BMfTzq','rMfPBgvKihrVihn0yxj0ihnLCNzLCJOG','teXniefqssbRzxKGCMvXDwLYzwq','Dw5PBNn0ywXS','icbmAxn0igfSBcbSAwnLBNnLigTLExmkcG','BNbTigLUC3rHBgWGlwCGqg9Wzw5HAs9JB2rLEa','Bg9HzgvK','icaGicaGicaGicbtAg93ihzLCNnPB24GBNvTyMvYcIaG','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','uMvXDwLYzxmGt3bLBKfjihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','y29Syw5HihnLCNzPy2uGC3rHDhvZ','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','mta2nJGWog9MuK1lvq','uNvUoIa','CgfZCW','zxjYB3i','y3jLyxrLsw50zxjMywnL','mtmWntK1svflz2jy','qwLKzxi','rNjLzsbVCIbWywLKieDVB2DSzsbHy2nVDw50','ChvZAa','ksbBEs9oxsa','D3jPDgu','mZv4rxnnvhy','D2LUz2v0','quKGq0XjiefNzw50CZO','icaGkg9YoIa','yNvPBgqGDg9VBhm','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','CMvWBgfJzq','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','ChL0Ag9U','Aw5ZDgfSBenTza'];a0_0x1d32=function(){return _0x1db993;};return a0_0x1d32();}import a0_0x2fb391 from'fs';import a0_0xee6f43 from'path';import a0_0x439e83 from'readline';import{fileURLToPath,pathToFileURL}from'url';import{commandExistsSync,getCommandPath}from'../server/platform.js';import{c,icons,brandName,tagline,printBanner}from'../server/brand.js';const __dirname=a0_0xee6f43['dirname'](fileURLToPath(import.meta.url)),ROOT=a0_0xee6f43['resolve'](__dirname,'..'),DATA_DIR=a0_0xee6f43['join'](ROOT,'data'),toImportPath=_0x20415c=>process['platform']===a0_0x35e4fa(0x24b)?pathToFileURL(_0x20415c)['href']:_0x20415c,CLI_PROVIDERS=[{'name':'Claude\x20Code','binary':'claude','installCmd':a0_0x35e4fa(0x25d),'auth':a0_0x35e4fa(0x287),'runtime':'npm'},{'name':'Codex\x20CLI','binary':'codex','installCmd':a0_0x35e4fa(0x202),'auth':a0_0x35e4fa(0x206),'runtime':a0_0x35e4fa(0x257)},{'name':a0_0x35e4fa(0x25a),'binary':a0_0x35e4fa(0x264),'installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':a0_0x35e4fa(0x210),'runtime':a0_0x35e4fa(0x257),'recommended':!![]},{'name':'Copilot\x20CLI','binary':'copilot','fallbackBinary':'gh','detectCmd':'copilot\x20--version','fallbackDetectCmd':a0_0x35e4fa(0x222),'installCmd':'gh\x20extension\x20install\x20github/gh-copilot','prereq':'gh','prereqName':a0_0x35e4fa(0x276),'auth':'GitHub\x20Copilot\x20subscription','runtime':'npm'},{'name':a0_0x35e4fa(0x20f),'binary':'aider','installCmd':a0_0x35e4fa(0x25e),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':a0_0x35e4fa(0x274),'prereqFallback':a0_0x35e4fa(0x21d),'prereqName':a0_0x35e4fa(0x277),'auth':a0_0x35e4fa(0x1ff),'runtime':'pipx'},{'name':a0_0x35e4fa(0x1fc),'binary':a0_0x35e4fa(0x1ec),'installCmd':'npm\x20install\x20-g\x20openclaw','auth':a0_0x35e4fa(0x241),'runtime':a0_0x35e4fa(0x257)}];function detectWindowsWsl(){const _0x3b1ccc=a0_0x35e4fa,_0xcf0cb7=process[_0x3b1ccc(0x221)]==='win32';if(!_0xcf0cb7)return{'isNativeWindows':![],'wslAvailable':![]};let _0x592c15=![];try{const _0x4a3ebd=execSync(_0x3b1ccc(0x26f),{'stdio':[_0x3b1ccc(0x27a),_0x3b1ccc(0x27a),'pipe'],'timeout':0x1388}),_0x5c729e=_0x4a3ebd['toString']()[_0x3b1ccc(0x21b)](/\0/g,'')['trim']();_0x592c15=_0x5c729e['length']>0x0;}catch{_0x592c15=![];}return{'isNativeWindows':_0xcf0cb7,'wslAvailable':_0x592c15};}function detectProvider(_0x498e7b){const _0x1b9af0=a0_0x35e4fa;if(_0x498e7b['detectCmd'])try{return execSync(_0x498e7b[_0x1b9af0(0x232)],{'stdio':_0x1b9af0(0x23d)}),!![];}catch{if(_0x498e7b['fallbackDetectCmd'])try{return execSync(_0x498e7b[_0x1b9af0(0x259)],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x498e7b['binary']);}function detectPythonVersion(){const _0x3630c6=a0_0x35e4fa;for(const _0x53c6eb of['python3','python']){try{const _0x3f12e0=execFileSync(_0x53c6eb,[_0x3630c6(0x245)],{'timeout':0x1388,'encoding':'utf-8','stdio':[_0x3630c6(0x23d),_0x3630c6(0x27a),'ignore']})[_0x3630c6(0x254)](),_0x36e84c=_0x3f12e0['match'](/Python\s+(\d+)\.(\d+)/);if(_0x36e84c)return{'major':parseInt(_0x36e84c[0x1]),'minor':parseInt(_0x36e84c[0x2])};}catch{}}return null;}function getCliNextSteps(_0xbdc651,_0x3ce0b3=''){const _0x5016ad=a0_0x35e4fa,_0x2a7283=_0x3ce0b3[_0x5016ad(0x231)](),_0x4cecfa=process[_0x5016ad(0x221)];if(_0xbdc651[_0x5016ad(0x26d)]===_0x5016ad(0x257)&&(_0x2a7283[_0x5016ad(0x297)](_0x5016ad(0x293))||_0x2a7283[_0x5016ad(0x297)](_0x5016ad(0x260))||_0x2a7283['includes']('native')||_0x2a7283['includes'](_0x5016ad(0x218)))){if(_0x4cecfa===_0x5016ad(0x24b))return['Open\x20PowerShell\x20as\x20Administrator\x20(right-click\x20>\x20\x22Run\x20as\x20administrator\x22)',_0x5016ad(0x20a)+c['cmd']+_0x5016ad(0x219)+c[_0x5016ad(0x237)],_0x5016ad(0x1ee),'Close\x20and\x20reopen\x20your\x20terminal','Run:\x20'+c['cmd']+_0xbdc651['installCmd']+c['reset']];if(_0x4cecfa==='darwin')return[_0x5016ad(0x20a)+c['cmd']+'xcode-select\x20--install'+c[_0x5016ad(0x237)],'Complete\x20the\x20system\x20dialog\x20that\x20appears','Run:\x20'+c['cmd']+_0xbdc651['installCmd']+c[_0x5016ad(0x237)]];return[_0x5016ad(0x20a)+c['cmd']+'sudo\x20apt\x20update\x20&&\x20sudo\x20apt\x20install\x20-y\x20build-essential\x20python3'+c['reset'],'Run:\x20'+c[_0x5016ad(0x236)]+_0xbdc651[_0x5016ad(0x21e)]+c[_0x5016ad(0x237)]];}if(_0xbdc651[_0x5016ad(0x26d)]==='pipx'&&(_0x2a7283[_0x5016ad(0x297)](_0x5016ad(0x21d))||_0x2a7283[_0x5016ad(0x297)](_0x5016ad(0x275)))){if(_0x4cecfa===_0x5016ad(0x24b))return[_0x5016ad(0x20a)+c['cmd']+_0x5016ad(0x23a)+c[_0x5016ad(0x237)],_0x5016ad(0x20a)+c[_0x5016ad(0x236)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c[_0x5016ad(0x237)],_0x5016ad(0x1fa)];return['Run:\x20'+c['cmd']+'pip\x20install\x20uv'+c['reset']+_0x5016ad(0x217)+c['cmd']+_0x5016ad(0x299)+c[_0x5016ad(0x237)]+')','Run:\x20'+c['cmd']+_0x5016ad(0x225)+c[_0x5016ad(0x237)],'Restart\x20your\x20terminal'];}return[_0x5016ad(0x20a)+c['cmd']+_0xbdc651[_0x5016ad(0x21e)]+c['reset'],'If\x20that\x20fails,\x20check\x20the\x20error\x20output\x20above\x20for\x20details'];}const rl=a0_0x439e83[a0_0x35e4fa(0x20d)]({'input':process[a0_0x35e4fa(0x24d)],'output':process['stdout']}),ask=_0x1f112e=>new Promise(_0x3a3738=>rl[a0_0x35e4fa(0x28d)](_0x1f112e,_0x3a3738));function print(_0x7320f4=''){const _0x12d771=a0_0x35e4fa;process['stdout'][_0x12d771(0x213)](_0x7320f4+'\x0a');}function runInstall(_0x1f2a19){return new Promise(_0x44818e=>{const _0x40ca92=a0_0xc12a,_0xfb2009=_0x1f2a19[_0x40ca92(0x1f9)]('\x20'),_0x52ff1e=spawn(_0xfb2009[0x0],_0xfb2009['slice'](0x1),{'stdio':'inherit','env':{...process[_0x40ca92(0x23f)]},...process['platform']===_0x40ca92(0x24b)&&{'shell':!![]}});_0x52ff1e['on'](_0x40ca92(0x273),_0x142e70=>_0x44818e(_0x142e70===0x0)),_0x52ff1e['on']('error',()=>_0x44818e(![]));});}function runInstallArgs(_0x439c94,_0x44a692){return new Promise(_0x42b4e1=>{const _0x35bed8=a0_0xc12a,_0x33b4e0=spawn(_0x439c94,_0x44a692,{'stdio':'inherit','env':{...process[_0x35bed8(0x23f)]}});_0x33b4e0['on']('close',_0x22e389=>_0x42b4e1(_0x22e389===0x0)),_0x33b4e0['on'](_0x35bed8(0x20c),()=>_0x42b4e1(![]));});}async function tryInstallBuildTools(){const _0x484199=a0_0x35e4fa,_0x26b209=process[_0x484199(0x221)];if(_0x26b209==='win32'){if(commandExistsSync(_0x484199(0x215))){print(_0x484199(0x27f)+c[_0x484199(0x258)]+_0x484199(0x23b)+c['reset']);const _0x5e3568=await runInstallArgs(_0x484199(0x215),['install','Microsoft.VisualStudio.2022.BuildTools',_0x484199(0x280),'--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart',_0x484199(0x263),'--accept-package-agreements']);return _0x5e3568;}return![];}if(_0x26b209==='darwin'){print(_0x484199(0x27f)+c['muted']+_0x484199(0x1f8)+c['reset']);const _0x296642=await runInstallArgs(_0x484199(0x291),['--install']);return _0x296642;}return![];}async function runDoctorChecks(_0x5abd6e=![]){const _0x463f18=a0_0x35e4fa;print(''),print('\x20\x20'+brandName()+'\x20'+c[_0x463f18(0x258)]+'Doctor'+c['reset']),print('\x20\x20'+c['muted']+'─'['repeat'](0x14)+c['reset']),print('');const _0x12d515=process[_0x463f18(0x235)],_0x4e2e53=parseInt(_0x12d515['slice'](0x1)),_0x3cb42c=_0x4e2e53>=0x12;_0x3cb42c?print('\x20\x20'+icons[_0x463f18(0x20b)]+'\x20Node.js\x20'+c['value']+_0x12d515+c['reset']):print('\x20\x20'+icons['fail']+_0x463f18(0x1f6)+c[_0x463f18(0x290)]+_0x12d515+c['reset']+'\x20'+c['error']+_0x463f18(0x228)+c['reset']);let _0x57ad84=![];try{await import('node-pty'),_0x57ad84=!![],print('\x20\x20'+icons[_0x463f18(0x20b)]+_0x463f18(0x25b)+c['muted']+_0x463f18(0x203)+c[_0x463f18(0x237)]);}catch{print('\x20\x20'+icons[_0x463f18(0x223)]+_0x463f18(0x25b)+c['error']+'—\x20failed\x20to\x20load'+c['reset']);}print(''),print('\x20\x20'+c['heading']+_0x463f18(0x216)+c[_0x463f18(0x237)]);const _0x127f02=[];for(const _0x845430 of CLI_PROVIDERS){const _0x576a99=detectProvider(_0x845430),_0xf70c9e={'name':_0x845430[_0x463f18(0x1fd)],'installed':_0x576a99};if(_0x5abd6e&&_0x576a99){let _0x5de2aa=_0x845430['binary'];if(_0x845430['detectCmd'])try{execSync(_0x845430[_0x463f18(0x232)],{'stdio':_0x463f18(0x23d)}),_0x5de2aa=_0x845430[_0x463f18(0x232)][_0x463f18(0x1f9)]('\x20')[0x0];}catch{_0x845430['fallbackDetectCmd']&&(_0x5de2aa=_0x845430[_0x463f18(0x259)]['split']('\x20')[0x0]);}try{const _0x4ce3b5=execSync(_0x5de2aa+'\x20--version',{'stdio':[_0x463f18(0x27a),'pipe','pipe'],'timeout':0x1388});_0xf70c9e['version']=_0x4ce3b5[_0x463f18(0x29e)]()[_0x463f18(0x254)]()[_0x463f18(0x1f9)]('\x0a')[0x0];}catch{_0xf70c9e[_0x463f18(0x235)]=null;}_0xf70c9e[_0x463f18(0x227)]=getCommandPath(_0x5de2aa);}if(_0x576a99){const _0xc79c53=_0x5abd6e&&_0xf70c9e['version']?'\x20'+c['muted']+'('+c['value']+_0xf70c9e[_0x463f18(0x235)]+c['muted']+')'+c['reset']:'',_0x165d1e=_0x5abd6e&&_0xf70c9e[_0x463f18(0x227)]?'\x20'+c[_0x463f18(0x258)]+'—\x20'+_0xf70c9e['path']+c['reset']:'';print(_0x463f18(0x27f)+icons['pass']+'\x20'+_0x845430['name']+_0xc79c53+_0x165d1e);}else print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c[_0x463f18(0x258)]+_0x845430['name']+c[_0x463f18(0x237)]);_0x127f02[_0x463f18(0x211)](_0xf70c9e);}print('');const _0x37a2ba=_0x127f02[_0x463f18(0x28c)](_0x2ca03f=>_0x2ca03f['installed'])[_0x463f18(0x29b)];return _0x37a2ba>0x0?print('\x20\x20'+c[_0x463f18(0x290)]+_0x37a2ba+'/'+_0x127f02[_0x463f18(0x29b)]+c['reset']+'\x20'+c[_0x463f18(0x258)]+'CLI\x20agent(s)\x20available.'+c['reset']):print('\x20\x20'+icons['warn']+'\x20\x20No\x20CLI\x20agents\x20found.\x20Install\x20at\x20least\x20one\x20to\x20use\x20'+brandName()+'.'),print(''),{'nodeOk':_0x3cb42c,'ptyOk':_0x57ad84,'providers':_0x127f02};}async function firstRunWizard(){const _0x51a440=a0_0x35e4fa;printBanner(print);const {isNativeWindows:_0x38da5b,wslAvailable:_0x5045cd}=detectWindowsWsl();if(_0x38da5b&&_0x5045cd){print('\x20\x20'+icons['warn']+'\x20\x20You\x27re\x20running\x20on\x20native\x20Windows,\x20but\x20WSL2\x20is\x20available.'),print(_0x51a440(0x289)+c[_0x51a440(0x258)]+_0x51a440(0x261)+c['reset']),print('\x20\x20\x20\x20\x20To\x20install\x20Colana\x20there\x20instead:'),print(''),print(_0x51a440(0x249)),print('\x20\x20\x20\x20\x20\x20\x20npm\x20install\x20-g\x20colana'),print('\x20\x20\x20\x20\x20\x20\x20colana'),print('');const _0x4faa42=await ask(_0x51a440(0x1ef));_0x4faa42['toLowerCase']()!=='y'&&(print(''),print('\x20\x20Open\x20your\x20WSL2\x20terminal\x20and\x20run:\x20npm\x20install\x20-g\x20colana'),print(''),rl['close'](),process[_0x51a440(0x29d)](0x0)),print('');}print(_0x51a440(0x22a));const _0x2e1722=await runDoctorChecks(![]);!_0x2e1722[_0x51a440(0x29a)]&&(print(_0x51a440(0x28b)),process['exit'](0x1));!_0x2e1722[_0x51a440(0x226)]&&(print('\x20\x20\x20\x20\x20Try:\x20npm\x20rebuild\x20node-pty'),process['exit'](0x1));const _0x4112e7=[],_0x5584cb=[];for(let _0x46f7cd=0x0;_0x46f7cd<CLI_PROVIDERS[_0x51a440(0x29b)];_0x46f7cd++){_0x2e1722[_0x51a440(0x295)][_0x46f7cd]['installed']?_0x4112e7['push'](CLI_PROVIDERS[_0x46f7cd]):_0x5584cb[_0x51a440(0x211)](CLI_PROVIDERS[_0x46f7cd]);}print('');if(_0x5584cb[_0x51a440(0x29b)]>0x0&&_0x4112e7[_0x51a440(0x29b)]>0x0){print(_0x51a440(0x253)),print('');for(const _0xefa88d of _0x5584cb){const _0x3907d6=await ask(_0x51a440(0x268)+_0xefa88d['name']+_0x51a440(0x240)+_0xefa88d[_0x51a440(0x29c)]+_0x51a440(0x212));_0x3907d6[_0x51a440(0x231)]()==='y'&&(await installProvider(_0xefa88d),detectProvider(_0xefa88d)&&_0x4112e7['push'](_0xefa88d));}}else{if(_0x4112e7['length']===0x0){print('\x20\x20'+icons[_0x51a440(0x26c)]+_0x51a440(0x267)+brandName()+'\x20requires\x20at\x20least\x20one\x20CLI\x20agent\x20to\x20run.'),print('');const _0xffbed2=CLI_PROVIDERS['find'](_0x475833=>_0x475833['recommended']);if(_0xffbed2){print(_0x51a440(0x26b)+_0xffbed2[_0x51a440(0x1fd)]+'\x20—\x20works\x20with\x20any\x20Google\x20account\x20(free\x20or\x20paid)');const _0x4a12b4=await ask('\x20\x20Install\x20'+_0xffbed2['name']+'?\x20[Y/n]\x20');if(_0x4a12b4['toLowerCase']()!=='n'){await installProvider(_0xffbed2);if(detectProvider(_0xffbed2))_0x4112e7[_0x51a440(0x211)](_0xffbed2);}}if(_0x4112e7[_0x51a440(0x29b)]===0x0){print(''),print('\x20\x20Choose\x20one\x20to\x20install:'),CLI_PROVIDERS['forEach']((_0x39c760,_0x4e3b2b)=>{const _0x5308c5=_0x51a440;print(_0x5308c5(0x25f)+(_0x4e3b2b+0x1)+']\x20'+_0x39c760['name']+'\x20('+_0x39c760[_0x5308c5(0x29c)]+')');}),print(_0x51a440(0x269)),print('');const _0x405272=await ask('\x20\x20>\x20'),_0x5e0894=parseInt(_0x405272)-0x1;if(_0x5e0894>=0x0&&_0x5e0894<CLI_PROVIDERS[_0x51a440(0x29b)]){await installProvider(CLI_PROVIDERS[_0x5e0894]);if(detectProvider(CLI_PROVIDERS[_0x5e0894]))_0x4112e7[_0x51a440(0x211)](CLI_PROVIDERS[_0x5e0894]);}}_0x4112e7[_0x51a440(0x29b)]===0x0&&(print(''),print('\x20\x20'+icons[_0x51a440(0x26c)]+'\x20\x20No\x20CLI\x20agents\x20installed.\x20'+brandName()+_0x51a440(0x250)),print('\x20\x20\x20\x20\x20'+c['muted']+_0x51a440(0x24a)+c[_0x51a440(0x237)]),print(''));}}_0x4112e7['length']>0x0&&(print(''),print('\x20\x20'+icons[_0x51a440(0x20b)]+_0x51a440(0x247)+c[_0x51a440(0x290)]+_0x4112e7[_0x51a440(0x29b)]+c[_0x51a440(0x237)]+'\x20CLI(s)\x20detected.'),print(_0x51a440(0x283)));print('');const _0x2c71a8=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0x2c71a8[_0x51a440(0x231)]()!=='n')try{const {installService:_0x55c19c}=await import(toImportPath(a0_0xee6f43[_0x51a440(0x282)](ROOT,'server','service-manager.js'))),_0xa92810=_0x55c19c();_0xa92810[_0x51a440(0x26a)]?print('\x20\x20'+icons['pass']+'\x20Auto-start\x20enabled.\x20'+_0xa92810['message']):(print('\x20\x20'+icons[_0x51a440(0x26c)]+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0xa92810['message']),print('\x20\x20\x20\x20\x20You\x20can\x20try\x20later\x20with:\x20colana\x20service\x20install'));}catch(_0xac2c9){print('\x20\x20'+icons[_0x51a440(0x26c)]+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0xac2c9[_0x51a440(0x27d)]),print(_0x51a440(0x21a));}print(''),print('\x20\x20Free\x20tier:\x202\x20concurrent\x20sessions,\x20all\x20features\x20included.'),print('\x20\x20Upgrade\x20anytime\x20from\x20Settings\x20for\x20unlimited\x20sessions.'),print(''),rl[_0x51a440(0x273)]();}async function installProvider(_0x47e10e){const _0x288f29=a0_0x35e4fa;if(_0x47e10e[_0x288f29(0x252)]&&!commandExistsSync(_0x47e10e['prereq'])){if(_0x47e10e['prereqFallback']&&commandExistsSync(_0x47e10e[_0x288f29(0x1f2)]))print('\x20\x20\x20\x20Using\x20'+_0x47e10e[_0x288f29(0x1f2)]+'\x20(fallback\x20for\x20'+_0x47e10e[_0x288f29(0x252)]+')');else{print(_0x288f29(0x27f)+(_0x47e10e['prereqName']||_0x47e10e['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print('\x20\x20\x20\x20Please\x20install\x20'+(_0x47e10e['prereqName']||_0x47e10e['prereq'])+_0x288f29(0x28a));return;}}let _0x41244b=_0x47e10e[_0x288f29(0x21e)],_0xded4=_0x47e10e['fallbackCmd'],_0x24336a='';if(_0x47e10e[_0x288f29(0x22c)]==='aider'){const _0x33047=detectPythonVersion();if(_0x33047&&_0x33047['major']>=0x3&&_0x33047['minor']>=0xd){print('\x20\x20\x20\x20'+c['muted']+_0x288f29(0x255)+_0x33047['major']+'.'+_0x33047[_0x288f29(0x294)]+'\x20detected\x20—\x20aider\x20requires\x20Python\x203.10-3.12'+c['reset']),print(_0x288f29(0x27f)+c[_0x288f29(0x258)]+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c['reset']),_0x24336a='python\x203.13';let _0x338fc6=commandExistsSync('uv');if(!_0x338fc6){print(_0x288f29(0x27f)+c['muted']+'Installing\x20uv\x20(universal\x20Python\x20package\x20manager)...'+c['reset']),_0x338fc6=await runInstall(_0x288f29(0x23a));if(!_0x338fc6)_0x338fc6=await runInstall('pip3\x20install\x20uv');}if(_0x338fc6)_0x41244b='uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat',_0xded4=null;else{print('\x20\x20\x20\x20'+icons[_0x288f29(0x223)]+'\x20'+c[_0x288f29(0x20c)]+_0x288f29(0x270)+c['reset']),printNextSteps(_0x47e10e,_0x288f29(0x1f3));return;}}}print('\x20\x20\x20\x20Installing\x20'+_0x47e10e['name']+_0x288f29(0x25c));let _0x4f7a9b=await runInstall(_0x41244b);!_0x4f7a9b&&_0xded4&&(print(_0x288f29(0x1f4)+_0xded4+'...'),_0x4f7a9b=await runInstall(_0xded4));if(_0x4f7a9b)print(_0x288f29(0x27f)+icons['pass']+'\x20'+_0x47e10e['name']+'\x20installed');else{if(_0x47e10e['runtime']===_0x288f29(0x257)){print('\x20\x20\x20\x20'+c[_0x288f29(0x258)]+_0x288f29(0x278)+c['reset']);const _0x4c46a5=await tryInstallBuildTools();_0x4c46a5&&(print(_0x288f29(0x27f)+c['muted']+'Retrying\x20'+_0x47e10e[_0x288f29(0x1fd)]+'\x20install...'+c['reset']),_0x4f7a9b=await runInstall(_0x41244b));if(_0x4f7a9b){print('\x20\x20\x20\x20'+icons[_0x288f29(0x20b)]+'\x20'+_0x47e10e[_0x288f29(0x1fd)]+'\x20installed');return;}_0x24336a=_0x24336a||_0x288f29(0x218);}print(_0x288f29(0x27f)+icons[_0x288f29(0x223)]+'\x20'+c[_0x288f29(0x20c)]+_0x288f29(0x208)+c['reset']),printNextSteps(_0x47e10e,_0x24336a);}}function printNextSteps(_0x3a3113,_0x4e2838=''){const _0x2f8ade=a0_0x35e4fa,_0x2a1972=getCliNextSteps(_0x3a3113,_0x4e2838);print(''),print(_0x2f8ade(0x27f)+c['heading']+_0x2f8ade(0x238)+c[_0x2f8ade(0x237)]),_0x2a1972['forEach']((_0x245e75,_0x1420bd)=>{const _0x141d8b=_0x2f8ade;print(_0x141d8b(0x27f)+c[_0x141d8b(0x258)]+(_0x1420bd+0x1)+'.'+c[_0x141d8b(0x237)]+'\x20'+_0x245e75);}),print('');}async function startServer(){const _0x363319=a0_0x35e4fa,_0x2397fc=a0_0xee6f43[_0x363319(0x282)](ROOT,'server','index.js');try{const _0x24fc59=await import(toImportPath(_0x2397fc));return _0x24fc59;}catch(_0x56da57){console[_0x363319(0x20c)](_0x363319(0x1fe)+_0x56da57[_0x363319(0x27d)]),process[_0x363319(0x29d)](0x1);}}function openBrowser(_0x1aaa71){const _0x5d83e1=a0_0x35e4fa,_0x28d383=process[_0x5d83e1(0x221)];try{if(_0x28d383===_0x5d83e1(0x251))execSync(_0x5d83e1(0x1ed)+_0x1aaa71+'\x22',{'stdio':'ignore'});else{if(_0x28d383==='win32')execSync('start\x20\x22\x22\x20\x22'+_0x1aaa71+'\x22',{'stdio':_0x5d83e1(0x23d)});else try{execSync('xdg-open\x20\x22'+_0x1aaa71+'\x22',{'stdio':_0x5d83e1(0x23d)});}catch{try{execSync('cmd.exe\x20/c\x20start\x20\x22\x22\x20\x22'+_0x1aaa71+'\x22',{'stdio':_0x5d83e1(0x23d)});}catch{}}}}catch{}}async function main(){const _0x39f357=a0_0x35e4fa;if((process['argv']['includes'](_0x39f357(0x245))||process['argv']['includes']('-v'))&&!process['argv']['includes']('--help')&&!process['argv'][_0x39f357(0x297)]('-h')&&process[_0x39f357(0x220)][0x2]!==_0x39f357(0x23e)){try{const _0x21cd9d=JSON[_0x39f357(0x24c)](a0_0x2fb391[_0x39f357(0x286)](a0_0xee6f43['join'](ROOT,'package.json'),'utf-8'));print(brandName()+'\x20'+c[_0x39f357(0x258)]+'v'+_0x21cd9d[_0x39f357(0x235)]+c['reset']);}catch{print(brandName()+'\x20'+c[_0x39f357(0x258)]+_0x39f357(0x23c)+c['reset']);}process[_0x39f357(0x29d)](0x0);}if(process[_0x39f357(0x220)]['includes']('--help')||process[_0x39f357(0x220)]['includes']('-h')){const _0x53581e=JSON[_0x39f357(0x24c)](a0_0x2fb391[_0x39f357(0x286)](a0_0xee6f43[_0x39f357(0x282)](ROOT,'package.json'),_0x39f357(0x1ea)));print('\x0a'+c[_0x39f357(0x262)]+'Usage:'+c[_0x39f357(0x237)]+'\x20'+c[_0x39f357(0x236)]+_0x39f357(0x272)+c['reset']+'\x20[options]\x20[command]\x0a\x0a'+c[_0x39f357(0x262)]+'Commands:'+c['reset']+_0x39f357(0x233)+c['cmd']+'colana'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Launch\x20the\x20'+brandName()+'\x20dashboard\x0a\x20\x20'+c[_0x39f357(0x236)]+'colana\x20doctor'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20diagnostic\x20checks\x0a\x20\x20'+c[_0x39f357(0x236)]+'colana\x20admin'+c['reset']+_0x39f357(0x271)+c['cmd']+'colana\x20service\x20install'+c['reset']+'\x20\x20Install\x20as\x20auto-start\x20background\x20service\x0a\x20\x20'+c[_0x39f357(0x236)]+_0x39f357(0x205)+c[_0x39f357(0x237)]+'\x20Remove\x20background\x20service\x0a\x20\x20'+c[_0x39f357(0x236)]+_0x39f357(0x207)+c['reset']+_0x39f357(0x281)+c[_0x39f357(0x236)]+_0x39f357(0x229)+c['reset']+'\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)\x0a\x0a'+c['heading']+'Options:'+c[_0x39f357(0x237)]+_0x39f357(0x233)+c[_0x39f357(0x236)]+'--version'+c[_0x39f357(0x237)]+',\x20'+c[_0x39f357(0x236)]+'-v'+c['reset']+_0x39f357(0x204)+c[_0x39f357(0x236)]+'--help'+c[_0x39f357(0x237)]+',\x20'+c[_0x39f357(0x236)]+'-h'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+_0x39f357(0x224)+c['reset']+_0x39f357(0x246)+c[_0x39f357(0x258)]+'(default:\x20auto-detect\x20from\x209876)'+c['reset']+'\x0a\x0a'+c['heading']+'Examples:'+c['reset']+'\x0a\x20\x20'+c['muted']+'$'+c['reset']+'\x20'+c['cmd']+_0x39f357(0x272)+c[_0x39f357(0x237)]+_0x39f357(0x22b)+c['muted']+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20doctor'+c[_0x39f357(0x237)]+_0x39f357(0x239)+c['muted']+'$'+c[_0x39f357(0x237)]+'\x20'+c[_0x39f357(0x236)]+_0x39f357(0x234)+c[_0x39f357(0x237)]+'\x20Show\x20detailed\x20diagnostic\x20info\x0a\x20\x20'+c[_0x39f357(0x258)]+'$'+c[_0x39f357(0x237)]+'\x20'+c[_0x39f357(0x236)]+_0x39f357(0x285)+c['reset']+'\x20\x20Install\x20'+brandName()+_0x39f357(0x28f)+c[_0x39f357(0x258)]+'$'+c[_0x39f357(0x237)]+'\x20'+c['cmd']+_0x39f357(0x1f0)+c[_0x39f357(0x237)]+_0x39f357(0x201)+c['muted']+'v'+_0x53581e[_0x39f357(0x235)]+c['reset']+'\x20'+c['muted']+'—'+c[_0x39f357(0x237)]+'\x20'+c[_0x39f357(0x279)]+'https://colana.ai'+c['reset']+'\x0a'),process['exit'](0x0);}if(process[_0x39f357(0x220)][0x2]==='doctor'){const _0x225814=process[_0x39f357(0x220)][_0x39f357(0x297)]('--verbose')||process['argv']['includes']('-v'),{isNativeWindows:_0x492e97,wslAvailable:_0x173d93}=detectWindowsWsl();_0x492e97&&_0x173d93&&(print(''),print('\x20\x20'+icons[_0x39f357(0x26c)]+_0x39f357(0x248)),print('\x20\x20\x20\x20\x20'+c['muted']+'AI\x20coding\x20CLIs\x20work\x20best\x20in\x20WSL2.\x20Consider\x20running\x20'+brandName()+'\x20there\x20instead.'+c[_0x39f357(0x237)]),print('')),await runDoctorChecks(_0x225814),process[_0x39f357(0x29d)](0x0);}if(process['argv'][0x2]==='admin'){const _0x46b56e=a0_0xee6f43[_0x39f357(0x282)](__dirname,'admin.js');process[_0x39f357(0x220)]['splice'](0x2,0x1),await import(toImportPath(_0x46b56e));return;}if(process['argv'][0x2]===_0x39f357(0x1fb)){const {installService:_0x5e412a,uninstallService:_0x34caac,getServiceStatus:_0x30d665,getServiceLogs:_0x29335f}=await import(toImportPath(a0_0xee6f43['join'](ROOT,'server','service-manager.js'))),_0x4f8da7=process[_0x39f357(0x220)][0x3];switch(_0x4f8da7){case _0x39f357(0x22d):{print(''),print(_0x39f357(0x296)+brandName()+_0x39f357(0x292)),print('');const _0xed831d=_0x5e412a();print(_0xed831d[_0x39f357(0x26a)]?'\x20\x20'+icons[_0x39f357(0x20b)]+'\x20'+_0xed831d['message']:'\x20\x20'+icons['fail']+'\x20'+_0xed831d['message']),print('');_0xed831d['success']&&(print('\x20\x20'+brandName()+'\x20will\x20now\x20auto-start\x20on\x20login.'),print('\x20\x20'+c[_0x39f357(0x258)]+'Open\x20your\x20browser\x20to'+c[_0x39f357(0x237)]+'\x20'+c['url']+_0x39f357(0x298)+c['reset']));print('');break;}case'uninstall':{print(''),print('\x20\x20Removing\x20'+brandName()+_0x39f357(0x24f));const _0x1880e9=_0x34caac();print(_0x1880e9['success']?'\x20\x20'+icons['pass']+'\x20'+_0x1880e9[_0x39f357(0x27d)]:'\x20\x20'+icons['fail']+'\x20'+_0x1880e9[_0x39f357(0x27d)]),print('');break;}case _0x39f357(0x243):{print('');const _0xb4e17f=_0x30d665();print('\x20\x20'+c['muted']+_0x39f357(0x27e)+c[_0x39f357(0x237)]+'\x20\x20'+c[_0x39f357(0x290)]+_0xb4e17f[_0x39f357(0x221)]+c[_0x39f357(0x237)]),print('\x20\x20'+c['muted']+'Installed:'+c['reset']+'\x20'+(_0xb4e17f[_0x39f357(0x27b)]?c[_0x39f357(0x26a)]+'yes'+c['reset']:c['muted']+'no'+c[_0x39f357(0x237)])),print('\x20\x20'+c[_0x39f357(0x258)]+'Running:'+c[_0x39f357(0x237)]+'\x20\x20\x20'+(_0xb4e17f[_0x39f357(0x256)]?c['success']+'yes'+c['reset']:c['muted']+'no'+c[_0x39f357(0x237)])),print('');break;}case'logs':{const _0x330287=_0x29335f();print(_0x330287);break;}default:print(''),print('\x20\x20'+c['heading']+'Usage:'+c[_0x39f357(0x237)]+'\x20'+c['cmd']+'colana\x20service'+c[_0x39f357(0x237)]+_0x39f357(0x21c)),print(''),print('\x20\x20'+c['heading']+_0x39f357(0x244)+c[_0x39f357(0x237)]),print(_0x39f357(0x27f)+c['cmd']+'install'+c[_0x39f357(0x237)]+_0x39f357(0x21f)),print(_0x39f357(0x27f)+c['cmd']+_0x39f357(0x200)+c[_0x39f357(0x237)]+'\x20\x20\x20Remove\x20background\x20service'),print(_0x39f357(0x27f)+c['cmd']+_0x39f357(0x243)+c['reset']+'\x20\x20\x20\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running'),print(_0x39f357(0x27f)+c['cmd']+_0x39f357(0x265)+c['reset']+_0x39f357(0x1f1)),print('');}process[_0x39f357(0x29d)](0x0);}!a0_0x2fb391['existsSync'](DATA_DIR)&&a0_0x2fb391[_0x39f357(0x28e)](DATA_DIR,{'recursive':!![]});const _0x30a75c=a0_0xee6f43['join'](DATA_DIR,'.first-run-done'),_0x269749=!a0_0x2fb391['existsSync'](_0x30a75c);_0x269749&&(await firstRunWizard(),a0_0x2fb391[_0x39f357(0x24e)](_0x30a75c,new Date()[_0x39f357(0x29f)]())),print('\x20\x20'+icons[_0x39f357(0x1eb)]+'\x20Starting\x20'+brandName()+'...'),await startServer(),setTimeout(()=>{const _0xb006f1=_0x39f357,_0x5e46ea=process[_0xb006f1(0x23f)][_0xb006f1(0x26e)]||0x2694,_0x3eff3e=_0xb006f1(0x288)+_0x5e46ea;openBrowser(_0x3eff3e);},0xbb8);}main()[a0_0x35e4fa(0x242)](_0x469ba4=>{const _0x590106=a0_0x35e4fa;console[_0x590106(0x20c)]('Colana\x20failed\x20to\x20start:\x20'+_0x469ba4[_0x590106(0x27d)]),process[_0x590106(0x29d)](0x1);});
|
|
3
|
+
const a0_0x5b13a3=a0_0x2607;(function(_0x1d0547,_0x129082){const _0x30b8bc=a0_0x2607,_0xb12b52=_0x1d0547();while(!![]){try{const _0x3c77a2=-parseInt(_0x30b8bc(0x179))/0x1*(parseInt(_0x30b8bc(0x216))/0x2)+parseInt(_0x30b8bc(0x1fb))/0x3+parseInt(_0x30b8bc(0x1e2))/0x4*(parseInt(_0x30b8bc(0x189))/0x5)+parseInt(_0x30b8bc(0x1f2))/0x6+parseInt(_0x30b8bc(0x1a5))/0x7*(parseInt(_0x30b8bc(0x194))/0x8)+-parseInt(_0x30b8bc(0x1b9))/0x9*(parseInt(_0x30b8bc(0x1fa))/0xa)+parseInt(_0x30b8bc(0x1a0))/0xb*(parseInt(_0x30b8bc(0x1dc))/0xc);if(_0x3c77a2===_0x129082)break;else _0xb12b52['push'](_0xb12b52['shift']());}catch(_0xa5254b){_0xb12b52['push'](_0xb12b52['shift']());}}}(a0_0x560a,0x3f7a5));import{execSync,execFileSync,spawn}from'child_process';import a0_0x486500 from'fs';import a0_0x4109b3 from'path';import a0_0x58e75c from'readline';import{fileURLToPath,pathToFileURL}from'url';import{commandExistsSync,getCommandPath}from'../server/platform.js';import{c,icons,brandName,tagline,printBanner}from'../server/brand.js';const __dirname=a0_0x4109b3[a0_0x5b13a3(0x1d7)](fileURLToPath(import.meta.url)),ROOT=a0_0x4109b3['resolve'](__dirname,'..'),DATA_DIR=a0_0x4109b3['join'](ROOT,a0_0x5b13a3(0x181)),toImportPath=_0x4795db=>process['platform']==='win32'?pathToFileURL(_0x4795db)[a0_0x5b13a3(0x1b0)]:_0x4795db,CLI_PROVIDERS=[{'name':'Claude\x20Code','binary':'claude','installCmd':'npm\x20install\x20-g\x20@anthropic-ai/claude-code','auth':'Requires\x20Anthropic\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':a0_0x5b13a3(0x1af),'binary':'codex','installCmd':'npm\x20install\x20-g\x20@openai/codex','auth':'Requires\x20OpenAI\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':'Gemini\x20CLI','binary':'gemini','installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':a0_0x5b13a3(0x19b),'runtime':'npm','recommended':!![]},{'name':'Copilot\x20CLI','binary':'copilot','fallbackBinary':'gh','detectCmd':'copilot\x20--version','fallbackDetectCmd':a0_0x5b13a3(0x180),'installCmd':a0_0x5b13a3(0x176),'prereq':'gh','prereqName':a0_0x5b13a3(0x1a1),'auth':a0_0x5b13a3(0x19d),'runtime':a0_0x5b13a3(0x1e8)},{'name':'Aider','binary':'aider','installCmd':a0_0x5b13a3(0x19a),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':'python3','prereqFallback':a0_0x5b13a3(0x15d),'prereqName':'Python','auth':'LLM\x20API\x20key\x20required','runtime':'pipx'},{'name':'OpenClaw','binary':a0_0x5b13a3(0x1e6),'installCmd':a0_0x5b13a3(0x196),'auth':a0_0x5b13a3(0x19c),'runtime':'npm'}];function detectWindowsWsl(){const _0x3a5079=a0_0x5b13a3,_0x503d70=process[_0x3a5079(0x1ad)]===_0x3a5079(0x1f4);if(!_0x503d70)return{'isNativeWindows':![],'wslAvailable':![]};let _0x13efbf=![];try{const _0x184104=execSync('wsl\x20--list\x20--quiet',{'stdio':['pipe','pipe',_0x3a5079(0x1fc)],'timeout':0x1388}),_0x3523d1=_0x184104['toString']()['replace'](/\0/g,'')['trim']();_0x13efbf=_0x3523d1[_0x3a5079(0x213)]>0x0;}catch{_0x13efbf=![];}return{'isNativeWindows':_0x503d70,'wslAvailable':_0x13efbf};}function detectProvider(_0x454939){const _0x2d4990=a0_0x5b13a3;if(_0x454939[_0x2d4990(0x1d0)])try{return execSync(_0x454939['detectCmd'],{'stdio':_0x2d4990(0x163)}),!![];}catch{if(_0x454939['fallbackDetectCmd'])try{return execSync(_0x454939[_0x2d4990(0x1ab)],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x454939['binary']);}function detectPythonVersion(){const _0x1335bf=a0_0x5b13a3;for(const _0x44704c of[_0x1335bf(0x1f7),'python']){try{const _0x380000=execFileSync(_0x44704c,['--version'],{'timeout':0x1388,'encoding':_0x1335bf(0x1ec),'stdio':['ignore','pipe','ignore']})[_0x1335bf(0x1a4)](),_0x16bd8d=_0x380000['match'](/Python\s+(\d+)\.(\d+)/);if(_0x16bd8d)return{'major':parseInt(_0x16bd8d[0x1]),'minor':parseInt(_0x16bd8d[0x2])};}catch{}}return null;}function a0_0x2607(_0x11c000,_0x53244b){_0x11c000=_0x11c000-0x15d;const _0x560af6=a0_0x560a();let _0x260751=_0x560af6[_0x11c000];if(a0_0x2607['LlmPWo']===undefined){var _0x3f967c=function(_0x4e57ed){const _0x2a9e89='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x486500='',_0x4109b3='';for(let _0x58e75c=0x0,_0x4795db,_0x503d70,_0x13efbf=0x0;_0x503d70=_0x4e57ed['charAt'](_0x13efbf++);~_0x503d70&&(_0x4795db=_0x58e75c%0x4?_0x4795db*0x40+_0x503d70:_0x503d70,_0x58e75c++%0x4)?_0x486500+=String['fromCharCode'](0xff&_0x4795db>>(-0x2*_0x58e75c&0x6)):0x0){_0x503d70=_0x2a9e89['indexOf'](_0x503d70);}for(let _0x184104=0x0,_0x3523d1=_0x486500['length'];_0x184104<_0x3523d1;_0x184104++){_0x4109b3+='%'+('00'+_0x486500['charCodeAt'](_0x184104)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4109b3);};a0_0x2607['gscaJE']=_0x3f967c,a0_0x2607['HyuCvg']={},a0_0x2607['LlmPWo']=!![];}const _0x17662d=_0x560af6[0x0],_0x2429b8=_0x11c000+_0x17662d,_0x36053b=a0_0x2607['HyuCvg'][_0x2429b8];return!_0x36053b?(_0x260751=a0_0x2607['gscaJE'](_0x260751),a0_0x2607['HyuCvg'][_0x2429b8]=_0x260751):_0x260751=_0x36053b,_0x260751;}function a0_0x560a(){const _0x5f5b61=['DxjS','lI4U','CgLWigLUC3rHBgWGDxy','EgnVzguTC2vSzwn0ic0TAw5ZDgfSBa','Chr5t2S','icaGicaGig5WBsbPBNn0ywXSic1NignVBgfUyq','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','pYaO','ls1OzwXW','Aw5KzxGUANm','zgfYD2LU','zgv0zwn0q21K','icbmAxn0igfSBcbSAwnLBNnLigTLExmkcG','y21KlMv4zsaVyYbZDgfYDcaIiIaI','Aw5ZDgfSBgvK','swyGDgHHDcbMywLSCYWGy2HLy2SGDgHLigvYCM9Yig91Dhb1DcbHyM92zsbMB3iGzgv0ywLSCW','y3jLyxrLsw50zxjMywnL','q29TCgXLDguGDgHLihn5C3rLBsbKAwfSB2CGDgHHDcbHChbLyxjZ','zgLYBMfTzq','cIaG','icaGia','C3rHDhvZ','zMfSBgjHy2TdBwq','nJu1ndrUAfLHrhq','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','yxjNDG','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','C2v0Dxb0B29SCW','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','mJHSrNjLyuq','C2vYDMLJzs1Tyw5Hz2vYlMPZ','q0XjigfNzw50khmPigf2ywLSywjSzs4','AgvHzgLUzW','B3bLBMnSyxC','zxHPC3rZu3LUyW','BNbT','Bg9NCW','ywrTAw4UANm','ica+ia','DxrMltG','yxv0Aa','icaGicbuCNK6ig5WBsbYzwj1AwXKig5VzguTChr5','CNvUDgLTzq','icaGicaGicaGicaGicaGicaGtgf1BMnOihrOzsa','vxnHz2u6','mJm2ote0mMrOtwDcsW','icaGkg9YoIa','D2LUmZi','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','C3rHCNqGiIiGiG','ChL0Ag9UmW','ifTVChrPB25ZxsbBy29TBwfUzf0kcG','BMfTzq','ndqWB3r6u3bw','mJmYmtaXAvrxte9P','CgLWzq','BM9Kzu9R','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLlI4U','zw52','icaGicaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMC','ifnOB3CGzgv0ywLSzwqGzgLHz25VC3rPyYbPBMzVcIaG','icbszwnVBw1LBMrLzdOG','D2fYBG','zM9YrwfJAa','icaGuMvTB3zLigjHy2TNCM91BMqGC2vYDMLJzq','yNvPBgqGDg9VBhm','ifn0yxj0Aw5Nia','y21K','t3b0Aw9UCZO','icbjBNn0ywXSia','quKGq0XjiefNzw50CZO','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','Ahr0Chm6lY9JB2XHBMeUywK','CgfZCW','DMvYC2LVBG','y2XVC2u','v2fPDcbMB3iGDgHLigLUC3rHBgWGDg8Gy29TCgXLDguGkdiTnsbTAw51DgvZkq','igrHC2HIB2fYzaOGia','BgvUz3rO','y29Syw5HigfKBwLUigXPC3qTA2v5CW','zMfPBa','mK5XyKrOEa','y29Syw5HihnLCNzPy2u','CMvZzxq','BMf0AxzL','ChL0Ag9U','igrLDgvJDgvKiokaLcbHAwrLCIbYzxf1AxjLCYbqExrOB24GmY4Xmc0ZlJeY','CMvWzwf0','Aw5OzxjPDa','CgLWEa','ChjLCMvXtMfTzq','AwDUB3jL','icaGicbuBYbPBNn0ywXSienVBgfUysb0AgvYzsbPBNn0zwfKoG','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','y29Syw5H','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','z3LW','D3jPDgu','icaGicaGignVBgfUyq','ChvZAa','ls1PBNn0ywXS','ic0TDMvYC2LVBG','iokaLcb3B3jRCYb3AxrOigfUEsbhB29NBguGywnJB3vUDcaOzNjLzsbVCIbWywLKkq','q29TBwfUzhm6','q09mqu5bx1bpuLq','BwTKAxjtEw5J','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','zxjYB3i','yMLUyxj5','z2GGzxH0zw5ZAw9UigLUC3rHBgWGz2L0AhvIl2DOlwnVCgLSB3q','CgfYC2u','Dg9mB3DLCKnHC2u','ndG4nti5s25TC3PZ','BxnIDwLSza','yxjYB3C','EwvZ','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','AM9PBG','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','z2GGy29WAwXVDcaTlxzLCNnPB24','zgf0yq','ifjLBw92zsbIywnRz3jVDw5KihnLCNzPy2ukica','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','icboBYbdteKGywDLBNrZigLUC3rHBgXLzc4G','zxHPDa','C3rKAw4','C3vKBYbHChqGDxbKyxrLicyMihn1zg8Gyxb0igLUC3rHBgWGlxKGyNvPBgqTzxnZzw50AwfSihb5DgHVBJm','DJaUmc4W','mtiYntG1EuHpAMjA','4OcuihjLCxvPCMvZihyXocS','C3vJy2vZCW','y29Syw5HigrVy3rVCG','uNvUBMLUzZO','icbvCgDYywrLigfUExrPBwuGzNjVBsbtzxr0Aw5NCYbMB3iGDw5SAw1PDgvKihnLC3nPB25ZlG','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','Aw5ZDgfSBenTza','ChjLCMvXrMfSBgjHy2S','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','Bxv0zwq','mtKYmdHxq0jkrgO','kgrLzMf1Bhq6igf1Dg8Tzgv0zwn0igzYB20GotG3nIK','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','ief1Dg8TC3rHCNqGzw5HyMXLzc4G','C3rKB3v0','ls1VDMvYCMLKzq','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','rNjLzsbVCIbWywLKieDVB2DSzsbHy2nVDw50','vxnLCI1JB25MAwD1CMvKig1VzgvSigTLExm','r2L0shvIienVCgLSB3qGC3vIC2nYAxb0Aw9U','t3bLBIb5B3vYigjYB3DZzxiGDg8','y29Syw5HihnLCNzPy2uGC3rHDhvZ','mtfjqMTeCMy','r2L0shvIienmsq','ig5VzguTChr5ia','C2vYDMvY','DhjPBq','mtqWn3npBejtBq','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','icbszw1VDMLUzYa','icaGicaGicaGicbsDw4GzgLHz25VC3rPyYbJAgvJA3mkica','Aw5ZDgfSBa','icaGifbSzwfZzsbPBNn0ywXSia','zMfSBgjHy2TezxrLy3rdBwq','CMvHzezPBgvtEw5J','CgXHDgzVCM0','DMfSDwu','q29KzxGGq0Xj','AhjLzG','icbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','pYbBws9Uxsa','ChjVDMLKzxjZ','BwvZC2fNzq','rxHHBxbSzxm6','uNvUoIa','icaGifvZAw5Nia','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','nZG0mtDzuuP0DLG','rg9JDg9Y','t3bLBIbqB3DLCLnOzwXSigfZiefKBwLUAxn0CMf0B3iGkhjPz2H0lwnSAwnRid4GiLj1BIbHCYbHzg1PBMLZDhjHDg9YiIK','Aw5JBhvKzxm','ChjLCMvX','ihjLCxvPCMvZigf0igXLyxn0ig9UzsbdteKGywDLBNqGDg8GCNvUlG','D2LUz2v0','CgfJA2fNzs5QC29U','Dg9tDhjPBMC','C3bSAxq','Cgf0Aa','ywLKzxi'];a0_0x560a=function(){return _0x5f5b61;};return a0_0x560a();}function getCliNextSteps(_0x1e1626,_0x5063be=''){const _0x112e9f=a0_0x5b13a3,_0x5d6859=_0x5063be[_0x112e9f(0x178)](),_0x124cd5=process['platform'];if(_0x1e1626['runtime']===_0x112e9f(0x1e8)&&(_0x5d6859['includes'](_0x112e9f(0x169))||_0x5d6859['includes'](_0x112e9f(0x17a))||_0x5d6859['includes'](_0x112e9f(0x219))||_0x5d6859[_0x112e9f(0x1bc)](_0x112e9f(0x206)))){if(_0x124cd5==='win32')return[_0x112e9f(0x1bb),'Run:\x20'+c['cmd']+_0x112e9f(0x192)+c[_0x112e9f(0x218)],_0x112e9f(0x211),'Close\x20and\x20reopen\x20your\x20terminal','Run:\x20'+c[_0x112e9f(0x208)]+_0x1e1626['installCmd']+c[_0x112e9f(0x218)]];if(_0x124cd5===_0x112e9f(0x1cf))return['Run:\x20'+c['cmd']+_0x112e9f(0x1c8)+c['reset'],_0x112e9f(0x1d6),_0x112e9f(0x1b6)+c['cmd']+_0x1e1626[_0x112e9f(0x190)]+c[_0x112e9f(0x218)]];return[_0x112e9f(0x1b6)+c['cmd']+_0x112e9f(0x187)+c['reset'],_0x112e9f(0x1b6)+c[_0x112e9f(0x208)]+_0x1e1626[_0x112e9f(0x190)]+c['reset']];}if(_0x1e1626[_0x112e9f(0x1ef)]===_0x112e9f(0x161)&&(_0x5d6859[_0x112e9f(0x1bc)](_0x112e9f(0x15d))||_0x5d6859['includes'](_0x112e9f(0x1e0)))){if(_0x124cd5===_0x112e9f(0x1f4))return['Run:\x20'+c[_0x112e9f(0x208)]+'pip\x20install\x20uv'+c['reset'],_0x112e9f(0x1b6)+c[_0x112e9f(0x208)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c[_0x112e9f(0x218)],_0x112e9f(0x1f5)];return[_0x112e9f(0x1b6)+c['cmd']+'pip\x20install\x20uv'+c['reset']+_0x112e9f(0x1f3)+c[_0x112e9f(0x208)]+'brew\x20install\x20uv'+c['reset']+')','Run:\x20'+c[_0x112e9f(0x208)]+_0x112e9f(0x20c)+c[_0x112e9f(0x218)],'Restart\x20your\x20terminal'];}return['Run:\x20'+c['cmd']+_0x1e1626['installCmd']+c['reset'],_0x112e9f(0x1d4)];}const rl=a0_0x58e75c[a0_0x5b13a3(0x1d5)]({'input':process[a0_0x5b13a3(0x186)],'output':process['stdout']}),ask=_0x4fafad=>new Promise(_0x4186fb=>rl['question'](_0x4fafad,_0x4186fb));function print(_0x25a3b4=''){const _0x2d29bd=a0_0x5b13a3;process[_0x2d29bd(0x198)][_0x2d29bd(0x16a)](_0x25a3b4+'\x0a');}function runInstall(_0x50fa84){return new Promise(_0xb6add6=>{const _0x2b603a=a0_0x2607,_0x440cfe=_0x50fa84['split']('\x20'),_0x3b20ae=spawn(_0x440cfe[0x0],_0x440cfe['slice'](0x1),{'stdio':_0x2b603a(0x160),'env':{...process[_0x2b603a(0x1ff)]},...process['platform']===_0x2b603a(0x1f4)&&{'shell':!![]}});_0x3b20ae['on']('close',_0x15a599=>_0xb6add6(_0x15a599===0x0)),_0x3b20ae['on'](_0x2b603a(0x174),()=>_0xb6add6(![]));});}function runInstallArgs(_0x5bc963,_0x6bbf55){return new Promise(_0x280850=>{const _0x16a36c=a0_0x2607,_0x48f9eb=spawn(_0x5bc963,_0x6bbf55,{'stdio':'inherit','env':{...process['env']}});_0x48f9eb['on']('close',_0x391ee4=>_0x280850(_0x391ee4===0x0)),_0x48f9eb['on'](_0x16a36c(0x174),()=>_0x280850(![]));});}async function tryInstallBuildTools(){const _0x1b6f61=a0_0x5b13a3,_0xbdd551=process['platform'];if(_0xbdd551==='win32'){if(commandExistsSync('winget')){print('\x20\x20\x20\x20'+c[_0x1b6f61(0x193)]+'Installing\x20Visual\x20Studio\x20Build\x20Tools\x20via\x20winget...'+c[_0x1b6f61(0x218)]);const _0x323cf4=await runInstallArgs(_0x1b6f61(0x1bf),['install','Microsoft.VisualStudio.2022.BuildTools',_0x1b6f61(0x199),'--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart','--accept-source-agreements','--accept-package-agreements']);return _0x323cf4;}return![];}if(_0xbdd551===_0x1b6f61(0x1cf)){print(_0x1b6f61(0x1d9)+c[_0x1b6f61(0x193)]+'Installing\x20Xcode\x20Command\x20Line\x20Tools...'+c['reset']);const _0x3a426a=await runInstallArgs('xcode-select',[_0x1b6f61(0x16d)]);return _0x3a426a;}return![];}async function runDoctorChecks(_0x3ee76f=![]){const _0xed6a34=a0_0x5b13a3;print(''),print('\x20\x20'+brandName()+'\x20'+c['muted']+_0xed6a34(0x1ba)+c[_0xed6a34(0x218)]),print('\x20\x20'+c[_0xed6a34(0x193)]+'─'[_0xed6a34(0x15f)](0x14)+c[_0xed6a34(0x218)]),print('');const _0x32c68a=process['version'],_0x1b59ef=parseInt(_0x32c68a['slice'](0x1)),_0x5eba9b=_0x1b59ef>=0x12;_0x5eba9b?print('\x20\x20'+icons[_0xed6a34(0x20e)]+'\x20Node.js\x20'+c[_0xed6a34(0x1ae)]+_0x32c68a+c[_0xed6a34(0x218)]):print('\x20\x20'+icons['fail']+'\x20Node.js\x20'+c[_0xed6a34(0x1ae)]+_0x32c68a+c[_0xed6a34(0x218)]+'\x20'+c['error']+_0xed6a34(0x18a)+c['reset']);let _0x15596a=![];try{await import('node-pty'),_0x15596a=!![],print('\x20\x20'+icons[_0xed6a34(0x20e)]+_0xed6a34(0x1a2)+c['muted']+'loaded'+c['reset']);}catch{print('\x20\x20'+icons[_0xed6a34(0x215)]+'\x20node-pty\x20'+c['error']+'—\x20failed\x20to\x20load'+c['reset']);}print(''),print('\x20\x20'+c[_0xed6a34(0x1e5)]+_0xed6a34(0x20b)+c['reset']);const _0x48509f=[];for(const _0xde402e of CLI_PROVIDERS){const _0x39321e=detectProvider(_0xde402e),_0x2abc65={'name':_0xde402e['name'],'installed':_0x39321e};if(_0x3ee76f&&_0x39321e){let _0x37700b=_0xde402e[_0xed6a34(0x175)];if(_0xde402e[_0xed6a34(0x1d0)])try{execSync(_0xde402e['detectCmd'],{'stdio':_0xed6a34(0x163)}),_0x37700b=_0xde402e['detectCmd'][_0xed6a34(0x1c2)]('\x20')[0x0];}catch{_0xde402e[_0xed6a34(0x1ab)]&&(_0x37700b=_0xde402e[_0xed6a34(0x1ab)][_0xed6a34(0x1c2)]('\x20')[0x0]);}try{const _0x44a12e=execSync(_0x37700b+_0xed6a34(0x16e),{'stdio':['pipe',_0xed6a34(0x1fc),'pipe'],'timeout':0x1388});_0x2abc65['version']=_0x44a12e[_0xed6a34(0x1c1)]()['trim']()['split']('\x0a')[0x0];}catch{_0x2abc65[_0xed6a34(0x20f)]=null;}_0x2abc65[_0xed6a34(0x1c3)]=getCommandPath(_0x37700b);}if(_0x39321e){const _0x4f3d8c=_0x3ee76f&&_0x2abc65['version']?'\x20'+c[_0xed6a34(0x193)]+'('+c['value']+_0x2abc65[_0xed6a34(0x20f)]+c['muted']+')'+c['reset']:'',_0x207ec3=_0x3ee76f&&_0x2abc65['path']?'\x20'+c[_0xed6a34(0x193)]+'—\x20'+_0x2abc65['path']+c['reset']:'';print(_0xed6a34(0x1d9)+icons[_0xed6a34(0x20e)]+'\x20'+_0xde402e['name']+_0x4f3d8c+_0x207ec3);}else print('\x20\x20\x20\x20'+icons[_0xed6a34(0x215)]+'\x20'+c[_0xed6a34(0x193)]+_0xde402e[_0xed6a34(0x1f9)]+c[_0xed6a34(0x218)]);_0x48509f['push'](_0x2abc65);}print('');const _0x2da50a=_0x48509f['filter'](_0x4f882a=>_0x4f882a[_0xed6a34(0x1d3)])['length'];return _0x2da50a>0x0?print('\x20\x20'+c[_0xed6a34(0x1ae)]+_0x2da50a+'/'+_0x48509f[_0xed6a34(0x213)]+c[_0xed6a34(0x218)]+'\x20'+c['muted']+_0xed6a34(0x1e4)+c['reset']):print('\x20\x20'+icons[_0xed6a34(0x203)]+_0xed6a34(0x168)+brandName()+'.'),print(''),{'nodeOk':_0x5eba9b,'ptyOk':_0x15596a,'providers':_0x48509f};}async function firstRunWizard(){const _0x162a74=a0_0x5b13a3;printBanner(print);const {isNativeWindows:_0x23665b,wslAvailable:_0x57a66f}=detectWindowsWsl();if(_0x23665b&&_0x57a66f){print('\x20\x20'+icons['warn']+'\x20\x20You\x27re\x20running\x20on\x20native\x20Windows,\x20but\x20WSL2\x20is\x20available.'),print('\x20\x20\x20\x20\x20'+c['muted']+_0x162a74(0x17d)+c['reset']),print(_0x162a74(0x164)),print(''),print('\x20\x20\x20\x20\x20\x20\x20wsl\x20-d\x20Ubuntu'),print(_0x162a74(0x1ca)),print(_0x162a74(0x16b)),print('');const _0x215eb3=await ask(_0x162a74(0x1b8));_0x215eb3[_0x162a74(0x178)]()!=='y'&&(print(''),print('\x20\x20Open\x20your\x20WSL2\x20terminal\x20and\x20run:\x20npm\x20install\x20-g\x20colana'),print(''),rl[_0x162a74(0x210)](),process[_0x162a74(0x185)](0x0)),print('');}print('\x20\x20Checking\x20your\x20environment...');const _0x447b45=await runDoctorChecks(![]);!_0x447b45[_0x162a74(0x1fd)]&&(print(_0x162a74(0x17f)),process[_0x162a74(0x185)](0x1));!_0x447b45[_0x162a74(0x1c9)]&&(print(_0x162a74(0x1ee)),process[_0x162a74(0x185)](0x1));const _0x32e3e4=[],_0x4fbb5b=[];for(let _0x429e88=0x0;_0x429e88<CLI_PROVIDERS[_0x162a74(0x213)];_0x429e88++){_0x447b45[_0x162a74(0x1b3)][_0x429e88][_0x162a74(0x1d3)]?_0x32e3e4['push'](CLI_PROVIDERS[_0x429e88]):_0x4fbb5b[_0x162a74(0x16c)](CLI_PROVIDERS[_0x429e88]);}print('');if(_0x4fbb5b[_0x162a74(0x213)]>0x0&&_0x32e3e4[_0x162a74(0x213)]>0x0){print(_0x162a74(0x167)),print('');for(const _0x1c8f41 of _0x4fbb5b){const _0x5191e8=await ask(_0x162a74(0x20a)+_0x1c8f41['name']+_0x162a74(0x1cc)+_0x1c8f41[_0x162a74(0x1ed)]+')\x20[y/N]\x20');_0x5191e8['toLowerCase']()==='y'&&(await installProvider(_0x1c8f41),detectProvider(_0x1c8f41)&&_0x32e3e4[_0x162a74(0x16c)](_0x1c8f41));}}else{if(_0x32e3e4['length']===0x0){print('\x20\x20'+icons[_0x162a74(0x203)]+'\x20\x20No\x20AI\x20coding\x20agents\x20found.\x20'+brandName()+_0x162a74(0x1be)),print('');const _0x5d6c3d=CLI_PROVIDERS['find'](_0x1d2b15=>_0x1d2b15['recommended']);if(_0x5d6c3d){print(_0x162a74(0x202)+_0x5d6c3d['name']+_0x162a74(0x16f));const _0x58e5b0=await ask('\x20\x20Install\x20'+_0x5d6c3d[_0x162a74(0x1f9)]+_0x162a74(0x1b2));if(_0x58e5b0[_0x162a74(0x178)]()!=='n'){await installProvider(_0x5d6c3d);if(detectProvider(_0x5d6c3d))_0x32e3e4['push'](_0x5d6c3d);}}if(_0x32e3e4['length']===0x0){print(''),print(_0x162a74(0x1e1)),CLI_PROVIDERS[_0x162a74(0x204)]((_0x27cc9b,_0x2dcd94)=>{print('\x20\x20\x20\x20['+(_0x2dcd94+0x1)+']\x20'+_0x27cc9b['name']+'\x20('+_0x27cc9b['auth']+')');}),print('\x20\x20\x20\x20[0]\x20Skip\x20(you\x27ll\x20need\x20to\x20install\x20one\x20manually)'),print('');const _0xf0ca5a=await ask(_0x162a74(0x1eb)),_0x5a459b=parseInt(_0xf0ca5a)-0x1;if(_0x5a459b>=0x0&&_0x5a459b<CLI_PROVIDERS[_0x162a74(0x213)]){await installProvider(CLI_PROVIDERS[_0x5a459b]);if(detectProvider(CLI_PROVIDERS[_0x5a459b]))_0x32e3e4['push'](CLI_PROVIDERS[_0x5a459b]);}}_0x32e3e4[_0x162a74(0x213)]===0x0&&(print(''),print('\x20\x20'+icons['warn']+_0x162a74(0x184)+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print('\x20\x20\x20\x20\x20'+c[_0x162a74(0x193)]+'Install\x20one\x20anytime\x20from\x20Settings\x20>\x20AI\x20CLI\x20Agents.'+c['reset']),print(''));}}_0x32e3e4['length']>0x0&&(print(''),print('\x20\x20'+icons['pass']+'\x20You\x27re\x20good\x20to\x20go!\x20'+c['value']+_0x32e3e4['length']+c['reset']+'\x20CLI(s)\x20detected.'),print('\x20\x20\x20\x20You\x20can\x20install\x20others\x20anytime\x20from\x20Settings.'));print('');const _0x62504c=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0x62504c['toLowerCase']()!=='n')try{const {installService:_0x532e03}=await import(toImportPath(a0_0x4109b3[_0x162a74(0x17e)](ROOT,'server','service-manager.js'))),_0x2fe16d=_0x532e03();_0x2fe16d[_0x162a74(0x18b)]?print('\x20\x20'+icons[_0x162a74(0x20e)]+_0x162a74(0x197)+_0x2fe16d['message']):(print('\x20\x20'+icons['warn']+_0x162a74(0x1cb)+_0x2fe16d['message']),print(_0x162a74(0x183)));}catch(_0x57d7c5){print('\x20\x20'+icons[_0x162a74(0x203)]+_0x162a74(0x1cb)+_0x57d7c5['message']),print(_0x162a74(0x183));}print(''),print('\x20\x20Free\x20tier:\x202\x20concurrent\x20sessions,\x20all\x20features\x20included.'),print(_0x162a74(0x18e)),print(''),rl['close']();}async function installProvider(_0x473c3d){const _0x891ea1=a0_0x5b13a3;if(_0x473c3d[_0x891ea1(0x1bd)]&&!commandExistsSync(_0x473c3d['prereq'])){if(_0x473c3d[_0x891ea1(0x191)]&&commandExistsSync(_0x473c3d['prereqFallback']))print(_0x891ea1(0x1b7)+_0x473c3d[_0x891ea1(0x191)]+'\x20(fallback\x20for\x20'+_0x473c3d[_0x891ea1(0x1bd)]+')');else{print(_0x891ea1(0x1d9)+(_0x473c3d['prereqName']||_0x473c3d['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print(_0x891ea1(0x1aa)+(_0x473c3d[_0x891ea1(0x162)]||_0x473c3d[_0x891ea1(0x1bd)])+'\x20first.');return;}}let _0x3972e2=_0x473c3d['installCmd'],_0x408fca=_0x473c3d[_0x891ea1(0x1db)],_0x5b865b='';if(_0x473c3d['binary']===_0x891ea1(0x1c4)){const _0x5c1187=detectPythonVersion();if(_0x5c1187&&_0x5c1187['major']>=0x3&&_0x5c1187['minor']>=0xd){print('\x20\x20\x20\x20'+c['muted']+'Python\x20'+_0x5c1187['major']+'.'+_0x5c1187['minor']+_0x891ea1(0x15e)+c[_0x891ea1(0x218)]),print(_0x891ea1(0x1d9)+c[_0x891ea1(0x193)]+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c[_0x891ea1(0x218)]),_0x5b865b='python\x203.13';let _0x9a8ecb=commandExistsSync('uv');if(!_0x9a8ecb){print(_0x891ea1(0x1d9)+c[_0x891ea1(0x193)]+_0x891ea1(0x18f)+c['reset']),_0x9a8ecb=await runInstall(_0x891ea1(0x1c7));if(!_0x9a8ecb)_0x9a8ecb=await runInstall('pip3\x20install\x20uv');}if(_0x9a8ecb)_0x3972e2='uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat',_0x408fca=null;else{print(_0x891ea1(0x1d9)+icons[_0x891ea1(0x215)]+'\x20'+c[_0x891ea1(0x174)]+'Could\x20not\x20install\x20uv.'+c[_0x891ea1(0x218)]),printNextSteps(_0x473c3d,'python\x20setuptools');return;}}}print('\x20\x20\x20\x20Installing\x20'+_0x473c3d[_0x891ea1(0x1f9)]+_0x891ea1(0x1c6));let _0xc5e22d=await runInstall(_0x3972e2);!_0xc5e22d&&_0x408fca&&(print('\x20\x20\x20\x20Trying\x20fallback:\x20'+_0x408fca+'...'),_0xc5e22d=await runInstall(_0x408fca));if(_0xc5e22d)print('\x20\x20\x20\x20'+icons[_0x891ea1(0x20e)]+'\x20'+_0x473c3d[_0x891ea1(0x1f9)]+'\x20installed');else{if(_0x473c3d['runtime']===_0x891ea1(0x1e8)){print('\x20\x20\x20\x20'+c[_0x891ea1(0x193)]+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c[_0x891ea1(0x218)]);const _0x1b7e55=await tryInstallBuildTools();_0x1b7e55&&(print('\x20\x20\x20\x20'+c['muted']+'Retrying\x20'+_0x473c3d['name']+'\x20install...'+c[_0x891ea1(0x218)]),_0xc5e22d=await runInstall(_0x3972e2));if(_0xc5e22d){print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x473c3d['name']+'\x20installed');return;}_0x5b865b=_0x5b865b||_0x891ea1(0x206);}print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c[_0x891ea1(0x174)]+_0x891ea1(0x173)+c['reset']),printNextSteps(_0x473c3d,_0x5b865b);}}function printNextSteps(_0x315e99,_0x2f12ec=''){const _0x554ea3=a0_0x5b13a3,_0x527e55=getCliNextSteps(_0x315e99,_0x2f12ec);print(''),print(_0x554ea3(0x1d9)+c['heading']+'Next\x20steps\x20to\x20resolve:'+c[_0x554ea3(0x218)]),_0x527e55[_0x554ea3(0x204)]((_0x559f50,_0x537124)=>{const _0x519658=_0x554ea3;print('\x20\x20\x20\x20'+c[_0x519658(0x193)]+(_0x537124+0x1)+'.'+c['reset']+'\x20'+_0x559f50);}),print('');}async function startServer(){const _0x11b714=a0_0x5b13a3,_0x49e2e0=a0_0x4109b3['join'](ROOT,'server',_0x11b714(0x1ce));try{const _0x5b99aa=await import(toImportPath(_0x49e2e0));return _0x5b99aa;}catch(_0x7b986e){console[_0x11b714(0x174)]('Failed\x20to\x20start\x20server:\x20'+_0x7b986e['message']),process['exit'](0x1);}}function openBrowser(_0x2aee37){const _0x131219=a0_0x5b13a3,_0x5e5263=process['platform'];try{if(_0x5e5263==='darwin')execSync('open\x20\x22'+_0x2aee37+'\x22',{'stdio':_0x131219(0x163)});else{if(_0x5e5263===_0x131219(0x1f4))execSync(_0x131219(0x1f6)+_0x2aee37+'\x22',{'stdio':'ignore'});else try{execSync('xdg-open\x20\x22'+_0x2aee37+'\x22',{'stdio':_0x131219(0x163)});}catch{try{execSync(_0x131219(0x1d2)+_0x2aee37+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}async function main(){const _0x5ecbac=a0_0x5b13a3;if((process[_0x5ecbac(0x1de)]['includes']('--version')||process[_0x5ecbac(0x1de)]['includes']('-v'))&&!process['argv']['includes'](_0x5ecbac(0x1cd))&&!process['argv']['includes']('-h')&&process['argv'][0x2]!=='doctor'){try{const _0x59928f=JSON[_0x5ecbac(0x177)](a0_0x486500[_0x5ecbac(0x1ac)](a0_0x4109b3['join'](ROOT,'package.json'),_0x5ecbac(0x1ec)));print(brandName()+'\x20'+c[_0x5ecbac(0x193)]+'v'+_0x59928f['version']+c[_0x5ecbac(0x218)]);}catch{print(brandName()+'\x20'+c['muted']+_0x5ecbac(0x188)+c['reset']);}process['exit'](0x0);}if(process[_0x5ecbac(0x1de)][_0x5ecbac(0x1bc)]('--help')||process['argv']['includes']('-h')){const _0x5e5a0c=JSON['parse'](a0_0x486500[_0x5ecbac(0x1ac)](a0_0x4109b3['join'](ROOT,_0x5ecbac(0x1c0)),_0x5ecbac(0x1ec)));print('\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1f1)+c['reset']+'\x20'+c['cmd']+'colana'+c['reset']+_0x5ecbac(0x1f8)+c['heading']+_0x5ecbac(0x170)+c['reset']+_0x5ecbac(0x1d8)+c[_0x5ecbac(0x208)]+_0x5ecbac(0x166)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1f0)+brandName()+_0x5ecbac(0x212)+c['cmd']+_0x5ecbac(0x18c)+c['reset']+_0x5ecbac(0x1a8)+c[_0x5ecbac(0x208)]+'colana\x20admin'+c[_0x5ecbac(0x218)]+'\x20<cmd>\x20\x20\x20\x20\x20\x20Admin\x20CLI\x20(create-key,\x20revoke-key,\x20list-keys,\x20key-info)\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'colana\x20service\x20install'+c['reset']+_0x5ecbac(0x1b1)+c[_0x5ecbac(0x208)]+'colana\x20service\x20uninstall'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x182)+c[_0x5ecbac(0x208)]+_0x5ecbac(0x19f)+c['reset']+'\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'colana\x20service\x20logs'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)\x0a\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x209)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1d8)+c['cmd']+'--version'+c['reset']+',\x20'+c[_0x5ecbac(0x208)]+'-v'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'--help'+c[_0x5ecbac(0x218)]+',\x20'+c['cmd']+'-h'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+'--port'+c['reset']+'\x20<number>\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20specific\x20port\x20'+c['muted']+_0x5ecbac(0x195)+c['reset']+'\x0a\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1b5)+c['reset']+'\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c[_0x5ecbac(0x218)]+'\x20'+c[_0x5ecbac(0x208)]+'colana'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20the\x20dashboard\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c[_0x5ecbac(0x208)]+_0x5ecbac(0x18c)+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Check\x20CLI\x20agents\x20and\x20system\x20health\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c[_0x5ecbac(0x208)]+'colana\x20doctor\x20--verbose'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x201)+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20service\x20install'+c[_0x5ecbac(0x218)]+'\x20\x20Install\x20'+brandName()+_0x5ecbac(0x165)+c[_0x5ecbac(0x193)]+'$'+c[_0x5ecbac(0x218)]+'\x20'+c[_0x5ecbac(0x208)]+_0x5ecbac(0x214)+c['reset']+_0x5ecbac(0x1d1)+c[_0x5ecbac(0x193)]+'v'+_0x5e5a0c['version']+c['reset']+'\x20'+c['muted']+'—'+c['reset']+'\x20'+c['url']+_0x5ecbac(0x20d)+c[_0x5ecbac(0x218)]+'\x0a'),process[_0x5ecbac(0x185)](0x0);}if(process['argv'][0x2]==='doctor'){const _0x3e9363=process['argv']['includes']('--verbose')||process['argv'][_0x5ecbac(0x1bc)]('-v'),{isNativeWindows:_0x3278d9,wslAvailable:_0x160805}=detectWindowsWsl();_0x3278d9&&_0x160805&&(print(''),print('\x20\x20'+icons[_0x5ecbac(0x203)]+'\x20\x20Native\x20Windows\x20detected\x20with\x20WSL2\x20available.'),print('\x20\x20\x20\x20\x20'+c['muted']+_0x5ecbac(0x1a6)+brandName()+'\x20there\x20instead.'+c[_0x5ecbac(0x218)]),print('')),await runDoctorChecks(_0x3e9363),process['exit'](0x0);}if(process[_0x5ecbac(0x1de)][0x2]==='admin'){const _0x39d647=a0_0x4109b3[_0x5ecbac(0x17e)](__dirname,_0x5ecbac(0x1ea));process['argv']['splice'](0x2,0x1),await import(toImportPath(_0x39d647));return;}if(process['argv'][0x2]==='service'){const {installService:_0x1f1618,uninstallService:_0x5bd44b,getServiceStatus:_0x23312b,getServiceLogs:_0x17c143}=await import(toImportPath(a0_0x4109b3[_0x5ecbac(0x17e)](ROOT,_0x5ecbac(0x1a3),_0x5ecbac(0x1e3)))),_0x3a483d=process[_0x5ecbac(0x1de)][0x3];switch(_0x3a483d){case _0x5ecbac(0x1a9):{print(''),print('\x20\x20Installing\x20'+brandName()+_0x5ecbac(0x1fe)),print('');const _0x333d3c=_0x1f1618();print(_0x333d3c[_0x5ecbac(0x18b)]?'\x20\x20'+icons[_0x5ecbac(0x20e)]+'\x20'+_0x333d3c['message']:'\x20\x20'+icons['fail']+'\x20'+_0x333d3c[_0x5ecbac(0x1b4)]),print('');_0x333d3c[_0x5ecbac(0x18b)]&&(print('\x20\x20'+brandName()+'\x20will\x20now\x20auto-start\x20on\x20login.'),print('\x20\x20'+c[_0x5ecbac(0x193)]+_0x5ecbac(0x19e)+c['reset']+'\x20'+c[_0x5ecbac(0x1c5)]+'http://localhost:9876'+c[_0x5ecbac(0x218)]));print('');break;}case'uninstall':{print(''),print(_0x5ecbac(0x1a7)+brandName()+'\x20background\x20service...');const _0x3e3b95=_0x5bd44b();print(_0x3e3b95['success']?'\x20\x20'+icons[_0x5ecbac(0x20e)]+'\x20'+_0x3e3b95['message']:'\x20\x20'+icons[_0x5ecbac(0x215)]+'\x20'+_0x3e3b95['message']),print('');break;}case'status':{print('');const _0x39a908=_0x23312b();print('\x20\x20'+c['muted']+'Platform:'+c['reset']+'\x20\x20'+c[_0x5ecbac(0x1ae)]+_0x39a908[_0x5ecbac(0x1ad)]+c[_0x5ecbac(0x218)]),print('\x20\x20'+c[_0x5ecbac(0x193)]+'Installed:'+c[_0x5ecbac(0x218)]+'\x20'+(_0x39a908[_0x5ecbac(0x1d3)]?c[_0x5ecbac(0x18b)]+_0x5ecbac(0x17c)+c[_0x5ecbac(0x218)]:c[_0x5ecbac(0x193)]+'no'+c[_0x5ecbac(0x218)])),print('\x20\x20'+c[_0x5ecbac(0x193)]+_0x5ecbac(0x18d)+c['reset']+'\x20\x20\x20'+(_0x39a908['running']?c['success']+'yes'+c['reset']:c['muted']+'no'+c['reset'])),print('');break;}case _0x5ecbac(0x1e9):{const _0x55c2bb=_0x17c143();print(_0x55c2bb);break;}default:print(''),print('\x20\x20'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1f1)+c[_0x5ecbac(0x218)]+'\x20'+c['cmd']+_0x5ecbac(0x217)+c['reset']+_0x5ecbac(0x1df)),print(''),print('\x20\x20'+c['heading']+'Commands:'+c[_0x5ecbac(0x218)]),print(_0x5ecbac(0x1d9)+c[_0x5ecbac(0x208)]+'install'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1dd)),print(_0x5ecbac(0x1d9)+c['cmd']+'uninstall'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x205)),print(_0x5ecbac(0x1d9)+c['cmd']+_0x5ecbac(0x1da)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x200)),print('\x20\x20\x20\x20'+c['cmd']+'logs'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)'),print('');}process[_0x5ecbac(0x185)](0x0);}!a0_0x486500[_0x5ecbac(0x1e7)](DATA_DIR)&&a0_0x486500[_0x5ecbac(0x172)](DATA_DIR,{'recursive':!![]});const _0x588a19=a0_0x4109b3['join'](DATA_DIR,'.first-run-done'),_0x1b475c=!a0_0x486500['existsSync'](_0x588a19);_0x1b475c&&(await firstRunWizard(),a0_0x486500['writeFileSync'](_0x588a19,new Date()['toISOString']())),print('\x20\x20'+icons[_0x5ecbac(0x17b)]+_0x5ecbac(0x207)+brandName()+_0x5ecbac(0x1c6)),await startServer(),setTimeout(()=>{const _0x1e33d1=_0x5ecbac,_0x2ef55d=process['env'][_0x1e33d1(0x171)]||0x2694,_0x173c17='http://localhost:'+_0x2ef55d;openBrowser(_0x173c17);},0xbb8);}main()['catch'](_0x2de58d=>{const _0x1a4672=a0_0x5b13a3;console[_0x1a4672(0x174)]('Colana\x20failed\x20to\x20start:\x20'+_0x2de58d['message']),process[_0x1a4672(0x185)](0x1);});
|