colana 1.0.0-beta.113 → 1.0.0-beta.115

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 (79) hide show
  1. package/bin/admin.js +1 -1
  2. package/bin/colana.js +1 -1
  3. package/package.json +6 -8
  4. package/public/dist/app.js +1 -1
  5. package/public/wizard.js +1 -1
  6. package/server/admin.js +1 -1
  7. package/server/agent/index.js +1 -1
  8. package/server/agent/manager.js +1 -1
  9. package/server/agent-control-routes.js +1 -1
  10. package/server/analytics-routes.js +1 -1
  11. package/server/analytics.js +1 -1
  12. package/server/auth.js +1 -1
  13. package/server/auto-resume.js +1 -1
  14. package/server/blueprint-exporter.js +1 -1
  15. package/server/blueprint-importer.js +1 -1
  16. package/server/blueprint-routes.js +1 -1
  17. package/server/blueprint-store.js +1 -1
  18. package/server/blueprint-sync.js +1 -1
  19. package/server/brand.js +1 -1
  20. package/server/checkpoint-store.js +1 -1
  21. package/server/config.js +1 -1
  22. package/server/context-sync.js +1 -1
  23. package/server/csp-report-routes.js +1 -1
  24. package/server/db.js +1 -1
  25. package/server/dependency-detector.js +1 -1
  26. package/server/diagnostics-routes.js +1 -1
  27. package/server/error-recovery.js +1 -1
  28. package/server/errors.js +1 -1
  29. package/server/file-browser.js +1 -1
  30. package/server/git-ops.js +1 -1
  31. package/server/gog-auth.js +1 -1
  32. package/server/index.js +1 -1
  33. package/server/installer/index.js +1 -1
  34. package/server/installer/manager.js +1 -1
  35. package/server/integration-hub.js +1 -1
  36. package/server/integration-routes.js +1 -1
  37. package/server/key-manager.js +1 -1
  38. package/server/license-routes.js +1 -1
  39. package/server/license.js +1 -1
  40. package/server/logger.js +1 -1
  41. package/server/migration.js +1 -1
  42. package/server/openclaw-config.js +1 -1
  43. package/server/permission-mcp.js +1 -1
  44. package/server/permission-routes.js +1 -1
  45. package/server/personal-agent-routes.js +1 -1
  46. package/server/personal-chat-store.js +1 -1
  47. package/server/platform.js +1 -1
  48. package/server/port-finder.js +1 -1
  49. package/server/preflight.js +1 -1
  50. package/server/project-config.js +1 -1
  51. package/server/project-routes.js +1 -1
  52. package/server/project-store.js +1 -1
  53. package/server/pty/index.js +1 -1
  54. package/server/pty/manager.js +1 -1
  55. package/server/runtime-policy.js +1 -1
  56. package/server/server-control-routes.js +1 -1
  57. package/server/service-manager.js +1 -1
  58. package/server/session-routes.js +1 -1
  59. package/server/session-store.js +1 -1
  60. package/server/settings-routes.js +1 -1
  61. package/server/settings-store.js +1 -1
  62. package/server/snippet-routes.js +1 -1
  63. package/server/snippet-store.js +1 -1
  64. package/server/spawn-env.js +1 -1
  65. package/server/system-info.js +1 -1
  66. package/server/template-routes.js +1 -1
  67. package/server/template-store.js +1 -1
  68. package/server/updater/applier.js +1 -1
  69. package/server/updater/auto-apply.js +1 -1
  70. package/server/updater/downloader.js +1 -1
  71. package/server/updater/index.js +1 -1
  72. package/server/updater/manifest.js +1 -1
  73. package/server/updater/orchestrator.js +1 -1
  74. package/server/updater.js +1 -1
  75. package/server/usage-tracker.js +1 -1
  76. package/server/validation.js +1 -1
  77. package/server/webhook-routes.js +1 -1
  78. package/server/wizard-routes.js +1 -1
  79. 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_0x4763fe=a0_0x26b7;(function(_0x513a91,_0x1a2c82){const _0x59edbf=a0_0x26b7,_0x5ccd4f=_0x513a91();while(!![]){try{const _0x3fd47b=-parseInt(_0x59edbf(0x188))/0x1+parseInt(_0x59edbf(0x163))/0x2*(parseInt(_0x59edbf(0x15b))/0x3)+parseInt(_0x59edbf(0x156))/0x4+-parseInt(_0x59edbf(0x1a9))/0x5+parseInt(_0x59edbf(0x1ab))/0x6*(parseInt(_0x59edbf(0x1a6))/0x7)+parseInt(_0x59edbf(0x16e))/0x8+-parseInt(_0x59edbf(0x166))/0x9;if(_0x3fd47b===_0x1a2c82)break;else _0x5ccd4f['push'](_0x5ccd4f['shift']());}catch(_0x473fab){_0x5ccd4f['push'](_0x5ccd4f['shift']());}}}(a0_0x6ec8,0x896e7));import a0_0x52d590 from'fs';import a0_0x4c30a3 from'path';import a0_0x2d4236 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x4c30a3[a0_0x4763fe(0x19e)](fileURLToPath(import.meta.url));function parseArgs(_0x324e78){const _0xb4477b=a0_0x4763fe,_0x1a2a03=_0x324e78[_0xb4477b(0x1ad)](0x2),_0x21d6ea=_0x1a2a03[0x0],_0x5ddad2=[],_0x514ebf={};for(let _0x1bb83a=0x1;_0x1bb83a<_0x1a2a03['length'];_0x1bb83a++){if(_0x1a2a03[_0x1bb83a][_0xb4477b(0x170)]('--')){let _0x5ea879=_0x1a2a03[_0x1bb83a][_0xb4477b(0x1ad)](0x2),_0x460693;const _0x38d2e8=_0x5ea879[_0xb4477b(0x162)]('=');_0x38d2e8!==-0x1?(_0x460693=_0x5ea879[_0xb4477b(0x1ad)](_0x38d2e8+0x1),_0x5ea879=_0x5ea879['slice'](0x0,_0x38d2e8)):_0x460693=_0x1bb83a+0x1<_0x1a2a03['length']&&!_0x1a2a03[_0x1bb83a+0x1][_0xb4477b(0x170)]('--')?_0x1a2a03[++_0x1bb83a]:'true',_0x514ebf[_0x5ea879]=_0x460693;}else _0x5ddad2['push'](_0x1a2a03[_0x1bb83a]);}return{'command':_0x21d6ea,'flags':_0x514ebf,'positional':_0x5ddad2};}function maskKey(_0x489513){const _0x36b523=a0_0x4763fe;if(!_0x489513||_0x489513[_0x36b523(0x177)]<=0x8)return'****';return _0x489513['slice'](0x0,0x4)+'****';}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x1c08c7=a0_0x4763fe;for(let _0xd64859=0x0;_0xd64859<MAX_PORT_SCAN;_0xd64859++){const _0x308c71=DEFAULT_PORT+_0xd64859;try{const _0xe50afb=await fetch(_0x1c08c7(0x190)+_0x308c71+'/api/health',{'signal':AbortSignal[_0x1c08c7(0x1a0)](0x1f4)});if(_0xe50afb['ok']){const _0x57548e=await _0xe50afb['json']();if(_0x57548e['status']==='ok')return _0x1c08c7(0x190)+_0x308c71;}}catch{}}return null;}async function createKeyViaApi(_0x4093ee,_0x2e8bd5){const _0x59e59a=a0_0x4763fe,_0x5b47d8=await fetch(_0x4093ee+_0x59e59a(0x179),{'method':_0x59e59a(0x19a),'headers':{'Content-Type':'application/json'},'body':JSON[_0x59e59a(0x194)](_0x2e8bd5)});if(!_0x5b47d8['ok']){const _0xd672a2=await _0x5b47d8['json']()[_0x59e59a(0x165)](()=>({'error':'HTTP\x20'+_0x5b47d8[_0x59e59a(0x18b)]}));throw new Error(_0xd672a2['error']||_0x59e59a(0x198)+_0x5b47d8['status']);}return _0x5b47d8[_0x59e59a(0x182)]();}async function listKeysViaApi(_0x464dd3,_0x3148ab){const _0x1bc4f3=a0_0x4763fe,_0x4aa17d=new URLSearchParams();if(_0x3148ab[_0x1bc4f3(0x19f)])_0x4aa17d[_0x1bc4f3(0x187)](_0x1bc4f3(0x19f),_0x3148ab[_0x1bc4f3(0x19f)]);if(_0x3148ab['status'])_0x4aa17d[_0x1bc4f3(0x187)]('status',_0x3148ab['status']);const _0x536486=_0x4aa17d['toString'](),_0x1813bf=await fetch(_0x464dd3+'/api/admin/keys'+(_0x536486?'?'+_0x536486:''));if(!_0x1813bf['ok']){const _0x383e21=await _0x1813bf[_0x1bc4f3(0x182)]()['catch'](()=>({'error':'HTTP\x20'+_0x1813bf['status']}));throw new Error(_0x383e21[_0x1bc4f3(0x199)]||_0x1bc4f3(0x198)+_0x1813bf['status']);}return _0x1813bf['json']();}async function revokeKeyViaApi(_0x4868fb,_0x459df9){const _0x384a1e=a0_0x4763fe,_0x55bde2=await fetch(_0x4868fb+'/api/admin/keys/'+_0x459df9,{'method':'DELETE'});if(!_0x55bde2['ok']){const _0x5d32f4=await _0x55bde2['json']()[_0x384a1e(0x165)](()=>({'error':_0x384a1e(0x1a5)+_0x55bde2[_0x384a1e(0x18b)]}));throw new Error(_0x5d32f4['error']||'Server\x20responded\x20with\x20'+_0x55bde2['status']);}return _0x55bde2[_0x384a1e(0x182)]();}let _dbReady=![];function a0_0x26b7(_0x58634d,_0x82ae76){_0x58634d=_0x58634d-0x153;const _0x6ec8e8=a0_0x6ec8();let _0x26b77d=_0x6ec8e8[_0x58634d];if(a0_0x26b7['agJVyk']===undefined){var _0x1d58f3=function(_0x3319aa){const _0xaccad4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x52d590='',_0x4c30a3='';for(let _0x2d4236=0x0,_0x324e78,_0x1a2a03,_0x21d6ea=0x0;_0x1a2a03=_0x3319aa['charAt'](_0x21d6ea++);~_0x1a2a03&&(_0x324e78=_0x2d4236%0x4?_0x324e78*0x40+_0x1a2a03:_0x1a2a03,_0x2d4236++%0x4)?_0x52d590+=String['fromCharCode'](0xff&_0x324e78>>(-0x2*_0x2d4236&0x6)):0x0){_0x1a2a03=_0xaccad4['indexOf'](_0x1a2a03);}for(let _0x5ddad2=0x0,_0x514ebf=_0x52d590['length'];_0x5ddad2<_0x514ebf;_0x5ddad2++){_0x4c30a3+='%'+('00'+_0x52d590['charCodeAt'](_0x5ddad2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4c30a3);};a0_0x26b7['jqDDds']=_0x1d58f3,a0_0x26b7['UWKxpD']={},a0_0x26b7['agJVyk']=!![];}const _0x2cb03b=_0x6ec8e8[0x0],_0x5357eb=_0x58634d+_0x2cb03b,_0x50c3f2=a0_0x26b7['UWKxpD'][_0x5357eb];return!_0x50c3f2?(_0x26b77d=a0_0x26b7['jqDDds'](_0x26b77d),a0_0x26b7['UWKxpD'][_0x5357eb]=_0x26b77d):_0x26b77d=_0x50c3f2,_0x26b77d;}async function ensureDb(){const _0x46e88f=a0_0x4763fe;if(_dbReady)return;const {getDb:_0x3548b5}=await import(_0x46e88f(0x169));await _0x3548b5(),_dbReady=!![];}async function createKey(_0x75b2fa){const _0x1ddb33=a0_0x4763fe,_0x1517b4=_0x75b2fa['name'],_0x292f1c=_0x75b2fa['type']||_0x1ddb33(0x189),_0x2d89dc=_0x75b2fa['email']||null,_0x19fb51=_0x75b2fa['expires']||null;if(!_0x1517b4){console[_0x1ddb33(0x199)](_0x1ddb33(0x18d)+icons[_0x1ddb33(0x1ae)]+'\x20'+c[_0x1ddb33(0x199)]+_0x1ddb33(0x176)+c[_0x1ddb33(0x195)]+'\x0a'),console[_0x1ddb33(0x199)](_0x1ddb33(0x17d)),process[_0x1ddb33(0x172)](0x1);return;}const _0x5dd32c=[_0x1ddb33(0x183),_0x1ddb33(0x189),'beta'];if(!_0x5dd32c[_0x1ddb33(0x1a3)](_0x292f1c)){console[_0x1ddb33(0x199)](_0x1ddb33(0x18d)+icons['fail']+'\x20'+c['error']+'ERROR:\x20Invalid\x20type\x20\x22'+_0x292f1c+_0x1ddb33(0x161)+_0x5dd32c['join'](',\x20')+c['reset']+'\x0a'),process['exit'](0x1);return;}const _0x746b57=await findRunningServer();let _0x1d7b35;if(_0x746b57)try{_0x1d7b35=await createKeyViaApi(_0x746b57,{'name':_0x1517b4,'type':_0x292f1c,'email':_0x2d89dc||undefined,'expires':_0x19fb51||undefined});}catch(_0x4e9c01){console[_0x1ddb33(0x199)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x1ddb33(0x199)]+_0x4e9c01[_0x1ddb33(0x17e)]+c[_0x1ddb33(0x195)]+'\x20'+c['muted']+'(via\x20server)'+c[_0x1ddb33(0x195)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {generateKey:_0x5a8247}=await import('../server/key-manager.js');try{_0x1d7b35=_0x5a8247(_0x1517b4,_0x292f1c,_0x2d89dc,_0x19fb51);}catch(_0x4bb279){console['error']('\x0a\x20\x20'+icons[_0x1ddb33(0x1ae)]+'\x20'+c['error']+_0x4bb279['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}if(!_0x1d7b35||!_0x1d7b35[_0x1ddb33(0x153)]){console[_0x1ddb33(0x199)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x1ddb33(0x199)]+_0x1ddb33(0x185)+c['reset']+'\x0a'),process[_0x1ddb33(0x172)](0x1);return;}console[_0x1ddb33(0x184)](''),console['log']('\x20\x20'+icons[_0x1ddb33(0x16f)]+_0x1ddb33(0x16c)),console['log']('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c['reset']),console['log']('\x20\x20\x20\x20'+c[_0x1ddb33(0x158)]+'Name:'+c['reset']+'\x20\x20\x20\x20'+c['value']+_0x1d7b35['name']+c['reset']),console['log'](_0x1ddb33(0x167)+c['muted']+'Type:'+c[_0x1ddb33(0x195)]+_0x1ddb33(0x167)+c['value']+_0x1d7b35[_0x1ddb33(0x19f)]+c['reset']),console['log'](_0x1ddb33(0x167)+c[_0x1ddb33(0x158)]+'ID:'+c[_0x1ddb33(0x195)]+'\x20\x20\x20\x20\x20\x20'+c[_0x1ddb33(0x186)]+_0x1d7b35['id']+c['reset']),console[_0x1ddb33(0x184)](_0x1ddb33(0x167)+c[_0x1ddb33(0x158)]+_0x1ddb33(0x19b)+c[_0x1ddb33(0x195)]+'\x20\x20\x20\x20\x20'+c['warn']+_0x1d7b35['raw']+c[_0x1ddb33(0x195)]),console[_0x1ddb33(0x184)]('\x20\x20'+c['muted']+'─'['repeat'](0x28)+c['reset']),console['log']('\x20\x20'+c['warn']+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c[_0x1ddb33(0x195)]),_0x746b57?console[_0x1ddb33(0x184)]('\x20\x20'+c['muted']+_0x1ddb33(0x196)+c[_0x1ddb33(0x195)]):console[_0x1ddb33(0x184)]('\x20\x20'+c[_0x1ddb33(0x158)]+'(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)'+c['reset']),console[_0x1ddb33(0x184)]('');}function a0_0x6ec8(){const _0x469534=['C3rHDhvZ','cIaGtM8GA2v5CYbMB3vUzc4k','cIaG','ieTLEsa','y29Syw5HigfKBwLUigrVy3rVCG','Ahr0CdOVlZeYnY4WlJaUmtO','ls10ExbLihn0ywzMFgfKBwLUFgjLDge','cIaGtM8GC3rHzMyGB3iGywrTAw4GA2v5CYbJB25MAwD1CMvKlIbtzxqGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO','qwrTAw4Gq0Xj','C3rYAw5NAwz5','CMvZzxq','kenYzwf0zwqGDMLHihj1BM5PBMCGC2vYDMvYkq','ls1LBwfPBcb1C2vYqgv4yw1WBguUy29T','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','zxjYB3i','ue9tva','s2v5oG','CMv2B2TLlwTLEq','C3bSAxq','zgLYBMfTzq','DhLWzq','DgLTzw91Da','A2v5CW','icaGicaGicaGicaGieDLBMvYyxrLigeGBMv3igXPy2vUC2uGA2v5icHZDg9YzwqGAw4GreiPcIaGicaGia','Aw5JBhvKzxm','rvjst1i6ieTLEsbjrcbPCYbYzxf1AxjLzc4','sfruuca','mZKWmJu0oxHNA01quq','y29Syw5HigfKBwLUigXPC3qTA2v5CW','AgvSCa','mtiYmJi4mhHAr1H6Ca','CMvWzwf0','nLvht3n5sW','CgfKrw5K','C2XPy2u','zMfPBa','BMfTzq','vg90ywW6ia','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','mtq2nZK2offXDxv2Da','qurnsu5Fs0vzuW','Bxv0zwq','ls1Uyw1Licjoyw1LiG','ls1LEhbPCMvZidiWmJyTmtiTmZe','mtqYnJvbC1PkuuW','zMLSDgvY','tgLJzw5ZzsblzxLZoG','qwrTAw4Gs2v5CZO','AgvHzgLUzW','Dg9mB2nHBgveyxrLu3rYAw5N','iI4GtxvZDcbIzsbVBMuGB2y6ia','Aw5KzxHpzG','mNjfyvDAEq','cIaGuNvUicDJB2XHBMeGzg9JDg9YjYbMB3iGC3LZDgvTigrPywDUB3n0AwnZlGO','y2f0y2G','nZi1nte2mwvrDevsvW','icaGia','y21K','lI4VC2vYDMvYl2rIlMPZ','tMv2zxi','igHHCYbIzwvUihjLDM9RzwqUcG','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','vxnHz2u6','nJu1otm4nhjUvMDVrq','CgfZCW','C3rHCNrZv2L0Aa','cIaGica','zxHPDa','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','khzPysbZzxj2zxiP','y3jLyxrLlwTLEq','rvjst1i6ic0TBMfTzsbPCYbYzxf1AxjLzc4','BgvUz3rO','q3jLyxrLza','l2fWAs9Hzg1PBI9RzxLZ','icaOqurnsu5Fs0vzuYK','DhjPBq','y29Syw5HigfKBwLUihn0ywzMlwTLExm','icbvC2fNztOGy29Syw5HigfKBwLUignYzwf0zs1RzxKGls1Uyw1LicjtyxjHAciGls10ExbLihn0ywzMifSTlwvTywLSihHDifSTlwv4CgLYzxmGmJaYnI0XmI0Zmv0k','BwvZC2fNzq','zg9JDg9Y','BgLZDc1RzxLZ','icaGicaGicaGicaGicbfEhbPCNKGzgf0zsaOB3b0Aw9UywWPcIaGica','ANnVBG','ywrTAw4','Bg9N','s2v5igDLBMvYyxrPB24GCMv0DxjUzwqGyw4GDw5LEhbLy3rLzcbYzxnWB25Zzs4','DMfSDwu','C2v0','mtm1nJCZrgvrwhjw','C3rHzMy','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica'];a0_0x6ec8=function(){return _0x469534;};return a0_0x6ec8();}async function listKeysCmd(_0x5ea95b){const _0x38c801=a0_0x4763fe,_0x8b0301={};if(_0x5ea95b[_0x38c801(0x19f)])_0x8b0301[_0x38c801(0x19f)]=_0x5ea95b['type'];if(_0x5ea95b[_0x38c801(0x18b)])_0x8b0301['status']=_0x5ea95b['status'];const _0x21210d=await findRunningServer();let _0x11b98c;if(_0x21210d)try{_0x11b98c=await listKeysViaApi(_0x21210d,_0x8b0301);}catch(_0x21e862){console['error'](_0x38c801(0x18d)+icons['fail']+'\x20'+c[_0x38c801(0x199)]+_0x21e862[_0x38c801(0x17e)]+c['reset']+'\x20'+c[_0x38c801(0x158)]+_0x38c801(0x174)+c[_0x38c801(0x195)]+'\x0a'),process[_0x38c801(0x172)](0x1);return;}else{await ensureDb();const {listKeys:_0xfadb56}=await import(_0x38c801(0x155));_0x11b98c=_0xfadb56(_0x8b0301);}if(!_0x11b98c||!_0x11b98c[_0x38c801(0x1a1)]||!_0x11b98c[_0x38c801(0x1a1)][_0x38c801(0x177)]){console[_0x38c801(0x184)](_0x38c801(0x18c));return;}console['log'](''),console['log']('\x20\x20'+c[_0x38c801(0x15f)]+_0x38c801(0x15d)+c[_0x38c801(0x195)]),console['log']('\x20\x20'+c['muted']+'─'[_0x38c801(0x1aa)](0x50)+c[_0x38c801(0x195)]),console[_0x38c801(0x184)]('\x20\x20'+c[_0x38c801(0x158)]+'ID'['padEnd'](0xa)+'Name'[_0x38c801(0x1ac)](0x14)+'Type'['padEnd'](0xa)+'Status'[_0x38c801(0x1ac)](0xa)+'Expires'['padEnd'](0xf)+_0x38c801(0x178)+c[_0x38c801(0x195)]),console['log']('\x20\x20'+c['muted']+'─'['repeat'](0x50)+c[_0x38c801(0x195)]);for(const _0x3082c9 of _0x11b98c['keys']){const _0x17f5c4=(_0x3082c9['id']||'')['slice'](0x0,0x8),_0x165faf=(_0x3082c9[_0x38c801(0x153)]||'')[_0x38c801(0x1ad)](0x0,0x12)['padEnd'](0x14),_0x29a6a5=(_0x3082c9['type']||'')['padEnd'](0xa),_0x1f8344=(_0x3082c9[_0x38c801(0x18b)]||'')['padEnd'](0xa),_0x2fb820=(_0x3082c9['expiry']?new Date(_0x3082c9['expiry'])[_0x38c801(0x160)]():_0x38c801(0x16a))['padEnd'](0xf),_0x58ff8e=_0x3082c9['created_at']?new Date(_0x3082c9['created_at'])['toLocaleDateString']():'-';console['log']('\x20\x20'+_0x17f5c4['padEnd'](0xa)+_0x165faf+_0x29a6a5+_0x1f8344+_0x2fb820+_0x58ff8e);}console[_0x38c801(0x184)]('\x20\x20'+c[_0x38c801(0x158)]+'─'['repeat'](0x50)+c['reset']),console[_0x38c801(0x184)]('\x20\x20'+c[_0x38c801(0x158)]+_0x38c801(0x154)+_0x11b98c[_0x38c801(0x1a1)]['length']+'\x20key(s)'+c['reset']+'\x0a');}async function revokeKeyCmd(_0x48f348){const _0x10fdc0=a0_0x4763fe,_0x5a091c=_0x48f348[0x0];if(!_0x5a091c){console[_0x10fdc0(0x199)]('\x0a\x20\x20'+icons[_0x10fdc0(0x1ae)]+'\x20'+c[_0x10fdc0(0x199)]+_0x10fdc0(0x1a4)+c['reset']+'\x0a'),console[_0x10fdc0(0x199)]('\x20\x20Usage:\x20colana\x20admin\x20revoke-key\x20<id>\x0a'),process[_0x10fdc0(0x172)](0x1);return;}const _0x177191=await findRunningServer();if(_0x177191)try{await revokeKeyViaApi(_0x177191,_0x5a091c),console['log'](_0x10fdc0(0x18d)+icons[_0x10fdc0(0x16f)]+_0x10fdc0(0x18e)+c[_0x10fdc0(0x186)]+_0x5a091c+c[_0x10fdc0(0x195)]+_0x10fdc0(0x16b));}catch(_0x4fdcc5){console['error'](_0x10fdc0(0x18d)+icons[_0x10fdc0(0x1ae)]+'\x20'+c[_0x10fdc0(0x199)]+_0x4fdcc5[_0x10fdc0(0x17e)]+c[_0x10fdc0(0x195)]+'\x20'+c['muted']+'(via\x20server)'+c[_0x10fdc0(0x195)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x3a4f01}=await import('../server/key-manager.js');try{_0x3a4f01(_0x5a091c),console[_0x10fdc0(0x184)]('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x5a091c+c[_0x10fdc0(0x195)]+_0x10fdc0(0x16b));}catch(_0x6cc669){console['error']('\x0a\x20\x20'+icons[_0x10fdc0(0x1ae)]+'\x20'+c['error']+_0x6cc669[_0x10fdc0(0x17e)]+c[_0x10fdc0(0x195)]+'\x0a'),process[_0x10fdc0(0x172)](0x1);return;}}}function showHelp(){const _0x284683=a0_0x4763fe;console[_0x284683(0x184)]('\x0a\x20\x20'+brandName()+'\x20'+c[_0x284683(0x158)]+_0x284683(0x193)+c['reset']+'\x0a\x0a\x20\x20'+c['heading']+_0x284683(0x16d)+c['reset']+_0x284683(0x171)+c[_0x284683(0x168)]+_0x284683(0x18f)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20system\x20diagnostics\x0a\x20\x20\x20\x20'+c[_0x284683(0x168)]+_0x284683(0x17c)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20configured\x20staff/admin\x20keys\x20(env\x20vars)\x0a\x20\x20\x20\x20'+c[_0x284683(0x168)]+'colana\x20admin\x20create-key'+c[_0x284683(0x195)]+_0x284683(0x1a2)+c[_0x284683(0x158)]+_0x284683(0x159)+c[_0x284683(0x195)]+'\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[_0x284683(0x195)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Key\x20type\x20(default:\x20staff)\x0a\x20\x20\x20\x20\x20\x20'+c[_0x284683(0x158)]+_0x284683(0x197)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Email\x20(optional)\x0a\x20\x20\x20\x20\x20\x20'+c['muted']+_0x284683(0x15a)+c['reset']+_0x284683(0x181)+c[_0x284683(0x168)]+_0x284683(0x1a7)+c[_0x284683(0x195)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20DB-stored\x20license\x20keys\x0a\x20\x20\x20\x20\x20\x20'+c[_0x284683(0x158)]+_0x284683(0x191)+c[_0x284683(0x195)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20type\x0a\x20\x20\x20\x20\x20\x20'+c[_0x284683(0x158)]+'--status\x20active|revoked'+c['reset']+_0x284683(0x18a)+c['cmd']+'colana\x20admin\x20revoke-key\x20<id>'+c[_0x284683(0x195)]+_0x284683(0x173)+c[_0x284683(0x158)]+'Polar.sh\x20key\x20management:'+c['reset']+_0x284683(0x171)+c['url']+'https://dashboard.polar.sh'+c['reset']+'\x0a');}function doctor(){const _0x3b26ee=a0_0x4763fe;console['log'](_0x3b26ee(0x164));}function staffKeys(){const _0x1a1295=a0_0x4763fe,_0x35d3dd=process['env']['STAFF_KEYS']||'',_0x125796=process['env'][_0x1a1295(0x157)]||'',_0x39bd86=_0x35d3dd[_0x1a1295(0x19d)](',')['map'](_0x18f40c=>_0x18f40c[_0x1a1295(0x17b)]())[_0x1a1295(0x15c)](Boolean),_0x3fca1f=_0x125796[_0x1a1295(0x19d)](',')['map'](_0x3d6811=>_0x3d6811[_0x1a1295(0x17b)]())['filter'](Boolean);if(_0x39bd86['length']===0x0&&_0x3fca1f['length']===0x0){console[_0x1a1295(0x184)](_0x1a1295(0x192));return;}console[_0x1a1295(0x184)](''),_0x39bd86['length']>0x0&&(console[_0x1a1295(0x184)]('\x20\x20'+c['heading']+'Staff\x20Keys:'+c[_0x1a1295(0x195)]),console['log']('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c['reset']),_0x39bd86['forEach']((_0x3e1027,_0x22b7c6)=>{const _0x257595=_0x1a1295;console[_0x257595(0x184)]('\x20\x20\x20\x20'+(_0x22b7c6+0x1)+'.\x20'+maskKey(_0x3e1027)+'\x20\x20(STAFF_KEYS)');}),console[_0x1a1295(0x184)]('')),_0x3fca1f['length']>0x0&&(console['log']('\x20\x20'+c[_0x1a1295(0x15f)]+_0x1a1295(0x15e)+c['reset']),console[_0x1a1295(0x184)]('\x20\x20'+c['muted']+'─'['repeat'](0xa)+c[_0x1a1295(0x195)]),_0x3fca1f['forEach']((_0x369a56,_0x355da7)=>{const _0x2fb9ee=_0x1a1295;console[_0x2fb9ee(0x184)](_0x2fb9ee(0x167)+(_0x355da7+0x1)+'.\x20'+maskKey(_0x369a56)+_0x2fb9ee(0x17a));}),console[_0x1a1295(0x184)]('')),console[_0x1a1295(0x184)]('\x20\x20To\x20add/remove\x20keys,\x20update\x20the\x20STAFF_KEYS\x20or\x20ADMIN_KEYS\x20environment\x20variable.\x0a');}export async function main(){const _0x375aa6=a0_0x4763fe,{command:_0x152e53,flags:_0x1dccc3,positional:_0x57f6df}=parseArgs(process['argv']);if(!_0x152e53||_0x152e53===_0x375aa6(0x1a8)||_0x152e53==='--help'){showHelp();return;}switch(_0x152e53){case _0x375aa6(0x17f):return doctor();case'staff-keys':return staffKeys();case _0x375aa6(0x175):return createKey(_0x1dccc3);case _0x375aa6(0x180):return listKeysCmd(_0x1dccc3);case _0x375aa6(0x19c):return revokeKeyCmd(_0x57f6df);default:console[_0x375aa6(0x199)]('\x20\x20'+icons['fail']+'\x20Unknown\x20command:\x20'+c[_0x375aa6(0x186)]+_0x152e53+c[_0x375aa6(0x195)]),console['error']('\x20\x20'+c['muted']+'Run\x20\x22colana\x20admin\x20help\x22\x20for\x20usage.'+c[_0x375aa6(0x195)]),process[_0x375aa6(0x172)](0x1);return;}}!process['env']['VITEST']&&main()['catch'](_0x23ceaa=>{const _0x5b871f=a0_0x4763fe;console[_0x5b871f(0x199)]('\x20\x20'+icons[_0x5b871f(0x1ae)]+'\x20'+c[_0x5b871f(0x199)]+(_0x23ceaa['message']||_0x23ceaa)+c[_0x5b871f(0x195)]),process[_0x5b871f(0x172)](0x1);});
3
+ const a0_0x559772=a0_0x28a0;(function(_0x56fa3d,_0x343af4){const _0x2967f=a0_0x28a0,_0x2d0958=_0x56fa3d();while(!![]){try{const _0x21feeb=parseInt(_0x2967f(0x20d))/0x1*(parseInt(_0x2967f(0x22d))/0x2)+-parseInt(_0x2967f(0x1f5))/0x3+parseInt(_0x2967f(0x20a))/0x4*(parseInt(_0x2967f(0x1fa))/0x5)+parseInt(_0x2967f(0x20f))/0x6+-parseInt(_0x2967f(0x23c))/0x7+-parseInt(_0x2967f(0x227))/0x8*(parseInt(_0x2967f(0x1fe))/0x9)+-parseInt(_0x2967f(0x223))/0xa*(parseInt(_0x2967f(0x239))/0xb);if(_0x21feeb===_0x343af4)break;else _0x2d0958['push'](_0x2d0958['shift']());}catch(_0x2d3551){_0x2d0958['push'](_0x2d0958['shift']());}}}(a0_0x1da2,0x64a4b));import a0_0x4a826f from'fs';function a0_0x28a0(_0x296987,_0xf67d19){_0x296987=_0x296987-0x1e7;const _0x1da297=a0_0x1da2();let _0x28a09d=_0x1da297[_0x296987];if(a0_0x28a0['aqzUqE']===undefined){var _0x2b6ee9=function(_0x4cd16f){const _0x414475='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4a826f='',_0x365e43='';for(let _0x7fdba2=0x0,_0x464da0,_0x2b0f24,_0x5bceb4=0x0;_0x2b0f24=_0x4cd16f['charAt'](_0x5bceb4++);~_0x2b0f24&&(_0x464da0=_0x7fdba2%0x4?_0x464da0*0x40+_0x2b0f24:_0x2b0f24,_0x7fdba2++%0x4)?_0x4a826f+=String['fromCharCode'](0xff&_0x464da0>>(-0x2*_0x7fdba2&0x6)):0x0){_0x2b0f24=_0x414475['indexOf'](_0x2b0f24);}for(let _0x5400dd=0x0,_0x911847=_0x4a826f['length'];_0x5400dd<_0x911847;_0x5400dd++){_0x365e43+='%'+('00'+_0x4a826f['charCodeAt'](_0x5400dd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x365e43);};a0_0x28a0['LWSaMW']=_0x2b6ee9,a0_0x28a0['HKaVwj']={},a0_0x28a0['aqzUqE']=!![];}const _0x45e931=_0x1da297[0x0],_0x2eb619=_0x296987+_0x45e931,_0xec6c07=a0_0x28a0['HKaVwj'][_0x2eb619];return!_0xec6c07?(_0x28a09d=a0_0x28a0['LWSaMW'](_0x28a09d),a0_0x28a0['HKaVwj'][_0x2eb619]=_0x28a09d):_0x28a09d=_0xec6c07,_0x28a09d;}import a0_0x365e43 from'path';import a0_0x7fdba2 from'os';import{fileURLToPath}from'url';import{c,icons,brandName}from'../server/brand.js';const __dirname=a0_0x365e43['dirname'](fileURLToPath(import.meta.url));function parseArgs(_0x464da0){const _0x44bbec=a0_0x28a0,_0x2b0f24=_0x464da0['slice'](0x2),_0x5bceb4=_0x2b0f24[0x0],_0x5400dd=[],_0x911847={};for(let _0x12ce95=0x1;_0x12ce95<_0x2b0f24['length'];_0x12ce95++){if(_0x2b0f24[_0x12ce95]['startsWith']('--')){let _0x43a357=_0x2b0f24[_0x12ce95]['slice'](0x2),_0x5c9879;const _0x5aac35=_0x43a357[_0x44bbec(0x221)]('=');_0x5aac35!==-0x1?(_0x5c9879=_0x43a357['slice'](_0x5aac35+0x1),_0x43a357=_0x43a357[_0x44bbec(0x240)](0x0,_0x5aac35)):_0x5c9879=_0x12ce95+0x1<_0x2b0f24[_0x44bbec(0x230)]&&!_0x2b0f24[_0x12ce95+0x1]['startsWith']('--')?_0x2b0f24[++_0x12ce95]:_0x44bbec(0x22e),_0x911847[_0x43a357]=_0x5c9879;}else _0x5400dd['push'](_0x2b0f24[_0x12ce95]);}return{'command':_0x5bceb4,'flags':_0x911847,'positional':_0x5400dd};}function maskKey(_0x44822e){const _0x473a94=a0_0x28a0;if(!_0x44822e||_0x44822e[_0x473a94(0x230)]<=0x8)return _0x473a94(0x1fd);return _0x44822e[_0x473a94(0x240)](0x0,0x4)+'****';}const DEFAULT_PORT=0x2694,MAX_PORT_SCAN=0x64;async function findRunningServer(){const _0x146eb0=a0_0x28a0;for(let _0x329d8c=0x0;_0x329d8c<MAX_PORT_SCAN;_0x329d8c++){const _0x4fe934=DEFAULT_PORT+_0x329d8c;try{const _0x96eb33=await fetch('http://127.0.0.1:'+_0x4fe934+'/api/health',{'signal':AbortSignal['timeout'](0x1f4)});if(_0x96eb33['ok']){const _0x139e9d=await _0x96eb33['json']();if(_0x139e9d[_0x146eb0(0x1f0)]==='ok')return'http://127.0.0.1:'+_0x4fe934;}}catch{}}return null;}async function createKeyViaApi(_0x25db73,_0x14c035){const _0x3290b5=a0_0x28a0,_0x44546b=await fetch(_0x25db73+_0x3290b5(0x20e),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON[_0x3290b5(0x211)](_0x14c035)});if(!_0x44546b['ok']){const _0x1b724b=await _0x44546b['json']()['catch'](()=>({'error':'HTTP\x20'+_0x44546b[_0x3290b5(0x1f0)]}));throw new Error(_0x1b724b['error']||'Server\x20responded\x20with\x20'+_0x44546b[_0x3290b5(0x1f0)]);}return _0x44546b[_0x3290b5(0x21b)]();}async function listKeysViaApi(_0x3152cb,_0x14e436){const _0x482933=a0_0x28a0,_0x2c63da=new URLSearchParams();if(_0x14e436[_0x482933(0x1f2)])_0x2c63da['set'](_0x482933(0x1f2),_0x14e436[_0x482933(0x1f2)]);if(_0x14e436[_0x482933(0x1f0)])_0x2c63da[_0x482933(0x23a)]('status',_0x14e436['status']);const _0x53d587=_0x2c63da['toString'](),_0x5c6dde=await fetch(_0x3152cb+_0x482933(0x20e)+(_0x53d587?'?'+_0x53d587:''));if(!_0x5c6dde['ok']){const _0x1321c0=await _0x5c6dde['json']()[_0x482933(0x1f9)](()=>({'error':_0x482933(0x238)+_0x5c6dde['status']}));throw new Error(_0x1321c0[_0x482933(0x218)]||_0x482933(0x204)+_0x5c6dde['status']);}return _0x5c6dde[_0x482933(0x21b)]();}async function revokeKeyViaApi(_0x1a2b6f,_0x1525d6){const _0x148491=a0_0x28a0,_0x2fde80=await fetch(_0x1a2b6f+'/api/admin/keys/'+_0x1525d6,{'method':_0x148491(0x209)});if(!_0x2fde80['ok']){const _0x25e420=await _0x2fde80['json']()['catch'](()=>({'error':_0x148491(0x238)+_0x2fde80['status']}));throw new Error(_0x25e420[_0x148491(0x218)]||_0x148491(0x204)+_0x2fde80[_0x148491(0x1f0)]);}return _0x2fde80['json']();}let _dbReady=![];async function ensureDb(){if(_dbReady)return;const {getDb:_0x5170b}=await import('../server/db.js');await _0x5170b(),_dbReady=!![];}async function createKey(_0x44a59f){const _0x2c52e4=a0_0x28a0,_0x12c692=_0x44a59f['name'],_0x40e3ce=_0x44a59f[_0x2c52e4(0x1f2)]||_0x2c52e4(0x1eb),_0x555fdc=_0x44a59f['email']||null,_0x559866=_0x44a59f[_0x2c52e4(0x236)]||null;if(!_0x12c692){console[_0x2c52e4(0x218)]('\x0a\x20\x20'+icons[_0x2c52e4(0x1ed)]+'\x20'+c['error']+_0x2c52e4(0x1e7)+c['reset']+'\x0a'),console['error'](_0x2c52e4(0x231)),process[_0x2c52e4(0x222)](0x1);return;}const _0x1b4b95=['admin','staff','beta'];if(!_0x1b4b95[_0x2c52e4(0x233)](_0x40e3ce)){console[_0x2c52e4(0x218)](_0x2c52e4(0x1f7)+icons['fail']+'\x20'+c[_0x2c52e4(0x218)]+_0x2c52e4(0x206)+_0x40e3ce+'\x22.\x20Must\x20be\x20one\x20of:\x20'+_0x1b4b95[_0x2c52e4(0x235)](',\x20')+c[_0x2c52e4(0x225)]+'\x0a'),process['exit'](0x1);return;}const _0x1efb63=await findRunningServer();let _0xb53dca;if(_0x1efb63)try{_0xb53dca=await createKeyViaApi(_0x1efb63,{'name':_0x12c692,'type':_0x40e3ce,'email':_0x555fdc||undefined,'expires':_0x559866||undefined});}catch(_0x4c9164){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x2c52e4(0x218)]+_0x4c9164['message']+c['reset']+'\x20'+c['muted']+_0x2c52e4(0x1f6)+c[_0x2c52e4(0x225)]+'\x0a'),process[_0x2c52e4(0x222)](0x1);return;}else{await ensureDb();const {generateKey:_0x3f3589}=await import('../server/key-manager.js');try{_0xb53dca=_0x3f3589(_0x12c692,_0x40e3ce,_0x555fdc,_0x559866);}catch(_0x70bdc8){console[_0x2c52e4(0x218)]('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x2c52e4(0x218)]+_0x70bdc8['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}if(!_0xb53dca||!_0xb53dca[_0x2c52e4(0x23e)]){console['error'](_0x2c52e4(0x1f7)+icons['fail']+'\x20'+c['error']+'Key\x20generation\x20returned\x20an\x20unexpected\x20response.'+c[_0x2c52e4(0x225)]+'\x0a'),process['exit'](0x1);return;}console[_0x2c52e4(0x220)](''),console['log']('\x20\x20'+icons['pass']+_0x2c52e4(0x20c)),console[_0x2c52e4(0x220)]('\x20\x20'+c[_0x2c52e4(0x1fb)]+'─'['repeat'](0x28)+c[_0x2c52e4(0x225)]),console[_0x2c52e4(0x220)](_0x2c52e4(0x23d)+c['muted']+'Name:'+c[_0x2c52e4(0x225)]+_0x2c52e4(0x23d)+c['value']+_0xb53dca[_0x2c52e4(0x23e)]+c['reset']),console['log'](_0x2c52e4(0x23d)+c['muted']+_0x2c52e4(0x1f1)+c['reset']+_0x2c52e4(0x23d)+c[_0x2c52e4(0x203)]+_0xb53dca['type']+c[_0x2c52e4(0x225)]),console[_0x2c52e4(0x220)](_0x2c52e4(0x23d)+c['muted']+'ID:'+c['reset']+_0x2c52e4(0x210)+c['value']+_0xb53dca['id']+c['reset']),console[_0x2c52e4(0x220)]('\x20\x20\x20\x20'+c['muted']+'Key:'+c[_0x2c52e4(0x225)]+'\x20\x20\x20\x20\x20'+c[_0x2c52e4(0x212)]+_0xb53dca['raw']+c['reset']),console['log']('\x20\x20'+c['muted']+'─'[_0x2c52e4(0x213)](0x28)+c['reset']),console['log']('\x20\x20'+c[_0x2c52e4(0x212)]+'IMPORTANT:\x20Copy\x20this\x20key\x20now.\x20It\x20cannot\x20be\x20retrieved\x20later.'+c[_0x2c52e4(0x225)]),_0x1efb63?console['log']('\x20\x20'+c['muted']+'(Created\x20via\x20running\x20server)'+c['reset']):console['log']('\x20\x20'+c['muted']+'(Created\x20via\x20direct\x20DB\x20—\x20restart\x20server\x20to\x20pick\x20up)'+c[_0x2c52e4(0x225)]),console[_0x2c52e4(0x220)]('');}async function listKeysCmd(_0x4439da){const _0x848638=a0_0x28a0,_0x312ef5={};if(_0x4439da['type'])_0x312ef5[_0x848638(0x1f2)]=_0x4439da['type'];if(_0x4439da['status'])_0x312ef5['status']=_0x4439da[_0x848638(0x1f0)];const _0x557277=await findRunningServer();let _0x149abc;if(_0x557277)try{_0x149abc=await listKeysViaApi(_0x557277,_0x312ef5);}catch(_0x101d06){console['error'](_0x848638(0x1f7)+icons[_0x848638(0x1ed)]+'\x20'+c[_0x848638(0x218)]+_0x101d06[_0x848638(0x1ea)]+c['reset']+'\x20'+c[_0x848638(0x1fb)]+_0x848638(0x1f6)+c['reset']+'\x0a'),process[_0x848638(0x222)](0x1);return;}else{await ensureDb();const {listKeys:_0x260daa}=await import(_0x848638(0x228));_0x149abc=_0x260daa(_0x312ef5);}if(!_0x149abc||!_0x149abc[_0x848638(0x229)]||!_0x149abc['keys'][_0x848638(0x230)]){console['log']('\x0a\x20\x20No\x20keys\x20found.\x0a');return;}console[_0x848638(0x220)](''),console['log']('\x20\x20'+c['heading']+'License\x20Keys:'+c[_0x848638(0x225)]),console[_0x848638(0x220)]('\x20\x20'+c[_0x848638(0x1fb)]+'─'['repeat'](0x50)+c[_0x848638(0x225)]),console['log']('\x20\x20'+c[_0x848638(0x1fb)]+'ID'['padEnd'](0xa)+_0x848638(0x1ee)['padEnd'](0x14)+_0x848638(0x21a)['padEnd'](0xa)+'Status'['padEnd'](0xa)+_0x848638(0x22f)[_0x848638(0x237)](0xf)+'Created'+c['reset']),console[_0x848638(0x220)]('\x20\x20'+c['muted']+'─'[_0x848638(0x213)](0x50)+c['reset']);for(const _0x594533 of _0x149abc[_0x848638(0x229)]){const _0x522054=(_0x594533['id']||'')[_0x848638(0x240)](0x0,0x8),_0x124b96=(_0x594533[_0x848638(0x23e)]||'')['slice'](0x0,0x12)[_0x848638(0x237)](0x14),_0x44d0f9=(_0x594533[_0x848638(0x1f2)]||'')[_0x848638(0x237)](0xa),_0x5b38d4=(_0x594533['status']||'')['padEnd'](0xa),_0x393925=(_0x594533['expiry']?new Date(_0x594533[_0x848638(0x22c)])['toLocaleDateString']():_0x848638(0x23f))[_0x848638(0x237)](0xf),_0x135fd8=_0x594533[_0x848638(0x202)]?new Date(_0x594533[_0x848638(0x202)])['toLocaleDateString']():'-';console['log']('\x20\x20'+_0x522054[_0x848638(0x237)](0xa)+_0x124b96+_0x44d0f9+_0x5b38d4+_0x393925+_0x135fd8);}console[_0x848638(0x220)]('\x20\x20'+c[_0x848638(0x1fb)]+'─'[_0x848638(0x213)](0x50)+c['reset']),console['log']('\x20\x20'+c[_0x848638(0x1fb)]+'Total:\x20'+_0x149abc[_0x848638(0x229)][_0x848638(0x230)]+_0x848638(0x205)+c['reset']+'\x0a');}async function revokeKeyCmd(_0x311e45){const _0x5f0afa=a0_0x28a0,_0x357499=_0x311e45[0x0];if(!_0x357499){console[_0x5f0afa(0x218)]('\x0a\x20\x20'+icons[_0x5f0afa(0x1ed)]+'\x20'+c['error']+_0x5f0afa(0x1ff)+c['reset']+'\x0a'),console[_0x5f0afa(0x218)]('\x20\x20Usage:\x20colana\x20admin\x20revoke-key\x20<id>\x0a'),process['exit'](0x1);return;}const _0x173d5e=await findRunningServer();if(_0x173d5e)try{await revokeKeyViaApi(_0x173d5e,_0x357499),console['log']('\x0a\x20\x20'+icons['pass']+'\x20Key\x20'+c['value']+_0x357499+c['reset']+_0x5f0afa(0x1e9));}catch(_0x3019f6){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c['error']+_0x3019f6['message']+c[_0x5f0afa(0x225)]+'\x20'+c['muted']+_0x5f0afa(0x1f6)+c[_0x5f0afa(0x225)]+'\x0a'),process['exit'](0x1);return;}else{await ensureDb();const {revokeKey:_0x482845}=await import(_0x5f0afa(0x228));try{_0x482845(_0x357499),console[_0x5f0afa(0x220)](_0x5f0afa(0x1f7)+icons[_0x5f0afa(0x21c)]+'\x20Key\x20'+c[_0x5f0afa(0x203)]+_0x357499+c[_0x5f0afa(0x225)]+'\x20has\x20been\x20revoked.\x0a');}catch(_0x1bb00e){console['error']('\x0a\x20\x20'+icons['fail']+'\x20'+c[_0x5f0afa(0x218)]+_0x1bb00e['message']+c['reset']+'\x0a'),process['exit'](0x1);return;}}}function showHelp(){const _0x2f5116=a0_0x28a0;console[_0x2f5116(0x220)]('\x0a\x20\x20'+brandName()+'\x20'+c['muted']+'Admin\x20CLI'+c[_0x2f5116(0x225)]+'\x0a\x0a\x20\x20'+c[_0x2f5116(0x201)]+'Usage:'+c['reset']+'\x0a\x20\x20\x20\x20'+c[_0x2f5116(0x21e)]+'colana\x20admin\x20doctor'+c[_0x2f5116(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20system\x20diagnostics\x0a\x20\x20\x20\x20'+c[_0x2f5116(0x21e)]+'colana\x20admin\x20staff-keys'+c['reset']+_0x2f5116(0x215)+c[_0x2f5116(0x21e)]+_0x2f5116(0x20b)+c['reset']+'\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']+_0x2f5116(0x21d)+c['reset']+'\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[_0x2f5116(0x1fb)]+'--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['reset']+_0x2f5116(0x22b)+c['muted']+'--expires\x202026-12-31'+c[_0x2f5116(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Expiry\x20date\x20(optional)\x0a\x20\x20\x20\x20'+c['cmd']+'colana\x20admin\x20list-keys'+c[_0x2f5116(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20List\x20DB-stored\x20license\x20keys\x0a\x20\x20\x20\x20\x20\x20'+c[_0x2f5116(0x1fb)]+'--type\x20staff|admin|beta'+c[_0x2f5116(0x225)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Filter\x20by\x20type\x0a\x20\x20\x20\x20\x20\x20'+c[_0x2f5116(0x1fb)]+_0x2f5116(0x1fc)+c[_0x2f5116(0x225)]+_0x2f5116(0x1f8)+c[_0x2f5116(0x21e)]+'colana\x20admin\x20revoke-key\x20<id>'+c['reset']+_0x2f5116(0x216)+c[_0x2f5116(0x1fb)]+_0x2f5116(0x208)+c[_0x2f5116(0x225)]+_0x2f5116(0x217)+c[_0x2f5116(0x1ec)]+_0x2f5116(0x214)+c[_0x2f5116(0x225)]+'\x0a');}function doctor(){console['log']('\x0a\x20\x20Run\x20\x27colana\x20doctor\x27\x20for\x20system\x20diagnostics.\x0a');}function staffKeys(){const _0x51d704=a0_0x28a0,_0x2888fd=process['env']['STAFF_KEYS']||'',_0x13ac27=process['env'][_0x51d704(0x242)]||'',_0x5bda98=_0x2888fd[_0x51d704(0x219)](',')[_0x51d704(0x232)](_0x4c4aee=>_0x4c4aee[_0x51d704(0x234)]())['filter'](Boolean),_0x353be3=_0x13ac27['split'](',')[_0x51d704(0x232)](_0x3a8c3e=>_0x3a8c3e[_0x51d704(0x234)]())[_0x51d704(0x226)](Boolean);if(_0x5bda98[_0x51d704(0x230)]===0x0&&_0x353be3[_0x51d704(0x230)]===0x0){console[_0x51d704(0x220)](_0x51d704(0x207));return;}console[_0x51d704(0x220)](''),_0x5bda98[_0x51d704(0x230)]>0x0&&(console[_0x51d704(0x220)]('\x20\x20'+c[_0x51d704(0x201)]+'Staff\x20Keys:'+c[_0x51d704(0x225)]),console['log']('\x20\x20'+c[_0x51d704(0x1fb)]+'─'[_0x51d704(0x213)](0xa)+c['reset']),_0x5bda98['forEach']((_0x359f48,_0x12a10e)=>{const _0x25dfeb=_0x51d704;console['log'](_0x25dfeb(0x23d)+(_0x12a10e+0x1)+'.\x20'+maskKey(_0x359f48)+'\x20\x20(STAFF_KEYS)');}),console[_0x51d704(0x220)]('')),_0x353be3[_0x51d704(0x230)]>0x0&&(console['log']('\x20\x20'+c['heading']+'Admin\x20Keys:'+c['reset']),console['log']('\x20\x20'+c[_0x51d704(0x1fb)]+'─'[_0x51d704(0x213)](0xa)+c[_0x51d704(0x225)]),_0x353be3[_0x51d704(0x200)]((_0x2cfcf0,_0x2a7684)=>{const _0x3f0a2a=_0x51d704;console[_0x3f0a2a(0x220)]('\x20\x20\x20\x20'+(_0x2a7684+0x1)+'.\x20'+maskKey(_0x2cfcf0)+'\x20\x20(ADMIN_KEYS)');}),console[_0x51d704(0x220)]('')),console[_0x51d704(0x220)](_0x51d704(0x1e8));}export async function main(){const _0x3b5383=a0_0x28a0,{command:_0x4e968a,flags:_0x20d324,positional:_0x77d046}=parseArgs(process['argv']);if(!_0x4e968a||_0x4e968a==='help'||_0x4e968a===_0x3b5383(0x1f4)){showHelp();return;}switch(_0x4e968a){case _0x3b5383(0x1ef):return doctor();case _0x3b5383(0x23b):return staffKeys();case _0x3b5383(0x22a):return createKey(_0x20d324);case'list-keys':return listKeysCmd(_0x20d324);case _0x3b5383(0x1f3):return revokeKeyCmd(_0x77d046);default:console['error']('\x20\x20'+icons['fail']+_0x3b5383(0x224)+c[_0x3b5383(0x203)]+_0x4e968a+c[_0x3b5383(0x225)]),console['error']('\x20\x20'+c['muted']+_0x3b5383(0x21f)+c['reset']),process[_0x3b5383(0x222)](0x1);return;}}!process[a0_0x559772(0x241)]['VITEST']&&main()['catch'](_0x2fcec2=>{const _0x1f6f32=a0_0x559772;console['error']('\x20\x20'+icons['fail']+'\x20'+c['error']+(_0x2fcec2[_0x1f6f32(0x1ea)]||_0x2fcec2)+c['reset']),process[_0x1f6f32(0x222)](0x1);});function a0_0x1da2(){const _0x21b8db=['ug9SyxiUC2GGA2v5ig1HBMfNzw1LBNq6','revmrvrf','mte1odC1nKfSrgzjqG','y29Syw5HigfKBwLUignYzwf0zs1RzxK','ieTLEsbNzw5LCMf0zwqGC3vJy2vZC2z1BgX5iq','ng9ZC0furG','l2fWAs9Hzg1PBI9RzxLZ','mZeWmdK2mNDrzeD5yq','icaGicaG','C3rYAw5NAwz5','D2fYBG','CMvWzwf0','Ahr0Chm6lY9KyxnOyM9HCMqUCg9SyxiUC2G','icaGicaGicaGicaGieXPC3qGy29UzMLNDxjLzcbZDgfMzI9Hzg1PBIbRzxLZicHLBNyGDMfYCYKkicaGia','icaGicaGicbszxzVA2uGysbeqI1ZDg9YzwqGBgLJzw5ZzsbRzxKkcIaG','cIaGica','zxjYB3i','C3bSAxq','vhLWzq','ANnVBG','CgfZCW','ls1Uyw1Licjoyw1LiG','y21K','uNvUicjJB2XHBMeGywrTAw4GAgvSCciGzM9YihvZywDLlG','Bg9N','Aw5KzxHpzG','zxHPDa','mZbpqwDruei','ifvUA25VD24Gy29TBwfUzdOG','CMvZzxq','zMLSDgvY','mZa0otKYqu1kwwvA','lI4VC2vYDMvYl2TLEs1Tyw5Hz2vYlMPZ','A2v5CW','y3jLyxrLlwTLEq','icaGicaGicaGievTywLSicHVChrPB25HBcKkicaGicaG','zxHWAxj5','ndaXmtGYELb2uKT1','Dhj1zq','rxHWAxjLCW','BgvUz3rO','icbvC2fNztOGy29Syw5HigfKBwLUignYzwf0zs1RzxKGls1Uyw1LicjtyxjHAciGls10ExbLihn0ywzMifSTlwvTywLSihHDifSTlwv4CgLYzxmGmJaYnI0XmI0Zmv0k','BwfW','Aw5JBhvKzxm','DhjPBq','AM9PBG','zxHWAxjLCW','CgfKrw5K','sfruuca','mtC5mtKYmMHdqvvXuW','C2v0','C3rHzMyTA2v5CW','mtGYoda1wKzyz0fl','icaGia','BMfTzq','tMv2zxi','C2XPy2u','zw52','qurnsu5Fs0vzuW','rvjst1i6ic0TBMfTzsbPCYbYzxf1AxjLzc4','icbuBYbHzgqVCMvTB3zLigTLExmSihvWzgf0zsb0AguGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO','igHHCYbIzwvUihjLDM9RzwqUcG','BwvZC2fNzq','C3rHzMy','DxjS','zMfPBa','tMfTzq','zg9JDg9Y','C3rHDhvZ','vhLWztO','DhLWzq','CMv2B2TLlwTLEq','ls1OzwXW','mtaXmtq4Eu1cr3bg','khzPysbZzxj2zxiP','cIaG','icaGicaGicaGicbgAwX0zxiGyNKGC3rHDhvZcIaGica','y2f0y2G','nwn3ENbtrq','Bxv0zwq','ls1ZDgf0DxmGywn0AxzLFhjLDM9Rzwq','kIOQkG','mtuZvKDMu216','rvjst1i6ieTLEsbjrcbPCYbYzxf1AxjLzc4','zM9YrwfJAa','AgvHzgLUzW','y3jLyxrLzf9HDa','DMfSDwu','u2vYDMvYihjLC3bVBMrLzcb3AxrOia','igTLEsHZkq','rvjst1i6ieLUDMfSAwqGDhLWzsaI','cIaGtM8GC3rHzMyGB3iGywrTAw4GA2v5CYbJB25MAwD1CMvKlIbtzxqGu1rbrKzFs0vzuYbVCIbbre1jtL9lrvLtigvUDMLYB25Tzw50ihzHCMLHyMXLlGO'];a0_0x1da2=function(){return _0x21b8db;};return a0_0x1da2();}
package/bin/colana.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0x38d2(){const _0x207b50=['Bxv0zwq','Aw5ZDgfSBa','t3bLBKnSyxC','CNvUDgLTzq','D3jPDgu','icaGicaGicaGicbdAgvJAYbdteKGywDLBNrZigfUzcbZExn0zw0GAgvHBhrOcIaG','CgLWmYbPBNn0ywXSihv2','icbgCMvLihrPzxi6idiGy29Uy3vYCMvUDcbZzxnZAw9UCYWGywXSigzLyxr1CMvZigLUy2X1zgvKlG','AgvHzgLUzW','A2v5CW','CxvLC3rPB24','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','ndaZntiZCfr4C0ji','t3b0Aw9UCZO','y29Syw5HigfKBwLU','ls1OzwXW','icboBYbdteKGywDLBNrZigLUC3rHBgXLzc4G','qNvPBgqGDg9VBhmGBwf5igjLig5LzwrLzc4Gqxr0zw1WDgLUzYbHDxrVBwf0AwmGAw5ZDgfSBc4UlG','z2L0','ls12zxjZAw9U','icaGicbuBYbPBNn0ywXSienVBgfUysb0AgvYzsbPBNn0zwfKoG','icboBYbdteKGywDLBNrZigzVDw5KlIbjBNn0ywXSigf0igXLyxn0ig9Uzsb0BYb1C2uG','Aw5ZDgfSBgvK','icaGifSWxsbtA2LWicH5B3uNBgWGBMvLzcb0BYbPBNn0ywXSig9UzsbTyw51ywXSEsK','Ahr0CdOVl2XVy2fSAg9ZDdO5odC2','q2XVC2uGyw5KihjLB3bLBIb5B3vYihrLCM1PBMfS','BNbT','BgvUz3rO','q2XHDwrLienVzgu','ChL0Ag9U','ifjLBw92zsbIywnRz3jVDw5KihnLCNzPy2ukica','iokaLcb3B3jRCYb3AxrOigfUEsbhB29NBguGywnJB3vUDcaOzNjLzsbVCIbWywLKkq','D2LUmZi','lNn1ChbYzxnZlwjYB3DZzxi','C3bSAwnL','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','icaGicaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mP','yMLUyxj5','icaGicbuCNK6ig5WBsbYzwj1AwXKig5VzguTChr5','CgfJA2fNzs5QC29U','igLUC3rHBgXLza','BwfQB3i','zMfSBgjHy2TezxrLy3rdBwq','icbpCgvUihLVDxiGv1nmmIb0zxjTAw5HBcbHBMqGCNvUoIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','ntiYotGWohntuufZyW','zMfPBa','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','yNvPBgqGDg9VBhm','4OcuihjLCxvPCMvZihyXocS','icbdAgvJA2LUzYb5B3vYigvUDMLYB25Tzw50lI4U','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','y29Syw5Hic0TC2v0DxaGls1Hz2vUDhm','igjHy2TNCM91BMqGC2vYDMLJzs4UlG','icbszw1VDMLUzYa','ls1WB3j0','C2vYDMvY','q29Syw5HigzHAwXLzcb0BYbZDgfYDdOG','Dg9ju09tDhjPBMC','tMv4DcbZDgvWCYb0BYbYzxnVBhzLoG','iokaLcb1BMTUB3DUihbYB3zPzgvY','CgfZCW','pYaO','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','ie5VzguUANmG','yxjNDG','y29Syw5H','AgfZ','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','D2fYBG','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','ywrK','icaGieLUC3rHBgXPBMCG','mtiXmJq0mhjbtfjZCG','icaGifbSzwfZzsbPBNn0ywXSia','Dg9tDhjPBMC','zgfYD2LU','q29TBwfUzhm6','CgXHDgzVCM0','q29KzxGGq0Xj','sw5ZDgfSBgLUzYbwAxn1ywWGu3r1zgLViej1AwXKifrVB2XZihzPysb3Aw5NzxqUlI4','refuqv9esvi','C3rKB3v0','EgnVzguTC2vSzwn0','vxnPBMCGDxyGDg8GAw5ZDgfSBcb3AxrOifb5DgHVBIaZlJeYlI4U','y21K','q291BgqGBM90igLUC3rHBgWGDxyU','nNPnyNjlwa','D3jPDgvgAwXLu3LUyW','twLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhm','uNvUBMLUzZO','y29Syw5HigrVy3rVCG','icaGica','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','zMLUza','y29WAwXVDa','igfNzw50','zgfZAgjVyxjKlMrI','icaGicaGignVBgfUyq','DxrMltG','uhL0Ag9Uia','icaGia','q09mqu5bx1bpuLq','Ahr0Chm6lY9JB2XHBMeUywK','ic0TDMvYC2LVBG','C2vYDMLJzs1Tyw5Hz2vYlMPZ','cIaG','DMfSDwu','igLZihjLCxvPCMvKigj1DcbUB3qGzM91BMqU','zxjYB3i','ifTVChrPB25ZxsbBy29TBwfUzf0kcG','qwXSigfNzw50CYbHBhjLywr5igLUC3rHBgXLzc4','y2f0y2G','icbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','BwTKAxjtEw5J','AwDUB3jL','Bg9NCW','zxHPC3rZu3LUyW','Dg9mB3DLCKnHC2u','ie5VzguUANmG4Ocuig5VDcbMB3vUza','DhjPBq','ChL0Ag9UihnLDhvWDg9VBhm','icbvCgDYywrLigfUExrPBwuGzNjVBsbtzxr0Aw5NCYbMB3iGDw5SAw1PDgvKihnLC3nPB25ZlG','zg9JDg9Y','ifnOB3CGzgv0ywLSzwqGzgLHz25VC3rPyYbPBMzVcIaG','mZeWmZeXz2rrt1zd','zxHPDa','EwvZ','quKGq0XjiefNzw50CZO','CMvZB2X2zq','iokaLcbtBwfYDcbtzxr1Ca','y2XHDwrL','lI4U','CMvSzwfZzq','Chr5t2S','Aw5OzxjPDa','C3rHDhvZ','t3bLBIb5B3vYigjYB3DZzxiGDg8','kgrLzMf1Bhq6igf1Dg8Tzgv0zwn0igzYB20GotG3nIK','icbjBNn0ywXSia','icaGicaGq2HLy2SGAwyGC2vYDMLJzsbPCYbPBNn0ywXSzwqGyw5Kihj1BM5PBMC','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','Aw5ZDgfSBenTza','ksbBEs9oxsa','AhjLzG','AM9PBG','ChjLCMvX','CMvWzwf0','D3nSic0TBgLZDcaTlxf1Awv0','C2v0Dxb0B29SCW','icaGicaGig5WBsbPBNn0ywXSic1NignVBgfUyq','z3LW','BMfTzq','ls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','y29Syw5Hic0TC2v0Dxa','ieDPDa','C3vJy2vZCW','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','r2vTAw5Pienmsq','nMTRDhbqzq','y21KlMv4zsaVyYbZDgfYDcaIiIaI','y29Syw5HigrVy3rVCIaTlxzLCMjVC2u','lMzPCNn0lxj1BI1KB25L','qwDLBNrZigzVDw5K','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','dsaG','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','teXniefqssbRzxKGCMvXDwLYzwq','icaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mPcGO','ywDLBNrZ','CMvZzxq','CMvHzezPBgvtEw5J','BwLUB3i','y29KzxG','y29Syw5HihnLCNzPy2uGBg9NCW','icbjBNn0ywXSAw5Nia','igfZigeGD29YA2fYB3vUzc4','vxnHz2u6','idXPBNn0ywXSFhvUAw5ZDgfSBhXZDgf0Dxn8Bg9NCZ4','igLUC3rHBgWUlI4','y2XVC2u','BNbTigLUC3rHBgWGlwCGqgfUDgHYB3bPyY1HAs9JBgf1zguTy29Kzq','CgLWzq','w2nVoMXHBMfDie1Pz3jHDgLVBIbMywLSzwq6ia','uNvUoIa','sw5ZDgfSBgLUzYbJBZPSyw5HigDSB2jHBgX5lI4U','zMfSBgjHy2TdBwq','zgf0yq','zgv0zwn0q21K','icaGicaGicaGicbtBwfYDcbPBNn0ywXSzxiGkgf1Dg8Tzgv0zwn0icSGAw5ZDgfSBcbHz2vUDhmPcIaG','DMvYC2LVBG','otmXotCZsKvAser2','ChvZAa','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','Aw5JBhvKzxm','v2fPDcbMB3iGDgHLigLUC3rHBgWGDg8Gy29TCgXLDguGkdiTnsbTAw51DgvZkq','lI4VC2vYDMvYl21Pz3jHDgLVBI5QCW','ifn0yxj0Aw5NigrHC2HIB2fYzc4UlG','tgLUDxGGkfDttdiP','ChL0Ag9UmW','BxnIDwLSza','idXUDw1Izxi+icaGicaGicaGvxnLihnWzwnPzMLJihbVCNqG','ChjLCMvXtMfTzq','z2vTAw5P','EgnVzguTC2vSzwn0ic0TAw5ZDgfSBa','ndC2mZeWsw9bt0r0','igzPCNn0lG','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','BgLUDxG','zw50CMLLCW','v2LUzg93CW','ywLKzxi','lMnVBgfUyq','BNbTigLUC3rHBgWGlwCGqg9Wzw5HAs9JB2rLEa','zM9YrwfJAa','w2nVoMXHBMfDifLVDxiGzgf0ysbPCYbZywzLigf0oIa','ywXS','B3bLBIaI','zw52','CgLWigLUC3rHBgWGDxy','CgLWEa','vKLurvnu','ndqWotq2mhHwy21WrW','BM9Kzs1WDhK','iokaLcbPBNn0ywXSigzHAwXLza','rxHHBxbSzxm6','BwvZC2fNzq','q29TCgXLDguGDgHLihn5C3rLBsbKAwfSB2CGDgHHDcbHChbLyxjZ','tgLUDxG','C3bSAxq','ig5VzguTChr5ia'];a0_0x38d2=function(){return _0x207b50;};return a0_0x38d2();}const a0_0x33dbd5=a0_0x27a2;(function(_0x3ac35d,_0x5bae43){const _0x3777d7=a0_0x27a2,_0x528306=_0x3ac35d();while(!![]){try{const _0x2876c0=parseInt(_0x3777d7(0x1ce))/0x1+-parseInt(_0x3777d7(0x260))/0x2*(parseInt(_0x3777d7(0x23e))/0x3)+parseInt(_0x3777d7(0x20a))/0x4+-parseInt(_0x3777d7(0x1a8))/0x5+parseInt(_0x3777d7(0x218))/0x6*(-parseInt(_0x3777d7(0x19a))/0x7)+parseInt(_0x3777d7(0x1ee))/0x8+-parseInt(_0x3777d7(0x1b9))/0x9;if(_0x2876c0===_0x5bae43)break;else _0x528306['push'](_0x528306['shift']());}catch(_0x2261ce){_0x528306['push'](_0x528306['shift']());}}}(a0_0x38d2,0x50fbb));import{execSync,execFileSync,spawn}from'child_process';import a0_0x39297c from'fs';import a0_0x351851 from'path';import a0_0x2022dc from'readline';import a0_0x401019 from'os';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_0x351851['dirname'](fileURLToPath(import.meta.url)),ROOT=a0_0x351851['resolve'](__dirname,'..'),DATA_DIR=process['env']['DATA_DIR']?a0_0x351851[a0_0x33dbd5(0x242)](process['env'][a0_0x33dbd5(0x212)]):a0_0x351851[a0_0x33dbd5(0x252)](a0_0x401019['homedir'](),a0_0x33dbd5(0x1af)),toImportPath=_0x446824=>process['platform']==='win32'?pathToFileURL(_0x446824)[a0_0x33dbd5(0x251)]:_0x446824,CLI_PROVIDERS=[{'name':a0_0x33dbd5(0x1de),'binary':'claude','installCmd':a0_0x33dbd5(0x190),'auth':'Requires\x20Anthropic\x20subscription\x20or\x20API\x20key','runtime':a0_0x33dbd5(0x1dc)},{'name':'Codex\x20CLI','binary':'codex','installCmd':a0_0x33dbd5(0x1b0),'auth':'Requires\x20OpenAI\x20subscription\x20or\x20API\x20key','runtime':'npm'},{'name':a0_0x33dbd5(0x25f),'binary':a0_0x33dbd5(0x1a6),'installCmd':'npm\x20install\x20-g\x20@google/gemini-cli','auth':'Free\x20or\x20paid\x20Google\x20account','runtime':a0_0x33dbd5(0x1dc),'recommended':!![]},{'name':'Copilot\x20CLI','binary':a0_0x33dbd5(0x220),'fallbackBinary':'gh','detectCmd':'copilot\x20--version','fallbackDetectCmd':'gh\x20copilot\x20--version','installCmd':'gh\x20extension\x20install\x20github/gh-copilot','prereq':'gh','prereqName':'GitHub\x20CLI','auth':'GitHub\x20Copilot\x20subscription','runtime':a0_0x33dbd5(0x1dc)},{'name':'Aider','binary':a0_0x33dbd5(0x1ae),'installCmd':a0_0x33dbd5(0x1cd),'fallbackCmd':'pip\x20install\x20aider-chat','prereq':a0_0x33dbd5(0x1a2),'prereqFallback':'python','prereqName':'Python','auth':a0_0x33dbd5(0x182),'runtime':a0_0x33dbd5(0x1b7)},{'name':a0_0x33dbd5(0x1c4),'binary':'openclaw','installCmd':'npm\x20install\x20-g\x20openclaw','auth':'User-configured\x20model\x20keys','runtime':'npm'}];function detectWindowsWsl(){const _0x3d4ad8=a0_0x33dbd5,_0x2f1001=process[_0x3d4ad8(0x20f)]==='win32';if(!_0x2f1001)return{'isNativeWindows':![],'wslAvailable':![]};let _0x2024ae=![];try{const _0x1a23cc=execSync(_0x3d4ad8(0x255),{'stdio':[_0x3d4ad8(0x191),'pipe','pipe'],'timeout':0x1388}),_0x558d88=_0x1a23cc[_0x3d4ad8(0x20c)]()['replace'](/\0/g,'')[_0x3d4ad8(0x239)]();_0x2024ae=_0x558d88[_0x3d4ad8(0x1dd)]>0x0;}catch{_0x2024ae=![];}return{'isNativeWindows':_0x2f1001,'wslAvailable':_0x2024ae};}function detectProvider(_0x5ccab8){const _0x4b424e=a0_0x33dbd5;if(_0x5ccab8['detectCmd'])try{return execSync(_0x5ccab8['detectCmd'],{'stdio':_0x4b424e(0x234)}),!![];}catch{if(_0x5ccab8[_0x4b424e(0x1ec)])try{return execSync(_0x5ccab8['fallbackDetectCmd'],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x5ccab8[_0x4b424e(0x1e7)]);}function a0_0x27a2(_0x4261a7,_0x549d4b){_0x4261a7=_0x4261a7-0x181;const _0x38d296=a0_0x38d2();let _0x27a296=_0x38d296[_0x4261a7];if(a0_0x27a2['iRguMe']===undefined){var _0x166f70=function(_0xcf90d9){const _0x46dfc9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x39297c='',_0x351851='';for(let _0x2022dc=0x0,_0x401019,_0x446824,_0x2f1001=0x0;_0x446824=_0xcf90d9['charAt'](_0x2f1001++);~_0x446824&&(_0x401019=_0x2022dc%0x4?_0x401019*0x40+_0x446824:_0x446824,_0x2022dc++%0x4)?_0x39297c+=String['fromCharCode'](0xff&_0x401019>>(-0x2*_0x2022dc&0x6)):0x0){_0x446824=_0x46dfc9['indexOf'](_0x446824);}for(let _0x2024ae=0x0,_0x1a23cc=_0x39297c['length'];_0x2024ae<_0x1a23cc;_0x2024ae++){_0x351851+='%'+('00'+_0x39297c['charCodeAt'](_0x2024ae)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x351851);};a0_0x27a2['AglQqt']=_0x166f70,a0_0x27a2['NxawNO']={},a0_0x27a2['iRguMe']=!![];}const _0x1739d2=_0x38d296[0x0],_0x1b09ce=_0x4261a7+_0x1739d2,_0x397f0d=a0_0x27a2['NxawNO'][_0x1b09ce];return!_0x397f0d?(_0x27a296=a0_0x27a2['AglQqt'](_0x27a296),a0_0x27a2['NxawNO'][_0x1b09ce]=_0x27a296):_0x27a296=_0x397f0d,_0x27a296;}function detectPythonVersion(){const _0x350a10=a0_0x33dbd5;for(const _0x1d5e0f of[_0x350a10(0x1a2),'python']){try{const _0x53a41b=execFileSync(_0x1d5e0f,['--version'],{'timeout':0x1388,'encoding':_0x350a10(0x224),'stdio':[_0x350a10(0x234),_0x350a10(0x191),_0x350a10(0x234)]})['trim'](),_0x47dcd0=_0x53a41b['match'](/Python\s+(\d+)\.(\d+)/);if(_0x47dcd0)return{'major':parseInt(_0x47dcd0[0x1]),'minor':parseInt(_0x47dcd0[0x2])};}catch{}}return null;}function getCliNextSteps(_0x35392e,_0x2bfeb9=''){const _0xa76d54=a0_0x33dbd5,_0x10ed87=_0x2bfeb9['toLowerCase'](),_0x4a3ac5=process['platform'];if(_0x35392e[_0xa76d54(0x1c5)]===_0xa76d54(0x1dc)&&(_0x10ed87[_0xa76d54(0x19d)](_0xa76d54(0x258))||_0x10ed87[_0xa76d54(0x19d)](_0xa76d54(0x1a3))||_0x10ed87['includes']('native')||_0x10ed87['includes'](_0xa76d54(0x1f1)))){if(_0x4a3ac5===_0xa76d54(0x1e2))return['Open\x20PowerShell\x20as\x20Administrator\x20(right-click\x20>\x20\x22Run\x20as\x20administrator\x22)','Run:\x20'+c['cmd']+'winget\x20install\x20Microsoft.VisualStudio.2022.BuildTools\x20--override\x20\x22--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--includeRecommended\x20--passive\x20--norestart\x22\x20--accept-source-agreements\x20--accept-package-agreements'+c[_0xa76d54(0x185)],_0xa76d54(0x19e),'Close\x20and\x20reopen\x20your\x20terminal',_0xa76d54(0x193)+c[_0xa76d54(0x216)]+_0x35392e['installCmd']+c['reset']];if(_0x4a3ac5===_0xa76d54(0x20d))return['Run:\x20'+c['cmd']+_0xa76d54(0x1a7)+c['reset'],_0xa76d54(0x1be),'Run:\x20'+c[_0xa76d54(0x216)]+_0x35392e[_0xa76d54(0x24f)]+c[_0xa76d54(0x185)]];return[_0xa76d54(0x193)+c[_0xa76d54(0x216)]+'sudo\x20apt\x20update\x20&&\x20sudo\x20apt\x20install\x20-y\x20build-essential\x20python3'+c[_0xa76d54(0x185)],_0xa76d54(0x193)+c[_0xa76d54(0x216)]+_0x35392e['installCmd']+c[_0xa76d54(0x185)]];}if(_0x35392e['runtime']===_0xa76d54(0x1b7)&&(_0x10ed87[_0xa76d54(0x19d)]('python')||_0x10ed87[_0xa76d54(0x19d)](_0xa76d54(0x256)))){if(_0x4a3ac5===_0xa76d54(0x1e2))return[_0xa76d54(0x193)+c['cmd']+'pip\x20install\x20uv'+c[_0xa76d54(0x185)],'Run:\x20'+c['cmd']+_0xa76d54(0x207)+c[_0xa76d54(0x185)],_0xa76d54(0x1db)];return['Run:\x20'+c['cmd']+_0xa76d54(0x1b6)+c[_0xa76d54(0x185)]+'\x20\x20\x20(or:\x20'+c[_0xa76d54(0x216)]+'brew\x20install\x20uv'+c[_0xa76d54(0x185)]+')','Run:\x20'+c['cmd']+_0xa76d54(0x207)+c['reset'],'Restart\x20your\x20terminal'];}return[_0xa76d54(0x193)+c[_0xa76d54(0x216)]+_0x35392e[_0xa76d54(0x24f)]+c[_0xa76d54(0x185)],'If\x20that\x20fails,\x20check\x20the\x20error\x20output\x20above\x20for\x20details'];}const rl=a0_0x2022dc['createInterface']({'input':process['stdin'],'output':process['stdout']}),ask=_0x9a9468=>new Promise(_0x427dee=>rl[a0_0x33dbd5(0x1cc)](_0x9a9468,_0x427dee));function print(_0x346fe9=''){const _0x59a305=a0_0x33dbd5;process[_0x59a305(0x213)][_0x59a305(0x1c6)](_0x346fe9+'\x0a');}function runInstall(_0x42b515,{quiet:quiet=![]}={}){return new Promise(_0x42b828=>{const _0x3c0fe9=a0_0x27a2,_0x472e7f=_0x42b515[_0x3c0fe9(0x1c0)]('\x20'),_0x596d3f=spawn(_0x472e7f[0x0],_0x472e7f['slice'](0x1),{'stdio':quiet?'pipe':_0x3c0fe9(0x248),'env':{...process[_0x3c0fe9(0x1b5)]},...process['platform']==='win32'&&{'shell':!![]}});_0x596d3f['on'](_0x3c0fe9(0x18f),_0x123f41=>_0x42b828(_0x123f41===0x0)),_0x596d3f['on']('error',()=>_0x42b828(![]));});}function runInstallArgs(_0x3c1ee2,_0x3504c1){return new Promise(_0x1f8e58=>{const _0x5ad51b=a0_0x27a2,_0x1a0532=spawn(_0x3c1ee2,_0x3504c1,{'stdio':_0x5ad51b(0x248),'env':{...process[_0x5ad51b(0x1b5)]}});_0x1a0532['on']('close',_0xa99a2c=>_0x1f8e58(_0xa99a2c===0x0)),_0x1a0532['on'](_0x5ad51b(0x22e),()=>_0x1f8e58(![]));});}async function tryInstallBuildTools(){const _0x2e93da=a0_0x33dbd5,_0x218eb8=process['platform'];if(_0x218eb8===_0x2e93da(0x1e2)){if(commandExistsSync('winget')){print('\x20\x20\x20\x20'+c[_0x2e93da(0x1c2)]+_0x2e93da(0x211)+c['reset']);const _0x541091=await runInstallArgs('winget',['install',_0x2e93da(0x21a),'--override','--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart','--accept-source-agreements',_0x2e93da(0x25a)]);return _0x541091;}return![];}if(_0x218eb8==='darwin'){print(_0x2e93da(0x226)+c[_0x2e93da(0x1c2)]+_0x2e93da(0x1f0)+c['reset']);const _0x5cb6ad=await runInstallArgs(_0x2e93da(0x214),['--install']);return _0x5cb6ad;}return![];}async function runDoctorChecks(_0x14466e=![]){const _0x5c7fb1=a0_0x33dbd5;print(''),print('\x20\x20'+brandName()+'\x20'+c['muted']+'Doctor'+c['reset']),print('\x20\x20'+c[_0x5c7fb1(0x1c2)]+'─'[_0x5c7fb1(0x254)](0x14)+c[_0x5c7fb1(0x185)]),print('');const _0x22355e=process[_0x5c7fb1(0x199)],_0x408f1f=parseInt(_0x22355e['slice'](0x1)),_0x5b09ee=_0x408f1f>=0x12;_0x5b09ee?print('\x20\x20'+icons[_0x5c7fb1(0x1fe)]+_0x5c7fb1(0x201)+c[_0x5c7fb1(0x22c)]+_0x22355e+c[_0x5c7fb1(0x185)]):print('\x20\x20'+icons[_0x5c7fb1(0x1ef)]+_0x5c7fb1(0x201)+c[_0x5c7fb1(0x22c)]+_0x22355e+c[_0x5c7fb1(0x185)]+'\x20'+c[_0x5c7fb1(0x22e)]+_0x5c7fb1(0x1f2)+c[_0x5c7fb1(0x185)]);let _0x5a3a95=![];try{await import(_0x5c7fb1(0x1ba)),_0x5a3a95=!![],print('\x20\x20'+icons['pass']+_0x5c7fb1(0x1c1)+c['muted']+'loaded'+c[_0x5c7fb1(0x185)]);}catch{print('\x20\x20'+icons['fail']+_0x5c7fb1(0x1c1)+c['error']+'—\x20failed\x20to\x20load'+c[_0x5c7fb1(0x185)]);}print(''),print('\x20\x20'+c[_0x5c7fb1(0x1ca)]+_0x5c7fb1(0x241)+c['reset']);const _0x18add1=[];for(const _0x1f6e97 of CLI_PROVIDERS){const _0x464187=detectProvider(_0x1f6e97),_0x26a9f3={'name':_0x1f6e97[_0x5c7fb1(0x259)],'installed':_0x464187};if(_0x14466e&&_0x464187){let _0x2c57de=_0x1f6e97['binary'];if(_0x1f6e97[_0x5c7fb1(0x197)])try{execSync(_0x1f6e97[_0x5c7fb1(0x197)],{'stdio':_0x5c7fb1(0x234)}),_0x2c57de=_0x1f6e97[_0x5c7fb1(0x197)][_0x5c7fb1(0x1c0)]('\x20')[0x0];}catch{_0x1f6e97[_0x5c7fb1(0x1ec)]&&(_0x2c57de=_0x1f6e97['fallbackDetectCmd'][_0x5c7fb1(0x1c0)]('\x20')[0x0]);}try{const _0x2b9463=execSync(_0x2c57de+_0x5c7fb1(0x229),{'stdio':[_0x5c7fb1(0x191),'pipe','pipe'],'timeout':0x1388});_0x26a9f3['version']=_0x2b9463[_0x5c7fb1(0x20c)]()['trim']()[_0x5c7fb1(0x1c0)]('\x0a')[0x0];}catch{_0x26a9f3[_0x5c7fb1(0x199)]=null;}_0x26a9f3['path']=getCommandPath(_0x2c57de);}if(_0x464187){const _0xa7a6a9=_0x14466e&&_0x26a9f3['version']?'\x20'+c[_0x5c7fb1(0x1c2)]+'('+c[_0x5c7fb1(0x22c)]+_0x26a9f3['version']+c['muted']+')'+c[_0x5c7fb1(0x185)]:'',_0x24a40e=_0x14466e&&_0x26a9f3['path']?'\x20'+c['muted']+'—\x20'+_0x26a9f3['path']+c[_0x5c7fb1(0x185)]:'';print('\x20\x20\x20\x20'+icons['pass']+'\x20'+_0x1f6e97[_0x5c7fb1(0x259)]+_0xa7a6a9+_0x24a40e);}else print(_0x5c7fb1(0x226)+icons['fail']+'\x20'+c[_0x5c7fb1(0x1c2)]+_0x1f6e97['name']+c['reset']);_0x18add1[_0x5c7fb1(0x19b)](_0x26a9f3);}print('');const _0x361dd2=_0x18add1['filter'](_0x4b0485=>_0x4b0485['installed'])['length'];return _0x361dd2>0x0?print('\x20\x20'+c['value']+_0x361dd2+'/'+_0x18add1[_0x5c7fb1(0x1dd)]+c['reset']+'\x20'+c['muted']+'CLI\x20agent(s)\x20available.'+c[_0x5c7fb1(0x185)]):print('\x20\x20'+icons['warn']+_0x5c7fb1(0x1d7)+brandName()+'.'),print(''),{'nodeOk':_0x5b09ee,'ptyOk':_0x5a3a95,'providers':_0x18add1};}async function firstRunWizard(){const _0x501f80=a0_0x33dbd5;printBanner(print);const {isNativeWindows:_0x4e401f,wslAvailable:_0x9c3943}=detectWindowsWsl();if(_0x4e401f&&_0x9c3943){print('\x20\x20'+icons['warn']+'\x20\x20You\x27re\x20running\x20on\x20native\x20Windows,\x20but\x20WSL2\x20is\x20available.'),print(_0x501f80(0x21d)+c[_0x501f80(0x1c2)]+_0x501f80(0x24e)+c[_0x501f80(0x185)]),print(_0x501f80(0x1d6)),print(''),print('\x20\x20\x20\x20\x20\x20\x20wsl\x20-d\x20Ubuntu'),print(_0x501f80(0x257)),print(_0x501f80(0x223)),print('');const _0x253f1f=await ask(_0x501f80(0x21e));_0x253f1f['toLowerCase']()!=='y'&&(print(''),print(_0x501f80(0x1ed)),print(''),rl[_0x501f80(0x18f)](),process['exit'](0x0)),print('');}print(_0x501f80(0x1f3));const _0x45955b=await runDoctorChecks(![]);!_0x45955b['nodeOk']&&(print(_0x501f80(0x181)),process['exit'](0x1));!_0x45955b[_0x501f80(0x247)]&&(print(_0x501f80(0x1e8)),process[_0x501f80(0x23f)](0x1));const _0x1da6af=[],_0x19aa67=[];for(let _0x4806fe=0x0;_0x4806fe<CLI_PROVIDERS[_0x501f80(0x1dd)];_0x4806fe++){_0x45955b['providers'][_0x4806fe][_0x501f80(0x1d8)]?_0x1da6af['push'](CLI_PROVIDERS[_0x4806fe]):_0x19aa67['push'](CLI_PROVIDERS[_0x4806fe]);}print('');if(_0x19aa67['length']>0x0&&_0x1da6af[_0x501f80(0x1dd)]>0x0){print('\x20\x20You\x20can\x20install\x20missing\x20CLIs\x20now\x20or\x20later\x20from\x20Settings.'),print('');for(const _0x1340a0 of _0x19aa67){const _0x57228a=await ask('\x20\x20Install\x20'+_0x1340a0[_0x501f80(0x259)]+_0x501f80(0x1ff)+_0x1340a0['auth']+_0x501f80(0x250));_0x57228a[_0x501f80(0x237)]()==='y'&&(await installProvider(_0x1340a0),detectProvider(_0x1340a0)&&_0x1da6af[_0x501f80(0x19b)](_0x1340a0));}}else{if(_0x1da6af[_0x501f80(0x1dd)]===0x0){print('\x20\x20'+icons[_0x501f80(0x206)]+'\x20\x20No\x20AI\x20coding\x20agents\x20found.\x20'+brandName()+'\x20requires\x20at\x20least\x20one\x20CLI\x20agent\x20to\x20run.'),print('');const _0x26645b=CLI_PROVIDERS[_0x501f80(0x21f)](_0x26bcdd=>_0x26bcdd['recommended']);if(_0x26645b){print('\x20\x20Recommended:\x20'+_0x26645b[_0x501f80(0x259)]+_0x501f80(0x1e1));const _0x2840d4=await ask('\x20\x20Install\x20'+_0x26645b[_0x501f80(0x259)]+'?\x20[Y/n]\x20');if(_0x2840d4[_0x501f80(0x237)]()!=='n'){await installProvider(_0x26645b);if(detectProvider(_0x26645b))_0x1da6af[_0x501f80(0x19b)](_0x26645b);}}if(_0x1da6af['length']===0x0){print(''),print(_0x501f80(0x265)),CLI_PROVIDERS[_0x501f80(0x1b1)]((_0x145be3,_0x54279c)=>{print('\x20\x20\x20\x20['+(_0x54279c+0x1)+']\x20'+_0x145be3['name']+'\x20('+_0x145be3['auth']+')');}),print(_0x501f80(0x1d9)),print('');const _0x432f1b=await ask('\x20\x20>\x20'),_0x1ab726=parseInt(_0x432f1b)-0x1;if(_0x1ab726>=0x0&&_0x1ab726<CLI_PROVIDERS['length']){await installProvider(CLI_PROVIDERS[_0x1ab726]);if(detectProvider(CLI_PROVIDERS[_0x1ab726]))_0x1da6af[_0x501f80(0x19b)](CLI_PROVIDERS[_0x1ab726]);}}_0x1da6af[_0x501f80(0x1dd)]===0x0&&(print(''),print('\x20\x20'+icons['warn']+_0x501f80(0x1d2)+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print(_0x501f80(0x21d)+c['muted']+'Install\x20one\x20anytime\x20from\x20Settings\x20>\x20AI\x20CLI\x20Agents.'+c[_0x501f80(0x185)]),print(''));}}_0x1da6af['length']>0x0&&(print(''),print('\x20\x20'+icons[_0x501f80(0x1fe)]+'\x20You\x27re\x20good\x20to\x20go!\x20'+c[_0x501f80(0x22c)]+_0x1da6af['length']+c['reset']+'\x20CLI(s)\x20detected.'),print('\x20\x20\x20\x20You\x20can\x20install\x20others\x20anytime\x20from\x20Settings.'));print('');const _0x360058=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0x360058[_0x501f80(0x237)]()!=='n')try{const {installService:_0x5c0533}=await import(toImportPath(a0_0x351851['join'](ROOT,'server','service-manager.js'))),_0x5dfa01=_0x5c0533();_0x5dfa01['success']?print('\x20\x20'+icons[_0x501f80(0x1fe)]+'\x20Auto-start\x20enabled.\x20'+_0x5dfa01[_0x501f80(0x1bd)]):(print('\x20\x20'+icons[_0x501f80(0x206)]+_0x501f80(0x1f4)+_0x5dfa01[_0x501f80(0x1bd)]),print(_0x501f80(0x205)));}catch(_0x4b469f){print('\x20\x20'+icons['warn']+_0x501f80(0x1f4)+_0x4b469f['message']),print('\x20\x20\x20\x20\x20You\x20can\x20try\x20later\x20with:\x20colana\x20service\x20install');}print(''),print(_0x501f80(0x1c9)),print(_0x501f80(0x23b)),print(''),rl[_0x501f80(0x18f)]();}async function installProvider(_0x292bdf,{quiet:quiet=![]}={}){const _0x3e1dc9=a0_0x33dbd5;if(_0x292bdf[_0x3e1dc9(0x253)]&&!commandExistsSync(_0x292bdf[_0x3e1dc9(0x253)])){if(_0x292bdf['prereqFallback']&&commandExistsSync(_0x292bdf['prereqFallback']))print('\x20\x20\x20\x20Using\x20'+_0x292bdf['prereqFallback']+'\x20(fallback\x20for\x20'+_0x292bdf[_0x3e1dc9(0x253)]+')');else return!quiet&&(print(_0x3e1dc9(0x226)+(_0x292bdf[_0x3e1dc9(0x1a5)]||_0x292bdf['prereq'])+_0x3e1dc9(0x22d)),print(_0x3e1dc9(0x20b)+(_0x292bdf['prereqName']||_0x292bdf[_0x3e1dc9(0x253)])+_0x3e1dc9(0x1a9))),![];}let _0x3e186a=_0x292bdf[_0x3e1dc9(0x24f)],_0x4a329d=_0x292bdf[_0x3e1dc9(0x195)],_0x4a0751='';if(_0x292bdf[_0x3e1dc9(0x1e7)]===_0x3e1dc9(0x1ae)){const _0x165a38=detectPythonVersion();if(_0x165a38&&_0x165a38['major']>=0x3&&_0x165a38[_0x3e1dc9(0x187)]>=0xd){print('\x20\x20\x20\x20'+c['muted']+_0x3e1dc9(0x225)+_0x165a38[_0x3e1dc9(0x1eb)]+'.'+_0x165a38[_0x3e1dc9(0x187)]+'\x20detected\x20—\x20aider\x20requires\x20Python\x203.10-3.12'+c['reset']),print('\x20\x20\x20\x20'+c[_0x3e1dc9(0x1c2)]+_0x3e1dc9(0x215)+c['reset']),_0x4a0751='python\x203.13';let _0x56790c=commandExistsSync('uv');if(!_0x56790c){print('\x20\x20\x20\x20'+c[_0x3e1dc9(0x1c2)]+'Installing\x20uv\x20(universal\x20Python\x20package\x20manager)...'+c[_0x3e1dc9(0x185)]),_0x56790c=await runInstall(_0x3e1dc9(0x1b6));if(!_0x56790c)_0x56790c=await runInstall(_0x3e1dc9(0x1c8));}if(_0x56790c)_0x3e186a=_0x3e1dc9(0x207),_0x4a329d=null;else return!quiet&&(print(_0x3e1dc9(0x226)+icons[_0x3e1dc9(0x1ef)]+'\x20'+c['error']+_0x3e1dc9(0x217)+c[_0x3e1dc9(0x185)]),printNextSteps(_0x292bdf,_0x3e1dc9(0x23a))),![];}}if(!quiet)print(_0x3e1dc9(0x209)+_0x292bdf['name']+_0x3e1dc9(0x245));let _0x57a209=await runInstall(_0x3e186a,{'quiet':quiet});if(!_0x57a209&&_0x4a329d){if(!quiet)print('\x20\x20\x20\x20Trying\x20fallback:\x20'+_0x4a329d+'...');_0x57a209=await runInstall(_0x4a329d,{'quiet':quiet});}if(_0x57a209){if(!quiet)print(_0x3e1dc9(0x226)+icons['pass']+'\x20'+_0x292bdf[_0x3e1dc9(0x259)]+_0x3e1dc9(0x1ea));return!![];}else{if(_0x292bdf[_0x3e1dc9(0x1c5)]===_0x3e1dc9(0x1dc)){if(!quiet)print(_0x3e1dc9(0x226)+c[_0x3e1dc9(0x1c2)]+_0x3e1dc9(0x1d3)+c[_0x3e1dc9(0x185)]);const _0x4b4bae=await tryInstallBuildTools();if(_0x4b4bae){if(!quiet)print('\x20\x20\x20\x20'+c[_0x3e1dc9(0x1c2)]+'Retrying\x20'+_0x292bdf['name']+_0x3e1dc9(0x18e)+c[_0x3e1dc9(0x185)]);_0x57a209=await runInstall(_0x3e186a,{'quiet':quiet});}if(_0x57a209){if(!quiet)print(_0x3e1dc9(0x226)+icons['pass']+'\x20'+_0x292bdf[_0x3e1dc9(0x259)]+_0x3e1dc9(0x1ea));return!![];}_0x4a0751=_0x4a0751||_0x3e1dc9(0x1f1);}return!quiet&&(print(_0x3e1dc9(0x226)+icons['fail']+'\x20'+c[_0x3e1dc9(0x22e)]+'Installation\x20failed.'+c['reset']),printNextSteps(_0x292bdf,_0x4a0751)),![];}}function printNextSteps(_0x5dc084,_0x33a8d9=''){const _0x3a9971=a0_0x33dbd5,_0x430296=getCliNextSteps(_0x5dc084,_0x33a8d9);print(''),print('\x20\x20\x20\x20'+c['heading']+_0x3a9971(0x1fc)+c['reset']),_0x430296[_0x3a9971(0x1b1)]((_0x204806,_0x5f1059)=>{const _0x56319e=_0x3a9971;print(_0x56319e(0x226)+c['muted']+(_0x5f1059+0x1)+'.'+c[_0x56319e(0x185)]+'\x20'+_0x204806);}),print('');}async function startServer(){const _0x19f516=a0_0x33dbd5,_0x4821d=a0_0x351851['join'](ROOT,_0x19f516(0x1f9),'index.js');try{const _0x19eb1e=await import(toImportPath(_0x4821d));return _0x19eb1e;}catch(_0x34d696){console['error']('Failed\x20to\x20start\x20server:\x20'+_0x34d696[_0x19f516(0x1bd)]),process[_0x19f516(0x23f)](0x1);}}function openBrowser(_0x2629de){const _0x91c8e4=a0_0x33dbd5,_0x306841=process['platform'];try{if(_0x306841==='darwin')execSync(_0x91c8e4(0x1b4)+_0x2629de+'\x22',{'stdio':'ignore'});else{if(_0x306841==='win32')execSync('start\x20\x22\x22\x20\x22'+_0x2629de+'\x22',{'stdio':_0x91c8e4(0x234)});else try{execSync('xdg-open\x20\x22'+_0x2629de+'\x22',{'stdio':'ignore'});}catch{try{execSync(_0x91c8e4(0x261)+_0x2629de+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}export function parseSetupArgs(_0xd241db){const _0x4acfe8=a0_0x33dbd5,_0x1e1f54=_0xd241db['slice'](0x2);if(!_0x1e1f54['includes']('--setup'))return null;const _0x3207ca=new Set([_0x4acfe8(0x244),_0x4acfe8(0x188),_0x4acfe8(0x1a6),_0x4acfe8(0x220),'aider','openclaw']),_0x232756={'all':![],'agents':null};_0x1e1f54[_0x4acfe8(0x19d)]('--all')&&(_0x232756['all']=!![]);const _0x5d52b6=_0x1e1f54['indexOf']('--agents');if(_0x5d52b6!==-0x1&&_0x1e1f54[_0x5d52b6+0x1]){const _0x4f97bd=_0x1e1f54[_0x5d52b6+0x1][_0x4acfe8(0x1c0)](',')['map'](_0xc35500=>_0xc35500[_0x4acfe8(0x239)]()['toLowerCase']())['filter'](Boolean),_0x54ef9f=_0x4f97bd['filter'](_0x1a67d1=>_0x3207ca[_0x4acfe8(0x204)](_0x1a67d1));if(_0x54ef9f[_0x4acfe8(0x1dd)]>0x0)_0x232756[_0x4acfe8(0x184)]=_0x54ef9f;}return _0x232756;}export function selectRecommendedAgents(_0x34292c={}){const _0x38c8dd=a0_0x33dbd5,_0x1a8847=[_0x38c8dd(0x244),'codex',_0x38c8dd(0x1a6),_0x38c8dd(0x220),'aider','openclaw'],_0x5ece9e={'claude':_0x38c8dd(0x244),'codex':_0x38c8dd(0x188),'gemini':'gemini','copilot':'copilot','aider':_0x38c8dd(0x1ae),'openclaw':'openclaw'},_0x2cf8ea=new Set();for(const [_0x1f22da,_0x23e0eb]of Object[_0x38c8dd(0x1ac)](_0x5ece9e)){if(commandExistsSync(_0x23e0eb))_0x2cf8ea[_0x38c8dd(0x208)](_0x1f22da);}if(!_0x2cf8ea[_0x38c8dd(0x204)]('copilot')&&commandExistsSync('gh'))try{execFileSync('gh',['copilot','--version'],{'stdio':_0x38c8dd(0x191),'timeout':0x1388}),_0x2cf8ea['add'](_0x38c8dd(0x220));}catch{}if(_0x34292c[_0x38c8dd(0x1b3)])return _0x1a8847['filter'](_0x23c401=>!_0x2cf8ea['has'](_0x23c401));if(_0x34292c[_0x38c8dd(0x184)])return _0x34292c['agents']['filter'](_0x1b50ec=>!_0x2cf8ea['has'](_0x1b50ec));const _0x369912=[],_0x35ecdb=commandExistsSync('python3')||commandExistsSync(_0x38c8dd(0x1df));if(!_0x2cf8ea[_0x38c8dd(0x204)]('gemini'))_0x369912[_0x38c8dd(0x19b)]('gemini');if(!_0x2cf8ea['has']('claude'))_0x369912[_0x38c8dd(0x19b)]('claude');if(!_0x2cf8ea['has'](_0x38c8dd(0x188)))_0x369912['push']('codex');if(!_0x2cf8ea['has']('aider')&&_0x35ecdb)_0x369912[_0x38c8dd(0x19b)]('aider');return _0x369912;}export async function headlessSetup(_0x37774b){const _0x25f807=a0_0x33dbd5,_0x200ed3=await import('os');print(''),print('\x20\x20'+c['brand']+'co:lana'+c[_0x25f807(0x185)]+_0x25f807(0x243)),print('');const _0x13dcdd=_0x200ed3['platform'](),_0x1f5a03=_0x200ed3['arch'](),_0x4d7b0d=_0x200ed3[_0x25f807(0x246)](),_0x17006e=_0x13dcdd===_0x25f807(0x1ab)&&_0x4d7b0d[_0x25f807(0x237)]()[_0x25f807(0x19d)]('microsoft'),_0x3ba13d=_0x13dcdd===_0x25f807(0x20d)?'macOS':_0x13dcdd===_0x25f807(0x1e2)?_0x25f807(0x1ad):_0x17006e?_0x25f807(0x1a1):_0x25f807(0x1bf);print('\x20\x20'+icons['pass']+'\x20'+_0x3ba13d+'\x20('+_0x1f5a03+')');try{const _0x99e6b4=execFileSync('node',['-v'],{'stdio':_0x25f807(0x191),'timeout':0x1388})[_0x25f807(0x20c)]()[_0x25f807(0x239)]();print('\x20\x20'+icons[_0x25f807(0x1fe)]+_0x25f807(0x201)+_0x99e6b4);}catch{print('\x20\x20'+icons['fail']+_0x25f807(0x238));}const _0x4410f1=commandExistsSync('python3')||commandExistsSync(_0x25f807(0x1df));if(_0x4410f1)try{const _0x6e918a=commandExistsSync(_0x25f807(0x1a2))?'python3':'python',_0x1d7ca6=execFileSync(_0x6e918a,[_0x25f807(0x1d5)],{'stdio':_0x25f807(0x191),'timeout':0x1388})[_0x25f807(0x20c)]()['trim']();print('\x20\x20'+icons['pass']+'\x20'+_0x1d7ca6);}catch{print('\x20\x20'+icons['pass']+'\x20Python\x203');}if(commandExistsSync('git'))try{const _0x2eae79=execFileSync(_0x25f807(0x1d4),['--version'],{'stdio':'pipe','timeout':0x1388})[_0x25f807(0x20c)]()[_0x25f807(0x239)]();print('\x20\x20'+icons[_0x25f807(0x1fe)]+'\x20'+_0x2eae79);}catch{print('\x20\x20'+icons[_0x25f807(0x1fe)]+_0x25f807(0x25c));}print('');const _0x514336={'claude':'Claude\x20Code','codex':_0x25f807(0x210),'gemini':'Gemini\x20CLI','copilot':'Copilot\x20CLI','aider':'Aider','openclaw':'OpenClaw'},_0x366d63=[];for(const _0x4de887 of Object[_0x25f807(0x1cb)](_0x514336)){if(commandExistsSync(_0x4de887))_0x366d63['push'](_0x4de887);}if(!_0x366d63['includes']('copilot')&&commandExistsSync('gh'))try{execFileSync('gh',['copilot',_0x25f807(0x1d5)],{'stdio':'pipe','timeout':0x1388}),_0x366d63[_0x25f807(0x19b)](_0x25f807(0x220));}catch{}if(_0x366d63['length']>0x0){print('\x20\x20'+c['muted']+_0x25f807(0x264)+c[_0x25f807(0x185)]);for(const _0x5469e1 of _0x366d63)print('\x20\x20'+icons[_0x25f807(0x1fe)]+'\x20'+_0x514336[_0x5469e1]);print('');}const _0x2f8cc4=selectRecommendedAgents(_0x37774b);if(_0x2f8cc4[_0x25f807(0x1dd)]===0x0)print('\x20\x20'+c[_0x25f807(0x25d)]+_0x25f807(0x230)+c[_0x25f807(0x185)]),print('');else{print('\x20\x20'+c['muted']+'Installing\x20agents...'+c['reset']);for(const _0x519d68 of _0x2f8cc4){const _0x249f8d=_0x514336[_0x519d68]||_0x519d68,_0x2f316e=CLI_PROVIDERS[_0x25f807(0x21f)](_0x354316=>_0x354316['binary']===_0x519d68);if(!_0x2f316e){print('\x20\x20'+icons[_0x25f807(0x1ef)]+'\x20'+_0x249f8d+_0x25f807(0x1fd));continue;}process['stdout']['write']('\x20\x20'+icons['dot']+'\x20'+_0x249f8d+'...');const _0x331637=await installProvider(_0x2f316e,{'quiet':!![]});_0x331637?process[_0x25f807(0x213)][_0x25f807(0x1c6)](_0x25f807(0x266)+icons[_0x25f807(0x1fe)]+'\x20'+_0x249f8d+'\x20'[_0x25f807(0x254)](0x14)+'\x0a'):process[_0x25f807(0x213)][_0x25f807(0x1c6)](_0x25f807(0x266)+icons[_0x25f807(0x1ef)]+'\x20'+_0x249f8d+_0x25f807(0x1bb)+'\x20'[_0x25f807(0x254)](0xa)+'\x0a');}print('');}if(!commandExistsSync(_0x25f807(0x203))){print('\x20\x20'+c['muted']+_0x25f807(0x194)+c['reset']);try{execFileSync('npm',[_0x25f807(0x1c3),'-g','colana'],{'stdio':_0x25f807(0x191),'timeout':0x1d4c0}),print('\x20\x20'+icons['pass']+'\x20colana\x20installed\x20globally');}catch(_0x10094c){print('\x20\x20'+icons[_0x25f807(0x1ef)]+'\x20Failed\x20to\x20install\x20globally:\x20'+_0x10094c['message']),print('\x20\x20'+c['muted']+'Run\x20manually:\x20npm\x20install\x20-g\x20colana'+c['reset']);}print('');}if(!a0_0x39297c[_0x25f807(0x236)](DATA_DIR))a0_0x39297c['mkdirSync'](DATA_DIR,{'recursive':!![]});const _0x527784=a0_0x351851['join'](DATA_DIR,'.first-run-done');if(!a0_0x39297c['existsSync'](_0x527784))a0_0x39297c[_0x25f807(0x219)](_0x527784,new Date()[_0x25f807(0x1fb)]());const _0x1fad30=_0x366d63[_0x25f807(0x1dd)]+_0x2f8cc4['length'];print('\x20\x20'+c['success']+_0x1fad30+_0x25f807(0x221)+(_0x1fad30!==0x1?'s':'')+'\x20ready.'+c['reset']+_0x25f807(0x1a0)),print('');}export async function main(){const _0x843068=a0_0x33dbd5;if((process[_0x843068(0x202)]['includes']('--version')||process['argv']['includes']('-v'))&&!process['argv']['includes'](_0x843068(0x1d1))&&!process[_0x843068(0x202)]['includes']('-h')&&process['argv'][0x2]!==_0x843068(0x23c)){try{const _0x2ca08b=JSON['parse'](a0_0x39297c[_0x843068(0x186)](a0_0x351851[_0x843068(0x252)](ROOT,'package.json'),_0x843068(0x224)));print(brandName()+'\x20'+c['muted']+'v'+_0x2ca08b['version']+c['reset']);}catch{print(brandName()+'\x20'+c[_0x843068(0x1c2)]+'v0.0.0'+c['reset']);}process[_0x843068(0x23f)](0x0);}if(process['argv']['includes']('--help')||process[_0x843068(0x202)]['includes']('-h')){const _0x1a57c8=JSON['parse'](a0_0x39297c[_0x843068(0x186)](a0_0x351851[_0x843068(0x252)](ROOT,_0x843068(0x1e9)),_0x843068(0x224)));print('\x0a'+c['heading']+_0x843068(0x18c)+c['reset']+'\x20'+c['cmd']+'colana'+c[_0x843068(0x185)]+_0x843068(0x22f)+c[_0x843068(0x1ca)]+'Commands:'+c['reset']+_0x843068(0x22b)+c['cmd']+_0x843068(0x203)+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Launch\x20the\x20'+brandName()+'\x20dashboard\x0a\x20\x20'+c['cmd']+_0x843068(0x21c)+c[_0x843068(0x185)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20diagnostic\x20checks\x0a\x20\x20'+c['cmd']+_0x843068(0x1d0)+c[_0x843068(0x185)]+'\x20<cmd>\x20\x20\x20\x20\x20\x20Admin\x20CLI\x20(create-key,\x20revoke-key,\x20list-keys,\x20key-info)\x0a\x20\x20'+c['cmd']+_0x843068(0x25b)+c['reset']+_0x843068(0x198)+c[_0x843068(0x216)]+'colana\x20--setup\x20--all'+c[_0x843068(0x185)]+'\x20\x20\x20\x20Install\x20all\x206\x20agents\x0a\x20\x20'+c['cmd']+_0x843068(0x1f5)+c['reset']+'\x20\x20Install\x20specific\x20agents\x20(comma-separated)\x0a\x20\x20'+c['cmd']+_0x843068(0x200)+c['reset']+_0x843068(0x232)+c['cmd']+_0x843068(0x19c)+c[_0x843068(0x185)]+_0x843068(0x1e0)+c[_0x843068(0x216)]+'colana\x20service\x20status'+c['reset']+'\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running\x0a\x20\x20'+c[_0x843068(0x216)]+_0x843068(0x189)+c['reset']+_0x843068(0x183)+c['heading']+_0x843068(0x1cf)+c['reset']+'\x0a\x20\x20'+c[_0x843068(0x216)]+'--version'+c['reset']+',\x20'+c[_0x843068(0x216)]+'-v'+c['reset']+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x20\x20'+c['cmd']+'--help'+c['reset']+',\x20'+c[_0x843068(0x216)]+'-h'+c[_0x843068(0x185)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+_0x843068(0x1f8)+c[_0x843068(0x185)]+_0x843068(0x1a4)+c[_0x843068(0x1c2)]+_0x843068(0x24b)+c[_0x843068(0x185)]+'\x0a\x0a'+c[_0x843068(0x1ca)]+_0x843068(0x1bc)+c[_0x843068(0x185)]+_0x843068(0x22b)+c['muted']+'$'+c['reset']+'\x20'+c[_0x843068(0x216)]+'colana'+c[_0x843068(0x185)]+'\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['cmd']+'colana\x20doctor'+c[_0x843068(0x185)]+_0x843068(0x1c7)+c[_0x843068(0x1c2)]+'$'+c['reset']+'\x20'+c[_0x843068(0x216)]+_0x843068(0x262)+c[_0x843068(0x185)]+_0x843068(0x23d)+c[_0x843068(0x1c2)]+'$'+c['reset']+'\x20'+c[_0x843068(0x216)]+_0x843068(0x200)+c[_0x843068(0x185)]+_0x843068(0x24c)+brandName()+_0x843068(0x1e5)+c[_0x843068(0x1c2)]+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20admin\x20list-keys'+c[_0x843068(0x185)]+'\x20\x20List\x20all\x20license\x20keys\x0a\x0a'+c[_0x843068(0x1c2)]+'v'+_0x1a57c8[_0x843068(0x199)]+c['reset']+'\x20'+c['muted']+'—'+c[_0x843068(0x185)]+'\x20'+c['url']+_0x843068(0x228)+c[_0x843068(0x185)]+'\x0a'),process[_0x843068(0x23f)](0x0);}if(process['argv'][0x2]===_0x843068(0x23c)){const _0x485944=process['argv'][_0x843068(0x19d)]('--verbose')||process['argv']['includes']('-v'),{isNativeWindows:_0x53e9f0,wslAvailable:_0x3d9228}=detectWindowsWsl();_0x53e9f0&&_0x3d9228&&(print(''),print('\x20\x20'+icons['warn']+'\x20\x20Native\x20Windows\x20detected\x20with\x20WSL2\x20available.'),print(_0x843068(0x21d)+c['muted']+_0x843068(0x25e)+brandName()+'\x20there\x20instead.'+c[_0x843068(0x185)]),print('')),await runDoctorChecks(_0x485944),process['exit'](0x0);}if(process[_0x843068(0x202)][0x2]==='admin'){const _0xc4a861=a0_0x351851['join'](__dirname,'admin.js');process['argv'][_0x843068(0x1e4)](0x2,0x1),await import(toImportPath(_0xc4a861));return;}if(process['argv'][0x2]==='service'){const {installService:_0x1232a0,uninstallService:_0x5b3ad9,getServiceStatus:_0x2b189b,getServiceLogs:_0x49e624}=await import(toImportPath(a0_0x351851[_0x843068(0x252)](ROOT,_0x843068(0x1f9),_0x843068(0x22a)))),_0xb54875=process[_0x843068(0x202)][0x3];switch(_0xb54875){case'install':{print(''),print(_0x843068(0x18a)+brandName()+'\x20as\x20a\x20background\x20service...'),print('');const _0x530451=_0x1232a0();print(_0x530451[_0x843068(0x25d)]?'\x20\x20'+icons['pass']+'\x20'+_0x530451['message']:'\x20\x20'+icons[_0x843068(0x1ef)]+'\x20'+_0x530451[_0x843068(0x1bd)]),print('');_0x530451['success']&&(print('\x20\x20'+brandName()+'\x20will\x20now\x20auto-start\x20on\x20login.'),print('\x20\x20'+c[_0x843068(0x1c2)]+_0x843068(0x24a)+c['reset']+'\x20'+c['url']+_0x843068(0x1da)+c[_0x843068(0x185)]));print('');break;}case'uninstall':{print(''),print(_0x843068(0x1f7)+brandName()+_0x843068(0x1f6));const _0x7b6e16=_0x5b3ad9();print(_0x7b6e16['success']?'\x20\x20'+icons[_0x843068(0x1fe)]+'\x20'+_0x7b6e16['message']:'\x20\x20'+icons[_0x843068(0x1ef)]+'\x20'+_0x7b6e16[_0x843068(0x1bd)]),print('');break;}case _0x843068(0x249):{print('');const _0x2bb122=_0x2b189b();print('\x20\x20'+c['muted']+'Platform:'+c['reset']+'\x20\x20'+c['value']+_0x2bb122['platform']+c[_0x843068(0x185)]),print('\x20\x20'+c['muted']+'Installed:'+c['reset']+'\x20'+(_0x2bb122['installed']?c['success']+'yes'+c['reset']:c[_0x843068(0x1c2)]+'no'+c[_0x843068(0x185)])),print('\x20\x20'+c[_0x843068(0x1c2)]+_0x843068(0x21b)+c[_0x843068(0x185)]+'\x20\x20\x20'+(_0x2bb122['running']?c['success']+_0x843068(0x240)+c[_0x843068(0x185)]:c['muted']+'no'+c['reset'])),print('');break;}case _0x843068(0x235):{const _0xe80022=_0x49e624();print(_0xe80022);break;}default:print(''),print('\x20\x20'+c['heading']+'Usage:'+c['reset']+'\x20'+c[_0x843068(0x216)]+'colana\x20service'+c[_0x843068(0x185)]+_0x843068(0x18d)),print(''),print('\x20\x20'+c[_0x843068(0x1ca)]+_0x843068(0x20e)+c['reset']),print('\x20\x20\x20\x20'+c['cmd']+_0x843068(0x1c3)+c['reset']+_0x843068(0x1aa)),print('\x20\x20\x20\x20'+c['cmd']+'uninstall'+c[_0x843068(0x185)]+'\x20\x20\x20Remove\x20background\x20service'),print(_0x843068(0x226)+c[_0x843068(0x216)]+_0x843068(0x249)+c['reset']+_0x843068(0x24d)),print('\x20\x20\x20\x20'+c['cmd']+_0x843068(0x235)+c[_0x843068(0x185)]+_0x843068(0x1e6)),print('');}process[_0x843068(0x23f)](0x0);}const _0xcc363d=parseSetupArgs(process['argv']);_0xcc363d&&await headlessSetup(_0xcc363d);const _0x5f01cb=a0_0x351851['join'](ROOT,_0x843068(0x196));if((!a0_0x39297c[_0x843068(0x236)](DATA_DIR)||!a0_0x39297c['existsSync'](a0_0x351851['join'](DATA_DIR,'dashboard.db')))&&a0_0x39297c['existsSync'](_0x5f01cb)&&a0_0x39297c['existsSync'](a0_0x351851['join'](_0x5f01cb,_0x843068(0x222))))try{const {migrateData:_0x5a6edf}=await import(_0x843068(0x19f));await _0x5a6edf(_0x5f01cb,DATA_DIR);}catch(_0x3cdca9){console[_0x843068(0x22e)](_0x843068(0x192)+_0x3cdca9[_0x843068(0x1bd)]),console['error'](_0x843068(0x1b2)+_0x5f01cb),console['error']('[co:lana]\x20Set\x20DATA_DIR='+_0x5f01cb+_0x843068(0x18b));}!a0_0x39297c[_0x843068(0x236)](DATA_DIR)&&a0_0x39297c[_0x843068(0x233)](DATA_DIR,{'recursive':!![]});const _0x504241=a0_0x351851[_0x843068(0x252)](DATA_DIR,_0x843068(0x263)),_0x4c7e56=!a0_0x39297c[_0x843068(0x236)](_0x504241);_0x4c7e56&&(await firstRunWizard(),a0_0x39297c[_0x843068(0x219)](_0x504241,new Date()[_0x843068(0x1fb)]()));print('\x20\x20'+icons['arrow']+'\x20Starting\x20'+brandName()+'...'),await startServer();const _0x3ce29d=a0_0x351851[_0x843068(0x252)](DATA_DIR,_0x843068(0x1e3));if(a0_0x39297c['existsSync'](_0x3ce29d))try{a0_0x39297c['unlinkSync'](_0x3ce29d);}catch{}else setTimeout(()=>{const _0x268ae6=_0x843068,_0xf0500d=process['env'][_0x268ae6(0x227)]||0x2694,_0x3094e3='http://localhost:'+_0xf0500d;openBrowser(_0x3094e3);},0xbb8);}!process[a0_0x33dbd5(0x1b5)][a0_0x33dbd5(0x1b8)]&&main()[a0_0x33dbd5(0x231)](_0x4ee1e1=>{const _0x3a37db=a0_0x33dbd5;console['error'](_0x3a37db(0x1fa)+_0x4ee1e1[_0x3a37db(0x1bd)]),process[_0x3a37db(0x23f)](0x1);});
3
+ const a0_0x2dc544=a0_0x516d;(function(_0x18f683,_0x20280b){const _0x6919b4=a0_0x516d,_0x1f87ec=_0x18f683();while(!![]){try{const _0x4d2e4f=parseInt(_0x6919b4(0x21c))/0x1*(-parseInt(_0x6919b4(0x264))/0x2)+parseInt(_0x6919b4(0x265))/0x3+-parseInt(_0x6919b4(0x1ec))/0x4*(-parseInt(_0x6919b4(0x1c5))/0x5)+-parseInt(_0x6919b4(0x20f))/0x6*(parseInt(_0x6919b4(0x274))/0x7)+-parseInt(_0x6919b4(0x22d))/0x8+-parseInt(_0x6919b4(0x25a))/0x9+-parseInt(_0x6919b4(0x196))/0xa*(-parseInt(_0x6919b4(0x267))/0xb);if(_0x4d2e4f===_0x20280b)break;else _0x1f87ec['push'](_0x1f87ec['shift']());}catch(_0x2b99cc){_0x1f87ec['push'](_0x1f87ec['shift']());}}}(a0_0x5cdc,0xe92c3));import{execSync,execFileSync,spawn}from'child_process';import a0_0x46052 from'fs';import a0_0xdd5bd7 from'path';import a0_0x520dd3 from'readline';import a0_0xff0481 from'os';import{fileURLToPath,pathToFileURL}from'url';import{commandExistsSync,getCommandPath}from'../server/platform.js';import{c,icons,brandName,tagline,printBanner}from'../server/brand.js';function a0_0x516d(_0x4d6786,_0x302773){_0x4d6786=_0x4d6786-0x193;const _0x5cdc92=a0_0x5cdc();let _0x516d36=_0x5cdc92[_0x4d6786];if(a0_0x516d['CrWLEt']===undefined){var _0x5c80a6=function(_0x53cae2){const _0x2b47eb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x46052='',_0xdd5bd7='';for(let _0x520dd3=0x0,_0xff0481,_0x35f360,_0x1d36c3=0x0;_0x35f360=_0x53cae2['charAt'](_0x1d36c3++);~_0x35f360&&(_0xff0481=_0x520dd3%0x4?_0xff0481*0x40+_0x35f360:_0x35f360,_0x520dd3++%0x4)?_0x46052+=String['fromCharCode'](0xff&_0xff0481>>(-0x2*_0x520dd3&0x6)):0x0){_0x35f360=_0x2b47eb['indexOf'](_0x35f360);}for(let _0x11b634=0x0,_0x25c6f4=_0x46052['length'];_0x11b634<_0x25c6f4;_0x11b634++){_0xdd5bd7+='%'+('00'+_0x46052['charCodeAt'](_0x11b634)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xdd5bd7);};a0_0x516d['TrfYQF']=_0x5c80a6,a0_0x516d['qcfSiy']={},a0_0x516d['CrWLEt']=!![];}const _0x4f3d31=_0x5cdc92[0x0],_0x5ed547=_0x4d6786+_0x4f3d31,_0x302621=a0_0x516d['qcfSiy'][_0x5ed547];return!_0x302621?(_0x516d36=a0_0x516d['TrfYQF'](_0x516d36),a0_0x516d['qcfSiy'][_0x5ed547]=_0x516d36):_0x516d36=_0x302621,_0x516d36;}const __dirname=a0_0xdd5bd7['dirname'](fileURLToPath(import.meta.url)),ROOT=a0_0xdd5bd7['resolve'](__dirname,'..'),DATA_DIR=process[a0_0x2dc544(0x24a)]['DATA_DIR']?a0_0xdd5bd7['resolve'](process['env'][a0_0x2dc544(0x255)]):a0_0xdd5bd7[a0_0x2dc544(0x220)](a0_0xff0481[a0_0x2dc544(0x1c7)](),'.colana'),toImportPath=_0x35f360=>process[a0_0x2dc544(0x252)]===a0_0x2dc544(0x26e)?pathToFileURL(_0x35f360)['href']:_0x35f360,CLI_PROVIDERS=[{'name':a0_0x2dc544(0x1b9),'binary':a0_0x2dc544(0x1ed),'installCmd':a0_0x2dc544(0x1a6),'auth':a0_0x2dc544(0x1ff),'runtime':a0_0x2dc544(0x1bb)},{'name':'Codex\x20CLI','binary':'codex','installCmd':'npm\x20install\x20-g\x20@openai/codex','auth':a0_0x2dc544(0x243),'runtime':'npm'},{'name':'Gemini\x20CLI','binary':a0_0x2dc544(0x1c3),'installCmd':a0_0x2dc544(0x197),'auth':'Free\x20or\x20paid\x20Google\x20account','runtime':'npm','recommended':!![]},{'name':'Copilot\x20CLI','binary':'copilot','fallbackBinary':'gh','detectCmd':a0_0x2dc544(0x195),'fallbackDetectCmd':'gh\x20copilot\x20--version','installCmd':a0_0x2dc544(0x1bc),'prereq':'gh','prereqName':'GitHub\x20CLI','auth':a0_0x2dc544(0x19f),'runtime':a0_0x2dc544(0x1bb)},{'name':'Aider','binary':'aider','installCmd':a0_0x2dc544(0x244),'fallbackCmd':a0_0x2dc544(0x20d),'prereq':'python3','prereqFallback':'python','prereqName':'Python','auth':'LLM\x20API\x20key\x20required','runtime':'pipx'},{'name':a0_0x2dc544(0x1ea),'binary':'openclaw','installCmd':a0_0x2dc544(0x20e),'auth':'User-configured\x20model\x20keys','runtime':'npm'}];function detectWindowsWsl(){const _0xbc71b5=a0_0x2dc544,_0x1d36c3=process[_0xbc71b5(0x252)]===_0xbc71b5(0x26e);if(!_0x1d36c3)return{'isNativeWindows':![],'wslAvailable':![]};let _0x11b634=![];try{const _0x25c6f4=execSync(_0xbc71b5(0x270),{'stdio':['pipe','pipe',_0xbc71b5(0x234)],'timeout':0x1388}),_0x59baa1=_0x25c6f4[_0xbc71b5(0x1af)]()['replace'](/\0/g,'')['trim']();_0x11b634=_0x59baa1[_0xbc71b5(0x273)]>0x0;}catch{_0x11b634=![];}return{'isNativeWindows':_0x1d36c3,'wslAvailable':_0x11b634};}function detectProvider(_0x5ce63d){const _0x488379=a0_0x2dc544;if(_0x5ce63d['detectCmd'])try{return execSync(_0x5ce63d['detectCmd'],{'stdio':_0x488379(0x1de)}),!![];}catch{if(_0x5ce63d[_0x488379(0x1dc)])try{return execSync(_0x5ce63d['fallbackDetectCmd'],{'stdio':'ignore'}),!![];}catch{}return![];}return commandExistsSync(_0x5ce63d[_0x488379(0x25e)]);}function detectPythonVersion(){const _0x180db9=a0_0x2dc544;for(const _0x158300 of['python3',_0x180db9(0x1ee)]){try{const _0x275ac1=execFileSync(_0x158300,['--version'],{'timeout':0x1388,'encoding':_0x180db9(0x26a),'stdio':[_0x180db9(0x1de),_0x180db9(0x234),_0x180db9(0x1de)]})[_0x180db9(0x250)](),_0x4ce259=_0x275ac1[_0x180db9(0x26c)](/Python\s+(\d+)\.(\d+)/);if(_0x4ce259)return{'major':parseInt(_0x4ce259[0x1]),'minor':parseInt(_0x4ce259[0x2])};}catch{}}return null;}function getCliNextSteps(_0x1131fa,_0x46ffd7=''){const _0x475579=a0_0x2dc544,_0x3d6031=_0x46ffd7['toLowerCase'](),_0x15eea5=process[_0x475579(0x252)];if(_0x1131fa['runtime']===_0x475579(0x1bb)&&(_0x3d6031['includes']('gyp')||_0x3d6031[_0x475579(0x1b2)]('msbuild')||_0x3d6031['includes'](_0x475579(0x221))||_0x3d6031[_0x475579(0x1b2)]('build\x20tools'))){if(_0x15eea5===_0x475579(0x26e))return['Open\x20PowerShell\x20as\x20Administrator\x20(right-click\x20>\x20\x22Run\x20as\x20administrator\x22)','Run:\x20'+c['cmd']+_0x475579(0x239)+c[_0x475579(0x232)],_0x475579(0x26f),'Close\x20and\x20reopen\x20your\x20terminal',_0x475579(0x261)+c[_0x475579(0x19b)]+_0x1131fa[_0x475579(0x1bd)]+c[_0x475579(0x232)]];if(_0x15eea5===_0x475579(0x1f7))return[_0x475579(0x261)+c[_0x475579(0x19b)]+_0x475579(0x1e0)+c['reset'],'Complete\x20the\x20system\x20dialog\x20that\x20appears',_0x475579(0x261)+c['cmd']+_0x1131fa[_0x475579(0x1bd)]+c['reset']];return['Run:\x20'+c['cmd']+_0x475579(0x1ab)+c['reset'],'Run:\x20'+c['cmd']+_0x1131fa[_0x475579(0x1bd)]+c['reset']];}if(_0x1131fa['runtime']==='pipx'&&(_0x3d6031[_0x475579(0x1b2)]('python')||_0x3d6031[_0x475579(0x1b2)]('setuptools'))){if(_0x15eea5==='win32')return[_0x475579(0x261)+c[_0x475579(0x19b)]+'pip\x20install\x20uv'+c[_0x475579(0x232)],'Run:\x20'+c['cmd']+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c[_0x475579(0x232)],'Close\x20and\x20reopen\x20your\x20terminal'];return[_0x475579(0x261)+c['cmd']+_0x475579(0x1e5)+c['reset']+'\x20\x20\x20(or:\x20'+c[_0x475579(0x19b)]+'brew\x20install\x20uv'+c[_0x475579(0x232)]+')',_0x475579(0x261)+c[_0x475579(0x19b)]+'uv\x20tool\x20install\x20--python\x20python3.12\x20aider-chat'+c['reset'],'Restart\x20your\x20terminal'];}return['Run:\x20'+c['cmd']+_0x1131fa['installCmd']+c['reset'],'If\x20that\x20fails,\x20check\x20the\x20error\x20output\x20above\x20for\x20details'];}const rl=a0_0x520dd3[a0_0x2dc544(0x199)]({'input':process['stdin'],'output':process['stdout']}),ask=_0x172a27=>new Promise(_0x17e683=>rl[a0_0x2dc544(0x268)](_0x172a27,_0x17e683));function print(_0x44cc3b=''){const _0x11dd45=a0_0x2dc544;process[_0x11dd45(0x212)][_0x11dd45(0x1f4)](_0x44cc3b+'\x0a');}function runInstall(_0x267b5a,{quiet:quiet=![]}={}){return new Promise(_0x25f2db=>{const _0x1a180e=a0_0x516d,_0x51ee02=_0x267b5a['split']('\x20'),_0x21b557=spawn(_0x51ee02[0x0],_0x51ee02['slice'](0x1),{'stdio':quiet?_0x1a180e(0x234):_0x1a180e(0x22f),'env':{...process['env']},...process['platform']==='win32'&&{'shell':!![]}});_0x21b557['on']('close',_0x17fd6c=>_0x25f2db(_0x17fd6c===0x0)),_0x21b557['on'](_0x1a180e(0x263),()=>_0x25f2db(![]));});}function runInstallArgs(_0x3176bb,_0x4484cb){return new Promise(_0x5839f4=>{const _0x38d3d3=a0_0x516d,_0x38604a=spawn(_0x3176bb,_0x4484cb,{'stdio':'inherit','env':{...process[_0x38d3d3(0x24a)]}});_0x38604a['on']('close',_0x301bac=>_0x5839f4(_0x301bac===0x0)),_0x38604a['on']('error',()=>_0x5839f4(![]));});}async function tryInstallBuildTools(){const _0x17c3a7=a0_0x2dc544,_0x24698b=process['platform'];if(_0x24698b==='win32'){if(commandExistsSync(_0x17c3a7(0x25d))){print('\x20\x20\x20\x20'+c[_0x17c3a7(0x216)]+_0x17c3a7(0x21d)+c['reset']);const _0x3d5a26=await runInstallArgs('winget',['install',_0x17c3a7(0x217),'--override','--add\x20Microsoft.VisualStudio.Workload.VCTools\x20--passive\x20--norestart','--accept-source-agreements',_0x17c3a7(0x203)]);return _0x3d5a26;}return![];}if(_0x24698b==='darwin'){print('\x20\x20\x20\x20'+c['muted']+_0x17c3a7(0x213)+c[_0x17c3a7(0x232)]);const _0x356223=await runInstallArgs('xcode-select',['--install']);return _0x356223;}return![];}async function runDoctorChecks(_0x210a0f=![]){const _0x12c463=a0_0x2dc544;print(''),print('\x20\x20'+brandName()+'\x20'+c['muted']+'Doctor'+c[_0x12c463(0x232)]),print('\x20\x20'+c[_0x12c463(0x216)]+'─'[_0x12c463(0x19a)](0x14)+c[_0x12c463(0x232)]),print('');const _0xfa4db8=process[_0x12c463(0x1f9)],_0x52b19d=parseInt(_0xfa4db8['slice'](0x1)),_0x264086=_0x52b19d>=0x12;_0x264086?print('\x20\x20'+icons[_0x12c463(0x257)]+'\x20Node.js\x20'+c['value']+_0xfa4db8+c[_0x12c463(0x232)]):print('\x20\x20'+icons['fail']+_0x12c463(0x1f2)+c[_0x12c463(0x1c0)]+_0xfa4db8+c['reset']+'\x20'+c['error']+'—\x20requires\x20v18+'+c['reset']);let _0x4db456=![];try{await import(_0x12c463(0x21f)),_0x4db456=!![],print('\x20\x20'+icons[_0x12c463(0x257)]+_0x12c463(0x23e)+c[_0x12c463(0x216)]+_0x12c463(0x235)+c[_0x12c463(0x232)]);}catch{print('\x20\x20'+icons['fail']+_0x12c463(0x23e)+c[_0x12c463(0x263)]+'—\x20failed\x20to\x20load'+c['reset']);}print(''),print('\x20\x20'+c[_0x12c463(0x1a4)]+'AI\x20CLI\x20Agents:'+c['reset']);const _0x407471=[];for(const _0x40ca7e of CLI_PROVIDERS){const _0x1aff1c=detectProvider(_0x40ca7e),_0x3b4ad4={'name':_0x40ca7e[_0x12c463(0x20a)],'installed':_0x1aff1c};if(_0x210a0f&&_0x1aff1c){let _0xa95761=_0x40ca7e[_0x12c463(0x25e)];if(_0x40ca7e[_0x12c463(0x1cd)])try{execSync(_0x40ca7e['detectCmd'],{'stdio':_0x12c463(0x1de)}),_0xa95761=_0x40ca7e[_0x12c463(0x1cd)][_0x12c463(0x204)]('\x20')[0x0];}catch{_0x40ca7e['fallbackDetectCmd']&&(_0xa95761=_0x40ca7e[_0x12c463(0x1dc)]['split']('\x20')[0x0]);}try{const _0xf4f32=execSync(_0xa95761+_0x12c463(0x23a),{'stdio':[_0x12c463(0x234),'pipe','pipe'],'timeout':0x1388});_0x3b4ad4['version']=_0xf4f32[_0x12c463(0x1af)]()[_0x12c463(0x250)]()['split']('\x0a')[0x0];}catch{_0x3b4ad4[_0x12c463(0x1f9)]=null;}_0x3b4ad4[_0x12c463(0x237)]=getCommandPath(_0xa95761);}if(_0x1aff1c){const _0x2c0aec=_0x210a0f&&_0x3b4ad4['version']?'\x20'+c['muted']+'('+c[_0x12c463(0x1c0)]+_0x3b4ad4['version']+c[_0x12c463(0x216)]+')'+c['reset']:'',_0xf4a995=_0x210a0f&&_0x3b4ad4[_0x12c463(0x237)]?'\x20'+c[_0x12c463(0x216)]+'—\x20'+_0x3b4ad4[_0x12c463(0x237)]+c[_0x12c463(0x232)]:'';print(_0x12c463(0x271)+icons['pass']+'\x20'+_0x40ca7e[_0x12c463(0x20a)]+_0x2c0aec+_0xf4a995);}else print(_0x12c463(0x271)+icons['fail']+'\x20'+c[_0x12c463(0x216)]+_0x40ca7e['name']+c[_0x12c463(0x232)]);_0x407471['push'](_0x3b4ad4);}print('');const _0x3db6e0=_0x407471[_0x12c463(0x194)](_0x1f8ca0=>_0x1f8ca0['installed'])['length'];return _0x3db6e0>0x0?print('\x20\x20'+c['value']+_0x3db6e0+'/'+_0x407471['length']+c['reset']+'\x20'+c[_0x12c463(0x216)]+'CLI\x20agent(s)\x20available.'+c['reset']):print('\x20\x20'+icons['warn']+'\x20\x20No\x20CLI\x20agents\x20found.\x20Install\x20at\x20least\x20one\x20to\x20use\x20'+brandName()+'.'),print(''),{'nodeOk':_0x264086,'ptyOk':_0x4db456,'providers':_0x407471};}async function firstRunWizard(){const _0x41782d=a0_0x2dc544;printBanner(print);const {isNativeWindows:_0x50d799,wslAvailable:_0x899a3c}=detectWindowsWsl();if(_0x50d799&&_0x899a3c){print('\x20\x20'+icons[_0x41782d(0x1b1)]+_0x41782d(0x272)),print(_0x41782d(0x256)+c['muted']+_0x41782d(0x1b0)+c['reset']),print(_0x41782d(0x211)),print(''),print(_0x41782d(0x1ac)),print(_0x41782d(0x1b3)),print(_0x41782d(0x26d)),print('');const _0x317d12=await ask(_0x41782d(0x25b));_0x317d12[_0x41782d(0x198)]()!=='y'&&(print(''),print(_0x41782d(0x22b)),print(''),rl[_0x41782d(0x1f6)](),process['exit'](0x0)),print('');}print('\x20\x20Checking\x20your\x20environment...');const _0x50e32f=await runDoctorChecks(![]);!_0x50e32f['nodeOk']&&(print(_0x41782d(0x1f8)),process['exit'](0x1));!_0x50e32f[_0x41782d(0x245)]&&(print('\x20\x20\x20\x20\x20Try:\x20npm\x20rebuild\x20node-pty'),process['exit'](0x1));const _0x1d590c=[],_0x549798=[];for(let _0x3d174b=0x0;_0x3d174b<CLI_PROVIDERS['length'];_0x3d174b++){_0x50e32f['providers'][_0x3d174b][_0x41782d(0x1ef)]?_0x1d590c['push'](CLI_PROVIDERS[_0x3d174b]):_0x549798['push'](CLI_PROVIDERS[_0x3d174b]);}print('');if(_0x549798[_0x41782d(0x273)]>0x0&&_0x1d590c[_0x41782d(0x273)]>0x0){print(_0x41782d(0x230)),print('');for(const _0x21c46a of _0x549798){const _0x369e3f=await ask(_0x41782d(0x19c)+_0x21c46a['name']+_0x41782d(0x258)+_0x21c46a[_0x41782d(0x26b)]+')\x20[y/N]\x20');_0x369e3f[_0x41782d(0x198)]()==='y'&&(await installProvider(_0x21c46a),detectProvider(_0x21c46a)&&_0x1d590c[_0x41782d(0x241)](_0x21c46a));}}else{if(_0x1d590c['length']===0x0){print('\x20\x20'+icons[_0x41782d(0x1b1)]+'\x20\x20No\x20AI\x20coding\x20agents\x20found.\x20'+brandName()+_0x41782d(0x215)),print('');const _0x2893d8=CLI_PROVIDERS['find'](_0x6c7b47=>_0x6c7b47['recommended']);if(_0x2893d8){print('\x20\x20Recommended:\x20'+_0x2893d8[_0x41782d(0x20a)]+'\x20—\x20works\x20with\x20any\x20Google\x20account\x20(free\x20or\x20paid)');const _0x3868fb=await ask(_0x41782d(0x19c)+_0x2893d8[_0x41782d(0x20a)]+_0x41782d(0x20c));if(_0x3868fb[_0x41782d(0x198)]()!=='n'){await installProvider(_0x2893d8);if(detectProvider(_0x2893d8))_0x1d590c['push'](_0x2893d8);}}if(_0x1d590c[_0x41782d(0x273)]===0x0){print(''),print(_0x41782d(0x1a5)),CLI_PROVIDERS[_0x41782d(0x251)]((_0x5a7275,_0x3eef34)=>{print('\x20\x20\x20\x20['+(_0x3eef34+0x1)+']\x20'+_0x5a7275['name']+'\x20('+_0x5a7275['auth']+')');}),print(_0x41782d(0x1c1)),print('');const _0x41c40d=await ask('\x20\x20>\x20'),_0x4d7a34=parseInt(_0x41c40d)-0x1;if(_0x4d7a34>=0x0&&_0x4d7a34<CLI_PROVIDERS['length']){await installProvider(CLI_PROVIDERS[_0x4d7a34]);if(detectProvider(CLI_PROVIDERS[_0x4d7a34]))_0x1d590c['push'](CLI_PROVIDERS[_0x4d7a34]);}}_0x1d590c['length']===0x0&&(print(''),print('\x20\x20'+icons[_0x41782d(0x1b1)]+_0x41782d(0x21e)+brandName()+'\x20will\x20start\x20but\x20you\x20won\x27t\x20be\x20able\x20to\x20run\x20agents.'),print(_0x41782d(0x256)+c['muted']+'Install\x20one\x20anytime\x20from\x20Settings\x20>\x20AI\x20CLI\x20Agents.'+c['reset']),print(''));}}_0x1d590c[_0x41782d(0x273)]>0x0&&(print(''),print('\x20\x20'+icons['pass']+'\x20You\x27re\x20good\x20to\x20go!\x20'+c[_0x41782d(0x1c0)]+_0x1d590c[_0x41782d(0x273)]+c[_0x41782d(0x232)]+_0x41782d(0x1e2)),print(_0x41782d(0x1eb)));print('');const _0xe456c7=await ask('\x20\x20Start\x20Colana\x20automatically\x20on\x20login?\x20[Y/n]\x20');if(_0xe456c7['toLowerCase']()!=='n')try{const {installService:_0x2eb31c}=await import(toImportPath(a0_0xdd5bd7['join'](ROOT,_0x41782d(0x1dd),'service-manager.js'))),_0x100e0e=_0x2eb31c();_0x100e0e['success']?print('\x20\x20'+icons[_0x41782d(0x257)]+'\x20Auto-start\x20enabled.\x20'+_0x100e0e[_0x41782d(0x240)]):(print('\x20\x20'+icons[_0x41782d(0x1b1)]+_0x41782d(0x214)+_0x100e0e['message']),print(_0x41782d(0x229)));}catch(_0x172f55){print('\x20\x20'+icons['warn']+'\x20\x20Could\x20not\x20enable\x20auto-start:\x20'+_0x172f55[_0x41782d(0x240)]),print('\x20\x20\x20\x20\x20You\x20can\x20try\x20later\x20with:\x20colana\x20service\x20install');}print(''),print('\x20\x20Free\x20tier:\x202\x20concurrent\x20sessions,\x20all\x20features\x20included.'),print(_0x41782d(0x1a9)),print(''),rl['close']();}async function installProvider(_0x4748b4,{quiet:quiet=![]}={}){const _0x250312=a0_0x2dc544;if(_0x4748b4[_0x250312(0x1fe)]&&!commandExistsSync(_0x4748b4['prereq'])){if(_0x4748b4['prereqFallback']&&commandExistsSync(_0x4748b4['prereqFallback']))print('\x20\x20\x20\x20Using\x20'+_0x4748b4[_0x250312(0x25f)]+'\x20(fallback\x20for\x20'+_0x4748b4['prereq']+')');else return!quiet&&(print(_0x250312(0x271)+(_0x4748b4['prereqName']||_0x4748b4['prereq'])+'\x20is\x20required\x20but\x20not\x20found.'),print('\x20\x20\x20\x20Please\x20install\x20'+(_0x4748b4[_0x250312(0x1b6)]||_0x4748b4[_0x250312(0x1fe)])+'\x20first.')),![];}let _0x7c466c=_0x4748b4[_0x250312(0x1bd)],_0x23663e=_0x4748b4[_0x250312(0x1c4)],_0x186679='';if(_0x4748b4['binary']==='aider'){const _0x314365=detectPythonVersion();if(_0x314365&&_0x314365['major']>=0x3&&_0x314365[_0x250312(0x1ad)]>=0xd){print(_0x250312(0x271)+c[_0x250312(0x216)]+'Python\x20'+_0x314365[_0x250312(0x1e8)]+'.'+_0x314365[_0x250312(0x1ad)]+'\x20detected\x20—\x20aider\x20requires\x20Python\x203.10-3.12'+c[_0x250312(0x232)]),print(_0x250312(0x271)+c['muted']+'Using\x20uv\x20to\x20install\x20with\x20Python\x203.12...'+c[_0x250312(0x232)]),_0x186679=_0x250312(0x269);let _0x2eb530=commandExistsSync('uv');if(!_0x2eb530){print('\x20\x20\x20\x20'+c[_0x250312(0x216)]+_0x250312(0x1fd)+c[_0x250312(0x232)]),_0x2eb530=await runInstall(_0x250312(0x1e5));if(!_0x2eb530)_0x2eb530=await runInstall(_0x250312(0x222));}if(_0x2eb530)_0x7c466c=_0x250312(0x223),_0x23663e=null;else return!quiet&&(print(_0x250312(0x271)+icons[_0x250312(0x208)]+'\x20'+c['error']+_0x250312(0x1d6)+c['reset']),printNextSteps(_0x4748b4,_0x250312(0x21a))),![];}}if(!quiet)print(_0x250312(0x219)+_0x4748b4['name']+_0x250312(0x1d4));let _0x11d218=await runInstall(_0x7c466c,{'quiet':quiet});if(!_0x11d218&&_0x23663e){if(!quiet)print('\x20\x20\x20\x20Trying\x20fallback:\x20'+_0x23663e+'...');_0x11d218=await runInstall(_0x23663e,{'quiet':quiet});}if(_0x11d218){if(!quiet)print(_0x250312(0x271)+icons['pass']+'\x20'+_0x4748b4['name']+'\x20installed');return!![];}else{if(_0x4748b4[_0x250312(0x248)]==='npm'){if(!quiet)print('\x20\x20\x20\x20'+c['muted']+'Build\x20tools\x20may\x20be\x20needed.\x20Attempting\x20automatic\x20install...'+c['reset']);const _0xce5f1e=await tryInstallBuildTools();if(_0xce5f1e){if(!quiet)print('\x20\x20\x20\x20'+c['muted']+'Retrying\x20'+_0x4748b4['name']+'\x20install...'+c['reset']);_0x11d218=await runInstall(_0x7c466c,{'quiet':quiet});}if(_0x11d218){if(!quiet)print(_0x250312(0x271)+icons[_0x250312(0x257)]+'\x20'+_0x4748b4[_0x250312(0x20a)]+_0x250312(0x1d5));return!![];}_0x186679=_0x186679||_0x250312(0x20b);}return!quiet&&(print('\x20\x20\x20\x20'+icons['fail']+'\x20'+c[_0x250312(0x263)]+'Installation\x20failed.'+c['reset']),printNextSteps(_0x4748b4,_0x186679)),![];}}function printNextSteps(_0x49c6da,_0x508cbe=''){const _0x43b090=a0_0x2dc544,_0x24ee11=getCliNextSteps(_0x49c6da,_0x508cbe);print(''),print(_0x43b090(0x271)+c[_0x43b090(0x1a4)]+_0x43b090(0x249)+c['reset']),_0x24ee11['forEach']((_0x40941a,_0x58e5eb)=>{const _0x27627e=_0x43b090;print('\x20\x20\x20\x20'+c['muted']+(_0x58e5eb+0x1)+'.'+c[_0x27627e(0x232)]+'\x20'+_0x40941a);}),print('');}async function startServer(){const _0x43280d=a0_0xdd5bd7['join'](ROOT,'server','index.js');try{const _0x1075eb=await import(toImportPath(_0x43280d));return _0x1075eb;}catch(_0x14458c){console['error']('Failed\x20to\x20start\x20server:\x20'+_0x14458c['message']),process['exit'](0x1);}}function openBrowser(_0x1b4da4){const _0x36d39b=a0_0x2dc544,_0x3620b8=process[_0x36d39b(0x252)];try{if(_0x3620b8===_0x36d39b(0x1f7))execSync(_0x36d39b(0x210)+_0x1b4da4+'\x22',{'stdio':'ignore'});else{if(_0x3620b8===_0x36d39b(0x26e))execSync(_0x36d39b(0x23b)+_0x1b4da4+'\x22',{'stdio':_0x36d39b(0x1de)});else try{execSync(_0x36d39b(0x266)+_0x1b4da4+'\x22',{'stdio':'ignore'});}catch{try{execSync('cmd.exe\x20/c\x20start\x20\x22\x22\x20\x22'+_0x1b4da4+'\x22',{'stdio':'ignore'});}catch{}}}}catch{}}export function parseSetupArgs(_0x20e99f){const _0x2961d3=a0_0x2dc544,_0x4f19c7=_0x20e99f[_0x2961d3(0x1aa)](0x2);if(!_0x4f19c7[_0x2961d3(0x1b2)]('--setup'))return null;const _0x50e8d3=new Set([_0x2961d3(0x1ed),'codex',_0x2961d3(0x1c3),'copilot','aider',_0x2961d3(0x1ae)]),_0x4da74f={'all':![],'agents':null};_0x4f19c7['includes']('--all')&&(_0x4da74f[_0x2961d3(0x22e)]=!![]);const _0x26050d=_0x4f19c7['indexOf'](_0x2961d3(0x1f5));if(_0x26050d!==-0x1&&_0x4f19c7[_0x26050d+0x1]){const _0x380963=_0x4f19c7[_0x26050d+0x1][_0x2961d3(0x204)](',')[_0x2961d3(0x262)](_0x1b3f13=>_0x1b3f13['trim']()['toLowerCase']())[_0x2961d3(0x194)](Boolean),_0x31458d=_0x380963[_0x2961d3(0x194)](_0x3dafb7=>_0x50e8d3[_0x2961d3(0x193)](_0x3dafb7));if(_0x31458d['length']>0x0)_0x4da74f['agents']=_0x31458d;}return _0x4da74f;}export function selectRecommendedAgents(_0x489ff9={}){const _0x1ba47a=a0_0x2dc544,_0xbcb9af=['claude','codex',_0x1ba47a(0x1c3),'copilot',_0x1ba47a(0x225),'openclaw'],_0x459f95={'claude':_0x1ba47a(0x1ed),'codex':_0x1ba47a(0x1df),'gemini':'gemini','copilot':_0x1ba47a(0x19d),'aider':'aider','openclaw':_0x1ba47a(0x1ae)},_0x98fd8d=new Set();for(const [_0x18f3c0,_0x15bae7]of Object['entries'](_0x459f95)){if(commandExistsSync(_0x15bae7))_0x98fd8d[_0x1ba47a(0x233)](_0x18f3c0);}if(!_0x98fd8d[_0x1ba47a(0x193)](_0x1ba47a(0x19d))&&commandExistsSync('gh'))try{execFileSync('gh',[_0x1ba47a(0x19d),'--version'],{'stdio':_0x1ba47a(0x234),'timeout':0x1388}),_0x98fd8d['add']('copilot');}catch{}if(_0x489ff9['all'])return _0xbcb9af[_0x1ba47a(0x194)](_0x195698=>!_0x98fd8d['has'](_0x195698));if(_0x489ff9['agents'])return _0x489ff9['agents']['filter'](_0x2a24fc=>!_0x98fd8d[_0x1ba47a(0x193)](_0x2a24fc));const _0x20433d=[],_0x4fc281=commandExistsSync(_0x1ba47a(0x1d9))||commandExistsSync(_0x1ba47a(0x1ee));if(!_0x98fd8d[_0x1ba47a(0x193)]('gemini'))_0x20433d['push']('gemini');if(!_0x98fd8d['has'](_0x1ba47a(0x1ed)))_0x20433d[_0x1ba47a(0x241)]('claude');if(!_0x98fd8d[_0x1ba47a(0x193)]('codex'))_0x20433d['push'](_0x1ba47a(0x1df));if(!_0x98fd8d['has'](_0x1ba47a(0x225))&&_0x4fc281)_0x20433d[_0x1ba47a(0x241)](_0x1ba47a(0x225));return _0x20433d;}function a0_0x5cdc(){const _0x4fef98=['C3rKB3v0','sw5ZDgfSBgLUzYbyy29KzsbdB21Tyw5KieXPBMuGvg9VBhmUlI4','icbdB3vSzcbUB3qGzw5HyMXLigf1Dg8TC3rHCNq6ia','ihjLCxvPCMvZigf0igXLyxn0ig9UzsbdteKGywDLBNqGDg8GCNvUlG','Bxv0zwq','twLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhm','iokaLcb1BMTUB3DUihbYB3zPzgvY','icaGieLUC3rHBgXPBMCG','ChL0Ag9UihnLDhvWDg9VBhm','yxjJAa','mtnys3zHvMi','sw5ZDgfSBgLUzYbwAxn1ywWGu3r1zgLViej1AwXKifrVB2XZihzPysb3Aw5NzxqUlI4','icboBYbdteKGywDLBNrZigLUC3rHBgXLzc4G','BM9Kzs1WDhK','AM9PBG','BMf0AxzL','CgLWmYbPBNn0ywXSihv2','DxyGDg9VBcbPBNn0ywXSic0TChL0Ag9Uihb5DgHVBJmUmtiGywLKzxiTy2HHDa','icaGicaGicaGicbdAgvJAYbdteKGywDLBNrZigfUzcbZExn0zw0GAgvHBhrOcIaG','ywLKzxi','ls12zxjZAw9U','vxnHz2u6','yxjYB3C','icaGicbzB3uGy2fUihrYEsbSyxrLCIb3AxrOoIbJB2XHBMeGC2vYDMLJzsbPBNn0ywXS','EwvZ','icbpCgvUihLVDxiGv1nmmIb0zxjTAw5HBcbHBMqGCNvUoIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','zgfZAgjVyxjKlMrI','odu0ode1mKvmCwr0uq','ywXS','Aw5OzxjPDa','icbzB3uGy2fUigLUC3rHBgWGBwLZC2LUzYbdteLZig5VDYbVCIbSyxrLCIbMCM9TifnLDhrPBMDZlG','cIaG','CMvZzxq','ywrK','CgLWzq','Bg9HzgvK','ls12zxjIB3nL','Cgf0Aa','icbjBNn0ywXSihnWzwnPzMLJigfNzw50CYaOy29TBweTC2vWyxjHDgvKkqOGia','D2LUz2v0igLUC3rHBgWGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY4YmdiYlKj1AwXKvg9VBhmGls1VDMvYCMLKzsaIls1HzgqGtwLJCM9ZB2z0lLzPC3vHBfn0DwrPBY5xB3jRBg9Hzc5wq1rVB2XZic0TAw5JBhvKzvjLy29TBwvUzgvKic0TCgfZC2L2zsaTlw5VCMvZDgfYDciGls1Hy2nLChqTC291CMnLlwfNCMvLBwvUDhmGls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','ic0TDMvYC2LVBG','C3rHCNqGiIiGiG','y29Syw5HihnLCNzPy2uGAw5ZDgfSBa','icaGieLUC3rHBgWGywXSidyGywDLBNrZcIaG','ig5VzguTChr5ia','lNn1ChbYzxnZlwjYB3DZzxi','BwvZC2fNzq','ChvZAa','ieDPDa','uMvXDwLYzxmGt3bLBKfjihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','CgLWEcbPBNn0ywXSigfPzgvYlwnOyxq','Chr5t2S','A2v5CW','C3rHDhvZ','CNvUDgLTzq','tMv4DcbZDgvWCYb0BYbYzxnVBhzLoG','zw52','sw5ZDgfSBgLUzYbJBZPSyw5HigDSB2jHBgX5lI4U','Ahr0CdOVl2XVy2fSAg9ZDdO','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLlI4U','icaGicbuywLSihnLCNzPy2uGBg9NCYaOtgLUDxGVBwfJt1mPcGO','BwLJCM9ZB2z0','DhjPBq','zM9YrwfJAa','CgXHDgzVCM0','y29Syw5HigfKBwLU','igrHC2HIB2fYzaOGia','refuqv9esvi','icaGica','CgfZCW','pYaO','y29Syw5H','oteZnJuZv3HREw96','icbdB250Aw51zsb3AxrOig5HDgL2zsbxAw5KB3DZigfUExDHEt8Gw3KVtL0G','DJaUmc4W','D2LUz2v0','yMLUyxj5','ChjLCMvXrMfSBgjHy2S','ihDPBgWGBM93igf1Dg8TC3rHCNqGB24GBg9NAw4U','uNvUoIa','BwfW','zxjYB3i','otq4odjnrg5vzNO','mJC3mZm5oeflD2jqCq','EgrNlw9Wzw4GiG','mtq3nte1nwTmDhPlDq','CxvLC3rPB24','ChL0Ag9UidmUmtm','DxrMltG','yxv0Aa','Bwf0y2G','icaGicaGignVBgfUyq','D2LUmZi','v2fPDcbMB3iGDgHLigLUC3rHBgWGDg8Gy29TCgXLDguGkdiTnsbTAw51DgvZkq','D3nSic0TBgLZDcaTlxf1Awv0','icaGia','icbzB3uNCMuGCNvUBMLUzYbVBIbUyxrPDMuGv2LUzg93CYWGyNv0ifDttdiGAxmGyxzHAwXHyMXLlG','BgvUz3rO','otGXodCXmwHVz0zMsW','AgfZ','zMLSDgvY','y29WAwXVDcaTlxzLCNnPB24','mteWCMrpDxHW','BNbTigLUC3rHBgWGlwCGqgDVB2DSzs9Nzw1PBMKTy2XP','Dg9mB3DLCKnHC2u','y3jLyxrLsw50zxjMywnL','CMvWzwf0','y21K','icbjBNn0ywXSia','y29WAwXVDa','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiUienVBNnPzgvYihj1BM5PBMCG','r2L0shvIienVCgLSB3qGC3vIC2nYAxb0Aw9U','icbjBNn0ywXSAw5Nia','C3vJy2vZCW','ls1OzwXW','idXUDw1Izxi+icaGicaGicaGvxnLihnWzwnPzMLJihbVCNqG','AgvHzgLUzW','icbdAg9VC2uGB25LihrVigLUC3rHBgW6','BNbTigLUC3rHBgWGlwCGqgfUDgHYB3bPyY1HAs9JBgf1zguTy29Kzq','Dw5PBNn0ywXS','igfZigeGD29YA2fYB3vUzc4','icbvCgDYywrLigfUExrPBwuGzNjVBsbtzxr0Aw5NCYbMB3iGDw5SAw1PDgvKihnLC3nPB25ZlG','C2XPy2u','C3vKBYbHChqGDxbKyxrLicyMihn1zg8Gyxb0igLUC3rHBgWGlxKGyNvPBgqTzxnZzw50AwfSihb5DgHVBJm','icaGicaGihDZBcaTzcbvyNvUDhu','BwLUB3i','B3bLBMnSyxC','Dg9tDhjPBMC','quKGy29KAw5NienmsxmGD29YAYbIzxn0igLUifDttdiGkeXPBNv4igvUDMLYB25Tzw50ks4','D2fYBG','Aw5JBhvKzxm','icaGicaGig5WBsbPBNn0ywXSic1NignVBgfUyq','CgfJA2fNzs5QC29U','y29Syw5HigrVy3rVCG','ChjLCMvXtMfTzq','y29Syw5HihnLCNzPy2uGDw5PBNn0ywXS','zxHPDa','q2XHDwrLienVzgu','sw5ZDgfSBgvKoG','BNbT','z2GGzxH0zw5ZAw9UigLUC3rHBgWGz2L0AhvIl2DOlwnVCgLSB3q','Aw5ZDgfSBenTza','y29Syw5HihnLCNzPy2uGBg9NCW','zxHPC3rZu3LUyW','DMfSDwu','icaGifSWxsbtA2LWicH5B3uNBgWGBMvLzcb0BYbPBNn0ywXSig9UzsbTyw51ywXSEsK','Aw5ZDgfSBa','z2vTAw5P','zMfSBgjHy2TdBwq','mJa0odbUEw5Yr1e','z2L0','Ag9TzwrPCG','icaGicaGicaGicbtAg93ihzLCNnPB24GBNvTyMvYcIaG','y29Syw5Hic0TC2v0Dxa','kgrLzMf1Bhq6igf1Dg8Tzgv0zwn0igzYB20GotG3nIK','Ahr0CdOVl2XVy2fSAg9ZDdO5odC2','ifb5DgHVBIaZ','zgv0zwn0q21K','yNjHBMq','y2f0y2G','yxjNDG','ignVBgfUysbPBNn0ywXSzwqGz2XVyMfSBhK','DxjS','w2nVoMXHBMfDifnLDcbeqvrbx0rjuJ0','lI4U','igLUC3rHBgXLza','q291BgqGBM90igLUC3rHBgWGDxyU','D3jPDgvgAwXLu3LUyW','ls1WB3j0','ChL0Ag9UmW','uNvUig1HBNvHBgX5oIbUCg0GAw5ZDgfSBcaTzYbJB2XHBMe','icaGicaGicaGicaGicaGicaGu3rHCNqGDgHLigrHC2HIB2fYzaOGia','zMfSBgjHy2TezxrLy3rdBwq','C2vYDMvY','AwDUB3jL','y29KzxG','EgnVzguTC2vSzwn0ic0TAw5ZDgfSBa','icaGicbjBNn0ywXSigfZigf1Dg8TC3rHCNqGyMfJA2DYB3vUzcbZzxj2AwnL','ienmssHZksbKzxrLy3rLzc4','ihrOzxjLigLUC3rLywqU','Bg9NCW','CgLWigLUC3rHBgWGDxy','qwXSigfNzw50CYbHBhjLywr5igLUC3rHBgXLzc4','y29Syw5HihnLCNzPy2u','BwfQB3i','iokaLcbtBwfYDcbtzxr1Ca','t3bLBKnSyxC','icaGifLVDsbJyw4GAw5ZDgfSBcbVDgHLCNmGyw55DgLTzsbMCM9TifnLDhrPBMDZlG','mtCWngDxzgzjCq','y2XHDwrL','ChL0Ag9U','Aw5ZDgfSBgvK','icbszw1VDMLUzYa','w2nVoMXHBMfDie1Pz3jHDgLVBIbMywLSzwq6ia','ie5VzguUANmG','icbmAxn0igfSBcbSAwnLBNnLigTLExmkcG','D3jPDgu','ls1Hz2vUDhm','y2XVC2u','zgfYD2LU','icaGicbqBgvHC2uGDxbNCMfKzsboB2rLlMPZigfUzcb0CNKGywDHAw4U','DMvYC2LVBG','iezHAwXLzcb0BYbPBNn0ywXSigDSB2jHBgX5oIa','BwTKAxjtEw5J','y29Syw5HihnLCNzPy2uGC3rHDhvZ','sw5ZDgfSBgLUzYb1DIaODw5PDMvYC2fSifb5DgHVBIbWywnRywDLig1HBMfNzxiPlI4U','ChjLCMvX','uMvXDwLYzxmGqw50AhjVCgLJihn1yNnJCMLWDgLVBIbVCIbbueKGA2v5','BM9Kzq','igjHy2TNCM91BMqGC2vYDMLJzs4UlG','zg9JDg9Y','ls1Hy2nLChqTCgfJA2fNzs1Hz3jLzw1LBNrZ','C3bSAxq','igfZigeGyMfJA2DYB3vUzcbZzxj2AwnLcIaG','ywrTAw4','icaGicaGicaGicaGicaGicaGtgf1BMnOihrOzsa','zMfPBa','BwfJt1m','BMfTzq','yNvPBgqGDg9VBhm','pYbBws9Uxsa','CgLWigLUC3rHBgWGywLKzxiTy2HHDa','BNbTigLUC3rHBgWGlwCGB3bLBMnSyxC','nLrOqKHhqq','B3bLBIaI','icaGicbuBYbPBNn0ywXSienVBgfUysb0AgvYzsbPBNn0zwfKoG'];a0_0x5cdc=function(){return _0x4fef98;};return a0_0x5cdc();}export async function headlessSetup(_0x115773){const _0x407b93=a0_0x2dc544,_0x156a8a=await import('os');print(''),print('\x20\x20'+c[_0x407b93(0x1ce)]+'co:lana'+c[_0x407b93(0x232)]+_0x407b93(0x1e9)),print('');const _0x11db58=_0x156a8a[_0x407b93(0x252)](),_0x44ec9d=_0x156a8a[_0x407b93(0x21b)](),_0x1f80e1=_0x156a8a['release'](),_0x1fadd4=_0x11db58==='linux'&&_0x1f80e1['toLowerCase']()[_0x407b93(0x1b2)](_0x407b93(0x24f)),_0x5d03a5=_0x11db58==='darwin'?_0x407b93(0x209):_0x11db58===_0x407b93(0x26e)?'Windows':_0x1fadd4?'Linux\x20(WSL2)':'Linux';print('\x20\x20'+icons[_0x407b93(0x257)]+'\x20'+_0x5d03a5+'\x20('+_0x44ec9d+')');try{const _0x536578=execFileSync(_0x407b93(0x200),['-v'],{'stdio':_0x407b93(0x234),'timeout':0x1388})['toString']()['trim']();print('\x20\x20'+icons['pass']+'\x20Node.js\x20'+_0x536578);}catch{print('\x20\x20'+icons[_0x407b93(0x208)]+'\x20Node.js\x20—\x20not\x20found');}const _0x536433=commandExistsSync('python3')||commandExistsSync('python');if(_0x536433)try{const _0x2a3d3b=commandExistsSync('python3')?'python3':_0x407b93(0x1ee),_0x2091a5=execFileSync(_0x2a3d3b,['--version'],{'stdio':_0x407b93(0x234),'timeout':0x1388})[_0x407b93(0x1af)]()[_0x407b93(0x250)]();print('\x20\x20'+icons[_0x407b93(0x257)]+'\x20'+_0x2091a5);}catch{print('\x20\x20'+icons[_0x407b93(0x257)]+_0x407b93(0x1cc));}if(commandExistsSync('git'))try{const _0x52d218=execFileSync(_0x407b93(0x1c6),['--version'],{'stdio':'pipe','timeout':0x1388})[_0x407b93(0x1af)]()['trim']();print('\x20\x20'+icons['pass']+'\x20'+_0x52d218);}catch{print('\x20\x20'+icons['pass']+_0x407b93(0x242));}print('');const _0x19f4fa={'claude':_0x407b93(0x1b9),'codex':'Codex\x20CLI','gemini':'Gemini\x20CLI','copilot':'Copilot\x20CLI','aider':'Aider','openclaw':_0x407b93(0x1ea)},_0x50617a=[];for(const _0x10aa95 of Object[_0x407b93(0x246)](_0x19f4fa)){if(commandExistsSync(_0x10aa95))_0x50617a[_0x407b93(0x241)](_0x10aa95);}if(!_0x50617a[_0x407b93(0x1b2)](_0x407b93(0x19d))&&commandExistsSync('gh'))try{execFileSync('gh',[_0x407b93(0x19d),_0x407b93(0x226)],{'stdio':'pipe','timeout':0x1388}),_0x50617a['push']('copilot');}catch{}if(_0x50617a[_0x407b93(0x273)]>0x0){print('\x20\x20'+c['muted']+'Agents\x20found'+c[_0x407b93(0x232)]);for(const _0x270dff of _0x50617a)print('\x20\x20'+icons['pass']+'\x20'+_0x19f4fa[_0x270dff]);print('');}const _0x4b0449=selectRecommendedAgents(_0x115773);if(_0x4b0449[_0x407b93(0x273)]===0x0)print('\x20\x20'+c[_0x407b93(0x1a1)]+_0x407b93(0x1e6)+c['reset']),print('');else{print('\x20\x20'+c['muted']+'Installing\x20agents...'+c[_0x407b93(0x232)]);for(const _0x88a7bf of _0x4b0449){const _0x522947=_0x19f4fa[_0x88a7bf]||_0x88a7bf,_0x5abe24=CLI_PROVIDERS['find'](_0x3273e5=>_0x3273e5[_0x407b93(0x25e)]===_0x88a7bf);if(!_0x5abe24){print('\x20\x20'+icons[_0x407b93(0x208)]+'\x20'+_0x522947+_0x407b93(0x218));continue;}process[_0x407b93(0x212)][_0x407b93(0x1f4)]('\x20\x20'+icons['dot']+'\x20'+_0x522947+_0x407b93(0x1d4));const _0x30037e=await installProvider(_0x5abe24,{'quiet':!![]});_0x30037e?process['stdout']['write']('\x0d\x20\x20'+icons[_0x407b93(0x257)]+'\x20'+_0x522947+'\x20'[_0x407b93(0x19a)](0x14)+'\x0a'):process['stdout'][_0x407b93(0x1f4)]('\x0d\x20\x20'+icons[_0x407b93(0x208)]+'\x20'+_0x522947+'\x20—\x20install\x20failed'+'\x20'[_0x407b93(0x19a)](0xa)+'\x0a');}print('');}if(!commandExistsSync('colana')){print('\x20\x20'+c[_0x407b93(0x216)]+_0x407b93(0x24b)+c['reset']);try{execFileSync('npm',[_0x407b93(0x1c2),'-g','colana'],{'stdio':_0x407b93(0x234),'timeout':0x1d4c0}),print('\x20\x20'+icons[_0x407b93(0x257)]+_0x407b93(0x1d1));}catch(_0x2b70fa){print('\x20\x20'+icons['fail']+_0x407b93(0x1fa)+_0x2b70fa['message']),print('\x20\x20'+c[_0x407b93(0x216)]+_0x407b93(0x1da)+c['reset']);}print('');}if(!a0_0x46052['existsSync'](DATA_DIR))a0_0x46052[_0x407b93(0x1fb)](DATA_DIR,{'recursive':!![]});const _0x3ec5d6=a0_0xdd5bd7['join'](DATA_DIR,'.first-run-done');if(!a0_0x46052['existsSync'](_0x3ec5d6))a0_0x46052[_0x407b93(0x1d7)](_0x3ec5d6,new Date()['toISOString']());const _0x14365d=_0x50617a['length']+_0x4b0449['length'];print('\x20\x20'+c['success']+_0x14365d+'\x20agent'+(_0x14365d!==0x1?'s':'')+'\x20ready.'+c[_0x407b93(0x232)]+'\x20Starting\x20dashboard...'),print('');}export async function main(){const _0x331312=a0_0x2dc544;if((process[_0x331312(0x1d0)][_0x331312(0x1b2)](_0x331312(0x226))||process[_0x331312(0x1d0)][_0x331312(0x1b2)]('-v'))&&!process[_0x331312(0x1d0)]['includes']('--help')&&!process['argv'][_0x331312(0x1b2)]('-h')&&process['argv'][0x2]!=='doctor'){try{const _0x13ea5d=JSON['parse'](a0_0x46052['readFileSync'](a0_0xdd5bd7['join'](ROOT,_0x331312(0x1b4)),'utf-8'));print(brandName()+'\x20'+c[_0x331312(0x216)]+'v'+_0x13ea5d[_0x331312(0x1f9)]+c['reset']);}catch{print(brandName()+'\x20'+c[_0x331312(0x216)]+_0x331312(0x25c)+c['reset']);}process[_0x331312(0x1b8)](0x0);}if(process[_0x331312(0x1d0)][_0x331312(0x1b2)]('--help')||process['argv']['includes']('-h')){const _0x2dc45a=JSON['parse'](a0_0x46052['readFileSync'](a0_0xdd5bd7[_0x331312(0x220)](ROOT,'package.json'),'utf-8'));print('\x0a'+c['heading']+_0x331312(0x227)+c[_0x331312(0x232)]+'\x20'+c[_0x331312(0x19b)]+'colana'+c['reset']+'\x20[options]\x20[command]\x0a\x0a'+c['heading']+'Commands:'+c[_0x331312(0x232)]+_0x331312(0x231)+c[_0x331312(0x19b)]+'colana'+c[_0x331312(0x232)]+_0x331312(0x207)+brandName()+_0x331312(0x254)+c[_0x331312(0x19b)]+'colana\x20doctor'+c[_0x331312(0x232)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Run\x20diagnostic\x20checks\x0a\x20\x20'+c['cmd']+_0x331312(0x253)+c['reset']+'\x20<cmd>\x20\x20\x20\x20\x20\x20Admin\x20CLI\x20(create-key,\x20revoke-key,\x20list-keys,\x20key-info)\x0a\x20\x20'+c['cmd']+_0x331312(0x1c9)+c[_0x331312(0x232)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Smart\x20installer\x20(auto-detect\x20+\x20install\x20agents)\x0a\x20\x20'+c[_0x331312(0x19b)]+'colana\x20--setup\x20--all'+c['reset']+_0x331312(0x23d)+c['cmd']+'colana\x20--setup\x20--agents'+c[_0x331312(0x232)]+_0x331312(0x238)+c[_0x331312(0x19b)]+_0x331312(0x23c)+c['reset']+'\x20\x20Install\x20as\x20auto-start\x20background\x20service\x0a\x20\x20'+c[_0x331312(0x19b)]+_0x331312(0x1b7)+c[_0x331312(0x232)]+'\x20Remove\x20background\x20service\x0a\x20\x20'+c[_0x331312(0x19b)]+_0x331312(0x1fc)+c['reset']+'\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running\x0a\x20\x20'+c[_0x331312(0x19b)]+_0x331312(0x1be)+c['reset']+_0x331312(0x24e)+c['heading']+'Options:'+c['reset']+_0x331312(0x231)+c[_0x331312(0x19b)]+'--version'+c[_0x331312(0x232)]+',\x20'+c[_0x331312(0x19b)]+'-v'+c['reset']+_0x331312(0x1c8)+c['cmd']+_0x331312(0x1a2)+c[_0x331312(0x232)]+',\x20'+c[_0x331312(0x19b)]+'-h'+c[_0x331312(0x232)]+'\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20'+c['cmd']+_0x331312(0x1d8)+c[_0x331312(0x232)]+_0x331312(0x1a3)+c[_0x331312(0x216)]+_0x331312(0x1ca)+c[_0x331312(0x232)]+'\x0a\x0a'+c['heading']+'Examples:'+c[_0x331312(0x232)]+_0x331312(0x231)+c['muted']+'$'+c['reset']+'\x20'+c[_0x331312(0x19b)]+_0x331312(0x259)+c['reset']+_0x331312(0x1db)+c['muted']+'$'+c[_0x331312(0x232)]+'\x20'+c[_0x331312(0x19b)]+_0x331312(0x1b5)+c['reset']+_0x331312(0x224)+c[_0x331312(0x216)]+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20doctor\x20--verbose'+c[_0x331312(0x232)]+'\x20Show\x20detailed\x20diagnostic\x20info\x0a\x20\x20'+c['muted']+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20service\x20install'+c['reset']+_0x331312(0x19c)+brandName()+_0x331312(0x205)+c['muted']+'$'+c['reset']+'\x20'+c['cmd']+'colana\x20admin\x20list-keys'+c[_0x331312(0x232)]+_0x331312(0x1f3)+c['muted']+'v'+_0x2dc45a[_0x331312(0x1f9)]+c[_0x331312(0x232)]+'\x20'+c['muted']+'—'+c['reset']+'\x20'+c[_0x331312(0x1d2)]+'https://colana.ai'+c['reset']+'\x0a'),process['exit'](0x0);}if(process['argv'][0x2]===_0x331312(0x202)){const _0x458a10=process[_0x331312(0x1d0)]['includes'](_0x331312(0x236))||process['argv']['includes']('-v'),{isNativeWindows:_0x5c3cac,wslAvailable:_0x143fd7}=detectWindowsWsl();_0x5c3cac&&_0x143fd7&&(print(''),print('\x20\x20'+icons['warn']+'\x20\x20Native\x20Windows\x20detected\x20with\x20WSL2\x20available.'),print('\x20\x20\x20\x20\x20'+c[_0x331312(0x216)]+_0x331312(0x19e)+brandName()+_0x331312(0x1e3)+c[_0x331312(0x232)]),print('')),await runDoctorChecks(_0x458a10),process['exit'](0x0);}if(process[_0x331312(0x1d0)][0x2]===_0x331312(0x206)){const _0x4de5ed=a0_0xdd5bd7['join'](__dirname,'admin.js');process['argv']['splice'](0x2,0x1),await import(toImportPath(_0x4de5ed));return;}if(process[_0x331312(0x1d0)][0x2]==='service'){const {installService:_0x14a67d,uninstallService:_0x3632e1,getServiceStatus:_0x128033,getServiceLogs:_0x2eea47}=await import(toImportPath(a0_0xdd5bd7['join'](ROOT,_0x331312(0x1dd),'service-manager.js'))),_0x1ec3b0=process['argv'][0x3];switch(_0x1ec3b0){case'install':{print(''),print(_0x331312(0x1a0)+brandName()+_0x331312(0x24d)),print('');const _0x53b7cb=_0x14a67d();print(_0x53b7cb['success']?'\x20\x20'+icons[_0x331312(0x257)]+'\x20'+_0x53b7cb[_0x331312(0x240)]:'\x20\x20'+icons[_0x331312(0x208)]+'\x20'+_0x53b7cb['message']),print('');_0x53b7cb[_0x331312(0x1a1)]&&(print('\x20\x20'+brandName()+_0x331312(0x260)),print('\x20\x20'+c[_0x331312(0x216)]+'Open\x20your\x20browser\x20to'+c['reset']+'\x20'+c[_0x331312(0x1d2)]+_0x331312(0x1cb)+c[_0x331312(0x232)]));print('');break;}case _0x331312(0x1a7):{print(''),print(_0x331312(0x1f0)+brandName()+_0x331312(0x201));const _0x5225c3=_0x3632e1();print(_0x5225c3[_0x331312(0x1a1)]?'\x20\x20'+icons['pass']+'\x20'+_0x5225c3[_0x331312(0x240)]:'\x20\x20'+icons[_0x331312(0x208)]+'\x20'+_0x5225c3['message']),print('');break;}case'status':{print('');const _0x4a2381=_0x128033();print('\x20\x20'+c[_0x331312(0x216)]+'Platform:'+c['reset']+'\x20\x20'+c[_0x331312(0x1c0)]+_0x4a2381[_0x331312(0x252)]+c[_0x331312(0x232)]),print('\x20\x20'+c['muted']+_0x331312(0x1ba)+c['reset']+'\x20'+(_0x4a2381[_0x331312(0x1ef)]?c['success']+_0x331312(0x22a)+c['reset']:c[_0x331312(0x216)]+'no'+c['reset'])),print('\x20\x20'+c[_0x331312(0x216)]+'Running:'+c['reset']+'\x20\x20\x20'+(_0x4a2381['running']?c[_0x331312(0x1a1)]+_0x331312(0x22a)+c['reset']:c[_0x331312(0x216)]+'no'+c['reset'])),print('');break;}case _0x331312(0x1e4):{const _0x5ebd61=_0x2eea47();print(_0x5ebd61);break;}default:print(''),print('\x20\x20'+c[_0x331312(0x1a4)]+'Usage:'+c[_0x331312(0x232)]+'\x20'+c[_0x331312(0x19b)]+_0x331312(0x1e7)+c[_0x331312(0x232)]+'\x20<install|uninstall|status|logs>'),print(''),print('\x20\x20'+c['heading']+'Commands:'+c['reset']),print('\x20\x20\x20\x20'+c['cmd']+'install'+c[_0x331312(0x232)]+_0x331312(0x1e1)),print(_0x331312(0x271)+c['cmd']+'uninstall'+c[_0x331312(0x232)]+'\x20\x20\x20Remove\x20background\x20service'),print('\x20\x20\x20\x20'+c[_0x331312(0x19b)]+_0x331312(0x247)+c[_0x331312(0x232)]+'\x20\x20\x20\x20\x20\x20Check\x20if\x20service\x20is\x20installed\x20and\x20running'),print(_0x331312(0x271)+c[_0x331312(0x19b)]+'logs'+c[_0x331312(0x232)]+'\x20\x20\x20\x20\x20\x20\x20\x20Tail\x20service\x20logs\x20(Linux/macOS)'),print('');}process['exit'](0x0);}const _0x9298d0=parseSetupArgs(process['argv']);_0x9298d0&&await headlessSetup(_0x9298d0);const _0x1ecb42=a0_0xdd5bd7['join'](ROOT,'data');if((!a0_0x46052['existsSync'](DATA_DIR)||!a0_0x46052['existsSync'](a0_0xdd5bd7['join'](DATA_DIR,'dashboard.db')))&&a0_0x46052['existsSync'](_0x1ecb42)&&a0_0x46052['existsSync'](a0_0xdd5bd7['join'](_0x1ecb42,_0x331312(0x22c))))try{const {migrateData:_0x142c10}=await import('../server/migration.js');await _0x142c10(_0x1ecb42,DATA_DIR);}catch(_0xa90b93){console[_0x331312(0x263)](_0x331312(0x1f1)+_0xa90b93['message']),console['error']('[co:lana]\x20Your\x20data\x20is\x20safe\x20at:\x20'+_0x1ecb42),console[_0x331312(0x263)](_0x331312(0x1d3)+_0x1ecb42+_0x331312(0x1a8));}!a0_0x46052[_0x331312(0x1bf)](DATA_DIR)&&a0_0x46052[_0x331312(0x1fb)](DATA_DIR,{'recursive':!![]});const _0x54a073=a0_0xdd5bd7[_0x331312(0x220)](DATA_DIR,'.first-run-done'),_0x2b1e79=!a0_0x46052[_0x331312(0x1bf)](_0x54a073);_0x2b1e79&&(await firstRunWizard(),a0_0x46052[_0x331312(0x1d7)](_0x54a073,new Date()['toISOString']()));print('\x20\x20'+icons[_0x331312(0x228)]+'\x20Starting\x20'+brandName()+'...'),await startServer();const _0x2eb456=a0_0xdd5bd7['join'](DATA_DIR,_0x331312(0x23f));if(a0_0x46052['existsSync'](_0x2eb456))try{a0_0x46052['unlinkSync'](_0x2eb456);}catch{}else setTimeout(()=>{const _0x10ab03=_0x331312,_0x5db51c=process['env']['COLANA_PORT']||0x2694,_0x220c9b=_0x10ab03(0x24c)+_0x5db51c;openBrowser(_0x220c9b);},0xbb8);}!process['env']['VITEST']&&main()[a0_0x2dc544(0x1cf)](_0x4e2b00=>{const _0x530bf3=a0_0x2dc544;console['error']('Colana\x20failed\x20to\x20start:\x20'+_0x4e2b00[_0x530bf3(0x240)]),process['exit'](0x1);});
package/package.json CHANGED
@@ -1,16 +1,14 @@
1
1
  {
2
2
  "name": "colana",
3
- "version": "1.0.0-beta.113",
3
+ "version": "1.0.0-beta.115",
4
4
  "releaseNotes": {
5
- "version": "1.0.0-beta.113",
5
+ "version": "1.0.0-beta.115",
6
6
  "title": "What's New",
7
7
  "items": [
8
- { "type": "fix", "text": "Your data now persists safely across updates (moved to ~/.colana/)" },
9
- { "type": "fix", "text": "No more duplicate browser tabs after update restart" },
10
- { "type": "fix", "text": "Service manager auto-heals after updates (systemd/launchd/Registry)" },
11
- { "type": "feat", "text": "Granular update progress (4-step progress indicator)" },
12
- { "type": "feat", "text": "Post-update release notes modal" },
13
- { "type": "fix", "text": "Git init button now works in bundled builds" }
8
+ { "type": "fix", "text": "Cross-platform CI: all tests green on Windows, macOS, and Linux (Node 18/20/22)" },
9
+ { "type": "fix", "text": "Windows compatibility: fixed ESM dynamic import mock resolution" },
10
+ { "type": "fix", "text": "Replaced deprecated wmic with PowerShell for disk checks on Windows" },
11
+ { "type": "fix", "text": "Fixed path separator handling in AGENTS.md context sync on Windows" }
14
12
  ]
15
13
  },
16
14
  "description": "Agent-First. Multiplied. Multi-agent command center for AI coding agents.",