colana 1.0.0-beta.97 → 1.0.0-beta.98
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
|
+
function a0_0x5085(){const _0x2beae1=['icaOu1rbrKzFs0vzuYK','yMv0yq','y29Syw5HigfKBwLUignYzwf0zs1RzxK','y2f0y2G','otGWB1HiAfH0','ywrTAw4','C3rHDhvZ','ls1OzwXW','ieTLEsa','mtaXmZC2BwjOsMTu','ntKZBhrprKrZ','y29Syw5HigfKBwLUigXPC3qTA2v5CW','mty4nta0A3jPwgnr','zxHWAxjLCW','kIOQkG','ls1ZDgf0DxmGywn0AxzLFhjLDM9Rzwq','revmrvrf','igTLEsHZkq','ntiXm3zuquH0rG','zMfPBa','Bxv0zwq','zM9YrwfJAa','suq6','icaGicaGicaGicaGicaGicbsDw4GC3LZDgvTigrPywDUB3n0AwnZcIaGica','nJzjB3vdrue','CMf3','zxHWAxj5','ls10ExbLihn0ywzMFgfKBwLUFgjLDge','tMfTztO','mtmZodvzvM9ys1q','mJqZswnSq1DV','tgLJzw5ZzsblzxLZoG','Bg9N','Ahr0CdOVlZeYnY4WlJaUmtO','icaGia','A2v5CW','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','vg90ywW6ia','cIaGuNvUicDJB2XHBMeGzg9JDg9YjYbMB3iGC3LZDgvTigrPywDUB3n0AwnZlGO','icaOqurnsu5Fs0vzuYK','Ahr0Chm6lY9KyxnOyM9HCMqUCg9SyxiUC2G','CMvZzxq','u3rHzMyGs2v5CZO','DxjS','mtjnzg54C2y','sfruuca','icaGicaG','ue9tva','cGOGia','ANnVBG','icaGicaGicaGicaGieDLBMvYyxrLigeGBMv3igXPy2vUC2uGA2v5icHZDg9YzwqGAw4GreiPcIaGicaGia','BgLZDc1RzxLZ','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','s2v5oG','mtC4suL4DKHu','zxHPDa','icaGicaGicaGicaGicaGicaGicaGuMvJAxbPzw50ig5HBwuGkhjLCxvPCMvKkqOGicaGica','icaGica','C3rYAw5NAwz5','CMvWzwf0','ls1Uyw1Licjoyw1LiG','D2fYBG','Dg9mB2nHBgveyxrLu3rYAw5N','icaGicaGicaGicaGieXPC3qGy29UzMLNDxjLzcbZDgfMzI9Hzg1PBIbRzxLZicHLBNyGDMfYCYKkicaGia','DgLTzw91Da','DMfSDwu','zgLYBMfTzq','BwvZC2fNzq','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','y21K','zg9JDg9Y','C3bSAxq','y3jLyxrLzf9HDa','BwfW','Dhj1zq','cIaG','zw1HAwW','CgfKrw5K','icaGicaGicaGicaGicbfEhbPCNKGzgf0zsaOB3b0Aw9UywWPcIaGica','ndi3nta4mM95tMjPvG','tMfTzq','y29Syw5HigfKBwLUigrVy3rVCG','mZCYodr6yxDZDfq','otaXmtaXALLwCezg','qurnsu5Fs0vzuW','y29Syw5HigfKBwLUihjLDM9Rzs1RzxKGpgLKpG','vhLWzq','C3rHzMy','zxjYB3i','BgvUz3rO','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','CgfZCW','C3rHCNrZv2L0Aa','AgvHzgLUzW','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','kenYzwf0zwqGDMLHigrPCMvJDcbeqIdIGjqGCMvZDgfYDcbZzxj2zxiGDg8GCgLJAYb1CcK','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','C2XPy2u','su1qt1juqu5uoIbdB3b5ihrOAxmGA2v5ig5VDY4GsxqGy2fUBM90igjLihjLDhjPzxzLzcbSyxrLCI4','C2v0','Aw5KzxHpzG','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','rvjst1i6ic0TBMfTzsbPCYbYzxf1AxjLzc4','DhLWzq'];a0_0x5085=function(){return _0x2beae1;};return a0_0x5085();}const a0_0x546ec2=a0_0x1068;(function(_0x56e6db,_0x2244f7){const _0x2c3320=a0_0x1068,_0x2c426d=_0x56e6db();while(!![]){try{const _0x2e3ab8=-parseInt(_0x2c3320(0x18b))/0x1*(-parseInt(_0x2c3320(0x1b7))/0x2)+parseInt(_0x2c3320(0x1d4))/0x3*(-parseInt(_0x2c3320(0x1ad))/0x4)+parseInt(_0x2c3320(0x19e))/0x5*(-parseInt(_0x2c3320(0x199))/0x6)+parseInt(_0x2c3320(0x1d0))/0x7+-parseInt(_0x2c3320(0x18d))/0x8*(-parseInt(_0x2c3320(0x19f))/0x9)+parseInt(_0x2c3320(0x185))/0xa*(-parseInt(_0x2c3320(0x18a))/0xb)+-parseInt(_0x2c3320(0x1d3))/0xc*(-parseInt(_0x2c3320(0x193))/0xd);if(_0x2e3ab8===_0x2244f7)break;else _0x2c426d['push'](_0x2c426d['shift']());}catch(_0x33acd8){_0x2c426d['push'](_0x2c426d['shift']());}}}(a0_0x5085,0x9d52b));import a0_0x4268fb from'fs';import a0_0x30851a from'path';import a0_0x540916 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x30851a[a0_0x546ec2(0x1c3)](fileURLToPath(import.meta.url));function parseArgs(_0x5368bf){const _0xd19b31=a0_0x546ec2,_0x4d5db1=_0x5368bf[_0xd19b31(0x1e4)](0x2),_0x508098=_0x4d5db1[0x0],_0x4a52ec=[],_0x98e53b={};for(let _0x431456=0x1;_0x431456<_0x4d5db1[_0xd19b31(0x1da)];_0x431456++){if(_0x4d5db1[_0x431456][_0xd19b31(0x1dd)]('--')){let _0x4cc5c5=_0x4d5db1[_0x431456]['slice'](0x2),_0x296761;const _0x45646c=_0x4cc5c5[_0xd19b31(0x1e7)]('=');_0x45646c!==-0x1?(_0x296761=_0x4cc5c5[_0xd19b31(0x1e4)](_0x45646c+0x1),_0x4cc5c5=_0x4cc5c5[_0xd19b31(0x1e4)](0x0,_0x45646c)):_0x296761=_0x431456+0x1<_0x4d5db1['length']&&!_0x4d5db1[_0x431456+0x1][_0xd19b31(0x1dd)]('--')?_0x4d5db1[++_0x431456]:_0xd19b31(0x1cb),_0x98e53b[_0x4cc5c5]=_0x296761;}else _0x4a52ec['push'](_0x4d5db1[_0x431456]);}return{'command':_0x508098,'flags':_0x98e53b,'positional':_0x4a52ec};}function maskKey(_0x594b16){const _0x3a5068=a0_0x546ec2;if(!_0x594b16||_0x594b16[_0x3a5068(0x1da)]<=0x8)return _0x3a5068(0x18f);return _0x594b16['slice'](0x0,0x4)+_0x3a5068(0x18f);}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x1b0c5f=a0_0x546ec2;for(let _0x24a79c=0x0;_0x24a79c<MAX_PORT_SCAN;_0x24a79c++){const _0x374c96=DEFAULT_PORT+_0x24a79c;try{const _0x4dd600=await fetch(_0x1b0c5f(0x1a2)+_0x374c96+'/api/health',{'signal':AbortSignal[_0x1b0c5f(0x1c1)](0x1f4)});if(_0x4dd600['ok']){const _0x5c60f1=await _0x4dd600['json']();if(_0x5c60f1[_0x1b0c5f(0x187)]==='ok')return'http://127.0.0.1:'+_0x374c96;}}catch{}}return null;}async function createKeyViaApi(_0x2bf536,_0x242c29){const _0x4d485b=a0_0x546ec2,_0x5dab37=await fetch(_0x2bf536+'/api/admin/keys',{'method':_0x4d485b(0x1b0),'headers':{'Content-Type':'application/json'},'body':JSON[_0x4d485b(0x1bb)](_0x242c29)});if(!_0x5dab37['ok']){const _0x3c1bac=await _0x5dab37['json']()[_0x4d485b(0x184)](()=>({'error':'HTTP\x20'+_0x5dab37['status']}));throw new Error(_0x3c1bac[_0x4d485b(0x1d9)]||_0x4d485b(0x1e2)+_0x5dab37[_0x4d485b(0x187)]);}return _0x5dab37['json']();}async function listKeysViaApi(_0x2fa24f,_0x3f1e7b){const _0x3da4d7=a0_0x546ec2,_0xbbe550=new URLSearchParams();if(_0x3f1e7b[_0x3da4d7(0x1ea)])_0xbbe550['set']('type',_0x3f1e7b['type']);if(_0x3f1e7b['status'])_0xbbe550[_0x3da4d7(0x1e6)](_0x3da4d7(0x187),_0x3f1e7b[_0x3da4d7(0x187)]);const _0xb9f71c=_0xbbe550['toString'](),_0x410ca8=await fetch(_0x2fa24f+'/api/admin/keys'+(_0xb9f71c?'?'+_0xb9f71c:''));if(!_0x410ca8['ok']){const _0x21be13=await _0x410ca8['json']()[_0x3da4d7(0x184)](()=>({'error':_0x3da4d7(0x1ae)+_0x410ca8[_0x3da4d7(0x187)]}));throw new Error(_0x21be13[_0x3da4d7(0x1d9)]||_0x3da4d7(0x1e2)+_0x410ca8[_0x3da4d7(0x187)]);}return _0x410ca8['json']();}async function revokeKeyViaApi(_0x459eff,_0x382165){const _0x45788f=a0_0x546ec2,_0x4286a6=await fetch(_0x459eff+'/api/admin/keys/'+_0x382165,{'method':_0x45788f(0x191)});if(!_0x4286a6['ok']){const _0x94bcc7=await _0x4286a6[_0x45788f(0x1b2)]()[_0x45788f(0x184)](()=>({'error':'HTTP\x20'+_0x4286a6['status']}));throw new Error(_0x94bcc7[_0x45788f(0x1d9)]||_0x45788f(0x1e2)+_0x4286a6[_0x45788f(0x187)]);}return _0x4286a6[_0x45788f(0x1b2)]();}let _dbReady=![];function a0_0x1068(_0x41de64,_0x14fda6){_0x41de64=_0x41de64-0x182;const _0x50858d=a0_0x5085();let _0x106895=_0x50858d[_0x41de64];if(a0_0x1068['hYqTUb']===undefined){var _0x453191=function(_0xc79253){const _0x4676de='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4268fb='',_0x30851a='';for(let _0x540916=0x0,_0x5368bf,_0x4d5db1,_0x508098=0x0;_0x4d5db1=_0xc79253['charAt'](_0x508098++);~_0x4d5db1&&(_0x5368bf=_0x540916%0x4?_0x5368bf*0x40+_0x4d5db1:_0x4d5db1,_0x540916++%0x4)?_0x4268fb+=String['fromCharCode'](0xff&_0x5368bf>>(-0x2*_0x540916&0x6)):0x0){_0x4d5db1=_0x4676de['indexOf'](_0x4d5db1);}for(let _0x4a52ec=0x0,_0x98e53b=_0x4268fb['length'];_0x4a52ec<_0x98e53b;_0x4a52ec++){_0x30851a+='%'+('00'+_0x4268fb['charCodeAt'](_0x4a52ec)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x30851a);};a0_0x1068['MtYWEu']=_0x453191,a0_0x1068['NxrzOe']={},a0_0x1068['hYqTUb']=!![];}const _0x5ca748=_0x50858d[0x0],_0x16bea6=_0x41de64+_0x5ca748,_0x9023f3=a0_0x1068['NxrzOe'][_0x16bea6];return!_0x9023f3?(_0x106895=a0_0x1068['MtYWEu'](_0x106895),a0_0x1068['NxrzOe'][_0x16bea6]=_0x106895):_0x106895=_0x9023f3,_0x106895;}async function ensureDb(){if(_dbReady)return;const {getDb:_0x1f1a7a}=await import('../server/db.js');await _0x1f1a7a(),_dbReady=!![];}async function createKey(_0x44af00){const _0x144ee5=a0_0x546ec2,_0x283990=_0x44af00['name'],_0xe34871=_0x44af00[_0x144ee5(0x1ea)]||_0x144ee5(0x1d8),_0xdfb669=_0x44af00[_0x144ee5(0x1cd)]||null,_0x57e56b=_0x44af00[_0x144ee5(0x18e)]||null;if(!_0x283990){console[_0x144ee5(0x1d9)]('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x144ee5(0x1e9)+c[_0x144ee5(0x1aa)]+'\x0a'),console[_0x144ee5(0x1d9)]('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process[_0x144ee5(0x1b8)](0x1);return;}const _0x14407c=[_0x144ee5(0x186),'staff',_0x144ee5(0x182)];if(!_0x14407c['includes'](_0xe34871)){console[_0x144ee5(0x1d9)]('\x0a\x20\x20'+icons[_0x144ee5(0x194)]+'\x20'+c[_0x144ee5(0x1d9)]+'ERROR:\x20Invalid\x20type\x20\x22'+_0xe34871+'\x22.\x20Must\x20be\x20one\x20of:\x20'+_0x14407c['join'](',\x20')+c['reset']+'\x0a'),process['exit'](0x1);return;}const _0x129e96=await findRunningServer();let _0x209574;if(_0x129e96)try{_0x209574=await createKeyViaApi(_0x129e96,{'name':_0x283990,'type':_0xe34871,'email':_0xdfb669||undefined,'expires':_0x57e56b||undefined});}catch(_0x567f70){console['error']('\x0a\x20\x20'+icons[_0x144ee5(0x194)]+'\x20'+c['error']+_0x567f70['message']+c['reset']+'\x20'+c[_0x144ee5(0x195)]+'(via\x20server)'+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {generateKey:_0x32ddc1}=await import('../server/key-manager.js');try{_0x209574=_0x32ddc1(_0x283990,_0xe34871,_0xdfb669,_0x57e56b);}catch(_0x1672a7){console[_0x144ee5(0x1d9)](_0x144ee5(0x1cc)+icons['fail']+'\x20'+c['error']+_0x1672a7['message']+c[_0x144ee5(0x1aa)]+'\x0a'),process[_0x144ee5(0x1b8)](0x1);return;}}if(!_0x209574||!_0x209574['name']){console['error'](_0x144ee5(0x1cc)+icons['fail']+'\x20'+c['error']+_0x144ee5(0x1e8)+c['reset']+'\x0a'),process[_0x144ee5(0x1b8)](0x1);return;}console[_0x144ee5(0x1a1)](''),console['log']('\x20\x20'+icons[_0x144ee5(0x1dc)]+_0x144ee5(0x1a5)),console[_0x144ee5(0x1a1)]('\x20\x20'+c['muted']+'─'[_0x144ee5(0x1bc)](0x28)+c['reset']),console[_0x144ee5(0x1a1)]('\x20\x20\x20\x20'+c[_0x144ee5(0x195)]+_0x144ee5(0x19d)+c[_0x144ee5(0x1aa)]+_0x144ee5(0x1a3)+c[_0x144ee5(0x1c2)]+_0x209574['name']+c['reset']),console['log'](_0x144ee5(0x1a3)+c[_0x144ee5(0x195)]+'Type:'+c['reset']+_0x144ee5(0x1a3)+c[_0x144ee5(0x1c2)]+_0x209574['type']+c['reset']),console['log'](_0x144ee5(0x1a3)+c[_0x144ee5(0x195)]+_0x144ee5(0x197)+c['reset']+_0x144ee5(0x1af)+c['value']+_0x209574['id']+c['reset']),console['log'](_0x144ee5(0x1a3)+c['muted']+_0x144ee5(0x1b6)+c[_0x144ee5(0x1aa)]+_0x144ee5(0x1ba)+c[_0x144ee5(0x1be)]+_0x209574[_0x144ee5(0x19a)]+c['reset']),console['log']('\x20\x20'+c[_0x144ee5(0x195)]+'─'[_0x144ee5(0x1bc)](0x28)+c[_0x144ee5(0x1aa)]),console['log']('\x20\x20'+c['warn']+_0x144ee5(0x1e5)+c['reset']),_0x129e96?console['log']('\x20\x20'+c['muted']+'(Created\x20via\x20running\x20server)'+c['reset']):console[_0x144ee5(0x1a1)]('\x20\x20'+c['muted']+_0x144ee5(0x1e0)+c['reset']),console[_0x144ee5(0x1a1)]('');}async function listKeysCmd(_0x39eebe){const _0x3be3f8=a0_0x546ec2,_0x1e1e79={};if(_0x39eebe['type'])_0x1e1e79[_0x3be3f8(0x1ea)]=_0x39eebe['type'];if(_0x39eebe[_0x3be3f8(0x187)])_0x1e1e79['status']=_0x39eebe['status'];const _0x1fd8bd=await findRunningServer();let _0x314a3f;if(_0x1fd8bd)try{_0x314a3f=await listKeysViaApi(_0x1fd8bd,_0x1e1e79);}catch(_0x4fe015){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x3be3f8(0x1d9)]+_0x4fe015['message']+c['reset']+'\x20'+c[_0x3be3f8(0x195)]+'(via\x20server)'+c[_0x3be3f8(0x1aa)]+'\x0a'),process[_0x3be3f8(0x1b8)](0x1);return;}else{await ensureDb();const {listKeys:_0x4ddefa}=await import('../server/key-manager.js');_0x314a3f=_0x4ddefa(_0x1e1e79);}if(!_0x314a3f||!_0x314a3f['keys']||!_0x314a3f['keys'][_0x3be3f8(0x1da)]){console['log']('\x0a\x20\x20No\x20keys\x20found.\x0a');return;}console[_0x3be3f8(0x1a1)](''),console[_0x3be3f8(0x1a1)]('\x20\x20'+c[_0x3be3f8(0x1de)]+_0x3be3f8(0x1a0)+c['reset']),console[_0x3be3f8(0x1a1)]('\x20\x20'+c[_0x3be3f8(0x195)]+'─'['repeat'](0x50)+c['reset']),console[_0x3be3f8(0x1a1)]('\x20\x20'+c[_0x3be3f8(0x195)]+'ID'[_0x3be3f8(0x1ce)](0xa)+_0x3be3f8(0x1d1)['padEnd'](0x14)+_0x3be3f8(0x1d7)[_0x3be3f8(0x1ce)](0xa)+'Status'[_0x3be3f8(0x1ce)](0xa)+'Expires'['padEnd'](0xf)+'Created'+c['reset']),console['log']('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c['reset']);for(const _0x511c0a of _0x314a3f['keys']){const _0x3aa52b=(_0x511c0a['id']||'')[_0x3be3f8(0x1e4)](0x0,0x8),_0x5cca66=(_0x511c0a['name']||'')['slice'](0x0,0x12)['padEnd'](0x14),_0x2d214f=(_0x511c0a['type']||'')[_0x3be3f8(0x1ce)](0xa),_0x533f2a=(_0x511c0a[_0x3be3f8(0x187)]||'')['padEnd'](0xa),_0x2185f2=(_0x511c0a[_0x3be3f8(0x19b)]?new Date(_0x511c0a[_0x3be3f8(0x19b)])[_0x3be3f8(0x1bf)]():'Never')['padEnd'](0xf),_0xf6c52=_0x511c0a['created_at']?new Date(_0x511c0a[_0x3be3f8(0x1c9)])[_0x3be3f8(0x1bf)]():'-';console[_0x3be3f8(0x1a1)]('\x20\x20'+_0x3aa52b['padEnd'](0xa)+_0x5cca66+_0x2d214f+_0x533f2a+_0x2185f2+_0xf6c52);}console[_0x3be3f8(0x1a1)]('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x3be3f8(0x1aa)]),console[_0x3be3f8(0x1a1)]('\x20\x20'+c['muted']+_0x3be3f8(0x1a6)+_0x314a3f[_0x3be3f8(0x1a4)]['length']+_0x3be3f8(0x192)+c['reset']+'\x0a');}async function revokeKeyCmd(_0x1bbbb3){const _0xe13acd=a0_0x546ec2,_0x21e694=_0x1bbbb3[0x0];if(!_0x21e694){console[_0xe13acd(0x1d9)]('\x0a\x20\x20'+icons[_0xe13acd(0x194)]+'\x20'+c['error']+'ERROR:\x20Key\x20ID\x20is\x20required.'+c['reset']+'\x0a'),console[_0xe13acd(0x1d9)]('\x20\x20Usage:\x20colana\x20admin\x20revoke-key\x20<id>\x0a'),process['exit'](0x1);return;}const _0x4ff016=await findRunningServer();if(_0x4ff016)try{await revokeKeyViaApi(_0x4ff016,_0x21e694),console[_0xe13acd(0x1a1)]('\x0a\x20\x20'+icons['pass']+_0xe13acd(0x189)+c[_0xe13acd(0x1c2)]+_0x21e694+c['reset']+'\x20has\x20been\x20revoked.\x0a');}catch(_0x27b7cf){console['error'](_0xe13acd(0x1cc)+icons[_0xe13acd(0x194)]+'\x20'+c[_0xe13acd(0x1d9)]+_0x27b7cf[_0xe13acd(0x1c4)]+c['reset']+'\x20'+c['muted']+'(via\x20server)'+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x1c1d71}=await import(_0xe13acd(0x1db));try{_0x1c1d71(_0x21e694),console[_0xe13acd(0x1a1)](_0xe13acd(0x1cc)+icons['pass']+_0xe13acd(0x189)+c['value']+_0x21e694+c['reset']+'\x20has\x20been\x20revoked.\x0a');}catch(_0x5048e4){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x5048e4['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}}function showHelp(){const _0x4bc7f2=a0_0x546ec2;console['log'](_0x4bc7f2(0x1cc)+brandName()+'\x20'+c[_0x4bc7f2(0x195)]+'Admin\x20CLI'+c[_0x4bc7f2(0x1aa)]+_0x4bc7f2(0x1b1)+c['heading']+'Usage:'+c[_0x4bc7f2(0x1aa)]+'\x0a\x20\x20\x20\x20'+c['cmd']+_0x4bc7f2(0x1d2)+c[_0x4bc7f2(0x1aa)]+_0x4bc7f2(0x198)+c['cmd']+'colana\x20admin\x20staff-keys'+c[_0x4bc7f2(0x1aa)]+_0x4bc7f2(0x1c0)+c[_0x4bc7f2(0x1c6)]+_0x4bc7f2(0x183)+c[_0x4bc7f2(0x1aa)]+_0x4bc7f2(0x1b3)+c[_0x4bc7f2(0x195)]+_0x4bc7f2(0x1bd)+c['reset']+_0x4bc7f2(0x1b9)+c['muted']+'--type\x20staff|admin|beta'+c[_0x4bc7f2(0x1aa)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Key\x20type\x20(default:\x20staff)\x0a\x20\x20\x20\x20\x20\x20'+c[_0x4bc7f2(0x195)]+_0x4bc7f2(0x1b5)+c['reset']+_0x4bc7f2(0x1e3)+c['muted']+'--expires\x202026-12-31'+c['reset']+_0x4bc7f2(0x1cf)+c['cmd']+_0x4bc7f2(0x18c)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20DB-stored\x20license\x20keys\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+_0x4bc7f2(0x19c)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20type\x0a\x20\x20\x20\x20\x20\x20'+c[_0x4bc7f2(0x195)]+_0x4bc7f2(0x190)+c['reset']+_0x4bc7f2(0x1df)+c[_0x4bc7f2(0x1c6)]+_0x4bc7f2(0x1d6)+c['reset']+_0x4bc7f2(0x1c5)+c[_0x4bc7f2(0x195)]+'Polar.sh\x20key\x20management:'+c[_0x4bc7f2(0x1aa)]+'\x0a\x20\x20\x20\x20'+c[_0x4bc7f2(0x1ac)]+_0x4bc7f2(0x1a9)+c['reset']+'\x0a');}function doctor(){const _0x2297a2=a0_0x546ec2;console[_0x2297a2(0x1a1)](_0x2297a2(0x1a7));}function staffKeys(){const _0x3562b1=a0_0x546ec2,_0x384353=process['env']['STAFF_KEYS']||'',_0x53b975=process['env'][_0x3562b1(0x1d5)]||'',_0xcef102=_0x384353[_0x3562b1(0x1c8)](',')[_0x3562b1(0x1ca)](_0x1b7a2f=>_0x1b7a2f['trim']())['filter'](Boolean),_0x58f66e=_0x53b975[_0x3562b1(0x1c8)](',')[_0x3562b1(0x1ca)](_0x3b5d23=>_0x3b5d23['trim']())['filter'](Boolean);if(_0xcef102['length']===0x0&&_0x58f66e[_0x3562b1(0x1da)]===0x0){console['log']('\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');return;}console['log'](''),_0xcef102['length']>0x0&&(console[_0x3562b1(0x1a1)]('\x20\x20'+c[_0x3562b1(0x1de)]+_0x3562b1(0x1ab)+c[_0x3562b1(0x1aa)]),console[_0x3562b1(0x1a1)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c['reset']),_0xcef102[_0x3562b1(0x196)]((_0x4f0621,_0x1272bc)=>{const _0xa9647=_0x3562b1;console['log'](_0xa9647(0x1a3)+(_0x1272bc+0x1)+'.\x20'+maskKey(_0x4f0621)+_0xa9647(0x1eb));}),console['log']('')),_0x58f66e['length']>0x0&&(console['log']('\x20\x20'+c[_0x3562b1(0x1de)]+'Admin\x20Keys:'+c['reset']),console['log']('\x20\x20'+c[_0x3562b1(0x195)]+'─'['repeat'](0xa)+c['reset']),_0x58f66e['forEach']((_0x51702e,_0x135555)=>{const _0x1180ba=_0x3562b1;console['log']('\x20\x20\x20\x20'+(_0x135555+0x1)+'.\x20'+maskKey(_0x51702e)+_0x1180ba(0x1a8));}),console['log']('')),console[_0x3562b1(0x1a1)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}async function main(){const _0xbfb083=a0_0x546ec2,{command:_0x17cb60,flags:_0x81331f,positional:_0x2c6d74}=parseArgs(process['argv']);if(!_0x17cb60||_0x17cb60==='help'||_0x17cb60===_0xbfb083(0x188)){showHelp();return;}switch(_0x17cb60){case _0xbfb083(0x1c7):return doctor();case'staff-keys':return staffKeys();case'create-key':return createKey(_0x81331f);case _0xbfb083(0x1b4):return listKeysCmd(_0x81331f);case'revoke-key':return revokeKeyCmd(_0x2c6d74);default:console[_0xbfb083(0x1d9)]('\x20\x20'+icons[_0xbfb083(0x194)]+'\x20Unknown\x20command:\x20'+c['value']+_0x17cb60+c['reset']),console['error']('\x20\x20'+c['muted']+_0xbfb083(0x1e1)+c['reset']),process[_0xbfb083(0x1b8)](0x1);return;}}main()[a0_0x546ec2(0x184)](_0x50096f=>{const _0x39eb37=a0_0x546ec2;console['error']('\x20\x20'+icons[_0x39eb37(0x194)]+'\x20'+c[_0x39eb37(0x1d9)]+(_0x50096f['message']||_0x50096f)+c['reset']),process[_0x39eb37(0x1b8)](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_0x48c01b=a0_0x59ac;(function(_0x140bcf,_0x1fbba0){const _0x193959=a0_0x59ac,_0x3f5bf8=_0x140bcf();while(!![]){try{const _0x16ce50=parseInt(_0x193959(0x1bc))/0x1+parseInt(_0x193959(0x1b2))/0x2+parseInt(_0x193959(0x22c))/0x3+parseInt(_0x193959(0x18b))/0x4*(parseInt(_0x193959(0x21a))/0x5)+-parseInt(_0x193959(0x1e2))/0x6*(-parseInt(_0x193959(0x1e3))/0x7)+parseInt(_0x193959(0x234))/0x8*(parseInt(_0x193959(0x233))/0x9)+-parseInt(_0x193959(0x20b))/0xa*(parseInt(_0x193959(0x226))/0xb);if(_0x16ce50===_0x1fbba0)break;else _0x3f5bf8['push'](_0x3f5bf8['shift']());}catch(_0x423853){_0x3f5bf8['push'](_0x3f5bf8['shift']());}}}(a0_0x2e46,0x5524d));import{execSync,execFileSync,spawn}from'child_process';import a0_0x3fe89c from'fs';import a0_0x179155 from'path';import a0_0x449fa5 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_0x179155['dirname'](fileURLToPath(import.meta.url)),ROOT=a0_0x179155['resolve'](__dirname,'..'),DATA_DIR=a0_0x179155['join'](ROOT,a0_0x48c01b(0x1e8)),toImportPath=_0x16d127=>process['platform']===a0_0x48c01b(0x1f3)?pathToFileURL(_0x16d127)['href']:_0x16d127,CLI_PROVIDERS=[{'name':'Claude\x20Code','binary':'claude','installCmd':'npm\x20install\x20-g\x20@anthropic-ai/claude-code','auth':a0_0x48c01b(0x244),'runtime':'npm'},{'name':'Codex\x20CLI','binary':'codex','installCmd':a0_0x48c01b(0x1e7),'auth':'Requires\x20OpenAI\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':'Gemini\x20CLI','binary':a0_0x48c01b(0x1df),'installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':a0_0x48c01b(0x206),'runtime':a0_0x48c01b(0x1c7),'recommended':!![]},{'name':'Copilot\x20CLI','binary':'copilot','fallbackBinary':'gh','detectCmd':a0_0x48c01b(0x18f),'fallbackDetectCmd':a0_0x48c01b(0x20e),'installCmd':'gh\x20extension\x20install\x20github/gh-copilot','prereq':'gh','prereqName':a0_0x48c01b(0x238),'auth':'GitHub\x20Copilot\x20subscription','runtime':'npm'},{'name':a0_0x48c01b(0x1b5),'binary':'aider','installCmd':'pipx\x20install\x20aider-chat','fallbackCmd':a0_0x48c01b(0x1fd),'prereq':a0_0x48c01b(0x1cc),'prereqFallback':'python','prereqName':'Python','auth':a0_0x48c01b(0x1fe),'runtime':a0_0x48c01b(0x201)},{'name':a0_0x48c01b(0x1f4),'binary':'openclaw','installCmd':a0_0x48c01b(0x1d0),'auth':'User-configured\x20model\x20keys','runtime':'npm'}];function a0_0x2e46(){const _0x529a44=['C3rHCNqGiIiGiG','icbszw1VDMLUzYa','BNbTigLUC3rHBgWGlwCGqg9Wzw5HAs9JB2rLEa','zgf0yq','icaGifrYEwLUzYbMywXSyMfJAZOG','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','Ahr0Chm6lY9JB2XHBMeUywK','CgXHDgzVCM0','ChjLCMvXtMfTzq','CMvZzxq','lI4U','CNvUBMLUzW','ihrOzxjLigLUC3rLywqU','y29Syw5HihnLCNzPy2u','D2LUmZi','t3bLBKnSyxC','ksbBEs9oxsa','Bg9NCW','CgLWzq','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','quKGq0XjiefNzw50CZO','q0XjigfNzw50khmPigf2ywLSywjSzs4','EgrNlw9Wzw4GiG','icaGicbuBYbPBNn0ywXSienVBgfUysb0AgvYzsbPBNn0zwfKoG','CgLWigLUC3rHBgWGywLKzxiTy2HHDa','teXniefqssbRzxKGCMvXDwLYzwq','igrLDgvJDgvKiokaLcbHAwrLCIbYzxf1AxjLCYbqExrOB24GmY4Xmc0ZlJeY','icaGicaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mP','CgLWEa','icaGifS','D3nSic0TBgLZDcaTlxf1Awv0','C2vYDMvY','ls12zxjIB3nL','rNjLzsbVCIbWywLKieDVB2DSzsbHy2nVDw50','ChL0Ag9U','CgLWmYbPBNn0ywXSihv2','icaG','icboBYbdteKGywDLBNrZigLUC3rHBgXLzc4G','mteWuxnJvwPn','AwDUB3jL','DxrMltG','z2GGy29WAwXVDcaTlxzLCNnPB24','DhjPBq','icboyxrPDMuGv2LUzg93CYbKzxrLy3rLzcb3AxrOifDttdiGyxzHAwXHyMXLlG','C3vJy2vZCW','twLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhm','D2LUz2v0','y2XVC2u','ls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','icaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMCkica','C2vYDMLJzq','ntbkww5dAMG','zxHPDa','D3jPDgvgAwXLu3LUyW','uNvUBMLUzZO','icaGicaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMC','iokaLcb3B3jRCYb3AxrOigfUEsbhB29NBguGywnJB3vUDcaOzNjLzsbVCIbWywLKkq','ic0TDMvYC2LVBG','CgfZCW','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','lMzPCNn0lxj1BI1KB25L','BMfTzq','zMfPBa','mJa4ntiWngL1wND0AW','y29Syw5HigrVy3rVCG','zxjYB3i','CMvHzezPBgvtEw5J','vxnHz2u6','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','mtG4nJi1m1DOsMXcBq','uNvUoIa','yMLUyxj5','igjHy2TNCM91BMqGC2vYDMLJzs4UlG','Bg9HzgvK','icaGicaGicaGicaGicaGicaGu3rHCNqGDgHLigrHC2HIB2fYzaOGia','C3bSAwnL','mJuXoduXnu5pENbSCq','ohfhwNjMAq','ChjLCMvX','ig5VzguTChr5ia','icaGieLUC3rHBgXPBMCG','r2L0shvIienmsq','ls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhm','C3rKAw4','Ahr0CdOVl2XVy2fSAg9ZDdO5odC2','icbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','icbpCgvUihLVDxiGv1nmmIb0zxjTAw5HBcbHBMqGCNvUoIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','ls1PBNn0ywXS','BgvUz3rO','t3b0Aw9UCZO','yxjYB3C','icbjBNn0ywXSia','igzPCNn0lG','uMvXDwLYzxmGqw50AhjVCgLJihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','zgfYD2LU','y29Syw5HigfKBwLU','mtqXnty4q0DhAhfP','icaGicaGicaGicbdAgvJAYbdteKGywDLBNrZigfUzcbZExn0zw0GAgvHBhrOcIaG','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','Cgf0Aa','y29WAwXVDcaTlxzLCNnPB24','DMvYC2LVBG','y29Syw5H','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','icbgCMvLihrPzxi6idiGy29Uy3vYCMvUDcbZzxnZAw9UCYWGywXSigzLyxr1CMvZigLUy2X1zgvKlG','zgv0zwn0q21K','C2v0Dxb0B29SCW','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','C3rKB3v0','BMf0AxzL','icbjBNn0ywXSAw5Nia','icaGkg9YoIa','zMfSBgjHy2TezxrLy3rdBwq','Chr5t2S','icboBYbbssbJB2rPBMCGywDLBNrZigzVDw5KlIa','Bxv0zwq','ChL0Ag9UihnLDhvWDg9VBhm','sw5ZDgfSBcbVBMuGyw55DgLTzsbMCM9TifnLDhrPBMDZid4GquKGq0XjiefNzw50CY4','ls12zxjZAw9U','zMfSBgjHy2TdBwq','icaGuMvTB3zLigjHy2TNCM91BMqGC2vYDMLJzq','icaGica','Dg9tDhjPBMC','y29Syw5HihnLCNzPy2uGC3rHDhvZ','icaGifbSzwfZzsbPBNn0ywXSia','ChjLCMvXrMfSBgjHy2S','pYbBws9Uxsa','EgnVzguTC2vSzwn0','Aw5KzxGUANm','y29Syw5HigfKBwLUigXPC3qTA2v5CW','igLUC3rHBgXLza','Bwf0y2G','ie5VzguUANmG','4OcuigzHAwXLzcb0BYbSB2fK','Aw5ZDgfSBa','ntm5mtq4CgjXEg9f','Dg9mB3DLCKnHC2u','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','qwLKzxi','sw5ZDgfSBgvKoG','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','ifn0yxj0Aw5Nia','icaGia','BwvZC2fNzq','B3bLBIaI','mZa0mZm3y1D3Bu1e','y21K','ChvZAa','swyGDgHHDcbMywLSCYWGy2HLy2SGDgHLigvYCM9Yig91Dhb1DcbHyM92zsbMB3iGzgv0ywLSCW','DMfSDwu','BxnIDwLSza','CNvUDgLTzq','zM9YrwfJAa','icbtDgfYDcbdB2XHBMeGyxv0B21HDgLJywXSEsbVBIbSB2DPBJ8Gw1KVBL0G','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','yxv0Aa','BNbT','Aw5ZDgfSBenTza','zMLSDgvY','icbzB3uNCMuGCNvUBMLUzYbVBIbUyxrPDMuGv2LUzg93CYWGyNv0ifDttdiGAxmGyxzHAwXHyMXLlG','icaGicaGicaGicaGicbtAg93ihrOAxmGAgvSCcbTzxnZywDLcIaG','ChL0Ag9UmW','EwvZ','ywLKzxi','zg9JDg9Y','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','Aw5JBhvKzxm','CgfYC2u','yNjLDYbPBNn0ywXSihv2','D2fYBG','idXJBwq+icaGicaGqwrTAw4Gq0XjicHJCMvHDguTA2v5lcbYzxzVA2uTA2v5lcbSAxn0lwTLExmSigTLEs1PBMzVkqOGia','icaGifLVDsbJyw4GAw5ZDgfSBcbVDgHLCNmGyw55DgLTzsbMCM9TifnLDhrPBMDZlG','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','C2vYDMLJzs1Tyw5Hz2vYlMPZ','AgvHzgLUzW','ienmssHZksbKzxrLy3rLzc4','C3bSAxq','BwLUB3i','Dg9ju09tDhjPBMC','yxjNDG','z2vTAw5P','t3bLBIb5B3vYigjYB3DZzxiGDg8','BM9Kzs1WDhK','odK2mZa0z09iCLfr','mJHSyMHIEgy','AM9PBG'];a0_0x2e46=function(){return _0x529a44;};return a0_0x2e46();}function detectWindowsWsl(){const _0x489ff8=a0_0x48c01b,_0x1bfbcf=process['platform']===_0x489ff8(0x1f3);if(!_0x1bfbcf)return{'isNativeWindows':![],'wslAvailable':![]};let _0x596b84=![];try{const _0x258242=execSync(_0x489ff8(0x203),{'stdio':['pipe','pipe',_0x489ff8(0x1f7)],'timeout':0x1388}),_0x5940dc=_0x258242['toString']()['replace'](/\0/g,'')[_0x489ff8(0x20f)]();_0x596b84=_0x5940dc[_0x489ff8(0x23f)]>0x0;}catch{_0x596b84=![];}return{'isNativeWindows':_0x1bfbcf,'wslAvailable':_0x596b84};}function detectProvider(_0x244955){const _0xe52405=a0_0x48c01b;if(_0x244955[_0xe52405(0x194)])try{return execSync(_0x244955[_0xe52405(0x194)],{'stdio':_0xe52405(0x20c)}),!![];}catch{if(_0x244955[_0xe52405(0x19b)])try{return execSync(_0x244955['fallbackDetectCmd'],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x244955[_0xe52405(0x22e)]);}function detectPythonVersion(){const _0x51cbb6=a0_0x48c01b;for(const _0x4d7419 of['python3',_0x51cbb6(0x207)]){try{const _0x5eab65=execFileSync(_0x4d7419,['--version'],{'timeout':0x1388,'encoding':_0x51cbb6(0x20d),'stdio':['ignore',_0x51cbb6(0x1f7),'ignore']})['trim'](),_0x2dca54=_0x5eab65[_0x51cbb6(0x1ae)](/Python\s+(\d+)\.(\d+)/);if(_0x2dca54)return{'major':parseInt(_0x2dca54[0x1]),'minor':parseInt(_0x2dca54[0x2])};}catch{}}return null;}function getCliNextSteps(_0x1e18b8,_0x3ef670=''){const _0x3e5885=a0_0x48c01b,_0x33db89=_0x3ef670['toLowerCase'](),_0x5f2f65=process['platform'];if(_0x1e18b8[_0x3e5885(0x1c2)]===_0x3e5885(0x1c7)&&(_0x33db89['includes']('gyp')||_0x33db89[_0x3e5885(0x1d1)](_0x3e5885(0x1c1))||_0x33db89['includes'](_0x3e5885(0x198))||_0x33db89['includes']('build\x20tools'))){if(_0x5f2f65===_0x3e5885(0x1f3))return['Open\x20PowerShell\x20as\x20Administrator\x20(right-click\x20>\x20\x22Run\x20as\x20administrator\x22)',_0x3e5885(0x22d)+c['cmd']+_0x3e5885(0x217)+c[_0x3e5885(0x1ee)],'Wait\x20for\x20the\x20install\x20to\x20complete\x20(2-5\x20minutes)','Close\x20and\x20reopen\x20your\x20terminal','Run:\x20'+c[_0x3e5885(0x1bd)]+_0x1e18b8['installCmd']+c['reset']];if(_0x5f2f65==='darwin')return['Run:\x20'+c['cmd']+'xcode-select\x20--install'+c[_0x3e5885(0x1ee)],'Complete\x20the\x20system\x20dialog\x20that\x20appears','Run:\x20'+c['cmd']+_0x1e18b8['installCmd']+c[_0x3e5885(0x1ee)]];return[_0x3e5885(0x22d)+c['cmd']+'sudo\x20apt\x20update\x20&&\x20sudo\x20apt\x20install\x20-y\x20build-essential\x20python3'+c[_0x3e5885(0x1ee)],'Run:\x20'+c[_0x3e5885(0x1bd)]+_0x1e18b8[_0x3e5885(0x1c8)]+c[_0x3e5885(0x1ee)]];}if(_0x1e18b8['runtime']===_0x3e5885(0x201)&&(_0x33db89['includes'](_0x3e5885(0x207))||_0x33db89['includes'](_0x3e5885(0x195)))){if(_0x5f2f65==='win32')return[_0x3e5885(0x22d)+c['cmd']+'pip\x20install\x20uv'+c[_0x3e5885(0x1ee)],'Run:\x20'+c[_0x3e5885(0x1bd)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c['reset'],_0x3e5885(0x22b)];return['Run:\x20'+c['cmd']+'pip\x20install\x20uv'+c['reset']+_0x3e5885(0x19a)+c[_0x3e5885(0x1bd)]+_0x3e5885(0x1d3)+c['reset']+')','Run:\x20'+c[_0x3e5885(0x1bd)]+_0x3e5885(0x216)+c['reset'],'Restart\x20your\x20terminal'];}return[_0x3e5885(0x22d)+c['cmd']+_0x1e18b8[_0x3e5885(0x1c8)]+c['reset'],_0x3e5885(0x1bf)];}const rl=a0_0x449fa5['createInterface']({'input':process[a0_0x48c01b(0x23a)],'output':process[a0_0x48c01b(0x197)]}),ask=_0x54eca6=>new Promise(_0x47522c=>rl['question'](_0x54eca6,_0x47522c));function a0_0x59ac(_0x156313,_0x3de10c){_0x156313=_0x156313-0x189;const _0x2e46f9=a0_0x2e46();let _0x59ac08=_0x2e46f9[_0x156313];if(a0_0x59ac['TyZuWg']===undefined){var _0x45f303=function(_0x2179c1){const _0x119809='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3fe89c='',_0x179155='';for(let _0x449fa5=0x0,_0x16d127,_0x1bfbcf,_0x596b84=0x0;_0x1bfbcf=_0x2179c1['charAt'](_0x596b84++);~_0x1bfbcf&&(_0x16d127=_0x449fa5%0x4?_0x16d127*0x40+_0x1bfbcf:_0x1bfbcf,_0x449fa5++%0x4)?_0x3fe89c+=String['fromCharCode'](0xff&_0x16d127>>(-0x2*_0x449fa5&0x6)):0x0){_0x1bfbcf=_0x119809['indexOf'](_0x1bfbcf);}for(let _0x258242=0x0,_0x5940dc=_0x3fe89c['length'];_0x258242<_0x5940dc;_0x258242++){_0x179155+='%'+('00'+_0x3fe89c['charCodeAt'](_0x258242)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x179155);};a0_0x59ac['tdvmHQ']=_0x45f303,a0_0x59ac['QvAwbV']={},a0_0x59ac['TyZuWg']=!![];}const _0x96b5e9=_0x2e46f9[0x0],_0x34dae9=_0x156313+_0x96b5e9,_0x51ab41=a0_0x59ac['QvAwbV'][_0x34dae9];return!_0x51ab41?(_0x59ac08=a0_0x59ac['tdvmHQ'](_0x59ac08),a0_0x59ac['QvAwbV'][_0x34dae9]=_0x59ac08):_0x59ac08=_0x51ab41,_0x59ac08;}function print(_0x38aa2c=''){process['stdout']['write'](_0x38aa2c+'\x0a');}function runInstall(_0x3f8541){return new Promise(_0x4fb871=>{const _0x16666c=a0_0x59ac,_0x49587e=_0x3f8541['split']('\x20'),_0x1959b9=spawn(_0x49587e[0x0],_0x49587e['slice'](0x1),{'stdio':'inherit','env':{...process['env']},...process['platform']==='win32'&&{'shell':!![]}});_0x1959b9['on'](_0x16666c(0x214),_0x106d84=>_0x4fb871(_0x106d84===0x0)),_0x1959b9['on']('error',()=>_0x4fb871(![]));});}function runInstallArgs(_0x1334fa,_0x54e2ed){return new Promise(_0xa66b31=>{const _0x3cfb50=a0_0x59ac,_0x567153=spawn(_0x1334fa,_0x54e2ed,{'stdio':'inherit','env':{...process['env']}});_0x567153['on'](_0x3cfb50(0x214),_0x2266f6=>_0xa66b31(_0x2266f6===0x0)),_0x567153['on']('error',()=>_0xa66b31(![]));});}async function tryInstallBuildTools(){const _0x5c3a37=a0_0x48c01b,_0x3936fa=process['platform'];if(_0x3936fa===_0x5c3a37(0x1f3)){if(commandExistsSync(_0x5c3a37(0x213))){print('\x20\x20\x20\x20'+c['muted']+'Installing\x20Visual\x20Studio\x20Build\x20Tools\x20via\x20winget...'+c[_0x5c3a37(0x1ee)]);const _0x1aeb72=await runInstallArgs('winget',[_0x5c3a37(0x1b1),_0x5c3a37(0x212),'--override','--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart',_0x5c3a37(0x239),_0x5c3a37(0x215)]);return _0x1aeb72;}return![];}if(_0x3936fa===_0x5c3a37(0x189)){print(_0x5c3a37(0x1b9)+c[_0x5c3a37(0x19e)]+_0x5c3a37(0x1c5)+c[_0x5c3a37(0x1ee)]);const _0x45c7e5=await runInstallArgs(_0x5c3a37(0x1aa),[_0x5c3a37(0x23e)]);return _0x45c7e5;}return![];}async function runDoctorChecks(_0x4c84fa=![]){const _0x3fc4ac=a0_0x48c01b;print(''),print('\x20\x20'+brandName()+'\x20'+c['muted']+'Doctor'+c[_0x3fc4ac(0x1ee)]),print('\x20\x20'+c[_0x3fc4ac(0x19e)]+'─'['repeat'](0x14)+c['reset']),print('');const _0x3f37bb=process[_0x3fc4ac(0x190)],_0x1291b8=parseInt(_0x3f37bb['slice'](0x1)),_0x45fb71=_0x1291b8>=0x12;_0x45fb71?print('\x20\x20'+icons[_0x3fc4ac(0x221)]+_0x3fc4ac(0x1af)+c['value']+_0x3f37bb+c[_0x3fc4ac(0x1ee)]):print('\x20\x20'+icons[_0x3fc4ac(0x225)]+'\x20Node.js\x20'+c[_0x3fc4ac(0x1c0)]+_0x3f37bb+c[_0x3fc4ac(0x1ee)]+'\x20'+c['error']+'—\x20requires\x20v18+'+c['reset']);let _0x196a98=![];try{await import(_0x3fc4ac(0x1e1)),_0x196a98=!![],print('\x20\x20'+icons['pass']+_0x3fc4ac(0x236)+c[_0x3fc4ac(0x19e)]+_0x3fc4ac(0x230)+c[_0x3fc4ac(0x1ee)]);}catch{print('\x20\x20'+icons[_0x3fc4ac(0x225)]+'\x20node-pty\x20'+c['error']+_0x3fc4ac(0x1b0)+c[_0x3fc4ac(0x1ee)]);}print(''),print('\x20\x20'+c[_0x3fc4ac(0x1d9)]+_0x3fc4ac(0x1f9)+c['reset']);const _0x1884cd=[];for(const _0xbd2aa4 of CLI_PROVIDERS){const _0x3316d2=detectProvider(_0xbd2aa4),_0x469153={'name':_0xbd2aa4[_0x3fc4ac(0x224)],'installed':_0x3316d2};if(_0x4c84fa&&_0x3316d2){let _0x2a3e12=_0xbd2aa4['binary'];if(_0xbd2aa4[_0x3fc4ac(0x194)])try{execSync(_0xbd2aa4[_0x3fc4ac(0x194)],{'stdio':_0x3fc4ac(0x20c)}),_0x2a3e12=_0xbd2aa4[_0x3fc4ac(0x194)]['split']('\x20')[0x0];}catch{_0xbd2aa4['fallbackDetectCmd']&&(_0x2a3e12=_0xbd2aa4['fallbackDetectCmd'][_0x3fc4ac(0x1db)]('\x20')[0x0]);}try{const _0x410d87=execSync(_0x2a3e12+_0x3fc4ac(0x220),{'stdio':[_0x3fc4ac(0x1f7),_0x3fc4ac(0x1f7),'pipe'],'timeout':0x1388});_0x469153[_0x3fc4ac(0x190)]=_0x410d87[_0x3fc4ac(0x1a5)]()[_0x3fc4ac(0x20f)]()[_0x3fc4ac(0x1db)]('\x0a')[0x0];}catch{_0x469153[_0x3fc4ac(0x190)]=null;}_0x469153[_0x3fc4ac(0x18e)]=getCommandPath(_0x2a3e12);}if(_0x3316d2){const _0x53b815=_0x4c84fa&&_0x469153[_0x3fc4ac(0x190)]?'\x20'+c[_0x3fc4ac(0x19e)]+'('+c['value']+_0x469153['version']+c[_0x3fc4ac(0x19e)]+')'+c[_0x3fc4ac(0x1ee)]:'',_0x49e80a=_0x4c84fa&&_0x469153['path']?'\x20'+c['muted']+'—\x20'+_0x469153[_0x3fc4ac(0x18e)]+c['reset']:'';print(_0x3fc4ac(0x1b9)+icons[_0x3fc4ac(0x221)]+'\x20'+_0xbd2aa4[_0x3fc4ac(0x224)]+_0x53b815+_0x49e80a);}else print(_0x3fc4ac(0x1b9)+icons[_0x3fc4ac(0x225)]+'\x20'+c['muted']+_0xbd2aa4['name']+c[_0x3fc4ac(0x1ee)]);_0x1884cd[_0x3fc4ac(0x1be)](_0x469153);}print('');const _0x4cdfa9=_0x1884cd[_0x3fc4ac(0x1c9)](_0x30aecb=>_0x30aecb['installed'])[_0x3fc4ac(0x23f)];return _0x4cdfa9>0x0?print('\x20\x20'+c['value']+_0x4cdfa9+'/'+_0x1884cd[_0x3fc4ac(0x23f)]+c[_0x3fc4ac(0x1ee)]+'\x20'+c['muted']+_0x3fc4ac(0x1fa)+c[_0x3fc4ac(0x1ee)]):print('\x20\x20'+icons[_0x3fc4ac(0x1d4)]+_0x3fc4ac(0x1d7)+brandName()+'.'),print(''),{'nodeOk':_0x45fb71,'ptyOk':_0x196a98,'providers':_0x1884cd};}async function firstRunWizard(){const _0x430470=a0_0x48c01b;printBanner(print);const {isNativeWindows:_0x100d8a,wslAvailable:_0x236792}=detectWindowsWsl();if(_0x100d8a&&_0x236792){print('\x20\x20'+icons[_0x430470(0x1d4)]+_0x430470(0x1ca)),print('\x20\x20\x20\x20\x20'+c['muted']+'AI\x20coding\x20CLIs\x20work\x20best\x20in\x20WSL2\x20(Linux\x20environment).'+c[_0x430470(0x1ee)]),print(_0x430470(0x1fc)),print(''),print('\x20\x20\x20\x20\x20\x20\x20wsl\x20-d\x20Ubuntu'),print('\x20\x20\x20\x20\x20\x20\x20npm\x20install\x20-g\x20colana'),print('\x20\x20\x20\x20\x20\x20\x20colana'),print('');const _0x1f79de=await ask('\x20\x20Continue\x20with\x20native\x20Windows\x20anyway?\x20[y/N]\x20');_0x1f79de['toLowerCase']()!=='y'&&(print(''),print(_0x430470(0x23d)),print(''),rl[_0x430470(0x214)](),process['exit'](0x0)),print('');}print('\x20\x20Checking\x20your\x20environment...');const _0x2763d3=await runDoctorChecks(![]);!_0x2763d3['nodeOk']&&(print(_0x430470(0x192)),process['exit'](0x1));!_0x2763d3[_0x430470(0x19c)]&&(print('\x20\x20\x20\x20\x20Try:\x20npm\x20rebuild\x20node-pty'),process['exit'](0x1));const _0x4cfce7=[],_0x2f1cd4=[];for(let _0x16502c=0x0;_0x16502c<CLI_PROVIDERS['length'];_0x16502c++){_0x2763d3['providers'][_0x16502c]['installed']?_0x4cfce7[_0x430470(0x1be)](CLI_PROVIDERS[_0x16502c]):_0x2f1cd4['push'](CLI_PROVIDERS[_0x16502c]);}print('');if(_0x2f1cd4[_0x430470(0x23f)]>0x0&&_0x4cfce7['length']>0x0){print('\x20\x20You\x20can\x20install\x20missing\x20CLIs\x20now\x20or\x20later\x20from\x20Settings.'),print('');for(const _0x51a0be of _0x2f1cd4){const _0x485625=await ask('\x20\x20Install\x20'+_0x51a0be[_0x430470(0x224)]+'?\x20('+_0x51a0be[_0x430470(0x1c6)]+_0x430470(0x1f5));_0x485625[_0x430470(0x1b3)]()==='y'&&(await installProvider(_0x51a0be),detectProvider(_0x51a0be)&&_0x4cfce7[_0x430470(0x1be)](_0x51a0be));}}else{if(_0x4cfce7[_0x430470(0x23f)]===0x0){print('\x20\x20'+icons[_0x430470(0x1d4)]+_0x430470(0x19d)+brandName()+'\x20requires\x20at\x20least\x20one\x20CLI\x20agent\x20to\x20run.'),print('');const _0x3b0dc9=CLI_PROVIDERS['find'](_0xbafc7=>_0xbafc7['recommended']);if(_0x3b0dc9){print('\x20\x20Recommended:\x20'+_0x3b0dc9['name']+_0x430470(0x21f));const _0xcdbc1f=await ask(_0x430470(0x242)+_0x3b0dc9[_0x430470(0x224)]+_0x430470(0x1a9));if(_0xcdbc1f['toLowerCase']()!=='n'){await installProvider(_0x3b0dc9);if(detectProvider(_0x3b0dc9))_0x4cfce7['push'](_0x3b0dc9);}}if(_0x4cfce7[_0x430470(0x23f)]===0x0){print(''),print('\x20\x20Choose\x20one\x20to\x20install:'),CLI_PROVIDERS[_0x430470(0x1c3)]((_0x51b563,_0x46748b)=>{const _0xdfc43c=_0x430470;print(_0xdfc43c(0x202)+(_0x46748b+0x1)+']\x20'+_0x51b563['name']+'\x20('+_0x51b563[_0xdfc43c(0x1c6)]+')');}),print('\x20\x20\x20\x20[0]\x20Skip\x20(you\x27ll\x20need\x20to\x20install\x20one\x20manually)'),print('');const _0x26f92b=await ask('\x20\x20>\x20'),_0x4eba7d=parseInt(_0x26f92b)-0x1;if(_0x4eba7d>=0x0&&_0x4eba7d<CLI_PROVIDERS['length']){await installProvider(CLI_PROVIDERS[_0x4eba7d]);if(detectProvider(CLI_PROVIDERS[_0x4eba7d]))_0x4cfce7[_0x430470(0x1be)](CLI_PROVIDERS[_0x4eba7d]);}}_0x4cfce7['length']===0x0&&(print(''),print('\x20\x20'+icons['warn']+_0x430470(0x20a)+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print(_0x430470(0x1a4)+c[_0x430470(0x19e)]+_0x430470(0x1a0)+c[_0x430470(0x1ee)]),print(''));}}_0x4cfce7['length']>0x0&&(print(''),print('\x20\x20'+icons['pass']+'\x20You\x27re\x20good\x20to\x20go!\x20'+c['value']+_0x4cfce7[_0x430470(0x23f)]+c[_0x430470(0x1ee)]+_0x430470(0x1da)),print(_0x430470(0x1d6)));print('');const _0x196eac=await ask(_0x430470(0x1c4));if(_0x196eac[_0x430470(0x1b3)]()!=='n')try{const {installService:_0x5755cf}=await import(toImportPath(a0_0x179155['join'](ROOT,_0x430470(0x204),_0x430470(0x1d8)))),_0x93d440=_0x5755cf();_0x93d440['success']?print('\x20\x20'+icons[_0x430470(0x221)]+'\x20Auto-start\x20enabled.\x20'+_0x93d440[_0x430470(0x1ba)]):(print('\x20\x20'+icons[_0x430470(0x1d4)]+_0x430470(0x196)+_0x93d440['message']),print(_0x430470(0x1ea)));}catch(_0x4e2c4b){print('\x20\x20'+icons['warn']+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0x4e2c4b['message']),print(_0x430470(0x1ea));}print(''),print(_0x430470(0x193)),print('\x20\x20Upgrade\x20anytime\x20from\x20Settings\x20for\x20unlimited\x20sessions.'),print(''),rl[_0x430470(0x214)]();}async function installProvider(_0x2e06e5){const _0x392e4d=a0_0x48c01b;if(_0x2e06e5[_0x392e4d(0x235)]&&!commandExistsSync(_0x2e06e5[_0x392e4d(0x235)])){if(_0x2e06e5[_0x392e4d(0x1a8)]&&commandExistsSync(_0x2e06e5[_0x392e4d(0x1a8)]))print('\x20\x20\x20\x20Using\x20'+_0x2e06e5[_0x392e4d(0x1a8)]+'\x20(fallback\x20for\x20'+_0x2e06e5[_0x392e4d(0x235)]+')');else{print('\x20\x20\x20\x20'+(_0x2e06e5['prereqName']||_0x2e06e5['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print(_0x392e4d(0x1a7)+(_0x2e06e5[_0x392e4d(0x1ed)]||_0x2e06e5['prereq'])+_0x392e4d(0x243));return;}}let _0x18ea2e=_0x2e06e5['installCmd'],_0x39eb6c=_0x2e06e5[_0x392e4d(0x1a2)],_0x321c4b='';if(_0x2e06e5[_0x392e4d(0x22e)]===_0x392e4d(0x1ce)){const _0x5a81d7=detectPythonVersion();if(_0x5a81d7&&_0x5a81d7['major']>=0x3&&_0x5a81d7[_0x392e4d(0x1dc)]>=0xd){print(_0x392e4d(0x1b9)+c[_0x392e4d(0x19e)]+'Python\x20'+_0x5a81d7['major']+'.'+_0x5a81d7['minor']+_0x392e4d(0x1ff)+c['reset']),print(_0x392e4d(0x1b9)+c['muted']+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c[_0x392e4d(0x1ee)]),_0x321c4b='python\x203.13';let _0x341881=commandExistsSync('uv');if(!_0x341881){print('\x20\x20\x20\x20'+c['muted']+_0x392e4d(0x18d)+c['reset']),_0x341881=await runInstall('pip\x20install\x20uv');if(!_0x341881)_0x341881=await runInstall(_0x392e4d(0x208));}if(_0x341881)_0x18ea2e=_0x392e4d(0x216),_0x39eb6c=null;else{print('\x20\x20\x20\x20'+icons[_0x392e4d(0x225)]+'\x20'+c[_0x392e4d(0x228)]+'Could\x20not\x20install\x20uv.'+c['reset']),printNextSteps(_0x2e06e5,_0x392e4d(0x19f));return;}}}print(_0x392e4d(0x237)+_0x2e06e5['name']+'...');let _0x469fec=await runInstall(_0x18ea2e);!_0x469fec&&_0x39eb6c&&(print(_0x392e4d(0x1e9)+_0x39eb6c+_0x392e4d(0x1ef)),_0x469fec=await runInstall(_0x39eb6c));if(_0x469fec)print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x2e06e5[_0x392e4d(0x224)]+'\x20installed');else{if(_0x2e06e5[_0x392e4d(0x1c2)]==='npm'){print('\x20\x20\x20\x20'+c['muted']+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c['reset']);const _0x2153fb=await tryInstallBuildTools();_0x2153fb&&(print('\x20\x20\x20\x20'+c['muted']+'Retrying\x20'+_0x2e06e5['name']+'\x20install...'+c['reset']),_0x469fec=await runInstall(_0x18ea2e));if(_0x469fec){print('\x20\x20\x20\x20'+icons[_0x392e4d(0x221)]+'\x20'+_0x2e06e5[_0x392e4d(0x224)]+_0x392e4d(0x1ad));return;}_0x321c4b=_0x321c4b||'build\x20tools';}print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c['error']+_0x392e4d(0x222)+c['reset']),printNextSteps(_0x2e06e5,_0x321c4b);}}function printNextSteps(_0xf099aa,_0x3dd509=''){const _0x3c0ce7=a0_0x48c01b,_0x2cfdee=getCliNextSteps(_0xf099aa,_0x3dd509);print(''),print(_0x3c0ce7(0x1b9)+c['heading']+'Next\x20steps\x20to\x20resolve:'+c[_0x3c0ce7(0x1ee)]),_0x2cfdee[_0x3c0ce7(0x1c3)]((_0x5c33a3,_0x36ea64)=>{const _0x4ae8ea=_0x3c0ce7;print(_0x4ae8ea(0x1b9)+c['muted']+(_0x36ea64+0x1)+'.'+c['reset']+'\x20'+_0x5c33a3);}),print('');}async function startServer(){const _0x2a81e3=a0_0x48c01b,_0x2e2243=a0_0x179155['join'](ROOT,_0x2a81e3(0x204),_0x2a81e3(0x1ab));try{const _0x36fb25=await import(toImportPath(_0x2e2243));return _0x36fb25;}catch(_0x56cda8){console[_0x2a81e3(0x228)]('Failed\x20to\x20start\x20server:\x20'+_0x56cda8['message']),process['exit'](0x1);}}function openBrowser(_0x248675){const _0x1ce808=a0_0x48c01b,_0xd9199a=process['platform'];try{if(_0xd9199a===_0x1ce808(0x189))execSync(_0x1ce808(0x1bb)+_0x248675+'\x22',{'stdio':'ignore'});else{if(_0xd9199a===_0x1ce808(0x1f3))execSync(_0x1ce808(0x1e5)+_0x248675+'\x22',{'stdio':_0x1ce808(0x20c)});else try{execSync(_0x1ce808(0x1fb)+_0x248675+'\x22',{'stdio':'ignore'});}catch{try{execSync('cmd.exe\x20/c\x20start\x20\x22\x22\x20\x22'+_0x248675+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}async function main(){const _0x155006=a0_0x48c01b;if((process['argv']['includes']('--version')||process['argv']['includes']('-v'))&&!process['argv'][_0x155006(0x1d1)]('--help')&&!process['argv']['includes']('-h')&&process[_0x155006(0x1de)][0x2]!==_0x155006(0x1cf)){try{const _0x48820b=JSON[_0x155006(0x1d2)](a0_0x3fe89c[_0x155006(0x229)](a0_0x179155['join'](ROOT,'package.json'),_0x155006(0x20d)));print(brandName()+'\x20'+c['muted']+'v'+_0x48820b[_0x155006(0x190)]+c[_0x155006(0x1ee)]);}catch{print(brandName()+'\x20'+c['muted']+'v0.0.0'+c[_0x155006(0x1ee)]);}process['exit'](0x0);}if(process['argv']['includes']('--help')||process['argv'][_0x155006(0x1d1)]('-h')){const _0x2d56ae=JSON[_0x155006(0x1d2)](a0_0x3fe89c[_0x155006(0x229)](a0_0x179155[_0x155006(0x1e4)](ROOT,'package.json'),_0x155006(0x20d)));print('\x0a'+c[_0x155006(0x1d9)]+'Usage:'+c[_0x155006(0x1ee)]+'\x20'+c['cmd']+_0x155006(0x191)+c[_0x155006(0x1ee)]+'\x20[options]\x20[command]\x0a\x0a'+c['heading']+'Commands:'+c[_0x155006(0x1ee)]+'\x0a\x20\x20'+c[_0x155006(0x1bd)]+'colana'+c[_0x155006(0x1ee)]+'\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[_0x155006(0x1bd)]+_0x155006(0x227)+c[_0x155006(0x1ee)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20diagnostic\x20checks\x0a\x20\x20'+c[_0x155006(0x1bd)]+_0x155006(0x18a)+c[_0x155006(0x1ee)]+_0x155006(0x1d5)+c['cmd']+_0x155006(0x1b7)+c[_0x155006(0x1ee)]+_0x155006(0x23c)+c['cmd']+_0x155006(0x1b4)+c[_0x155006(0x1ee)]+'\x20Remove\x20background\x20service\x0a\x20\x20'+c[_0x155006(0x1bd)]+_0x155006(0x1a6)+c['reset']+_0x155006(0x218)+c['cmd']+'colana\x20service\x20logs'+c['reset']+'\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)\x0a\x0a'+c['heading']+_0x155006(0x240)+c[_0x155006(0x1ee)]+'\x0a\x20\x20'+c['cmd']+_0x155006(0x1a1)+c['reset']+',\x20'+c['cmd']+'-v'+c[_0x155006(0x1ee)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c[_0x155006(0x1bd)]+'--help'+c[_0x155006(0x1ee)]+',\x20'+c['cmd']+'-h'+c[_0x155006(0x1ee)]+_0x155006(0x1cb)+c[_0x155006(0x1bd)]+'--port'+c[_0x155006(0x1ee)]+'\x20<number>\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20specific\x20port\x20'+c['muted']+'(default:\x20auto-detect\x20from\x209876)'+c['reset']+'\x0a\x0a'+c['heading']+'Examples:'+c[_0x155006(0x1ee)]+'\x0a\x20\x20'+c['muted']+'$'+c['reset']+'\x20'+c['cmd']+_0x155006(0x191)+c['reset']+_0x155006(0x231)+c[_0x155006(0x19e)]+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20doctor'+c['reset']+_0x155006(0x18c)+c['muted']+'$'+c[_0x155006(0x1ee)]+'\x20'+c[_0x155006(0x1bd)]+'colana\x20doctor\x20--verbose'+c['reset']+'\x20Show\x20detailed\x20diagnostic\x20info\x0a\x20\x20'+c['muted']+'$'+c['reset']+'\x20'+c[_0x155006(0x1bd)]+_0x155006(0x1b7)+c['reset']+_0x155006(0x242)+brandName()+'\x20as\x20a\x20background\x20service\x0a\x20\x20'+c[_0x155006(0x19e)]+'$'+c['reset']+'\x20'+c[_0x155006(0x1bd)]+_0x155006(0x1ac)+c['reset']+'\x20\x20List\x20all\x20license\x20keys\x0a\x0a'+c['muted']+'v'+_0x2d56ae[_0x155006(0x190)]+c['reset']+'\x20'+c[_0x155006(0x19e)]+'—'+c['reset']+'\x20'+c['url']+_0x155006(0x1eb)+c[_0x155006(0x1ee)]+'\x0a'),process['exit'](0x0);}if(process[_0x155006(0x1de)][0x2]===_0x155006(0x1cf)){const _0x41c1e6=process[_0x155006(0x1de)][_0x155006(0x1d1)](_0x155006(0x205))||process[_0x155006(0x1de)]['includes']('-v'),{isNativeWindows:_0x32c623,wslAvailable:_0x3c5ab7}=detectWindowsWsl();_0x32c623&&_0x3c5ab7&&(print(''),print('\x20\x20'+icons[_0x155006(0x1d4)]+_0x155006(0x210)),print('\x20\x20\x20\x20\x20'+c[_0x155006(0x19e)]+_0x155006(0x1f8)+brandName()+_0x155006(0x1f1)+c[_0x155006(0x1ee)]),print('')),await runDoctorChecks(_0x41c1e6),process['exit'](0x0);}if(process[_0x155006(0x1de)][0x2]==='admin'){const _0x303ec3=a0_0x179155[_0x155006(0x1e4)](__dirname,'admin.js');process['argv'][_0x155006(0x232)](0x2,0x1),await import(toImportPath(_0x303ec3));return;}if(process['argv'][0x2]===_0x155006(0x219)){const {installService:_0x3f6622,uninstallService:_0x5aa714,getServiceStatus:_0x4e8a5a,getServiceLogs:_0x1c21c4}=await import(toImportPath(a0_0x179155[_0x155006(0x1e4)](ROOT,_0x155006(0x204),_0x155006(0x1d8)))),_0x137267=process[_0x155006(0x1de)][0x3];switch(_0x137267){case'install':{print(''),print(_0x155006(0x199)+brandName()+'\x20as\x20a\x20background\x20service...'),print('');const _0x34df70=_0x3f6622();print(_0x34df70[_0x155006(0x211)]?'\x20\x20'+icons[_0x155006(0x221)]+'\x20'+_0x34df70['message']:'\x20\x20'+icons[_0x155006(0x225)]+'\x20'+_0x34df70['message']),print('');_0x34df70[_0x155006(0x211)]&&(print('\x20\x20'+brandName()+'\x20will\x20now\x20auto-start\x20on\x20login.'),print('\x20\x20'+c[_0x155006(0x19e)]+_0x155006(0x1e0)+c['reset']+'\x20'+c['url']+_0x155006(0x23b)+c['reset']));print('');break;}case'uninstall':{print(''),print(_0x155006(0x1e6)+brandName()+_0x155006(0x22f));const _0x105195=_0x5aa714();print(_0x105195[_0x155006(0x211)]?'\x20\x20'+icons['pass']+'\x20'+_0x105195['message']:'\x20\x20'+icons[_0x155006(0x225)]+'\x20'+_0x105195['message']),print('');break;}case'status':{print('');const _0x4b8240=_0x4e8a5a();print('\x20\x20'+c['muted']+'Platform:'+c[_0x155006(0x1ee)]+'\x20\x20'+c['value']+_0x4b8240[_0x155006(0x1ec)]+c['reset']),print('\x20\x20'+c['muted']+_0x155006(0x1b6)+c['reset']+'\x20'+(_0x4b8240['installed']?c['success']+_0x155006(0x1cd)+c[_0x155006(0x1ee)]:c[_0x155006(0x19e)]+'no'+c['reset'])),print('\x20\x20'+c[_0x155006(0x19e)]+_0x155006(0x21d)+c['reset']+_0x155006(0x209)+(_0x4b8240[_0x155006(0x1f0)]?c[_0x155006(0x211)]+_0x155006(0x1cd)+c['reset']:c[_0x155006(0x19e)]+'no'+c['reset'])),print('');break;}case _0x155006(0x1f6):{const _0x2fc9bf=_0x1c21c4();print(_0x2fc9bf);break;}default:print(''),print('\x20\x20'+c['heading']+_0x155006(0x22a)+c['reset']+'\x20'+c[_0x155006(0x1bd)]+_0x155006(0x1f2)+c['reset']+'\x20<install|uninstall|status|logs>'),print(''),print('\x20\x20'+c[_0x155006(0x1d9)]+'Commands:'+c['reset']),print('\x20\x20\x20\x20'+c['cmd']+_0x155006(0x1b1)+c['reset']+'\x20\x20\x20\x20\x20Install\x20as\x20auto-start\x20background\x20service'),print('\x20\x20\x20\x20'+c[_0x155006(0x1bd)]+'uninstall'+c['reset']+_0x155006(0x1a3)),print('\x20\x20\x20\x20'+c[_0x155006(0x1bd)]+'status'+c[_0x155006(0x1ee)]+_0x155006(0x21e)),print(_0x155006(0x1b9)+c[_0x155006(0x1bd)]+_0x155006(0x1f6)+c[_0x155006(0x1ee)]+_0x155006(0x200)),print('');}process[_0x155006(0x21b)](0x0);}!a0_0x3fe89c['existsSync'](DATA_DIR)&&a0_0x3fe89c['mkdirSync'](DATA_DIR,{'recursive':!![]});const _0x2f44e9=a0_0x179155['join'](DATA_DIR,_0x155006(0x223)),_0x5db602=!a0_0x3fe89c['existsSync'](_0x2f44e9);_0x5db602&&(await firstRunWizard(),a0_0x3fe89c[_0x155006(0x21c)](_0x2f44e9,new Date()[_0x155006(0x1dd)]())),print('\x20\x20'+icons[_0x155006(0x241)]+_0x155006(0x1b8)+brandName()+_0x155006(0x1ef)),await startServer(),setTimeout(()=>{const _0x41964d=process['env']['COLANA_PORT']||0x2694,_0x4a4161='http://localhost:'+_0x41964d;openBrowser(_0x4a4161);},0xbb8);}main()['catch'](_0x3b3351=>{const _0x316379=a0_0x48c01b;console[_0x316379(0x228)]('Colana\x20failed\x20to\x20start:\x20'+_0x3b3351['message']),process['exit'](0x1);});
|