colana 1.0.0-beta.96 → 1.0.0-beta.97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/bin/admin.js +1 -1
  2. package/bin/colana.js +1 -1
  3. package/package.json +1 -1
  4. package/public/dist/app.js +1 -1
  5. package/public/vendor/xterm/xterm.css +81 -5
  6. package/public/vendor/xterm/xterm.js +1 -1
  7. package/public/vendor/xterm-addon-fit/xterm-addon-fit.js +2 -2
  8. package/public/vendor/xterm-addon-search/xterm-addon-search.js +2 -2
  9. package/public/vendor/xterm-addon-unicode11/xterm-addon-unicode11.js +2 -2
  10. package/public/vendor/xterm-addon-web-links/xterm-addon-web-links.js +2 -2
  11. package/public/wizard.js +1 -1
  12. package/server/admin.js +1 -1
  13. package/server/agent/index.js +1 -1
  14. package/server/agent/manager.js +1 -1
  15. package/server/agent-control-routes.js +1 -1
  16. package/server/analytics-routes.js +1 -1
  17. package/server/analytics.js +1 -1
  18. package/server/auth.js +1 -1
  19. package/server/auto-resume.js +1 -1
  20. package/server/blueprint-exporter.js +1 -1
  21. package/server/blueprint-importer.js +1 -1
  22. package/server/blueprint-routes.js +1 -1
  23. package/server/blueprint-store.js +1 -1
  24. package/server/blueprint-sync.js +1 -1
  25. package/server/brand.js +1 -1
  26. package/server/checkpoint-store.js +1 -1
  27. package/server/config.js +1 -1
  28. package/server/context-sync.js +1 -1
  29. package/server/db.js +1 -1
  30. package/server/dependency-detector.js +1 -1
  31. package/server/diagnostics-routes.js +1 -1
  32. package/server/error-recovery.js +1 -1
  33. package/server/errors.js +1 -1
  34. package/server/file-browser.js +1 -1
  35. package/server/git-ops.js +1 -1
  36. package/server/gog-auth.js +1 -1
  37. package/server/index.js +1 -1
  38. package/server/installer/index.js +1 -1
  39. package/server/installer/manager.js +1 -1
  40. package/server/integration-hub.js +1 -1
  41. package/server/integration-routes.js +1 -1
  42. package/server/key-manager.js +1 -1
  43. package/server/license-routes.js +1 -1
  44. package/server/license.js +1 -1
  45. package/server/logger.js +1 -1
  46. package/server/openclaw-config.js +1 -1
  47. package/server/permission-mcp.js +1 -1
  48. package/server/permission-routes.js +1 -1
  49. package/server/personal-agent-routes.js +1 -1
  50. package/server/personal-chat-store.js +1 -1
  51. package/server/platform.js +1 -1
  52. package/server/port-finder.js +1 -1
  53. package/server/preflight.js +1 -1
  54. package/server/project-config.js +1 -1
  55. package/server/project-routes.js +1 -1
  56. package/server/project-store.js +1 -1
  57. package/server/pty/index.js +1 -1
  58. package/server/pty/manager.js +1 -1
  59. package/server/runtime-policy.js +1 -1
  60. package/server/server-control-routes.js +1 -1
  61. package/server/service-manager.js +1 -1
  62. package/server/session-routes.js +1 -1
  63. package/server/session-store.js +1 -1
  64. package/server/settings-routes.js +1 -1
  65. package/server/settings-store.js +1 -1
  66. package/server/snippet-routes.js +1 -1
  67. package/server/snippet-store.js +1 -1
  68. package/server/spawn-env.js +1 -1
  69. package/server/system-info.js +1 -1
  70. package/server/template-routes.js +1 -1
  71. package/server/template-store.js +1 -1
  72. package/server/updater.js +1 -1
  73. package/server/usage-tracker.js +1 -1
  74. package/server/validation.js +1 -1
  75. package/server/webhook-routes.js +1 -1
  76. package/server/wizard-routes.js +1 -1
  77. package/server/worktree-manager.js +1 -1
