@loxia-labs/loxia-autopilot-one 2.0.4 → 2.0.5

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 (147) hide show
  1. package/bin/cli.js +1 -1
  2. package/bin/loxia-terminal-v2.js +1 -1
  3. package/bin/loxia-terminal.js +1 -1
  4. package/bin/start-with-terminal.js +1 -1
  5. package/package.json +1 -1
  6. package/scripts/install-scanners.js +1 -1
  7. package/scripts/watchdog.js +1 -1
  8. package/src/analyzers/CSSAnalyzer.js +1 -1
  9. package/src/analyzers/ConfigValidator.js +1 -1
  10. package/src/analyzers/ESLintAnalyzer.js +1 -1
  11. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  12. package/src/analyzers/PrettierFormatter.js +1 -1
  13. package/src/analyzers/PythonAnalyzer.js +1 -1
  14. package/src/analyzers/SecurityAnalyzer.js +1 -1
  15. package/src/analyzers/SparrowAnalyzer.js +1 -1
  16. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  17. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  18. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  19. package/src/analyzers/codeCloneDetector/index.js +1 -1
  20. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  21. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  22. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  23. package/src/core/agentPool.js +1 -1
  24. package/src/core/agentScheduler.js +1 -1
  25. package/src/core/contextManager.js +1 -1
  26. package/src/core/flowExecutor.js +1 -1
  27. package/src/core/messageProcessor.js +1 -1
  28. package/src/core/orchestrator.js +1 -1
  29. package/src/core/stateManager.js +1 -1
  30. package/src/index.js +1 -1
  31. package/src/interfaces/cli.js +1 -1
  32. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  38. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  39. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  40. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  41. package/src/interfaces/terminal/api/apiClient.js +1 -1
  42. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  43. package/src/interfaces/terminal/api/session.js +1 -1
  44. package/src/interfaces/terminal/api/websocket.js +1 -1
  45. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  46. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  47. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  48. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  49. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  50. package/src/interfaces/terminal/components/Header.js +1 -1
  51. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  52. package/src/interfaces/terminal/components/InputBox.js +1 -1
  53. package/src/interfaces/terminal/components/Layout.js +1 -1
  54. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  55. package/src/interfaces/terminal/components/MessageList.js +1 -1
  56. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  57. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  58. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  59. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  60. package/src/interfaces/terminal/components/TextInput.js +1 -1
  61. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  62. package/src/interfaces/terminal/config/constants.js +1 -1
  63. package/src/interfaces/terminal/index.js +1 -1
  64. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  65. package/src/interfaces/terminal/state/useAgents.js +1 -1
  66. package/src/interfaces/terminal/state/useConnection.js +1 -1
  67. package/src/interfaces/terminal/state/useMessages.js +1 -1
  68. package/src/interfaces/terminal/state/useTools.js +1 -1
  69. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  70. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  71. package/src/interfaces/terminal/utils/theme.js +1 -1
  72. package/src/interfaces/webServer.js +1 -1
  73. package/src/modules/fileExplorer/controller.js +1 -1
  74. package/src/modules/fileExplorer/index.js +1 -1
  75. package/src/modules/fileExplorer/middleware.js +1 -1
  76. package/src/modules/fileExplorer/routes.js +1 -1
  77. package/src/services/agentActivityService.js +1 -1
  78. package/src/services/aiService.js +1 -1
  79. package/src/services/apiKeyManager.js +1 -1
  80. package/src/services/benchmarkService.js +1 -1
  81. package/src/services/budgetService.js +1 -1
  82. package/src/services/contextInjectionService.js +1 -1
  83. package/src/services/conversationCompactionService.js +1 -1
  84. package/src/services/credentialVault.js +1 -1
  85. package/src/services/errorHandler.js +1 -1
  86. package/src/services/fileAttachmentService.js +1 -1
  87. package/src/services/flowContextService.js +1 -1
  88. package/src/services/memoryService.js +1 -1
  89. package/src/services/modelRouterService.js +1 -1
  90. package/src/services/modelsService.js +1 -1
  91. package/src/services/portRegistry.js +1 -1
  92. package/src/services/portTracker.js +1 -1
  93. package/src/services/projectDetector.js +1 -1
  94. package/src/services/promptService.js +1 -1
  95. package/src/services/qualityInspector.js +1 -1
  96. package/src/services/serviceRegistry.js +1 -1
  97. package/src/services/tokenCountingService.js +1 -1
  98. package/src/services/visualEditorBridge.js +1 -1
  99. package/src/services/visualEditorServer.js +1 -1
  100. package/src/tools/agentCommunicationTool.js +1 -1
  101. package/src/tools/agentDelayTool.js +1 -1
  102. package/src/tools/asyncToolManager.js +1 -1
  103. package/src/tools/baseTool.js +1 -1
  104. package/src/tools/browserTool.js +1 -1
  105. package/src/tools/cloneDetectionTool.js +1 -1
  106. package/src/tools/dependencyResolverTool.js +1 -1
  107. package/src/tools/docxTool.js +1 -1
  108. package/src/tools/excelTool.js +1 -1
  109. package/src/tools/fileContentReplaceTool.js +1 -1
  110. package/src/tools/fileSystemTool.js +1 -1
  111. package/src/tools/fileTreeTool.js +1 -1
  112. package/src/tools/helpTool.js +1 -1
  113. package/src/tools/imageTool.js +1 -1
  114. package/src/tools/importAnalyzerTool.js +1 -1
  115. package/src/tools/jobDoneTool.js +1 -1
  116. package/src/tools/memoryTool.js +1 -1
  117. package/src/tools/pdfTool.js +1 -1
  118. package/src/tools/seekTool.js +1 -1
  119. package/src/tools/staticAnalysisTool.js +1 -1
  120. package/src/tools/taskManagerTool.js +1 -1
  121. package/src/tools/terminalTool.js +1 -1
  122. package/src/tools/userPromptTool.js +1 -1
  123. package/src/tools/videoTool.js +1 -1
  124. package/src/tools/visualEditorTool.js +1 -1
  125. package/src/tools/webTool.js +1 -1
  126. package/src/types/agent.js +1 -1
  127. package/src/types/contextReference.js +1 -1
  128. package/src/types/conversation.js +1 -1
  129. package/src/types/toolCommand.js +1 -1
  130. package/src/utilities/attachmentValidator.js +1 -1
  131. package/src/utilities/browserStealth.js +1 -1
  132. package/src/utilities/configManager.js +1 -1
  133. package/src/utilities/constants.js +1 -1
  134. package/src/utilities/directoryAccessManager.js +1 -1
  135. package/src/utilities/fileProcessor.js +1 -1
  136. package/src/utilities/humanBehavior.js +1 -1
  137. package/src/utilities/jsonRepair.js +1 -1
  138. package/src/utilities/logger.js +1 -1
  139. package/src/utilities/platformUtils.js +1 -1
  140. package/src/utilities/platformUtils.test.js +1 -1
  141. package/src/utilities/stealthConstants.js +1 -1
  142. package/src/utilities/structuredFileValidator.js +1 -1
  143. package/src/utilities/tagParser.js +1 -1
  144. package/src/utilities/toolConstants.js +1 -1
  145. package/src/utilities/userDataDir.js +1 -1
  146. package/web-ui/build/index.html +1 -1
  147. package/web-ui/build/static/{index-BoJVEi2s.js → index-DZSa_5Fn.js} +105 -105
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x28fff5=a0_0x121f;(function(_0x1ba806,_0x4fc59d){const _0x5b2c14=a0_0x121f,_0x494198=_0x1ba806();while(!![]){try{const _0x535985=parseInt(_0x5b2c14(0xff))/0x1+parseInt(_0x5b2c14(0xfb))/0x2+-parseInt(_0x5b2c14(0xdc))/0x3+-parseInt(_0x5b2c14(0xeb))/0x4+parseInt(_0x5b2c14(0xf5))/0x5*(parseInt(_0x5b2c14(0x100))/0x6)+parseInt(_0x5b2c14(0xcc))/0x7+-parseInt(_0x5b2c14(0xd6))/0x8*(parseInt(_0x5b2c14(0xe2))/0x9);if(_0x535985===_0x4fc59d)break;else _0x494198['push'](_0x494198['shift']());}catch(_0x55d31e){_0x494198['push'](_0x494198['shift']());}}}(a0_0xeed5,0x64621));import{fileURLToPath}from'url';function a0_0x121f(_0x4e925c,_0x5c0f9e){_0x4e925c=_0x4e925c-0xc2;const _0xeed5a2=a0_0xeed5();let _0x121f46=_0xeed5a2[_0x4e925c];return _0x121f46;}function a0_0xeed5(){const _0x496e54=['package.json','unref','src','LOXIA_HOST',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','\x0a✓\x20Server\x20running\x20at\x20','Unknown\x20command:\x20','loxia-terminal.js','statusCode','length','includes','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','web','kill','index.js',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','Error:','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','4165665DUQVsh','Server\x20discovered\x20at\x20','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','argv','destroy','log','ignore','\x20but\x20not\x20responding.','\x0aLoxia\x20Autopilot\x20One\x20v','127.0.0.1','16fIcKTc','inherit','\x0aServer\x20registered\x20at\x20','darwin','\x0aPlease\x20start\x20the\x20server\x20first:','node','494469DRsRbP','SIGINT','now','startsWith','cmd','http://','3597138CHaqMo','SIGTERM','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','ceil','platform','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','--version','get','Server\x20running\x20at\x20http://','240308HHLpJY','version','PORT','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','Loxia\x20Autopilot\x20One\x20v','error','win32','exit','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','host','1128995UghUIh','start','xdg-open','utf8','localhost','/api/health','47788ctVtDc','\x0aShutting\x20down\x20server...','backend','port','590645YOLQak','6WOnrvZ','Waiting\x20for\x20server\x20to\x20start...','cleanupStaleEntries','--help','message','\x20\x20API\x20Health:\x20\x20\x20','--port','toString','slice','Looking\x20for\x20running\x20server...','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Starting\x20Loxia\x20server...\x0a','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','Starting\x20Terminal\x20UI...\x0a','getService','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','pid'];a0_0xeed5=function(){return _0x496e54;};return a0_0xeed5();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x398be7 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x28fff5(0xd5),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x28fff5(0xcf)][a0_0x28fff5(0x108)](0x2),command=args[0x0]&&!args[0x0][a0_0x28fff5(0xdf)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x28fff5(0xc4)](a0_0x28fff5(0x103))||args['includes']('-h'),'version':args['includes'](a0_0x28fff5(0xe8))||args[a0_0x28fff5(0xc4)]('-v')};for(let i=0x0;i<args[a0_0x28fff5(0xc3)];i++){args[i]===a0_0x28fff5(0x106)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x28fff5(0xf4)]=args[i+0x1]);}const explicitPort=flags[a0_0x28fff5(0xfe)],host=flags[a0_0x28fff5(0xf4)]||DEFAULT_HOST;if(flags[a0_0x28fff5(0xec)]){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x28fff5(0xf8)));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xef)+pkg[a0_0x28fff5(0xec)]),process['exit'](0x0);}if(flags['help']||!command){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,'utf8'));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xd4)+pkg[a0_0x28fff5(0xec)]+a0_0x28fff5(0xcb)+DEFAULT_PORT+a0_0x28fff5(0xc9)+DEFAULT_HOST+a0_0x28fff5(0x115)),process[a0_0x28fff5(0xf2)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x314863}=await import('../src/services/portRegistry.js');return _0x314863();}async function discoverBackend(){const _0x3921f9=a0_0x28fff5;try{const _0x34391d=await getPortRegistry();await _0x34391d[_0x3921f9(0x102)]();const _0x51a924=await _0x34391d[_0x3921f9(0x10e)](_0x3921f9(0xfd));if(_0x51a924)return{'host':_0x51a924[_0x3921f9(0xf4)]||_0x3921f9(0xf9),'port':_0x51a924[_0x3921f9(0xfe)],'pid':_0x51a924[_0x3921f9(0x110)]};return null;}catch(_0x2b0cc4){return null;}}async function checkServerRunning(_0x58eb84,_0x41c8cc,_0x1273c4=0x1){for(let _0x4935a4=0x0;_0x4935a4<_0x1273c4;_0x4935a4++){const _0x39587d=await new Promise(_0x53de52=>{const _0x43fd84=a0_0x121f,_0x37ac1b=a0_0x398be7[_0x43fd84(0xe9)]('http://'+_0x58eb84+':'+_0x41c8cc+_0x43fd84(0xfa),_0x48d178=>{const _0x49313c=_0x43fd84;_0x53de52(_0x48d178[_0x49313c(0xc2)]===0xc8);});_0x37ac1b['on'](_0x43fd84(0xf0),()=>_0x53de52(![])),_0x37ac1b['setTimeout'](0x7d0,()=>{const _0x7fd836=_0x43fd84;_0x37ac1b[_0x7fd836(0xd0)](),_0x53de52(![]);});});if(_0x39587d)return!![];_0x4935a4<_0x1273c4-0x1&&await new Promise(_0x5a91b4=>setTimeout(_0x5a91b4,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x19f1a1=SERVER_STARTUP_TIMEOUT){const _0x2bb70e=a0_0x28fff5,_0x262682=Date['now']();while(Date[_0x2bb70e(0xde)]()-_0x262682<_0x19f1a1){const _0x51f540=await discoverBackend();if(_0x51f540){const _0x17a27b=await checkServerRunning(_0x51f540[_0x2bb70e(0xf4)],_0x51f540[_0x2bb70e(0xfe)]);if(_0x17a27b)return _0x51f540;}await new Promise(_0x5592f9=>setTimeout(_0x5592f9,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x21134e,_0x2a5f75,_0x384ae4=SERVER_STARTUP_TIMEOUT){const _0x2737a3=a0_0x28fff5,_0x41191f=Math[_0x2737a3(0xe5)](_0x384ae4/SERVER_CHECK_INTERVAL),_0x2a4221=await checkServerRunning(_0x21134e,_0x2a5f75,_0x41191f);return _0x2a4221?{'host':_0x21134e,'port':_0x2a5f75}:null;}function openBrowser(_0x193cb2){const _0x4d12a4=a0_0x28fff5;let _0x5eab38,_0x1db5e0;if(process['platform']===_0x4d12a4(0xd9))_0x5eab38='open',_0x1db5e0=[_0x193cb2];else process[_0x4d12a4(0xe6)]===_0x4d12a4(0xf1)?(_0x5eab38=_0x4d12a4(0xe0),_0x1db5e0=['/c',_0x4d12a4(0xf6),'\x22\x22',_0x193cb2]):(_0x5eab38=_0x4d12a4(0xf7),_0x1db5e0=[_0x193cb2]);const _0x574471=spawn(_0x5eab38,_0x1db5e0,{'detached':!![],'stdio':'ignore'});_0x574471[_0x4d12a4(0x112)](),_0x574471['on'](_0x4d12a4(0xf0),()=>{const _0x4cd4ac=_0x4d12a4;console[_0x4cd4ac(0xd1)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x4cd4ac(0xd1)]('Please\x20open\x20manually:\x20'+_0x193cb2);});}function startServer(_0x13fbde=![]){const _0x1a1f2c=a0_0x28fff5,_0x24ec26={...process.env};explicitPort&&(_0x24ec26['LOXIA_PORT']=explicitPort[_0x1a1f2c(0x107)](),_0x24ec26[_0x1a1f2c(0xed)]=explicitPort['toString']());flags['host']&&(_0x24ec26[_0x1a1f2c(0x114)]=flags[_0x1a1f2c(0xf4)]);const _0x471a07=join(__dirname,'..',_0x1a1f2c(0x113),_0x1a1f2c(0xc8)),_0x4866fa=spawn(_0x1a1f2c(0xdb),[_0x471a07],{'cwd':join(__dirname,'..'),'env':_0x24ec26,'stdio':_0x13fbde?[_0x1a1f2c(0xd2),'ignore',_0x1a1f2c(0xd2)]:_0x1a1f2c(0xd7),'detached':_0x13fbde});return _0x13fbde&&_0x4866fa[_0x1a1f2c(0x112)](),_0x4866fa;}function startTerminalUIProcess(_0x22a3c2,_0x3510c9){const _0x37277a=a0_0x28fff5,_0x5ea08b=join(__dirname,_0x37277a(0x118)),_0x4887f3={...process.env,'LOXIA_PORT':_0x3510c9[_0x37277a(0x107)](),'LOXIA_HOST':_0x22a3c2},_0x914ce=spawn(_0x37277a(0xdb),[_0x5ea08b],{'cwd':join(__dirname,'..'),'env':_0x4887f3,'stdio':_0x37277a(0xd7)});return _0x914ce;}const commands={'web':async()=>{const _0x5003d2=a0_0x28fff5;console[_0x5003d2(0xd1)](_0x5003d2(0x10b));const _0x18b385=startServer(![]);console[_0x5003d2(0xd1)]('Waiting\x20for\x20server\x20to\x20start...');let _0x9b3df4;explicitPort?_0x9b3df4=await waitForServerAtPort(host,explicitPort):_0x9b3df4=await waitForServerWithDiscovery();if(_0x9b3df4){const _0x36622c=_0x5003d2(0xe1)+_0x9b3df4[_0x5003d2(0xf4)]+':'+_0x9b3df4[_0x5003d2(0xfe)];console['log']('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x36622c),openBrowser(_0x36622c);}else console['log']('\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.');process['on'](_0x5003d2(0xdd),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xdd))),process['on'](_0x5003d2(0xe3),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xe3))),_0x18b385['on'](_0x5003d2(0xf2),_0x55b532=>process[_0x5003d2(0xf2)](_0x55b532||0x0));},'plus-web':async()=>{const _0x5d9982=a0_0x28fff5;await commands[_0x5d9982(0xc6)]();},'serve':async()=>{const _0x435396=a0_0x28fff5;console[_0x435396(0xd1)](_0x435396(0x10b));const _0x15b9f7=startServer(![]);console[_0x435396(0xd1)](_0x435396(0x101));let _0x504923;explicitPort?_0x504923=await waitForServerAtPort(host,explicitPort):_0x504923=await waitForServerWithDiscovery();if(_0x504923){const _0x30d4a0='http://'+_0x504923['host']+':'+_0x504923[_0x435396(0xfe)];console[_0x435396(0xd1)](_0x435396(0x116)+_0x30d4a0),console['log']('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x30d4a0),console[_0x435396(0xd1)](_0x435396(0x10f)),console['log'](_0x435396(0x105)+_0x30d4a0+'/api/health\x0a');}else console['log'](_0x435396(0xe4)),console[_0x435396(0xd1)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on']('SIGINT',()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xdd))),process['on'](_0x435396(0xe3),()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xe3))),_0x15b9f7['on'](_0x435396(0xf2),_0x564667=>process['exit'](_0x564667||0x0));},'terminal':async()=>{const _0xd18747=a0_0x28fff5;console[_0xd18747(0xd1)](_0xd18747(0x109));let _0x36b9eb=await discoverBackend();explicitPort&&(_0x36b9eb={'host':host,'port':explicitPort});!_0x36b9eb&&(console['error'](_0xd18747(0xc5)),console['error'](_0xd18747(0xda)),console['error'](_0xd18747(0xee)),console[_0xd18747(0xf0)](_0xd18747(0xe7)),console['error'](_0xd18747(0x10a)),process[_0xd18747(0xf2)](0x1));const _0x2fdc3d=await checkServerRunning(_0x36b9eb[_0xd18747(0xf4)],_0x36b9eb[_0xd18747(0xfe)]);!_0x2fdc3d&&(console[_0xd18747(0xf0)](_0xd18747(0xd8)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]+_0xd18747(0xd3)),console['error'](_0xd18747(0x10c)),process['exit'](0x1));console['log'](_0xd18747(0xcd)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]),console[_0xd18747(0xd1)](_0xd18747(0x10d));const _0x39b13d=startTerminalUIProcess(_0x36b9eb['host'],_0x36b9eb[_0xd18747(0xfe)]);process['on'](_0xd18747(0xdd),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xdd))),process['on'](_0xd18747(0xe3),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xe3))),_0x39b13d['on'](_0xd18747(0xf2),_0x561973=>process[_0xd18747(0xf2)](_0x561973||0x0));},'plus-terminal':async()=>{const _0x56481a=a0_0x28fff5;console[_0x56481a(0xd1)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x5358c4=startServer(!![]);let _0x35b7fc;explicitPort?_0x35b7fc=await waitForServerAtPort(host,explicitPort):_0x35b7fc=await waitForServerWithDiscovery();!_0x35b7fc&&(console['error'](_0x56481a(0xf3)),process['exit'](0x1));console[_0x56481a(0xd1)](_0x56481a(0xea)+_0x35b7fc[_0x56481a(0xf4)]+':'+_0x35b7fc[_0x56481a(0xfe)]),console['log'](_0x56481a(0x10d));const _0xb5c835=startTerminalUIProcess(_0x35b7fc[_0x56481a(0xf4)],_0x35b7fc[_0x56481a(0xfe)]);_0xb5c835['on'](_0x56481a(0xf2),_0x5f4024=>{const _0x3c9d4a=_0x56481a;console[_0x3c9d4a(0xd1)](_0x3c9d4a(0xfc));try{process[_0x3c9d4a(0xc7)](_0x5358c4[_0x3c9d4a(0x110)],'SIGTERM');}catch(_0x2a1e59){}process[_0x3c9d4a(0xf2)](_0x5f4024||0x0);}),process['on'](_0x56481a(0xdd),()=>{const _0x26b80e=_0x56481a;_0xb5c835[_0x26b80e(0xc7)](_0x26b80e(0xdd));}),process['on'](_0x56481a(0xe3),()=>{const _0x3b32d6=_0x56481a;_0xb5c835['kill'](_0x3b32d6(0xe3));});}};commands[command]?commands[command]()['catch'](_0x1becdf=>{const _0x59ddc1=a0_0x28fff5;console[_0x59ddc1(0xf0)](_0x59ddc1(0xca),_0x1becdf[_0x59ddc1(0x104)]),process[_0x59ddc1(0xf2)](0x1);}):(console[a0_0x28fff5(0xf0)](a0_0x28fff5(0x117)+command),console[a0_0x28fff5(0xf0)](a0_0x28fff5(0xce)),process['exit'](0x1));
3
+ const a0_0x214cf5=a0_0x21a6;(function(_0x2726d1,_0xba8122){const _0x124719=a0_0x21a6,_0x493df4=_0x2726d1();while(!![]){try{const _0xe8781b=-parseInt(_0x124719(0x19b))/0x1+parseInt(_0x124719(0x178))/0x2*(-parseInt(_0x124719(0x15a))/0x3)+parseInt(_0x124719(0x14f))/0x4*(-parseInt(_0x124719(0x18d))/0x5)+parseInt(_0x124719(0x182))/0x6*(-parseInt(_0x124719(0x19c))/0x7)+parseInt(_0x124719(0x183))/0x8+-parseInt(_0x124719(0x154))/0x9*(parseInt(_0x124719(0x194))/0xa)+parseInt(_0x124719(0x158))/0xb;if(_0xe8781b===_0xba8122)break;else _0x493df4['push'](_0x493df4['shift']());}catch(_0x35f1ab){_0x493df4['push'](_0x493df4['shift']());}}}(a0_0x20f9,0x5b613));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x52437a from'http';function a0_0x20f9(){const _0x3bcd70=['\x0a✓\x20Server\x20running\x20at\x20','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','node','35HhoyWi','src','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','open','host','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','message','10UvpdRz','log','/api/health','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','inherit','index.js','setTimeout','287304MCaIoX','5495xhqBUD','SIGTERM','pid','Server\x20discovered\x20at\x20','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','start','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','Error:','getService','77320OSqkce','--port','length','toString','win32','2032812UFlgzp','web','SIGINT','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','16926613ndDnXe','loxia-terminal.js','708qqhQDU','parse','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','Please\x20open\x20manually:\x20','darwin','LOXIA_HOST','platform','exit','cmd','port','error','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','help','\x0aOpening\x20Web\x20UI\x20at\x20','cleanupStaleEntries','version','http://','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','Waiting\x20for\x20server\x20to\x20start...','statusCode','--host','ceil','Starting\x20Loxia\x20server...\x0a',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','startsWith','Loxia\x20Autopilot\x20One\x20v','../src/services/portRegistry.js','Starting\x20Terminal\x20UI...\x0a','includes','xdg-open','5618OHmHgz','catch','\x20but\x20not\x20responding.','\x0aShutting\x20down\x20server...','now','unref','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','localhost','ignore','\x0aPlease\x20start\x20the\x20server\x20first:','4458DTSkvd','5841352YXKotD','package.json','Looking\x20for\x20running\x20server...','\x20\x20API\x20Health:\x20\x20\x20','kill'];a0_0x20f9=function(){return _0x3bcd70;};return a0_0x20f9();}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='127.0.0.1',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv']['slice'](0x2),command=args[0x0]&&!args[0x0][a0_0x214cf5(0x172)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x214cf5(0x176)]('--help')||args[a0_0x214cf5(0x176)]('-h'),'version':args[a0_0x214cf5(0x176)]('--version')||args[a0_0x214cf5(0x176)]('-v')};for(let i=0x0;i<args[a0_0x214cf5(0x151)];i++){args[i]===a0_0x214cf5(0x150)&&args[i+0x1]&&(flags[a0_0x214cf5(0x163)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x214cf5(0x16e)&&args[i+0x1]&&(flags[a0_0x214cf5(0x191)]=args[i+0x1]);}const explicitPort=flags[a0_0x214cf5(0x163)],host=flags[a0_0x214cf5(0x191)]||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x214cf5(0x184)),pkg=JSON[a0_0x214cf5(0x15b)](readFileSync(pkgPath,'utf8'));console[a0_0x214cf5(0x195)](a0_0x214cf5(0x173)+pkg[a0_0x214cf5(0x169)]),process[a0_0x214cf5(0x161)](0x0);}function a0_0x21a6(_0x5b9b1e,_0xcb24e5){_0x5b9b1e=_0x5b9b1e-0x149;const _0x20f9a7=a0_0x20f9();let _0x21a61f=_0x20f9a7[_0x5b9b1e];return _0x21a61f;}if(flags[a0_0x214cf5(0x166)]||!command){const pkgPath=join(__dirname,'..',a0_0x214cf5(0x184)),pkg=JSON[a0_0x214cf5(0x15b)](readFileSync(pkgPath,'utf8'));console[a0_0x214cf5(0x195)]('\x0aLoxia\x20Autopilot\x20One\x20v'+pkg[a0_0x214cf5(0x169)]+a0_0x214cf5(0x192)+DEFAULT_PORT+a0_0x214cf5(0x18b)+DEFAULT_HOST+a0_0x214cf5(0x171)),process[a0_0x214cf5(0x161)](0x0);}async function getPortRegistry(){const _0x3d7a37=a0_0x214cf5,{getPortRegistry:_0x14723c}=await import(_0x3d7a37(0x174));return _0x14723c();}async function discoverBackend(){const _0x18233e=a0_0x214cf5;try{const _0x5496fe=await getPortRegistry();await _0x5496fe[_0x18233e(0x168)]();const _0x2d67eb=await _0x5496fe[_0x18233e(0x14e)]('backend');if(_0x2d67eb)return{'host':_0x2d67eb[_0x18233e(0x191)]||_0x18233e(0x17f),'port':_0x2d67eb[_0x18233e(0x163)],'pid':_0x2d67eb[_0x18233e(0x19e)]};return null;}catch(_0x20590a){return null;}}async function checkServerRunning(_0x22f38b,_0x1b9b9b,_0x537102=0x1){for(let _0x369c01=0x0;_0x369c01<_0x537102;_0x369c01++){const _0x5234e9=await new Promise(_0x2e5f56=>{const _0x25b09b=a0_0x21a6,_0x3a865a=a0_0x52437a['get']('http://'+_0x22f38b+':'+_0x1b9b9b+_0x25b09b(0x196),_0x19a09a=>{const _0x569fde=_0x25b09b;_0x2e5f56(_0x19a09a[_0x569fde(0x16d)]===0xc8);});_0x3a865a['on'](_0x25b09b(0x164),()=>_0x2e5f56(![])),_0x3a865a[_0x25b09b(0x19a)](0x7d0,()=>{_0x3a865a['destroy'](),_0x2e5f56(![]);});});if(_0x5234e9)return!![];_0x369c01<_0x537102-0x1&&await new Promise(_0x153430=>setTimeout(_0x153430,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x59c058=SERVER_STARTUP_TIMEOUT){const _0x1757ea=a0_0x214cf5,_0x501f25=Date['now']();while(Date[_0x1757ea(0x17c)]()-_0x501f25<_0x59c058){const _0x2cde50=await discoverBackend();if(_0x2cde50){const _0x405320=await checkServerRunning(_0x2cde50['host'],_0x2cde50[_0x1757ea(0x163)]);if(_0x405320)return _0x2cde50;}await new Promise(_0x12e2dd=>setTimeout(_0x12e2dd,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x39dfdf,_0x4cee37,_0x5ec349=SERVER_STARTUP_TIMEOUT){const _0x4e1dfc=a0_0x214cf5,_0x3205b4=Math[_0x4e1dfc(0x16f)](_0x5ec349/SERVER_CHECK_INTERVAL),_0x1cad8a=await checkServerRunning(_0x39dfdf,_0x4cee37,_0x3205b4);return _0x1cad8a?{'host':_0x39dfdf,'port':_0x4cee37}:null;}function openBrowser(_0x16bda2){const _0x1634f3=a0_0x214cf5;let _0x21b2c6,_0x162449;if(process[_0x1634f3(0x160)]===_0x1634f3(0x15e))_0x21b2c6=_0x1634f3(0x190),_0x162449=[_0x16bda2];else process[_0x1634f3(0x160)]===_0x1634f3(0x153)?(_0x21b2c6=_0x1634f3(0x162),_0x162449=['/c',_0x1634f3(0x14b),'\x22\x22',_0x16bda2]):(_0x21b2c6=_0x1634f3(0x177),_0x162449=[_0x16bda2]);const _0x333c0b=spawn(_0x21b2c6,_0x162449,{'detached':!![],'stdio':_0x1634f3(0x180)});_0x333c0b[_0x1634f3(0x17d)](),_0x333c0b['on'](_0x1634f3(0x164),()=>{const _0x569c88=_0x1634f3;console['log']('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x569c88(0x195)](_0x569c88(0x15d)+_0x16bda2);});}function startServer(_0x16865d=![]){const _0x92bafb=a0_0x214cf5,_0x103a5e={...process.env};explicitPort&&(_0x103a5e['LOXIA_PORT']=explicitPort[_0x92bafb(0x152)](),_0x103a5e['PORT']=explicitPort['toString']());flags['host']&&(_0x103a5e[_0x92bafb(0x15f)]=flags[_0x92bafb(0x191)]);const _0x18efa3=join(__dirname,'..',_0x92bafb(0x18e),_0x92bafb(0x199)),_0x20dcab=spawn(_0x92bafb(0x18c),[_0x18efa3],{'cwd':join(__dirname,'..'),'env':_0x103a5e,'stdio':_0x16865d?[_0x92bafb(0x180),_0x92bafb(0x180),_0x92bafb(0x180)]:_0x92bafb(0x198),'detached':_0x16865d});return _0x16865d&&_0x20dcab[_0x92bafb(0x17d)](),_0x20dcab;}function startTerminalUIProcess(_0x4bf315,_0x3d041f){const _0x3a57a8=a0_0x214cf5,_0x109ef6=join(__dirname,_0x3a57a8(0x159)),_0x5d9185={...process.env,'LOXIA_PORT':_0x3d041f['toString'](),'LOXIA_HOST':_0x4bf315},_0x13a703=spawn('node',[_0x109ef6],{'cwd':join(__dirname,'..'),'env':_0x5d9185,'stdio':'inherit'});return _0x13a703;}const commands={'web':async()=>{const _0x45c815=a0_0x214cf5;console[_0x45c815(0x195)](_0x45c815(0x170));const _0x59af0f=startServer(![]);console['log'](_0x45c815(0x16c));let _0x468250;explicitPort?_0x468250=await waitForServerAtPort(host,explicitPort):_0x468250=await waitForServerWithDiscovery();if(_0x468250){const _0x35de45=_0x45c815(0x16a)+_0x468250[_0x45c815(0x191)]+':'+_0x468250['port'];console[_0x45c815(0x195)](_0x45c815(0x167)+_0x35de45),openBrowser(_0x35de45);}else console[_0x45c815(0x195)](_0x45c815(0x197));process['on'](_0x45c815(0x156),()=>_0x59af0f[_0x45c815(0x187)](_0x45c815(0x156))),process['on'](_0x45c815(0x19d),()=>_0x59af0f['kill']('SIGTERM')),_0x59af0f['on']('exit',_0x49894d=>process[_0x45c815(0x161)](_0x49894d||0x0));},'plus-web':async()=>{const _0x429c85=a0_0x214cf5;await commands[_0x429c85(0x155)]();},'serve':async()=>{const _0x322eba=a0_0x214cf5;console[_0x322eba(0x195)](_0x322eba(0x170));const _0x52aeab=startServer(![]);console[_0x322eba(0x195)](_0x322eba(0x16c));let _0x5e9b8d;explicitPort?_0x5e9b8d=await waitForServerAtPort(host,explicitPort):_0x5e9b8d=await waitForServerWithDiscovery();if(_0x5e9b8d){const _0x11a870=_0x322eba(0x16a)+_0x5e9b8d[_0x322eba(0x191)]+':'+_0x5e9b8d[_0x322eba(0x163)];console[_0x322eba(0x195)](_0x322eba(0x188)+_0x11a870),console[_0x322eba(0x195)](_0x322eba(0x14c)+_0x11a870),console[_0x322eba(0x195)](_0x322eba(0x17e)),console[_0x322eba(0x195)](_0x322eba(0x186)+_0x11a870+'/api/health\x0a');}else console[_0x322eba(0x195)](_0x322eba(0x16b)),console[_0x322eba(0x195)](_0x322eba(0x189));process['on']('SIGINT',()=>_0x52aeab[_0x322eba(0x187)](_0x322eba(0x156))),process['on'](_0x322eba(0x19d),()=>_0x52aeab[_0x322eba(0x187)](_0x322eba(0x19d))),_0x52aeab['on'](_0x322eba(0x161),_0x5b1f7d=>process[_0x322eba(0x161)](_0x5b1f7d||0x0));},'terminal':async()=>{const _0x330981=a0_0x214cf5;console[_0x330981(0x195)](_0x330981(0x185));let _0x5c7c47=await discoverBackend();explicitPort&&(_0x5c7c47={'host':host,'port':explicitPort});!_0x5c7c47&&(console[_0x330981(0x164)](_0x330981(0x15c)),console[_0x330981(0x164)](_0x330981(0x181)),console[_0x330981(0x164)](_0x330981(0x157)),console['error'](_0x330981(0x14a)),console[_0x330981(0x164)]('\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a'),process[_0x330981(0x161)](0x1));const _0x25e540=await checkServerRunning(_0x5c7c47['host'],_0x5c7c47[_0x330981(0x163)]);!_0x25e540&&(console[_0x330981(0x164)]('\x0aServer\x20registered\x20at\x20'+_0x5c7c47['host']+':'+_0x5c7c47['port']+_0x330981(0x17a)),console[_0x330981(0x164)](_0x330981(0x18f)),process[_0x330981(0x161)](0x1));console['log'](_0x330981(0x149)+_0x5c7c47[_0x330981(0x191)]+':'+_0x5c7c47['port']),console[_0x330981(0x195)](_0x330981(0x175));const _0x2d4bbc=startTerminalUIProcess(_0x5c7c47['host'],_0x5c7c47['port']);process['on'](_0x330981(0x156),()=>_0x2d4bbc[_0x330981(0x187)](_0x330981(0x156))),process['on']('SIGTERM',()=>_0x2d4bbc[_0x330981(0x187)](_0x330981(0x19d))),_0x2d4bbc['on'](_0x330981(0x161),_0x27fb92=>process['exit'](_0x27fb92||0x0));},'plus-terminal':async()=>{const _0x1e0606=a0_0x214cf5;console[_0x1e0606(0x195)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x98ae2e=startServer(!![]);let _0x4d9787;explicitPort?_0x4d9787=await waitForServerAtPort(host,explicitPort):_0x4d9787=await waitForServerWithDiscovery();!_0x4d9787&&(console[_0x1e0606(0x164)](_0x1e0606(0x18a)),process['exit'](0x1));console[_0x1e0606(0x195)]('Server\x20running\x20at\x20http://'+_0x4d9787[_0x1e0606(0x191)]+':'+_0x4d9787['port']),console[_0x1e0606(0x195)]('Starting\x20Terminal\x20UI...\x0a');const _0x509ddc=startTerminalUIProcess(_0x4d9787[_0x1e0606(0x191)],_0x4d9787[_0x1e0606(0x163)]);_0x509ddc['on'](_0x1e0606(0x161),_0x17798b=>{const _0x36cf8c=_0x1e0606;console[_0x36cf8c(0x195)](_0x36cf8c(0x17b));try{process['kill'](_0x98ae2e['pid'],'SIGTERM');}catch(_0x43008b){}process[_0x36cf8c(0x161)](_0x17798b||0x0);}),process['on'](_0x1e0606(0x156),()=>{const _0x19ad5e=_0x1e0606;_0x509ddc[_0x19ad5e(0x187)](_0x19ad5e(0x156));}),process['on']('SIGTERM',()=>{const _0x1a4ff7=_0x1e0606;_0x509ddc[_0x1a4ff7(0x187)]('SIGTERM');});}};commands[command]?commands[command]()[a0_0x214cf5(0x179)](_0x204db3=>{const _0x411eba=a0_0x214cf5;console[_0x411eba(0x164)](_0x411eba(0x14d),_0x204db3[_0x411eba(0x193)]),process[_0x411eba(0x161)](0x1);}):(console['error']('Unknown\x20command:\x20'+command),console[a0_0x214cf5(0x164)](a0_0x214cf5(0x165)),process['exit'](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x1a6b25=a0_0x3173;(function(_0x591e48,_0x284758){const _0x256fdf=a0_0x3173,_0x5f4a48=_0x591e48();while(!![]){try{const _0x117042=parseInt(_0x256fdf(0x13c))/0x1*(parseInt(_0x256fdf(0x14b))/0x2)+-parseInt(_0x256fdf(0x133))/0x3*(parseInt(_0x256fdf(0x11e))/0x4)+-parseInt(_0x256fdf(0x147))/0x5*(-parseInt(_0x256fdf(0x143))/0x6)+parseInt(_0x256fdf(0x13f))/0x7+parseInt(_0x256fdf(0x127))/0x8+-parseInt(_0x256fdf(0x12b))/0x9+parseInt(_0x256fdf(0x134))/0xa;if(_0x117042===_0x284758)break;else _0x5f4a48['push'](_0x5f4a48['shift']());}catch(_0x246b04){_0x5f4a48['push'](_0x5f4a48['shift']());}}}(a0_0x2221,0xb1e09));import{spawn}from'child_process';import a0_0x2109d2 from'net';import a0_0x504f9e from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x504f9e[a0_0x1a6b25(0x144)](__filename),projectRoot=a0_0x504f9e[a0_0x1a6b25(0x144)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x1a6b25(0x135),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x377176,_0x2edda6){return new Promise(_0x15fbd1=>{const _0xcd5da3=a0_0x3173,_0x406a18=new a0_0x2109d2[(_0xcd5da3(0x140))]();_0x406a18[_0xcd5da3(0x124)](0x7d0),_0x406a18['on']('connect',()=>{const _0x5a09dd=_0xcd5da3;_0x406a18[_0x5a09dd(0x11f)](),_0x15fbd1(!![]);}),_0x406a18['on'](_0xcd5da3(0x121),()=>{const _0x42a371=_0xcd5da3;_0x406a18[_0x42a371(0x11f)](),_0x15fbd1(![]);}),_0x406a18['on']('error',()=>{_0x406a18['destroy'](),_0x15fbd1(![]);}),_0x406a18[_0xcd5da3(0x139)](_0x2edda6,_0x377176);});}function a0_0x3173(_0x1621d7,_0x2a5bd4){_0x1621d7=_0x1621d7-0x11e;const _0x222119=a0_0x2221();let _0x317397=_0x222119[_0x1621d7];return _0x317397;}async function startServer(_0x5dcdac,_0x4d2374){const _0x13823a=a0_0x1a6b25;return console[_0x13823a(0x145)](_0x13823a(0x13b)),new Promise((_0x42e717,_0x3e4fff)=>{const _0x34caab=_0x13823a,_0x5c1b27=spawn('node',[a0_0x504f9e[_0x34caab(0x128)](projectRoot,'bin/cli.js'),_0x34caab(0x14a),_0x34caab(0x146),_0x34caab(0x129),_0x5dcdac,_0x34caab(0x126),_0x4d2374[_0x34caab(0x13e)]()],{'detached':![],'stdio':['ignore',_0x34caab(0x149),_0x34caab(0x149)]});_0x5c1b27[_0x34caab(0x142)]['on'](_0x34caab(0x137),()=>{}),_0x5c1b27['stderr']['on']('data',()=>{}),_0x5c1b27['on'](_0x34caab(0x131),_0x24cf85=>{const _0x3b3214=_0x34caab;console[_0x3b3214(0x131)](_0x3b3214(0x136),_0x24cf85[_0x3b3214(0x130)]),_0x3e4fff(_0x24cf85);});const _0x37d05d=Date[_0x34caab(0x132)](),_0x3670a0=setInterval(async()=>{const _0x25bf83=_0x34caab,_0x3b392d=await isServerRunning(_0x5dcdac,_0x4d2374);if(_0x3b392d)clearInterval(_0x3670a0),console[_0x25bf83(0x145)](_0x25bf83(0x12c)+_0x5dcdac+':'+_0x4d2374),_0x42e717();else Date[_0x25bf83(0x132)]()-_0x37d05d>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x3670a0),_0x5c1b27[_0x25bf83(0x12e)](),_0x3e4fff(new Error(_0x25bf83(0x122))));},0x1f4);});}async function main(){const _0x4f581f=a0_0x1a6b25;try{console['log'](_0x4f581f(0x125)),console[_0x4f581f(0x145)](_0x4f581f(0x12a)),console[_0x4f581f(0x145)](_0x4f581f(0x125)),console[_0x4f581f(0x145)]('');const _0x306891=process['argv'][_0x4f581f(0x13a)](0x2);let _0x49701d=DEFAULT_HOST,_0x6554c=DEFAULT_PORT;for(let _0xec5cf0=0x0;_0xec5cf0<_0x306891[_0x4f581f(0x138)];_0xec5cf0++){if(_0x306891[_0xec5cf0]===_0x4f581f(0x129)&&_0x306891[_0xec5cf0+0x1])_0x49701d=_0x306891[_0xec5cf0+0x1],_0xec5cf0++;else _0x306891[_0xec5cf0]===_0x4f581f(0x126)&&_0x306891[_0xec5cf0+0x1]&&(_0x6554c=parseInt(_0x306891[_0xec5cf0+0x1],0xa),_0xec5cf0++);}console[_0x4f581f(0x145)](_0x4f581f(0x14d)+_0x49701d+':'+_0x6554c+_0x4f581f(0x123));const _0x4d79f6=await isServerRunning(_0x49701d,_0x6554c);!_0x4d79f6?(console[_0x4f581f(0x145)](_0x4f581f(0x120)),await startServer(_0x49701d,_0x6554c)):console[_0x4f581f(0x145)](_0x4f581f(0x14c)+_0x49701d+':'+_0x6554c),console[_0x4f581f(0x145)](''),console['log'](_0x4f581f(0x141)),console[_0x4f581f(0x145)](''),await new Promise(_0x1b87d5=>setTimeout(_0x1b87d5,0x1f4)),process.env.LOXIA_HOST=_0x49701d,process.env.LOXIA_PORT=_0x6554c['toString'](),await import(_0x4f581f(0x148));}catch(_0xedc848){console[_0x4f581f(0x131)](''),console[_0x4f581f(0x131)]('❌\x20Failed\x20to\x20start\x20Terminal\x20UI:'),console['error']('\x20\x20',_0xedc848[_0x4f581f(0x130)]),console['error'](''),console[_0x4f581f(0x131)](_0x4f581f(0x12d)),console['error'](_0x4f581f(0x12f)),console['error'](_0x4f581f(0x13d)),console[_0x4f581f(0x131)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x4f581f(0x131)](''),process[_0x4f581f(0x14e)](0x1);}}main();function a0_0x2221(){const _0x86a2e2=['slice','🚀\x20Starting\x20Loxia\x20server...','1331961apwmIZ','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','toString','2431030ONnzyw','Socket','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','stdout','71892lGfkbp','dirname','log','web','5WajJDk','../src/interfaces/terminal/index.js','pipe','--ui','2YwnJti','✓\x20Server\x20is\x20already\x20running\x20at\x20','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','exit','4064OSBmpq','destroy','✗\x20Server\x20is\x20not\x20running','timeout','Server\x20startup\x20timeout','...','setTimeout','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','--port','4579920cPTKSZ','join','--host','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','6326721kxbFpR','✓\x20Server\x20started\x20at\x20','💡\x20Troubleshooting:','kill','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','message','error','now','2820cMiHRN','1228710aHhxhm','localhost','Failed\x20to\x20start\x20server:','data','length','connect'];a0_0x2221=function(){return _0x86a2e2;};return a0_0x2221();}
3
+ function a0_0xe78c(){const _0x5ab26d=['slice','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','join','destroy','...','bin/cli.js','✗\x20Server\x20is\x20not\x20running','19698175JxpQIV','758090bIpVEN','connect','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','293544nnMbdm','timeout','533380RhRFVa','../src/interfaces/terminal/index.js','--host','exit','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','error','Failed\x20to\x20start\x20server:','localhost','stdout','now','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','1198404CsUIAU','node','toString','🚀\x20Starting\x20Loxia\x20server...','Server\x20startup\x20timeout','log','stderr','kill','--port','setTimeout','3857208dmVoaO','1096248auKBDs','message','--ui','length','web','✓\x20Server\x20started\x20at\x20','data','pipe','Socket','💡\x20Troubleshooting:'];a0_0xe78c=function(){return _0x5ab26d;};return a0_0xe78c();}const a0_0x16b6c9=a0_0xc4d3;(function(_0x5f1b01,_0x128beb){const _0x4d4456=a0_0xc4d3,_0x436e7d=_0x5f1b01();while(!![]){try{const _0x489d0e=-parseInt(_0x4d4456(0x92))/0x1+-parseInt(_0x4d4456(0x75))/0x2+-parseInt(_0x4d4456(0x80))/0x3+parseInt(_0x4d4456(0x95))/0x4+-parseInt(_0x4d4456(0x97))/0x5+-parseInt(_0x4d4456(0x7f))/0x6+parseInt(_0x4d4456(0x91))/0x7;if(_0x489d0e===_0x128beb)break;else _0x436e7d['push'](_0x436e7d['shift']());}catch(_0x29a913){_0x436e7d['push'](_0x436e7d['shift']());}}}(a0_0xe78c,0x655b7));function a0_0xc4d3(_0x3ff70f,_0x1a0782){_0x3ff70f=_0x3ff70f-0x70;const _0xe78c46=a0_0xe78c();let _0xc4d3df=_0xe78c46[_0x3ff70f];return _0xc4d3df;}import{spawn}from'child_process';import a0_0x243f74 from'net';import a0_0x171926 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x171926['dirname'](__filename),projectRoot=a0_0x171926['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x16b6c9(0x71),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x2e22fb,_0x118139){return new Promise(_0xf131b3=>{const _0x42f284=a0_0xc4d3,_0x3864e0=new a0_0x243f74[(_0x42f284(0x88))]();_0x3864e0[_0x42f284(0x7e)](0x7d0),_0x3864e0['on'](_0x42f284(0x93),()=>{const _0x2cf43b=_0x42f284;_0x3864e0[_0x2cf43b(0x8d)](),_0xf131b3(!![]);}),_0x3864e0['on'](_0x42f284(0x96),()=>{const _0x4051c1=_0x42f284;_0x3864e0[_0x4051c1(0x8d)](),_0xf131b3(![]);}),_0x3864e0['on']('error',()=>{_0x3864e0['destroy'](),_0xf131b3(![]);}),_0x3864e0[_0x42f284(0x93)](_0x118139,_0x2e22fb);});}async function startServer(_0x3555d0,_0x56c9dc){const _0x44ae29=a0_0x16b6c9;return console['log'](_0x44ae29(0x78)),new Promise((_0x229c1c,_0x17e0f7)=>{const _0x4b4bc9=_0x44ae29,_0x319333=spawn(_0x4b4bc9(0x76),[a0_0x171926[_0x4b4bc9(0x8c)](projectRoot,_0x4b4bc9(0x8f)),_0x4b4bc9(0x82),_0x4b4bc9(0x84),_0x4b4bc9(0x99),_0x3555d0,_0x4b4bc9(0x7d),_0x56c9dc['toString']()],{'detached':![],'stdio':['ignore',_0x4b4bc9(0x87),_0x4b4bc9(0x87)]});_0x319333[_0x4b4bc9(0x72)]['on'](_0x4b4bc9(0x86),()=>{}),_0x319333[_0x4b4bc9(0x7b)]['on']('data',()=>{}),_0x319333['on'](_0x4b4bc9(0x9c),_0x55fcab=>{const _0x181952=_0x4b4bc9;console[_0x181952(0x9c)](_0x181952(0x70),_0x55fcab[_0x181952(0x81)]),_0x17e0f7(_0x55fcab);});const _0x5d8dcb=Date[_0x4b4bc9(0x73)](),_0x400a4e=setInterval(async()=>{const _0x547a12=_0x4b4bc9,_0x445722=await isServerRunning(_0x3555d0,_0x56c9dc);if(_0x445722)clearInterval(_0x400a4e),console['log'](_0x547a12(0x85)+_0x3555d0+':'+_0x56c9dc),_0x229c1c();else Date['now']()-_0x5d8dcb>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x400a4e),_0x319333[_0x547a12(0x7c)](),_0x17e0f7(new Error(_0x547a12(0x79))));},0x1f4);});}async function main(){const _0x39f865=a0_0x16b6c9;try{console[_0x39f865(0x7a)](_0x39f865(0x8b)),console[_0x39f865(0x7a)](_0x39f865(0x74)),console[_0x39f865(0x7a)](_0x39f865(0x8b)),console['log']('');const _0x4ba951=process['argv'][_0x39f865(0x8a)](0x2);let _0x204fcd=DEFAULT_HOST,_0x4442e1=DEFAULT_PORT;for(let _0x3000b7=0x0;_0x3000b7<_0x4ba951[_0x39f865(0x83)];_0x3000b7++){if(_0x4ba951[_0x3000b7]===_0x39f865(0x99)&&_0x4ba951[_0x3000b7+0x1])_0x204fcd=_0x4ba951[_0x3000b7+0x1],_0x3000b7++;else _0x4ba951[_0x3000b7]===_0x39f865(0x7d)&&_0x4ba951[_0x3000b7+0x1]&&(_0x4442e1=parseInt(_0x4ba951[_0x3000b7+0x1],0xa),_0x3000b7++);}console['log']('🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20'+_0x204fcd+':'+_0x4442e1+_0x39f865(0x8e));const _0x586b6c=await isServerRunning(_0x204fcd,_0x4442e1);!_0x586b6c?(console['log'](_0x39f865(0x90)),await startServer(_0x204fcd,_0x4442e1)):console[_0x39f865(0x7a)]('✓\x20Server\x20is\x20already\x20running\x20at\x20'+_0x204fcd+':'+_0x4442e1),console[_0x39f865(0x7a)](''),console[_0x39f865(0x7a)]('🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...'),console[_0x39f865(0x7a)](''),await new Promise(_0x2425d5=>setTimeout(_0x2425d5,0x1f4)),process.env.LOXIA_HOST=_0x204fcd,process.env.LOXIA_PORT=_0x4442e1[_0x39f865(0x77)](),await import(_0x39f865(0x98));}catch(_0x4f4f7d){console[_0x39f865(0x9c)](''),console[_0x39f865(0x9c)]('❌\x20Failed\x20to\x20start\x20Terminal\x20UI:'),console['error']('\x20\x20',_0x4f4f7d[_0x39f865(0x81)]),console[_0x39f865(0x9c)](''),console[_0x39f865(0x9c)](_0x39f865(0x89)),console['error'](_0x39f865(0x94)),console[_0x39f865(0x9c)](_0x39f865(0x9b)),console[_0x39f865(0x9c)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x39f865(0x9c)](''),process[_0x39f865(0x9a)](0x1);}}main();
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0x1cde(_0x16908c,_0x4af050){_0x16908c=_0x16908c-0x174;const _0x260e45=a0_0x260e();let _0x1cde70=_0x260e45[_0x16908c];return _0x1cde70;}const a0_0x23204e=a0_0x1cde;(function(_0x17e14e,_0x313578){const _0x1f772c=a0_0x1cde,_0x2c39e7=_0x17e14e();while(!![]){try{const _0x2b105a=-parseInt(_0x1f772c(0x192))/0x1+-parseInt(_0x1f772c(0x18d))/0x2*(-parseInt(_0x1f772c(0x193))/0x3)+parseInt(_0x1f772c(0x185))/0x4*(-parseInt(_0x1f772c(0x18a))/0x5)+parseInt(_0x1f772c(0x198))/0x6+parseInt(_0x1f772c(0x17a))/0x7*(parseInt(_0x1f772c(0x178))/0x8)+-parseInt(_0x1f772c(0x177))/0x9+parseInt(_0x1f772c(0x174))/0xa;if(_0x2b105a===_0x313578)break;else _0x2c39e7['push'](_0x2c39e7['shift']());}catch(_0x5b9a2b){_0x2c39e7['push'](_0x2c39e7['shift']());}}}(a0_0x260e,0xb4e04));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x23204e(0x176)]['slice'](0x2),options={'host':a0_0x23204e(0x189),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x23204e(0x18e)||arg==='-h')options[a0_0x23204e(0x17b)]=args[++i];else{if(arg===a0_0x23204e(0x17f)||arg==='-p')options[a0_0x23204e(0x17e)]=parseInt(args[++i],0xa);else arg===a0_0x23204e(0x18b)&&(console[a0_0x23204e(0x179)](a0_0x23204e(0x195)),process[a0_0x23204e(0x183)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x23204e(0x17b)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x23204e(0x17e)]=parseInt(process.env.LOXIA_PORT,0xa));!process['stdin']['isTTY']&&(console[a0_0x23204e(0x180)](a0_0x23204e(0x186)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x190)),console[a0_0x23204e(0x180)](a0_0x23204e(0x187)),console[a0_0x23204e(0x180)](a0_0x23204e(0x17c)),console['error'](a0_0x23204e(0x197)),console['error'](a0_0x23204e(0x184)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x196)),console['error'](a0_0x23204e(0x175)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x181)),console[a0_0x23204e(0x180)](a0_0x23204e(0x18c)),process['exit'](0x1));console[a0_0x23204e(0x179)](a0_0x23204e(0x188)),console[a0_0x23204e(0x179)](a0_0x23204e(0x194)+options['host']+':'+options['port']),console[a0_0x23204e(0x179)]('Press\x20Ctrl+C\x20to\x20exit\x0a');const instance=startTerminalUI(options);instance['waitUntilExit']()[a0_0x23204e(0x17d)](()=>{const _0x56f5dc=a0_0x23204e;console[_0x56f5dc(0x179)](_0x56f5dc(0x182)),process['exit'](0x0);})[a0_0x23204e(0x191)](_0x209bca=>{const _0x103f8a=a0_0x23204e;console[_0x103f8a(0x180)](_0x103f8a(0x18f),_0x209bca),process['exit'](0x1);});function a0_0x260e(){const _0x29d714=['\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','Starting\x20Loxia\x20Terminal\x20UI...','localhost','600205vCrKde','--help','\x20\x20npm\x20start','64qmiUCV','--host','\x0aTerminal\x20UI\x20error:','The\x20terminal\x20UI\x20cannot\x20run\x20in:','catch','867333prmiDx','16392KeMDIG','Connecting\x20to:\x20','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','5509554xmFsHr','8598190rzgLFB','\x20\x20npm\x20run\x20terminal-ui','argv','13179969UbmfBk','528YijLeF','log','144221YEHJoy','host','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','then','port','--port','error','Or\x20use\x20the\x20web\x20UI\x20instead:','\x0aTerminal\x20UI\x20exited','exit','\x20\x20-\x20Some\x20CI/CD\x20environments','8HEpDfm','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'];a0_0x260e=function(){return _0x29d714;};return a0_0x260e();}
3
+ const a0_0xe5e72d=a0_0x31df;(function(_0x72b42a,_0x2f45a2){const _0x140ea5=a0_0x31df,_0x5be3cb=_0x72b42a();while(!![]){try{const _0x183af0=parseInt(_0x140ea5(0xb0))/0x1*(parseInt(_0x140ea5(0xcc))/0x2)+parseInt(_0x140ea5(0xce))/0x3+-parseInt(_0x140ea5(0xaf))/0x4*(-parseInt(_0x140ea5(0xc1))/0x5)+parseInt(_0x140ea5(0xcb))/0x6+parseInt(_0x140ea5(0xc6))/0x7+-parseInt(_0x140ea5(0xc9))/0x8+-parseInt(_0x140ea5(0xb6))/0x9;if(_0x183af0===_0x2f45a2)break;else _0x5be3cb['push'](_0x5be3cb['shift']());}catch(_0x12573d){_0x5be3cb['push'](_0x5be3cb['shift']());}}}(a0_0xff02,0x1ab54));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0xe5e72d(0xad)][a0_0xe5e72d(0xbe)](0x2),options={'host':a0_0xe5e72d(0xc2),'port':0x1f90};function a0_0xff02(){const _0x1434c0=['\x20\x20-\x20Some\x20CI/CD\x20environments','Press\x20Ctrl+C\x20to\x20exit\x0a','Or\x20use\x20the\x20web\x20UI\x20instead:','log','slice','length','port','527515bHorfu','localhost','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','waitUntilExit','The\x20terminal\x20UI\x20cannot\x20run\x20in:','1286684ayzNXp','--host','host','1654872tiXRhY','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','669174Hvmaby','13286YUxoHk','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','11238NIGWlU','then','\x0aTerminal\x20UI\x20exited','argv','--help','4WqCzDv','3QDRORp','\x20\x20npm\x20run\x20terminal-ui','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\x20\x20npm\x20start','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','exit','974376UhxAYl','error','stdin','\x0aTerminal\x20UI\x20error:'];a0_0xff02=function(){return _0x1434c0;};return a0_0xff02();}function a0_0x31df(_0x8a2fe1,_0x208e1c){_0x8a2fe1=_0x8a2fe1-0xac;const _0xff028e=a0_0xff02();let _0x31df5b=_0xff028e[_0x8a2fe1];return _0x31df5b;}for(let i=0x0;i<args[a0_0xe5e72d(0xbf)];i++){const arg=args[i];if(arg===a0_0xe5e72d(0xc7)||arg==='-h')options['host']=args[++i];else{if(arg==='--port'||arg==='-p')options[a0_0xe5e72d(0xc0)]=parseInt(args[++i],0xa);else arg===a0_0xe5e72d(0xae)&&(console[a0_0xe5e72d(0xbd)](a0_0xe5e72d(0xca)),process['exit'](0x0));}}process.env.LOXIA_HOST&&(options[a0_0xe5e72d(0xc8)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0xe5e72d(0xc0)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0xe5e72d(0xb8)]['isTTY']&&(console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb4)),console[a0_0xe5e72d(0xb7)](''),console['error'](a0_0xe5e72d(0xc5)),console[a0_0xe5e72d(0xb7)]('\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xcd)),console['error'](a0_0xe5e72d(0xc3)),console['error'](a0_0xe5e72d(0xba)),console['error'](''),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb2)),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb1)),console['error'](''),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xbc)),console['error'](a0_0xe5e72d(0xb3)),process['exit'](0x1));console['log']('Starting\x20Loxia\x20Terminal\x20UI...'),console[a0_0xe5e72d(0xbd)]('Connecting\x20to:\x20'+options[a0_0xe5e72d(0xc8)]+':'+options[a0_0xe5e72d(0xc0)]),console[a0_0xe5e72d(0xbd)](a0_0xe5e72d(0xbb));const instance=startTerminalUI(options);instance[a0_0xe5e72d(0xc4)]()[a0_0xe5e72d(0xcf)](()=>{const _0x56374f=a0_0xe5e72d;console['log'](_0x56374f(0xac)),process[_0x56374f(0xb5)](0x0);})['catch'](_0x257596=>{const _0x168eb6=a0_0xe5e72d;console[_0x168eb6(0xb7)](_0x168eb6(0xb9),_0x257596),process[_0x168eb6(0xb5)](0x1);});
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0x852a(_0x3a0236,_0xd88c98){_0x3a0236=_0x3a0236-0x9e;const _0x5155ef=a0_0x5155();let _0x852ad9=_0x5155ef[_0x3a0236];return _0x852ad9;}const a0_0x5f449d=a0_0x852a;(function(_0x29fb10,_0x393420){const _0x19932f=a0_0x852a,_0x59d028=_0x29fb10();while(!![]){try{const _0x4b7d1b=parseInt(_0x19932f(0xc8))/0x1*(-parseInt(_0x19932f(0xc5))/0x2)+-parseInt(_0x19932f(0xbf))/0x3*(parseInt(_0x19932f(0xcf))/0x4)+-parseInt(_0x19932f(0xb8))/0x5*(-parseInt(_0x19932f(0xd1))/0x6)+-parseInt(_0x19932f(0xba))/0x7*(-parseInt(_0x19932f(0xaa))/0x8)+-parseInt(_0x19932f(0xad))/0x9*(parseInt(_0x19932f(0xa3))/0xa)+-parseInt(_0x19932f(0xc2))/0xb+parseInt(_0x19932f(0xb3))/0xc;if(_0x4b7d1b===_0x393420)break;else _0x59d028['push'](_0x59d028['shift']());}catch(_0x1bad5d){_0x59d028['push'](_0x59d028['shift']());}}}(a0_0x5155,0xc0878));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x5459b9 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;function a0_0x5155(){const _0x4e7bd7=['message','784BbDjpD','inherit','killed','1654reGYpL','http://localhost:','data','get','╔════════════════════════════════════════════════╗','includes','bin','1889468saHayO','error','29982mrgGbV','Error\x20during\x20startup:','SIGINT','[SERVER\x20ERROR]\x20','destroy','loxia-terminal.js','50MpsWyN','Server\x20exited\x20with\x20code\x20','trim','Server\x20returned\x20','SIGTERM','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','8NzOssS','SIGKILL','log','1918827Dkgrtv','✅\x20Server\x20is\x20ready!','Timeout','ignore','pipe','Failed\x20to\x20start\x20Terminal\x20UI:','35144052mjAjkW','statusCode','toString','ExperimentalWarning','\x0a👋\x20Terminal\x20UI\x20closed.','1220gainny','stderr','7232981gtSdxd','index.js','/health','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','exit','9FKJpLJ','node','kill','13872518jkWzhE','src'];a0_0x5155=function(){return _0x4e7bd7;};return a0_0x5155();}async function checkServerReady(_0x276a40=0xa,_0x1fc259=0x1f4){const _0x2ebf42=a0_0x852a;for(let _0x12f2ad=0x0;_0x12f2ad<_0x276a40;_0x12f2ad++){try{return await new Promise((_0x263b4f,_0x387e68)=>{const _0x38a6b7=a0_0x852a,_0x40f342=a0_0x5459b9[_0x38a6b7(0xcb)](_0x38a6b7(0xc9)+SERVER_PORT+_0x38a6b7(0xbc),_0x2e5beb=>{const _0x5917cf=_0x38a6b7;_0x2e5beb[_0x5917cf(0xb4)]===0xc8?_0x263b4f():_0x387e68(new Error(_0x5917cf(0xa6)+_0x2e5beb[_0x5917cf(0xb4)]));});_0x40f342['on'](_0x38a6b7(0xd0),_0x387e68),_0x40f342['setTimeout'](0x3e8,()=>{const _0x3a13d7=_0x38a6b7;_0x40f342[_0x3a13d7(0xa1)](),_0x387e68(new Error(_0x3a13d7(0xaf)));});}),console[_0x2ebf42(0xac)](_0x2ebf42(0xae)),!![];}catch(_0x39af5a){_0x12f2ad<_0x276a40-0x1&&await new Promise(_0x424557=>setTimeout(_0x424557,_0x1fc259));}}return console['log'](_0x2ebf42(0xa9)),![];}async function startServer(){return new Promise(_0x1612b2=>{const _0x1effb2=a0_0x852a;console[_0x1effb2(0xac)]('🚀\x20Starting\x20Loxia\x20server...');const _0x4988dc=join(rootDir,_0x1effb2(0xc3),_0x1effb2(0xbb));serverProcess=spawn(_0x1effb2(0xc0),[_0x4988dc],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x1effb2(0xb0),'pipe',_0x1effb2(0xb1)],'detached':![]}),serverProcess['stdout']['on']('data',_0x3c6f71=>{const _0x5ab783=_0x1effb2,_0x460560=_0x3c6f71['toString']()[_0x5ab783(0xa5)]();_0x460560&&console[_0x5ab783(0xac)]('[SERVER]\x20'+_0x460560);}),serverProcess[_0x1effb2(0xb9)]['on'](_0x1effb2(0xca),_0x5df387=>{const _0x1f5055=_0x1effb2,_0x11a45a=_0x5df387[_0x1f5055(0xb5)]()['trim']();_0x11a45a&&!_0x11a45a[_0x1f5055(0xcd)](_0x1f5055(0xb6))&&console[_0x1f5055(0xd0)](_0x1f5055(0xa0)+_0x11a45a);}),serverProcess['on'](_0x1effb2(0xd0),_0x2986ae=>{const _0x25530d=_0x1effb2;console[_0x25530d(0xd0)]('Failed\x20to\x20start\x20server:',_0x2986ae['message']),process[_0x25530d(0xbe)](0x1);}),serverProcess['on'](_0x1effb2(0xbe),(_0x577276,_0x3451df)=>{const _0x14bec0=_0x1effb2;_0x577276!==null&&_0x577276!==0x0&&(console[_0x14bec0(0xd0)](_0x14bec0(0xa4)+_0x577276),process[_0x14bec0(0xbe)](_0x577276));}),setTimeout(_0x1612b2,STARTUP_WAIT);});}async function startTerminalUI(){const _0x34f704=a0_0x852a;console[_0x34f704(0xac)]('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console[_0x34f704(0xac)]('');const _0x3630fa=join(rootDir,_0x34f704(0xce),_0x34f704(0xa2)),_0x34804a=spawn(_0x34f704(0xc0),[_0x3630fa],{'cwd':rootDir,'env':{...process.env},'stdio':_0x34f704(0xc6)});return _0x34804a['on']('error',_0x4e7d55=>{const _0x1e0c83=_0x34f704;console[_0x1e0c83(0xd0)](_0x1e0c83(0xb2),_0x4e7d55[_0x1e0c83(0xc4)]),cleanup(),process[_0x1e0c83(0xbe)](0x1);}),_0x34804a['on'](_0x34f704(0xbe),_0x106c77=>{const _0x11909c=_0x34f704;console[_0x11909c(0xac)](_0x11909c(0xb7)),cleanup(),process[_0x11909c(0xbe)](_0x106c77||0x0);}),_0x34804a;}function cleanup(){const _0x3e677e=a0_0x852a;serverProcess&&!serverProcess[_0x3e677e(0xc7)]&&(console[_0x3e677e(0xac)]('🛑\x20Stopping\x20server...'),serverProcess[_0x3e677e(0xc1)](_0x3e677e(0xa7)),setTimeout(()=>{const _0x476a47=_0x3e677e;!serverProcess['killed']&&serverProcess[_0x476a47(0xc1)](_0x476a47(0xab));},0x1388));}process['on'](a0_0x5f449d(0x9f),()=>{const _0x2dfd7f=a0_0x5f449d;console['log'](_0x2dfd7f(0xbd)),cleanup(),process['exit'](0x0);}),process['on']('SIGTERM',()=>{const _0x53cc10=a0_0x5f449d;console[_0x53cc10(0xac)](_0x53cc10(0xa8)),cleanup(),process['exit'](0x0);}),process['on'](a0_0x5f449d(0xbe),()=>{cleanup();});async function main(){const _0x460e3c=a0_0x5f449d;console[_0x460e3c(0xac)](_0x460e3c(0xcc)),console[_0x460e3c(0xac)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x460e3c(0xac)]('╚════════════════════════════════════════════════╝'),console[_0x460e3c(0xac)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x25bba2){console['error'](_0x460e3c(0x9e),_0x25bba2[_0x460e3c(0xc4)]),cleanup(),process[_0x460e3c(0xbe)](0x1);}}main();
3
+ const a0_0x2743e1=a0_0x6195;(function(_0x52e7c8,_0x5858f8){const _0xab7645=a0_0x6195,_0x5547ac=_0x52e7c8();while(!![]){try{const _0x52d84b=-parseInt(_0xab7645(0xf2))/0x1*(-parseInt(_0xab7645(0x103))/0x2)+parseInt(_0xab7645(0x105))/0x3+-parseInt(_0xab7645(0xfa))/0x4*(parseInt(_0xab7645(0x118))/0x5)+parseInt(_0xab7645(0xec))/0x6+parseInt(_0xab7645(0xfd))/0x7*(parseInt(_0xab7645(0x10d))/0x8)+-parseInt(_0xab7645(0x108))/0x9*(-parseInt(_0xab7645(0xff))/0xa)+parseInt(_0xab7645(0xe8))/0xb*(-parseInt(_0xab7645(0x119))/0xc);if(_0x52d84b===_0x5858f8)break;else _0x5547ac['push'](_0x5547ac['shift']());}catch(_0x3f16e8){_0x5547ac['push'](_0x5547ac['shift']());}}}(a0_0x5cbe,0x4acbe));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x101243 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;function a0_0x6195(_0x1b9706,_0x12cedc){_0x1b9706=_0x1b9706-0xe6;const _0x5cbe17=a0_0x5cbe();let _0x61950c=_0x5cbe17[_0x1b9706];return _0x61950c;}let serverProcess=null;async function checkServerReady(_0x42910c=0xa,_0x431768=0x1f4){const _0x3969fd=a0_0x6195;for(let _0x52beb2=0x0;_0x52beb2<_0x42910c;_0x52beb2++){try{return await new Promise((_0x48a01d,_0x5c1496)=>{const _0xa1b03c=a0_0x6195,_0x5e1cbf=a0_0x101243[_0xa1b03c(0x117)](_0xa1b03c(0x10e)+SERVER_PORT+_0xa1b03c(0x100),_0x1ff39d=>{const _0x2f8746=_0xa1b03c;_0x1ff39d[_0x2f8746(0xee)]===0xc8?_0x48a01d():_0x5c1496(new Error(_0x2f8746(0x115)+_0x1ff39d['statusCode']));});_0x5e1cbf['on']('error',_0x5c1496),_0x5e1cbf[_0xa1b03c(0xfb)](0x3e8,()=>{const _0x5b3603=_0xa1b03c;_0x5e1cbf[_0x5b3603(0xeb)](),_0x5c1496(new Error(_0x5b3603(0x104)));});}),console[_0x3969fd(0x106)](_0x3969fd(0xed)),!![];}catch(_0x188aaf){_0x52beb2<_0x42910c-0x1&&await new Promise(_0x88acda=>setTimeout(_0x88acda,_0x431768));}}return console[_0x3969fd(0x106)](_0x3969fd(0x101)),![];}async function startServer(){return new Promise(_0x516727=>{const _0x2dfd62=a0_0x6195;console[_0x2dfd62(0x106)](_0x2dfd62(0x116));const _0x3f40fb=join(rootDir,_0x2dfd62(0xfe),_0x2dfd62(0xf6));serverProcess=spawn('node',[_0x3f40fb],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x2dfd62(0xf1),_0x2dfd62(0xe6),_0x2dfd62(0xe6)],'detached':![]}),serverProcess[_0x2dfd62(0xea)]['on']('data',_0x443bb6=>{const _0x2ece98=_0x2dfd62,_0x2b056b=_0x443bb6[_0x2ece98(0xf3)]()[_0x2ece98(0xf0)]();_0x2b056b&&console[_0x2ece98(0x106)](_0x2ece98(0x111)+_0x2b056b);}),serverProcess[_0x2dfd62(0x112)]['on'](_0x2dfd62(0xfc),_0x39c5c1=>{const _0x1be1b1=_0x2dfd62,_0x38f833=_0x39c5c1[_0x1be1b1(0xf3)]()[_0x1be1b1(0xf0)]();_0x38f833&&!_0x38f833['includes'](_0x1be1b1(0xf8))&&console[_0x1be1b1(0xf9)](_0x1be1b1(0x10a)+_0x38f833);}),serverProcess['on']('error',_0x57631a=>{const _0x2017e1=_0x2dfd62;console[_0x2017e1(0xf9)](_0x2017e1(0xf5),_0x57631a[_0x2017e1(0x109)]),process[_0x2017e1(0x11a)](0x1);}),serverProcess['on']('exit',(_0xcfeb4c,_0x10620f)=>{const _0x3a35b1=_0x2dfd62;_0xcfeb4c!==null&&_0xcfeb4c!==0x0&&(console['error'](_0x3a35b1(0xf4)+_0xcfeb4c),process[_0x3a35b1(0x11a)](_0xcfeb4c));}),setTimeout(_0x516727,STARTUP_WAIT);});}async function startTerminalUI(){const _0x2ac6b7=a0_0x6195;console[_0x2ac6b7(0x106)](_0x2ac6b7(0x113)),console['log']('');const _0x11d27d=join(rootDir,_0x2ac6b7(0x10f),'loxia-terminal.js'),_0x25ed0e=spawn('node',[_0x11d27d],{'cwd':rootDir,'env':{...process.env},'stdio':_0x2ac6b7(0x102)});return _0x25ed0e['on'](_0x2ac6b7(0xf9),_0x9db66=>{const _0x127c88=_0x2ac6b7;console[_0x127c88(0xf9)](_0x127c88(0x110),_0x9db66[_0x127c88(0x109)]),cleanup(),process['exit'](0x1);}),_0x25ed0e['on'](_0x2ac6b7(0x11a),_0x5bf66c=>{const _0x5df6b6=_0x2ac6b7;console[_0x5df6b6(0x106)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process[_0x5df6b6(0x11a)](_0x5bf66c||0x0);}),_0x25ed0e;}function cleanup(){const _0x4a5b99=a0_0x6195;serverProcess&&!serverProcess[_0x4a5b99(0x10c)]&&(console['log']('🛑\x20Stopping\x20server...'),serverProcess[_0x4a5b99(0xef)](_0x4a5b99(0x10b)),setTimeout(()=>{const _0xf3533a=_0x4a5b99;!serverProcess[_0xf3533a(0x10c)]&&serverProcess[_0xf3533a(0xef)](_0xf3533a(0xf7));},0x1388));}process['on']('SIGINT',()=>{const _0x27b957=a0_0x6195;console[_0x27b957(0x106)](_0x27b957(0xe7)),cleanup(),process[_0x27b957(0x11a)](0x0);}),process['on'](a0_0x2743e1(0x10b),()=>{const _0x53c2ca=a0_0x2743e1;console[_0x53c2ca(0x106)](_0x53c2ca(0xe9)),cleanup(),process[_0x53c2ca(0x11a)](0x0);}),process['on'](a0_0x2743e1(0x11a),()=>{cleanup();});async function main(){const _0x48e72d=a0_0x2743e1;console[_0x48e72d(0x106)](_0x48e72d(0x11b)),console[_0x48e72d(0x106)](_0x48e72d(0x107)),console[_0x48e72d(0x106)]('╚════════════════════════════════════════════════╝'),console[_0x48e72d(0x106)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x4b9793){console[_0x48e72d(0xf9)](_0x48e72d(0x114),_0x4b9793[_0x48e72d(0x109)]),cleanup(),process[_0x48e72d(0x11a)](0x1);}}function a0_0x5cbe(){const _0x46093b=['🖥️\x20\x20Starting\x20Terminal\x20UI...','Error\x20during\x20startup:','Server\x20returned\x20','🚀\x20Starting\x20Loxia\x20server...','get','5LWPZPG','36xCWaip','exit','╔════════════════════════════════════════════════╗','pipe','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','4111173fevhUX','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','stdout','destroy','2643024oYECjb','✅\x20Server\x20is\x20ready!','statusCode','kill','trim','ignore','1lGqFgP','toString','Server\x20exited\x20with\x20code\x20','Failed\x20to\x20start\x20server:','index.js','SIGKILL','ExperimentalWarning','error','326408ciPIxk','setTimeout','data','1750833glwrZl','src','233660suBGKb','/health','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','inherit','316346jnafwc','Timeout','1490517CWBJpk','log','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','63FqBEEU','message','[SERVER\x20ERROR]\x20','SIGTERM','killed','8knNStA','http://localhost:','bin','Failed\x20to\x20start\x20Terminal\x20UI:','[SERVER]\x20','stderr'];a0_0x5cbe=function(){return _0x46093b;};return a0_0x5cbe();}main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "Loxia AI Agents System - No-code/vibe-code/companion-coder platform",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0xe1d980=a0_0xdba0;(function(_0x1776c8,_0x505671){const _0x54df35=a0_0xdba0,_0x4e1f0e=_0x1776c8();while(!![]){try{const _0x553b11=-parseInt(_0x54df35(0x1f9))/0x1+-parseInt(_0x54df35(0x216))/0x2+-parseInt(_0x54df35(0x215))/0x3+parseInt(_0x54df35(0x22a))/0x4+parseInt(_0x54df35(0x1f1))/0x5+-parseInt(_0x54df35(0x220))/0x6*(-parseInt(_0x54df35(0x219))/0x7)+parseInt(_0x54df35(0x1fa))/0x8*(parseInt(_0x54df35(0x229))/0x9);if(_0x553b11===_0x505671)break;else _0x4e1f0e['push'](_0x4e1f0e['shift']());}catch(_0x4227c2){_0x4e1f0e['push'](_0x4e1f0e['shift']());}}}(a0_0x18e4,0x35ad2));import{exec}from'child_process';function a0_0x18e4(){const _0x9c1b7a=['═══════════════════════════════════════════════════════════','includes','--user','platform','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','headers','\x0a═══════════════════════════════════════════════════════════','44073IwDdyL','265248gJiBoc','pipe','dirname','\x0aYou\x20can\x20manually\x20install\x20scanners:','message','url','═══════════════════════════════════════════════════════════\x0a','semgrep\x20--version','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','/opt/homebrew','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','log','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','statusCode','\x20\x20Platform:\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','pip-audit','yamllint','\x20already\x20installed','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','72275mQwLhP','stdout','join','checkov','trim','python3\x20--version','promises','location','197634ufHSjj','968aBCGWJ','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','https','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','semgrep','python3','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','❌\x20Installation\x20failed:','startsWith','\x20\x20\x20Downloading\x20from\x20','🐍\x20Checking\x20Python\x20scanners...','bandit','error','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20pip\x20install\x20semgrep\x0a','exit','get','\x20\x20Installation\x20Complete','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','Failed\x20to\x20download:\x20HTTP\x20','node_modules','arch','eslint-plugin-security','967302dpogzK','231964PZKLZO','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20\x20\x20✅\x20Python\x20found:\x20','319557fRHCDy','chmod','\x20installed\x20successfully','then','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x20\x20Installing\x20Security\x20Scanners','/usr/local/Cellar','24hSkzQl'];a0_0x18e4=function(){return _0x9c1b7a;};return a0_0x18e4();}import{promisify}from'util';function a0_0xdba0(_0x1c19d9,_0x549514){_0x1c19d9=_0x1c19d9-0x1ec;const _0x18e432=a0_0x18e4();let _0xdba04d=_0x18e432[_0x1c19d9];return _0xdba04d;}import a0_0x560669 from'https';import a0_0x54ea6f from'http';import a0_0x66471f from'fs';import a0_0x4cc32a from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x4cc32a[a0_0xe1d980(0x22c)](__filename),SCANNER_DIR=a0_0x4cc32a[a0_0xe1d980(0x1f3)](__dirname,'..',a0_0xe1d980(0x212),'.scanners'),SEMGREP_VERSION=a0_0xe1d980(0x236);console['log'](a0_0xe1d980(0x221)),console[a0_0xe1d980(0x235)](a0_0xe1d980(0x21e)),console['log'](a0_0xe1d980(0x239)+process[a0_0xe1d980(0x224)]+'\x20('+process['arch']+')'),console['log'](a0_0xe1d980(0x230));async function installScanners(){const _0x265b08=a0_0xe1d980;await a0_0x66471f[_0x265b08(0x1f7)]['mkdir'](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x265b08(0x228)),console[_0x265b08(0x235)](_0x265b08(0x20e)),console[_0x265b08(0x235)](_0x265b08(0x230));}async function checkESLintSecurity(){const _0x2dc05d=a0_0xe1d980;console[_0x2dc05d(0x235)](_0x2dc05d(0x20f));try{await import(_0x2dc05d(0x214)),console[_0x2dc05d(0x235)](_0x2dc05d(0x202));}catch(_0x3bdbeb){console[_0x2dc05d(0x235)]('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x2dc05d(0x235)](_0x2dc05d(0x234));}}async function installSemgrep(){const _0x32e63d=a0_0xe1d980;console['log']('🔍\x20Installing\x20Semgrep...');const _0x1ec99a=process['platform'],_0x29a018=process[_0x32e63d(0x213)];try{const _0x28b576=await execAsync(_0x32e63d(0x231),{'timeout':0x1388});console[_0x32e63d(0x235)](_0x32e63d(0x217)+_0x28b576[_0x32e63d(0x1f2)][_0x32e63d(0x1f5)]()),console[_0x32e63d(0x235)](_0x32e63d(0x1ec));return;}catch(_0x3ba3fd){console[_0x32e63d(0x235)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x1dea9f=getSemgrepBinaryInfo(_0x1ec99a,_0x29a018);if(!_0x1dea9f){console[_0x32e63d(0x235)](_0x32e63d(0x1ff)+_0x1ec99a+'-'+_0x29a018),console[_0x32e63d(0x235)](_0x32e63d(0x21d));return;}try{const _0x543e7c=a0_0x4cc32a['join'](SCANNER_DIR,'semgrep');console[_0x32e63d(0x235)](_0x32e63d(0x205)+_0x1dea9f[_0x32e63d(0x22f)]+'...'),await downloadFile(_0x1dea9f[_0x32e63d(0x22f)],_0x543e7c),await a0_0x66471f[_0x32e63d(0x1f7)][_0x32e63d(0x21a)](_0x543e7c,0x1ed),console[_0x32e63d(0x235)](_0x32e63d(0x209)),console['log']('\x20\x20\x20Location:\x20'+_0x543e7c+'\x0a'),console['log'](_0x32e63d(0x1fd)),console[_0x32e63d(0x235)](_0x32e63d(0x20b));}catch(_0x406ecb){console[_0x32e63d(0x235)](_0x32e63d(0x237)+_0x406ecb[_0x32e63d(0x22e)]),console[_0x32e63d(0x235)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0x274213,_0x38aacc){return null;}async function installPythonScanners(){const _0x1cec4a=a0_0xe1d980;console[_0x1cec4a(0x235)](_0x1cec4a(0x206));let _0x28941c=null;try{await execAsync(_0x1cec4a(0x1f6),{'timeout':0x1388}),_0x28941c=_0x1cec4a(0x201);}catch(_0x391a45){try{await execAsync('python\x20--version',{'timeout':0x1388}),_0x28941c='python';}catch(_0x3b5452){console[_0x1cec4a(0x235)](_0x1cec4a(0x232)),console[_0x1cec4a(0x235)](_0x1cec4a(0x1fe)),console['log'](_0x1cec4a(0x226));return;}}console[_0x1cec4a(0x235)](_0x1cec4a(0x218)+_0x28941c),await installViaPip(_0x1cec4a(0x200),_0x28941c),await installViaPip(_0x1cec4a(0x207),_0x28941c),await installViaPip(_0x1cec4a(0x1ed),_0x28941c),await installViaPip(_0x1cec4a(0x1f4),_0x28941c),await installViaPip(_0x1cec4a(0x1ee),_0x28941c),console[_0x1cec4a(0x235)]('');}async function isHomebrewPython(_0x213cda){const _0x2495f3=a0_0xe1d980;try{const {stdout:_0x28e832}=await execAsync(_0x213cda+_0x2495f3(0x225),{'timeout':0x1388});return _0x28e832[_0x2495f3(0x222)](_0x2495f3(0x233))||_0x28e832[_0x2495f3(0x222)](_0x2495f3(0x21f));}catch{return![];}}async function installViaPip(_0x47bd87,_0x5214ce){const _0x85f596=a0_0xe1d980;try{const _0x2eb2cb=await execAsync(_0x5214ce+'\x20-m\x20pip\x20show\x20'+_0x47bd87,{'timeout':0x1388});return console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x1ef)),!![];}catch(_0x543ed3){console['log']('\x20\x20\x20Installing\x20'+_0x47bd87+'...');try{const _0x58b653=await isHomebrewPython(_0x5214ce),_0x23ec66=_0x58b653?'':_0x85f596(0x223),_0x2af1b9=(_0x5214ce+'\x20-m\x20pip\x20install\x20'+_0x23ec66+'\x20'+_0x47bd87)['replace'](/\s+/g,'\x20')[_0x85f596(0x1f5)]();return await execAsync(_0x2af1b9,{'timeout':0xea60}),console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x21b)),!![];}catch(_0x2ea39f){return console[_0x85f596(0x235)](_0x85f596(0x1fb)+_0x47bd87+':\x20'+_0x2ea39f[_0x85f596(0x22e)]),console[_0x85f596(0x235)](_0x85f596(0x1f0)+_0x47bd87),![];}}}async function downloadFile(_0x5effd4,_0x4d3db8){return new Promise((_0xe061c4,_0x7120a2)=>{const _0x1bee71=a0_0xdba0,_0x316da5=_0x5effd4[_0x1bee71(0x204)](_0x1bee71(0x1fc))?a0_0x560669:a0_0x54ea6f;_0x316da5[_0x1bee71(0x20d)](_0x5effd4,_0x4b4c2c=>{const _0x3d509b=_0x1bee71;if(_0x4b4c2c[_0x3d509b(0x238)]===0x12e||_0x4b4c2c['statusCode']===0x12d){downloadFile(_0x4b4c2c[_0x3d509b(0x227)][_0x3d509b(0x1f8)],_0x4d3db8)[_0x3d509b(0x21c)](_0xe061c4)['catch'](_0x7120a2);return;}if(_0x4b4c2c[_0x3d509b(0x238)]!==0xc8){_0x7120a2(new Error(_0x3d509b(0x211)+_0x4b4c2c[_0x3d509b(0x238)]));return;}const _0x52e180=createWriteStream(_0x4d3db8);_0x4b4c2c[_0x3d509b(0x22b)](_0x52e180),_0x52e180['on']('finish',()=>{_0x52e180['close'](),_0xe061c4();}),_0x52e180['on'](_0x3d509b(0x208),_0x5bd715=>{a0_0x66471f['unlink'](_0x4d3db8,()=>{}),_0x7120a2(_0x5bd715);});})['on'](_0x1bee71(0x208),_0x7120a2);});}installScanners()['catch'](_0x1ad224=>{const _0x3074c5=a0_0xe1d980;console[_0x3074c5(0x208)](_0x3074c5(0x203),_0x1ad224[_0x3074c5(0x22e)]),console[_0x3074c5(0x208)](_0x3074c5(0x22d)),console[_0x3074c5(0x208)](_0x3074c5(0x210)),console[_0x3074c5(0x208)](_0x3074c5(0x20a)),process[_0x3074c5(0x20c)](0x0);});
2
+ function a0_0x2b01(_0x414be2,_0xdd83d3){_0x414be2=_0x414be2-0xc1;const _0x383914=a0_0x3839();let _0x2b01a0=_0x383914[_0x414be2];return _0x2b01a0;}const a0_0x40f9f0=a0_0x2b01;(function(_0x2afe4d,_0x213248){const _0x42c4f6=a0_0x2b01,_0x5d0fc0=_0x2afe4d();while(!![]){try{const _0x2e427d=parseInt(_0x42c4f6(0xfb))/0x1*(-parseInt(_0x42c4f6(0x10a))/0x2)+-parseInt(_0x42c4f6(0xee))/0x3+-parseInt(_0x42c4f6(0xe2))/0x4+-parseInt(_0x42c4f6(0xc7))/0x5+parseInt(_0x42c4f6(0xcb))/0x6+parseInt(_0x42c4f6(0xf2))/0x7*(parseInt(_0x42c4f6(0xfc))/0x8)+parseInt(_0x42c4f6(0xce))/0x9*(parseInt(_0x42c4f6(0xec))/0xa);if(_0x2e427d===_0x213248)break;else _0x5d0fc0['push'](_0x5d0fc0['shift']());}catch(_0x36d4a3){_0x5d0fc0['push'](_0x5d0fc0['shift']());}}}(a0_0x3839,0xe6e17));import{exec}from'child_process';import{promisify}from'util';import a0_0x1b406d from'https';import a0_0x519d56 from'http';import a0_0x4894c4 from'fs';import a0_0x3680d8 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x3680d8['dirname'](__filename),SCANNER_DIR=a0_0x3680d8[a0_0x40f9f0(0xda)](__dirname,'..',a0_0x40f9f0(0x104),a0_0x40f9f0(0xdc)),SEMGREP_VERSION=a0_0x40f9f0(0x108);console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0xc8)),console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0xdb)),console['log'](a0_0x40f9f0(0xe7)+process['platform']+'\x20('+process['arch']+')'),console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0x103));async function installScanners(){const _0x144dd4=a0_0x40f9f0;await a0_0x4894c4['promises'][_0x144dd4(0xc2)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x144dd4(0x107)](_0x144dd4(0xde)),console[_0x144dd4(0x107)](_0x144dd4(0xd7)),console[_0x144dd4(0x107)](_0x144dd4(0x103));}async function checkESLintSecurity(){const _0x2c28e9=a0_0x40f9f0;console[_0x2c28e9(0x107)]('📦\x20Checking\x20ESLint\x20Security\x20Plugin...');try{await import(_0x2c28e9(0xca)),console['log'](_0x2c28e9(0xc5));}catch(_0x3ddc67){console['log']('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x2c28e9(0x107)](_0x2c28e9(0xd1));}}async function installSemgrep(){const _0x6675d9=a0_0x40f9f0;console[_0x6675d9(0x107)](_0x6675d9(0xed));const _0x1598b5=process[_0x6675d9(0xd6)],_0x5236e7=process[_0x6675d9(0xc9)];try{const _0x2921e9=await execAsync('semgrep\x20--version',{'timeout':0x1388});console[_0x6675d9(0x107)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x2921e9[_0x6675d9(0xd5)][_0x6675d9(0xe4)]()),console[_0x6675d9(0x107)](_0x6675d9(0xeb));return;}catch(_0x481e1b){console['log'](_0x6675d9(0xef));}const _0xab72c7=getSemgrepBinaryInfo(_0x1598b5,_0x5236e7);if(!_0xab72c7){console[_0x6675d9(0x107)](_0x6675d9(0xfd)+_0x1598b5+'-'+_0x5236e7),console['log']('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x2b0d31=a0_0x3680d8[_0x6675d9(0xda)](SCANNER_DIR,_0x6675d9(0xe3));console[_0x6675d9(0x107)](_0x6675d9(0x102)+_0xab72c7[_0x6675d9(0xcd)]+'...'),await downloadFile(_0xab72c7['url'],_0x2b0d31),await a0_0x4894c4[_0x6675d9(0xe5)][_0x6675d9(0xfa)](_0x2b0d31,0x1ed),console[_0x6675d9(0x107)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x6675d9(0x107)]('\x20\x20\x20Location:\x20'+_0x2b0d31+'\x0a'),console['log']('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console[_0x6675d9(0x107)](_0x6675d9(0xff));}catch(_0x534b51){console['log'](_0x6675d9(0xf9)+_0x534b51['message']),console[_0x6675d9(0x107)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0xfd1399,_0x3b90a9){return null;}function a0_0x3839(){const _0x35c36e=['\x20\x20Platform:\x20','startsWith','\x20installed\x20successfully','\x20\x20\x20✅\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','23329710yzTZuu','🔍\x20Installing\x20Semgrep...','3758622NOrfsD','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','bandit','python3','7779191OTXKUf','headers','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','yamllint','get','/opt/homebrew','--user','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','chmod','55wKEVjR','8HmHrGw','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20pip\x20install\x20semgrep\x0a','error','python3\x20--version','\x20\x20\x20Downloading\x20from\x20','═══════════════════════════════════════════════════════════\x0a','node_modules','catch','...','log','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','25502PwbAUt','includes','python\x20--version','mkdir','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','statusCode','645365OUaIuY','═══════════════════════════════════════════════════════════','arch','eslint-plugin-security','2074140NtDuTl','unlink','url','9dyqxjS','Failed\x20to\x20download:\x20HTTP\x20','\x20already\x20installed','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','close','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','message','stdout','platform','\x20\x20Installation\x20Complete','🐍\x20Checking\x20Python\x20scanners...','\x20-m\x20pip\x20show\x20','join','\x20\x20Installing\x20Security\x20Scanners','.scanners','\x20\x20\x20Installing\x20','\x0a═══════════════════════════════════════════════════════════','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','exit','finish','3044140QxaWpo','semgrep','trim','promises','pip-audit'];a0_0x3839=function(){return _0x35c36e;};return a0_0x3839();}async function installPythonScanners(){const _0x5ae26e=a0_0x40f9f0;console[_0x5ae26e(0x107)](_0x5ae26e(0xd8));let _0x8a8eae=null;try{await execAsync(_0x5ae26e(0x101),{'timeout':0x1388}),_0x8a8eae=_0x5ae26e(0xf1);}catch(_0x5ec49e){try{await execAsync(_0x5ae26e(0xc1),{'timeout':0x1388}),_0x8a8eae='python';}catch(_0x1a4a2a){console[_0x5ae26e(0x107)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0x5ae26e(0x107)](_0x5ae26e(0xfe)),console[_0x5ae26e(0x107)](_0x5ae26e(0xc4));return;}}console[_0x5ae26e(0x107)]('\x20\x20\x20✅\x20Python\x20found:\x20'+_0x8a8eae),await installViaPip(_0x5ae26e(0xe3),_0x8a8eae),await installViaPip(_0x5ae26e(0xf0),_0x8a8eae),await installViaPip(_0x5ae26e(0xe6),_0x8a8eae),await installViaPip('checkov',_0x8a8eae),await installViaPip(_0x5ae26e(0xf5),_0x8a8eae),console[_0x5ae26e(0x107)]('');}async function isHomebrewPython(_0x486606){const _0x12366b=a0_0x40f9f0;try{const {stdout:_0x28fd20}=await execAsync(_0x486606+_0x12366b(0xdf),{'timeout':0x1388});return _0x28fd20[_0x12366b(0x10b)](_0x12366b(0xf7))||_0x28fd20[_0x12366b(0x10b)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x2b9b70,_0x24ed1a){const _0x458a74=a0_0x40f9f0;try{const _0x289a0d=await execAsync(_0x24ed1a+_0x458a74(0xd9)+_0x2b9b70,{'timeout':0x1388});return console['log']('\x20\x20\x20✅\x20'+_0x2b9b70+_0x458a74(0xd0)),!![];}catch(_0x1147eb){console['log'](_0x458a74(0xdd)+_0x2b9b70+_0x458a74(0x106));try{const _0x465c11=await isHomebrewPython(_0x24ed1a),_0x2ddddd=_0x465c11?'':_0x458a74(0xf8),_0x2f462c=(_0x24ed1a+'\x20-m\x20pip\x20install\x20'+_0x2ddddd+'\x20'+_0x2b9b70)['replace'](/\s+/g,'\x20')[_0x458a74(0xe4)]();return await execAsync(_0x2f462c,{'timeout':0xea60}),console[_0x458a74(0x107)](_0x458a74(0xea)+_0x2b9b70+_0x458a74(0xe9)),!![];}catch(_0x226af3){return console['log'](_0x458a74(0x109)+_0x2b9b70+':\x20'+_0x226af3[_0x458a74(0xd4)]),console[_0x458a74(0x107)](_0x458a74(0xf4)+_0x2b9b70),![];}}}async function downloadFile(_0x49e21d,_0x447985){return new Promise((_0x131087,_0x477279)=>{const _0x4fb9d0=a0_0x2b01,_0x1ed955=_0x49e21d[_0x4fb9d0(0xe8)]('https')?a0_0x1b406d:a0_0x519d56;_0x1ed955[_0x4fb9d0(0xf6)](_0x49e21d,_0x2a574a=>{const _0x583367=_0x4fb9d0;if(_0x2a574a['statusCode']===0x12e||_0x2a574a[_0x583367(0xc6)]===0x12d){downloadFile(_0x2a574a[_0x583367(0xf3)]['location'],_0x447985)['then'](_0x131087)[_0x583367(0x105)](_0x477279);return;}if(_0x2a574a[_0x583367(0xc6)]!==0xc8){_0x477279(new Error(_0x583367(0xcf)+_0x2a574a[_0x583367(0xc6)]));return;}const _0x442578=createWriteStream(_0x447985);_0x2a574a['pipe'](_0x442578),_0x442578['on'](_0x583367(0xe1),()=>{const _0x47231a=_0x583367;_0x442578[_0x47231a(0xd2)](),_0x131087();}),_0x442578['on'](_0x583367(0x100),_0xedb219=>{const _0x35b9f6=_0x583367;a0_0x4894c4[_0x35b9f6(0xcc)](_0x447985,()=>{}),_0x477279(_0xedb219);});})['on']('error',_0x477279);});}installScanners()['catch'](_0x3c9ad2=>{const _0x5e4176=a0_0x40f9f0;console[_0x5e4176(0x100)]('❌\x20Installation\x20failed:',_0x3c9ad2[_0x5e4176(0xd4)]),console[_0x5e4176(0x100)]('\x0aYou\x20can\x20manually\x20install\x20scanners:'),console[_0x5e4176(0x100)](_0x5e4176(0xd3)),console[_0x5e4176(0x100)](_0x5e4176(0xc3)),process[_0x5e4176(0xe0)](0x0);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function a0_0x5e3b(){const _0x428527=['slice','win32','argv','147bYDwij','63SDFpiB','path','unref','toISOString','ms\x20before\x20restart...','message','--pid','\x20still\x20running\x20after\x20','join','ignore','5762580ZdMcLL','[Watchdog]\x20Parent\x20process\x20','command','pid','split','[Watchdog]\x20Error:\x20','963804tGoLCl','ms,\x20proceeding\x20anyway','\x20has\x20terminated','6198GaVMow','delay','334072FmTrLe','exit','948084djVikT','[Watchdog]\x20Executing:\x20','[Watchdog]\x20Started\x20with\x20options:','141293IsbGdZ','[Watchdog]\x20Waiting\x20','appendFileSync','4854510JYLlci','loxia\x20web','log','\x20to\x20exit...','catch','now','10opzgbQ','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','platform','--command'];a0_0x5e3b=function(){return _0x428527;};return a0_0x5e3b();}const a0_0x16a350=a0_0xfbf3;(function(_0x408048,_0x3fe22c){const _0x33746a=a0_0xfbf3,_0x3d6ae6=_0x408048();while(!![]){try{const _0x3839be=parseInt(_0x33746a(0xb8))/0x1+parseInt(_0x33746a(0xb1))/0x2*(parseInt(_0x33746a(0x9d))/0x3)+-parseInt(_0x33746a(0xae))/0x4*(-parseInt(_0x33746a(0xc1))/0x5)+-parseInt(_0x33746a(0xb5))/0x6+parseInt(_0x33746a(0x9e))/0x7*(-parseInt(_0x33746a(0xb3))/0x8)+-parseInt(_0x33746a(0xbb))/0x9+parseInt(_0x33746a(0xa8))/0xa;if(_0x3839be===_0x3fe22c)break;else _0x3d6ae6['push'](_0x3d6ae6['shift']());}catch(_0x4e55b4){_0x3d6ae6['push'](_0x3d6ae6['shift']());}}}(a0_0x5e3b,0x43e35));const {spawn,execSync}=require('child_process'),path=require(a0_0x16a350(0x9f)),fs=require('fs'),logFile=path[a0_0x16a350(0xa6)](__dirname,'watchdog.log');function log(_0x3b48e1){const _0x3163a6=a0_0x16a350,_0x247819=new Date()[_0x3163a6(0xa1)](),_0x24681f='['+_0x247819+']\x20'+_0x3b48e1+'\x0a';console[_0x3163a6(0xbd)](_0x3b48e1);try{fs[_0x3163a6(0xba)](logFile,_0x24681f);}catch(_0x1936f6){}}log('[Watchdog]\x20Script\x20loaded');function parseArgs(){const _0x1a2a83=a0_0x16a350,_0x29f297=process[_0x1a2a83(0x9c)][_0x1a2a83(0xc5)](0x2),_0x126ffe={'delay':0x1388,'command':_0x1a2a83(0xbc),'pid':null};for(let _0x56ae80=0x0;_0x56ae80<_0x29f297['length'];_0x56ae80++){switch(_0x29f297[_0x56ae80]){case'--delay':_0x126ffe[_0x1a2a83(0xb2)]=parseInt(_0x29f297[++_0x56ae80],0xa)||0x1388;break;case _0x1a2a83(0xc4):_0x126ffe[_0x1a2a83(0xaa)]=_0x29f297[++_0x56ae80]||_0x1a2a83(0xbc);break;case _0x1a2a83(0xa4):_0x126ffe[_0x1a2a83(0xab)]=parseInt(_0x29f297[++_0x56ae80],0xa)||null;break;}}return _0x126ffe;}function a0_0xfbf3(_0x6f8dd6,_0x2aa5c6){_0x6f8dd6=_0x6f8dd6-0x9c;const _0x5e3b14=a0_0x5e3b();let _0xfbf38d=_0x5e3b14[_0x6f8dd6];return _0xfbf38d;}function isProcessRunning(_0x4412e6){try{return process['kill'](_0x4412e6,0x0),!![];}catch(_0x5bd975){return![];}}async function waitForParentExit(_0x214a39,_0x57667d=0x7530){const _0x47a97d=a0_0x16a350;if(!_0x214a39)return;const _0x378218=Date[_0x47a97d(0xc0)]();while(isProcessRunning(_0x214a39)){if(Date['now']()-_0x378218>_0x57667d){log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xa5)+_0x57667d+_0x47a97d(0xaf));return;}await new Promise(_0x41273e=>setTimeout(_0x41273e,0x1f4));}log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xb0));}async function main(){const _0x327db8=a0_0x16a350,_0x1504a5=parseArgs();log(_0x327db8(0xb7),{'delay':_0x1504a5[_0x327db8(0xb2)],'command':_0x1504a5[_0x327db8(0xaa)],'pid':_0x1504a5[_0x327db8(0xab)]});_0x1504a5[_0x327db8(0xab)]&&(log(_0x327db8(0xc2)+_0x1504a5[_0x327db8(0xab)]+_0x327db8(0xbe)),await waitForParentExit(_0x1504a5[_0x327db8(0xab)]));log(_0x327db8(0xb9)+_0x1504a5[_0x327db8(0xb2)]+_0x327db8(0xa2)),await new Promise(_0x2caa62=>setTimeout(_0x2caa62,_0x1504a5[_0x327db8(0xb2)]));const _0x5b4d96=_0x1504a5[_0x327db8(0xaa)][_0x327db8(0xac)]('\x20'),_0x4326a8=_0x5b4d96[0x0],_0x24c8df=_0x5b4d96['slice'](0x1);log(_0x327db8(0xb6)+_0x4326a8+'\x20'+_0x24c8df[_0x327db8(0xa6)]('\x20'));const _0x336a4f=process[_0x327db8(0xc3)]===_0x327db8(0xc6),_0xe45af7=spawn(_0x4326a8,_0x24c8df,{'detached':!![],'stdio':_0x327db8(0xa7),'shell':!![],'windowsHide':![]});_0xe45af7[_0x327db8(0xa0)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0xe45af7[_0x327db8(0xab)]),log('[Watchdog]\x20Watchdog\x20exiting...'),setTimeout(()=>process['exit'](0x0),0x3e8);}main()[a0_0x16a350(0xbf)](_0x2a796a=>{const _0x30efe6=a0_0x16a350;log(_0x30efe6(0xad)+_0x2a796a[_0x30efe6(0xa3)]),process[_0x30efe6(0xb4)](0x1);});
2
+ function a0_0x1c22(_0x410e78,_0x131bed){_0x410e78=_0x410e78-0xd4;const _0x515849=a0_0x5158();let _0x1c22a0=_0x515849[_0x410e78];return _0x1c22a0;}const a0_0x366c75=a0_0x1c22;(function(_0x2e05e1,_0x387c48){const _0x1ca94f=a0_0x1c22,_0xba7aca=_0x2e05e1();while(!![]){try{const _0x56a035=-parseInt(_0x1ca94f(0xd6))/0x1+-parseInt(_0x1ca94f(0xd9))/0x2*(parseInt(_0x1ca94f(0xec))/0x3)+parseInt(_0x1ca94f(0xd8))/0x4*(parseInt(_0x1ca94f(0xf4))/0x5)+parseInt(_0x1ca94f(0xe8))/0x6+-parseInt(_0x1ca94f(0xdc))/0x7*(-parseInt(_0x1ca94f(0xfd))/0x8)+parseInt(_0x1ca94f(0xd4))/0x9*(-parseInt(_0x1ca94f(0xe6))/0xa)+parseInt(_0x1ca94f(0xfc))/0xb*(parseInt(_0x1ca94f(0xd5))/0xc);if(_0x56a035===_0x387c48)break;else _0xba7aca['push'](_0xba7aca['shift']());}catch(_0x290d4d){_0xba7aca['push'](_0xba7aca['shift']());}}}(a0_0x5158,0xbd1eb));const {spawn,execSync}=require('child_process'),path=require(a0_0x366c75(0xda)),fs=require('fs'),logFile=path[a0_0x366c75(0xe4)](__dirname,a0_0x366c75(0xf2));function log(_0x11cf66){const _0x3ef3b4=a0_0x366c75,_0xd26f86=new Date()['toISOString'](),_0x96823='['+_0xd26f86+']\x20'+_0x11cf66+'\x0a';console[_0x3ef3b4(0xee)](_0x11cf66);try{fs[_0x3ef3b4(0xe3)](logFile,_0x96823);}catch(_0xd7881b){}}log('[Watchdog]\x20Script\x20loaded');function a0_0x5158(){const _0x2d68ce=['\x20still\x20running\x20after\x20','platform','now','catch','784454BhDsKK','16bVrZov','--command','[Watchdog]\x20Parent\x20process\x20','--pid','5651766fQZQpe','276TFLeTX','837769Cvduii','ms\x20before\x20restart...','4jfnnuj','5278OltxQV','path','exit','432026rsXbCF','unref','message','[Watchdog]\x20Waiting\x20','delay','loxia\x20web','split','appendFileSync','join','ms,\x20proceeding\x20anyway','20EeAxiO','\x20to\x20exit...','4352508mlaGyC','[Watchdog]\x20Started\x20with\x20options:','command','[Watchdog]\x20Error:\x20','1257lSFZoZ','[Watchdog]\x20Executing:\x20','log','\x20has\x20terminated','slice','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','watchdog.log','pid','7425085aAHAyJ','[Watchdog]\x20Watchdog\x20exiting...','kill','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'];a0_0x5158=function(){return _0x2d68ce;};return a0_0x5158();}function parseArgs(){const _0x2cc264=a0_0x366c75,_0x2fbac9=process['argv'][_0x2cc264(0xf0)](0x2),_0x366ad6={'delay':0x1388,'command':'loxia\x20web','pid':null};for(let _0x493faf=0x0;_0x493faf<_0x2fbac9['length'];_0x493faf++){switch(_0x2fbac9[_0x493faf]){case'--delay':_0x366ad6[_0x2cc264(0xe0)]=parseInt(_0x2fbac9[++_0x493faf],0xa)||0x1388;break;case _0x2cc264(0xfe):_0x366ad6[_0x2cc264(0xea)]=_0x2fbac9[++_0x493faf]||_0x2cc264(0xe1);break;case _0x2cc264(0x100):_0x366ad6['pid']=parseInt(_0x2fbac9[++_0x493faf],0xa)||null;break;}}return _0x366ad6;}function isProcessRunning(_0x2e7f0e){const _0x428140=a0_0x366c75;try{return process[_0x428140(0xf6)](_0x2e7f0e,0x0),!![];}catch(_0x5eb534){return![];}}async function waitForParentExit(_0x37a9bd,_0x4526f1=0x7530){const _0x4852b6=a0_0x366c75;if(!_0x37a9bd)return;const _0x1bbaa5=Date[_0x4852b6(0xfa)]();while(isProcessRunning(_0x37a9bd)){if(Date[_0x4852b6(0xfa)]()-_0x1bbaa5>_0x4526f1){log(_0x4852b6(0xff)+_0x37a9bd+_0x4852b6(0xf8)+_0x4526f1+_0x4852b6(0xe5));return;}await new Promise(_0x498d43=>setTimeout(_0x498d43,0x1f4));}log(_0x4852b6(0xff)+_0x37a9bd+_0x4852b6(0xef));}async function main(){const _0x429daa=a0_0x366c75,_0x344b4f=parseArgs();log(_0x429daa(0xe9),{'delay':_0x344b4f[_0x429daa(0xe0)],'command':_0x344b4f['command'],'pid':_0x344b4f[_0x429daa(0xf3)]});_0x344b4f[_0x429daa(0xf3)]&&(log(_0x429daa(0xf1)+_0x344b4f[_0x429daa(0xf3)]+_0x429daa(0xe7)),await waitForParentExit(_0x344b4f[_0x429daa(0xf3)]));log(_0x429daa(0xdf)+_0x344b4f[_0x429daa(0xe0)]+_0x429daa(0xd7)),await new Promise(_0x1267ef=>setTimeout(_0x1267ef,_0x344b4f[_0x429daa(0xe0)]));const _0x28e579=_0x344b4f[_0x429daa(0xea)][_0x429daa(0xe2)]('\x20'),_0x256d6d=_0x28e579[0x0],_0x331e2a=_0x28e579[_0x429daa(0xf0)](0x1);log(_0x429daa(0xed)+_0x256d6d+'\x20'+_0x331e2a[_0x429daa(0xe4)]('\x20'));const _0x515266=process[_0x429daa(0xf9)]==='win32',_0x259974=spawn(_0x256d6d,_0x331e2a,{'detached':!![],'stdio':'ignore','shell':!![],'windowsHide':![]});_0x259974[_0x429daa(0xdd)](),log(_0x429daa(0xf7)+_0x259974[_0x429daa(0xf3)]),log(_0x429daa(0xf5)),setTimeout(()=>process[_0x429daa(0xdb)](0x0),0x3e8);}main()[a0_0x366c75(0xfb)](_0x4d1859=>{const _0x9e59c=a0_0x366c75;log(_0x9e59c(0xeb)+_0x4d1859[_0x9e59c(0xde)]),process[_0x9e59c(0xdb)](0x1);});
@@ -1 +1 @@
1
- function a0_0x490b(_0x143adb,_0x195bd3){_0x143adb=_0x143adb-0x122;const _0x4e7a2c=a0_0x4e7a();let _0x490b74=_0x4e7a2c[_0x143adb];if(a0_0x490b['iTWiqF']===undefined){var _0x488037=function(_0x43e621){const _0x5cddbb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x391660='',_0x6dab52='';for(let _0x4f3faa=0x0,_0x49f72b,_0x4c7bb8,_0x8b9e45=0x0;_0x4c7bb8=_0x43e621['charAt'](_0x8b9e45++);~_0x4c7bb8&&(_0x49f72b=_0x4f3faa%0x4?_0x49f72b*0x40+_0x4c7bb8:_0x4c7bb8,_0x4f3faa++%0x4)?_0x391660+=String['fromCharCode'](0xff&_0x49f72b>>(-0x2*_0x4f3faa&0x6)):0x0){_0x4c7bb8=_0x5cddbb['indexOf'](_0x4c7bb8);}for(let _0x206fac=0x0,_0x55c3b3=_0x391660['length'];_0x206fac<_0x55c3b3;_0x206fac++){_0x6dab52+='%'+('00'+_0x391660['charCodeAt'](_0x206fac)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x6dab52);};a0_0x490b['LKgKXM']=_0x488037,a0_0x490b['fdjfPb']={},a0_0x490b['iTWiqF']=!![];}const _0x103c46=_0x4e7a2c[0x0],_0x7b4e63=_0x143adb+_0x103c46,_0x143a5a=a0_0x490b['fdjfPb'][_0x7b4e63];return!_0x143a5a?(_0x490b74=a0_0x490b['LKgKXM'](_0x490b74),a0_0x490b['fdjfPb'][_0x7b4e63]=_0x490b74):_0x490b74=_0x143a5a,_0x490b74;}const a0_0x2d3683=a0_0x490b;function a0_0x4e7a(){const _0x3a29f2=['zM9Y','zgv0zwn0tgfUz3vHz2u','q0furuDpuLK','C2v2zxjPDhK','l15JDxn0B20TlW','zxjYB3i','zg91yMXL','BM8TAw52ywXPza','BgvUz3rO','Aw5JBhvKzxm','mty3m1zczvnRzq','Cg9ZDgnZCY1SzxnZ','q1ntigfUywX5C2LZigzHAwXLza','BgvZCW','mZyYnde3nfLoyLnuEG','yw5HBhL6zq','zM9YBwf0ug9ZDentu0vYCM9Y','u0vwrvjjvfK','Cg9ZDgnZCY1Zy3nZ','Dw5RBM93BG','BgLUzq','ntiYnJrQyKfsDuG','v0fstKLorW','rvjst1i','mZiZmZeZmvnsBfvzrW','zxH0zw5K','y29UDgvUDa','C3vWCg9YDhnbDxrVrML4','D2fYBMLUz3m','Cg9ZDgnZCW','Dgv4Da','C3r5BgvSAw50','ChvZAa','zMLSDgvY','zgvMyxvSDa','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','Cg9ZDgnZC0XLC3m','C2nZCW','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CMvZDwX0CW','ChjVy2vZCW','Bg9Nz2vY','mteYmZu2nKXewfrYqq','Cg9ZDgnZC1nJC3m','ndbMuMTAtMu','ntqXnZG1tLvkuhHX','nJq4ogzkCMrYta','Dg9mB3DLCKnHC2u','zM9YD2fYza','q3nZu3LUDgf4rxjYB3i','nda5nwreCfHTsa','zgvIDwC','lMnZCW','y2HLy2TtEw50yxG','u1Lovefy','zwfJAa','zw5KC1DPDgG','CgX1z2LU','mZy5mdaWow50wuTpra','BgLUDfn0EwXLCW','BM8Tzw1WDhK','CNvSzq','BwvZC2fNzq','nMjRBNDwsG'];a0_0x4e7a=function(){return _0x3a29f2;};return a0_0x4e7a();}(function(_0xc0e69a,_0x2c1586){const _0x5f63eb=a0_0x490b,_0x3b9063=_0xc0e69a();while(!![]){try{const _0x576077=parseInt(_0x5f63eb(0x135))/0x1*(parseInt(_0x5f63eb(0x147))/0x2)+parseInt(_0x5f63eb(0x132))/0x3+parseInt(_0x5f63eb(0x136))/0x4*(-parseInt(_0x5f63eb(0x13a))/0x5)+-parseInt(_0x5f63eb(0x156))/0x6+parseInt(_0x5f63eb(0x152))/0x7*(parseInt(_0x5f63eb(0x15d))/0x8)+parseInt(_0x5f63eb(0x142))/0x9+-parseInt(_0x5f63eb(0x134))/0xa*(parseInt(_0x5f63eb(0x160))/0xb);if(_0x576077===_0x2c1586)break;else _0x3b9063['push'](_0x3b9063['shift']());}catch(_0x41fde1){_0x3b9063['push'](_0x3b9063['shift']());}}}(a0_0x4e7a,0xd2b9e));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x391660=null){const _0x532fcd=a0_0x490b;this[_0x532fcd(0x131)]=_0x391660,this['stylelint']=null,this[_0x532fcd(0x125)]=null,this[_0x532fcd(0x133)]=null,this['postcssLess']=null;}async[a0_0x2d3683(0x157)](_0x6dab52,_0x4f3faa,_0x49f72b={}){const _0x557067=a0_0x2d3683;try{const _0x4c7bb8=[],_0x8b9e45=this['detectLanguage'](_0x6dab52),_0x206fac=await this[_0x557067(0x13d)](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8['push'](..._0x206fac);if(_0x206fac[_0x557067(0x150)]===0x0){const _0x55c3b3=await this['lintStyles'](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8[_0x557067(0x128)](..._0x55c3b3);}return this[_0x557067(0x131)]?.[_0x557067(0x13b)]('CSS\x20analysis\x20completed',{'file':_0x6dab52,'language':_0x8b9e45,'totalDiagnostics':_0x4c7bb8[_0x557067(0x150)],'errors':_0x4c7bb8[_0x557067(0x129)](_0x1c8209=>_0x1c8209[_0x557067(0x14b)]===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x4c7bb8[_0x557067(0x129)](_0x4408b7=>_0x4408b7['severity']===STATIC_ANALYSIS['SEVERITY'][_0x557067(0x15e)])[_0x557067(0x150)]}),_0x4c7bb8;}catch(_0x5954c1){return this[_0x557067(0x131)]?.['error'](_0x557067(0x154),{'file':_0x6dab52,'error':_0x5954c1[_0x557067(0x146)]}),[];}}async[a0_0x2d3683(0x13d)](_0x4dca6b,_0x10b524,_0x14e7ae){const _0x10942b=a0_0x2d3683,_0x585616=[];try{if(!this[_0x10942b(0x125)]){const _0x24a452=await import(_0x10942b(0x125));this['postcss']=_0x24a452[_0x10942b(0x12a)];}let _0x182bf8=null;if(_0x14e7ae==='scss'){if(!this['postcssScss']){const _0x2b3a76=await import('postcss-scss');this['postcssScss']=_0x2b3a76['default'];}_0x182bf8=this[_0x10942b(0x133)];}else{if(_0x14e7ae==='less'){if(!this['postcssLess']){const _0x2add54=await import(_0x10942b(0x153));this[_0x10942b(0x12c)]=_0x2add54[_0x10942b(0x12a)];}_0x182bf8=this[_0x10942b(0x12c)];}}const _0x2ec3b8=this[_0x10942b(0x125)]()[_0x10942b(0x130)](_0x10b524,{'from':_0x4dca6b,'syntax':_0x182bf8}),_0x5d3885=_0x2ec3b8['root'];this['logger']?.[_0x10942b(0x13b)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x4dca6b});}catch(_0x1666f8){const _0x2c4a29=this['formatPostCSSError'](_0x1666f8,_0x4dca6b);_0x2c4a29&&_0x585616['push'](_0x2c4a29);}return _0x585616;}async[a0_0x2d3683(0x143)](_0x10e53e,_0x4a1fff,_0x10a1d1){const _0x42705a=a0_0x2d3683,_0x2ddf41=[];try{if(!this[_0x42705a(0x127)]){const _0x3b99a1=await import('stylelint');this['stylelint']=_0x3b99a1['default'];}const _0x4c16a5={'extends':[_0x42705a(0x12e)],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x42705a(0x14c),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x10a1d1==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0x42705a(0x161),'if','else',_0x42705a(0x148),_0x42705a(0x13f),'while','function','return',_0x42705a(0x122),'use',_0x42705a(0x138)]}]:_0x10a1d1===_0x42705a(0x155)?[!![],{'ignoreAtRules':[_0x42705a(0x141)]}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x42705a(0x14e),'selector-type-case':'lower'},'customSyntax':_0x10a1d1==='scss'?_0x42705a(0x15a):_0x10a1d1==='less'?_0x42705a(0x153):undefined},_0x225e0e=await this['stylelint']['lint']({'code':_0x4a1fff,'codeFilename':_0x10e53e,'config':_0x4c16a5});if(_0x225e0e[_0x42705a(0x12f)]&&_0x225e0e['results'][_0x42705a(0x150)]>0x0){const _0x53a4dc=_0x225e0e['results'][0x0];if(_0x53a4dc[_0x42705a(0x124)])for(const _0x4d7b6d of _0x53a4dc['warnings']){_0x2ddf41[_0x42705a(0x128)]({'file':_0x10e53e,'line':_0x4d7b6d[_0x42705a(0x15c)]||0x1,'column':_0x4d7b6d['column']||0x1,'severity':_0x4d7b6d[_0x42705a(0x14b)]===_0x42705a(0x14d)?STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15f)]:STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15e)],'rule':_0x4d7b6d['rule']||_0x42705a(0x15b),'message':_0x4d7b6d[_0x42705a(0x126)],'category':this[_0x42705a(0x12b)](_0x4d7b6d[_0x42705a(0x145)]),'fixable':![],'source':'stylelint'});}}}catch(_0x3ca870){this['logger']?.['warn']('Stylelint\x20analysis\x20failed',{'file':_0x10e53e,'error':_0x3ca870['message']});}return _0x2ddf41;}[a0_0x2d3683(0x158)](_0x3b46eb,_0xc46b84){const _0x1f03d5=a0_0x2d3683;return{'file':_0xc46b84,'line':_0x3b46eb['line']||0x1,'column':_0x3b46eb['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x3b46eb['name']||_0x1f03d5(0x139),'message':_0x3b46eb['reason']||_0x3b46eb['message'],'category':STATIC_ANALYSIS[_0x1f03d5(0x14a)]['SYNTAX'],'fixable':![],'source':_0x1f03d5(0x125),'code':_0x3b46eb['source']||undefined};}[a0_0x2d3683(0x12b)](_0x27dd9b){const _0x2789a2=a0_0x2d3683;if(!_0x27dd9b)return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];const _0x4fa650=_0x27dd9b[_0x2789a2(0x137)]();if(_0x4fa650['includes'](_0x2789a2(0x14f))||_0x4fa650['includes']('no-unknown')||_0x4fa650[_0x2789a2(0x151)](_0x2789a2(0x144))||_0x4fa650['includes']('syntax'))return STATIC_ANALYSIS[_0x2789a2(0x14a)][_0x2789a2(0x13e)];if(_0x4fa650[_0x2789a2(0x151)]('performance')||_0x4fa650['includes']('optimize'))return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x4fa650['includes']('best-practice')||_0x4fa650[_0x2789a2(0x151)]('recommended'))return STATIC_ANALYSIS[_0x2789a2(0x14a)]['BEST_PRACTICE'];return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];}[a0_0x2d3683(0x149)](_0x2c676e){const _0x14d1ac=a0_0x2d3683,_0xf563c1=_0x2c676e['toLowerCase']();if(_0xf563c1['endsWith']('.scss')||_0xf563c1[_0x14d1ac(0x140)]('.sass'))return _0x14d1ac(0x12d);if(_0xf563c1[_0x14d1ac(0x140)]('.less'))return'less';return'css';}['getSupportedExtensions'](){const _0x48c4ae=a0_0x2d3683;return[_0x48c4ae(0x13c),'.scss','.sass','.less'];}[a0_0x2d3683(0x123)](){return![];}}export default CSSAnalyzer;
1
+ const a0_0x18183f=a0_0x103c;(function(_0x1ca7c9,_0x480ac7){const _0x4d922c=a0_0x103c,_0xf8bd51=_0x1ca7c9();while(!![]){try{const _0xe2b89d=parseInt(_0x4d922c(0x138))/0x1+parseInt(_0x4d922c(0x123))/0x2*(parseInt(_0x4d922c(0x112))/0x3)+parseInt(_0x4d922c(0x120))/0x4*(-parseInt(_0x4d922c(0x12f))/0x5)+-parseInt(_0x4d922c(0x137))/0x6+-parseInt(_0x4d922c(0x10e))/0x7+-parseInt(_0x4d922c(0x12a))/0x8*(parseInt(_0x4d922c(0x12e))/0x9)+parseInt(_0x4d922c(0x109))/0xa;if(_0xe2b89d===_0x480ac7)break;else _0xf8bd51['push'](_0xf8bd51['shift']());}catch(_0x14fb75){_0xf8bd51['push'](_0xf8bd51['shift']());}}}(a0_0x4ce4,0xd926a));function a0_0x103c(_0x3f536f,_0x383b50){_0x3f536f=_0x3f536f-0x101;const _0x4ce4a0=a0_0x4ce4();let _0x103cf1=_0x4ce4a0[_0x3f536f];if(a0_0x103c['dXiyqH']===undefined){var _0x23c54f=function(_0x1a94c0){const _0x17cfb2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x302c2b='',_0x111efa='';for(let _0x44c717=0x0,_0x419f86,_0x12810d,_0x51b477=0x0;_0x12810d=_0x1a94c0['charAt'](_0x51b477++);~_0x12810d&&(_0x419f86=_0x44c717%0x4?_0x419f86*0x40+_0x12810d:_0x12810d,_0x44c717++%0x4)?_0x302c2b+=String['fromCharCode'](0xff&_0x419f86>>(-0x2*_0x44c717&0x6)):0x0){_0x12810d=_0x17cfb2['indexOf'](_0x12810d);}for(let _0x436e8e=0x0,_0x3bbe0e=_0x302c2b['length'];_0x436e8e<_0x3bbe0e;_0x436e8e++){_0x111efa+='%'+('00'+_0x302c2b['charCodeAt'](_0x436e8e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x111efa);};a0_0x103c['Fhzcbn']=_0x23c54f,a0_0x103c['ajUmvs']={},a0_0x103c['dXiyqH']=!![];}const _0x34a9ec=_0x4ce4a0[0x0],_0x7fc722=_0x3f536f+_0x34a9ec,_0x5ec253=a0_0x103c['ajUmvs'][_0x7fc722];return!_0x5ec253?(_0x103cf1=a0_0x103c['Fhzcbn'](_0x103cf1),a0_0x103c['ajUmvs'][_0x7fc722]=_0x103cf1):_0x103cf1=_0x5ec253,_0x103cf1;}import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x302c2b=null){const _0x3ae2ab=a0_0x103c;this[_0x3ae2ab(0x13e)]=_0x302c2b,this[_0x3ae2ab(0x11f)]=null,this[_0x3ae2ab(0x101)]=null,this['postcssScss']=null,this['postcssLess']=null;}async['analyze'](_0x111efa,_0x44c717,_0x419f86={}){const _0x4aa808=a0_0x103c;try{const _0x12810d=[],_0x51b477=this[_0x4aa808(0x115)](_0x111efa),_0x436e8e=await this['checkSyntax'](_0x111efa,_0x44c717,_0x51b477);_0x12810d['push'](..._0x436e8e);if(_0x436e8e['length']===0x0){const _0x3bbe0e=await this[_0x4aa808(0x107)](_0x111efa,_0x44c717,_0x51b477);_0x12810d['push'](..._0x3bbe0e);}return this[_0x4aa808(0x13e)]?.[_0x4aa808(0x104)]('CSS\x20analysis\x20completed',{'file':_0x111efa,'language':_0x51b477,'totalDiagnostics':_0x12810d[_0x4aa808(0x114)],'errors':_0x12810d['filter'](_0x43e505=>_0x43e505['severity']===STATIC_ANALYSIS[_0x4aa808(0x11d)][_0x4aa808(0x13a)])['length'],'warnings':_0x12810d['filter'](_0x4ea4fd=>_0x4ea4fd['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])[_0x4aa808(0x114)]}),_0x12810d;}catch(_0x163d7c){return this['logger']?.[_0x4aa808(0x10c)]('CSS\x20analysis\x20failed',{'file':_0x111efa,'error':_0x163d7c['message']}),[];}}async['checkSyntax'](_0x5e60b9,_0x188255,_0xabe9){const _0x4dbcd8=a0_0x103c,_0x31e496=[];try{if(!this[_0x4dbcd8(0x101)]){const _0x330d6a=await import(_0x4dbcd8(0x101));this[_0x4dbcd8(0x101)]=_0x330d6a[_0x4dbcd8(0x10f)];}let _0x3fd849=null;if(_0xabe9===_0x4dbcd8(0x117)){if(!this[_0x4dbcd8(0x126)]){const _0x213d0c=await import('postcss-scss');this['postcssScss']=_0x213d0c[_0x4dbcd8(0x10f)];}_0x3fd849=this['postcssScss'];}else{if(_0xabe9==='less'){if(!this[_0x4dbcd8(0x124)]){const _0x65bcde=await import('postcss-less');this['postcssLess']=_0x65bcde[_0x4dbcd8(0x10f)];}_0x3fd849=this[_0x4dbcd8(0x124)];}}const _0x403396=this['postcss']()['process'](_0x188255,{'from':_0x5e60b9,'syntax':_0x3fd849}),_0x1a062c=_0x403396['root'];this['logger']?.[_0x4dbcd8(0x104)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x5e60b9});}catch(_0x5729e3){const _0x1f2bbe=this[_0x4dbcd8(0x139)](_0x5729e3,_0x5e60b9);_0x1f2bbe&&_0x31e496['push'](_0x1f2bbe);}return _0x31e496;}async['lintStyles'](_0x237c47,_0x2346ab,_0x2e7709){const _0x2f7550=a0_0x103c,_0x38a155=[];try{if(!this[_0x2f7550(0x11f)]){const _0x6aa4b3=await import('stylelint');this['stylelint']=_0x6aa4b3['default'];}const _0x3ad1bc={'extends':['stylelint-config-standard'],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x2f7550(0x125),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x2e7709===_0x2f7550(0x117)?[!![],{'ignoreAtRules':['mixin',_0x2f7550(0x110),_0x2f7550(0x134),'if','else',_0x2f7550(0x103),'each','while','function',_0x2f7550(0x10b),'content','use','forward']}]:_0x2e7709==='less'?[!![],{'ignoreAtRules':['plugin']}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x2f7550(0x102),'selector-type-case':_0x2f7550(0x108)},'customSyntax':_0x2e7709==='scss'?_0x2f7550(0x116):_0x2e7709==='less'?'postcss-less':undefined},_0x2409eb=await this[_0x2f7550(0x11f)]['lint']({'code':_0x2346ab,'codeFilename':_0x237c47,'config':_0x3ad1bc});if(_0x2409eb['results']&&_0x2409eb[_0x2f7550(0x11e)]['length']>0x0){const _0x4c4536=_0x2409eb[_0x2f7550(0x11e)][0x0];if(_0x4c4536[_0x2f7550(0x13b)])for(const _0x37cf59 of _0x4c4536[_0x2f7550(0x13b)]){_0x38a155[_0x2f7550(0x111)]({'file':_0x237c47,'line':_0x37cf59['line']||0x1,'column':_0x37cf59['column']||0x1,'severity':_0x37cf59[_0x2f7550(0x11c)]===_0x2f7550(0x10c)?STATIC_ANALYSIS[_0x2f7550(0x11d)][_0x2f7550(0x13a)]:STATIC_ANALYSIS['SEVERITY'][_0x2f7550(0x121)],'rule':_0x37cf59[_0x2f7550(0x13d)]||_0x2f7550(0x12c),'message':_0x37cf59[_0x2f7550(0x12b)],'category':this[_0x2f7550(0x118)](_0x37cf59[_0x2f7550(0x13d)]),'fixable':![],'source':_0x2f7550(0x11f)});}}}catch(_0x3886b0){this[_0x2f7550(0x13e)]?.['warn'](_0x2f7550(0x122),{'file':_0x237c47,'error':_0x3886b0['message']});}return _0x38a155;}['formatPostCSSError'](_0x5f56d4,_0x127b15){const _0x22be42=a0_0x103c;return{'file':_0x127b15,'line':_0x5f56d4['line']||0x1,'column':_0x5f56d4[_0x22be42(0x131)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x22be42(0x13a)],'rule':_0x5f56d4[_0x22be42(0x127)]||'CssSyntaxError','message':_0x5f56d4['reason']||_0x5f56d4['message'],'category':STATIC_ANALYSIS[_0x22be42(0x13c)][_0x22be42(0x135)],'fixable':![],'source':'postcss','code':_0x5f56d4['source']||undefined};}['categorizeStylelintRule'](_0x4dd79d){const _0x490f35=a0_0x103c;if(!_0x4dd79d)return STATIC_ANALYSIS[_0x490f35(0x13c)]['STYLE'];const _0x4d3dc3=_0x4dd79d[_0x490f35(0x128)]();if(_0x4d3dc3[_0x490f35(0x106)]('no-invalid')||_0x4d3dc3[_0x490f35(0x106)]('no-unknown')||_0x4d3dc3['includes'](_0x490f35(0x132))||_0x4d3dc3['includes'](_0x490f35(0x11a)))return STATIC_ANALYSIS[_0x490f35(0x13c)]['SYNTAX'];if(_0x4d3dc3['includes'](_0x490f35(0x11b))||_0x4d3dc3['includes']('optimize'))return STATIC_ANALYSIS['CATEGORY'][_0x490f35(0x119)];if(_0x4d3dc3['includes']('best-practice')||_0x4d3dc3[_0x490f35(0x106)](_0x490f35(0x10a)))return STATIC_ANALYSIS[_0x490f35(0x13c)][_0x490f35(0x130)];return STATIC_ANALYSIS['CATEGORY'][_0x490f35(0x129)];}[a0_0x18183f(0x115)](_0xb7fd69){const _0x7eee20=a0_0x18183f,_0x2820a6=_0xb7fd69[_0x7eee20(0x128)]();if(_0x2820a6[_0x7eee20(0x113)]('.scss')||_0x2820a6[_0x7eee20(0x113)]('.sass'))return'scss';if(_0x2820a6['endsWith'](_0x7eee20(0x10d)))return _0x7eee20(0x105);return _0x7eee20(0x133);}[a0_0x18183f(0x12d)](){const _0x2d9c86=a0_0x18183f;return[_0x2d9c86(0x136),'.scss','.sass','.less'];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;function a0_0x4ce4(){const _0x15c8ba=['Dw5RBM93BG','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','ntaYntG3ouflAeDjEq','mtm1otvUA3PUugO','qKvtvf9quKfdveLdrq','y29SDw1U','BM8Tzw1WDhK','y3nZ','zxH0zw5K','u1Lovefy','lMnZCW','oduXotGZoeTWAfDdCG','ndmXmZy4r3v3r3D6','zM9YBwf0ug9ZDentu0vYCM9Y','rvjst1i','D2fYBMLUz3m','q0furuDpuLK','CNvSzq','Bg9Nz2vY','Cg9ZDgnZCW','zg91yMXL','zM9Y','zgvIDwC','BgvZCW','Aw5JBhvKzxm','BgLUDfn0EwXLCW','Bg93zxi','mJqZnZe4nJbmBwPitxa','CMvJB21Tzw5Kzwq','CMv0DxjU','zxjYB3i','lMXLC3m','nda0mtaZBu93v0jV','zgvMyxvSDa','Aw5JBhvKzq','ChvZAa','mZbtAufbDeu','zw5KC1DPDgG','BgvUz3rO','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCY1Zy3nZ','C2nZCW','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','uevsrK9stufoq0u','C3LUDgf4','CgvYzM9YBwfUy2u','C2v2zxjPDhK','u0vwrvjjvfK','CMvZDwX0CW','C3r5BgvSAw50','mJG0CKfurKXZ','v0fstKLorW','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','mJCZmZG4wejvrvHI','Cg9ZDgnZC0XLC3m','l15JDxn0B20TlW','Cg9ZDgnZC1nJC3m','BMfTzq','Dg9mB3DLCKnHC2u','u1rzteu','mJrzBxnVt2S','Dgv4Da'];a0_0x4ce4=function(){return _0x15c8ba;};return a0_0x4ce4();}
@@ -1 +1 @@
1
- function a0_0x445f(_0x5e9a15,_0x36e80b){_0x5e9a15=_0x5e9a15-0x1e6;const _0x37cee3=a0_0x37ce();let _0x445f10=_0x37cee3[_0x5e9a15];if(a0_0x445f['rIjIvf']===undefined){var _0x506f18=function(_0x5ef6c1){const _0x1de4d8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cc598='',_0xa8af1f='';for(let _0x2ba567=0x0,_0x44c8ee,_0xc72de4,_0x5b99=0x0;_0xc72de4=_0x5ef6c1['charAt'](_0x5b99++);~_0xc72de4&&(_0x44c8ee=_0x2ba567%0x4?_0x44c8ee*0x40+_0xc72de4:_0xc72de4,_0x2ba567++%0x4)?_0x3cc598+=String['fromCharCode'](0xff&_0x44c8ee>>(-0x2*_0x2ba567&0x6)):0x0){_0xc72de4=_0x1de4d8['indexOf'](_0xc72de4);}for(let _0x19d7f2=0x0,_0x524771=_0x3cc598['length'];_0x19d7f2<_0x524771;_0x19d7f2++){_0xa8af1f+='%'+('00'+_0x3cc598['charCodeAt'](_0x19d7f2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xa8af1f);};a0_0x445f['onrLgK']=_0x506f18,a0_0x445f['hNvXHL']={},a0_0x445f['rIjIvf']=!![];}const _0x5b4e44=_0x37cee3[0x0],_0x46e60a=_0x5e9a15+_0x5b4e44,_0x542858=a0_0x445f['hNvXHL'][_0x46e60a];return!_0x542858?(_0x445f10=a0_0x445f['onrLgK'](_0x445f10),a0_0x445f['hNvXHL'][_0x46e60a]=_0x445f10):_0x445f10=_0x542858,_0x445f10;}const a0_0x357114=a0_0x445f;(function(_0x34ba18,_0x51e985){const _0x51e9cd=a0_0x445f,_0x1fa6ec=_0x34ba18();while(!![]){try{const _0x331058=parseInt(_0x51e9cd(0x202))/0x1*(-parseInt(_0x51e9cd(0x249))/0x2)+-parseInt(_0x51e9cd(0x241))/0x3*(-parseInt(_0x51e9cd(0x1e7))/0x4)+parseInt(_0x51e9cd(0x200))/0x5+parseInt(_0x51e9cd(0x220))/0x6+parseInt(_0x51e9cd(0x203))/0x7*(-parseInt(_0x51e9cd(0x210))/0x8)+-parseInt(_0x51e9cd(0x22c))/0x9*(-parseInt(_0x51e9cd(0x25e))/0xa)+-parseInt(_0x51e9cd(0x1ec))/0xb*(parseInt(_0x51e9cd(0x1ef))/0xc);if(_0x331058===_0x51e985)break;else _0x1fa6ec['push'](_0x1fa6ec['shift']());}catch(_0x2a042b){_0x1fa6ec['push'](_0x1fa6ec['shift']());}}}(a0_0x37ce,0x96116));import{exec}from'child_process';import{promisify}from'util';import a0_0x3cc598 from'path';import a0_0xa8af1f from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x37ce(){const _0x6891d6=['ywP2','zg9JA2vYlwnVBxbVC2uUEwfTBa','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','Dg9mB3DLCKnHC2u','y2HLy2TVDIaTlxzLCNnPB24','CgfYC2vdAgvJA292uMvZDwX0CW','BwvKAxvT','y3DL','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','mtHqthnpt0K','AgfKB2XPBNqGls12zxjZAw9U','zxH0BMfTzq','zw5KC1DPDgG','BwfW','iIaTlwzYyw1LD29YAYa','BwfWq2HLy2TVDLnLDMvYAxr5','C3rKB3v0','DhjPBq','zgvMyxvSDa','BM9YBwfSAxPLuMvZDwX0CW','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','y29Kzq','C3rHCNrZv2L0Aa','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','y29TCgLSzxjpChrPB25Z','z2L0AhvIlwfJDgLVBNm','zg9JA2vYlwnVBxbVC2u','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','DMfSAwrHDgvfBNzgAwXL','otnirvflCuG','EwfTBgXPBNq','y2HLy2TVDG','DhnJB25MAwCTDMfSAwrHDg9Y','CgfYC2u','ywP2icHku09oifnJAgvTysK','y2HLy2TVDIbKzxrLy3rLza','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','nejNzxnAvG','Aw5ZDgfUy2vqyxrO','zg9JA2vYlwnVBxbVC2uUEw1S','wufntcbMAwXLihzHBgLKyxrPB24','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3LUDgf4','DMfSAwrHDgvxAxrOq2HLy2TVDG','Aw5JBhvKzxm','DMfSAwrHDgvqywnRywDLsNnVBG','lNrMDMfYCW','DMfSAwrHDgvuC0nVBMzPzW','BwfWsgfKB2XPBNrtzxzLCML0Eq','C3bSAxq','B2jQzwn0','DMfSAwrHDgu','y2HLy2TVDIaTzIaI','DhnJB25MAwCUANnVBG','C2vJCMv0','Dw5RBM93BG','ANnVBLnJAgvTyq','C3rYAw5N','mteXmJiWy25oCe5o','y2HLy2TFBMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','Bwf0y2G','zxjYB3i','DMfSAwrHDg9Y','ANnVBI1Zy2HLBwe','BwfWwwfTBgXPBNrtzxzLCML0Eq','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','mtaYmti0vMrpuwni','A3vIzxjUzxrLCW','Bg9Nz2vY','C3rYAwn0','CgfYC2viywrVBgLUDfjLC3vSDhm','nZKXmti3n2DOreHSuW','su5gtW','CgLWigLUC3rHBgWGEwfTBgXPBNq','mtjpDNDOtfi','BgvUz3rO','AgfKB2XPBNq','CgfYyw1Z','ug90zw50AwfSigHHCMrJB2rLzca','ywP2lwzVCM1HDhm','zxjYB3jZ','DgvYCMfMB3jT','lNrM','DMvYC2LVBG','ChvZAa','CgfJA2fNzs5QC29U','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','DMfSAwrHDgLVBG','yMvZDc1WCMfJDgLJzq','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','yxzHAwXHyMXLu2nHBM5LCNm','ndi1nJy1mfneB2PrEq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','mZuWmZeXu3jhruLl','n0TpvKfLuq','rvjst1i','CMvTzwrPyxrPB24','CMvHzezPBgu','C2v2zxjPDhK','zMfPBgvKx2nOzwnRCW','zgvIDwC','BM9jBxbSAwnPDefUEq','EwfTBa','v0fstKLorW','zgv0zwn0rMLSzvr5Cgu','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','mZa5ndaWofPgtML3Cq','BwvZC2fNzq','CMvZDwX0CW','zw52lxzHBgLKyxrVCG','zgLYBMfTzq','DMfSAwrHDgvzqu1m','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zw52','u0vwrvjjvfK','zg9JA2vYzMLSzq','z3vPzgvSAw5L','y2HHBMDLBwu','ANnVBI1WyxjZzq','qvDtignYzwrLBNrPywXZ','C2vJDxjPDhK','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','nduZnZmZogrAtLPtuW','yMfZzw5HBwu','DMfSAwrHDgveB2nRzxjMAwXL'];a0_0x37ce=function(){return _0x6891d6;};return a0_0x37ce();}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x2ba567=null){const _0x11c664=a0_0x445f;this[_0x11c664(0x1e9)]=_0x2ba567,this[_0x11c664(0x1ff)]=null,this['scannerCache']=new Map();}async[a0_0x357114(0x24d)](){const _0x4c4fe7=a0_0x357114;if(this['availableScanners']!==null)return this[_0x4c4fe7(0x1ff)];const _0x44c8ee={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x4c4fe7(0x227),{'timeout':0x1388}),_0x44c8ee[_0x4c4fe7(0x243)]=!![],this[_0x4c4fe7(0x1e9)]?.['debug'](_0x4c4fe7(0x247));}catch(_0xc72de4){this['logger']?.[_0x4c4fe7(0x209)](_0x4c4fe7(0x23b),{'error':_0xc72de4[_0x4c4fe7(0x211)]});}try{await execAsync(_0x4c4fe7(0x22d),{'timeout':0x1388}),_0x44c8ee['hadolint']=!![],this['logger']?.[_0x4c4fe7(0x209)]('hadolint\x20detected');}catch(_0x5b99){this[_0x4c4fe7(0x1e9)]?.['debug']('hadolint\x20not\x20available',{'error':_0x5b99[_0x4c4fe7(0x211)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x44c8ee['yamllint']=!![],this['logger']?.['debug']('yamllint\x20detected');}catch(_0x19d7f2){this['logger']?.[_0x4c4fe7(0x209)]('yamllint\x20not\x20available',{'error':_0x19d7f2[_0x4c4fe7(0x211)]});}try{await import(_0x4c4fe7(0x223)),_0x44c8ee[_0x4c4fe7(0x25c)]=!![],this['logger']?.['debug'](_0x4c4fe7(0x238));}catch(_0x524771){this[_0x4c4fe7(0x1e9)]?.[_0x4c4fe7(0x209)]('ajv\x20not\x20available',{'error':_0x524771[_0x4c4fe7(0x211)]});}return this[_0x4c4fe7(0x1ff)]=_0x44c8ee,_0x44c8ee;}async[a0_0x357114(0x257)](_0xc7bdca,_0x2cddf5={}){const _0x322b76=a0_0x357114,_0x151955=[],_0x3fca87=await this['detectAvailableValidators'](),_0x50d62b=this['detectFileType'](_0xc7bdca);this[_0x322b76(0x1e9)]?.[_0x322b76(0x209)]('Validating\x20config\x20file',{'filePath':_0xc7bdca,'fileType':_0x50d62b});switch(_0x50d62b){case _0x322b76(0x219):if(_0x3fca87[_0x322b76(0x1f1)]){const _0x94f5f5=await this[_0x322b76(0x222)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x94f5f5);}if(_0x3fca87[_0x322b76(0x243)]){const _0x5570ee=await this[_0x322b76(0x24f)](_0xc7bdca,'dockerfile',_0x2cddf5);_0x151955['push'](..._0x5570ee);}break;case _0x322b76(0x23e):if(_0x3fca87[_0x322b76(0x242)]){const _0x262fbc=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x262fbc);}if(_0x3fca87[_0x322b76(0x243)]){const _0x4bfe33=await this['validateWithCheckov'](_0xc7bdca,'docker_compose',_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4bfe33);}break;case'kubernetes':if(_0x3fca87[_0x322b76(0x242)]){const _0xd3f0f5=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xd3f0f5);}if(_0x3fca87['checkov']){const _0x39f867=await this['validateWithCheckov'](_0xc7bdca,_0x322b76(0x1e8),_0x2cddf5);_0x151955['push'](..._0x39f867);}break;case _0x322b76(0x1f6):if(_0x3fca87[_0x322b76(0x243)]){const _0x5a59eb=await this['validateWithCheckov'](_0xc7bdca,'terraform',_0x2cddf5);_0x151955['push'](..._0x5a59eb);}break;case _0x322b76(0x1fa):if(_0x3fca87[_0x322b76(0x25c)]){const _0x4fb5a3=await this[_0x322b76(0x251)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x4fb5a3);}break;case'tsconfig.json':if(_0x3fca87['jsonSchema']){const _0xee9b06=await this[_0x322b76(0x253)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xee9b06);}break;case'github-actions':if(_0x3fca87[_0x322b76(0x242)]){const _0xc5ae3f=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xc5ae3f);}break;case'env':const _0x6df047=await this['validateEnvFile'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x6df047);break;case'yaml':if(_0x3fca87['yamllint']){const _0x4304d9=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4304d9);}break;default:this['logger']?.['warn'](_0x322b76(0x23f),{'filePath':_0xc7bdca,'fileType':_0x50d62b});return[];}return this[_0x322b76(0x236)](_0x151955);}async[a0_0x357114(0x222)](_0x299844,_0x7b9b08={}){const _0x14bd93=a0_0x357114;try{const _0x92e72b=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x299844+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x5e5fc0=JSON['parse'](_0x92e72b['stdout']);return this[_0x14bd93(0x1eb)](_0x5e5fc0,_0x299844);}catch(_0x5520cd){if(_0x5520cd[_0x14bd93(0x233)])try{const _0x8b68b2=JSON[_0x14bd93(0x245)](_0x5520cd[_0x14bd93(0x233)]);return this[_0x14bd93(0x1eb)](_0x8b68b2,_0x299844);}catch(_0x47f908){this['logger']?.[_0x14bd93(0x262)]('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x47f908[_0x14bd93(0x211)]});}return this[_0x14bd93(0x1e9)]?.['error'](_0x14bd93(0x1fe),{'error':_0x5520cd[_0x14bd93(0x211)]}),[];}}[a0_0x357114(0x1eb)](_0x44b46c,_0x424791){const _0x4a9ce6=a0_0x357114,_0x1a7c68=[];if(Array['isArray'](_0x44b46c))for(const _0x3a0949 of _0x44b46c){_0x1a7c68['push']({'file':_0x424791,'line':_0x3a0949['line']||0x1,'column':_0x3a0949['column']||0x1,'severity':this['mapHadolintSeverity'](_0x3a0949['level']),'rule':_0x3a0949[_0x4a9ce6(0x239)],'message':_0x3a0949['message'],'category':'dockerfile','validator':_0x4a9ce6(0x1f1)});}return _0x1a7c68;}async[a0_0x357114(0x215)](_0x416508,_0x2a3f1a={}){const _0x4e376b=a0_0x357114;try{const _0xf4a5ae=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x416508+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x4e376b(0x201)](_0xf4a5ae[_0x4e376b(0x233)],_0x416508);}catch(_0x45beed){if(_0x45beed[_0x4e376b(0x233)])return this[_0x4e376b(0x201)](_0x45beed['stdout'],_0x416508);return this[_0x4e376b(0x1e9)]?.[_0x4e376b(0x262)](_0x4e376b(0x1e6),{'error':_0x45beed['message']}),[];}}['parseYamllintResults'](_0x1e29f6,_0x4f47f7){const _0xede58b=a0_0x357114,_0x155b51=[],_0x538b21=_0x1e29f6['split']('\x0a')['filter'](_0xdcbb9a=>_0xdcbb9a[_0xede58b(0x234)]());for(const _0x20ba80 of _0x538b21){const _0x3c2a6b=_0x20ba80[_0xede58b(0x261)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x3c2a6b){const [,_0x5213c1,_0x113c96,_0x4c50dc,_0x93f7dd,_0x2dde65,_0x470103]=_0x3c2a6b;_0x155b51['push']({'file':_0x4f47f7,'line':parseInt(_0x113c96,0xa),'column':parseInt(_0x4c50dc,0xa),'severity':this[_0xede58b(0x265)](_0x93f7dd),'rule':_0x470103,'message':_0x2dde65,'category':'yaml','validator':_0xede58b(0x242)});}}return _0x155b51;}async['validateWithCheckov'](_0x5d1af4,_0xf0cc90,_0x2674a4={}){const _0x29cf0f=a0_0x357114;try{const _0x2dff01=await execAsync(_0x29cf0f(0x258)+_0x5d1af4+_0x29cf0f(0x231)+_0xf0cc90+_0x29cf0f(0x248),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x354848=JSON[_0x29cf0f(0x245)](_0x2dff01['stdout']);return this[_0x29cf0f(0x228)](_0x354848,_0x5d1af4);}catch(_0x78e98e){if(_0x78e98e['stdout'])try{const _0x1b3176=JSON[_0x29cf0f(0x245)](_0x78e98e['stdout']);return this['parseCheckovResults'](_0x1b3176,_0x5d1af4);}catch(_0x5194ab){this['logger']?.['error'](_0x29cf0f(0x22b),{'error':_0x5194ab[_0x29cf0f(0x211)]});}return this['logger']?.[_0x29cf0f(0x262)]('checkov\x20validation\x20failed',{'error':_0x78e98e['message']}),[];}}['parseCheckovResults'](_0xbba814,_0x27d057){const _0x1a70dc=a0_0x357114,_0x4bda0d=[];if(_0xbba814[_0x1a70dc(0x212)]&&_0xbba814['results'][_0x1a70dc(0x208)])for(const _0x23f48a of _0xbba814[_0x1a70dc(0x212)][_0x1a70dc(0x208)]){_0x4bda0d['push']({'file':_0x27d057,'line':_0x23f48a['file_line_range']?_0x23f48a['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x1a70dc(0x232)](_0x23f48a['check_class']),'rule':_0x23f48a['check_id'],'message':_0x23f48a[_0x1a70dc(0x25f)]||_0x23f48a['check_id'],'category':_0x1a70dc(0x21e),'validator':_0x1a70dc(0x243),'remediation':_0x23f48a[_0x1a70dc(0x21a)],'cwe':_0x23f48a['cwe'],'references':_0x23f48a['guideline']?[_0x23f48a['guideline']]:[]});}return _0x4bda0d;}async[a0_0x357114(0x251)](_0x2f4101,_0x494d43={}){const _0x2916f0=a0_0x357114;try{const _0x6555c8=(await import('ajv'))[_0x2916f0(0x235)],_0x5ed3eb=(await import(_0x2916f0(0x1f4)))[_0x2916f0(0x235)],_0x5c2a07=await a0_0xa8af1f['readFile'](_0x2f4101,'utf-8'),_0x3a972a=JSON['parse'](_0x5c2a07),_0x9c4ff9=new _0x6555c8({'allErrors':!![],'strict':![]});_0x5ed3eb(_0x9c4ff9);const _0x16b388={'type':'object','required':['name',_0x2916f0(0x1f8)],'properties':{'name':{'type':_0x2916f0(0x25d),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':'string'},'description':{'type':_0x2916f0(0x25d)},'main':{'type':'string'},'type':{'type':'string','enum':['module','commonjs']},'scripts':{'type':_0x2916f0(0x256)},'dependencies':{'type':'object'},'devDependencies':{'type':_0x2916f0(0x256)}},'additionalProperties':!![]},_0x19493e=_0x9c4ff9['compile'](_0x16b388),_0x505e77=_0x19493e(_0x3a972a);if(!_0x505e77&&_0x19493e['errors'])return _0x19493e[_0x2916f0(0x1f5)][_0x2916f0(0x230)](_0x18d8be=>({'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)][_0x2916f0(0x204)],'rule':_0x2916f0(0x264),'message':_0x18d8be['instancePath']?_0x18d8be[_0x2916f0(0x24a)]+'\x20'+_0x18d8be['message']:'must\x20have\x20required\x20property\x20\x27'+_0x18d8be[_0x2916f0(0x1f2)]['missingProperty']+'\x27','category':_0x2916f0(0x1fc),'validator':'json-schema'}));return[];}catch(_0x285775){return this[_0x2916f0(0x1e9)]?.['error'](_0x2916f0(0x20f),{'error':_0x285775[_0x2916f0(0x211)]}),[{'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x285775[_0x2916f0(0x211)],'category':'syntax','validator':_0x2916f0(0x21c)}];}}async[a0_0x357114(0x253)](_0x31321d,_0xa685ea={}){const _0x226b60=a0_0x357114;try{const _0x28b922=await a0_0xa8af1f[_0x226b60(0x206)](_0x31321d,'utf-8'),_0x54706a=JSON['parse'](_0x28b922),_0x138565=[];if(_0x54706a['compilerOptions']){const _0x5ca1bd=_0x54706a[_0x226b60(0x23c)];!_0x5ca1bd[_0x226b60(0x1ea)]&&_0x138565[_0x226b60(0x1f9)]({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x226b60(0x218)][_0x226b60(0x20c)],'rule':'strict-mode','message':_0x226b60(0x225),'category':_0x226b60(0x1fd),'validator':'tsconfig-validator'}),_0x5ca1bd[_0x226b60(0x20a)]===![]&&_0x138565['push']({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x226b60(0x244)});}return _0x138565;}catch(_0x37c614){return this[_0x226b60(0x1e9)]?.[_0x226b60(0x262)]('tsconfig.json\x20validation\x20failed',{'error':_0x37c614['message']}),[{'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x226b60(0x204)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x37c614['message'],'category':_0x226b60(0x24e),'validator':'json-parse'}];}}async[a0_0x357114(0x240)](_0x47620d,_0x10096b={}){const _0x2c053d=a0_0x357114;try{const _0x2d5247=await a0_0xa8af1f['readFile'](_0x47620d,'utf-8'),_0x4a5c7f=[],_0xfa391e=_0x2d5247[_0x2c053d(0x255)]('\x0a'),_0x35c8c9=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x2c053d(0x25a)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x2c053d(0x21d)}];return _0xfa391e['forEach']((_0x4dafba,_0x39d221)=>{const _0xb5a835=_0x2c053d,_0xd92cdf=_0x4dafba[_0xb5a835(0x234)]();if(!_0xd92cdf||_0xd92cdf[_0xb5a835(0x23a)]('#'))return;if(_0xd92cdf['includes']('=')){const [_0x38af11,_0x3a97b1]=_0xd92cdf[_0xb5a835(0x255)]('='),_0x5db324=_0x38af11[_0xb5a835(0x226)](),_0x188b8b=_0x3a97b1?.[_0xb5a835(0x234)]()||'',_0x5a050e=_0x188b8b&&_0x188b8b!==''&&!_0x188b8b[_0xb5a835(0x23a)]('$')&&_0x188b8b!=='your-key-here'&&_0x188b8b!==_0xb5a835(0x21b)&&_0x188b8b[_0xb5a835(0x1f0)]>0x5;if(_0x5a050e)for(const {pattern:_0x14606d,name:_0x111852}of _0x35c8c9){if(_0x14606d['test'](_0x5db324)){_0x4a5c7f['push']({'file':_0x47620d,'line':_0x39d221+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xb5a835(0x218)]['CRITICAL'],'rule':'hardcoded-secret','message':_0xb5a835(0x1f3)+_0x111852+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0xb5a835(0x213),'remediation':_0xb5a835(0x1fb)});break;}}}}),_0x4a5c7f;}catch(_0x26993e){return this[_0x2c053d(0x1e9)]?.['error'](_0x2c053d(0x216),{'error':_0x26993e[_0x2c053d(0x211)]}),[];}}[a0_0x357114(0x20d)](_0x104fe2){const _0x3767e8=a0_0x357114,_0x544351=a0_0x3cc598[_0x3767e8(0x221)](_0x104fe2)[_0x3767e8(0x226)](),_0x1e04b2=a0_0x3cc598[_0x3767e8(0x214)](_0x104fe2);if(_0x544351==='dockerfile')return'dockerfile';if(_0x544351===_0x3767e8(0x24b)||_0x544351===_0x3767e8(0x224))return'docker-compose';if(_0x544351==='package.json')return _0x3767e8(0x1fa);if(_0x544351===_0x3767e8(0x259))return'tsconfig.json';if(_0x544351==='.env'||_0x544351[_0x3767e8(0x22f)]('.env'))return _0x3767e8(0x217);if(_0x1e04b2[_0x3767e8(0x250)]('.github/workflows'))return _0x3767e8(0x23d);if(_0x1e04b2[_0x3767e8(0x250)]('kubernetes')||_0x1e04b2[_0x3767e8(0x250)]('k8s'))return'kubernetes';const _0x5b374a=a0_0x3cc598[_0x3767e8(0x22e)](_0x104fe2)[_0x3767e8(0x226)]();if(_0x5b374a===_0x3767e8(0x1f7)||_0x5b374a===_0x3767e8(0x252))return'terraform';if(_0x5b374a==='.yml'||_0x5b374a==='.yaml')return _0x3767e8(0x20b);if(_0x5b374a==='.json')return'json';return'unknown';}[a0_0x357114(0x236)](_0x1a7cae){const _0x480392=a0_0x357114;return _0x1a7cae['map'](_0x37f721=>({'file':_0x37f721['file'],'line':_0x37f721['line']||0x1,'column':_0x37f721['column']||0x1,'severity':_0x37f721[_0x480392(0x207)]||STATIC_ANALYSIS[_0x480392(0x218)]['WARNING'],'rule':_0x37f721['rule']||_0x480392(0x25b),'message':_0x37f721[_0x480392(0x211)]||_0x480392(0x21f),'category':_0x37f721['category']||_0x480392(0x1fc),'validator':_0x37f721[_0x480392(0x263)],'cwe':_0x37f721[_0x480392(0x22a)]||null,'remediation':_0x37f721[_0x480392(0x205)]||null,'references':_0x37f721['references']||[]}));}[a0_0x357114(0x254)](_0x1b4da5){const _0x437e05=a0_0x357114,_0xb966bd={'error':STATIC_ANALYSIS[_0x437e05(0x218)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)],'style':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)]};return _0xb966bd[_0x1b4da5?.['toLowerCase']()]||STATIC_ANALYSIS[_0x437e05(0x218)]['WARNING'];}[a0_0x357114(0x265)](_0x273bc9){const _0x210bf5=a0_0x357114,_0x3c466a={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x210bf5(0x218)]['WARNING']};return _0x3c466a[_0x273bc9?.['toLowerCase']()]||STATIC_ANALYSIS[_0x210bf5(0x218)][_0x210bf5(0x20c)];}[a0_0x357114(0x232)](_0x5db6b7){const _0x5f3f31=a0_0x357114;return STATIC_ANALYSIS[_0x5f3f31(0x218)][_0x5f3f31(0x204)];}async['getValidatorStatus'](){const _0x2b024a=a0_0x357114,_0x102f9d=await this[_0x2b024a(0x24d)]();return{'validators':_0x102f9d,'recommendations':this['getInstallRecommendations'](_0x102f9d)};}[a0_0x357114(0x237)](_0x32248f){const _0x3f6821=a0_0x357114,_0x3abaf3=[];return!_0x32248f[_0x3f6821(0x243)]&&_0x3abaf3['push']({'validator':_0x3f6821(0x243),'reason':_0x3f6821(0x20e),'install':'pip\x20install\x20checkov','priority':'high'}),!_0x32248f['hadolint']&&_0x3abaf3['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x32248f['yamllint']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':'yamllint','reason':_0x3f6821(0x24c),'install':_0x3f6821(0x1ee),'priority':_0x3f6821(0x229)}),!_0x32248f['jsonSchema']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':_0x3f6821(0x246),'reason':_0x3f6821(0x260),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x3f6821(0x229)}),_0x3abaf3;}}export default ConfigValidator;
1
+ const a0_0x547241=a0_0x14f8;(function(_0x2f0149,_0x164bed){const _0x17183f=a0_0x14f8,_0x171ae9=_0x2f0149();while(!![]){try{const _0x314e3c=-parseInt(_0x17183f(0x151))/0x1*(-parseInt(_0x17183f(0x125))/0x2)+-parseInt(_0x17183f(0x16f))/0x3+parseInt(_0x17183f(0x117))/0x4*(parseInt(_0x17183f(0x104))/0x5)+-parseInt(_0x17183f(0x123))/0x6+parseInt(_0x17183f(0x127))/0x7*(parseInt(_0x17183f(0x11d))/0x8)+-parseInt(_0x17183f(0x15e))/0x9+parseInt(_0x17183f(0x170))/0xa;if(_0x314e3c===_0x164bed)break;else _0x171ae9['push'](_0x171ae9['shift']());}catch(_0x3e6091){_0x171ae9['push'](_0x171ae9['shift']());}}}(a0_0x58fc,0x3c260));import{exec}from'child_process';import{promisify}from'util';function a0_0x14f8(_0x87a919,_0x5016e2){_0x87a919=_0x87a919-0xfa;const _0x58fc1b=a0_0x58fc();let _0x14f896=_0x58fc1b[_0x87a919];if(a0_0x14f8['VmOrJg']===undefined){var _0x462fe9=function(_0x2e1dd1){const _0x27e524='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1383c4='',_0x1a4c7f='';for(let _0x3490a5=0x0,_0x22232d,_0xe457a1,_0x5cea46=0x0;_0xe457a1=_0x2e1dd1['charAt'](_0x5cea46++);~_0xe457a1&&(_0x22232d=_0x3490a5%0x4?_0x22232d*0x40+_0xe457a1:_0xe457a1,_0x3490a5++%0x4)?_0x1383c4+=String['fromCharCode'](0xff&_0x22232d>>(-0x2*_0x3490a5&0x6)):0x0){_0xe457a1=_0x27e524['indexOf'](_0xe457a1);}for(let _0x3bf184=0x0,_0x5c19a8=_0x1383c4['length'];_0x3bf184<_0x5c19a8;_0x3bf184++){_0x1a4c7f+='%'+('00'+_0x1383c4['charCodeAt'](_0x3bf184)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a4c7f);};a0_0x14f8['ZDIYdV']=_0x462fe9,a0_0x14f8['EFkdQP']={},a0_0x14f8['VmOrJg']=!![];}const _0x329109=_0x58fc1b[0x0],_0x4a479e=_0x87a919+_0x329109,_0x58e7d7=a0_0x14f8['EFkdQP'][_0x4a479e];return!_0x58e7d7?(_0x14f896=a0_0x14f8['ZDIYdV'](_0x14f896),a0_0x14f8['EFkdQP'][_0x4a479e]=_0x14f896):_0x14f896=_0x58e7d7,_0x14f896;}function a0_0x58fc(){const _0x3b6239=['nJm4nNf1qK93AG','DhjPBq','ndu1quHfALHL','Dw5RBM93BG','C2v2zxjPDhK','AgLNAa','sw52ywXPzcbku09ooIa','CgfYC2vdAgvJA292uMvZDwX0CW','AgfKB2XPBNq','Ew91CI1RzxKTAgvYzq','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','DMfSAwrHDgvzqu1m','y2HLy2TVDIaTlxzLCNnPB24','lNrM','C3rYAw5N','BwfWq2HLy2TVDLnLDMvYAxr5','zMLSzv9SAw5Lx3jHBMDL','z2L0AhvIlwfJDgLVBNm','CgfYC2u','DMvYC2LVBG','DMfSAwrHDgveB2nRzxjMAwXL','lMvUDG','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','ANnVBI1WyxjZzq','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','DgvYCMfMB3jT','Aw5JBhvKzxm','DMfSAwrHDgvfBNzgAwXL','zg9JA2vYlwnVBxbVC2u','CMvZDwX0CW','y3DL','zgvIDwC','CMvHzezPBgu','Bg9Nz2vY','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','DhnJB25MAwCUANnVBG','zg9JA2vYlwnVBxbVC2uUEwfTBa','zg9JA2vYlwnVBxbVC2uUEw1S','zg9JA2vYzMLSzq','zxjYB3i','lMDPDgH1yI93B3jRzMXVD3m','A3vIzxjUzxrLCW','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','EwfTBgXPBNq','mtaZwfHsEKDy','Aw5ZDgfUy2vqyxrO','AZHZ','DMfSAwrHDgvqywnRywDLsNnVBG','BgvUz3rO','zgvMyxvSDa','ywP2icHku09oifnJAgvTysK','C2vJCMv0','BwfWsgfKB2XPBNrtzxzLCML0Eq','zM9YrwfJAa','EwfTBa','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','zw5KC1DPDgG','mZK0nJu3mM9PufztAq','D2fYBG','C3rKB3v0','CMvTzwrPyxrPB24','zxjYB3jZ','y2HHBMDLBwu','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','q1jjveLdquW','u0vwrvjjvfK','ChvZAa','B2jQzwn0','wufntcbMAwXLihzHBgLKyxrPB24','BM9jBxbSAwnPDefUEq','y2HLy2TVDG','Bwf0y2G','C3LUDgf4','otGXnJK2C1bdCLbn','nJi5otaYmeruvNrOtG','su5gtW','igrLDgvJDgvKigLUic5LBNyGzMLSzq','C3rHCNrZv2L0Aa','iIaTlwzYyw1LD29YAYa','ANnVBI1Zy2HLBwe','BM8TAw1WBgLJAxqTyw55','ug90zw50AwfSigHHCMrJB2rLzca','ywP2','DMfSAwrHDgLVBG','CgfYC2viywrVBgLUDfjLC3vSDhm','qvDtignYzwrLBNrPywXZ','ywP2lwzVCM1HDhm','Dg9mB3DLCKnHC2u','BwfW','mJmWrwXmBhnm','ANnVBG','CgfYyw1Z','EwfTBgXPBNqGzgv0zwn0zwq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','DgvZDa','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','v0fstKLorW','zMfPBgvKx2nOzwnRCW','zxH0BMfTzq','BwvKAxvT','y29TCgLSzxjpChrPB25Z','z3vPzgvSAw5L','DxrMltG','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','y29TCgLSzq','DhnJB25MAwCTDMfSAwrHDg9Y','BwvZC2fNzq','DMfSAwrHDgvxAxrOq2HLy2TVDG','mZC0ntjpvu11uw0','AxnbCNjHEq','rvjst1i','DMfSAwrHDgvuC0nVBMzPzW','DMfSAwrHDgu','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','nJa3mKPXvMDQAa','C2vJDxjPDhK','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','y29SDw1U','C3bSAxq','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','mJu2mdiZnM9uDNjrvq','zgLYBMfTzq'];a0_0x58fc=function(){return _0x3b6239;};return a0_0x58fc();}import a0_0x1383c4 from'path';import a0_0x1a4c7f from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x3490a5=null){this['logger']=_0x3490a5,this['availableScanners']=null,this['scannerCache']=new Map();}async['detectAvailableValidators'](){const _0x4bc0dc=a0_0x14f8;if(this['availableScanners']!==null)return this['availableScanners'];const _0x22232d={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x4bc0dc(0x131),{'timeout':0x1388}),_0x22232d['checkov']=!![],this[_0x4bc0dc(0x146)]?.[_0x4bc0dc(0x144)]('checkov\x20detected');}catch(_0xe457a1){this['logger']?.[_0x4bc0dc(0x144)]('checkov\x20not\x20available',{'error':_0xe457a1[_0x4bc0dc(0x115)]});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x22232d[_0x4bc0dc(0x12d)]=!![],this['logger']?.['debug']('hadolint\x20detected');}catch(_0x5cea46){this['logger']?.[_0x4bc0dc(0x144)]('hadolint\x20not\x20available',{'error':_0x5cea46['message']});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x22232d[_0x4bc0dc(0x150)]=!![],this['logger']?.['debug'](_0x4bc0dc(0x107));}catch(_0x3bf184){this[_0x4bc0dc(0x146)]?.[_0x4bc0dc(0x144)]('yamllint\x20not\x20available',{'error':_0x3bf184[_0x4bc0dc(0x115)]});}try{await import('ajv'),_0x22232d['jsonSchema']=!![],this[_0x4bc0dc(0x146)]?.['debug'](_0x4bc0dc(0x122));}catch(_0x5c19a8){this['logger']?.[_0x4bc0dc(0x144)]('ajv\x20not\x20available',{'error':_0x5c19a8['message']});}return this['availableScanners']=_0x22232d,_0x22232d;}async[a0_0x547241(0x11b)](_0x623841,_0x46c0bf={}){const _0x5af52d=a0_0x547241,_0x49e15b=[],_0x7c1121=await this[_0x5af52d(0x15c)](),_0x549f9a=this['detectFileType'](_0x623841);this[_0x5af52d(0x146)]?.[_0x5af52d(0x144)]('Validating\x20config\x20file',{'filePath':_0x623841,'fileType':_0x549f9a});switch(_0x549f9a){case _0x5af52d(0x14b):if(_0x7c1121['hadolint']){const _0x39c580=await this[_0x5af52d(0x139)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x39c580);}if(_0x7c1121['checkov']){const _0x457528=await this['validateWithCheckov'](_0x623841,'dockerfile',_0x46c0bf);_0x49e15b['push'](..._0x457528);}break;case _0x5af52d(0x141):if(_0x7c1121[_0x5af52d(0x150)]){const _0x92df21=await this['validateYAML'](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x92df21);}if(_0x7c1121[_0x5af52d(0x16c)]){const _0x30567c=await this['validateWithCheckov'](_0x623841,'docker_compose',_0x46c0bf);_0x49e15b['push'](..._0x30567c);}break;case _0x5af52d(0x14e):if(_0x7c1121['yamllint']){const _0x585840=await this['validateYAML'](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x585840);}if(_0x7c1121[_0x5af52d(0x16c)]){const _0x5a69ba=await this[_0x5af52d(0x116)](_0x623841,'kubernetes',_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x5a69ba);}break;case _0x5af52d(0x13e):if(_0x7c1121['checkov']){const _0x35d1aa=await this[_0x5af52d(0x116)](_0x623841,_0x5af52d(0x13e),_0x46c0bf);_0x49e15b['push'](..._0x35d1aa);}break;case'package.json':if(_0x7c1121['jsonSchema']){const _0x133fae=await this[_0x5af52d(0x154)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x133fae);}break;case'tsconfig.json':if(_0x7c1121['jsonSchema']){const _0x37fa76=await this[_0x5af52d(0x11a)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x37fa76);}break;case _0x5af52d(0x136):if(_0x7c1121[_0x5af52d(0x150)]){const _0x24ab58=await this[_0x5af52d(0x130)](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x24ab58);}break;case'env':const _0x239f7=await this['validateEnvFile'](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x239f7);break;case _0x5af52d(0x15b):if(_0x7c1121[_0x5af52d(0x150)]){const _0x35ff1c=await this[_0x5af52d(0x130)](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x35ff1c);}break;default:this['logger']?.[_0x5af52d(0x15f)](_0x5af52d(0x147),{'filePath':_0x623841,'fileType':_0x549f9a});return[];}return this['normalizeResults'](_0x49e15b);}async['validateDockerfile'](_0x4bab7d,_0x36e10f={}){const _0x455a78=a0_0x547241;try{const _0x3ebb34=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x4bab7d+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x45b28b=JSON[_0x455a78(0x137)](_0x3ebb34[_0x455a78(0x160)]);return this[_0x455a78(0xff)](_0x45b28b,_0x4bab7d);}catch(_0x531ae3){if(_0x531ae3['stdout'])try{const _0x1b30f6=JSON[_0x455a78(0x137)](_0x531ae3[_0x455a78(0x160)]);return this[_0x455a78(0xff)](_0x1b30f6,_0x4bab7d);}catch(_0x3f679f){this[_0x455a78(0x146)]?.['error'](_0x455a78(0x112),{'error':_0x3f679f['message']});}return this['logger']?.[_0x455a78(0x14c)]('hadolint\x20validation\x20failed',{'error':_0x531ae3['message']}),[];}}['parseHadolintResults'](_0x51c971,_0x29dbeb){const _0x2c8f54=a0_0x547241,_0x1f00bb=[];if(Array[_0x2c8f54(0x118)](_0x51c971))for(const _0x3710b7 of _0x51c971){_0x1f00bb[_0x2c8f54(0x168)]({'file':_0x29dbeb,'line':_0x3710b7['line']||0x1,'column':_0x3710b7[_0x2c8f54(0x120)]||0x1,'severity':this[_0x2c8f54(0x159)](_0x3710b7['level']),'rule':_0x3710b7['code'],'message':_0x3710b7[_0x2c8f54(0x115)],'category':'dockerfile','validator':'hadolint'});}return _0x1f00bb;}async['validateYAML'](_0x3fc092,_0x15afe9={}){const _0x2bd19b=a0_0x547241;try{const _0x41c6a2=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x3fc092+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x2bd19b(0x108)](_0x41c6a2['stdout'],_0x3fc092);}catch(_0x4a4315){if(_0x4a4315[_0x2bd19b(0x160)])return this['parseYamllintResults'](_0x4a4315[_0x2bd19b(0x160)],_0x3fc092);return this[_0x2bd19b(0x146)]?.[_0x2bd19b(0x14c)]('yamllint\x20validation\x20failed',{'error':_0x4a4315['message']}),[];}}['parseYamllintResults'](_0x4778cd,_0x1b5a16){const _0x3dc630=a0_0x547241,_0x1860aa=[],_0x589eb3=_0x4778cd[_0x3dc630(0x121)]('\x0a')['filter'](_0x183332=>_0x183332['trim']());for(const _0x49a7ae of _0x589eb3){const _0xbbb4eb=_0x49a7ae[_0x3dc630(0x16d)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0xbbb4eb){const [,_0xc067b8,_0x410c7a,_0x230d8a,_0x4571f7,_0x373b6b,_0x3cfaa2]=_0xbbb4eb;_0x1860aa[_0x3dc630(0x168)]({'file':_0x1b5a16,'line':parseInt(_0x410c7a,0xa),'column':parseInt(_0x230d8a,0xa),'severity':this['mapYamllintSeverity'](_0x4571f7),'rule':_0x3cfaa2,'message':_0x373b6b,'category':'yaml','validator':_0x3dc630(0x150)});}}return _0x1860aa;}async['validateWithCheckov'](_0x18a859,_0x504b95,_0x565094={}){const _0x55b16d=a0_0x547241;try{const _0x5a2bf6=await execAsync('checkov\x20-f\x20\x22'+_0x18a859+_0x55b16d(0x174)+_0x504b95+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x2c9761=JSON['parse'](_0x5a2bf6['stdout']);return this[_0x55b16d(0x12c)](_0x2c9761,_0x18a859);}catch(_0x2f58f8){if(_0x2f58f8[_0x55b16d(0x160)])try{const _0x5a1b44=JSON['parse'](_0x2f58f8[_0x55b16d(0x160)]);return this['parseCheckovResults'](_0x5a1b44,_0x18a859);}catch(_0x2cbd79){this['logger']?.[_0x55b16d(0x14c)](_0x55b16d(0x14f),{'error':_0x2cbd79['message']});}return this[_0x55b16d(0x146)]?.[_0x55b16d(0x14c)](_0x55b16d(0x11f),{'error':_0x2f58f8['message']}),[];}}[a0_0x547241(0x12c)](_0x12b2ea,_0x2d3202){const _0x3ffb01=a0_0x547241,_0x25cd30=[];if(_0x12b2ea[_0x3ffb01(0x142)]&&_0x12b2ea['results'][_0x3ffb01(0x10c)])for(const _0x1adcaf of _0x12b2ea[_0x3ffb01(0x142)][_0x3ffb01(0x10c)]){_0x25cd30['push']({'file':_0x2d3202,'line':_0x1adcaf['file_line_range']?_0x1adcaf[_0x3ffb01(0x135)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x1adcaf['check_class']),'rule':_0x1adcaf['check_id'],'message':_0x1adcaf['check_name']||_0x1adcaf['check_id'],'category':'security','validator':_0x3ffb01(0x16c),'remediation':_0x1adcaf['guideline'],'cwe':_0x1adcaf['cwe'],'references':_0x1adcaf[_0x3ffb01(0x110)]?[_0x1adcaf[_0x3ffb01(0x110)]]:[]});}return _0x25cd30;}async['validatePackageJson'](_0x56301e,_0x5e01a5={}){const _0x381ba7=a0_0x547241;try{const _0x59bbaf=(await import(_0x381ba7(0xfd)))['default'],_0x7bf8ef=(await import(_0x381ba7(0x101)))[_0x381ba7(0x156)],_0x2b8be7=await a0_0x1a4c7f[_0x381ba7(0x145)](_0x56301e,'utf-8'),_0xd4616b=JSON[_0x381ba7(0x137)](_0x2b8be7),_0x37d414=new _0x59bbaf({'allErrors':!![],'strict':![]});_0x7bf8ef(_0x37d414);const _0x38e1c7={'type':'object','required':['name',_0x381ba7(0x138)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x381ba7(0x133)},'description':{'type':'string'},'main':{'type':_0x381ba7(0x133)},'type':{'type':_0x381ba7(0x133),'enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x381ba7(0x169)},'devDependencies':{'type':_0x381ba7(0x169)}},'additionalProperties':!![]},_0x57afa9=_0x37d414[_0x381ba7(0x113)](_0x38e1c7),_0x115823=_0x57afa9(_0xd4616b);if(!_0x115823&&_0x57afa9['errors'])return _0x57afa9[_0x381ba7(0x162)][_0x381ba7(0x103)](_0xaa430e=>({'file':_0x56301e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x381ba7(0x119)],'rule':_0x381ba7(0xfa),'message':_0xaa430e[_0x381ba7(0x152)]?_0xaa430e[_0x381ba7(0x152)]+'\x20'+_0xaa430e['message']:'must\x20have\x20required\x20property\x20\x27'+_0xaa430e[_0x381ba7(0x106)]['missingProperty']+'\x27','category':'validation','validator':_0x381ba7(0xfa)}));return[];}catch(_0x4fd416){return this['logger']?.[_0x381ba7(0x14c)](_0x381ba7(0x13d),{'error':_0x4fd416[_0x381ba7(0x115)]}),[{'file':_0x56301e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x381ba7(0x167)]['ERROR'],'rule':_0x381ba7(0x13c),'message':'Invalid\x20JSON:\x20'+_0x4fd416['message'],'category':_0x381ba7(0x16e),'validator':'json-parse'}];}}async[a0_0x547241(0x11a)](_0x16f337,_0x58d506={}){const _0xe896af=a0_0x547241;try{const _0xf07465=await a0_0x1a4c7f[_0xe896af(0x145)](_0x16f337,'utf-8'),_0x427d07=JSON['parse'](_0xf07465),_0x4d3ac3=[];if(_0x427d07[_0xe896af(0x10f)]){const _0x583283=_0x427d07[_0xe896af(0x10f)];!_0x583283['strict']&&_0x4d3ac3['push']({'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)]['WARNING'],'rule':'strict-mode','message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':'best-practice','validator':_0xe896af(0x114)}),_0x583283[_0xe896af(0x16b)]===![]&&_0x4d3ac3[_0xe896af(0x168)]({'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)][_0xe896af(0x10b)],'rule':_0xe896af(0xfb),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':'tsconfig-validator'});}return _0x4d3ac3;}catch(_0x1c0ddd){return this['logger']?.[_0xe896af(0x14c)]('tsconfig.json\x20validation\x20failed',{'error':_0x1c0ddd[_0xe896af(0x115)]}),[{'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)][_0xe896af(0x119)],'rule':_0xe896af(0x13c),'message':_0xe896af(0x12b)+_0x1c0ddd['message'],'category':'syntax','validator':_0xe896af(0x13c)}];}}async[a0_0x547241(0x140)](_0x50282b,_0x55d160={}){const _0x143e53=a0_0x547241;try{const _0x5ba281=await a0_0x1a4c7f[_0x143e53(0x145)](_0x50282b,_0x143e53(0x111)),_0x357988=[],_0x4ba6b4=_0x5ba281['split']('\x0a'),_0x38c720=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x143e53(0x158)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x143e53(0x100)}];return _0x4ba6b4[_0x143e53(0x15a)]((_0x31c16f,_0x6390a8)=>{const _0x1a11dd=_0x143e53,_0xf1de21=_0x31c16f[_0x1a11dd(0x126)]();if(!_0xf1de21||_0xf1de21[_0x1a11dd(0x173)]('#'))return;if(_0xf1de21[_0x1a11dd(0x13f)]('=')){const [_0x2b308c,_0x32dcc6]=_0xf1de21[_0x1a11dd(0x121)]('='),_0x292c22=_0x2b308c['toLowerCase'](),_0xd611c2=_0x32dcc6?.[_0x1a11dd(0x126)]()||'',_0x495615=_0xd611c2&&_0xd611c2!==''&&!_0xd611c2[_0x1a11dd(0x173)]('$')&&_0xd611c2!==_0x1a11dd(0x12e)&&_0xd611c2!==_0x1a11dd(0x163)&&_0xd611c2[_0x1a11dd(0x155)]>0x5;if(_0x495615)for(const {pattern:_0x108607,name:_0xb18fe2}of _0x38c720){if(_0x108607[_0x1a11dd(0x109)](_0x292c22)){_0x357988[_0x1a11dd(0x168)]({'file':_0x50282b,'line':_0x6390a8+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x1a11dd(0x166)],'rule':'hardcoded-secret','message':_0x1a11dd(0xfc)+_0xb18fe2+_0x1a11dd(0x172),'category':_0x1a11dd(0x11e),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x357988;}catch(_0x33c31b){return this[_0x143e53(0x146)]?.['error'](_0x143e53(0x10a),{'error':_0x33c31b[_0x143e53(0x115)]}),[];}}['detectFileType'](_0x59711c){const _0x3589a1=a0_0x547241,_0x164d40=a0_0x1383c4['basename'](_0x59711c)['toLowerCase'](),_0x29e5c7=a0_0x1383c4[_0x3589a1(0x124)](_0x59711c);if(_0x164d40===_0x3589a1(0x14b))return _0x3589a1(0x14b);if(_0x164d40===_0x3589a1(0x14a)||_0x164d40===_0x3589a1(0x149))return'docker-compose';if(_0x164d40==='package.json')return'package.json';if(_0x164d40==='tsconfig.json')return _0x3589a1(0x148);if(_0x164d40==='.env'||_0x164d40[_0x3589a1(0x15d)](_0x3589a1(0x13a)))return'env';if(_0x29e5c7['includes'](_0x3589a1(0x14d)))return'github-actions';if(_0x29e5c7['includes']('kubernetes')||_0x29e5c7['includes'](_0x3589a1(0x153)))return _0x3589a1(0x14e);const _0x49cf23=a0_0x1383c4[_0x3589a1(0x10d)](_0x59711c)['toLowerCase']();if(_0x49cf23===_0x3589a1(0x132)||_0x49cf23==='.tfvars')return _0x3589a1(0x13e);if(_0x49cf23==='.yml'||_0x49cf23==='.yaml')return _0x3589a1(0x15b);if(_0x49cf23==='.json')return _0x3589a1(0x105);return _0x3589a1(0x128);}['normalizeResults'](_0x4f52b3){const _0x2c89b0=a0_0x547241;return _0x4f52b3[_0x2c89b0(0x103)](_0x112b5b=>({'file':_0x112b5b['file'],'line':_0x112b5b['line']||0x1,'column':_0x112b5b[_0x2c89b0(0x120)]||0x1,'severity':_0x112b5b[_0x2c89b0(0x129)]||STATIC_ANALYSIS[_0x2c89b0(0x167)][_0x2c89b0(0x10b)],'rule':_0x112b5b['rule']||'unknown','message':_0x112b5b[_0x2c89b0(0x115)]||_0x2c89b0(0x165),'category':_0x112b5b['category']||_0x2c89b0(0xfe),'validator':_0x112b5b['validator'],'cwe':_0x112b5b[_0x2c89b0(0x143)]||null,'remediation':_0x112b5b[_0x2c89b0(0x161)]||null,'references':_0x112b5b['references']||[]}));}['mapHadolintSeverity'](_0x2c9225){const _0x4ceb17=a0_0x547241,_0x25ca5a={'error':STATIC_ANALYSIS['SEVERITY'][_0x4ceb17(0x119)],'warning':STATIC_ANALYSIS[_0x4ceb17(0x167)]['WARNING'],'info':STATIC_ANALYSIS[_0x4ceb17(0x167)]['INFO'],'style':STATIC_ANALYSIS[_0x4ceb17(0x167)][_0x4ceb17(0x171)]};return _0x25ca5a[_0x2c9225?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY'][_0x4ceb17(0x10b)];}['mapYamllintSeverity'](_0x20e8bd){const _0x50b6d0=a0_0x547241,_0x18bd5e={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x50b6d0(0x167)]['WARNING']};return _0x18bd5e[_0x20e8bd?.[_0x50b6d0(0x102)]()]||STATIC_ANALYSIS[_0x50b6d0(0x167)]['WARNING'];}[a0_0x547241(0x134)](_0x52276e){const _0x2c6a49=a0_0x547241;return STATIC_ANALYSIS[_0x2c6a49(0x167)][_0x2c6a49(0x119)];}async['getValidatorStatus'](){const _0x346d3b=a0_0x547241,_0x576cb1=await this[_0x346d3b(0x15c)]();return{'validators':_0x576cb1,'recommendations':this[_0x346d3b(0x12f)](_0x576cb1)};}['getInstallRecommendations'](_0x426d98){const _0x2b59e8=a0_0x547241,_0x452aab=[];return!_0x426d98['checkov']&&_0x452aab[_0x2b59e8(0x168)]({'validator':'checkov','reason':_0x2b59e8(0x164),'install':'pip\x20install\x20checkov','priority':_0x2b59e8(0x12a)}),!_0x426d98['hadolint']&&_0x452aab['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x426d98[_0x2b59e8(0x150)]&&_0x452aab['push']({'validator':_0x2b59e8(0x150),'reason':_0x2b59e8(0x16a),'install':'pip\x20install\x20yamllint','priority':_0x2b59e8(0x10e)}),!_0x426d98['jsonSchema']&&_0x452aab['push']({'validator':_0x2b59e8(0x157),'reason':_0x2b59e8(0x11c),'install':_0x2b59e8(0x13b),'priority':_0x2b59e8(0x10e)}),_0x452aab;}}export default ConfigValidator;