colana 1.0.0-beta.97 → 1.0.0-beta.99
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/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
|
-
(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);});
|
|
3
|
+
const a0_0x4b9295=a0_0x5679;(function(_0x124cff,_0x3f85dd){const _0x102d9d=a0_0x5679,_0x313864=_0x124cff();while(!![]){try{const _0x155263=-parseInt(_0x102d9d(0x192))/0x1+parseInt(_0x102d9d(0x187))/0x2+-parseInt(_0x102d9d(0x17d))/0x3+parseInt(_0x102d9d(0x189))/0x4+-parseInt(_0x102d9d(0x1c1))/0x5*(parseInt(_0x102d9d(0x1b4))/0x6)+-parseInt(_0x102d9d(0x19a))/0x7+parseInt(_0x102d9d(0x1d9))/0x8;if(_0x155263===_0x3f85dd)break;else _0x313864['push'](_0x313864['shift']());}catch(_0x3fdc01){_0x313864['push'](_0x313864['shift']());}}}(a0_0x34df,0x9b7a3));import a0_0x1d5429 from'fs';import a0_0x868354 from'path';import a0_0x53553c from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x868354[a0_0x4b9295(0x180)](fileURLToPath(import.meta.url));function parseArgs(_0x39d541){const _0x3ef88a=a0_0x4b9295,_0x48f1b8=_0x39d541['slice'](0x2),_0x4fa3fd=_0x48f1b8[0x0],_0x162b0f=[],_0x2e4068={};for(let _0x1bd6f1=0x1;_0x1bd6f1<_0x48f1b8[_0x3ef88a(0x1d4)];_0x1bd6f1++){if(_0x48f1b8[_0x1bd6f1][_0x3ef88a(0x18f)]('--')){let _0x1577d3=_0x48f1b8[_0x1bd6f1][_0x3ef88a(0x186)](0x2),_0x38ba21;const _0x3e577f=_0x1577d3[_0x3ef88a(0x19d)]('=');_0x3e577f!==-0x1?(_0x38ba21=_0x1577d3[_0x3ef88a(0x186)](_0x3e577f+0x1),_0x1577d3=_0x1577d3[_0x3ef88a(0x186)](0x0,_0x3e577f)):_0x38ba21=_0x1bd6f1+0x1<_0x48f1b8['length']&&!_0x48f1b8[_0x1bd6f1+0x1][_0x3ef88a(0x18f)]('--')?_0x48f1b8[++_0x1bd6f1]:_0x3ef88a(0x1d8),_0x2e4068[_0x1577d3]=_0x38ba21;}else _0x162b0f['push'](_0x48f1b8[_0x1bd6f1]);}return{'command':_0x4fa3fd,'flags':_0x2e4068,'positional':_0x162b0f};}function maskKey(_0x4e36c0){const _0x4d57f8=a0_0x4b9295;if(!_0x4e36c0||_0x4e36c0[_0x4d57f8(0x1d4)]<=0x8)return _0x4d57f8(0x1c5);return _0x4e36c0['slice'](0x0,0x4)+_0x4d57f8(0x1c5);}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x5c9843=a0_0x4b9295;for(let _0xcb833b=0x0;_0xcb833b<MAX_PORT_SCAN;_0xcb833b++){const _0x549f77=DEFAULT_PORT+_0xcb833b;try{const _0x298b71=await fetch('http://127.0.0.1:'+_0x549f77+'/api/health',{'signal':AbortSignal['timeout'](0x1f4)});if(_0x298b71['ok']){const _0x54aade=await _0x298b71['json']();if(_0x54aade[_0x5c9843(0x18b)]==='ok')return'http://127.0.0.1:'+_0x549f77;}}catch{}}return null;}function a0_0x5679(_0x3e2c9c,_0x3a373e){_0x3e2c9c=_0x3e2c9c-0x17d;const _0x34dfa8=a0_0x34df();let _0x5679e9=_0x34dfa8[_0x3e2c9c];if(a0_0x5679['ueOFZa']===undefined){var _0x41cb2f=function(_0x4829b2){const _0x4c54f9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1d5429='',_0x868354='';for(let _0x53553c=0x0,_0x39d541,_0x48f1b8,_0x4fa3fd=0x0;_0x48f1b8=_0x4829b2['charAt'](_0x4fa3fd++);~_0x48f1b8&&(_0x39d541=_0x53553c%0x4?_0x39d541*0x40+_0x48f1b8:_0x48f1b8,_0x53553c++%0x4)?_0x1d5429+=String['fromCharCode'](0xff&_0x39d541>>(-0x2*_0x53553c&0x6)):0x0){_0x48f1b8=_0x4c54f9['indexOf'](_0x48f1b8);}for(let _0x162b0f=0x0,_0x2e4068=_0x1d5429['length'];_0x162b0f<_0x2e4068;_0x162b0f++){_0x868354+='%'+('00'+_0x1d5429['charCodeAt'](_0x162b0f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x868354);};a0_0x5679['czGuVp']=_0x41cb2f,a0_0x5679['noMShM']={},a0_0x5679['ueOFZa']=!![];}const _0x3baf52=_0x34dfa8[0x0],_0x2314d5=_0x3e2c9c+_0x3baf52,_0x5b3b1d=a0_0x5679['noMShM'][_0x2314d5];return!_0x5b3b1d?(_0x5679e9=a0_0x5679['czGuVp'](_0x5679e9),a0_0x5679['noMShM'][_0x2314d5]=_0x5679e9):_0x5679e9=_0x5b3b1d,_0x5679e9;}async function createKeyViaApi(_0x5b9b19,_0x3823ad){const _0x2da950=a0_0x4b9295,_0x15049e=await fetch(_0x5b9b19+_0x2da950(0x1b5),{'method':_0x2da950(0x1df),'headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3823ad)});if(!_0x15049e['ok']){const _0x151217=await _0x15049e['json']()['catch'](()=>({'error':_0x2da950(0x1bf)+_0x15049e['status']}));throw new Error(_0x151217['error']||_0x2da950(0x1af)+_0x15049e['status']);}return _0x15049e['json']();}async function listKeysViaApi(_0x1ac62d,_0x52b900){const _0x536ca8=a0_0x4b9295,_0x5b5bb2=new URLSearchParams();if(_0x52b900[_0x536ca8(0x18e)])_0x5b5bb2[_0x536ca8(0x195)]('type',_0x52b900[_0x536ca8(0x18e)]);if(_0x52b900[_0x536ca8(0x18b)])_0x5b5bb2['set'](_0x536ca8(0x18b),_0x52b900['status']);const _0x3e389f=_0x5b5bb2['toString'](),_0x3c7d00=await fetch(_0x1ac62d+_0x536ca8(0x1b5)+(_0x3e389f?'?'+_0x3e389f:''));if(!_0x3c7d00['ok']){const _0x4bafad=await _0x3c7d00[_0x536ca8(0x1a6)]()[_0x536ca8(0x1be)](()=>({'error':'HTTP\x20'+_0x3c7d00[_0x536ca8(0x18b)]}));throw new Error(_0x4bafad['error']||'Server\x20responded\x20with\x20'+_0x3c7d00[_0x536ca8(0x18b)]);}return _0x3c7d00['json']();}async function revokeKeyViaApi(_0x60ca18,_0x2f03ee){const _0x4f89a4=a0_0x4b9295,_0x3def8a=await fetch(_0x60ca18+'/api/admin/keys/'+_0x2f03ee,{'method':'DELETE'});if(!_0x3def8a['ok']){const _0x44747f=await _0x3def8a['json']()['catch'](()=>({'error':'HTTP\x20'+_0x3def8a[_0x4f89a4(0x18b)]}));throw new Error(_0x44747f[_0x4f89a4(0x1da)]||'Server\x20responded\x20with\x20'+_0x3def8a[_0x4f89a4(0x18b)]);}return _0x3def8a[_0x4f89a4(0x1a6)]();}function a0_0x34df(){const _0x1bda58=['ywrTAw4','kIOQkG','DMfSDwu','qwrTAw4Gq0Xj','icaGicaGicaGicbgAwX0zxiGyNKGDhLWzqOGicaGica','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','zxHPDa','CMvZzxq','cIaG','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','CMvWzwf0','tgLJzw5ZzsblzxLZoG','ls1Uyw1Licjoyw1LiG','AgvHzgLUzW','icaGicaG','cIaGica','BgvUz3rO','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','y29Syw5HigfKBwLUigXPC3qTA2v5CW','C3rHzMy','Dhj1zq','mti3oteZnJbHu0vSwNG','zxjYB3i','khzPysbZzxj2zxiP','BwvZC2fNzq','C3bSAxq','kenYzwf0zwqGDMLHihj1BM5PBMCGC2vYDMvYkq','ue9tva','mty3mZG2ofPnD0jADG','zMfPBa','vhLWztO','zgLYBMfTzq','Dg9mB2nHBgveyxrLu3rYAw5N','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','Aw5JBhvKzxm','CMv2B2TLlwTLEq','rvjst1i6ieLUDMfSAwqGDhLWzsaI','C2XPy2u','mJa1nZe3ofPUwgHzEG','CgfKrw5K','mJKWodu2ohzRwLzSsa','zw52','C3rHDhvZ','s2v5oG','zw1HAwW','DhLWzq','C3rHCNrZv2L0Aa','icaGica','ls1ZDgf0DxmGywn0AxzLFhjLDM9Rzwq','nZu4odiWu0n4DeDy','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','u1rbrKzFs0vzuW','C2v0','DxjS','suq6','DhjPBq','ifvUA25VD24Gy29TBwfUzdOG','odCYmdiYou5JDNLAzG','Bg9N','tMfTzq','Aw5KzxHpzG','y29Syw5HigfKBwLUigrVy3rVCG','Bxv0zwq','y3jLyxrLzf9HDa','icaGicaGicaGicaGicbfEhbPCNKGzgf0zsaOB3b0Aw9UywWPcIaGica','u3rHDhvZ','y29Syw5HigfKBwLUihn0ywzMlwTLExm','igHHCYbIzwvUihjLDM9RzwqUcG','icaGicaGicaGicaGicaGicaGicaGuMvJAxbPzw50ig5HBwuGkhjLCxvPCMvKkqOGicaGica','ANnVBG','vhLWzq','CgfZCW','y29Syw5HigfKBwLUignYzwf0zs1RzxK','ieTLEsa','C3rHzMyTA2v5CW','cIaGtM8GA2v5CYbMB3vUzc4k','icbvC2fNztOGy29Syw5HigfKBwLUihjLDM9Rzs1RzxKGpgLKpGO','y21K','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','icaGicaGicaGicaGicaGicbsDw4GC3LZDgvTigrPywDUB3n0AwnZcIaGica','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','icbuBYbHzgqVCMvTB3zLigTLExmSihvWzgf0zsb0AguGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','nKHzwxjAsW','l2fWAs9Hzg1PBI9RzxLZ','ls10ExbLihn0ywzMFgfKBwLUFgjLDge','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','lI4VC2vYDMvYl2rIlMPZ','icaGia','tMv2zxi','rvjst1i6ic0TBMfTzsbPCYbYzxf1AxjLzc4','qurnsu5Fs0vzuW','icbvC2fNztOGy29Syw5HigfKBwLUignYzwf0zs1RzxKGls1Uyw1LicjtyxjHAciGls10ExbLihn0ywzMifSTlwvTywLSihHDifSTlwv4CgLYzxmGmJaYnI0XmI0Zmv0k','y2f0y2G','sfruuca','icaGicaGicaGicaGicbmAxn0ierclxn0B3jLzcbSAwnLBNnLigTLExmkicaGicaG','nZC2ndy1AuXvAg1X','A2v5CW','qwrTAw4Gs2v5CZO'];a0_0x34df=function(){return _0x1bda58;};return a0_0x34df();}let _dbReady=![];async function ensureDb(){const _0x293e52=a0_0x4b9295;if(_dbReady)return;const {getDb:_0x30ef08}=await import(_0x293e52(0x1b8));await _0x30ef08(),_dbReady=!![];}async function createKey(_0xef9732){const _0x5f1049=a0_0x4b9295,_0x309255=_0xef9732['name'],_0x1a56e1=_0xef9732['type']||'staff',_0x24fbe3=_0xef9732[_0x5f1049(0x18d)]||null,_0x4995ae=_0xef9732['expires']||null;if(!_0x309255){console[_0x5f1049(0x1da)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x5f1049(0x1da)]+_0x5f1049(0x1bb)+c['reset']+'\x0a'),console[_0x5f1049(0x1da)](_0x5f1049(0x1bd)),process[_0x5f1049(0x1ca)](0x1);return;}const _0x5f5d19=[_0x5f1049(0x1c4),_0x5f1049(0x1d7),'beta'];if(!_0x5f5d19[_0x5f1049(0x183)](_0x1a56e1)){console[_0x5f1049(0x1da)]('\x0a\x20\x20'+icons[_0x5f1049(0x17e)]+'\x20'+c['error']+_0x5f1049(0x185)+_0x1a56e1+'\x22.\x20Must\x20be\x20one\x20of:\x20'+_0x5f5d19['join'](',\x20')+c['reset']+'\x0a'),process['exit'](0x1);return;}const _0x268e5a=await findRunningServer();let _0x14f4fa;if(_0x268e5a)try{_0x14f4fa=await createKeyViaApi(_0x268e5a,{'name':_0x309255,'type':_0x1a56e1,'email':_0x24fbe3||undefined,'expires':_0x4995ae||undefined});}catch(_0xb63f3e){console[_0x5f1049(0x1da)](_0x5f1049(0x1cc)+icons['fail']+'\x20'+c['error']+_0xb63f3e['message']+c[_0x5f1049(0x1cb)]+'\x20'+c[_0x5f1049(0x19f)]+_0x5f1049(0x1db)+c[_0x5f1049(0x1cb)]+'\x0a'),process[_0x5f1049(0x1ca)](0x1);return;}else{await ensureDb();const {generateKey:_0x71574b}=await import(_0x5f1049(0x1b7));try{_0x14f4fa=_0x71574b(_0x309255,_0x1a56e1,_0x24fbe3,_0x4995ae);}catch(_0x46763d){console[_0x5f1049(0x1da)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x5f1049(0x1da)]+_0x46763d[_0x5f1049(0x1dc)]+c[_0x5f1049(0x1cb)]+'\x0a'),process['exit'](0x1);return;}}if(!_0x14f4fa||!_0x14f4fa['name']){console[_0x5f1049(0x1da)](_0x5f1049(0x1cc)+icons[_0x5f1049(0x17e)]+'\x20'+c['error']+_0x5f1049(0x1c9)+c['reset']+'\x0a'),process['exit'](0x1);return;}console['log'](''),console['log']('\x20\x20'+icons[_0x5f1049(0x1a8)]+_0x5f1049(0x1b1)),console[_0x5f1049(0x19b)]('\x20\x20'+c[_0x5f1049(0x19f)]+'─'[_0x5f1049(0x1ce)](0x28)+c[_0x5f1049(0x1cb)]),console['log'](_0x5f1049(0x1b9)+c['muted']+'Name:'+c[_0x5f1049(0x1cb)]+'\x20\x20\x20\x20'+c[_0x5f1049(0x1c6)]+_0x14f4fa['name']+c['reset']),console[_0x5f1049(0x19b)]('\x20\x20\x20\x20'+c['muted']+_0x5f1049(0x17f)+c['reset']+'\x20\x20\x20\x20'+c[_0x5f1049(0x1c6)]+_0x14f4fa[_0x5f1049(0x18e)]+c[_0x5f1049(0x1cb)]),console[_0x5f1049(0x19b)]('\x20\x20\x20\x20'+c['muted']+_0x5f1049(0x197)+c[_0x5f1049(0x1cb)]+_0x5f1049(0x1d2)+c['value']+_0x14f4fa['id']+c['reset']),console[_0x5f1049(0x19b)]('\x20\x20\x20\x20'+c['muted']+_0x5f1049(0x18c)+c[_0x5f1049(0x1cb)]+_0x5f1049(0x190)+c['warn']+_0x14f4fa['raw']+c['reset']),console[_0x5f1049(0x19b)]('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c['reset']),console[_0x5f1049(0x19b)]('\x20\x20'+c['warn']+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c['reset']),_0x268e5a?console[_0x5f1049(0x19b)]('\x20\x20'+c['muted']+_0x5f1049(0x1de)+c[_0x5f1049(0x1cb)]):console[_0x5f1049(0x19b)]('\x20\x20'+c[_0x5f1049(0x19f)]+'(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)'+c[_0x5f1049(0x1cb)]),console[_0x5f1049(0x19b)]('');}async function listKeysCmd(_0x27177e){const _0x9b2dbf=a0_0x4b9295,_0x3899d4={};if(_0x27177e[_0x9b2dbf(0x18e)])_0x3899d4[_0x9b2dbf(0x18e)]=_0x27177e[_0x9b2dbf(0x18e)];if(_0x27177e[_0x9b2dbf(0x18b)])_0x3899d4[_0x9b2dbf(0x18b)]=_0x27177e['status'];const _0xe08aeb=await findRunningServer();let _0x21cb20;if(_0xe08aeb)try{_0x21cb20=await listKeysViaApi(_0xe08aeb,_0x3899d4);}catch(_0x230c3f){console[_0x9b2dbf(0x1da)]('\x0a\x20\x20'+icons[_0x9b2dbf(0x17e)]+'\x20'+c[_0x9b2dbf(0x1da)]+_0x230c3f[_0x9b2dbf(0x1dc)]+c[_0x9b2dbf(0x1cb)]+'\x20'+c[_0x9b2dbf(0x19f)]+'(via\x20server)'+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {listKeys:_0x1f2b1b}=await import(_0x9b2dbf(0x1b7));_0x21cb20=_0x1f2b1b(_0x3899d4);}if(!_0x21cb20||!_0x21cb20[_0x9b2dbf(0x1c2)]||!_0x21cb20['keys']['length']){console[_0x9b2dbf(0x19b)](_0x9b2dbf(0x1ac));return;}console['log'](''),console[_0x9b2dbf(0x19b)]('\x20\x20'+c[_0x9b2dbf(0x1d1)]+_0x9b2dbf(0x1cf)+c['reset']),console['log']('\x20\x20'+c[_0x9b2dbf(0x19f)]+'─'[_0x9b2dbf(0x1ce)](0x50)+c['reset']),console[_0x9b2dbf(0x19b)]('\x20\x20'+c[_0x9b2dbf(0x19f)]+'ID'['padEnd'](0xa)+_0x9b2dbf(0x19c)['padEnd'](0x14)+_0x9b2dbf(0x1a7)[_0x9b2dbf(0x188)](0xa)+_0x9b2dbf(0x1a2)['padEnd'](0xa)+'Expires'[_0x9b2dbf(0x188)](0xf)+'Created'+c[_0x9b2dbf(0x1cb)]),console[_0x9b2dbf(0x19b)]('\x20\x20'+c[_0x9b2dbf(0x19f)]+'─'[_0x9b2dbf(0x1ce)](0x50)+c[_0x9b2dbf(0x1cb)]);for(const _0x145277 of _0x21cb20['keys']){const _0x19599c=(_0x145277['id']||'')['slice'](0x0,0x8),_0x34fd1f=(_0x145277['name']||'')[_0x9b2dbf(0x186)](0x0,0x12)[_0x9b2dbf(0x188)](0x14),_0x3b2a30=(_0x145277['type']||'')['padEnd'](0xa),_0x54d9a2=(_0x145277[_0x9b2dbf(0x18b)]||'')[_0x9b2dbf(0x188)](0xa),_0x4420d9=(_0x145277['expiry']?new Date(_0x145277['expiry'])['toLocaleDateString']():_0x9b2dbf(0x1ba))['padEnd'](0xf),_0x8e9985=_0x145277['created_at']?new Date(_0x145277[_0x9b2dbf(0x1a0)])[_0x9b2dbf(0x181)]():'-';console['log']('\x20\x20'+_0x19599c[_0x9b2dbf(0x188)](0xa)+_0x34fd1f+_0x3b2a30+_0x54d9a2+_0x4420d9+_0x8e9985);}console[_0x9b2dbf(0x19b)]('\x20\x20'+c[_0x9b2dbf(0x19f)]+'─'[_0x9b2dbf(0x1ce)](0x50)+c['reset']),console['log']('\x20\x20'+c[_0x9b2dbf(0x19f)]+'Total:\x20'+_0x21cb20[_0x9b2dbf(0x1c2)][_0x9b2dbf(0x1d4)]+'\x20key(s)'+c[_0x9b2dbf(0x1cb)]+'\x0a');}async function revokeKeyCmd(_0x1401e8){const _0x44afa1=a0_0x4b9295,_0x4d791b=_0x1401e8[0x0];if(!_0x4d791b){console['error']('\x0a\x20\x20'+icons[_0x44afa1(0x17e)]+'\x20'+c['error']+'ERROR:\x20Key\x20ID\x20is\x20required.'+c[_0x44afa1(0x1cb)]+'\x0a'),console['error'](_0x44afa1(0x1ad)),process['exit'](0x1);return;}const _0x161212=await findRunningServer();if(_0x161212)try{await revokeKeyViaApi(_0x161212,_0x4d791b),console[_0x44afa1(0x19b)]('\x0a\x20\x20'+icons[_0x44afa1(0x1a8)]+_0x44afa1(0x1aa)+c[_0x44afa1(0x1c6)]+_0x4d791b+c[_0x44afa1(0x1cb)]+'\x20has\x20been\x20revoked.\x0a');}catch(_0x3a7031){console[_0x44afa1(0x1da)](_0x44afa1(0x1cc)+icons['fail']+'\x20'+c[_0x44afa1(0x1da)]+_0x3a7031['message']+c[_0x44afa1(0x1cb)]+'\x20'+c[_0x44afa1(0x19f)]+_0x44afa1(0x1db)+c[_0x44afa1(0x1cb)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x44c3ac}=await import('../server/key-manager.js');try{_0x44c3ac(_0x4d791b),console['log'](_0x44afa1(0x1cc)+icons[_0x44afa1(0x1a8)]+_0x44afa1(0x1aa)+c['value']+_0x4d791b+c[_0x44afa1(0x1cb)]+_0x44afa1(0x1a4));}catch(_0x37019c){console[_0x44afa1(0x1da)]('\x0a\x20\x20'+icons[_0x44afa1(0x17e)]+'\x20'+c['error']+_0x37019c[_0x44afa1(0x1dc)]+c['reset']+'\x0a'),process[_0x44afa1(0x1ca)](0x1);return;}}}function showHelp(){const _0xffa6c6=a0_0x4b9295;console[_0xffa6c6(0x19b)](_0xffa6c6(0x1cc)+brandName()+'\x20'+c[_0xffa6c6(0x19f)]+_0xffa6c6(0x1c7)+c['reset']+'\x0a\x0a\x20\x20'+c[_0xffa6c6(0x1d1)]+'Usage:'+c[_0xffa6c6(0x1cb)]+_0xffa6c6(0x1d3)+c['cmd']+_0xffa6c6(0x19e)+c[_0xffa6c6(0x1cb)]+_0xffa6c6(0x1b0)+c[_0xffa6c6(0x1ae)]+_0xffa6c6(0x1a3)+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['cmd']+_0xffa6c6(0x1a9)+c[_0xffa6c6(0x1cb)]+'\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[_0xffa6c6(0x19f)]+_0xffa6c6(0x1d0)+c['reset']+_0xffa6c6(0x1a5)+c[_0xffa6c6(0x19f)]+_0xffa6c6(0x1b6)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Key\x20type\x20(default:\x20staff)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+_0xffa6c6(0x1b3)+c['reset']+_0xffa6c6(0x1d5)+c['muted']+'--expires\x202026-12-31'+c[_0xffa6c6(0x1cb)]+_0xffa6c6(0x1a1)+c['cmd']+_0xffa6c6(0x1d6)+c['reset']+_0xffa6c6(0x1c0)+c['muted']+_0xffa6c6(0x1b6)+c[_0xffa6c6(0x1cb)]+_0xffa6c6(0x1c8)+c['muted']+_0xffa6c6(0x191)+c['reset']+_0xffa6c6(0x1cd)+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c['reset']+_0xffa6c6(0x193)+c[_0xffa6c6(0x19f)]+'Polar.sh\x20key\x20management:'+c[_0xffa6c6(0x1cb)]+_0xffa6c6(0x1d3)+c[_0xffa6c6(0x196)]+'https://dashboard.polar.sh'+c[_0xffa6c6(0x1cb)]+'\x0a');}function doctor(){const _0x2e6289=a0_0x4b9295;console[_0x2e6289(0x19b)]('\x0a\x20\x20Run\x20\x27colana\x20doctor\x27\x20for\x20system\x20diagnostics.\x0a');}function staffKeys(){const _0x383cbf=a0_0x4b9295,_0x4f42aa=process['env'][_0x383cbf(0x194)]||'',_0x4ee27c=process[_0x383cbf(0x18a)][_0x383cbf(0x1bc)]||'',_0x34d8da=_0x4f42aa[_0x383cbf(0x1dd)](',')['map'](_0x1f9bb1=>_0x1f9bb1['trim']())['filter'](Boolean),_0x28f9d9=_0x4ee27c[_0x383cbf(0x1dd)](',')['map'](_0x28f46b=>_0x28f46b[_0x383cbf(0x198)]())['filter'](Boolean);if(_0x34d8da['length']===0x0&&_0x28f9d9['length']===0x0){console['log']('\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');return;}console[_0x383cbf(0x19b)](''),_0x34d8da[_0x383cbf(0x1d4)]>0x0&&(console['log']('\x20\x20'+c['heading']+'Staff\x20Keys:'+c[_0x383cbf(0x1cb)]),console[_0x383cbf(0x19b)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c[_0x383cbf(0x1cb)]),_0x34d8da['forEach']((_0x1f4642,_0x5aeb81)=>{const _0x45c46e=_0x383cbf;console['log'](_0x45c46e(0x1b9)+(_0x5aeb81+0x1)+'.\x20'+maskKey(_0x1f4642)+'\x20\x20(STAFF_KEYS)');}),console['log']('')),_0x28f9d9[_0x383cbf(0x1d4)]>0x0&&(console['log']('\x20\x20'+c[_0x383cbf(0x1d1)]+_0x383cbf(0x1c3)+c[_0x383cbf(0x1cb)]),console[_0x383cbf(0x19b)]('\x20\x20'+c[_0x383cbf(0x19f)]+'─'[_0x383cbf(0x1ce)](0xa)+c[_0x383cbf(0x1cb)]),_0x28f9d9['forEach']((_0x207bac,_0x32c3b9)=>{console['log']('\x20\x20\x20\x20'+(_0x32c3b9+0x1)+'.\x20'+maskKey(_0x207bac)+'\x20\x20(ADMIN_KEYS)');}),console[_0x383cbf(0x19b)]('')),console[_0x383cbf(0x19b)](_0x383cbf(0x1b2));}async function main(){const _0x54629b=a0_0x4b9295,{command:_0x2b2bd1,flags:_0x45be4c,positional:_0x151249}=parseArgs(process['argv']);if(!_0x2b2bd1||_0x2b2bd1==='help'||_0x2b2bd1==='--help'){showHelp();return;}switch(_0x2b2bd1){case'doctor':return doctor();case _0x54629b(0x1ab):return staffKeys();case'create-key':return createKey(_0x45be4c);case'list-keys':return listKeysCmd(_0x45be4c);case _0x54629b(0x184):return revokeKeyCmd(_0x151249);default:console['error']('\x20\x20'+icons[_0x54629b(0x17e)]+_0x54629b(0x199)+c[_0x54629b(0x1c6)]+_0x2b2bd1+c[_0x54629b(0x1cb)]),console['error']('\x20\x20'+c[_0x54629b(0x19f)]+_0x54629b(0x182)+c[_0x54629b(0x1cb)]),process[_0x54629b(0x1ca)](0x1);return;}}main()[a0_0x4b9295(0x1be)](_0x2b73c8=>{const _0x1c110a=a0_0x4b9295;console[_0x1c110a(0x1da)]('\x20\x20'+icons['fail']+'\x20'+c['error']+(_0x2b73c8['message']||_0x2b73c8)+c[_0x1c110a(0x1cb)]),process['exit'](0x1);});
|
package/bin/colana.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
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);});
|
|
3
|
+
const a0_0xb8f121=a0_0x4b02;(function(_0x12af63,_0x10d462){const _0x36aafd=a0_0x4b02,_0x5f2d6f=_0x12af63();while(!![]){try{const _0x2a94ad=parseInt(_0x36aafd(0x1aa))/0x1*(parseInt(_0x36aafd(0x1ea))/0x2)+-parseInt(_0x36aafd(0x19e))/0x3*(-parseInt(_0x36aafd(0x1fc))/0x4)+parseInt(_0x36aafd(0x22f))/0x5*(parseInt(_0x36aafd(0x238))/0x6)+parseInt(_0x36aafd(0x215))/0x7*(parseInt(_0x36aafd(0x1d0))/0x8)+parseInt(_0x36aafd(0x203))/0x9+-parseInt(_0x36aafd(0x208))/0xa+-parseInt(_0x36aafd(0x239))/0xb;if(_0x2a94ad===_0x10d462)break;else _0x5f2d6f['push'](_0x5f2d6f['shift']());}catch(_0x50e9c0){_0x5f2d6f['push'](_0x5f2d6f['shift']());}}}(a0_0x593d,0xe93ed));import{execSync,execFileSync,spawn}from'child_process';import a0_0x20215b from'fs';import a0_0x56b7e3 from'path';import a0_0x3cf8b2 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_0x56b7e3[a0_0xb8f121(0x1c1)](fileURLToPath(import.meta.url)),ROOT=a0_0x56b7e3['resolve'](__dirname,'..'),DATA_DIR=a0_0x56b7e3['join'](ROOT,'data'),toImportPath=_0x5111f8=>process[a0_0xb8f121(0x1d2)]===a0_0xb8f121(0x22e)?pathToFileURL(_0x5111f8)[a0_0xb8f121(0x1b3)]:_0x5111f8,CLI_PROVIDERS=[{'name':'Claude\x20Code','binary':a0_0xb8f121(0x209),'installCmd':'npm\x20install\x20-g\x20@anthropic-ai/claude-code','auth':'Requires\x20Anthropic\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':a0_0xb8f121(0x1ed),'binary':a0_0xb8f121(0x220),'installCmd':'npm\x20install\x20-g\x20@openai/codex','auth':a0_0xb8f121(0x1d4),'runtime':'npm'},{'name':'Gemini\x20CLI','binary':'gemini','installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':'Free\x20or\x20paid\x20Google\x20account','runtime':a0_0xb8f121(0x230),'recommended':!![]},{'name':a0_0xb8f121(0x1a2),'binary':'copilot','fallbackBinary':'gh','detectCmd':a0_0xb8f121(0x189),'fallbackDetectCmd':a0_0xb8f121(0x1dd),'installCmd':'gh\x20extension\x20install\x20github/gh-copilot','prereq':'gh','prereqName':a0_0xb8f121(0x1b0),'auth':a0_0xb8f121(0x248),'runtime':a0_0xb8f121(0x230)},{'name':'Aider','binary':a0_0xb8f121(0x212),'installCmd':a0_0xb8f121(0x201),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':'python3','prereqFallback':'python','prereqName':a0_0xb8f121(0x1e4),'auth':a0_0xb8f121(0x225),'runtime':'pipx'},{'name':'OpenClaw','binary':a0_0xb8f121(0x1b5),'installCmd':a0_0xb8f121(0x23d),'auth':'User-configured\x20model\x20keys','runtime':a0_0xb8f121(0x230)}];function detectWindowsWsl(){const _0x5341d9=a0_0xb8f121,_0x5cf776=process['platform']==='win32';if(!_0x5cf776)return{'isNativeWindows':![],'wslAvailable':![]};let _0x520ffa=![];try{const _0xcbbe26=execSync('wsl\x20--list\x20--quiet',{'stdio':['pipe',_0x5341d9(0x200),'pipe'],'timeout':0x1388}),_0x660f37=_0xcbbe26[_0x5341d9(0x19b)]()[_0x5341d9(0x1eb)](/\0/g,'')['trim']();_0x520ffa=_0x660f37[_0x5341d9(0x1a3)]>0x0;}catch{_0x520ffa=![];}return{'isNativeWindows':_0x5cf776,'wslAvailable':_0x520ffa};}function detectProvider(_0x3bc62d){const _0x29cfd0=a0_0xb8f121;if(_0x3bc62d[_0x29cfd0(0x1f7)])try{return execSync(_0x3bc62d[_0x29cfd0(0x1f7)],{'stdio':'ignore'}),!![];}catch{if(_0x3bc62d[_0x29cfd0(0x23a)])try{return execSync(_0x3bc62d[_0x29cfd0(0x23a)],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x3bc62d[_0x29cfd0(0x1f5)]);}function detectPythonVersion(){const _0x3a81fc=a0_0xb8f121;for(const _0x11e64b of['python3',_0x3a81fc(0x1e9)]){try{const _0x1afc0d=execFileSync(_0x11e64b,[_0x3a81fc(0x247)],{'timeout':0x1388,'encoding':'utf-8','stdio':['ignore','pipe','ignore']})[_0x3a81fc(0x219)](),_0x2ba0dc=_0x1afc0d['match'](/Python\s+(\d+)\.(\d+)/);if(_0x2ba0dc)return{'major':parseInt(_0x2ba0dc[0x1]),'minor':parseInt(_0x2ba0dc[0x2])};}catch{}}return null;}function getCliNextSteps(_0x47b9c8,_0x6b255a=''){const _0x44ee3f=a0_0xb8f121,_0x46fea8=_0x6b255a[_0x44ee3f(0x1a0)](),_0x4c1404=process['platform'];if(_0x47b9c8[_0x44ee3f(0x1c8)]===_0x44ee3f(0x230)&&(_0x46fea8[_0x44ee3f(0x193)](_0x44ee3f(0x197))||_0x46fea8['includes'](_0x44ee3f(0x240))||_0x46fea8['includes'](_0x44ee3f(0x24d))||_0x46fea8['includes']('build\x20tools'))){if(_0x4c1404===_0x44ee3f(0x22e))return[_0x44ee3f(0x24c),'Run:\x20'+c[_0x44ee3f(0x216)]+'winget\x20install\x20Microsoft.VisualStudio.2022.BuildTools\x20--override\x20\x22--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--includeRecommended\x20--passive\x20--norestart\x22\x20--accept-source-agreements\x20--accept-package-agreements'+c['reset'],'Wait\x20for\x20the\x20install\x20to\x20complete\x20(2-5\x20minutes)',_0x44ee3f(0x1b8),'Run:\x20'+c['cmd']+_0x47b9c8['installCmd']+c['reset']];if(_0x4c1404===_0x44ee3f(0x1b6))return['Run:\x20'+c['cmd']+_0x44ee3f(0x1b2)+c[_0x44ee3f(0x21e)],_0x44ee3f(0x245),_0x44ee3f(0x20c)+c['cmd']+_0x47b9c8[_0x44ee3f(0x202)]+c['reset']];return['Run:\x20'+c['cmd']+_0x44ee3f(0x205)+c['reset'],'Run:\x20'+c['cmd']+_0x47b9c8['installCmd']+c[_0x44ee3f(0x21e)]];}if(_0x47b9c8['runtime']===_0x44ee3f(0x1df)&&(_0x46fea8['includes'](_0x44ee3f(0x1e9))||_0x46fea8[_0x44ee3f(0x193)]('setuptools'))){if(_0x4c1404===_0x44ee3f(0x22e))return[_0x44ee3f(0x20c)+c[_0x44ee3f(0x216)]+'pip\x20install\x20uv'+c['reset'],'Run:\x20'+c[_0x44ee3f(0x216)]+_0x44ee3f(0x20e)+c['reset'],'Close\x20and\x20reopen\x20your\x20terminal'];return[_0x44ee3f(0x20c)+c['cmd']+_0x44ee3f(0x1f1)+c[_0x44ee3f(0x21e)]+'\x20\x20\x20(or:\x20'+c[_0x44ee3f(0x216)]+_0x44ee3f(0x1e0)+c[_0x44ee3f(0x21e)]+')','Run:\x20'+c['cmd']+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c['reset'],_0x44ee3f(0x1be)];}return[_0x44ee3f(0x20c)+c['cmd']+_0x47b9c8[_0x44ee3f(0x202)]+c['reset'],_0x44ee3f(0x1a7)];}const rl=a0_0x3cf8b2['createInterface']({'input':process[a0_0xb8f121(0x23f)],'output':process['stdout']}),ask=_0xc5b974=>new Promise(_0x4ad800=>rl[a0_0xb8f121(0x1ff)](_0xc5b974,_0x4ad800));function print(_0xea73c4=''){const _0x2d1242=a0_0xb8f121;process['stdout'][_0x2d1242(0x20f)](_0xea73c4+'\x0a');}function a0_0x593d(){const _0x50a4ff=['C3rHCNqGiIiGiG','Dg9ju09tDhjPBMC','zxjYB3i','Ahr0CdOVl2XVy2fSAg9ZDdO','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','icaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mPcGO','D2fYBG','icaGia','BwLUB3i','Aw5JBhvKzxm','q0XjigfNzw50khmPigf2ywLSywjSzs4','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','pYbBws9Uxsa','z3LW','ChjLCMvX','zMLUza','Aw5ZDgfSBa','Dg9tDhjPBMC','CgLWmYbPBNn0ywXSihv2','BwTKAxjtEw5J','mtuWm1PVqxrnAW','zMLSDgvY','Dg9mB3DLCKnHC2u','icaGica','q29WAwXVDcbdteK','BgvUz3rO','CMvWzwf0','icaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMCkica','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','swyGDgHHDcbMywLSCYWGy2HLy2SGDgHLigvYCM9Yig91Dhb1DcbHyM92zsbMB3iGzgv0ywLSCW','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','BwvZC2fNzq','ntG3mJG3rMrzAxzA','ls1VDMvYCMLKzq','DMvYC2LVBG','ihjLCxvPCMvZigf0igXLyxn0ig9UzsbdteKGywDLBNqGDg8GCNvUlG','yNvPBgqGDg9VBhm','zw52','r2L0shvIienmsq','q29TBwfUzhm6','EgnVzguTC2vSzwn0ic0TAw5ZDgfSBa','AhjLzG','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','B3bLBMnSyxC','zgfYD2LU','y21KlMv4zsaVyYbZDgfYDcaIiIaI','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','icbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','ihDPBgWGBM93igf1Dg8TC3rHCNqGB24GBg9NAw4U','igLUC3rHBgXLza','icaGifrYEwLUzYbMywXSyMfJAZOG','yxv0Aa','uMvZDgfYDcb5B3vYihrLCM1PBMfS','Aw5KzxGUANm','ie5VzguUANmG','zgLYBMfTzq','Ahr0Chm6lY9JB2XHBMeUywK','vxnHz2u6','ywrTAw4','AgvHzgLUzW','y2XVC2u','icaGicaGicaGicbsDw4GzgLHz25VC3rPyYbJAgvJA3mkica','CNvUDgLTzq','Aw5OzxjPDa','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','ChvZAa','t3b0Aw9UCZO','ifjLBw92zsbIywnRz3jVDw5KihnLCNzPy2ukica','icaG','y29Syw5HigfKBwLUigXPC3qTA2v5CW','ody5oty4oerjzevzEG','EwvZ','CgXHDgzVCM0','zMfPBa','uMvXDwLYzxmGt3bLBKfjihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','q29Syw5HigzHAwXLzcb0BYbZDgfYDdOG','Dw5PBNn0ywXS','Cgf0Aa','Ahr0CdOVl2XVy2fSAg9ZDdO5odC2','ywrTAw4UANm','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','icaGicaGig5WBsbPBNn0ywXSic1NignVBgfUyq','C3vJy2vZCW','z2GGy29WAwXVDcaTlxzLCNnPB24','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','CgLWEa','yNjLDYbPBNn0ywXSihv2','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','sw5ZDgfSBgvKoG','icaGicaGicaGicaGicbtAg93ihrOAxmGAgvSCcbTzxnZywDLcIaG','uhL0Ag9U','ksbBEs9oxsa','BwfQB3i','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','4OcuihjLCxvPCMvZihyXocS','ChL0Ag9U','nNfnzLzbra','CMvWBgfJzq','pYaO','q29KzxGGq0Xj','twLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhm','icaGicaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mP','icbtDgfYDcbdB2XHBMeGyxv0B21HDgLJywXSEsbVBIbSB2DPBJ8Gw1KVBL0G','CgLWigLUC3rHBgWGDxy','B3bLBIaI','CgfZCW','ls1OzwXW','yMLUyxj5','icboBYbbssbJB2rPBMCGywDLBNrZigzVDw5KlIa','zgv0zwn0q21K','ls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','rg9JDg9Y','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','icbjBNn0ywXSia','oteZmMvqDwnkEq','DMfSDwu','C2vYDMLJzs1Tyw5Hz2vYlMPZ','CxvLC3rPB24','CgLWzq','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','Aw5ZDgfSBenTza','ndi5ntu1nMLsuKLRAW','ifTVChrPB25ZxsbBy29TBwfUzf0kcG','C3vKBYbHChqGDxbKyxrLicyMihn1zg8Gyxb0igLUC3rHBgWGlxKGyNvPBgqTzxnZzw50AwfSihb5DgHVBJm','cIaG','AwDUB3jL','nJG2oda5mfLZrg9Rsq','y2XHDwrL','ic0TDMvYC2LVBG','icaGifLVDsbJyw4GAw5ZDgfSBcbVDgHLCNmGyw55DgLTzsbMCM9TifnLDhrPBMDZlG','uNvUoIa','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','D3jPDgu','C3rHDhvZ','tMv4DcbZDgvWCYb0BYbYzxnVBhzLoG','ywLKzxi','y29Syw5HihnLCNzPy2uGC3rHDhvZ','BMfTzq','n25TywjKwa','y21K','ChL0Ag9UihnLDhvWDg9VBhm','y2f0y2G','DhjPBq','idXJBwq+icaGicaGqwrTAw4Gq0XjicHJCMvHDguTA2v5lcbYzxzVA2uTA2v5lcbSAxn0lwTLExmSigTLEs1PBMzVkqOGia','C2vYDMLJzq','zxHPDa','yxjNDG','CMvZzxq','icaGicaGignVBgfUyq','y29KzxG','C3bSAxq','quKGq0XjiefNzw50CZO','ig5VzguTChr5ia','icboyxrPDMuGv2LUzg93CYbKzxrLy3rLzcb3AxrOifDttdiGyxzHAwXHyMXLlG','teXniefqssbRzxKGCMvXDwLYzwq','ief1Dg8TC3rHCNqGzw5HyMXLzc4G','icbpCgvUihLVDxiGv1nmmIb0zxjTAw5HBcbHBMqGCNvUoIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','Chr5t2S','lMzPCNn0lxj1BI1KB25L','icaGicaGihDZBcaTzcbvyNvUDhu','ChjLCMvXtMfTzq','DxjS','rxHHBxbSzxm6','D2LUmZi','ntiZntb0CKvpDgq','BNbT','icaGifbSzwfZzsbPBNn0ywXSia','DxrMltG','D2LUz2v0','ChjLCMvXrMfSBgjHy2S','Bxv0zwq','BM9Kzs1WDhK','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','mtG2tuvIDe9r','mZq2oda1ndDmAhvMv3e','zMfSBgjHy2TezxrLy3rdBwq','y29Syw5HigfKBwLU','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','C3rKAw4','BxnIDwLSza','lI4U','sw5ZDgfSBcbVBMuGyw55DgLTzsbMCM9TifnLDhrPBMDZid4GquKGq0XjiefNzw50CY4','AM9PBG','zM9YrwfJAa','q29TCgXLDguGDgHLihn5C3rLBsbKAwfSB2CGDgHHDcbHChbLyxjZ','icaGifvZAw5Nia','ls12zxjZAw9U','r2L0shvIienVCgLSB3qGC3vIC2nYAxb0Aw9U','icbdAgvJA2LUzYb5B3vYigvUDMLYB25Tzw50lI4U','ifLVDsDYzsbNB29KihrVigDVisa','y29Syw5H','t3bLBIbqB3DLCLnOzwXSigfZiefKBwLUAxn0CMf0B3iGkhjPz2H0lwnSAwnRid4GiLj1BIbHCYbHzg1PBMLZDhjHDg9YiIK','BMf0AxzL','y29WAwXVDcaTlxzLCNnPB24'];a0_0x593d=function(){return _0x50a4ff;};return a0_0x593d();}function runInstall(_0x351562){return new Promise(_0x4e01aa=>{const _0x45d2f9=a0_0x4b02,_0x14e7aa=_0x351562['split']('\x20'),_0x5e5853=spawn(_0x14e7aa[0x0],_0x14e7aa['slice'](0x1),{'stdio':'inherit','env':{...process['env']},...process[_0x45d2f9(0x1d2)]===_0x45d2f9(0x22e)&&{'shell':!![]}});_0x5e5853['on'](_0x45d2f9(0x1c6),_0x42b77e=>_0x4e01aa(_0x42b77e===0x0)),_0x5e5853['on'](_0x45d2f9(0x18c),()=>_0x4e01aa(![]));});}function runInstallArgs(_0xd985f0,_0x35c1cc){return new Promise(_0xf874f6=>{const _0x4d5a38=a0_0x4b02,_0x3f33a8=spawn(_0xd985f0,_0x35c1cc,{'stdio':_0x4d5a38(0x1c9),'env':{...process['env']}});_0x3f33a8['on'](_0x4d5a38(0x1c6),_0x3e56c0=>_0xf874f6(_0x3e56c0===0x0)),_0x3f33a8['on'](_0x4d5a38(0x18c),()=>_0xf874f6(![]));});}function a0_0x4b02(_0x22c916,_0x12cd23){_0x22c916=_0x22c916-0x189;const _0x593d42=a0_0x593d();let _0x4b02a1=_0x593d42[_0x22c916];if(a0_0x4b02['IZZfPF']===undefined){var _0x1a5c78=function(_0x430e35){const _0x2aac65='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x20215b='',_0x56b7e3='';for(let _0x3cf8b2=0x0,_0x5111f8,_0x5cf776,_0x520ffa=0x0;_0x5cf776=_0x430e35['charAt'](_0x520ffa++);~_0x5cf776&&(_0x5111f8=_0x3cf8b2%0x4?_0x5111f8*0x40+_0x5cf776:_0x5cf776,_0x3cf8b2++%0x4)?_0x20215b+=String['fromCharCode'](0xff&_0x5111f8>>(-0x2*_0x3cf8b2&0x6)):0x0){_0x5cf776=_0x2aac65['indexOf'](_0x5cf776);}for(let _0xcbbe26=0x0,_0x660f37=_0x20215b['length'];_0xcbbe26<_0x660f37;_0xcbbe26++){_0x56b7e3+='%'+('00'+_0x20215b['charCodeAt'](_0xcbbe26)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x56b7e3);};a0_0x4b02['BaNIcN']=_0x1a5c78,a0_0x4b02['gZocky']={},a0_0x4b02['IZZfPF']=!![];}const _0x52530c=_0x593d42[0x0],_0x3c0b6b=_0x22c916+_0x52530c,_0x2b57fd=a0_0x4b02['gZocky'][_0x3c0b6b];return!_0x2b57fd?(_0x4b02a1=a0_0x4b02['BaNIcN'](_0x4b02a1),a0_0x4b02['gZocky'][_0x3c0b6b]=_0x4b02a1):_0x4b02a1=_0x2b57fd,_0x4b02a1;}async function tryInstallBuildTools(){const _0x45892a=a0_0xb8f121,_0x202be2=process['platform'];if(_0x202be2==='win32'){if(commandExistsSync(_0x45892a(0x233))){print('\x20\x20\x20\x20'+c['muted']+'Installing\x20Visual\x20Studio\x20Build\x20Tools\x20via\x20winget...'+c['reset']);const _0xb7eddf=await runInstallArgs(_0x45892a(0x233),['install',_0x45892a(0x1ee),_0x45892a(0x1ab),'--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart','--accept-source-agreements',_0x45892a(0x1f8)]);return _0xb7eddf;}return![];}if(_0x202be2==='darwin'){print('\x20\x20\x20\x20'+c['muted']+_0x45892a(0x195)+c[_0x45892a(0x21e)]);const _0x46aee1=await runInstallArgs('xcode-select',['--install']);return _0x46aee1;}return![];}async function runDoctorChecks(_0x409b31=![]){const _0x26a716=a0_0xb8f121;print(''),print('\x20\x20'+brandName()+'\x20'+c[_0x26a716(0x235)]+_0x26a716(0x1f9)+c[_0x26a716(0x21e)]),print('\x20\x20'+c['muted']+'─'[_0x26a716(0x1a4)](0x14)+c['reset']),print('');const _0x511f09=process[_0x26a716(0x1ac)],_0x4b763b=parseInt(_0x511f09['slice'](0x1)),_0x1749f4=_0x4b763b>=0x12;_0x1749f4?print('\x20\x20'+icons[_0x26a716(0x1f3)]+_0x26a716(0x1c0)+c[_0x26a716(0x1fd)]+_0x511f09+c[_0x26a716(0x21e)]):print('\x20\x20'+icons[_0x26a716(0x1d3)]+'\x20Node.js\x20'+c['value']+_0x511f09+c[_0x26a716(0x21e)]+'\x20'+c['error']+_0x26a716(0x1e8)+c['reset']);let _0x2291f8=![];try{await import(_0x26a716(0x236)),_0x2291f8=!![],print('\x20\x20'+icons[_0x26a716(0x1f3)]+_0x26a716(0x223)+c['muted']+'loaded'+c['reset']);}catch{print('\x20\x20'+icons['fail']+_0x26a716(0x223)+c[_0x26a716(0x18c)]+'—\x20failed\x20to\x20load'+c[_0x26a716(0x21e)]);}print(''),print('\x20\x20'+c[_0x26a716(0x1c5)]+_0x26a716(0x222)+c[_0x26a716(0x21e)]);const _0x1950bf=[];for(const _0x463936 of CLI_PROVIDERS){const _0x5149fa=detectProvider(_0x463936),_0x19d354={'name':_0x463936['name'],'installed':_0x5149fa};if(_0x409b31&&_0x5149fa){let _0x3672bb=_0x463936[_0x26a716(0x1f5)];if(_0x463936[_0x26a716(0x1f7)])try{execSync(_0x463936[_0x26a716(0x1f7)],{'stdio':_0x26a716(0x207)}),_0x3672bb=_0x463936[_0x26a716(0x1f7)][_0x26a716(0x221)]('\x20')[0x0];}catch{_0x463936['fallbackDetectCmd']&&(_0x3672bb=_0x463936['fallbackDetectCmd']['split']('\x20')[0x0]);}try{const _0xb2bfcf=execSync(_0x3672bb+_0x26a716(0x20a),{'stdio':['pipe','pipe',_0x26a716(0x200)],'timeout':0x1388});_0x19d354['version']=_0xb2bfcf[_0x26a716(0x19b)]()['trim']()['split']('\x0a')[0x0];}catch{_0x19d354[_0x26a716(0x1ac)]=null;}_0x19d354['path']=getCommandPath(_0x3672bb);}if(_0x5149fa){const _0x36ea45=_0x409b31&&_0x19d354['version']?'\x20'+c['muted']+'('+c['value']+_0x19d354['version']+c[_0x26a716(0x235)]+')'+c[_0x26a716(0x21e)]:'',_0xbc7302=_0x409b31&&_0x19d354[_0x26a716(0x1d7)]?'\x20'+c[_0x26a716(0x235)]+'—\x20'+_0x19d354[_0x26a716(0x1d7)]+c['reset']:'';print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x463936['name']+_0x36ea45+_0xbc7302);}else print(_0x26a716(0x191)+icons[_0x26a716(0x1d3)]+'\x20'+c[_0x26a716(0x235)]+_0x463936[_0x26a716(0x214)]+c['reset']);_0x1950bf[_0x26a716(0x1cb)](_0x19d354);}print('');const _0x4b9ad7=_0x1950bf[_0x26a716(0x19f)](_0x1dbc95=>_0x1dbc95['installed'])['length'];return _0x4b9ad7>0x0?print('\x20\x20'+c['value']+_0x4b9ad7+'/'+_0x1950bf[_0x26a716(0x1a3)]+c['reset']+'\x20'+c[_0x26a716(0x235)]+_0x26a716(0x194)+c['reset']):print('\x20\x20'+icons[_0x26a716(0x190)]+_0x26a716(0x1e1)+brandName()+'.'),print(''),{'nodeOk':_0x1749f4,'ptyOk':_0x2291f8,'providers':_0x1950bf};}async function firstRunWizard(){const _0xcb3b50=a0_0xb8f121;printBanner(print);const {isNativeWindows:_0x144e71,wslAvailable:_0x459d57}=detectWindowsWsl();if(_0x144e71&&_0x459d57){print('\x20\x20'+icons['warn']+'\x20\x20You\x27re\x20running\x20on\x20native\x20Windows,\x20but\x20WSL2\x20is\x20available.'),print(_0xcb3b50(0x1a1)+c['muted']+_0xcb3b50(0x1a8)+c['reset']),print('\x20\x20\x20\x20\x20To\x20install\x20Colana\x20there\x20instead:'),print(''),print(_0xcb3b50(0x22a)),print(_0xcb3b50(0x1db)),print(_0xcb3b50(0x21f)),print('');const _0x380d63=await ask(_0xcb3b50(0x23c));_0x380d63['toLowerCase']()!=='y'&&(print(''),print(_0xcb3b50(0x227)),print(''),rl['close'](),process['exit'](0x0)),print('');}print(_0xcb3b50(0x249));const _0x4e2b1a=await runDoctorChecks(![]);!_0x4e2b1a['nodeOk']&&(print('\x20\x20\x20\x20\x20Please\x20upgrade\x20Node.js\x20and\x20try\x20again.'),process['exit'](0x1));!_0x4e2b1a[_0xcb3b50(0x228)]&&(print('\x20\x20\x20\x20\x20Try:\x20npm\x20rebuild\x20node-pty'),process[_0xcb3b50(0x21c)](0x1));const _0x2cb7c9=[],_0x55a52f=[];for(let _0x2d0a60=0x0;_0x2d0a60<CLI_PROVIDERS['length'];_0x2d0a60++){_0x4e2b1a['providers'][_0x2d0a60]['installed']?_0x2cb7c9['push'](CLI_PROVIDERS[_0x2d0a60]):_0x55a52f[_0xcb3b50(0x1cb)](CLI_PROVIDERS[_0x2d0a60]);}print('');if(_0x55a52f[_0xcb3b50(0x1a3)]>0x0&&_0x2cb7c9['length']>0x0){print(_0xcb3b50(0x23e)),print('');for(const _0x34df37 of _0x55a52f){const _0x3d7171=await ask(_0xcb3b50(0x1fb)+_0x34df37[_0xcb3b50(0x214)]+_0xcb3b50(0x1ec)+_0x34df37[_0xcb3b50(0x1bd)]+_0xcb3b50(0x1e5));_0x3d7171[_0xcb3b50(0x1a0)]()==='y'&&(await installProvider(_0x34df37),detectProvider(_0x34df37)&&_0x2cb7c9['push'](_0x34df37));}}else{if(_0x2cb7c9[_0xcb3b50(0x1a3)]===0x0){print('\x20\x20'+icons['warn']+_0xcb3b50(0x1f6)+brandName()+_0xcb3b50(0x1ad)),print('');const _0x15f595=CLI_PROVIDERS[_0xcb3b50(0x199)](_0x32ae83=>_0x32ae83['recommended']);if(_0x15f595){print('\x20\x20Recommended:\x20'+_0x15f595['name']+'\x20—\x20works\x20with\x20any\x20Google\x20account\x20(free\x20or\x20paid)');const _0x30b151=await ask(_0xcb3b50(0x1fb)+_0x15f595[_0xcb3b50(0x214)]+_0xcb3b50(0x196));if(_0x30b151[_0xcb3b50(0x1a0)]()!=='n'){await installProvider(_0x15f595);if(detectProvider(_0x15f595))_0x2cb7c9[_0xcb3b50(0x1cb)](_0x15f595);}}if(_0x2cb7c9[_0xcb3b50(0x1a3)]===0x0){print(''),print(_0xcb3b50(0x1de)),CLI_PROVIDERS[_0xcb3b50(0x244)]((_0x207acb,_0x5f17e7)=>{print('\x20\x20\x20\x20['+(_0x5f17e7+0x1)+']\x20'+_0x207acb['name']+'\x20('+_0x207acb['auth']+')');}),print('\x20\x20\x20\x20[0]\x20Skip\x20(you\x27ll\x20need\x20to\x20install\x20one\x20manually)'),print('');const _0x48fee0=await ask('\x20\x20>\x20'),_0x152c14=parseInt(_0x48fee0)-0x1;if(_0x152c14>=0x0&&_0x152c14<CLI_PROVIDERS[_0xcb3b50(0x1a3)]){await installProvider(CLI_PROVIDERS[_0x152c14]);if(detectProvider(CLI_PROVIDERS[_0x152c14]))_0x2cb7c9['push'](CLI_PROVIDERS[_0x152c14]);}}_0x2cb7c9[_0xcb3b50(0x1a3)]===0x0&&(print(''),print('\x20\x20'+icons['warn']+'\x20\x20No\x20CLI\x20agents\x20installed.\x20'+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print(_0xcb3b50(0x1a1)+c[_0xcb3b50(0x235)]+_0xcb3b50(0x242)+c[_0xcb3b50(0x21e)]),print(''));}}_0x2cb7c9[_0xcb3b50(0x1a3)]>0x0&&(print(''),print('\x20\x20'+icons[_0xcb3b50(0x1f3)]+_0xcb3b50(0x24a)+c[_0xcb3b50(0x1fd)]+_0x2cb7c9['length']+c[_0xcb3b50(0x21e)]+'\x20CLI(s)\x20detected.'),print(_0xcb3b50(0x20b)));print('');const _0x3395e5=await ask(_0xcb3b50(0x1f0));if(_0x3395e5[_0xcb3b50(0x1a0)]()!=='n')try{const {installService:_0x47c69c}=await import(toImportPath(a0_0x56b7e3['join'](ROOT,'server',_0xcb3b50(0x1fe)))),_0x224837=_0x47c69c();_0x224837['success']?print('\x20\x20'+icons['pass']+_0xcb3b50(0x226)+_0x224837[_0xcb3b50(0x1a9)]):(print('\x20\x20'+icons['warn']+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0x224837['message']),print(_0xcb3b50(0x1e7)));}catch(_0x1b842e){print('\x20\x20'+icons['warn']+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0x1b842e[_0xcb3b50(0x1a9)]),print(_0xcb3b50(0x1e7));}print(''),print('\x20\x20Free\x20tier:\x202\x20concurrent\x20sessions,\x20all\x20features\x20included.'),print('\x20\x20Upgrade\x20anytime\x20from\x20Settings\x20for\x20unlimited\x20sessions.'),print(''),rl[_0xcb3b50(0x1c6)]();}async function installProvider(_0x355ec7){const _0x3898af=a0_0xb8f121;if(_0x355ec7['prereq']&&!commandExistsSync(_0x355ec7[_0x3898af(0x198)])){if(_0x355ec7['prereqFallback']&&commandExistsSync(_0x355ec7[_0x3898af(0x234)]))print(_0x3898af(0x246)+_0x355ec7['prereqFallback']+'\x20(fallback\x20for\x20'+_0x355ec7[_0x3898af(0x198)]+')');else{print('\x20\x20\x20\x20'+(_0x355ec7[_0x3898af(0x22b)]||_0x355ec7['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print(_0x3898af(0x231)+(_0x355ec7[_0x3898af(0x22b)]||_0x355ec7[_0x3898af(0x198)])+'\x20first.');return;}}let _0x54b509=_0x355ec7[_0x3898af(0x202)],_0x329d0a=_0x355ec7['fallbackCmd'],_0x445dfb='';if(_0x355ec7['binary']==='aider'){const _0x37152a=detectPythonVersion();if(_0x37152a&&_0x37152a[_0x3898af(0x1e6)]>=0x3&&_0x37152a['minor']>=0xd){print(_0x3898af(0x191)+c['muted']+'Python\x20'+_0x37152a[_0x3898af(0x1e6)]+'.'+_0x37152a[_0x3898af(0x192)]+'\x20detected\x20—\x20aider\x20requires\x20Python\x203.10-3.12'+c['reset']),print(_0x3898af(0x191)+c[_0x3898af(0x235)]+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c[_0x3898af(0x21e)]),_0x445dfb='python\x203.13';let _0x4a9d46=commandExistsSync('uv');if(!_0x4a9d46){print(_0x3898af(0x191)+c['muted']+_0x3898af(0x237)+c['reset']),_0x4a9d46=await runInstall('pip\x20install\x20uv');if(!_0x4a9d46)_0x4a9d46=await runInstall(_0x3898af(0x19c));}if(_0x4a9d46)_0x54b509=_0x3898af(0x20e),_0x329d0a=null;else{print(_0x3898af(0x191)+icons[_0x3898af(0x1d3)]+'\x20'+c[_0x3898af(0x18c)]+'Could\x20not\x20install\x20uv.'+c[_0x3898af(0x21e)]),printNextSteps(_0x355ec7,_0x3898af(0x217));return;}}}print('\x20\x20\x20\x20Installing\x20'+_0x355ec7['name']+'...');let _0x280638=await runInstall(_0x54b509);!_0x280638&&_0x329d0a&&(print(_0x3898af(0x1bc)+_0x329d0a+_0x3898af(0x241)),_0x280638=await runInstall(_0x329d0a));if(_0x280638)print(_0x3898af(0x191)+icons['pass']+'\x20'+_0x355ec7['name']+'\x20installed');else{if(_0x355ec7[_0x3898af(0x1c8)]===_0x3898af(0x230)){print(_0x3898af(0x191)+c[_0x3898af(0x235)]+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c['reset']);const _0x2faebe=await tryInstallBuildTools();_0x2faebe&&(print(_0x3898af(0x191)+c[_0x3898af(0x235)]+'Retrying\x20'+_0x355ec7['name']+'\x20install...'+c[_0x3898af(0x21e)]),_0x280638=await runInstall(_0x54b509));if(_0x280638){print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x355ec7['name']+_0x3898af(0x1bb));return;}_0x445dfb=_0x445dfb||_0x3898af(0x1ae);}print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c['error']+_0x3898af(0x1fa)+c['reset']),printNextSteps(_0x355ec7,_0x445dfb);}}function printNextSteps(_0x36d599,_0x4ce07e=''){const _0xf4d13a=a0_0xb8f121,_0x546973=getCliNextSteps(_0x36d599,_0x4ce07e);print(''),print(_0xf4d13a(0x191)+c[_0xf4d13a(0x1c5)]+_0xf4d13a(0x211)+c['reset']),_0x546973['forEach']((_0x56e200,_0xbe0041)=>{const _0x372300=_0xf4d13a;print(_0x372300(0x191)+c[_0x372300(0x235)]+(_0xbe0041+0x1)+'.'+c[_0x372300(0x21e)]+'\x20'+_0x56e200);}),print('');}async function startServer(){const _0x5bdbf8=a0_0xb8f121,_0xd68fb=a0_0x56b7e3[_0x5bdbf8(0x243)](ROOT,'server',_0x5bdbf8(0x1bf));try{const _0x57efe7=await import(toImportPath(_0xd68fb));return _0x57efe7;}catch(_0x23defc){console['error']('Failed\x20to\x20start\x20server:\x20'+_0x23defc[_0x5bdbf8(0x1a9)]),process[_0x5bdbf8(0x21c)](0x1);}}function openBrowser(_0x22f554){const _0xdc0f07=a0_0xb8f121,_0x288d39=process['platform'];try{if(_0x288d39===_0xdc0f07(0x1b6))execSync(_0xdc0f07(0x1f2)+_0x22f554+'\x22',{'stdio':_0xdc0f07(0x207)});else{if(_0x288d39==='win32')execSync(_0xdc0f07(0x18a)+_0x22f554+'\x22',{'stdio':'ignore'});else try{execSync('xdg-open\x20\x22'+_0x22f554+'\x22',{'stdio':'ignore'});}catch{try{execSync(_0xdc0f07(0x1b7)+_0x22f554+'\x22',{'stdio':_0xdc0f07(0x207)});}catch{}}}}catch{}}async function main(){const _0x191856=a0_0xb8f121;if((process['argv'][_0x191856(0x193)](_0x191856(0x247))||process['argv'][_0x191856(0x193)]('-v'))&&!process['argv']['includes']('--help')&&!process['argv']['includes']('-h')&&process[_0x191856(0x21d)][0x2]!=='doctor'){try{const _0x54e8d8=JSON['parse'](a0_0x20215b['readFileSync'](a0_0x56b7e3['join'](ROOT,'package.json'),_0x191856(0x232)));print(brandName()+'\x20'+c['muted']+'v'+_0x54e8d8[_0x191856(0x1ac)]+c['reset']);}catch{print(brandName()+'\x20'+c['muted']+'v0.0.0'+c[_0x191856(0x21e)]);}process[_0x191856(0x21c)](0x0);}if(process[_0x191856(0x21d)][_0x191856(0x193)](_0x191856(0x1f4))||process[_0x191856(0x21d)]['includes']('-h')){const _0x491a38=JSON['parse'](a0_0x20215b['readFileSync'](a0_0x56b7e3[_0x191856(0x243)](ROOT,'package.json'),'utf-8'));print('\x0a'+c['heading']+'Usage:'+c['reset']+'\x20'+c['cmd']+_0x191856(0x24b)+c[_0x191856(0x21e)]+_0x191856(0x204)+c[_0x191856(0x1c5)]+'Commands:'+c['reset']+'\x0a\x20\x20'+c['cmd']+'colana'+c[_0x191856(0x21e)]+'\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[_0x191856(0x216)]+'colana\x20doctor'+c['reset']+_0x191856(0x1c7)+c['cmd']+_0x191856(0x23b)+c['reset']+_0x191856(0x21a)+c['cmd']+_0x191856(0x20d)+c[_0x191856(0x21e)]+_0x191856(0x1b9)+c[_0x191856(0x216)]+_0x191856(0x1ca)+c[_0x191856(0x21e)]+_0x191856(0x1cd)+c['cmd']+_0x191856(0x213)+c[_0x191856(0x21e)]+_0x191856(0x1a5)+c['cmd']+'colana\x20service\x20logs'+c['reset']+_0x191856(0x18f)+c[_0x191856(0x1c5)]+_0x191856(0x1cc)+c['reset']+_0x191856(0x206)+c[_0x191856(0x216)]+'--version'+c[_0x191856(0x21e)]+',\x20'+c[_0x191856(0x216)]+'-v'+c[_0x191856(0x21e)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c[_0x191856(0x216)]+_0x191856(0x1f4)+c[_0x191856(0x21e)]+',\x20'+c['cmd']+'-h'+c[_0x191856(0x21e)]+_0x191856(0x1e3)+c[_0x191856(0x216)]+'--port'+c[_0x191856(0x21e)]+'\x20<number>\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20specific\x20port\x20'+c[_0x191856(0x235)]+'(default:\x20auto-detect\x20from\x209876)'+c[_0x191856(0x21e)]+'\x0a\x0a'+c['heading']+_0x191856(0x22d)+c['reset']+_0x191856(0x206)+c['muted']+'$'+c[_0x191856(0x21e)]+'\x20'+c[_0x191856(0x216)]+_0x191856(0x24b)+c[_0x191856(0x21e)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20the\x20dashboard\x0a\x20\x20'+c['muted']+'$'+c[_0x191856(0x21e)]+'\x20'+c[_0x191856(0x216)]+'colana\x20doctor'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Check\x20CLI\x20agents\x20and\x20system\x20health\x0a\x20\x20'+c['muted']+'$'+c['reset']+'\x20'+c[_0x191856(0x216)]+'colana\x20doctor\x20--verbose'+c[_0x191856(0x21e)]+'\x20Show\x20detailed\x20diagnostic\x20info\x0a\x20\x20'+c['muted']+'$'+c[_0x191856(0x21e)]+'\x20'+c[_0x191856(0x216)]+_0x191856(0x20d)+c[_0x191856(0x21e)]+'\x20\x20Install\x20'+brandName()+_0x191856(0x18e)+c[_0x191856(0x235)]+'$'+c[_0x191856(0x21e)]+'\x20'+c[_0x191856(0x216)]+_0x191856(0x1cf)+c[_0x191856(0x21e)]+'\x20\x20List\x20all\x20license\x20keys\x0a\x0a'+c[_0x191856(0x235)]+'v'+_0x491a38['version']+c[_0x191856(0x21e)]+'\x20'+c['muted']+'—'+c[_0x191856(0x21e)]+'\x20'+c[_0x191856(0x22c)]+_0x191856(0x1c2)+c['reset']+'\x0a'),process[_0x191856(0x21c)](0x0);}if(process[_0x191856(0x21d)][0x2]==='doctor'){const _0x26f29c=process['argv'][_0x191856(0x193)]('--verbose')||process['argv']['includes']('-v'),{isNativeWindows:_0x332653,wslAvailable:_0x125134}=detectWindowsWsl();_0x332653&&_0x125134&&(print(''),print('\x20\x20'+icons['warn']+_0x191856(0x224)),print(_0x191856(0x1a1)+c[_0x191856(0x235)]+_0x191856(0x1a6)+brandName()+'\x20there\x20instead.'+c[_0x191856(0x21e)]),print('')),await runDoctorChecks(_0x26f29c),process['exit'](0x0);}if(process[_0x191856(0x21d)][0x2]===_0x191856(0x1c4)){const _0x25a3ac=a0_0x56b7e3['join'](__dirname,_0x191856(0x1d9));process['argv']['splice'](0x2,0x1),await import(toImportPath(_0x25a3ac));return;}if(process[_0x191856(0x21d)][0x2]===_0x191856(0x21b)){const {installService:_0x160744,uninstallService:_0x2bd3fe,getServiceStatus:_0x2055e4,getServiceLogs:_0x26e9ef}=await import(toImportPath(a0_0x56b7e3[_0x191856(0x243)](ROOT,'server',_0x191856(0x1fe)))),_0x45f0b0=process[_0x191856(0x21d)][0x3];switch(_0x45f0b0){case _0x191856(0x19a):{print(''),print('\x20\x20Installing\x20'+brandName()+'\x20as\x20a\x20background\x20service...'),print('');const _0x17c937=_0x160744();print(_0x17c937['success']?'\x20\x20'+icons[_0x191856(0x1f3)]+'\x20'+_0x17c937[_0x191856(0x1a9)]:'\x20\x20'+icons[_0x191856(0x1d3)]+'\x20'+_0x17c937['message']),print('');_0x17c937['success']&&(print('\x20\x20'+brandName()+_0x191856(0x1ba)),print('\x20\x20'+c[_0x191856(0x235)]+'Open\x20your\x20browser\x20to'+c['reset']+'\x20'+c['url']+_0x191856(0x1d8)+c[_0x191856(0x21e)]));print('');break;}case _0x191856(0x1d6):{print(''),print('\x20\x20Removing\x20'+brandName()+'\x20background\x20service...');const _0xe8492d=_0x2bd3fe();print(_0xe8492d[_0x191856(0x1dc)]?'\x20\x20'+icons[_0x191856(0x1f3)]+'\x20'+_0xe8492d[_0x191856(0x1a9)]:'\x20\x20'+icons['fail']+'\x20'+_0xe8492d['message']),print('');break;}case'status':{print('');const _0x133d5c=_0x2055e4();print('\x20\x20'+c[_0x191856(0x235)]+'Platform:'+c[_0x191856(0x21e)]+'\x20\x20'+c[_0x191856(0x1fd)]+_0x133d5c[_0x191856(0x1d2)]+c['reset']),print('\x20\x20'+c[_0x191856(0x235)]+_0x191856(0x1e2)+c['reset']+'\x20'+(_0x133d5c['installed']?c['success']+_0x191856(0x1d1)+c['reset']:c['muted']+'no'+c[_0x191856(0x21e)])),print('\x20\x20'+c['muted']+'Running:'+c['reset']+_0x191856(0x1ce)+(_0x133d5c['running']?c[_0x191856(0x1dc)]+_0x191856(0x1d1)+c['reset']:c['muted']+'no'+c[_0x191856(0x21e)])),print('');break;}case'logs':{const _0xafdea3=_0x26e9ef();print(_0xafdea3);break;}default:print(''),print('\x20\x20'+c[_0x191856(0x1c5)]+_0x191856(0x1c3)+c['reset']+'\x20'+c['cmd']+'colana\x20service'+c[_0x191856(0x21e)]+_0x191856(0x1da)),print(''),print('\x20\x20'+c['heading']+_0x191856(0x1b1)+c['reset']),print(_0x191856(0x191)+c[_0x191856(0x216)]+'install'+c[_0x191856(0x21e)]+_0x191856(0x1b4)),print('\x20\x20\x20\x20'+c[_0x191856(0x216)]+_0x191856(0x1d6)+c[_0x191856(0x21e)]+'\x20\x20\x20Remove\x20background\x20service'),print(_0x191856(0x191)+c[_0x191856(0x216)]+_0x191856(0x210)+c[_0x191856(0x21e)]+'\x20\x20\x20\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running'),print('\x20\x20\x20\x20'+c[_0x191856(0x216)]+'logs'+c[_0x191856(0x21e)]+_0x191856(0x1ef)),print('');}process[_0x191856(0x21c)](0x0);}!a0_0x20215b['existsSync'](DATA_DIR)&&a0_0x20215b[_0x191856(0x19d)](DATA_DIR,{'recursive':!![]});const _0x54ca47=a0_0x56b7e3[_0x191856(0x243)](DATA_DIR,_0x191856(0x229)),_0x29fd47=!a0_0x20215b['existsSync'](_0x54ca47);_0x29fd47&&(await firstRunWizard(),a0_0x20215b['writeFileSync'](_0x54ca47,new Date()[_0x191856(0x18b)]())),print('\x20\x20'+icons['arrow']+'\x20Starting\x20'+brandName()+_0x191856(0x241)),await startServer(),setTimeout(()=>{const _0x59c3a4=_0x191856,_0x16a70e=process[_0x59c3a4(0x1af)]['COLANA_PORT']||0x2694,_0x3260a8=_0x59c3a4(0x18d)+_0x16a70e;openBrowser(_0x3260a8);},0xbb8);}main()[a0_0xb8f121(0x218)](_0x1efb57=>{const _0x5b3dfe=a0_0xb8f121;console['error'](_0x5b3dfe(0x1d5)+_0x1efb57[_0x5b3dfe(0x1a9)]),process[_0x5b3dfe(0x21c)](0x1);});
|