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