package/bin/admin.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x4a2f90=a0_0x2b07;(function(_0x59c68d,_0x580b33){const _0x9a6b30=a0_0x2b07,_0x57fc3b=_0x59c68d();while(!![]){try{const _0x27b1e7=parseInt(_0x9a6b30(0x1b3))/0x1+parseInt(_0x9a6b30(0x166))/0x2*(parseInt(_0x9a6b30(0x172))/0x3)+parseInt(_0x9a6b30(0x180))/0x4+-parseInt(_0x9a6b30(0x18e))/0x5+parseInt(_0x9a6b30(0x17b))/0x6*(parseInt(_0x9a6b30(0x173))/0x7)+-parseInt(_0x9a6b30(0x1a3))/0x8+parseInt(_0x9a6b30(0x185))/0x9*(-parseInt(_0x9a6b30(0x175))/0xa);if(_0x27b1e7===_0x580b33)break;else _0x57fc3b['push'](_0x57fc3b['shift']());}catch(_0x308bc2){_0x57fc3b['push'](_0x57fc3b['shift']());}}}(a0_0x3011,0x59ae4));import a0_0x29bfcc from'fs';import a0_0x23acd9 from'path';import a0_0x655be5 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x23acd9[a0_0x4a2f90(0x183)](fileURLToPath(import.meta.url));function parseArgs(_0x2b9fb8){const _0x117a62=a0_0x4a2f90,_0x364f5a=_0x2b9fb8[_0x117a62(0x1b8)](0x2),_0x2a0543=_0x364f5a[0x0],_0xd05f35=[],_0x222a87={};for(let _0x258b77=0x1;_0x258b77<_0x364f5a['length'];_0x258b77++){if(_0x364f5a[_0x258b77][_0x117a62(0x1c4)]('--')){let _0x410253=_0x364f5a[_0x258b77]['slice'](0x2),_0x241e32;const _0x1892c9=_0x410253['indexOf']('=');_0x1892c9!==-0x1?(_0x241e32=_0x410253['slice'](_0x1892c9+0x1),_0x410253=_0x410253[_0x117a62(0x1b8)](0x0,_0x1892c9)):_0x241e32=_0x258b77+0x1<_0x364f5a[_0x117a62(0x18b)]&&!_0x364f5a[_0x258b77+0x1][_0x117a62(0x1c4)]('--')?_0x364f5a[++_0x258b77]:_0x117a62(0x1b9),_0x222a87[_0x410253]=_0x241e32;}else _0xd05f35['push'](_0x364f5a[_0x258b77]);}return{'command':_0x2a0543,'flags':_0x222a87,'positional':_0xd05f35};}function maskKey(_0x3561df){const _0xbdfe70=a0_0x4a2f90;if(!_0x3561df||_0x3561df['length']<=0x8)return _0xbdfe70(0x165);return _0x3561df[_0xbdfe70(0x1b8)](0x0,0x4)+_0xbdfe70(0x165);}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;function a0_0x2b07(_0x322f34,_0x4bfcdf){_0x322f34=_0x322f34-0x165;const _0x3011cb=a0_0x3011();let _0x2b07c0=_0x3011cb[_0x322f34];if(a0_0x2b07['qYPJIC']===undefined){var _0x13e74e=function(_0x4bb2ab){const _0x76f7e0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x29bfcc='',_0x23acd9='';for(let _0x655be5=0x0,_0x2b9fb8,_0x364f5a,_0x2a0543=0x0;_0x364f5a=_0x4bb2ab['charAt'](_0x2a0543++);~_0x364f5a&&(_0x2b9fb8=_0x655be5%0x4?_0x2b9fb8*0x40+_0x364f5a:_0x364f5a,_0x655be5++%0x4)?_0x29bfcc+=String['fromCharCode'](0xff&_0x2b9fb8>>(-0x2*_0x655be5&0x6)):0x0){_0x364f5a=_0x76f7e0['indexOf'](_0x364f5a);}for(let _0xd05f35=0x0,_0x222a87=_0x29bfcc['length'];_0xd05f35<_0x222a87;_0xd05f35++){_0x23acd9+='%'+('00'+_0x29bfcc['charCodeAt'](_0xd05f35)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x23acd9);};a0_0x2b07['QTeOoy']=_0x13e74e,a0_0x2b07['pPsvgP']={},a0_0x2b07['qYPJIC']=!![];}const _0x1dfb15=_0x3011cb[0x0],_0x9bbd17=_0x322f34+_0x1dfb15,_0x8bc1eb=a0_0x2b07['pPsvgP'][_0x9bbd17];return!_0x8bc1eb?(_0x2b07c0=a0_0x2b07['QTeOoy'](_0x2b07c0),a0_0x2b07['pPsvgP'][_0x9bbd17]=_0x2b07c0):_0x2b07c0=_0x8bc1eb,_0x2b07c0;}async function findRunningServer(){const _0x3b36ef=a0_0x4a2f90;for(let _0x3cbfed=0x0;_0x3cbfed<MAX_PORT_SCAN;_0x3cbfed++){const _0x21bf1e=DEFAULT_PORT+_0x3cbfed;try{const _0x160b6a=await fetch(_0x3b36ef(0x1bc)+_0x21bf1e+_0x3b36ef(0x19f),{'signal':AbortSignal[_0x3b36ef(0x198)](0x1f4)});if(_0x160b6a['ok']){const _0x23e224=await _0x160b6a['json']();if(_0x23e224['status']==='ok')return _0x3b36ef(0x1bc)+_0x21bf1e;}}catch{}}return null;}async function createKeyViaApi(_0x5df69d,_0x4b518f){const _0x4918b3=a0_0x4a2f90,_0x442073=await fetch(_0x5df69d+_0x4918b3(0x177),{'method':_0x4918b3(0x168),'headers':{'Content-Type':_0x4918b3(0x1ab)},'body':JSON[_0x4918b3(0x18a)](_0x4b518f)});if(!_0x442073['ok']){const _0x4f975c=await _0x442073[_0x4918b3(0x1ba)]()['catch'](()=>({'error':_0x4918b3(0x199)+_0x442073['status']}));throw new Error(_0x4f975c['error']||_0x4918b3(0x1a4)+_0x442073[_0x4918b3(0x16b)]);}return _0x442073['json']();}async function listKeysViaApi(_0x4c466b,_0x1c534a){const _0x1463a6=a0_0x4a2f90,_0x246a8e=new URLSearchParams();if(_0x1c534a[_0x1463a6(0x1af)])_0x246a8e['set'](_0x1463a6(0x1af),_0x1c534a['type']);if(_0x1c534a[_0x1463a6(0x16b)])_0x246a8e[_0x1463a6(0x171)]('status',_0x1c534a[_0x1463a6(0x16b)]);const _0x8ce117=_0x246a8e['toString'](),_0x47a75f=await fetch(_0x4c466b+_0x1463a6(0x177)+(_0x8ce117?'?'+_0x8ce117:''));if(!_0x47a75f['ok']){const _0x1e70f9=await _0x47a75f['json']()['catch'](()=>({'error':_0x1463a6(0x199)+_0x47a75f['status']}));throw new Error(_0x1e70f9[_0x1463a6(0x1c7)]||'Server\x20responded\x20with\x20'+_0x47a75f[_0x1463a6(0x16b)]);}return _0x47a75f['json']();}async function revokeKeyViaApi(_0x34c6c4,_0x3db176){const _0x18f07e=a0_0x4a2f90,_0x3aaee8=await fetch(_0x34c6c4+_0x18f07e(0x1b6)+_0x3db176,{'method':'DELETE'});if(!_0x3aaee8['ok']){const _0x5245cf=await _0x3aaee8[_0x18f07e(0x1ba)]()[_0x18f07e(0x17c)](()=>({'error':'HTTP\x20'+_0x3aaee8['status']}));throw new Error(_0x5245cf['error']||'Server\x20responded\x20with\x20'+_0x3aaee8[_0x18f07e(0x16b)]);}return _0x3aaee8[_0x18f07e(0x1ba)]();}let _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0xdc02cb}=await import('../server/db.js');await _0xdc02cb(),_dbReady=!![];}async function createKey(_0x65cd5e){const _0x28cfc9=a0_0x4a2f90,_0x3fb89f=_0x65cd5e['name'],_0x195cbf=_0x65cd5e[_0x28cfc9(0x1af)]||'staff',_0x46c880=_0x65cd5e['email']||null,_0x3e9764=_0x65cd5e[_0x28cfc9(0x188)]||null;if(!_0x3fb89f){console['error'](_0x28cfc9(0x1a0)+icons['fail']+'\x20'+c[_0x28cfc9(0x1c7)]+_0x28cfc9(0x1bf)+c['reset']+'\x0a'),console[_0x28cfc9(0x1c7)]('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process[_0x28cfc9(0x19c)](0x1);return;}const _0x4d6aee=['admin','staff',_0x28cfc9(0x1c3)];if(!_0x4d6aee['includes'](_0x195cbf)){console[_0x28cfc9(0x1c7)]('\x0a\x20\x20'+icons[_0x28cfc9(0x18c)]+'\x20'+c[_0x28cfc9(0x1c7)]+'ERROR:\x20Invalid\x20type\x20\x22'+_0x195cbf+'\x22.\x20Must\x20be\x20one\x20of:\x20'+_0x4d6aee[_0x28cfc9(0x1be)](',\x20')+c[_0x28cfc9(0x1b2)]+'\x0a'),process[_0x28cfc9(0x19c)](0x1);return;}const _0x34edc5=await findRunningServer();let _0x56bcd5;if(_0x34edc5)try{_0x56bcd5=await createKeyViaApi(_0x34edc5,{'name':_0x3fb89f,'type':_0x195cbf,'email':_0x46c880||undefined,'expires':_0x3e9764||undefined});}catch(_0x1f29e2){console['error']('\x0a\x20\x20'+icons[_0x28cfc9(0x18c)]+'\x20'+c[_0x28cfc9(0x1c7)]+_0x1f29e2['message']+c[_0x28cfc9(0x1b2)]+'\x20'+c[_0x28cfc9(0x1b4)]+_0x28cfc9(0x190)+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {generateKey:_0x1f45f0}=await import('../server/key-manager.js');try{_0x56bcd5=_0x1f45f0(_0x3fb89f,_0x195cbf,_0x46c880,_0x3e9764);}catch(_0x486d3f){console['error'](_0x28cfc9(0x1a0)+icons['fail']+'\x20'+c[_0x28cfc9(0x1c7)]+_0x486d3f['message']+c[_0x28cfc9(0x1b2)]+'\x0a'),process[_0x28cfc9(0x19c)](0x1);return;}}if(!_0x56bcd5||!_0x56bcd5['name']){console[_0x28cfc9(0x1c7)](_0x28cfc9(0x1a0)+icons[_0x28cfc9(0x18c)]+'\x20'+c[_0x28cfc9(0x1c7)]+_0x28cfc9(0x16e)+c[_0x28cfc9(0x1b2)]+'\x0a'),process[_0x28cfc9(0x19c)](0x1);return;}console['log'](''),console['log']('\x20\x20'+icons[_0x28cfc9(0x1a8)]+_0x28cfc9(0x1b1)),console[_0x28cfc9(0x17a)]('\x20\x20'+c['muted']+'─'[_0x28cfc9(0x17e)](0x28)+c[_0x28cfc9(0x1b2)]),console[_0x28cfc9(0x17a)]('\x20\x20\x20\x20'+c[_0x28cfc9(0x1b4)]+'Name:'+c['reset']+_0x28cfc9(0x197)+c['value']+_0x56bcd5[_0x28cfc9(0x1c2)]+c['reset']),console['log'](_0x28cfc9(0x197)+c['muted']+_0x28cfc9(0x181)+c[_0x28cfc9(0x1b2)]+_0x28cfc9(0x197)+c['value']+_0x56bcd5['type']+c[_0x28cfc9(0x1b2)]),console[_0x28cfc9(0x17a)]('\x20\x20\x20\x20'+c[_0x28cfc9(0x1b4)]+'ID:'+c[_0x28cfc9(0x1b2)]+'\x20\x20\x20\x20\x20\x20'+c[_0x28cfc9(0x1c5)]+_0x56bcd5['id']+c['reset']),console['log'](_0x28cfc9(0x197)+c['muted']+'Key:'+c['reset']+_0x28cfc9(0x16d)+c['warn']+_0x56bcd5[_0x28cfc9(0x1c6)]+c['reset']),console['log']('\x20\x20'+c[_0x28cfc9(0x1b4)]+'─'['repeat'](0x28)+c['reset']),console['log']('\x20\x20'+c['warn']+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c[_0x28cfc9(0x1b2)]),_0x34edc5?console['log']('\x20\x20'+c[_0x28cfc9(0x1b4)]+_0x28cfc9(0x1bb)+c['reset']):console[_0x28cfc9(0x17a)]('\x20\x20'+c['muted']+_0x28cfc9(0x16a)+c['reset']),console['log']('');}async function listKeysCmd(_0x4e7055){const _0x2a3b52=a0_0x4a2f90,_0x8a22ab={};if(_0x4e7055['type'])_0x8a22ab['type']=_0x4e7055['type'];if(_0x4e7055['status'])_0x8a22ab['status']=_0x4e7055['status'];const _0x404b24=await findRunningServer();let _0x39b501;if(_0x404b24)try{_0x39b501=await listKeysViaApi(_0x404b24,_0x8a22ab);}catch(_0x4565d7){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x2a3b52(0x1c7)]+_0x4565d7['message']+c[_0x2a3b52(0x1b2)]+'\x20'+c['muted']+'(via\x20server)'+c[_0x2a3b52(0x1b2)]+'\x0a'),process[_0x2a3b52(0x19c)](0x1);return;}else{await ensureDb();const {listKeys:_0x555f95}=await import('../server/key-manager.js');_0x39b501=_0x555f95(_0x8a22ab);}if(!_0x39b501||!_0x39b501['keys']||!_0x39b501['keys']['length']){console[_0x2a3b52(0x17a)](_0x2a3b52(0x191));return;}console['log'](''),console[_0x2a3b52(0x17a)]('\x20\x20'+c[_0x2a3b52(0x1a6)]+'License\x20Keys:'+c['reset']),console[_0x2a3b52(0x17a)]('\x20\x20'+c[_0x2a3b52(0x1b4)]+'─'['repeat'](0x50)+c['reset']),console[_0x2a3b52(0x17a)]('\x20\x20'+c[_0x2a3b52(0x1b4)]+'ID'['padEnd'](0xa)+_0x2a3b52(0x174)[_0x2a3b52(0x193)](0x14)+_0x2a3b52(0x179)['padEnd'](0xa)+_0x2a3b52(0x1a2)['padEnd'](0xa)+_0x2a3b52(0x186)['padEnd'](0xf)+'Created'+c['reset']),console['log']('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x2a3b52(0x1b2)]);for(const _0x3b61bd of _0x39b501[_0x2a3b52(0x187)]){const _0x2f50e2=(_0x3b61bd['id']||'')['slice'](0x0,0x8),_0x232576=(_0x3b61bd['name']||'')[_0x2a3b52(0x1b8)](0x0,0x12)['padEnd'](0x14),_0x105a96=(_0x3b61bd['type']||'')[_0x2a3b52(0x193)](0xa),_0x2c2baf=(_0x3b61bd['status']||'')['padEnd'](0xa),_0x5f50c9=(_0x3b61bd[_0x2a3b52(0x19b)]?new Date(_0x3b61bd[_0x2a3b52(0x19b)])['toLocaleDateString']():'Never')['padEnd'](0xf),_0x2bc7a3=_0x3b61bd[_0x2a3b52(0x170)]?new Date(_0x3b61bd[_0x2a3b52(0x170)])[_0x2a3b52(0x1c1)]():'-';console['log']('\x20\x20'+_0x2f50e2['padEnd'](0xa)+_0x232576+_0x105a96+_0x2c2baf+_0x5f50c9+_0x2bc7a3);}console[_0x2a3b52(0x17a)]('\x20\x20'+c[_0x2a3b52(0x1b4)]+'─'[_0x2a3b52(0x17e)](0x50)+c[_0x2a3b52(0x1b2)]),console[_0x2a3b52(0x17a)]('\x20\x20'+c[_0x2a3b52(0x1b4)]+'Total:\x20'+_0x39b501['keys']['length']+'\x20key(s)'+c['reset']+'\x0a');}async function revokeKeyCmd(_0x57ce2d){const _0x2146a0=a0_0x4a2f90,_0x31fef7=_0x57ce2d[0x0];if(!_0x31fef7){console[_0x2146a0(0x1c7)]('\x0a\x20\x20'+icons[_0x2146a0(0x18c)]+'\x20'+c[_0x2146a0(0x1c7)]+'ERROR:\x20Key\x20ID\x20is\x20required.'+c[_0x2146a0(0x1b2)]+'\x0a'),console[_0x2146a0(0x1c7)](_0x2146a0(0x184)),process['exit'](0x1);return;}const _0x3eb175=await findRunningServer();if(_0x3eb175)try{await revokeKeyViaApi(_0x3eb175,_0x31fef7),console['log']('\x0a\x20\x20'+icons[_0x2146a0(0x1a8)]+_0x2146a0(0x1c8)+c[_0x2146a0(0x1c5)]+_0x31fef7+c['reset']+_0x2146a0(0x167));}catch(_0x13cc69){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x2146a0(0x1c7)]+_0x13cc69['message']+c[_0x2146a0(0x1b2)]+'\x20'+c[_0x2146a0(0x1b4)]+_0x2146a0(0x190)+c['reset']+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x2be307}=await import(_0x2146a0(0x176));try{_0x2be307(_0x31fef7),console[_0x2146a0(0x17a)]('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x31fef7+c[_0x2146a0(0x1b2)]+_0x2146a0(0x167));}catch(_0x143314){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x143314['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}}function showHelp(){const _0x5a46eb=a0_0x4a2f90;console['log'](_0x5a46eb(0x1a0)+brandName()+'\x20'+c[_0x5a46eb(0x1b4)]+_0x5a46eb(0x195)+c[_0x5a46eb(0x1b2)]+_0x5a46eb(0x19e)+c[_0x5a46eb(0x1a6)]+'Usage:'+c['reset']+_0x5a46eb(0x1bd)+c[_0x5a46eb(0x19a)]+_0x5a46eb(0x1aa)+c[_0x5a46eb(0x1b2)]+_0x5a46eb(0x192)+c[_0x5a46eb(0x19a)]+_0x5a46eb(0x1c0)+c[_0x5a46eb(0x1b2)]+_0x5a46eb(0x1a7)+c['cmd']+'colana\x20admin\x20create-key'+c[_0x5a46eb(0x1b2)]+_0x5a46eb(0x16c)+c[_0x5a46eb(0x1b4)]+'--name\x20\x22Name\x22'+c[_0x5a46eb(0x1b2)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Recipient\x20name\x20(required)\x0a\x20\x20\x20\x20\x20\x20'+c[_0x5a46eb(0x1b4)]+'--type\x20staff|admin|beta'+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']+'--email\x20user@example.com'+c[_0x5a46eb(0x1b2)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Email\x20(optional)\x0a\x20\x20\x20\x20\x20\x20'+c[_0x5a46eb(0x1b4)]+_0x5a46eb(0x18d)+c['reset']+_0x5a46eb(0x182)+c['cmd']+_0x5a46eb(0x1a1)+c['reset']+_0x5a46eb(0x169)+c[_0x5a46eb(0x1b4)]+_0x5a46eb(0x194)+c[_0x5a46eb(0x1b2)]+_0x5a46eb(0x189)+c['muted']+'--status\x20active|revoked'+c['reset']+_0x5a46eb(0x18f)+c[_0x5a46eb(0x19a)]+'colana\x20admin\x20revoke-key\x20<id>'+c['reset']+_0x5a46eb(0x1ad)+c[_0x5a46eb(0x1b4)]+'Polar.sh\x20key\x20management:'+c['reset']+_0x5a46eb(0x1bd)+c['url']+_0x5a46eb(0x1ae)+c[_0x5a46eb(0x1b2)]+'\x0a');}function doctor(){const _0x1feb8a=a0_0x4a2f90;console[_0x1feb8a(0x17a)](_0x1feb8a(0x1ac));}function staffKeys(){const _0x55a9bc=a0_0x4a2f90,_0x196982=process['env'][_0x55a9bc(0x1b7)]||'',_0x17501e=process[_0x55a9bc(0x1a5)][_0x55a9bc(0x196)]||'',_0x83d433=_0x196982['split'](',')['map'](_0x41a5b8=>_0x41a5b8[_0x55a9bc(0x1a9)]())[_0x55a9bc(0x1b5)](Boolean),_0x3edcdf=_0x17501e['split'](',')['map'](_0x592d97=>_0x592d97[_0x55a9bc(0x1a9)]())['filter'](Boolean);if(_0x83d433[_0x55a9bc(0x18b)]===0x0&&_0x3edcdf[_0x55a9bc(0x18b)]===0x0){console[_0x55a9bc(0x17a)]('\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');return;}console['log'](''),_0x83d433[_0x55a9bc(0x18b)]>0x0&&(console['log']('\x20\x20'+c['heading']+'Staff\x20Keys:'+c['reset']),console['log']('\x20\x20'+c[_0x55a9bc(0x1b4)]+'─'[_0x55a9bc(0x17e)](0xa)+c[_0x55a9bc(0x1b2)]),_0x83d433['forEach']((_0x3ca6c7,_0x965d4)=>{console['log']('\x20\x20\x20\x20'+(_0x965d4+0x1)+'.\x20'+maskKey(_0x3ca6c7)+'\x20\x20(STAFF_KEYS)');}),console[_0x55a9bc(0x17a)]('')),_0x3edcdf[_0x55a9bc(0x18b)]>0x0&&(console[_0x55a9bc(0x17a)]('\x20\x20'+c[_0x55a9bc(0x1a6)]+'Admin\x20Keys:'+c[_0x55a9bc(0x1b2)]),console[_0x55a9bc(0x17a)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c[_0x55a9bc(0x1b2)]),_0x3edcdf['forEach']((_0x4826a0,_0x422947)=>{console['log']('\x20\x20\x20\x20'+(_0x422947+0x1)+'.\x20'+maskKey(_0x4826a0)+'\x20\x20(ADMIN_KEYS)');}),console['log']('')),console[_0x55a9bc(0x17a)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}async function main(){const _0x19bd65=a0_0x4a2f90,{command:_0xe49cba,flags:_0x2745cb,positional:_0x40aa15}=parseArgs(process[_0x19bd65(0x17f)]);if(!_0xe49cba||_0xe49cba==='help'||_0xe49cba===_0x19bd65(0x19d)){showHelp();return;}switch(_0xe49cba){case _0x19bd65(0x16f):return doctor();case _0x19bd65(0x17d):return staffKeys();case'create-key':return createKey(_0x2745cb);case _0x19bd65(0x1b0):return listKeysCmd(_0x2745cb);case'revoke-key':return revokeKeyCmd(_0x40aa15);default:console[_0x19bd65(0x1c7)]('\x20\x20'+icons[_0x19bd65(0x18c)]+'\x20Unknown\x20command:\x20'+c['value']+_0xe49cba+c[_0x19bd65(0x1b2)]),console['error']('\x20\x20'+c[_0x19bd65(0x1b4)]+'Run\x20\x22colana\x20admin\x20help\x22\x20for\x20usage.'+c[_0x19bd65(0x1b2)]),process['exit'](0x1);return;}}function a0_0x3011(){const _0x2ee3c8=['y29Syw5HigfKBwLUigXPC3qTA2v5CW','u3rHDhvZ','mZi1mZC0ngXpwKrptW','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','zw52','AgvHzgLUzW','icaGicaGicaGicaGieXPC3qGy29UzMLNDxjLzcbZDgfMzI9Hzg1PBIbRzxLZicHLBNyGDMfYCYKkicaGia','CgfZCW','DhjPBq','y29Syw5HigfKBwLUigrVy3rVCG','yxbWBgLJyxrPB24VANnVBG','cIaGuNvUicDJB2XHBMeGzg9JDg9YjYbMB3iGC3LZDgvTigrPywDUB3n0AwnZlGO','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','Ahr0Chm6lY9KyxnOyM9HCMqUCg9SyxiUC2G','DhLWzq','BgLZDc1RzxLZ','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','CMvZzxq','ntC4mde4DgjfvNjK','Bxv0zwq','zMLSDgvY','l2fWAs9Hzg1PBI9RzxLZlW','u1rbrKzFs0vzuW','C2XPy2u','Dhj1zq','ANnVBG','kenYzwf0zwqGDMLHihj1BM5PBMCGC2vYDMvYkq','Ahr0CdOVlZeYnY4WlJaUmtO','cIaGica','AM9PBG','rvjst1i6ic0TBMfTzsbPCYbYzxf1AxjLzc4','y29Syw5HigfKBwLUihn0ywzMlwTLExm','Dg9mB2nHBgveyxrLu3rYAw5N','BMfTzq','yMv0yq','C3rHCNrZv2L0Aa','DMfSDwu','CMf3','zxjYB3i','ieTLEsa','kIOQkG','mti3mMP1sezRAa','igHHCYbIzwvUihjLDM9RzwqUcG','ue9tva','icaGicaGicaGicaGicbmAxn0ierclxn0B3jLzcbSAwnLBNnLigTLExmkicaGicaG','kenYzwf0zwqGDMLHigrPCMvJDcbeqIdIGjqGCMvZDgfYDcbZzxj2zxiGDg8GCgLJAYb1CcK','C3rHDhvZ','icaGicaGicaGicaGieDLBMvYyxrLigeGBMv3igXPy2vUC2uGA2v5icHZDg9YzwqGAw4GreiPcIaGicaGia','icaGica','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','zg9JDg9Y','y3jLyxrLzf9HDa','C2v0','mtG1mu5VrgPUAq','mte5n3jKD3vluW','tMfTzq','nJy0otmXmhPztxPNDa','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','l2fWAs9Hzg1PBI9RzxLZ','BwvZC2fNzq','vhLWzq','Bg9N','mZyWAK9wtvnl','y2f0y2G','C3rHzMyTA2v5CW','CMvWzwf0','yxjNDG','mJa5mda0nhnZA21bEq','vhLWztO','icaGicaGicaGicaGicbfEhbPCNKGzgf0zsaOB3b0Aw9UywWPcIaGica','zgLYBMfTzq','icbvC2fNztOGy29Syw5HigfKBwLUihjLDM9Rzs1RzxKGpgLKpGO','ow5xALH1CW','rxHWAxjLCW','A2v5CW','zxHWAxjLCW','icaGicaGicaGicbgAwX0zxiGyNKGDhLWzqOGicaGica','C3rYAw5NAwz5','BgvUz3rO','zMfPBa','ls1LEhbPCMvZidiWmJyTmtiTmZe','mZiXmtaWzLrrv1jv','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','khzPysbZzxj2zxiP','cIaGtM8GA2v5CYbMB3vUzc4k','icaGicaGicaGicaGicaGicbsDw4GC3LZDgvTigrPywDUB3n0AwnZcIaGica','CgfKrw5K','ls10ExbLihn0ywzMFgfKBwLUFgjLDge','qwrTAw4Gq0Xj','qurnsu5Fs0vzuW','icaGia','DgLTzw91Da','sfruuca','y21K','zxHWAxj5','zxHPDa','ls1OzwXW','cGOGia','l2fWAs9OzwfSDgG','cIaG'];a0_0x3011=function(){return _0x2ee3c8;};return a0_0x3011();}main()['catch'](_0x3d169a=>{const _0x210a92=a0_0x4a2f90;console['error']('\x20\x20'+icons[_0x210a92(0x18c)]+'\x20'+c[_0x210a92(0x1c7)]+(_0x3d169a[_0x210a92(0x178)]||_0x3d169a)+c[_0x210a92(0x1b2)]),process[_0x210a92(0x19c)](0x1);});
3
+ (function(_0x388fd6,_0x3d9616){const _0x1ff590=a0_0x3621,_0x1e0767=_0x388fd6();while(!![]){try{const _0x3431e1=-parseInt(_0x1ff590(0x1ee))/0x1*(parseInt(_0x1ff590(0x1d3))/0x2)+parseInt(_0x1ff590(0x208))/0x3*(-parseInt(_0x1ff590(0x207))/0x4)+-parseInt(_0x1ff590(0x1dc))/0x5+parseInt(_0x1ff590(0x201))/0x6+-parseInt(_0x1ff590(0x22c))/0x7*(-parseInt(_0x1ff590(0x211))/0x8)+-parseInt(_0x1ff590(0x222))/0x9*(parseInt(_0x1ff590(0x1d7))/0xa)+parseInt(_0x1ff590(0x1e9))/0xb;if(_0x3431e1===_0x3d9616)break;else _0x1e0767['push'](_0x1e0767['shift']());}catch(_0x448f37){_0x1e0767['push'](_0x1e0767['shift']());}}}(a0_0x17eb,0x7b579));import a0_0x1dc55b from'fs';import a0_0x3466a6 from'path';import a0_0x45ed78 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';function a0_0x3621(_0x4d394f,_0x51ee3d){_0x4d394f=_0x4d394f-0x1cf;const _0x17eb6f=a0_0x17eb();let _0x3621db=_0x17eb6f[_0x4d394f];if(a0_0x3621['UBYaNm']===undefined){var _0x80415f=function(_0x24929f){const _0x34f46c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1dc55b='',_0x3466a6='';for(let _0x45ed78=0x0,_0x229abe,_0x1bbfd2,_0x51ff3e=0x0;_0x1bbfd2=_0x24929f['charAt'](_0x51ff3e++);~_0x1bbfd2&&(_0x229abe=_0x45ed78%0x4?_0x229abe*0x40+_0x1bbfd2:_0x1bbfd2,_0x45ed78++%0x4)?_0x1dc55b+=String['fromCharCode'](0xff&_0x229abe>>(-0x2*_0x45ed78&0x6)):0x0){_0x1bbfd2=_0x34f46c['indexOf'](_0x1bbfd2);}for(let _0x37961e=0x0,_0x2722f0=_0x1dc55b['length'];_0x37961e<_0x2722f0;_0x37961e++){_0x3466a6+='%'+('00'+_0x1dc55b['charCodeAt'](_0x37961e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3466a6);};a0_0x3621['UxWFzT']=_0x80415f,a0_0x3621['XaPDIB']={},a0_0x3621['UBYaNm']=!![];}const _0x342b0a=_0x17eb6f[0x0],_0x596e0c=_0x4d394f+_0x342b0a,_0x5ce960=a0_0x3621['XaPDIB'][_0x596e0c];return!_0x5ce960?(_0x3621db=a0_0x3621['UxWFzT'](_0x3621db),a0_0x3621['XaPDIB'][_0x596e0c]=_0x3621db):_0x3621db=_0x5ce960,_0x3621db;}const __dirname=a0_0x3466a6['dirname'](fileURLToPath(import.meta.url));function parseArgs(_0x229abe){const _0x453ef6=a0_0x3621,_0x1bbfd2=_0x229abe['slice'](0x2),_0x51ff3e=_0x1bbfd2[0x0],_0x37961e=[],_0x2722f0={};for(let _0x586af0=0x1;_0x586af0<_0x1bbfd2['length'];_0x586af0++){if(_0x1bbfd2[_0x586af0][_0x453ef6(0x1fb)]('--')){let _0x76d071=_0x1bbfd2[_0x586af0]['slice'](0x2),_0x9a9c00;const _0x2364bc=_0x76d071[_0x453ef6(0x1ef)]('=');_0x2364bc!==-0x1?(_0x9a9c00=_0x76d071[_0x453ef6(0x1e1)](_0x2364bc+0x1),_0x76d071=_0x76d071['slice'](0x0,_0x2364bc)):_0x9a9c00=_0x586af0+0x1<_0x1bbfd2[_0x453ef6(0x20e)]&&!_0x1bbfd2[_0x586af0+0x1][_0x453ef6(0x1fb)]('--')?_0x1bbfd2[++_0x586af0]:'true',_0x2722f0[_0x76d071]=_0x9a9c00;}else _0x37961e['push'](_0x1bbfd2[_0x586af0]);}return{'command':_0x51ff3e,'flags':_0x2722f0,'positional':_0x37961e};}function maskKey(_0x134676){const _0x1b3139=a0_0x3621;if(!_0x134676||_0x134676[_0x1b3139(0x20e)]<=0x8)return _0x1b3139(0x1e8);return _0x134676[_0x1b3139(0x1e1)](0x0,0x4)+'****';}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x51b9c9=a0_0x3621;for(let _0x184070=0x0;_0x184070<MAX_PORT_SCAN;_0x184070++){const _0xbc051e=DEFAULT_PORT+_0x184070;try{const _0x11f774=await fetch(_0x51b9c9(0x1f3)+_0xbc051e+_0x51b9c9(0x1f8),{'signal':AbortSignal['timeout'](0x1f4)});if(_0x11f774['ok']){const _0x40517c=await _0x11f774[_0x51b9c9(0x1f6)]();if(_0x40517c[_0x51b9c9(0x1d4)]==='ok')return'http://127.0.0.1:'+_0xbc051e;}}catch{}}return null;}async function createKeyViaApi(_0x231bec,_0x562f99){const _0x42cbf0=a0_0x3621,_0x5c419a=await fetch(_0x231bec+_0x42cbf0(0x227),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x562f99)});if(!_0x5c419a['ok']){const _0x2ec9db=await _0x5c419a[_0x42cbf0(0x1f6)]()['catch'](()=>({'error':'HTTP\x20'+_0x5c419a[_0x42cbf0(0x1d4)]}));throw new Error(_0x2ec9db['error']||'Server\x20responded\x20with\x20'+_0x5c419a['status']);}return _0x5c419a[_0x42cbf0(0x1f6)]();}async function listKeysViaApi(_0x313d3c,_0x4eb82a){const _0x1ce7e9=a0_0x3621,_0x24ebe9=new URLSearchParams();if(_0x4eb82a[_0x1ce7e9(0x217)])_0x24ebe9[_0x1ce7e9(0x219)](_0x1ce7e9(0x217),_0x4eb82a['type']);if(_0x4eb82a[_0x1ce7e9(0x1d4)])_0x24ebe9[_0x1ce7e9(0x219)](_0x1ce7e9(0x1d4),_0x4eb82a['status']);const _0x4a7e22=_0x24ebe9[_0x1ce7e9(0x224)](),_0x589de2=await fetch(_0x313d3c+'/api/admin/keys'+(_0x4a7e22?'?'+_0x4a7e22:''));if(!_0x589de2['ok']){const _0x3bf756=await _0x589de2['json']()[_0x1ce7e9(0x200)](()=>({'error':'HTTP\x20'+_0x589de2['status']}));throw new Error(_0x3bf756[_0x1ce7e9(0x22a)]||'Server\x20responded\x20with\x20'+_0x589de2['status']);}return _0x589de2[_0x1ce7e9(0x1f6)]();}async function revokeKeyViaApi(_0x21f2d9,_0x6045d2){const _0x3a3aa6=a0_0x3621,_0x3951fb=await fetch(_0x21f2d9+'/api/admin/keys/'+_0x6045d2,{'method':'DELETE'});if(!_0x3951fb['ok']){const _0x4c1bd9=await _0x3951fb['json']()[_0x3a3aa6(0x200)](()=>({'error':'HTTP\x20'+_0x3951fb['status']}));throw new Error(_0x4c1bd9[_0x3a3aa6(0x22a)]||'Server\x20responded\x20with\x20'+_0x3951fb['status']);}return _0x3951fb['json']();}let _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0x2fcf4e}=await import('../server/db.js');await _0x2fcf4e(),_dbReady=!![];}async function createKey(_0xc28b21){const _0xf1a6e=a0_0x3621,_0x32a368=_0xc28b21['name'],_0x1ae58e=_0xc28b21['type']||_0xf1a6e(0x1f0),_0x12e40e=_0xc28b21[_0xf1a6e(0x212)]||null,_0x47ee95=_0xc28b21[_0xf1a6e(0x20c)]||null;if(!_0x32a368){console['error'](_0xf1a6e(0x209)+icons[_0xf1a6e(0x1f1)]+'\x20'+c['error']+'ERROR:\x20--name\x20is\x20required.'+c[_0xf1a6e(0x225)]+'\x0a'),console['error']('\x20\x20Usage:\x20colana\x20admin\x20create-key\x20--name\x20\x22Sarah\x22\x20--type\x20staff\x20[--email\x20x]\x20[--expires\x202026-12-31]\x0a'),process['exit'](0x1);return;}const _0x55245b=[_0xf1a6e(0x1dd),_0xf1a6e(0x1f0),_0xf1a6e(0x1f2)];if(!_0x55245b[_0xf1a6e(0x1d6)](_0x1ae58e)){console[_0xf1a6e(0x22a)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0xf1a6e(0x22a)]+'ERROR:\x20Invalid\x20type\x20\x22'+_0x1ae58e+_0xf1a6e(0x1fe)+_0x55245b[_0xf1a6e(0x223)](',\x20')+c[_0xf1a6e(0x225)]+'\x0a'),process['exit'](0x1);return;}const _0x28429e=await findRunningServer();let _0x460c1e;if(_0x28429e)try{_0x460c1e=await createKeyViaApi(_0x28429e,{'name':_0x32a368,'type':_0x1ae58e,'email':_0x12e40e||undefined,'expires':_0x47ee95||undefined});}catch(_0x16d530){console[_0xf1a6e(0x22a)](_0xf1a6e(0x209)+icons['fail']+'\x20'+c[_0xf1a6e(0x22a)]+_0x16d530[_0xf1a6e(0x214)]+c[_0xf1a6e(0x225)]+'\x20'+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1d1)+c[_0xf1a6e(0x225)]+'\x0a'),process[_0xf1a6e(0x21d)](0x1);return;}else{await ensureDb();const {generateKey:_0x1bbe90}=await import('../server/key-manager.js');try{_0x460c1e=_0x1bbe90(_0x32a368,_0x1ae58e,_0x12e40e,_0x47ee95);}catch(_0x307131){console[_0xf1a6e(0x22a)]('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x307131['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}if(!_0x460c1e||!_0x460c1e['name']){console['error']('\x0a\x20\x20'+icons[_0xf1a6e(0x1f1)]+'\x20'+c[_0xf1a6e(0x22a)]+_0xf1a6e(0x218)+c[_0xf1a6e(0x225)]+'\x0a'),process['exit'](0x1);return;}console[_0xf1a6e(0x20b)](''),console[_0xf1a6e(0x20b)]('\x20\x20'+icons[_0xf1a6e(0x1e0)]+'\x20Key\x20generated\x20successfully!'),console[_0xf1a6e(0x20b)]('\x20\x20'+c[_0xf1a6e(0x1fc)]+'─'[_0xf1a6e(0x1e4)](0x28)+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)]('\x20\x20\x20\x20'+c[_0xf1a6e(0x1fc)]+'Name:'+c['reset']+'\x20\x20\x20\x20'+c['value']+_0x460c1e[_0xf1a6e(0x1ed)]+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)](_0xf1a6e(0x221)+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1e7)+c[_0xf1a6e(0x225)]+_0xf1a6e(0x221)+c[_0xf1a6e(0x1ea)]+_0x460c1e[_0xf1a6e(0x217)]+c['reset']),console['log']('\x20\x20\x20\x20'+c[_0xf1a6e(0x1fc)]+_0xf1a6e(0x1e2)+c['reset']+_0xf1a6e(0x1d5)+c[_0xf1a6e(0x1ea)]+_0x460c1e['id']+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)](_0xf1a6e(0x221)+c['muted']+'Key:'+c['reset']+'\x20\x20\x20\x20\x20'+c[_0xf1a6e(0x22b)]+_0x460c1e[_0xf1a6e(0x1df)]+c['reset']),console[_0xf1a6e(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c[_0xf1a6e(0x225)]),console[_0xf1a6e(0x20b)]('\x20\x20'+c[_0xf1a6e(0x22b)]+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c[_0xf1a6e(0x225)]),_0x28429e?console[_0xf1a6e(0x20b)]('\x20\x20'+c['muted']+_0xf1a6e(0x229)+c['reset']):console['log']('\x20\x20'+c[_0xf1a6e(0x1fc)]+'(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)'+c['reset']),console['log']('');}function a0_0x17eb(){const _0x204fff=['y29Syw5HigfKBwLUigXPC3qTA2v5CW','igHHCYbIzwvUihjLDM9RzwqUcG','igTLEsHZkq','zxHPDa','ls1LEhbPCMvZidiWmJyTmtiTmZe','zw52','y3jLyxrLzf9HDa','icaGia','odq5odi0munAwxnzAa','AM9PBG','Dg9tDhjPBMC','CMvZzxq','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','l2fWAs9Hzg1PBI9RzxLZ','icaGicaGicaGicblzxKGDhLWzsaOzgvMyxvSDdOGC3rHzMyPcIaGicaGia','kenYzwf0zwqGDMLHihj1BM5PBMCGC2vYDMvYkq','zxjYB3i','D2fYBG','mZeXnJmZmhfKuej2rq','AgvSCa','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','khzPysbZzxj2zxiP','CgfKrw5K','otqXnJzszxrtANm','C3rHDhvZ','icaGicaG','Aw5JBhvKzxm','mtbHCezPsfK','y21K','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','BwfW','tMfTzq','nJeYmda1Eu5jqwvK','ywrTAw4','qwrTAw4Gs2v5CZO','CMf3','CgfZCW','C2XPy2u','suq6','qwrTAw4Gq0Xj','CMvWzwf0','icaGicaGicaGicaGicbmAxn0ierclxn0B3jLzcbSAwnLBNnLigTLExmkicaGicaG','vxnHz2u6','vhLWztO','kIOQkG','mti1mZe5ndHdCez4zfG','DMfSDwu','AgvHzgLUzW','yxjNDG','BMfTzq','m3DJtvLjuq','Aw5KzxHpzG','C3rHzMy','zMfPBa','yMv0yq','Ahr0CdOVlZeYnY4WlJaUmtO','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','ls1ZDgf0DxmGywn0AxzLFhjLDM9Rzwq','ANnVBG','icaOqurnsu5Fs0vzuYK','l2fWAs9OzwfSDgG','A2v5CW','vg90ywW6ia','C3rHCNrZv2L0Aa','Bxv0zwq','ug9SyxiUC2GGA2v5ig1HBMfNzw1LBNq6','iI4GtxvZDcbIzsbVBMuGB2y6ia','DhjPBq','y2f0y2G','mta5ndG5ohz0txLmCW','CMv2B2TLlwTLEq','icaGicaGicaGicbgAwX0zxiGyNKGDhLWzqOGicaGica','rvjst1i6ieTLEsbjrcbPCYbYzxf1AxjLzc4','cIaGica','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','mZzozunkBKq','mty2mZqXr3r2Dg50','cIaG','zM9YrwfJAa','Bg9N','zxHWAxjLCW','icbvC2fNztOGy29Syw5HigfKBwLUihjLDM9Rzs1RzxKGpgLKpGO','BgvUz3rO','icaOu1rbrKzFs0vzuYK','tMv2zxi','mtzOtNDesuS','zw1HAwW','u3rHDhvZ','BwvZC2fNzq','cGOGia','icaGicaGicaGicaGicaGicbsDw4GC3LZDgvTigrPywDUB3n0AwnZcIaGica','DhLWzq','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','C2v0'];a0_0x17eb=function(){return _0x204fff;};return a0_0x17eb();}async function listKeysCmd(_0x2526ec){const _0x1d12ec=a0_0x3621,_0x3e1da4={};if(_0x2526ec[_0x1d12ec(0x217)])_0x3e1da4[_0x1d12ec(0x217)]=_0x2526ec[_0x1d12ec(0x217)];if(_0x2526ec['status'])_0x3e1da4[_0x1d12ec(0x1d4)]=_0x2526ec[_0x1d12ec(0x1d4)];const _0x455625=await findRunningServer();let _0x5c85d8;if(_0x455625)try{_0x5c85d8=await listKeysViaApi(_0x455625,_0x3e1da4);}catch(_0x46b417){console[_0x1d12ec(0x22a)](_0x1d12ec(0x209)+icons['fail']+'\x20'+c[_0x1d12ec(0x22a)]+_0x46b417['message']+c[_0x1d12ec(0x225)]+'\x20'+c['muted']+_0x1d12ec(0x1d1)+c[_0x1d12ec(0x225)]+'\x0a'),process[_0x1d12ec(0x21d)](0x1);return;}else{await ensureDb();const {listKeys:_0x454a9b}=await import(_0x1d12ec(0x1f4));_0x5c85d8=_0x454a9b(_0x3e1da4);}if(!_0x5c85d8||!_0x5c85d8[_0x1d12ec(0x1f9)]||!_0x5c85d8['keys']['length']){console['log']('\x0a\x20\x20No\x20keys\x20found.\x0a');return;}console['log'](''),console[_0x1d12ec(0x20b)]('\x20\x20'+c[_0x1d12ec(0x1eb)]+'License\x20Keys:'+c['reset']),console['log']('\x20\x20'+c['muted']+'─'[_0x1d12ec(0x1e4)](0x50)+c['reset']),console[_0x1d12ec(0x20b)]('\x20\x20'+c[_0x1d12ec(0x1fc)]+'ID'['padEnd'](0xa)+_0x1d12ec(0x1db)[_0x1d12ec(0x1d2)](0x14)+'Type'['padEnd'](0xa)+_0x1d12ec(0x213)[_0x1d12ec(0x1d2)](0xa)+'Expires'['padEnd'](0xf)+'Created'+c[_0x1d12ec(0x225)]),console[_0x1d12ec(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x1d12ec(0x225)]);for(const _0xf6237e of _0x5c85d8['keys']){const _0x1dd0b=(_0xf6237e['id']||'')[_0x1d12ec(0x1e1)](0x0,0x8),_0x1fec43=(_0xf6237e[_0x1d12ec(0x1ed)]||'')[_0x1d12ec(0x1e1)](0x0,0x12)[_0x1d12ec(0x1d2)](0x14),_0x44d0c6=(_0xf6237e[_0x1d12ec(0x217)]||'')['padEnd'](0xa),_0x4a3440=(_0xf6237e['status']||'')['padEnd'](0xa),_0x10bfbb=(_0xf6237e['expiry']?new Date(_0xf6237e['expiry'])['toLocaleDateString']():_0x1d12ec(0x210))[_0x1d12ec(0x1d2)](0xf),_0x28e302=_0xf6237e[_0x1d12ec(0x220)]?new Date(_0xf6237e['created_at'])['toLocaleDateString']():'-';console[_0x1d12ec(0x20b)]('\x20\x20'+_0x1dd0b['padEnd'](0xa)+_0x1fec43+_0x44d0c6+_0x4a3440+_0x10bfbb+_0x28e302);}console['log']('\x20\x20'+c[_0x1d12ec(0x1fc)]+'─'['repeat'](0x50)+c[_0x1d12ec(0x225)]),console[_0x1d12ec(0x20b)]('\x20\x20'+c['muted']+_0x1d12ec(0x1fa)+_0x5c85d8['keys'][_0x1d12ec(0x20e)]+_0x1d12ec(0x21c)+c[_0x1d12ec(0x225)]+'\x0a');}async function revokeKeyCmd(_0x1e134d){const _0x12c1d5=a0_0x3621,_0x257ea5=_0x1e134d[0x0];if(!_0x257ea5){console[_0x12c1d5(0x22a)]('\x0a\x20\x20'+icons[_0x12c1d5(0x1f1)]+'\x20'+c[_0x12c1d5(0x22a)]+_0x12c1d5(0x204)+c['reset']+'\x0a'),console['error'](_0x12c1d5(0x20d)),process[_0x12c1d5(0x21d)](0x1);return;}const _0x44efd9=await findRunningServer();if(_0x44efd9)try{await revokeKeyViaApi(_0x44efd9,_0x257ea5),console[_0x12c1d5(0x20b)](_0x12c1d5(0x209)+icons['pass']+'\x20Key\x20'+c['value']+_0x257ea5+c['reset']+_0x12c1d5(0x21b));}catch(_0x146fe9){console[_0x12c1d5(0x22a)](_0x12c1d5(0x209)+icons[_0x12c1d5(0x1f1)]+'\x20'+c[_0x12c1d5(0x22a)]+_0x146fe9[_0x12c1d5(0x214)]+c[_0x12c1d5(0x225)]+'\x20'+c[_0x12c1d5(0x1fc)]+'(via\x20server)'+c[_0x12c1d5(0x225)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x311d56}=await import(_0x12c1d5(0x1f4));try{_0x311d56(_0x257ea5),console['log']('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x257ea5+c[_0x12c1d5(0x225)]+'\x20has\x20been\x20revoked.\x0a');}catch(_0x5a1b2f){console[_0x12c1d5(0x22a)](_0x12c1d5(0x209)+icons['fail']+'\x20'+c[_0x12c1d5(0x22a)]+_0x5a1b2f['message']+c['reset']+'\x0a'),process[_0x12c1d5(0x21d)](0x1);return;}}}function showHelp(){const _0x1bc5fe=a0_0x3621;console['log']('\x0a\x20\x20'+brandName()+'\x20'+c[_0x1bc5fe(0x1fc)]+_0x1bc5fe(0x1e3)+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x215)+c[_0x1bc5fe(0x1eb)]+_0x1bc5fe(0x1e6)+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x205)+c[_0x1bc5fe(0x1d8)]+'colana\x20admin\x20doctor'+c[_0x1bc5fe(0x225)]+_0x1bc5fe(0x216)+c['cmd']+'colana\x20admin\x20staff-keys'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20configured\x20staff/admin\x20keys\x20(env\x20vars)\x0a\x20\x20\x20\x20'+c[_0x1bc5fe(0x1d8)]+'colana\x20admin\x20create-key'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Generate\x20a\x20new\x20license\x20key\x20(stored\x20in\x20DB)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--name\x20\x22Name\x22'+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Recipient\x20name\x20(required)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+'--type\x20staff|admin|beta'+c['reset']+_0x1bc5fe(0x228)+c['muted']+_0x1bc5fe(0x1cf)+c['reset']+_0x1bc5fe(0x226)+c[_0x1bc5fe(0x1fc)]+_0x1bc5fe(0x21e)+c[_0x1bc5fe(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Expiry\x20date\x20(optional)\x0a\x20\x20\x20\x20'+c[_0x1bc5fe(0x1d8)]+_0x1bc5fe(0x21a)+c['reset']+_0x1bc5fe(0x1e5)+c['muted']+'--type\x20staff|admin|beta'+c['reset']+_0x1bc5fe(0x203)+c['muted']+_0x1bc5fe(0x1f5)+c['reset']+_0x1bc5fe(0x1d9)+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c['reset']+_0x1bc5fe(0x1d0)+c['muted']+_0x1bc5fe(0x1fd)+c[_0x1bc5fe(0x225)]+'\x0a\x20\x20\x20\x20'+c['url']+'https://dashboard.polar.sh'+c[_0x1bc5fe(0x225)]+'\x0a');}function doctor(){const _0x2c823c=a0_0x3621;console[_0x2c823c(0x20b)]('\x0a\x20\x20Run\x20\x27colana\x20doctor\x27\x20for\x20system\x20diagnostics.\x0a');}function staffKeys(){const _0x517b56=a0_0x3621,_0x159de0=process[_0x517b56(0x21f)]['STAFF_KEYS']||'',_0x5ad8eb=process['env']['ADMIN_KEYS']||'',_0x5dc3ca=_0x159de0['split'](',')[_0x517b56(0x1da)](_0x16e73f=>_0x16e73f[_0x517b56(0x1ff)]())['filter'](Boolean),_0x1d0d97=_0x5ad8eb['split'](',')[_0x517b56(0x1da)](_0x1a95a8=>_0x1a95a8[_0x517b56(0x1ff)]())['filter'](Boolean);if(_0x5dc3ca[_0x517b56(0x20e)]===0x0&&_0x1d0d97[_0x517b56(0x20e)]===0x0){console[_0x517b56(0x20b)]('\x0a\x20\x20No\x20staff\x20or\x20admin\x20keys\x20configured.\x20Set\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');return;}console[_0x517b56(0x20b)](''),_0x5dc3ca['length']>0x0&&(console[_0x517b56(0x20b)]('\x20\x20'+c[_0x517b56(0x1eb)]+'Staff\x20Keys:'+c[_0x517b56(0x225)]),console[_0x517b56(0x20b)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c['reset']),_0x5dc3ca[_0x517b56(0x20a)]((_0x2e82a2,_0x4ece15)=>{const _0x34109a=_0x517b56;console['log']('\x20\x20\x20\x20'+(_0x4ece15+0x1)+'.\x20'+maskKey(_0x2e82a2)+_0x34109a(0x20f));}),console[_0x517b56(0x20b)]('')),_0x1d0d97['length']>0x0&&(console[_0x517b56(0x20b)]('\x20\x20'+c['heading']+_0x517b56(0x1de)+c[_0x517b56(0x225)]),console['log']('\x20\x20'+c['muted']+'─'[_0x517b56(0x1e4)](0xa)+c[_0x517b56(0x225)]),_0x1d0d97['forEach']((_0x2a81d0,_0x3120bf)=>{const _0x1e0043=_0x517b56;console[_0x1e0043(0x20b)](_0x1e0043(0x221)+(_0x3120bf+0x1)+'.\x20'+maskKey(_0x2a81d0)+_0x1e0043(0x1f7));}),console[_0x517b56(0x20b)]('')),console[_0x517b56(0x20b)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}async function main(){const _0x40774a=a0_0x3621,{command:_0x2ac0cc,flags:_0x4d31e9,positional:_0x1e2343}=parseArgs(process[_0x40774a(0x1ec)]);if(!_0x2ac0cc||_0x2ac0cc===_0x40774a(0x22d)||_0x2ac0cc==='--help'){showHelp();return;}switch(_0x2ac0cc){case'doctor':return doctor();case'staff-keys':return staffKeys();case'create-key':return createKey(_0x4d31e9);case'list-keys':return listKeysCmd(_0x4d31e9);case _0x40774a(0x202):return revokeKeyCmd(_0x1e2343);default:console[_0x40774a(0x22a)]('\x20\x20'+icons['fail']+'\x20Unknown\x20command:\x20'+c['value']+_0x2ac0cc+c[_0x40774a(0x225)]),console['error']('\x20\x20'+c['muted']+_0x40774a(0x206)+c[_0x40774a(0x225)]),process['exit'](0x1);return;}}main()['catch'](_0x168c79=>{const _0x5a6505=a0_0x3621;console[_0x5a6505(0x22a)]('\x20\x20'+icons['fail']+'\x20'+c['error']+(_0x168c79['message']||_0x168c79)+c['reset']),process[_0x5a6505(0x21d)](0x1);});
package/bin/colana.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x32e5e4=a0_0x8bf3;function a0_0x241a(){const _0x57ddd2=['Aw5ZDgfSBenTza','t3bLBIb5B3vYigjYB3DZzxiGDg8','CgfYC2u','Dw5PBNn0ywXS','ChvZAa','zMfPBa','uMvXDwLYzxmGqw50AhjVCgLJihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','Aw5ZDgfSBa','icaGieLUC3rHBgXPBMCG','CMvJB21Tzw5Kzwq','D2fYBG','r2vTAw5Pienmsq','ic0TDMvYC2LVBG','ls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','C2vYDMvY','CMvWBgfJzq','icbjBNn0ywXSia','icaGica','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','igLUC3rHBgXLza','B3bLBIaI','ndaWmZiXohDmBvn1yq','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','C3bSAwnL','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','4OcuihjLCxvPCMvZihyXocS','y29WAwXVDcaTlxzLCNnPB24','zxHPDa','lMzPCNn0lxj1BI1KB25L','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','mwXuwvrdDa','ifLVDsDYzsbNB29KihrVigDVisa','Cgf0Aa','icaGicaGicaGicaGicaGicaGtgf1BMnOihrOzsa','BMfTzq','BNbTigLUC3rHBgWGlwCGqgfUDgHYB3bPyY1HAs9JBgf1zguTy29Kzq','zMfSBgjHy2TezxrLy3rdBwq','DJaUmc4W','icaGifSWxsbtA2LWicH5B3uNBgWGBMvLzcb0BYbPBNn0ywXSig9UzsbTyw51ywXSEsK','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','CMvHzezPBgvtEw5J','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','EwvZ','ig5VzguTChr5ia','DMvYC2LVBG','swyGDgHHDcbMywLSCYWGy2HLy2SGDgHLigvYCM9Yig91Dhb1DcbHyM92zsbMB3iGzgv0ywLSCW','idXJBwq+icaGicaGqwrTAw4Gq0XjicHJCMvHDguTA2v5lcbYzxzVA2uTA2v5lcbSAxn0lwTLExmSigTLEs1PBMzVkqOGia','y2XHDwrL','CMvZzxq','zg9JDg9Y','ugXHDgzVCM06','ifnOB3CGzgv0ywLSzwqGzgLHz25VC3rPyYbPBMzVcIaG','icaGkg9YoIa','C2v0Dxb0B29SCW','yNvPBgqGDg9VBhm','zgv0zwn0q21K','C3bSAxq','zMLSDgvY','ica+ia','t3b0Aw9UCZO','CgLWigLUC3rHBgWGDxy','y2XVC2u','D3nSic0TBgLZDcaTlxf1Awv0','y29KzxG','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','y29Syw5HigfKBwLUigXPC3qTA2v5CW','ChjVDMLKzxjZ','BgvUz3rO','Aw5ZDgfSBgvK','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','CNvUDgLTzq','q09mqu5bx1bpuLq','offIyuHIza','D3jPDgu','ntKXntmXmhLdC0TpAa','D2LUmZi','DhjPBq','t3bLBIbqB3DLCLnOzwXSigfZiefKBwLUAxn0CMf0B3iGkhjPz2H0lwnSAwnRid4GiLj1BIbHCYbHzg1PBMLZDhjHDg9YiIK','igjHy2TNCM91BMqGC2vYDMLJzs4UlG','DxjS','C3rKAw4','icaGifrYEwLUzYbMywXSyMfJAZOG','icaGuMvTB3zLigjHy2TNCM91BMqGC2vYDMLJzq','BwLUB3i','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','ifjLBw92zsbIywnRz3jVDw5KihnLCNzPy2ukica','EgnVzguTC2vSzwn0','y29Syw5HihnLCNzPy2uGC3rHDhvZ','rxHHBxbSzxm6','CMvWzwf0','y29Syw5HigrVy3rVCG','CgfZCW','B3bLBMnSyxC','q2XHDwrLienVzgu','DMfSDwu','icaGia','q291BgqGBM90igLUC3rHBgWGDxyU','Bxv0zwq','ls1WB3j0','zgLYBMfTzq','yxjNDG','uMv0CNLPBMCG','zw52','icbzB3uNCMuGCNvUBMLUzYbVBIbUyxrPDMuGv2LUzg93CYWGyNv0ifDttdiGAxmGyxzHAwXHyMXLlG','DxrMltG','D3jPDgvgAwXLu3LUyW','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','Dg9ju09tDhjPBMC','kgrLzMf1Bhq6igf1Dg8Tzgv0zwn0igzYB20GotG3nIK','rg9JDg9Y','rNjLzsbVCIbWywLKieDVB2DSzsbHy2nVDw50','CgXHDgzVCM0','ihrOzxjLigLUC3rLywqU','C3rHDhvZ','icaGicaGicaGicbdAgvJAYbdteKGywDLBNrZigfUzcbZExn0zw0GAgvHBhrOcIaG','ls12zxjZAw9U','C3vJy2vZCW','CgfJA2fNzs5QC29U','Dg9mB3DLCKnHC2u','EgrNlw9Wzw4GiG','Bg9NCW','ief1Dg8TC3rHCNqGzw5HyMXLzc4G','idXUDw1Izxi+icaGicaGicaGvxnLihnWzwnPzMLJihbVCNqG','ls1OzwXW','y29Syw5HigfKBwLU','zgf0yq','AgvHzgLUzW','CgLWzq','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','rMfPBgvKihrVihn0yxj0ihnLCNzLCJOG','y2f0y2G','yMLUyxj5','icaGicaGihDZBcaTzcbvyNvUDhu','zMLUza','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','ChL0Ag9UihnLDhvWDg9VBhm','igzPCNn0lG','q0XjigfNzw50khmPigf2ywLSywjSzs4','ChjLCMvX','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','icbgCMvLihrPzxi6idiGy29Uy3vYCMvUDcbZzxnZAw9UCYWGywXSigzLyxr1CMvZigLUy2X1zgvKlG','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','CgLWmYbPBNn0ywXSihv2','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','vxnLCI1JB25MAwD1CMvKig1VzgvSigTLExm','BNbT','ChL0Ag9UmW','CgLWEa','icboBYbbssbJB2rPBMCGywDLBNrZigzVDw5KlIa','icbpCgvUihLVDxiGv1nmmIb0zxjTAw5HBcbHBMqGCNvUoIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','AM9PBG','Dg9tDhjPBMC','ndq0mJG4mhzJrwHRBa','uMvXDwLYzxmGt3bLBKfjihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','icbmAxn0igfSBcbSAwnLBNnLigTLExmkcG','ndiZotK5vuz6tgTA','ls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TCgfZC2L2zsaTlw5VCMvZDgfYDa','ifTVChrPB25ZxsbBy29TBwfUzf0kcG','yxv0Aa','ntC4mdKWoeHjC1n5ta','icaGifLVDsbJyw4GAw5ZDgfSBcbVDgHLCNmGyw55DgLTzsbMCM9TifnLDhrPBMDZlG','BwvZC2fNzq','y21K','zxjYB3i','q29TCgXLDguGDgHLihn5C3rLBsbKAwfSB2CGDgHHDcbHChbLyxjZ','ntblsvLJCvO','y29Syw5HigrVy3rVCIaTlxzLCMjVC2u','Aw5JBhvKzxm','nJu3odu0qwfHA05Y','icaGicaGicaGicbsDw4GzgLHz25VC3rPyYbJAgvJA3mkica','q29TBwfUzhm6','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','BxnIDwLSza','cIaG','C2vYDMLJzs1Tyw5Hz2vYlMPZ','ywrTAw4','AwDUB3jL','ChL0Ag9U','vxnHz2u6','CxvLC3rPB24','ChL0Ag9UidmUmtm','y29Syw5HihnLCNzPy2u','twLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhm','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','Aw5OzxjPDa','pYaO','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','z3LW','zgfYD2LU','C2XPy2u','uNvUoIa','icaGifvZAw5Nia','BM9Kzs1WDhK','ls1VDMvYCMLKzq','qwLKzxi','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','y21KlMv4zsaVyYbZDgfYDcaIiIaI','ihDPBgWGBM93igf1Dg8TC3rHCNqGB24GBg9NAw4U','icbdAgvJA2LUzYb5B3vYigvUDMLYB25Tzw50lI4U','mtu0nZu4uhrREMzO','q29WAwXVDcbdteK','Aw5KzxGUANm','r2L0shvIienmsq','BwfQB3i','ChjLCMvXrMfSBgjHy2S','teXniefqssbRzxKGCMvXDwLYzwq','icboyxrPDMuGv2LUzg93CYbKzxrLy3rLzcb3AxrOifDttdiGyxzHAwXHyMXLlG','r2L0shvIienVCgLSB3qGC3vIC2nYAxb0Aw9U','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL'];a0_0x241a=function(){return _0x57ddd2;};return a0_0x241a();}(function(_0x440409,_0x3f0c0f){const _0x442f77=a0_0x8bf3,_0x3c3dbe=_0x440409();while(!![]){try{const _0x188043=-parseInt(_0x442f77(0x113))/0x1*(parseInt(_0x442f77(0x19e))/0x2)+-parseInt(_0x442f77(0x1bd))/0x3+-parseInt(_0x442f77(0x18e))/0x4+parseInt(_0x442f77(0x140))/0x5+parseInt(_0x442f77(0x10a))/0x6+parseInt(_0x442f77(0x195))/0x7*(parseInt(_0x442f77(0x13e))/0x8)+parseInt(_0x442f77(0x191))/0x9*(-parseInt(_0x442f77(0x19b))/0xa);if(_0x188043===_0x3f0c0f)break;else _0x3c3dbe['push'](_0x3c3dbe['shift']());}catch(_0xd95979){_0x3c3dbe['push'](_0x3c3dbe['shift']());}}}(a0_0x241a,0xe7c49));import{execSync,execFileSync,spawn}from'child_process';import a0_0x274649 from'fs';import a0_0x3f9f63 from'path';import a0_0x50f9ab from'readline';import{fileURLToPath,pathToFileURL}from'url';import{commandExistsSync,getCommandPath}from'../server/platform.js';import{c,icons,brandName,tagline,printBanner}from'../server/brand.js';function a0_0x8bf3(_0x2a0da4,_0x2867d3){_0x2a0da4=_0x2a0da4-0xf8;const _0x241a41=a0_0x241a();let _0x8bf3e1=_0x241a41[_0x2a0da4];if(a0_0x8bf3['EaLobb']===undefined){var _0x134e45=function(_0x2ff871){const _0x2598bb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x274649='',_0x3f9f63='';for(let _0x50f9ab=0x0,_0x255fad,_0x2cb32f,_0x13b870=0x0;_0x2cb32f=_0x2ff871['charAt'](_0x13b870++);~_0x2cb32f&&(_0x255fad=_0x50f9ab%0x4?_0x255fad*0x40+_0x2cb32f:_0x2cb32f,_0x50f9ab++%0x4)?_0x274649+=String['fromCharCode'](0xff&_0x255fad>>(-0x2*_0x50f9ab&0x6)):0x0){_0x2cb32f=_0x2598bb['indexOf'](_0x2cb32f);}for(let _0x5ecf1f=0x0,_0x4e512f=_0x274649['length'];_0x5ecf1f<_0x4e512f;_0x5ecf1f++){_0x3f9f63+='%'+('00'+_0x274649['charCodeAt'](_0x5ecf1f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3f9f63);};a0_0x8bf3['XoRcdx']=_0x134e45,a0_0x8bf3['MPFixx']={},a0_0x8bf3['EaLobb']=!![];}const _0x4c86bb=_0x241a41[0x0],_0xb66338=_0x2a0da4+_0x4c86bb,_0x4a4c6d=a0_0x8bf3['MPFixx'][_0xb66338];return!_0x4a4c6d?(_0x8bf3e1=a0_0x8bf3['XoRcdx'](_0x8bf3e1),a0_0x8bf3['MPFixx'][_0xb66338]=_0x8bf3e1):_0x8bf3e1=_0x4a4c6d,_0x8bf3e1;}const __dirname=a0_0x3f9f63[a0_0x32e5e4(0x159)](fileURLToPath(import.meta.url)),ROOT=a0_0x3f9f63['resolve'](__dirname,'..'),DATA_DIR=a0_0x3f9f63[a0_0x32e5e4(0x18c)](ROOT,a0_0x32e5e4(0x173)),toImportPath=_0x255fad=>process[a0_0x32e5e4(0x165)]==='win32'?pathToFileURL(_0x255fad)['href']:_0x255fad,CLI_PROVIDERS=[{'name':a0_0x32e5e4(0x153),'binary':a0_0x32e5e4(0x125),'installCmd':a0_0x32e5e4(0x118),'auth':a0_0x32e5e4(0xfb),'runtime':a0_0x32e5e4(0x187)},{'name':'Codex\x20CLI','binary':a0_0x32e5e4(0x135),'installCmd':'npm\x20install\x20-g\x20@openai/codex','auth':a0_0x32e5e4(0x18f),'runtime':a0_0x32e5e4(0x187)},{'name':a0_0x32e5e4(0x100),'binary':'gemini','installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':a0_0x32e5e4(0x164),'runtime':'npm','recommended':!![]},{'name':a0_0x32e5e4(0x1be),'binary':'copilot','fallbackBinary':'gh','detectCmd':a0_0x32e5e4(0x10f),'fallbackDetectCmd':'gh\x20copilot\x20--version','installCmd':'gh\x20extension\x20install\x20github/gh-copilot','prereq':'gh','prereqName':a0_0x32e5e4(0x1c0),'auth':a0_0x32e5e4(0x1c5),'runtime':a0_0x32e5e4(0x187)},{'name':a0_0x32e5e4(0x1b8),'binary':'aider','installCmd':a0_0x32e5e4(0x183),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':a0_0x32e5e4(0x188),'prereqFallback':'python','prereqName':'Python','auth':a0_0x32e5e4(0x1c3),'runtime':a0_0x32e5e4(0x189)},{'name':'OpenClaw','binary':a0_0x32e5e4(0x152),'installCmd':a0_0x32e5e4(0x14a),'auth':a0_0x32e5e4(0x186),'runtime':'npm'}];function detectWindowsWsl(){const _0x2c42c1=a0_0x32e5e4,_0x2cb32f=process[_0x2c42c1(0x165)]===_0x2c42c1(0x141);if(!_0x2cb32f)return{'isNativeWindows':![],'wslAvailable':![]};let _0x13b870=![];try{const _0x5ecf1f=execSync(_0x2c42c1(0x134),{'stdio':[_0x2c42c1(0x175),_0x2c42c1(0x175),_0x2c42c1(0x175)],'timeout':0x1388}),_0x4e512f=_0x5ecf1f['toString']()[_0x2c42c1(0x104)](/\0/g,'')[_0x2c42c1(0x142)]();_0x13b870=_0x4e512f[_0x2c42c1(0x139)]>0x0;}catch{_0x13b870=![];}return{'isNativeWindows':_0x2cb32f,'wslAvailable':_0x13b870};}function detectProvider(_0x3b29a4){const _0x24bd91=a0_0x32e5e4;if(_0x3b29a4[_0x24bd91(0x12d)])try{return execSync(_0x3b29a4[_0x24bd91(0x12d)],{'stdio':_0x24bd91(0x1a6)}),!![];}catch{if(_0x3b29a4[_0x24bd91(0x119)])try{return execSync(_0x3b29a4[_0x24bd91(0x119)],{'stdio':_0x24bd91(0x1a6)}),!![];}catch{}return![];}return commandExistsSync(_0x3b29a4['binary']);}function detectPythonVersion(){const _0x2c5d14=a0_0x32e5e4;for(const _0x128b03 of[_0x2c5d14(0x188),_0x2c5d14(0x1a7)]){try{const _0x4b06c9=execFileSync(_0x128b03,[_0x2c5d14(0x169)],{'timeout':0x1388,'encoding':'utf-8','stdio':['ignore','pipe','ignore']})[_0x2c5d14(0x142)](),_0x2840cc=_0x4b06c9['match'](/Python\s+(\d+)\.(\d+)/);if(_0x2840cc)return{'major':parseInt(_0x2840cc[0x1]),'minor':parseInt(_0x2840cc[0x2])};}catch{}}return null;}function getCliNextSteps(_0x38488e,_0x2d777b=''){const _0x3339f1=a0_0x32e5e4,_0x630970=_0x2d777b['toLowerCase'](),_0x45089c=process['platform'];if(_0x38488e[_0x3339f1(0x13c)]==='npm'&&(_0x630970['includes'](_0x3339f1(0x1b1))||_0x630970['includes'](_0x3339f1(0x1a2))||_0x630970['includes']('native')||_0x630970['includes']('build\x20tools'))){if(_0x45089c==='win32')return[_0x3339f1(0x143),'Run:\x20'+c[_0x3339f1(0x198)]+_0x3339f1(0x185)+c['reset'],'Wait\x20for\x20the\x20install\x20to\x20complete\x20(2-5\x20minutes)',_0x3339f1(0x176),'Run:\x20'+c['cmd']+_0x38488e[_0x3339f1(0x1c7)]+c['reset']];if(_0x45089c===_0x3339f1(0x1b2))return[_0x3339f1(0x1b4)+c['cmd']+'xcode-select\x20--install'+c['reset'],_0x3339f1(0x19a),_0x3339f1(0x1b4)+c['cmd']+_0x38488e['installCmd']+c['reset']];return[_0x3339f1(0x1b4)+c['cmd']+'sudo\x20apt\x20update\x20&&\x20sudo\x20apt\x20install\x20-y\x20build-essential\x20python3'+c[_0x3339f1(0x126)],'Run:\x20'+c[_0x3339f1(0x198)]+_0x38488e[_0x3339f1(0x1c7)]+c[_0x3339f1(0x126)]];}if(_0x38488e[_0x3339f1(0x13c)]===_0x3339f1(0x189)&&(_0x630970[_0x3339f1(0x19d)](_0x3339f1(0x1a7))||_0x630970[_0x3339f1(0x19d)](_0x3339f1(0x12b)))){if(_0x45089c===_0x3339f1(0x141))return['Run:\x20'+c[_0x3339f1(0x198)]+'pip\x20install\x20uv'+c[_0x3339f1(0x126)],_0x3339f1(0x1b4)+c[_0x3339f1(0x198)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c['reset'],'Close\x20and\x20reopen\x20your\x20terminal'];return['Run:\x20'+c['cmd']+_0x3339f1(0x132)+c[_0x3339f1(0x126)]+_0x3339f1(0x12a)+c[_0x3339f1(0x198)]+'brew\x20install\x20uv'+c['reset']+')',_0x3339f1(0x1b4)+c[_0x3339f1(0x198)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c['reset'],'Restart\x20your\x20terminal'];}return['Run:\x20'+c['cmd']+_0x38488e[_0x3339f1(0x1c7)]+c['reset'],_0x3339f1(0x123)];}const rl=a0_0x50f9ab['createInterface']({'input':process[a0_0x32e5e4(0x146)],'output':process['stdout']}),ask=_0x5c5a59=>new Promise(_0x42bb8c=>rl[a0_0x32e5e4(0x1a9)](_0x5c5a59,_0x42bb8c));function print(_0x265354=''){const _0x5addcc=a0_0x32e5e4;process['stdout'][_0x5addcc(0x13f)](_0x265354+'\x0a');}function runInstall(_0x1d5a57){return new Promise(_0x3a2ee3=>{const _0x42ccde=a0_0x8bf3,_0x23b157=_0x1d5a57['split']('\x20'),_0x4a2f5a=spawn(_0x23b157[0x0],_0x23b157[_0x42ccde(0x1b3)](0x1),{'stdio':'inherit','env':{...process['env']},...process[_0x42ccde(0x165)]===_0x42ccde(0x141)&&{'shell':!![]}});_0x4a2f5a['on'](_0x42ccde(0x133),_0x5314d4=>_0x3a2ee3(_0x5314d4===0x0)),_0x4a2f5a['on'](_0x42ccde(0x199),()=>_0x3a2ee3(![]));});}function runInstallArgs(_0x34894d,_0x2dcab2){return new Promise(_0x647485=>{const _0x57ade1=a0_0x8bf3,_0x211343=spawn(_0x34894d,_0x2dcab2,{'stdio':_0x57ade1(0x1ae),'env':{...process['env']}});_0x211343['on']('close',_0x549e33=>_0x647485(_0x549e33===0x0)),_0x211343['on'](_0x57ade1(0x199),()=>_0x647485(![]));});}async function tryInstallBuildTools(){const _0x4a1c47=a0_0x32e5e4,_0x458589=process['platform'];if(_0x458589==='win32'){if(commandExistsSync('winget')){print('\x20\x20\x20\x20'+c[_0x4a1c47(0x157)]+'Installing\x20Visual\x20Studio\x20Build\x20Tools\x20via\x20winget...'+c['reset']);const _0xb7cbb4=await runInstallArgs('winget',[_0x4a1c47(0xfc),_0x4a1c47(0x1ac),_0x4a1c47(0x1b7),_0x4a1c47(0x192),'--accept-source-agreements',_0x4a1c47(0x102)]);return _0xb7cbb4;}return![];}if(_0x458589==='darwin'){print(_0x4a1c47(0x155)+c['muted']+_0x4a1c47(0x107)+c['reset']);const _0x5a2659=await runInstallArgs(_0x4a1c47(0x14c),['--install']);return _0x5a2659;}return![];}async function runDoctorChecks(_0x25d1da=![]){const _0x439af0=a0_0x32e5e4;print(''),print('\x20\x20'+brandName()+'\x20'+c[_0x439af0(0x157)]+_0x439af0(0x163)+c['reset']),print('\x20\x20'+c[_0x439af0(0x157)]+'─'[_0x439af0(0x14f)](0x14)+c[_0x439af0(0x126)]),print('');const _0x5c966f=process[_0x439af0(0x122)],_0x3ba6ca=parseInt(_0x5c966f[_0x439af0(0x1b3)](0x1)),_0x47fae7=_0x3ba6ca>=0x12;_0x47fae7?print('\x20\x20'+icons['pass']+'\x20Node.js\x20'+c[_0x439af0(0x154)]+_0x5c966f+c[_0x439af0(0x126)]):print('\x20\x20'+icons['fail']+'\x20Node.js\x20'+c[_0x439af0(0x154)]+_0x5c966f+c[_0x439af0(0x126)]+'\x20'+c['error']+_0x439af0(0x10e)+c[_0x439af0(0x126)]);let _0x53f8de=![];try{await import(_0x439af0(0x1b6)),_0x53f8de=!![],print('\x20\x20'+icons[_0x439af0(0x151)]+_0x439af0(0x121)+c['muted']+'loaded'+c[_0x439af0(0x126)]);}catch{print('\x20\x20'+icons['fail']+'\x20node-pty\x20'+c['error']+'—\x20failed\x20to\x20load'+c[_0x439af0(0x126)]);}print(''),print('\x20\x20'+c['heading']+'AI\x20CLI\x20Agents:'+c[_0x439af0(0x126)]);const _0x36b7f3=[];for(const _0x572900 of CLI_PROVIDERS){const _0x314f6e=detectProvider(_0x572900),_0x1c4a9b={'name':_0x572900[_0x439af0(0x117)],'installed':_0x314f6e};if(_0x25d1da&&_0x314f6e){let _0x3df20d=_0x572900[_0x439af0(0x179)];if(_0x572900['detectCmd'])try{execSync(_0x572900['detectCmd'],{'stdio':'ignore'}),_0x3df20d=_0x572900[_0x439af0(0x12d)][_0x439af0(0x12e)]('\x20')[0x0];}catch{_0x572900[_0x439af0(0x119)]&&(_0x3df20d=_0x572900[_0x439af0(0x119)][_0x439af0(0x12e)]('\x20')[0x0]);}try{const _0x19933d=execSync(_0x3df20d+_0x439af0(0x101),{'stdio':['pipe',_0x439af0(0x175),'pipe'],'timeout':0x1388});_0x1c4a9b[_0x439af0(0x122)]=_0x19933d[_0x439af0(0x18d)]()[_0x439af0(0x142)]()[_0x439af0(0x12e)]('\x0a')[0x0];}catch{_0x1c4a9b[_0x439af0(0x122)]=null;}_0x1c4a9b['path']=getCommandPath(_0x3df20d);}if(_0x314f6e){const _0x3bd201=_0x25d1da&&_0x1c4a9b[_0x439af0(0x122)]?'\x20'+c['muted']+'('+c['value']+_0x1c4a9b[_0x439af0(0x122)]+c['muted']+')'+c['reset']:'',_0x283a43=_0x25d1da&&_0x1c4a9b[_0x439af0(0x115)]?'\x20'+c[_0x439af0(0x157)]+'—\x20'+_0x1c4a9b['path']+c[_0x439af0(0x126)]:'';print('\x20\x20\x20\x20'+icons[_0x439af0(0x151)]+'\x20'+_0x572900[_0x439af0(0x117)]+_0x3bd201+_0x283a43);}else print('\x20\x20\x20\x20'+icons[_0x439af0(0xfa)]+'\x20'+c['muted']+_0x572900[_0x439af0(0x117)]+c[_0x439af0(0x126)]);_0x36b7f3['push'](_0x1c4a9b);}print('');const _0x2b044a=_0x36b7f3[_0x439af0(0x12f)](_0x5d3b9b=>_0x5d3b9b['installed'])[_0x439af0(0x139)];return _0x2b044a>0x0?print('\x20\x20'+c[_0x439af0(0x154)]+_0x2b044a+'/'+_0x36b7f3[_0x439af0(0x139)]+c['reset']+'\x20'+c['muted']+_0x439af0(0x17f)+c[_0x439af0(0x126)]):print('\x20\x20'+icons['warn']+_0x439af0(0x11c)+brandName()+'.'),print(''),{'nodeOk':_0x47fae7,'ptyOk':_0x53f8de,'providers':_0x36b7f3};}async function firstRunWizard(){const _0xbfab0b=a0_0x32e5e4;printBanner(print);const {isNativeWindows:_0x12038c,wslAvailable:_0xe17fd8}=detectWindowsWsl();if(_0x12038c&&_0xe17fd8){print('\x20\x20'+icons[_0xbfab0b(0xff)]+_0xbfab0b(0x15d)),print('\x20\x20\x20\x20\x20'+c['muted']+'AI\x20coding\x20CLIs\x20work\x20best\x20in\x20WSL2\x20(Linux\x20environment).'+c['reset']),print('\x20\x20\x20\x20\x20To\x20install\x20Colana\x20there\x20instead:'),print(''),print(_0xbfab0b(0x17a)),print('\x20\x20\x20\x20\x20\x20\x20npm\x20install\x20-g\x20colana'),print('\x20\x20\x20\x20\x20\x20\x20colana'),print('');const _0x942593=await ask(_0xbfab0b(0x181));_0x942593[_0xbfab0b(0x16c)]()!=='y'&&(print(''),print(_0xbfab0b(0x18b)),print(''),rl['close'](),process[_0xbfab0b(0x110)](0x0)),print('');}print(_0xbfab0b(0x1bc));const _0xe786a8=await runDoctorChecks(![]);!_0xe786a8['nodeOk']&&(print(_0xbfab0b(0x112)),process['exit'](0x1));!_0xe786a8['ptyOk']&&(print('\x20\x20\x20\x20\x20Try:\x20npm\x20rebuild\x20node-pty'),process['exit'](0x1));const _0x154c69=[],_0x5787e5=[];for(let _0x7b2e9=0x0;_0x7b2e9<CLI_PROVIDERS[_0xbfab0b(0x139)];_0x7b2e9++){_0xe786a8[_0xbfab0b(0x138)][_0x7b2e9][_0xbfab0b(0x13a)]?_0x154c69[_0xbfab0b(0xf9)](CLI_PROVIDERS[_0x7b2e9]):_0x5787e5['push'](CLI_PROVIDERS[_0x7b2e9]);}print('');if(_0x5787e5['length']>0x0&&_0x154c69['length']>0x0){print(_0xbfab0b(0x10d)),print('');for(const _0x305b27 of _0x5787e5){const _0x183f66=await ask(_0xbfab0b(0x105)+_0x305b27[_0xbfab0b(0x117)]+_0xbfab0b(0x1af)+_0x305b27['auth']+')\x20[y/N]\x20');_0x183f66[_0xbfab0b(0x16c)]()==='y'&&(await installProvider(_0x305b27),detectProvider(_0x305b27)&&_0x154c69['push'](_0x305b27));}}else{if(_0x154c69[_0xbfab0b(0x139)]===0x0){print('\x20\x20'+icons[_0xbfab0b(0xff)]+_0xbfab0b(0x18a)+brandName()+'\x20requires\x20at\x20least\x20one\x20CLI\x20agent\x20to\x20run.'),print('');const _0x39e2ee=CLI_PROVIDERS[_0xbfab0b(0x17b)](_0x18eb55=>_0x18eb55[_0xbfab0b(0xfe)]);if(_0x39e2ee){print('\x20\x20Recommended:\x20'+_0x39e2ee['name']+'\x20—\x20works\x20with\x20any\x20Google\x20account\x20(free\x20or\x20paid)');const _0x3fcdaa=await ask(_0xbfab0b(0x105)+_0x39e2ee['name']+'?\x20[Y/n]\x20');if(_0x3fcdaa[_0xbfab0b(0x16c)]()!=='n'){await installProvider(_0x39e2ee);if(detectProvider(_0x39e2ee))_0x154c69['push'](_0x39e2ee);}}if(_0x154c69[_0xbfab0b(0x139)]===0x0){print(''),print(_0xbfab0b(0x10b)),CLI_PROVIDERS['forEach']((_0x7aaae,_0xd05730)=>{const _0x5d8517=_0xbfab0b;print('\x20\x20\x20\x20['+(_0xd05730+0x1)+']\x20'+_0x7aaae[_0x5d8517(0x117)]+'\x20('+_0x7aaae[_0x5d8517(0x194)]+')');}),print(_0xbfab0b(0x11b)),print('');const _0x4c3dcf=await ask(_0xbfab0b(0x130)),_0x3e4244=parseInt(_0x4c3dcf)-0x1;if(_0x3e4244>=0x0&&_0x3e4244<CLI_PROVIDERS['length']){await installProvider(CLI_PROVIDERS[_0x3e4244]);if(detectProvider(CLI_PROVIDERS[_0x3e4244]))_0x154c69[_0xbfab0b(0xf9)](CLI_PROVIDERS[_0x3e4244]);}}_0x154c69[_0xbfab0b(0x139)]===0x0&&(print(''),print('\x20\x20'+icons[_0xbfab0b(0xff)]+'\x20\x20No\x20CLI\x20agents\x20installed.\x20'+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print('\x20\x20\x20\x20\x20'+c['muted']+'Install\x20one\x20anytime\x20from\x20Settings\x20>\x20AI\x20CLI\x20Agents.'+c['reset']),print(''));}}_0x154c69[_0xbfab0b(0x139)]>0x0&&(print(''),print('\x20\x20'+icons['pass']+_0xbfab0b(0x114)+c[_0xbfab0b(0x154)]+_0x154c69['length']+c['reset']+'\x20CLI(s)\x20detected.'),print(_0xbfab0b(0x196)));print('');const _0x23f8b7=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0x23f8b7['toLowerCase']()!=='n')try{const {installService:_0xef416f}=await import(toImportPath(a0_0x3f9f63['join'](ROOT,'server',_0xbfab0b(0x1a4)))),_0xb69b41=_0xef416f();_0xb69b41[_0xbfab0b(0x16a)]?print('\x20\x20'+icons[_0xbfab0b(0x151)]+_0xbfab0b(0x16f)+_0xb69b41['message']):(print('\x20\x20'+icons['warn']+_0xbfab0b(0x13b)+_0xb69b41[_0xbfab0b(0x197)]),print(_0xbfab0b(0x17c)));}catch(_0x42e72c){print('\x20\x20'+icons[_0xbfab0b(0xff)]+_0xbfab0b(0x13b)+_0x42e72c[_0xbfab0b(0x197)]),print('\x20\x20\x20\x20\x20You\x20can\x20try\x20later\x20with:\x20colana\x20service\x20install');}print(''),print(_0xbfab0b(0x182)),print('\x20\x20Upgrade\x20anytime\x20from\x20Settings\x20for\x20unlimited\x20sessions.'),print(''),rl[_0xbfab0b(0x133)]();}async function installProvider(_0x3cbe83){const _0x544dc5=a0_0x32e5e4;if(_0x3cbe83['prereq']&&!commandExistsSync(_0x3cbe83['prereq'])){if(_0x3cbe83['prereqFallback']&&commandExistsSync(_0x3cbe83[_0x544dc5(0x1c2)]))print(_0x544dc5(0x1b5)+_0x3cbe83[_0x544dc5(0x1c2)]+'\x20(fallback\x20for\x20'+_0x3cbe83['prereq']+')');else{print('\x20\x20\x20\x20'+(_0x3cbe83['prereqName']||_0x3cbe83['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print('\x20\x20\x20\x20Please\x20install\x20'+(_0x3cbe83['prereqName']||_0x3cbe83[_0x544dc5(0x180)])+_0x544dc5(0x17e));return;}}let _0xb79ae9=_0x3cbe83['installCmd'],_0x670f78=_0x3cbe83['fallbackCmd'],_0xee467f='';if(_0x3cbe83[_0x544dc5(0x179)]==='aider'){const _0x1c145f=detectPythonVersion();if(_0x1c145f&&_0x1c145f['major']>=0x3&&_0x1c145f[_0x544dc5(0x149)]>=0xd){print('\x20\x20\x20\x20'+c[_0x544dc5(0x157)]+'Python\x20'+_0x1c145f[_0x544dc5(0x1c1)]+'.'+_0x1c145f['minor']+'\x20detected\x20—\x20aider\x20requires\x20Python\x203.10-3.12'+c[_0x544dc5(0x126)]),print(_0x544dc5(0x155)+c['muted']+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c['reset']),_0xee467f=_0x544dc5(0x1aa);let _0x575d2e=commandExistsSync('uv');if(!_0x575d2e){print('\x20\x20\x20\x20'+c[_0x544dc5(0x157)]+_0x544dc5(0x1b9)+c[_0x544dc5(0x126)]),_0x575d2e=await runInstall(_0x544dc5(0x132));if(!_0x575d2e)_0x575d2e=await runInstall(_0x544dc5(0x184));}if(_0x575d2e)_0xb79ae9=_0x544dc5(0x11e),_0x670f78=null;else{print(_0x544dc5(0x155)+icons['fail']+'\x20'+c['error']+_0x544dc5(0x156)+c['reset']),printNextSteps(_0x3cbe83,_0x544dc5(0x17d));return;}}}print(_0x544dc5(0xfd)+_0x3cbe83['name']+'...');let _0x427500=await runInstall(_0xb79ae9);!_0x427500&&_0x670f78&&(print(_0x544dc5(0x147)+_0x670f78+'...'),_0x427500=await runInstall(_0x670f78));if(_0x427500)print(_0x544dc5(0x155)+icons['pass']+'\x20'+_0x3cbe83[_0x544dc5(0x117)]+_0x544dc5(0x108));else{if(_0x3cbe83['runtime']==='npm'){print(_0x544dc5(0x155)+c[_0x544dc5(0x157)]+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c['reset']);const _0x371920=await tryInstallBuildTools();_0x371920&&(print(_0x544dc5(0x155)+c[_0x544dc5(0x157)]+_0x544dc5(0x15b)+_0x3cbe83['name']+'\x20install...'+c[_0x544dc5(0x126)]),_0x427500=await runInstall(_0xb79ae9));if(_0x427500){print('\x20\x20\x20\x20'+icons[_0x544dc5(0x151)]+'\x20'+_0x3cbe83[_0x544dc5(0x117)]+'\x20installed');return;}_0xee467f=_0xee467f||_0x544dc5(0x12c);}print('\x20\x20\x20\x20'+icons[_0x544dc5(0xfa)]+'\x20'+c['error']+_0x544dc5(0x160)+c['reset']),printNextSteps(_0x3cbe83,_0xee467f);}}function printNextSteps(_0x4ab821,_0x3ed2f6=''){const _0x532cb2=a0_0x32e5e4,_0x323dc1=getCliNextSteps(_0x4ab821,_0x3ed2f6);print(''),print(_0x532cb2(0x155)+c['heading']+'Next\x20steps\x20to\x20resolve:'+c['reset']),_0x323dc1['forEach']((_0x5842e0,_0x5e164d)=>{const _0x558b03=_0x532cb2;print('\x20\x20\x20\x20'+c[_0x558b03(0x157)]+(_0x5e164d+0x1)+'.'+c[_0x558b03(0x126)]+'\x20'+_0x5842e0);}),print('');}async function startServer(){const _0x3c6230=a0_0x32e5e4,_0x1d690d=a0_0x3f9f63[_0x3c6230(0x18c)](ROOT,'server',_0x3c6230(0x1bf));try{const _0x1b8f26=await import(toImportPath(_0x1d690d));return _0x1b8f26;}catch(_0x2c3455){console['error'](_0x3c6230(0x177)+_0x2c3455['message']),process['exit'](0x1);}}function openBrowser(_0x22bccb){const _0x3ce5a9=a0_0x32e5e4,_0x36a226=process[_0x3ce5a9(0x165)];try{if(_0x36a226===_0x3ce5a9(0x1b2))execSync(_0x3ce5a9(0x109)+_0x22bccb+'\x22',{'stdio':_0x3ce5a9(0x1a6)});else{if(_0x36a226==='win32')execSync('start\x20\x22\x22\x20\x22'+_0x22bccb+'\x22',{'stdio':_0x3ce5a9(0x1a6)});else try{execSync(_0x3ce5a9(0x16d)+_0x22bccb+'\x22',{'stdio':'ignore'});}catch{try{execSync(_0x3ce5a9(0x1ba)+_0x22bccb+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}async function main(){const _0x19f8ea=a0_0x32e5e4;if((process['argv'][_0x19f8ea(0x19d)](_0x19f8ea(0x169))||process[_0x19f8ea(0x15a)][_0x19f8ea(0x19d)]('-v'))&&!process[_0x19f8ea(0x15a)]['includes']('--help')&&!process['argv']['includes']('-h')&&process['argv'][0x2]!==_0x19f8ea(0x127)){try{const _0x29eac9=JSON['parse'](a0_0x274649[_0x19f8ea(0x11d)](a0_0x3f9f63[_0x19f8ea(0x18c)](ROOT,'package.json'),_0x19f8ea(0x15e)));print(brandName()+'\x20'+c['muted']+'v'+_0x29eac9[_0x19f8ea(0x122)]+c['reset']);}catch{print(brandName()+'\x20'+c[_0x19f8ea(0x157)]+_0x19f8ea(0x11a)+c['reset']);}process[_0x19f8ea(0x110)](0x0);}if(process[_0x19f8ea(0x15a)][_0x19f8ea(0x19d)](_0x19f8ea(0x171))||process['argv'][_0x19f8ea(0x19d)]('-h')){const _0x4bd137=JSON[_0x19f8ea(0x1c9)](a0_0x274649['readFileSync'](a0_0x3f9f63['join'](ROOT,_0x19f8ea(0x16b)),'utf-8'));print('\x0a'+c['heading']+'Usage:'+c[_0x19f8ea(0x126)]+'\x20'+c['cmd']+'colana'+c[_0x19f8ea(0x126)]+_0x19f8ea(0x193)+c[_0x19f8ea(0x174)]+'Commands:'+c['reset']+'\x0a\x20\x20'+c[_0x19f8ea(0x198)]+'colana'+c[_0x19f8ea(0x126)]+_0x19f8ea(0x116)+brandName()+'\x20dashboard\x0a\x20\x20'+c['cmd']+_0x19f8ea(0x150)+c['reset']+_0x19f8ea(0x19f)+c['cmd']+_0x19f8ea(0x172)+c['reset']+_0x19f8ea(0x124)+c['cmd']+_0x19f8ea(0x136)+c[_0x19f8ea(0x126)]+'\x20\x20Install\x20as\x20auto-start\x20background\x20service\x0a\x20\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0x1a1)+c['reset']+_0x19f8ea(0x14b)+c['cmd']+_0x19f8ea(0x14d)+c['reset']+'\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running\x0a\x20\x20'+c[_0x19f8ea(0x198)]+'colana\x20service\x20logs'+c[_0x19f8ea(0x126)]+'\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)\x0a\x0a'+c['heading']+_0x19f8ea(0x131)+c[_0x19f8ea(0x126)]+_0x19f8ea(0x1a3)+c[_0x19f8ea(0x198)]+'--version'+c['reset']+',\x20'+c['cmd']+'-v'+c[_0x19f8ea(0x126)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0x171)+c[_0x19f8ea(0x126)]+',\x20'+c[_0x19f8ea(0x198)]+'-h'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+_0x19f8ea(0x158)+c['reset']+_0x19f8ea(0x170)+c[_0x19f8ea(0x157)]+_0x19f8ea(0x162)+c[_0x19f8ea(0x126)]+'\x0a\x0a'+c[_0x19f8ea(0x174)]+_0x19f8ea(0x14e)+c['reset']+'\x0a\x20\x20'+c[_0x19f8ea(0x157)]+'$'+c[_0x19f8ea(0x126)]+'\x20'+c['cmd']+'colana'+c[_0x19f8ea(0x126)]+'\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['reset']+'\x20'+c[_0x19f8ea(0x198)]+'colana\x20doctor'+c['reset']+_0x19f8ea(0x168)+c[_0x19f8ea(0x157)]+'$'+c[_0x19f8ea(0x126)]+'\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0x19c)+c['reset']+_0x19f8ea(0x129)+c['muted']+'$'+c[_0x19f8ea(0x126)]+'\x20'+c['cmd']+_0x19f8ea(0x136)+c[_0x19f8ea(0x126)]+_0x19f8ea(0x105)+brandName()+_0x19f8ea(0x11f)+c[_0x19f8ea(0x157)]+'$'+c[_0x19f8ea(0x126)]+'\x20'+c['cmd']+_0x19f8ea(0x137)+c['reset']+_0x19f8ea(0x190)+c[_0x19f8ea(0x157)]+'v'+_0x4bd137[_0x19f8ea(0x122)]+c[_0x19f8ea(0x126)]+'\x20'+c[_0x19f8ea(0x157)]+'—'+c[_0x19f8ea(0x126)]+'\x20'+c[_0x19f8ea(0x145)]+'https://colana.ai'+c['reset']+'\x0a'),process['exit'](0x0);}if(process['argv'][0x2]===_0x19f8ea(0x127)){const _0x3a41b7=process['argv'][_0x19f8ea(0x19d)]('--verbose')||process[_0x19f8ea(0x15a)]['includes']('-v'),{isNativeWindows:_0x1c1494,wslAvailable:_0x1acc54}=detectWindowsWsl();_0x1c1494&&_0x1acc54&&(print(''),print('\x20\x20'+icons['warn']+_0x19f8ea(0x1c4)),print(_0x19f8ea(0x106)+c[_0x19f8ea(0x157)]+_0x19f8ea(0x1b0)+brandName()+_0x19f8ea(0x166)+c['reset']),print('')),await runDoctorChecks(_0x3a41b7),process[_0x19f8ea(0x110)](0x0);}if(process['argv'][0x2]===_0x19f8ea(0x1a5)){const _0x561f4f=a0_0x3f9f63[_0x19f8ea(0x18c)](__dirname,'admin.js');process[_0x19f8ea(0x15a)][_0x19f8ea(0x10c)](0x2,0x1),await import(toImportPath(_0x561f4f));return;}if(process[_0x19f8ea(0x15a)][0x2]==='service'){const {installService:_0x294a63,uninstallService:_0x38528a,getServiceStatus:_0x2fb053,getServiceLogs:_0x39c5e9}=await import(toImportPath(a0_0x3f9f63[_0x19f8ea(0x18c)](ROOT,_0x19f8ea(0x103),_0x19f8ea(0x1a4)))),_0x337d22=process[_0x19f8ea(0x15a)][0x3];switch(_0x337d22){case'install':{print(''),print('\x20\x20Installing\x20'+brandName()+'\x20as\x20a\x20background\x20service...'),print('');const _0x5dbdd8=_0x294a63();print(_0x5dbdd8[_0x19f8ea(0x16a)]?'\x20\x20'+icons['pass']+'\x20'+_0x5dbdd8['message']:'\x20\x20'+icons[_0x19f8ea(0xfa)]+'\x20'+_0x5dbdd8[_0x19f8ea(0x197)]),print('');_0x5dbdd8['success']&&(print('\x20\x20'+brandName()+_0x19f8ea(0x1bb)),print('\x20\x20'+c['muted']+_0x19f8ea(0x1c8)+c[_0x19f8ea(0x126)]+'\x20'+c[_0x19f8ea(0x145)]+'http://localhost:9876'+c[_0x19f8ea(0x126)]));print('');break;}case'uninstall':{print(''),print('\x20\x20Removing\x20'+brandName()+_0x19f8ea(0x144));const _0x1b3e4b=_0x38528a();print(_0x1b3e4b['success']?'\x20\x20'+icons['pass']+'\x20'+_0x1b3e4b['message']:'\x20\x20'+icons['fail']+'\x20'+_0x1b3e4b[_0x19f8ea(0x197)]),print('');break;}case _0x19f8ea(0x167):{print('');const _0x26e8e9=_0x2fb053();print('\x20\x20'+c['muted']+_0x19f8ea(0x128)+c[_0x19f8ea(0x126)]+'\x20\x20'+c[_0x19f8ea(0x154)]+_0x26e8e9[_0x19f8ea(0x165)]+c['reset']),print('\x20\x20'+c['muted']+'Installed:'+c[_0x19f8ea(0x126)]+'\x20'+(_0x26e8e9['installed']?c['success']+_0x19f8ea(0x120)+c['reset']:c['muted']+'no'+c[_0x19f8ea(0x126)])),print('\x20\x20'+c[_0x19f8ea(0x157)]+'Running:'+c[_0x19f8ea(0x126)]+'\x20\x20\x20'+(_0x26e8e9['running']?c[_0x19f8ea(0x16a)]+_0x19f8ea(0x120)+c['reset']:c['muted']+'no'+c['reset'])),print('');break;}case _0x19f8ea(0x16e):{const _0x15c3c1=_0x39c5e9();print(_0x15c3c1);break;}default:print(''),print('\x20\x20'+c['heading']+_0x19f8ea(0x1a8)+c[_0x19f8ea(0x126)]+'\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0x1ab)+c['reset']+_0x19f8ea(0x1ad)),print(''),print('\x20\x20'+c['heading']+_0x19f8ea(0x1a0)+c['reset']),print('\x20\x20\x20\x20'+c['cmd']+_0x19f8ea(0xfc)+c[_0x19f8ea(0x126)]+_0x19f8ea(0x1c6)),print('\x20\x20\x20\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0xf8)+c['reset']+_0x19f8ea(0x148)),print(_0x19f8ea(0x155)+c['cmd']+'status'+c[_0x19f8ea(0x126)]+'\x20\x20\x20\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running'),print('\x20\x20\x20\x20'+c[_0x19f8ea(0x198)]+_0x19f8ea(0x16e)+c[_0x19f8ea(0x126)]+'\x20\x20\x20\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)'),print('');}process[_0x19f8ea(0x110)](0x0);}!a0_0x274649['existsSync'](DATA_DIR)&&a0_0x274649['mkdirSync'](DATA_DIR,{'recursive':!![]});const _0x53cf2a=a0_0x3f9f63[_0x19f8ea(0x18c)](DATA_DIR,_0x19f8ea(0x111)),_0x2df751=!a0_0x274649['existsSync'](_0x53cf2a);_0x2df751&&(await firstRunWizard(),a0_0x274649[_0x19f8ea(0x15f)](_0x53cf2a,new Date()[_0x19f8ea(0x161)]())),print('\x20\x20'+icons['arrow']+'\x20Starting\x20'+brandName()+'...'),await startServer(),setTimeout(()=>{const _0x18f177=_0x19f8ea,_0x19a7bc=process[_0x18f177(0x15c)][_0x18f177(0x13d)]||0x2694,_0x43adcc='http://localhost:'+_0x19a7bc;openBrowser(_0x43adcc);},0xbb8);}main()[a0_0x32e5e4(0x178)](_0x3e5e19=>{const _0x8cfc01=a0_0x32e5e4;console[_0x8cfc01(0x199)]('Colana\x20failed\x20to\x20start:\x20'+_0x3e5e19['message']),process['exit'](0x1);});
3
+ const a0_0x5b13a3=a0_0x2607;(function(_0x1d0547,_0x129082){const _0x30b8bc=a0_0x2607,_0xb12b52=_0x1d0547();while(!![]){try{const _0x3c77a2=-parseInt(_0x30b8bc(0x179))/0x1*(parseInt(_0x30b8bc(0x216))/0x2)+parseInt(_0x30b8bc(0x1fb))/0x3+parseInt(_0x30b8bc(0x1e2))/0x4*(parseInt(_0x30b8bc(0x189))/0x5)+parseInt(_0x30b8bc(0x1f2))/0x6+parseInt(_0x30b8bc(0x1a5))/0x7*(parseInt(_0x30b8bc(0x194))/0x8)+-parseInt(_0x30b8bc(0x1b9))/0x9*(parseInt(_0x30b8bc(0x1fa))/0xa)+parseInt(_0x30b8bc(0x1a0))/0xb*(parseInt(_0x30b8bc(0x1dc))/0xc);if(_0x3c77a2===_0x129082)break;else _0xb12b52['push'](_0xb12b52['shift']());}catch(_0xa5254b){_0xb12b52['push'](_0xb12b52['shift']());}}}(a0_0x560a,0x3f7a5));import{execSync,execFileSync,spawn}from'child_process';import a0_0x486500 from'fs';import a0_0x4109b3 from'path';import a0_0x58e75c from'readline';import{fileURLToPath,pathToFileURL}from'url';import{commandExistsSync,getCommandPath}from'../server/platform.js';import{c,icons,brandName,tagline,printBanner}from'../server/brand.js';const __dirname=a0_0x4109b3[a0_0x5b13a3(0x1d7)](fileURLToPath(import.meta.url)),ROOT=a0_0x4109b3['resolve'](__dirname,'..'),DATA_DIR=a0_0x4109b3['join'](ROOT,a0_0x5b13a3(0x181)),toImportPath=_0x4795db=>process['platform']==='win32'?pathToFileURL(_0x4795db)[a0_0x5b13a3(0x1b0)]:_0x4795db,CLI_PROVIDERS=[{'name':'Claude\x20Code','binary':'claude','installCmd':'npm\x20install\x20-g\x20@anthropic-ai/claude-code','auth':'Requires\x20Anthropic\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':a0_0x5b13a3(0x1af),'binary':'codex','installCmd':'npm\x20install\x20-g\x20@openai/codex','auth':'Requires\x20OpenAI\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':'Gemini\x20CLI','binary':'gemini','installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':a0_0x5b13a3(0x19b),'runtime':'npm','recommended':!![]},{'name':'Copilot\x20CLI','binary':'copilot','fallbackBinary':'gh','detectCmd':'copilot\x20--version','fallbackDetectCmd':a0_0x5b13a3(0x180),'installCmd':a0_0x5b13a3(0x176),'prereq':'gh','prereqName':a0_0x5b13a3(0x1a1),'auth':a0_0x5b13a3(0x19d),'runtime':a0_0x5b13a3(0x1e8)},{'name':'Aider','binary':'aider','installCmd':a0_0x5b13a3(0x19a),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':'python3','prereqFallback':a0_0x5b13a3(0x15d),'prereqName':'Python','auth':'LLM\x20API\x20key\x20required','runtime':'pipx'},{'name':'OpenClaw','binary':a0_0x5b13a3(0x1e6),'installCmd':a0_0x5b13a3(0x196),'auth':a0_0x5b13a3(0x19c),'runtime':'npm'}];function detectWindowsWsl(){const _0x3a5079=a0_0x5b13a3,_0x503d70=process[_0x3a5079(0x1ad)]===_0x3a5079(0x1f4);if(!_0x503d70)return{'isNativeWindows':![],'wslAvailable':![]};let _0x13efbf=![];try{const _0x184104=execSync('wsl\x20--list\x20--quiet',{'stdio':['pipe','pipe',_0x3a5079(0x1fc)],'timeout':0x1388}),_0x3523d1=_0x184104['toString']()['replace'](/\0/g,'')['trim']();_0x13efbf=_0x3523d1[_0x3a5079(0x213)]>0x0;}catch{_0x13efbf=![];}return{'isNativeWindows':_0x503d70,'wslAvailable':_0x13efbf};}function detectProvider(_0x454939){const _0x2d4990=a0_0x5b13a3;if(_0x454939[_0x2d4990(0x1d0)])try{return execSync(_0x454939['detectCmd'],{'stdio':_0x2d4990(0x163)}),!![];}catch{if(_0x454939['fallbackDetectCmd'])try{return execSync(_0x454939[_0x2d4990(0x1ab)],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x454939['binary']);}function detectPythonVersion(){const _0x1335bf=a0_0x5b13a3;for(const _0x44704c of[_0x1335bf(0x1f7),'python']){try{const _0x380000=execFileSync(_0x44704c,['--version'],{'timeout':0x1388,'encoding':_0x1335bf(0x1ec),'stdio':['ignore','pipe','ignore']})[_0x1335bf(0x1a4)](),_0x16bd8d=_0x380000['match'](/Python\s+(\d+)\.(\d+)/);if(_0x16bd8d)return{'major':parseInt(_0x16bd8d[0x1]),'minor':parseInt(_0x16bd8d[0x2])};}catch{}}return null;}function a0_0x2607(_0x11c000,_0x53244b){_0x11c000=_0x11c000-0x15d;const _0x560af6=a0_0x560a();let _0x260751=_0x560af6[_0x11c000];if(a0_0x2607['LlmPWo']===undefined){var _0x3f967c=function(_0x4e57ed){const _0x2a9e89='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x486500='',_0x4109b3='';for(let _0x58e75c=0x0,_0x4795db,_0x503d70,_0x13efbf=0x0;_0x503d70=_0x4e57ed['charAt'](_0x13efbf++);~_0x503d70&&(_0x4795db=_0x58e75c%0x4?_0x4795db*0x40+_0x503d70:_0x503d70,_0x58e75c++%0x4)?_0x486500+=String['fromCharCode'](0xff&_0x4795db>>(-0x2*_0x58e75c&0x6)):0x0){_0x503d70=_0x2a9e89['indexOf'](_0x503d70);}for(let _0x184104=0x0,_0x3523d1=_0x486500['length'];_0x184104<_0x3523d1;_0x184104++){_0x4109b3+='%'+('00'+_0x486500['charCodeAt'](_0x184104)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4109b3);};a0_0x2607['gscaJE']=_0x3f967c,a0_0x2607['HyuCvg']={},a0_0x2607['LlmPWo']=!![];}const _0x17662d=_0x560af6[0x0],_0x2429b8=_0x11c000+_0x17662d,_0x36053b=a0_0x2607['HyuCvg'][_0x2429b8];return!_0x36053b?(_0x260751=a0_0x2607['gscaJE'](_0x260751),a0_0x2607['HyuCvg'][_0x2429b8]=_0x260751):_0x260751=_0x36053b,_0x260751;}function a0_0x560a(){const _0x5f5b61=['DxjS','lI4U','CgLWigLUC3rHBgWGDxy','EgnVzguTC2vSzwn0ic0TAw5ZDgfSBa','Chr5t2S','icaGicaGig5WBsbPBNn0ywXSic1NignVBgfUyq','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','pYaO','ls1OzwXW','Aw5KzxGUANm','zgfYD2LU','zgv0zwn0q21K','icbmAxn0igfSBcbSAwnLBNnLigTLExmkcG','y21KlMv4zsaVyYbZDgfYDcaIiIaI','Aw5ZDgfSBgvK','swyGDgHHDcbMywLSCYWGy2HLy2SGDgHLigvYCM9Yig91Dhb1DcbHyM92zsbMB3iGzgv0ywLSCW','y3jLyxrLsw50zxjMywnL','q29TCgXLDguGDgHLihn5C3rLBsbKAwfSB2CGDgHHDcbHChbLyxjZ','zgLYBMfTzq','cIaG','icaGia','C3rHDhvZ','zMfSBgjHy2TdBwq','nJu1ndrUAfLHrhq','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','yxjNDG','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','C2v0Dxb0B29SCW','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','mJHSrNjLyuq','C2vYDMLJzs1Tyw5Hz2vYlMPZ','q0XjigfNzw50khmPigf2ywLSywjSzs4','AgvHzgLUzW','B3bLBMnSyxC','zxHPC3rZu3LUyW','BNbT','Bg9NCW','ywrTAw4UANm','ica+ia','DxrMltG','yxv0Aa','icaGicbuCNK6ig5WBsbYzwj1AwXKig5VzguTChr5','CNvUDgLTzq','icaGicaGicaGicaGicaGicaGtgf1BMnOihrOzsa','vxnHz2u6','mJm2ote0mMrOtwDcsW','icaGkg9YoIa','D2LUmZi','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','C3rHCNqGiIiGiG','ChL0Ag9UmW','ifTVChrPB25ZxsbBy29TBwfUzf0kcG','BMfTzq','ndqWB3r6u3bw','mJmYmtaXAvrxte9P','CgLWzq','BM9Kzu9R','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLlI4U','zw52','icaGicaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMC','ifnOB3CGzgv0ywLSzwqGzgLHz25VC3rPyYbPBMzVcIaG','icbszwnVBw1LBMrLzdOG','D2fYBG','zM9YrwfJAa','icaGuMvTB3zLigjHy2TNCM91BMqGC2vYDMLJzq','yNvPBgqGDg9VBhm','ifn0yxj0Aw5Nia','y21K','t3b0Aw9UCZO','icbjBNn0ywXSia','quKGq0XjiefNzw50CZO','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','Ahr0Chm6lY9JB2XHBMeUywK','CgfZCW','DMvYC2LVBG','y2XVC2u','v2fPDcbMB3iGDgHLigLUC3rHBgWGDg8Gy29TCgXLDguGkdiTnsbTAw51DgvZkq','igrHC2HIB2fYzaOGia','BgvUz3rO','y29Syw5HigfKBwLUigXPC3qTA2v5CW','zMfPBa','mK5XyKrOEa','y29Syw5HihnLCNzPy2u','CMvZzxq','BMf0AxzL','ChL0Ag9U','igrLDgvJDgvKiokaLcbHAwrLCIbYzxf1AxjLCYbqExrOB24GmY4Xmc0ZlJeY','CMvWzwf0','Aw5OzxjPDa','CgLWEa','ChjLCMvXtMfTzq','AwDUB3jL','icaGicbuBYbPBNn0ywXSienVBgfUysb0AgvYzsbPBNn0zwfKoG','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','y29Syw5H','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','z3LW','D3jPDgu','icaGicaGignVBgfUyq','ChvZAa','ls1PBNn0ywXS','ic0TDMvYC2LVBG','iokaLcb3B3jRCYb3AxrOigfUEsbhB29NBguGywnJB3vUDcaOzNjLzsbVCIbWywLKkq','q29TBwfUzhm6','q09mqu5bx1bpuLq','BwTKAxjtEw5J','sw5ZDgfSBgf0Aw9UigzHAwXLzc4','zxjYB3i','yMLUyxj5','z2GGzxH0zw5ZAw9UigLUC3rHBgWGz2L0AhvIl2DOlwnVCgLSB3q','CgfYC2u','Dg9mB3DLCKnHC2u','ndG4nti5s25TC3PZ','BxnIDwLSza','yxjYB3C','EwvZ','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','AM9PBG','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','z2GGy29WAwXVDcaTlxzLCNnPB24','zgf0yq','ifjLBw92zsbIywnRz3jVDw5KihnLCNzPy2ukica','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','icboBYbdteKGywDLBNrZigLUC3rHBgXLzc4G','zxHPDa','C3rKAw4','C3vKBYbHChqGDxbKyxrLicyMihn1zg8Gyxb0igLUC3rHBgWGlxKGyNvPBgqTzxnZzw50AwfSihb5DgHVBJm','DJaUmc4W','mtiYntG1EuHpAMjA','4OcuihjLCxvPCMvZihyXocS','C3vJy2vZCW','y29Syw5HigrVy3rVCG','uNvUBMLUzZO','icbvCgDYywrLigfUExrPBwuGzNjVBsbtzxr0Aw5NCYbMB3iGDw5SAw1PDgvKihnLC3nPB25ZlG','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','Aw5ZDgfSBenTza','ChjLCMvXrMfSBgjHy2S','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','Bxv0zwq','mtKYmdHxq0jkrgO','kgrLzMf1Bhq6igf1Dg8Tzgv0zwn0igzYB20GotG3nIK','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','ief1Dg8TC3rHCNqGzw5HyMXLzc4G','C3rKB3v0','ls1VDMvYCMLKzq','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','rNjLzsbVCIbWywLKieDVB2DSzsbHy2nVDw50','vxnLCI1JB25MAwD1CMvKig1VzgvSigTLExm','r2L0shvIienVCgLSB3qGC3vIC2nYAxb0Aw9U','t3bLBIb5B3vYigjYB3DZzxiGDg8','y29Syw5HihnLCNzPy2uGC3rHDhvZ','mtfjqMTeCMy','r2L0shvIienmsq','ig5VzguTChr5ia','C2vYDMvY','DhjPBq','mtqWn3npBejtBq','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','icbszw1VDMLUzYa','icaGicaGicaGicbsDw4GzgLHz25VC3rPyYbJAgvJA3mkica','Aw5ZDgfSBa','icaGifbSzwfZzsbPBNn0ywXSia','zMfSBgjHy2TezxrLy3rdBwq','CMvHzezPBgvtEw5J','CgXHDgzVCM0','DMfSDwu','q29KzxGGq0Xj','AhjLzG','icbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','pYbBws9Uxsa','ChjVDMLKzxjZ','BwvZC2fNzq','rxHHBxbSzxm6','uNvUoIa','icaGifvZAw5Nia','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','nZG0mtDzuuP0DLG','rg9JDg9Y','t3bLBIbqB3DLCLnOzwXSigfZiefKBwLUAxn0CMf0B3iGkhjPz2H0lwnSAwnRid4GiLj1BIbHCYbHzg1PBMLZDhjHDg9YiIK','Aw5JBhvKzxm','ChjLCMvX','ihjLCxvPCMvZigf0igXLyxn0ig9UzsbdteKGywDLBNqGDg8GCNvUlG','D2LUz2v0','CgfJA2fNzs5QC29U','Dg9tDhjPBMC','C3bSAxq','Cgf0Aa','ywLKzxi'];a0_0x560a=function(){return _0x5f5b61;};return a0_0x560a();}function getCliNextSteps(_0x1e1626,_0x5063be=''){const _0x112e9f=a0_0x5b13a3,_0x5d6859=_0x5063be[_0x112e9f(0x178)](),_0x124cd5=process['platform'];if(_0x1e1626['runtime']===_0x112e9f(0x1e8)&&(_0x5d6859['includes'](_0x112e9f(0x169))||_0x5d6859['includes'](_0x112e9f(0x17a))||_0x5d6859['includes'](_0x112e9f(0x219))||_0x5d6859[_0x112e9f(0x1bc)](_0x112e9f(0x206)))){if(_0x124cd5==='win32')return[_0x112e9f(0x1bb),'Run:\x20'+c['cmd']+_0x112e9f(0x192)+c[_0x112e9f(0x218)],_0x112e9f(0x211),'Close\x20and\x20reopen\x20your\x20terminal','Run:\x20'+c[_0x112e9f(0x208)]+_0x1e1626['installCmd']+c[_0x112e9f(0x218)]];if(_0x124cd5===_0x112e9f(0x1cf))return['Run:\x20'+c['cmd']+_0x112e9f(0x1c8)+c['reset'],_0x112e9f(0x1d6),_0x112e9f(0x1b6)+c['cmd']+_0x1e1626[_0x112e9f(0x190)]+c[_0x112e9f(0x218)]];return[_0x112e9f(0x1b6)+c['cmd']+_0x112e9f(0x187)+c['reset'],_0x112e9f(0x1b6)+c[_0x112e9f(0x208)]+_0x1e1626[_0x112e9f(0x190)]+c['reset']];}if(_0x1e1626[_0x112e9f(0x1ef)]===_0x112e9f(0x161)&&(_0x5d6859[_0x112e9f(0x1bc)](_0x112e9f(0x15d))||_0x5d6859['includes'](_0x112e9f(0x1e0)))){if(_0x124cd5===_0x112e9f(0x1f4))return['Run:\x20'+c[_0x112e9f(0x208)]+'pip\x20install\x20uv'+c['reset'],_0x112e9f(0x1b6)+c[_0x112e9f(0x208)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c[_0x112e9f(0x218)],_0x112e9f(0x1f5)];return[_0x112e9f(0x1b6)+c['cmd']+'pip\x20install\x20uv'+c['reset']+_0x112e9f(0x1f3)+c[_0x112e9f(0x208)]+'brew\x20install\x20uv'+c['reset']+')','Run:\x20'+c[_0x112e9f(0x208)]+_0x112e9f(0x20c)+c[_0x112e9f(0x218)],'Restart\x20your\x20terminal'];}return['Run:\x20'+c['cmd']+_0x1e1626['installCmd']+c['reset'],_0x112e9f(0x1d4)];}const rl=a0_0x58e75c[a0_0x5b13a3(0x1d5)]({'input':process[a0_0x5b13a3(0x186)],'output':process['stdout']}),ask=_0x4fafad=>new Promise(_0x4186fb=>rl['question'](_0x4fafad,_0x4186fb));function print(_0x25a3b4=''){const _0x2d29bd=a0_0x5b13a3;process[_0x2d29bd(0x198)][_0x2d29bd(0x16a)](_0x25a3b4+'\x0a');}function runInstall(_0x50fa84){return new Promise(_0xb6add6=>{const _0x2b603a=a0_0x2607,_0x440cfe=_0x50fa84['split']('\x20'),_0x3b20ae=spawn(_0x440cfe[0x0],_0x440cfe['slice'](0x1),{'stdio':_0x2b603a(0x160),'env':{...process[_0x2b603a(0x1ff)]},...process['platform']===_0x2b603a(0x1f4)&&{'shell':!![]}});_0x3b20ae['on']('close',_0x15a599=>_0xb6add6(_0x15a599===0x0)),_0x3b20ae['on'](_0x2b603a(0x174),()=>_0xb6add6(![]));});}function runInstallArgs(_0x5bc963,_0x6bbf55){return new Promise(_0x280850=>{const _0x16a36c=a0_0x2607,_0x48f9eb=spawn(_0x5bc963,_0x6bbf55,{'stdio':'inherit','env':{...process['env']}});_0x48f9eb['on']('close',_0x391ee4=>_0x280850(_0x391ee4===0x0)),_0x48f9eb['on'](_0x16a36c(0x174),()=>_0x280850(![]));});}async function tryInstallBuildTools(){const _0x1b6f61=a0_0x5b13a3,_0xbdd551=process['platform'];if(_0xbdd551==='win32'){if(commandExistsSync('winget')){print('\x20\x20\x20\x20'+c[_0x1b6f61(0x193)]+'Installing\x20Visual\x20Studio\x20Build\x20Tools\x20via\x20winget...'+c[_0x1b6f61(0x218)]);const _0x323cf4=await runInstallArgs(_0x1b6f61(0x1bf),['install','Microsoft.VisualStudio.2022.BuildTools',_0x1b6f61(0x199),'--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart','--accept-source-agreements','--accept-package-agreements']);return _0x323cf4;}return![];}if(_0xbdd551===_0x1b6f61(0x1cf)){print(_0x1b6f61(0x1d9)+c[_0x1b6f61(0x193)]+'Installing\x20Xcode\x20Command\x20Line\x20Tools...'+c['reset']);const _0x3a426a=await runInstallArgs('xcode-select',[_0x1b6f61(0x16d)]);return _0x3a426a;}return![];}async function runDoctorChecks(_0x3ee76f=![]){const _0xed6a34=a0_0x5b13a3;print(''),print('\x20\x20'+brandName()+'\x20'+c['muted']+_0xed6a34(0x1ba)+c[_0xed6a34(0x218)]),print('\x20\x20'+c[_0xed6a34(0x193)]+'─'[_0xed6a34(0x15f)](0x14)+c[_0xed6a34(0x218)]),print('');const _0x32c68a=process['version'],_0x1b59ef=parseInt(_0x32c68a['slice'](0x1)),_0x5eba9b=_0x1b59ef>=0x12;_0x5eba9b?print('\x20\x20'+icons[_0xed6a34(0x20e)]+'\x20Node.js\x20'+c[_0xed6a34(0x1ae)]+_0x32c68a+c[_0xed6a34(0x218)]):print('\x20\x20'+icons['fail']+'\x20Node.js\x20'+c[_0xed6a34(0x1ae)]+_0x32c68a+c[_0xed6a34(0x218)]+'\x20'+c['error']+_0xed6a34(0x18a)+c['reset']);let _0x15596a=![];try{await import('node-pty'),_0x15596a=!![],print('\x20\x20'+icons[_0xed6a34(0x20e)]+_0xed6a34(0x1a2)+c['muted']+'loaded'+c['reset']);}catch{print('\x20\x20'+icons[_0xed6a34(0x215)]+'\x20node-pty\x20'+c['error']+'—\x20failed\x20to\x20load'+c['reset']);}print(''),print('\x20\x20'+c[_0xed6a34(0x1e5)]+_0xed6a34(0x20b)+c['reset']);const _0x48509f=[];for(const _0xde402e of CLI_PROVIDERS){const _0x39321e=detectProvider(_0xde402e),_0x2abc65={'name':_0xde402e['name'],'installed':_0x39321e};if(_0x3ee76f&&_0x39321e){let _0x37700b=_0xde402e[_0xed6a34(0x175)];if(_0xde402e[_0xed6a34(0x1d0)])try{execSync(_0xde402e['detectCmd'],{'stdio':_0xed6a34(0x163)}),_0x37700b=_0xde402e['detectCmd'][_0xed6a34(0x1c2)]('\x20')[0x0];}catch{_0xde402e[_0xed6a34(0x1ab)]&&(_0x37700b=_0xde402e[_0xed6a34(0x1ab)][_0xed6a34(0x1c2)]('\x20')[0x0]);}try{const _0x44a12e=execSync(_0x37700b+_0xed6a34(0x16e),{'stdio':['pipe',_0xed6a34(0x1fc),'pipe'],'timeout':0x1388});_0x2abc65['version']=_0x44a12e[_0xed6a34(0x1c1)]()['trim']()['split']('\x0a')[0x0];}catch{_0x2abc65[_0xed6a34(0x20f)]=null;}_0x2abc65[_0xed6a34(0x1c3)]=getCommandPath(_0x37700b);}if(_0x39321e){const _0x4f3d8c=_0x3ee76f&&_0x2abc65['version']?'\x20'+c[_0xed6a34(0x193)]+'('+c['value']+_0x2abc65[_0xed6a34(0x20f)]+c['muted']+')'+c['reset']:'',_0x207ec3=_0x3ee76f&&_0x2abc65['path']?'\x20'+c[_0xed6a34(0x193)]+'—\x20'+_0x2abc65['path']+c['reset']:'';print(_0xed6a34(0x1d9)+icons[_0xed6a34(0x20e)]+'\x20'+_0xde402e['name']+_0x4f3d8c+_0x207ec3);}else print('\x20\x20\x20\x20'+icons[_0xed6a34(0x215)]+'\x20'+c[_0xed6a34(0x193)]+_0xde402e[_0xed6a34(0x1f9)]+c[_0xed6a34(0x218)]);_0x48509f['push'](_0x2abc65);}print('');const _0x2da50a=_0x48509f['filter'](_0x4f882a=>_0x4f882a[_0xed6a34(0x1d3)])['length'];return _0x2da50a>0x0?print('\x20\x20'+c[_0xed6a34(0x1ae)]+_0x2da50a+'/'+_0x48509f[_0xed6a34(0x213)]+c[_0xed6a34(0x218)]+'\x20'+c['muted']+_0xed6a34(0x1e4)+c['reset']):print('\x20\x20'+icons[_0xed6a34(0x203)]+_0xed6a34(0x168)+brandName()+'.'),print(''),{'nodeOk':_0x5eba9b,'ptyOk':_0x15596a,'providers':_0x48509f};}async function firstRunWizard(){const _0x162a74=a0_0x5b13a3;printBanner(print);const {isNativeWindows:_0x23665b,wslAvailable:_0x57a66f}=detectWindowsWsl();if(_0x23665b&&_0x57a66f){print('\x20\x20'+icons['warn']+'\x20\x20You\x27re\x20running\x20on\x20native\x20Windows,\x20but\x20WSL2\x20is\x20available.'),print('\x20\x20\x20\x20\x20'+c['muted']+_0x162a74(0x17d)+c['reset']),print(_0x162a74(0x164)),print(''),print('\x20\x20\x20\x20\x20\x20\x20wsl\x20-d\x20Ubuntu'),print(_0x162a74(0x1ca)),print(_0x162a74(0x16b)),print('');const _0x215eb3=await ask(_0x162a74(0x1b8));_0x215eb3[_0x162a74(0x178)]()!=='y'&&(print(''),print('\x20\x20Open\x20your\x20WSL2\x20terminal\x20and\x20run:\x20npm\x20install\x20-g\x20colana'),print(''),rl[_0x162a74(0x210)](),process[_0x162a74(0x185)](0x0)),print('');}print('\x20\x20Checking\x20your\x20environment...');const _0x447b45=await runDoctorChecks(![]);!_0x447b45[_0x162a74(0x1fd)]&&(print(_0x162a74(0x17f)),process[_0x162a74(0x185)](0x1));!_0x447b45[_0x162a74(0x1c9)]&&(print(_0x162a74(0x1ee)),process[_0x162a74(0x185)](0x1));const _0x32e3e4=[],_0x4fbb5b=[];for(let _0x429e88=0x0;_0x429e88<CLI_PROVIDERS[_0x162a74(0x213)];_0x429e88++){_0x447b45[_0x162a74(0x1b3)][_0x429e88][_0x162a74(0x1d3)]?_0x32e3e4['push'](CLI_PROVIDERS[_0x429e88]):_0x4fbb5b[_0x162a74(0x16c)](CLI_PROVIDERS[_0x429e88]);}print('');if(_0x4fbb5b[_0x162a74(0x213)]>0x0&&_0x32e3e4[_0x162a74(0x213)]>0x0){print(_0x162a74(0x167)),print('');for(const _0x1c8f41 of _0x4fbb5b){const _0x5191e8=await ask(_0x162a74(0x20a)+_0x1c8f41['name']+_0x162a74(0x1cc)+_0x1c8f41[_0x162a74(0x1ed)]+')\x20[y/N]\x20');_0x5191e8['toLowerCase']()==='y'&&(await installProvider(_0x1c8f41),detectProvider(_0x1c8f41)&&_0x32e3e4[_0x162a74(0x16c)](_0x1c8f41));}}else{if(_0x32e3e4['length']===0x0){print('\x20\x20'+icons[_0x162a74(0x203)]+'\x20\x20No\x20AI\x20coding\x20agents\x20found.\x20'+brandName()+_0x162a74(0x1be)),print('');const _0x5d6c3d=CLI_PROVIDERS['find'](_0x1d2b15=>_0x1d2b15['recommended']);if(_0x5d6c3d){print(_0x162a74(0x202)+_0x5d6c3d['name']+_0x162a74(0x16f));const _0x58e5b0=await ask('\x20\x20Install\x20'+_0x5d6c3d[_0x162a74(0x1f9)]+_0x162a74(0x1b2));if(_0x58e5b0[_0x162a74(0x178)]()!=='n'){await installProvider(_0x5d6c3d);if(detectProvider(_0x5d6c3d))_0x32e3e4['push'](_0x5d6c3d);}}if(_0x32e3e4['length']===0x0){print(''),print(_0x162a74(0x1e1)),CLI_PROVIDERS[_0x162a74(0x204)]((_0x27cc9b,_0x2dcd94)=>{print('\x20\x20\x20\x20['+(_0x2dcd94+0x1)+']\x20'+_0x27cc9b['name']+'\x20('+_0x27cc9b['auth']+')');}),print('\x20\x20\x20\x20[0]\x20Skip\x20(you\x27ll\x20need\x20to\x20install\x20one\x20manually)'),print('');const _0xf0ca5a=await ask(_0x162a74(0x1eb)),_0x5a459b=parseInt(_0xf0ca5a)-0x1;if(_0x5a459b>=0x0&&_0x5a459b<CLI_PROVIDERS[_0x162a74(0x213)]){await installProvider(CLI_PROVIDERS[_0x5a459b]);if(detectProvider(CLI_PROVIDERS[_0x5a459b]))_0x32e3e4['push'](CLI_PROVIDERS[_0x5a459b]);}}_0x32e3e4[_0x162a74(0x213)]===0x0&&(print(''),print('\x20\x20'+icons['warn']+_0x162a74(0x184)+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print('\x20\x20\x20\x20\x20'+c[_0x162a74(0x193)]+'Install\x20one\x20anytime\x20from\x20Settings\x20>\x20AI\x20CLI\x20Agents.'+c['reset']),print(''));}}_0x32e3e4['length']>0x0&&(print(''),print('\x20\x20'+icons['pass']+'\x20You\x27re\x20good\x20to\x20go!\x20'+c['value']+_0x32e3e4['length']+c['reset']+'\x20CLI(s)\x20detected.'),print('\x20\x20\x20\x20You\x20can\x20install\x20others\x20anytime\x20from\x20Settings.'));print('');const _0x62504c=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0x62504c['toLowerCase']()!=='n')try{const {installService:_0x532e03}=await import(toImportPath(a0_0x4109b3[_0x162a74(0x17e)](ROOT,'server','service-manager.js'))),_0x2fe16d=_0x532e03();_0x2fe16d[_0x162a74(0x18b)]?print('\x20\x20'+icons[_0x162a74(0x20e)]+_0x162a74(0x197)+_0x2fe16d['message']):(print('\x20\x20'+icons['warn']+_0x162a74(0x1cb)+_0x2fe16d['message']),print(_0x162a74(0x183)));}catch(_0x57d7c5){print('\x20\x20'+icons[_0x162a74(0x203)]+_0x162a74(0x1cb)+_0x57d7c5['message']),print(_0x162a74(0x183));}print(''),print('\x20\x20Free\x20tier:\x202\x20concurrent\x20sessions,\x20all\x20features\x20included.'),print(_0x162a74(0x18e)),print(''),rl['close']();}async function installProvider(_0x473c3d){const _0x891ea1=a0_0x5b13a3;if(_0x473c3d[_0x891ea1(0x1bd)]&&!commandExistsSync(_0x473c3d['prereq'])){if(_0x473c3d[_0x891ea1(0x191)]&&commandExistsSync(_0x473c3d['prereqFallback']))print(_0x891ea1(0x1b7)+_0x473c3d[_0x891ea1(0x191)]+'\x20(fallback\x20for\x20'+_0x473c3d[_0x891ea1(0x1bd)]+')');else{print(_0x891ea1(0x1d9)+(_0x473c3d['prereqName']||_0x473c3d['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print(_0x891ea1(0x1aa)+(_0x473c3d[_0x891ea1(0x162)]||_0x473c3d[_0x891ea1(0x1bd)])+'\x20first.');return;}}let _0x3972e2=_0x473c3d['installCmd'],_0x408fca=_0x473c3d[_0x891ea1(0x1db)],_0x5b865b='';if(_0x473c3d['binary']===_0x891ea1(0x1c4)){const _0x5c1187=detectPythonVersion();if(_0x5c1187&&_0x5c1187['major']>=0x3&&_0x5c1187['minor']>=0xd){print('\x20\x20\x20\x20'+c['muted']+'Python\x20'+_0x5c1187['major']+'.'+_0x5c1187['minor']+_0x891ea1(0x15e)+c[_0x891ea1(0x218)]),print(_0x891ea1(0x1d9)+c[_0x891ea1(0x193)]+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c[_0x891ea1(0x218)]),_0x5b865b='python\x203.13';let _0x9a8ecb=commandExistsSync('uv');if(!_0x9a8ecb){print(_0x891ea1(0x1d9)+c[_0x891ea1(0x193)]+_0x891ea1(0x18f)+c['reset']),_0x9a8ecb=await runInstall(_0x891ea1(0x1c7));if(!_0x9a8ecb)_0x9a8ecb=await runInstall('pip3\x20install\x20uv');}if(_0x9a8ecb)_0x3972e2='uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat',_0x408fca=null;else{print(_0x891ea1(0x1d9)+icons[_0x891ea1(0x215)]+'\x20'+c[_0x891ea1(0x174)]+'Could\x20not\x20install\x20uv.'+c[_0x891ea1(0x218)]),printNextSteps(_0x473c3d,'python\x20setuptools');return;}}}print('\x20\x20\x20\x20Installing\x20'+_0x473c3d[_0x891ea1(0x1f9)]+_0x891ea1(0x1c6));let _0xc5e22d=await runInstall(_0x3972e2);!_0xc5e22d&&_0x408fca&&(print('\x20\x20\x20\x20Trying\x20fallback:\x20'+_0x408fca+'...'),_0xc5e22d=await runInstall(_0x408fca));if(_0xc5e22d)print('\x20\x20\x20\x20'+icons[_0x891ea1(0x20e)]+'\x20'+_0x473c3d[_0x891ea1(0x1f9)]+'\x20installed');else{if(_0x473c3d['runtime']===_0x891ea1(0x1e8)){print('\x20\x20\x20\x20'+c[_0x891ea1(0x193)]+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c[_0x891ea1(0x218)]);const _0x1b7e55=await tryInstallBuildTools();_0x1b7e55&&(print('\x20\x20\x20\x20'+c['muted']+'Retrying\x20'+_0x473c3d['name']+'\x20install...'+c[_0x891ea1(0x218)]),_0xc5e22d=await runInstall(_0x3972e2));if(_0xc5e22d){print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x473c3d['name']+'\x20installed');return;}_0x5b865b=_0x5b865b||_0x891ea1(0x206);}print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c[_0x891ea1(0x174)]+_0x891ea1(0x173)+c['reset']),printNextSteps(_0x473c3d,_0x5b865b);}}function printNextSteps(_0x315e99,_0x2f12ec=''){const _0x554ea3=a0_0x5b13a3,_0x527e55=getCliNextSteps(_0x315e99,_0x2f12ec);print(''),print(_0x554ea3(0x1d9)+c['heading']+'Next\x20steps\x20to\x20resolve:'+c[_0x554ea3(0x218)]),_0x527e55[_0x554ea3(0x204)]((_0x559f50,_0x537124)=>{const _0x519658=_0x554ea3;print('\x20\x20\x20\x20'+c[_0x519658(0x193)]+(_0x537124+0x1)+'.'+c['reset']+'\x20'+_0x559f50);}),print('');}async function startServer(){const _0x11b714=a0_0x5b13a3,_0x49e2e0=a0_0x4109b3['join'](ROOT,'server',_0x11b714(0x1ce));try{const _0x5b99aa=await import(toImportPath(_0x49e2e0));return _0x5b99aa;}catch(_0x7b986e){console[_0x11b714(0x174)]('Failed\x20to\x20start\x20server:\x20'+_0x7b986e['message']),process['exit'](0x1);}}function openBrowser(_0x2aee37){const _0x131219=a0_0x5b13a3,_0x5e5263=process['platform'];try{if(_0x5e5263==='darwin')execSync('open\x20\x22'+_0x2aee37+'\x22',{'stdio':_0x131219(0x163)});else{if(_0x5e5263===_0x131219(0x1f4))execSync(_0x131219(0x1f6)+_0x2aee37+'\x22',{'stdio':'ignore'});else try{execSync('xdg-open\x20\x22'+_0x2aee37+'\x22',{'stdio':_0x131219(0x163)});}catch{try{execSync(_0x131219(0x1d2)+_0x2aee37+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}async function main(){const _0x5ecbac=a0_0x5b13a3;if((process[_0x5ecbac(0x1de)]['includes']('--version')||process[_0x5ecbac(0x1de)]['includes']('-v'))&&!process['argv']['includes'](_0x5ecbac(0x1cd))&&!process['argv']['includes']('-h')&&process['argv'][0x2]!=='doctor'){try{const _0x59928f=JSON[_0x5ecbac(0x177)](a0_0x486500[_0x5ecbac(0x1ac)](a0_0x4109b3['join'](ROOT,'package.json'),_0x5ecbac(0x1ec)));print(brandName()+'\x20'+c[_0x5ecbac(0x193)]+'v'+_0x59928f['version']+c[_0x5ecbac(0x218)]);}catch{print(brandName()+'\x20'+c['muted']+_0x5ecbac(0x188)+c['reset']);}process['exit'](0x0);}if(process[_0x5ecbac(0x1de)][_0x5ecbac(0x1bc)]('--help')||process['argv']['includes']('-h')){const _0x5e5a0c=JSON['parse'](a0_0x486500[_0x5ecbac(0x1ac)](a0_0x4109b3['join'](ROOT,_0x5ecbac(0x1c0)),_0x5ecbac(0x1ec)));print('\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1f1)+c['reset']+'\x20'+c['cmd']+'colana'+c['reset']+_0x5ecbac(0x1f8)+c['heading']+_0x5ecbac(0x170)+c['reset']+_0x5ecbac(0x1d8)+c[_0x5ecbac(0x208)]+_0x5ecbac(0x166)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1f0)+brandName()+_0x5ecbac(0x212)+c['cmd']+_0x5ecbac(0x18c)+c['reset']+_0x5ecbac(0x1a8)+c[_0x5ecbac(0x208)]+'colana\x20admin'+c[_0x5ecbac(0x218)]+'\x20<cmd>\x20\x20\x20\x20\x20\x20Admin\x20CLI\x20(create-key,\x20revoke-key,\x20list-keys,\x20key-info)\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'colana\x20service\x20install'+c['reset']+_0x5ecbac(0x1b1)+c[_0x5ecbac(0x208)]+'colana\x20service\x20uninstall'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x182)+c[_0x5ecbac(0x208)]+_0x5ecbac(0x19f)+c['reset']+'\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'colana\x20service\x20logs'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)\x0a\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x209)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1d8)+c['cmd']+'--version'+c['reset']+',\x20'+c[_0x5ecbac(0x208)]+'-v'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c[_0x5ecbac(0x208)]+'--help'+c[_0x5ecbac(0x218)]+',\x20'+c['cmd']+'-h'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+'--port'+c['reset']+'\x20<number>\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20specific\x20port\x20'+c['muted']+_0x5ecbac(0x195)+c['reset']+'\x0a\x0a'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1b5)+c['reset']+'\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c[_0x5ecbac(0x218)]+'\x20'+c[_0x5ecbac(0x208)]+'colana'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20the\x20dashboard\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c[_0x5ecbac(0x208)]+_0x5ecbac(0x18c)+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Check\x20CLI\x20agents\x20and\x20system\x20health\x0a\x20\x20'+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c[_0x5ecbac(0x208)]+'colana\x20doctor\x20--verbose'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x201)+c[_0x5ecbac(0x193)]+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20service\x20install'+c[_0x5ecbac(0x218)]+'\x20\x20Install\x20'+brandName()+_0x5ecbac(0x165)+c[_0x5ecbac(0x193)]+'$'+c[_0x5ecbac(0x218)]+'\x20'+c[_0x5ecbac(0x208)]+_0x5ecbac(0x214)+c['reset']+_0x5ecbac(0x1d1)+c[_0x5ecbac(0x193)]+'v'+_0x5e5a0c['version']+c['reset']+'\x20'+c['muted']+'—'+c['reset']+'\x20'+c['url']+_0x5ecbac(0x20d)+c[_0x5ecbac(0x218)]+'\x0a'),process[_0x5ecbac(0x185)](0x0);}if(process['argv'][0x2]==='doctor'){const _0x3e9363=process['argv']['includes']('--verbose')||process['argv'][_0x5ecbac(0x1bc)]('-v'),{isNativeWindows:_0x3278d9,wslAvailable:_0x160805}=detectWindowsWsl();_0x3278d9&&_0x160805&&(print(''),print('\x20\x20'+icons[_0x5ecbac(0x203)]+'\x20\x20Native\x20Windows\x20detected\x20with\x20WSL2\x20available.'),print('\x20\x20\x20\x20\x20'+c['muted']+_0x5ecbac(0x1a6)+brandName()+'\x20there\x20instead.'+c[_0x5ecbac(0x218)]),print('')),await runDoctorChecks(_0x3e9363),process['exit'](0x0);}if(process[_0x5ecbac(0x1de)][0x2]==='admin'){const _0x39d647=a0_0x4109b3[_0x5ecbac(0x17e)](__dirname,_0x5ecbac(0x1ea));process['argv']['splice'](0x2,0x1),await import(toImportPath(_0x39d647));return;}if(process['argv'][0x2]==='service'){const {installService:_0x1f1618,uninstallService:_0x5bd44b,getServiceStatus:_0x23312b,getServiceLogs:_0x17c143}=await import(toImportPath(a0_0x4109b3[_0x5ecbac(0x17e)](ROOT,_0x5ecbac(0x1a3),_0x5ecbac(0x1e3)))),_0x3a483d=process[_0x5ecbac(0x1de)][0x3];switch(_0x3a483d){case _0x5ecbac(0x1a9):{print(''),print('\x20\x20Installing\x20'+brandName()+_0x5ecbac(0x1fe)),print('');const _0x333d3c=_0x1f1618();print(_0x333d3c[_0x5ecbac(0x18b)]?'\x20\x20'+icons[_0x5ecbac(0x20e)]+'\x20'+_0x333d3c['message']:'\x20\x20'+icons['fail']+'\x20'+_0x333d3c[_0x5ecbac(0x1b4)]),print('');_0x333d3c[_0x5ecbac(0x18b)]&&(print('\x20\x20'+brandName()+'\x20will\x20now\x20auto-start\x20on\x20login.'),print('\x20\x20'+c[_0x5ecbac(0x193)]+_0x5ecbac(0x19e)+c['reset']+'\x20'+c[_0x5ecbac(0x1c5)]+'http://localhost:9876'+c[_0x5ecbac(0x218)]));print('');break;}case'uninstall':{print(''),print(_0x5ecbac(0x1a7)+brandName()+'\x20background\x20service...');const _0x3e3b95=_0x5bd44b();print(_0x3e3b95['success']?'\x20\x20'+icons[_0x5ecbac(0x20e)]+'\x20'+_0x3e3b95['message']:'\x20\x20'+icons[_0x5ecbac(0x215)]+'\x20'+_0x3e3b95['message']),print('');break;}case'status':{print('');const _0x39a908=_0x23312b();print('\x20\x20'+c['muted']+'Platform:'+c['reset']+'\x20\x20'+c[_0x5ecbac(0x1ae)]+_0x39a908[_0x5ecbac(0x1ad)]+c[_0x5ecbac(0x218)]),print('\x20\x20'+c[_0x5ecbac(0x193)]+'Installed:'+c[_0x5ecbac(0x218)]+'\x20'+(_0x39a908[_0x5ecbac(0x1d3)]?c[_0x5ecbac(0x18b)]+_0x5ecbac(0x17c)+c[_0x5ecbac(0x218)]:c[_0x5ecbac(0x193)]+'no'+c[_0x5ecbac(0x218)])),print('\x20\x20'+c[_0x5ecbac(0x193)]+_0x5ecbac(0x18d)+c['reset']+'\x20\x20\x20'+(_0x39a908['running']?c['success']+'yes'+c['reset']:c['muted']+'no'+c['reset'])),print('');break;}case _0x5ecbac(0x1e9):{const _0x55c2bb=_0x17c143();print(_0x55c2bb);break;}default:print(''),print('\x20\x20'+c[_0x5ecbac(0x1e5)]+_0x5ecbac(0x1f1)+c[_0x5ecbac(0x218)]+'\x20'+c['cmd']+_0x5ecbac(0x217)+c['reset']+_0x5ecbac(0x1df)),print(''),print('\x20\x20'+c['heading']+'Commands:'+c[_0x5ecbac(0x218)]),print(_0x5ecbac(0x1d9)+c[_0x5ecbac(0x208)]+'install'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x1dd)),print(_0x5ecbac(0x1d9)+c['cmd']+'uninstall'+c[_0x5ecbac(0x218)]+_0x5ecbac(0x205)),print(_0x5ecbac(0x1d9)+c['cmd']+_0x5ecbac(0x1da)+c[_0x5ecbac(0x218)]+_0x5ecbac(0x200)),print('\x20\x20\x20\x20'+c['cmd']+'logs'+c[_0x5ecbac(0x218)]+'\x20\x20\x20\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)'),print('');}process[_0x5ecbac(0x185)](0x0);}!a0_0x486500[_0x5ecbac(0x1e7)](DATA_DIR)&&a0_0x486500[_0x5ecbac(0x172)](DATA_DIR,{'recursive':!![]});const _0x588a19=a0_0x4109b3['join'](DATA_DIR,'.first-run-done'),_0x1b475c=!a0_0x486500['existsSync'](_0x588a19);_0x1b475c&&(await firstRunWizard(),a0_0x486500['writeFileSync'](_0x588a19,new Date()['toISOString']())),print('\x20\x20'+icons[_0x5ecbac(0x17b)]+_0x5ecbac(0x207)+brandName()+_0x5ecbac(0x1c6)),await startServer(),setTimeout(()=>{const _0x1e33d1=_0x5ecbac,_0x2ef55d=process['env'][_0x1e33d1(0x171)]||0x2694,_0x173c17='http://localhost:'+_0x2ef55d;openBrowser(_0x173c17);},0xbb8);}main()['catch'](_0x2de58d=>{const _0x1a4672=a0_0x5b13a3;console[_0x1a4672(0x174)]('Colana\x20failed\x20to\x20start:\x20'+_0x2de58d['message']),process[_0x1a4672(0x185)](0x1);});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "colana",
3
- "version": "1.0.0-beta.96",
3
+ "version": "1.0.0-beta.97",
4
4
  "description": "Agent-First. Multiplied. Multi-agent command center for AI coding agents.",
5
5
  "type": "module",
6
6
  "main": "server/index.js",