@loxia-labs/loxia-autopilot-one 2.0.7 → 2.0.10

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 (146) hide show
  1. package/README.md +4 -2
  2. package/bin/cli.js +1 -1
  3. package/bin/loxia-terminal-v2.js +1 -1
  4. package/bin/loxia-terminal.js +1 -1
  5. package/bin/start-with-terminal.js +1 -1
  6. package/package.json +1 -1
  7. package/scripts/install-scanners.js +1 -1
  8. package/scripts/watchdog.js +1 -1
  9. package/src/analyzers/CSSAnalyzer.js +1 -1
  10. package/src/analyzers/ConfigValidator.js +1 -1
  11. package/src/analyzers/ESLintAnalyzer.js +1 -1
  12. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  13. package/src/analyzers/PrettierFormatter.js +1 -1
  14. package/src/analyzers/PythonAnalyzer.js +1 -1
  15. package/src/analyzers/SecurityAnalyzer.js +1 -1
  16. package/src/analyzers/SparrowAnalyzer.js +1 -1
  17. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  18. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  19. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  20. package/src/analyzers/codeCloneDetector/index.js +1 -1
  21. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  22. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  23. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  24. package/src/core/agentPool.js +1 -1
  25. package/src/core/agentScheduler.js +1 -1
  26. package/src/core/contextManager.js +1 -1
  27. package/src/core/flowExecutor.js +1 -1
  28. package/src/core/messageProcessor.js +1 -1
  29. package/src/core/orchestrator.js +1 -1
  30. package/src/core/stateManager.js +1 -1
  31. package/src/index.js +1 -1
  32. package/src/interfaces/cli.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  38. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  39. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  40. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  41. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  42. package/src/interfaces/terminal/api/apiClient.js +1 -1
  43. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  44. package/src/interfaces/terminal/api/session.js +1 -1
  45. package/src/interfaces/terminal/api/websocket.js +1 -1
  46. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  47. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  48. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  49. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  50. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  51. package/src/interfaces/terminal/components/Header.js +1 -1
  52. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  53. package/src/interfaces/terminal/components/InputBox.js +1 -1
  54. package/src/interfaces/terminal/components/Layout.js +1 -1
  55. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  56. package/src/interfaces/terminal/components/MessageList.js +1 -1
  57. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  58. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  59. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  60. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  61. package/src/interfaces/terminal/components/TextInput.js +1 -1
  62. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  63. package/src/interfaces/terminal/config/constants.js +1 -1
  64. package/src/interfaces/terminal/index.js +1 -1
  65. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  66. package/src/interfaces/terminal/state/useAgents.js +1 -1
  67. package/src/interfaces/terminal/state/useConnection.js +1 -1
  68. package/src/interfaces/terminal/state/useMessages.js +1 -1
  69. package/src/interfaces/terminal/state/useTools.js +1 -1
  70. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  71. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  72. package/src/interfaces/terminal/utils/theme.js +1 -1
  73. package/src/interfaces/webServer.js +1 -1
  74. package/src/modules/fileExplorer/controller.js +1 -1
  75. package/src/modules/fileExplorer/index.js +1 -1
  76. package/src/modules/fileExplorer/middleware.js +1 -1
  77. package/src/modules/fileExplorer/routes.js +1 -1
  78. package/src/services/agentActivityService.js +1 -1
  79. package/src/services/aiService.js +1 -1
  80. package/src/services/apiKeyManager.js +1 -1
  81. package/src/services/benchmarkService.js +1 -1
  82. package/src/services/budgetService.js +1 -1
  83. package/src/services/contextInjectionService.js +1 -1
  84. package/src/services/conversationCompactionService.js +1 -1
  85. package/src/services/credentialVault.js +1 -1
  86. package/src/services/errorHandler.js +1 -1
  87. package/src/services/fileAttachmentService.js +1 -1
  88. package/src/services/flowContextService.js +1 -1
  89. package/src/services/memoryService.js +1 -1
  90. package/src/services/modelRouterService.js +1 -1
  91. package/src/services/modelsService.js +1 -1
  92. package/src/services/portRegistry.js +1 -1
  93. package/src/services/portTracker.js +1 -1
  94. package/src/services/projectDetector.js +1 -1
  95. package/src/services/promptService.js +1 -1
  96. package/src/services/qualityInspector.js +1 -1
  97. package/src/services/serviceRegistry.js +1 -1
  98. package/src/services/tokenCountingService.js +1 -1
  99. package/src/services/visualEditorBridge.js +1 -1
  100. package/src/services/visualEditorServer.js +1 -1
  101. package/src/tools/agentCommunicationTool.js +1 -1
  102. package/src/tools/agentDelayTool.js +1 -1
  103. package/src/tools/asyncToolManager.js +1 -1
  104. package/src/tools/baseTool.js +1 -1
  105. package/src/tools/browserTool.js +1 -1
  106. package/src/tools/cloneDetectionTool.js +1 -1
  107. package/src/tools/dependencyResolverTool.js +1 -1
  108. package/src/tools/docxTool.js +1 -1
  109. package/src/tools/excelTool.js +1 -1
  110. package/src/tools/fileContentReplaceTool.js +1 -1
  111. package/src/tools/fileSystemTool.js +1 -1
  112. package/src/tools/fileTreeTool.js +1 -1
  113. package/src/tools/helpTool.js +1 -1
  114. package/src/tools/imageTool.js +1 -1
  115. package/src/tools/importAnalyzerTool.js +1 -1
  116. package/src/tools/jobDoneTool.js +1 -1
  117. package/src/tools/memoryTool.js +1 -1
  118. package/src/tools/pdfTool.js +1 -1
  119. package/src/tools/seekTool.js +1 -1
  120. package/src/tools/staticAnalysisTool.js +1 -1
  121. package/src/tools/taskManagerTool.js +1 -1
  122. package/src/tools/terminalTool.js +1 -1
  123. package/src/tools/userPromptTool.js +1 -1
  124. package/src/tools/videoTool.js +1 -1
  125. package/src/tools/visualEditorTool.js +1 -1
  126. package/src/tools/webTool.js +1 -1
  127. package/src/types/agent.js +1 -1
  128. package/src/types/contextReference.js +1 -1
  129. package/src/types/conversation.js +1 -1
  130. package/src/types/toolCommand.js +1 -1
  131. package/src/utilities/attachmentValidator.js +1 -1
  132. package/src/utilities/browserStealth.js +1 -1
  133. package/src/utilities/configManager.js +1 -1
  134. package/src/utilities/constants.js +1 -1
  135. package/src/utilities/directoryAccessManager.js +1 -1
  136. package/src/utilities/fileProcessor.js +1 -1
  137. package/src/utilities/humanBehavior.js +1 -1
  138. package/src/utilities/jsonRepair.js +1 -1
  139. package/src/utilities/logger.js +1 -1
  140. package/src/utilities/platformUtils.js +1 -1
  141. package/src/utilities/platformUtils.test.js +1 -1
  142. package/src/utilities/stealthConstants.js +1 -1
  143. package/src/utilities/structuredFileValidator.js +1 -1
  144. package/src/utilities/tagParser.js +1 -1
  145. package/src/utilities/toolConstants.js +1 -1
  146. package/src/utilities/userDataDir.js +1 -1
package/README.md CHANGED
@@ -98,7 +98,7 @@ npm install -g @loxia-labs/loxia-autopilot-one
98
98
 
99
99
  ```bash
100
100
  loxia --version
101
- # Should display: Loxia Autopilot One v2.0.7
101
+ # Should display: Loxia Autopilot One v2.0.10
102
102
  ```
103
103
 
104
104
  ### 4. Create an API Key
@@ -297,8 +297,10 @@ Loxia comes with 18+ specialized tools that agents can use autonomously:
297
297
 
298
298
  ## Roadmap
299
299
 
300
- ### Current Version (2.0.7)
300
+ ### Current Version (2.0.10)
301
301
 
302
+ - Unified `MAX_OUTPUT_TOKENS` constant (10,000) shared by aiService and compaction check
303
+ - Max output tokens capped at 10,000 (was 4,000 fallback for dynamic models)
302
304
  - Compaction: preserve recent achievements, file paths, meaningful tool outcomes; 8K summary tokens
303
305
  - Tool invocation guidance: dependent calls must split across messages
304
306
  - CI publish fix: OIDC auth no longer interferes with npm install
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x4122c6=a0_0x3d78;(function(_0x4344b9,_0x55f9b0){const _0x44cc8f=a0_0x3d78,_0x5d0016=_0x4344b9();while(!![]){try{const _0x2cda76=parseInt(_0x44cc8f(0x202))/0x1*(-parseInt(_0x44cc8f(0x1f4))/0x2)+-parseInt(_0x44cc8f(0x1f9))/0x3+-parseInt(_0x44cc8f(0x215))/0x4+-parseInt(_0x44cc8f(0x1fd))/0x5*(-parseInt(_0x44cc8f(0x204))/0x6)+-parseInt(_0x44cc8f(0x22e))/0x7+-parseInt(_0x44cc8f(0x234))/0x8+parseInt(_0x44cc8f(0x20f))/0x9;if(_0x2cda76===_0x55f9b0)break;else _0x5d0016['push'](_0x5d0016['shift']());}catch(_0x23d319){_0x5d0016['push'](_0x5d0016['shift']());}}}(a0_0x53d0,0xcb831));import{fileURLToPath}from'url';function a0_0x53d0(){const _0x2645b7=['\x20but\x20not\x20responding.','Please\x20open\x20manually:\x20','6303464AbnFkl','Loxia\x20Autopilot\x20One\x20v','Starting\x20Loxia\x20server...\x0a','log','../src/services/portRegistry.js','LOXIA_PORT','darwin','src','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','Server\x20discovered\x20at\x20','\x0aLoxia\x20Autopilot\x20One\x20v','--help','\x0aPlease\x20start\x20the\x20server\x20first:','now','destroy','cmd','Starting\x20Terminal\x20UI...\x0a','package.json','SIGTERM','utf8','includes','LOXIA_HOST','--port','help','web','11265891AQONjW','Waiting\x20for\x20server\x20to\x20start...','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','inherit','message','error','9152680qSgyJq','ignore','getService','port','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','Looking\x20for\x20running\x20server...','Server\x20running\x20at\x20http://','kill','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','Starting\x20Loxia\x20server\x20in\x20background...','version','index.js','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','\x0aShutting\x20down\x20server...','\x0a✓\x20Server\x20running\x20at\x20','parse','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','2TVczRu','\x0aOpening\x20Web\x20UI\x20at\x20','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','xdg-open','3743904tYPxCw','--version','loxia-terminal.js','win32','25405gccmPo','--host','cleanupStaleEntries','localhost','unref','68851VyCNmA',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','1134djzLWW','\x0aServer\x20registered\x20at\x20','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','length','pid','SIGINT','exit','127.0.0.1','Unknown\x20command:\x20','http://','platform','49675131sAVPPj','host','ceil','toString'];a0_0x53d0=function(){return _0x2645b7;};return a0_0x53d0();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';function a0_0x3d78(_0x1f0c60,_0x127daa){_0x1f0c60=_0x1f0c60-0x1e5;const _0x53d078=a0_0x53d0();let _0x3d78a2=_0x53d078[_0x1f0c60];return _0x3d78a2;}import a0_0x31cbd9 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x4122c6(0x20b),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv']['slice'](0x2),command=args[0x0]&&!args[0x0]['startsWith']('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes'](a0_0x4122c6(0x220))||args[a0_0x4122c6(0x229)]('-h'),'version':args['includes'](a0_0x4122c6(0x1fa))||args[a0_0x4122c6(0x229)]('-v')};for(let i=0x0;i<args[a0_0x4122c6(0x207)];i++){args[i]===a0_0x4122c6(0x22b)&&args[i+0x1]&&(flags[a0_0x4122c6(0x1e6)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x4122c6(0x1fe)&&args[i+0x1]&&(flags[a0_0x4122c6(0x210)]=args[i+0x1]);}const explicitPort=flags[a0_0x4122c6(0x1e6)],host=flags['host']||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x4122c6(0x226)),pkg=JSON[a0_0x4122c6(0x1f2)](readFileSync(pkgPath,a0_0x4122c6(0x228)));console[a0_0x4122c6(0x218)](a0_0x4122c6(0x216)+pkg[a0_0x4122c6(0x1ed)]),process[a0_0x4122c6(0x20a)](0x0);}if(flags[a0_0x4122c6(0x22c)]||!command){const pkgPath=join(__dirname,'..',a0_0x4122c6(0x226)),pkg=JSON['parse'](readFileSync(pkgPath,'utf8'));console[a0_0x4122c6(0x218)](a0_0x4122c6(0x21f)+pkg[a0_0x4122c6(0x1ed)]+'\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'+DEFAULT_PORT+a0_0x4122c6(0x203)+DEFAULT_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'),process[a0_0x4122c6(0x20a)](0x0);}async function getPortRegistry(){const _0x394bce=a0_0x4122c6,{getPortRegistry:_0x1f2090}=await import(_0x394bce(0x219));return _0x1f2090();}async function discoverBackend(){const _0x23e6ef=a0_0x4122c6;try{const _0xc91dde=await getPortRegistry();await _0xc91dde[_0x23e6ef(0x1ff)]();const _0x3bdfd8=await _0xc91dde[_0x23e6ef(0x1e5)]('backend');if(_0x3bdfd8)return{'host':_0x3bdfd8[_0x23e6ef(0x210)]||_0x23e6ef(0x200),'port':_0x3bdfd8['port'],'pid':_0x3bdfd8[_0x23e6ef(0x208)]};return null;}catch(_0xbb3779){return null;}}async function checkServerRunning(_0x2406ad,_0x22c035,_0x18bdd4=0x1){for(let _0x38609a=0x0;_0x38609a<_0x18bdd4;_0x38609a++){const _0xe75624=await new Promise(_0x12352b=>{const _0x217076=a0_0x3d78,_0x1ed49b=a0_0x31cbd9['get'](_0x217076(0x20d)+_0x2406ad+':'+_0x22c035+'/api/health',_0x36d243=>{_0x12352b(_0x36d243['statusCode']===0xc8);});_0x1ed49b['on'](_0x217076(0x233),()=>_0x12352b(![])),_0x1ed49b['setTimeout'](0x7d0,()=>{const _0x2efc45=_0x217076;_0x1ed49b[_0x2efc45(0x223)](),_0x12352b(![]);});});if(_0xe75624)return!![];_0x38609a<_0x18bdd4-0x1&&await new Promise(_0x4a49f3=>setTimeout(_0x4a49f3,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x5ea7c6=SERVER_STARTUP_TIMEOUT){const _0xf8ff1=a0_0x4122c6,_0x15037c=Date[_0xf8ff1(0x222)]();while(Date[_0xf8ff1(0x222)]()-_0x15037c<_0x5ea7c6){const _0x3c7819=await discoverBackend();if(_0x3c7819){const _0x2b6d72=await checkServerRunning(_0x3c7819[_0xf8ff1(0x210)],_0x3c7819['port']);if(_0x2b6d72)return _0x3c7819;}await new Promise(_0x549385=>setTimeout(_0x549385,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x247a7c,_0x5a8adc,_0x57bd72=SERVER_STARTUP_TIMEOUT){const _0x418849=a0_0x4122c6,_0x3b6af2=Math[_0x418849(0x211)](_0x57bd72/SERVER_CHECK_INTERVAL),_0x299350=await checkServerRunning(_0x247a7c,_0x5a8adc,_0x3b6af2);return _0x299350?{'host':_0x247a7c,'port':_0x5a8adc}:null;}function openBrowser(_0x44189b){const _0x2a8afa=a0_0x4122c6;let _0x467627,_0x23917c;if(process['platform']===_0x2a8afa(0x21b))_0x467627='open',_0x23917c=[_0x44189b];else process[_0x2a8afa(0x20e)]===_0x2a8afa(0x1fc)?(_0x467627=_0x2a8afa(0x224),_0x23917c=['/c','start','\x22\x22',_0x44189b]):(_0x467627=_0x2a8afa(0x1f8),_0x23917c=[_0x44189b]);const _0x43508e=spawn(_0x467627,_0x23917c,{'detached':!![],'stdio':_0x2a8afa(0x235)});_0x43508e[_0x2a8afa(0x201)](),_0x43508e['on'](_0x2a8afa(0x233),()=>{const _0x26bbc1=_0x2a8afa;console[_0x26bbc1(0x218)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x26bbc1(0x218)](_0x26bbc1(0x214)+_0x44189b);});}function startServer(_0x19ecd8=![]){const _0x24a03d=a0_0x4122c6,_0x108804={...process.env};explicitPort&&(_0x108804[_0x24a03d(0x21a)]=explicitPort['toString'](),_0x108804['PORT']=explicitPort[_0x24a03d(0x212)]());flags[_0x24a03d(0x210)]&&(_0x108804[_0x24a03d(0x22a)]=flags[_0x24a03d(0x210)]);const _0x1c52b0=join(__dirname,'..',_0x24a03d(0x21c),_0x24a03d(0x1ee)),_0x9a5b9f=spawn('node',[_0x1c52b0],{'cwd':join(__dirname,'..'),'env':_0x108804,'stdio':_0x19ecd8?[_0x24a03d(0x235),'ignore','ignore']:_0x24a03d(0x231),'detached':_0x19ecd8});return _0x19ecd8&&_0x9a5b9f[_0x24a03d(0x201)](),_0x9a5b9f;}function startTerminalUIProcess(_0x84f496,_0x403a19){const _0x1ca86e=a0_0x4122c6,_0x3a3ac9=join(__dirname,_0x1ca86e(0x1fb)),_0x3107d2={...process.env,'LOXIA_PORT':_0x403a19['toString'](),'LOXIA_HOST':_0x84f496},_0x5aee5c=spawn('node',[_0x3a3ac9],{'cwd':join(__dirname,'..'),'env':_0x3107d2,'stdio':_0x1ca86e(0x231)});return _0x5aee5c;}const commands={'web':async()=>{const _0x520cc8=a0_0x4122c6;console[_0x520cc8(0x218)](_0x520cc8(0x217));const _0x54f582=startServer(![]);console[_0x520cc8(0x218)](_0x520cc8(0x22f));let _0x4d1fbe;explicitPort?_0x4d1fbe=await waitForServerAtPort(host,explicitPort):_0x4d1fbe=await waitForServerWithDiscovery();if(_0x4d1fbe){const _0x62b977='http://'+_0x4d1fbe['host']+':'+_0x4d1fbe[_0x520cc8(0x1e6)];console['log'](_0x520cc8(0x1f5)+_0x62b977),openBrowser(_0x62b977);}else console[_0x520cc8(0x218)](_0x520cc8(0x1ef));process['on'](_0x520cc8(0x209),()=>_0x54f582[_0x520cc8(0x1ea)]('SIGINT')),process['on'](_0x520cc8(0x227),()=>_0x54f582['kill'](_0x520cc8(0x227))),_0x54f582['on'](_0x520cc8(0x20a),_0x551d9b=>process[_0x520cc8(0x20a)](_0x551d9b||0x0));},'plus-web':async()=>{const _0x217b1e=a0_0x4122c6;await commands[_0x217b1e(0x22d)]();},'serve':async()=>{const _0x455d61=a0_0x4122c6;console[_0x455d61(0x218)](_0x455d61(0x217));const _0x17eb52=startServer(![]);console[_0x455d61(0x218)](_0x455d61(0x22f));let _0x23d3ab;explicitPort?_0x23d3ab=await waitForServerAtPort(host,explicitPort):_0x23d3ab=await waitForServerWithDiscovery();if(_0x23d3ab){const _0x1192d8=_0x455d61(0x20d)+_0x23d3ab[_0x455d61(0x210)]+':'+_0x23d3ab[_0x455d61(0x1e6)];console['log'](_0x455d61(0x1f1)+_0x1192d8),console[_0x455d61(0x218)](_0x455d61(0x230)+_0x1192d8),console[_0x455d61(0x218)](_0x455d61(0x1e7)),console[_0x455d61(0x218)]('\x20\x20API\x20Health:\x20\x20\x20'+_0x1192d8+'/api/health\x0a');}else console[_0x455d61(0x218)](_0x455d61(0x1f7)),console[_0x455d61(0x218)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on'](_0x455d61(0x209),()=>_0x17eb52[_0x455d61(0x1ea)](_0x455d61(0x209))),process['on'](_0x455d61(0x227),()=>_0x17eb52['kill'](_0x455d61(0x227))),_0x17eb52['on'](_0x455d61(0x20a),_0x2ff4a6=>process[_0x455d61(0x20a)](_0x2ff4a6||0x0));},'terminal':async()=>{const _0x4e6af3=a0_0x4122c6;console[_0x4e6af3(0x218)](_0x4e6af3(0x1e8));let _0x237116=await discoverBackend();explicitPort&&(_0x237116={'host':host,'port':explicitPort});!_0x237116&&(console[_0x4e6af3(0x233)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x4e6af3(0x233)](_0x4e6af3(0x221)),console[_0x4e6af3(0x233)](_0x4e6af3(0x206)),console[_0x4e6af3(0x233)](_0x4e6af3(0x1f3)),console['error'](_0x4e6af3(0x1f6)),process['exit'](0x1));const _0x2b75ab=await checkServerRunning(_0x237116[_0x4e6af3(0x210)],_0x237116[_0x4e6af3(0x1e6)]);!_0x2b75ab&&(console[_0x4e6af3(0x233)](_0x4e6af3(0x205)+_0x237116[_0x4e6af3(0x210)]+':'+_0x237116[_0x4e6af3(0x1e6)]+_0x4e6af3(0x213)),console[_0x4e6af3(0x233)](_0x4e6af3(0x1eb)),process['exit'](0x1));console['log'](_0x4e6af3(0x21e)+_0x237116[_0x4e6af3(0x210)]+':'+_0x237116[_0x4e6af3(0x1e6)]),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x2c9a91=startTerminalUIProcess(_0x237116[_0x4e6af3(0x210)],_0x237116[_0x4e6af3(0x1e6)]);process['on'](_0x4e6af3(0x209),()=>_0x2c9a91[_0x4e6af3(0x1ea)](_0x4e6af3(0x209))),process['on'](_0x4e6af3(0x227),()=>_0x2c9a91[_0x4e6af3(0x1ea)](_0x4e6af3(0x227))),_0x2c9a91['on'](_0x4e6af3(0x20a),_0x2cb993=>process[_0x4e6af3(0x20a)](_0x2cb993||0x0));},'plus-terminal':async()=>{const _0x2ab914=a0_0x4122c6;console['log'](_0x2ab914(0x1ec));const _0x53b4cd=startServer(!![]);let _0x58c7c3;explicitPort?_0x58c7c3=await waitForServerAtPort(host,explicitPort):_0x58c7c3=await waitForServerWithDiscovery();!_0x58c7c3&&(console[_0x2ab914(0x233)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process[_0x2ab914(0x20a)](0x1));console[_0x2ab914(0x218)](_0x2ab914(0x1e9)+_0x58c7c3[_0x2ab914(0x210)]+':'+_0x58c7c3['port']),console[_0x2ab914(0x218)](_0x2ab914(0x225));const _0x1f374e=startTerminalUIProcess(_0x58c7c3[_0x2ab914(0x210)],_0x58c7c3['port']);_0x1f374e['on']('exit',_0x5dfc8e=>{const _0x174174=_0x2ab914;console['log'](_0x174174(0x1f0));try{process[_0x174174(0x1ea)](_0x53b4cd[_0x174174(0x208)],'SIGTERM');}catch(_0x5bede6){}process['exit'](_0x5dfc8e||0x0);}),process['on'](_0x2ab914(0x209),()=>{const _0x48bb64=_0x2ab914;_0x1f374e[_0x48bb64(0x1ea)](_0x48bb64(0x209));}),process['on']('SIGTERM',()=>{const _0x2de10c=_0x2ab914;_0x1f374e[_0x2de10c(0x1ea)](_0x2de10c(0x227));});}};commands[command]?commands[command]()['catch'](_0x2278b1=>{const _0x48be96=a0_0x4122c6;console[_0x48be96(0x233)]('Error:',_0x2278b1[_0x48be96(0x232)]),process['exit'](0x1);}):(console[a0_0x4122c6(0x233)](a0_0x4122c6(0x20c)+command),console[a0_0x4122c6(0x233)](a0_0x4122c6(0x21d)),process['exit'](0x1));
3
+ const a0_0x267056=a0_0x1f46;(function(_0x5d196d,_0x5eb8bf){const _0x16bf9d=a0_0x1f46,_0x8fe513=_0x5d196d();while(!![]){try{const _0x1ba527=parseInt(_0x16bf9d(0x1e1))/0x1*(-parseInt(_0x16bf9d(0x1fc))/0x2)+-parseInt(_0x16bf9d(0x20b))/0x3*(-parseInt(_0x16bf9d(0x1c1))/0x4)+-parseInt(_0x16bf9d(0x1f6))/0x5*(parseInt(_0x16bf9d(0x1e9))/0x6)+parseInt(_0x16bf9d(0x1c4))/0x7*(-parseInt(_0x16bf9d(0x1ed))/0x8)+parseInt(_0x16bf9d(0x203))/0x9+parseInt(_0x16bf9d(0x204))/0xa*(-parseInt(_0x16bf9d(0x1d5))/0xb)+parseInt(_0x16bf9d(0x20f))/0xc;if(_0x1ba527===_0x5eb8bf)break;else _0x8fe513['push'](_0x8fe513['shift']());}catch(_0x44319b){_0x8fe513['push'](_0x8fe513['shift']());}}}(a0_0x40c8,0x48afe));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x1650c8 from'http';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[a0_0x267056(0x208)]['slice'](0x2),command=args[0x0]&&!args[0x0][a0_0x267056(0x201)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x267056(0x1d7)]('--help')||args[a0_0x267056(0x1d7)]('-h'),'version':args[a0_0x267056(0x1d7)](a0_0x267056(0x1c6))||args[a0_0x267056(0x1d7)]('-v')};for(let i=0x0;i<args[a0_0x267056(0x1eb)];i++){args[i]===a0_0x267056(0x210)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]===a0_0x267056(0x1d0)&&args[i+0x1]&&(flags[a0_0x267056(0x212)]=args[i+0x1]);}const explicitPort=flags[a0_0x267056(0x1ff)],host=flags['host']||DEFAULT_HOST;if(flags[a0_0x267056(0x1db)]){const pkgPath=join(__dirname,'..',a0_0x267056(0x1e7)),pkg=JSON[a0_0x267056(0x1f1)](readFileSync(pkgPath,a0_0x267056(0x1f9)));console[a0_0x267056(0x1de)](a0_0x267056(0x1c2)+pkg['version']),process[a0_0x267056(0x1e0)](0x0);}if(flags[a0_0x267056(0x1c0)]||!command){const pkgPath=join(__dirname,'..',a0_0x267056(0x1e7)),pkg=JSON[a0_0x267056(0x1f1)](readFileSync(pkgPath,a0_0x267056(0x1f9)));console[a0_0x267056(0x1de)](a0_0x267056(0x20e)+pkg[a0_0x267056(0x1db)]+'\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'+DEFAULT_PORT+a0_0x267056(0x209)+DEFAULT_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'),process['exit'](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x4539f7}=await import('../src/services/portRegistry.js');return _0x4539f7();}function a0_0x1f46(_0x490bda,_0x3418da){_0x490bda=_0x490bda-0x1c0;const _0x40c8ef=a0_0x40c8();let _0x1f463c=_0x40c8ef[_0x490bda];return _0x1f463c;}async function discoverBackend(){const _0x2826d9=a0_0x267056;try{const _0x4149c1=await getPortRegistry();await _0x4149c1[_0x2826d9(0x20c)]();const _0x209b6b=await _0x4149c1[_0x2826d9(0x211)](_0x2826d9(0x1f7));if(_0x209b6b)return{'host':_0x209b6b['host']||_0x2826d9(0x1d3),'port':_0x209b6b[_0x2826d9(0x1ff)],'pid':_0x209b6b[_0x2826d9(0x1df)]};return null;}catch(_0x1921a8){return null;}}function a0_0x40c8(){const _0x4d1a25=['Server\x20discovered\x20at\x20','889jMtwGE','Looking\x20for\x20running\x20server...','--version','platform','message','toString','error','\x0aPlease\x20start\x20the\x20server\x20first:','darwin','start','catch','Unknown\x20command:\x20','--host','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','destroy','localhost','index.js','2335421qgLhwE','open','includes','Error:','Please\x20open\x20manually:\x20','Waiting\x20for\x20server\x20to\x20start...','version','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','win32','log','pid','exit','119EITplk','\x0aServer\x20registered\x20at\x20','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','setTimeout','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','cmd','package.json','SIGTERM','48YJpKdg','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','length','\x20but\x20not\x20responding.','17224MfepvC','\x20\x20API\x20Health:\x20\x20\x20','/api/health\x0a','xdg-open','parse','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','kill','inherit','260060bmsfMt','backend','ignore','utf8','\x0aShutting\x20down\x20server...','loxia-terminal.js','5358kUZnfm','unref','\x0a✓\x20Server\x20running\x20at\x20','port','SIGINT','startsWith','now','275364dwUhoF','10HseCvZ','statusCode','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Starting\x20Terminal\x20UI...\x0a','argv',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','LOXIA_HOST','6kweJxc','cleanupStaleEntries','Starting\x20Loxia\x20server...\x0a','\x0aLoxia\x20Autopilot\x20One\x20v','15115236AuTIgR','--port','getService','host','help','456332eHHXHr','Loxia\x20Autopilot\x20One\x20v'];a0_0x40c8=function(){return _0x4d1a25;};return a0_0x40c8();}async function checkServerRunning(_0x34ad01,_0x10d0b3,_0x3c9acf=0x1){for(let _0x32470f=0x0;_0x32470f<_0x3c9acf;_0x32470f++){const _0x53944c=await new Promise(_0x2bfbde=>{const _0x348ddf=a0_0x1f46,_0x533488=a0_0x1650c8['get']('http://'+_0x34ad01+':'+_0x10d0b3+'/api/health',_0x1dbd20=>{const _0x13cfd8=a0_0x1f46;_0x2bfbde(_0x1dbd20[_0x13cfd8(0x205)]===0xc8);});_0x533488['on'](_0x348ddf(0x1ca),()=>_0x2bfbde(![])),_0x533488[_0x348ddf(0x1e4)](0x7d0,()=>{const _0x3cca38=_0x348ddf;_0x533488[_0x3cca38(0x1d2)](),_0x2bfbde(![]);});});if(_0x53944c)return!![];_0x32470f<_0x3c9acf-0x1&&await new Promise(_0x1f1c5a=>setTimeout(_0x1f1c5a,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x3a2967=SERVER_STARTUP_TIMEOUT){const _0x3ed033=a0_0x267056,_0x281f42=Date[_0x3ed033(0x202)]();while(Date[_0x3ed033(0x202)]()-_0x281f42<_0x3a2967){const _0x4001c4=await discoverBackend();if(_0x4001c4){const _0x5333f5=await checkServerRunning(_0x4001c4[_0x3ed033(0x212)],_0x4001c4['port']);if(_0x5333f5)return _0x4001c4;}await new Promise(_0x23eba1=>setTimeout(_0x23eba1,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x280872,_0x48108a,_0x486d34=SERVER_STARTUP_TIMEOUT){const _0x253dcf=Math['ceil'](_0x486d34/SERVER_CHECK_INTERVAL),_0x128fb8=await checkServerRunning(_0x280872,_0x48108a,_0x253dcf);return _0x128fb8?{'host':_0x280872,'port':_0x48108a}:null;}function openBrowser(_0x4005e2){const _0xca9918=a0_0x267056;let _0x56f98d,_0x4f74a4;if(process[_0xca9918(0x1c7)]===_0xca9918(0x1cc))_0x56f98d=_0xca9918(0x1d6),_0x4f74a4=[_0x4005e2];else process[_0xca9918(0x1c7)]===_0xca9918(0x1dd)?(_0x56f98d=_0xca9918(0x1e6),_0x4f74a4=['/c',_0xca9918(0x1cd),'\x22\x22',_0x4005e2]):(_0x56f98d=_0xca9918(0x1f0),_0x4f74a4=[_0x4005e2]);const _0x57b928=spawn(_0x56f98d,_0x4f74a4,{'detached':!![],'stdio':_0xca9918(0x1f8)});_0x57b928[_0xca9918(0x1fd)](),_0x57b928['on']('error',()=>{const _0x1cee1d=_0xca9918;console[_0x1cee1d(0x1de)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x1cee1d(0x1de)](_0x1cee1d(0x1d9)+_0x4005e2);});}function startServer(_0x1dbf36=![]){const _0x4f28a0=a0_0x267056,_0x4c8fd9={...process.env};explicitPort&&(_0x4c8fd9['LOXIA_PORT']=explicitPort[_0x4f28a0(0x1c9)](),_0x4c8fd9['PORT']=explicitPort['toString']());flags[_0x4f28a0(0x212)]&&(_0x4c8fd9[_0x4f28a0(0x20a)]=flags['host']);const _0x3c1525=join(__dirname,'..','src',_0x4f28a0(0x1d4)),_0x1e2101=spawn('node',[_0x3c1525],{'cwd':join(__dirname,'..'),'env':_0x4c8fd9,'stdio':_0x1dbf36?[_0x4f28a0(0x1f8),'ignore',_0x4f28a0(0x1f8)]:_0x4f28a0(0x1f5),'detached':_0x1dbf36});return _0x1dbf36&&_0x1e2101['unref'](),_0x1e2101;}function startTerminalUIProcess(_0x141ac6,_0xa73c46){const _0x7e35e3=a0_0x267056,_0x472491=join(__dirname,_0x7e35e3(0x1fb)),_0x359d8a={...process.env,'LOXIA_PORT':_0xa73c46['toString'](),'LOXIA_HOST':_0x141ac6},_0x125969=spawn('node',[_0x472491],{'cwd':join(__dirname,'..'),'env':_0x359d8a,'stdio':_0x7e35e3(0x1f5)});return _0x125969;}const commands={'web':async()=>{const _0x2696ec=a0_0x267056;console[_0x2696ec(0x1de)]('Starting\x20Loxia\x20server...\x0a');const _0x3f7ceb=startServer(![]);console[_0x2696ec(0x1de)](_0x2696ec(0x1da));let _0x4b568c;explicitPort?_0x4b568c=await waitForServerAtPort(host,explicitPort):_0x4b568c=await waitForServerWithDiscovery();if(_0x4b568c){const _0x649358='http://'+_0x4b568c[_0x2696ec(0x212)]+':'+_0x4b568c[_0x2696ec(0x1ff)];console[_0x2696ec(0x1de)]('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x649358),openBrowser(_0x649358);}else console[_0x2696ec(0x1de)](_0x2696ec(0x1dc));process['on']('SIGINT',()=>_0x3f7ceb['kill'](_0x2696ec(0x200))),process['on'](_0x2696ec(0x1e8),()=>_0x3f7ceb[_0x2696ec(0x1f4)](_0x2696ec(0x1e8))),_0x3f7ceb['on']('exit',_0x50d460=>process[_0x2696ec(0x1e0)](_0x50d460||0x0));},'plus-web':async()=>{await commands['web']();},'serve':async()=>{const _0x46b4f8=a0_0x267056;console[_0x46b4f8(0x1de)](_0x46b4f8(0x20d));const _0x57c493=startServer(![]);console[_0x46b4f8(0x1de)](_0x46b4f8(0x1da));let _0x16fa8e;explicitPort?_0x16fa8e=await waitForServerAtPort(host,explicitPort):_0x16fa8e=await waitForServerWithDiscovery();if(_0x16fa8e){const _0x57f4e7='http://'+_0x16fa8e[_0x46b4f8(0x212)]+':'+_0x16fa8e[_0x46b4f8(0x1ff)];console[_0x46b4f8(0x1de)](_0x46b4f8(0x1fe)+_0x57f4e7),console[_0x46b4f8(0x1de)]('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x57f4e7),console[_0x46b4f8(0x1de)]('\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal'),console[_0x46b4f8(0x1de)](_0x46b4f8(0x1ee)+_0x57f4e7+_0x46b4f8(0x1ef));}else console[_0x46b4f8(0x1de)](_0x46b4f8(0x1f3)),console[_0x46b4f8(0x1de)](_0x46b4f8(0x1e3));process['on'](_0x46b4f8(0x200),()=>_0x57c493[_0x46b4f8(0x1f4)](_0x46b4f8(0x200))),process['on'](_0x46b4f8(0x1e8),()=>_0x57c493[_0x46b4f8(0x1f4)](_0x46b4f8(0x1e8))),_0x57c493['on'](_0x46b4f8(0x1e0),_0x126544=>process['exit'](_0x126544||0x0));},'terminal':async()=>{const _0x3930eb=a0_0x267056;console[_0x3930eb(0x1de)](_0x3930eb(0x1c5));let _0x4d2686=await discoverBackend();explicitPort&&(_0x4d2686={'host':host,'port':explicitPort});!_0x4d2686&&(console[_0x3930eb(0x1ca)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console['error'](_0x3930eb(0x1cb)),console['error'](_0x3930eb(0x1e5)),console[_0x3930eb(0x1ca)](_0x3930eb(0x1ea)),console[_0x3930eb(0x1ca)](_0x3930eb(0x206)),process[_0x3930eb(0x1e0)](0x1));const _0x29ab87=await checkServerRunning(_0x4d2686[_0x3930eb(0x212)],_0x4d2686[_0x3930eb(0x1ff)]);!_0x29ab87&&(console[_0x3930eb(0x1ca)](_0x3930eb(0x1e2)+_0x4d2686[_0x3930eb(0x212)]+':'+_0x4d2686[_0x3930eb(0x1ff)]+_0x3930eb(0x1ec)),console[_0x3930eb(0x1ca)](_0x3930eb(0x1f2)),process[_0x3930eb(0x1e0)](0x1));console['log'](_0x3930eb(0x1c3)+_0x4d2686[_0x3930eb(0x212)]+':'+_0x4d2686['port']),console['log'](_0x3930eb(0x207));const _0xc47f15=startTerminalUIProcess(_0x4d2686['host'],_0x4d2686[_0x3930eb(0x1ff)]);process['on'](_0x3930eb(0x200),()=>_0xc47f15[_0x3930eb(0x1f4)]('SIGINT')),process['on'](_0x3930eb(0x1e8),()=>_0xc47f15[_0x3930eb(0x1f4)](_0x3930eb(0x1e8))),_0xc47f15['on']('exit',_0x4c281a=>process[_0x3930eb(0x1e0)](_0x4c281a||0x0));},'plus-terminal':async()=>{const _0x1f2aa1=a0_0x267056;console[_0x1f2aa1(0x1de)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x4b8f8f=startServer(!![]);let _0x1ba516;explicitPort?_0x1ba516=await waitForServerAtPort(host,explicitPort):_0x1ba516=await waitForServerWithDiscovery();!_0x1ba516&&(console[_0x1f2aa1(0x1ca)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process[_0x1f2aa1(0x1e0)](0x1));console[_0x1f2aa1(0x1de)]('Server\x20running\x20at\x20http://'+_0x1ba516[_0x1f2aa1(0x212)]+':'+_0x1ba516[_0x1f2aa1(0x1ff)]),console[_0x1f2aa1(0x1de)](_0x1f2aa1(0x207));const _0x253470=startTerminalUIProcess(_0x1ba516['host'],_0x1ba516[_0x1f2aa1(0x1ff)]);_0x253470['on'](_0x1f2aa1(0x1e0),_0x440eaa=>{const _0x467511=_0x1f2aa1;console[_0x467511(0x1de)](_0x467511(0x1fa));try{process['kill'](_0x4b8f8f[_0x467511(0x1df)],'SIGTERM');}catch(_0x3a7ba1){}process[_0x467511(0x1e0)](_0x440eaa||0x0);}),process['on'](_0x1f2aa1(0x200),()=>{const _0x13b4c0=_0x1f2aa1;_0x253470[_0x13b4c0(0x1f4)](_0x13b4c0(0x200));}),process['on'](_0x1f2aa1(0x1e8),()=>{const _0x39731f=_0x1f2aa1;_0x253470['kill'](_0x39731f(0x1e8));});}};commands[command]?commands[command]()[a0_0x267056(0x1ce)](_0x352437=>{const _0x3d2f41=a0_0x267056;console[_0x3d2f41(0x1ca)](_0x3d2f41(0x1d8),_0x352437[_0x3d2f41(0x1c8)]),process[_0x3d2f41(0x1e0)](0x1);}):(console['error'](a0_0x267056(0x1cf)+command),console['error'](a0_0x267056(0x1d1)),process[a0_0x267056(0x1e0)](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x45fe4d=a0_0x58c8;(function(_0xca2c6b,_0x10eb76){const _0x4b9416=a0_0x58c8,_0x2baba8=_0xca2c6b();while(!![]){try{const _0x440e40=parseInt(_0x4b9416(0x10b))/0x1+-parseInt(_0x4b9416(0x108))/0x2+-parseInt(_0x4b9416(0x12e))/0x3+-parseInt(_0x4b9416(0x129))/0x4*(parseInt(_0x4b9416(0x125))/0x5)+-parseInt(_0x4b9416(0xfc))/0x6*(parseInt(_0x4b9416(0x120))/0x7)+parseInt(_0x4b9416(0x10c))/0x8+-parseInt(_0x4b9416(0x111))/0x9*(-parseInt(_0x4b9416(0xfd))/0xa);if(_0x440e40===_0x10eb76)break;else _0x2baba8['push'](_0x2baba8['shift']());}catch(_0x2f4a81){_0x2baba8['push'](_0x2baba8['shift']());}}}(a0_0x474c,0x3efba));import{spawn}from'child_process';function a0_0x58c8(_0x44192a,_0x2fe542){_0x44192a=_0x44192a-0xfa;const _0x474c02=a0_0x474c();let _0x58c8f4=_0x474c02[_0x44192a];return _0x58c8f4;}import a0_0x2a76a9 from'net';import a0_0x1897bd from'path';import{fileURLToPath}from'url';function a0_0x474c(){const _0x3ffab2=['ignore','setTimeout','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','378610jyTBqg','💡\x20Troubleshooting:','now','147806uRHmlC','1284808xommeo','--ui','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','--host','localhost','3481434GHhQwB','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','kill','toString','destroy','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','error','dirname','Socket','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','node','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','✓\x20Server\x20is\x20already\x20running\x20at\x20','stderr','--port','154CkPkaM','✗\x20Server\x20is\x20not\x20running','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','...','message','5QbHOlh','web','🚀\x20Starting\x20Loxia\x20server...','Failed\x20to\x20start\x20server:','285948vaTJOg','slice','stdout','pipe','argv','505695wVshVb','exit','connect','107652bTieIR','20nknkHH','data','../src/interfaces/terminal/index.js','join','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','log','Server\x20startup\x20timeout','timeout'];a0_0x474c=function(){return _0x3ffab2;};return a0_0x474c();}const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x1897bd[a0_0x45fe4d(0x118)](__filename),projectRoot=a0_0x1897bd[a0_0x45fe4d(0x118)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x45fe4d(0x110),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x2e65c7,_0x279dd9){return new Promise(_0x533f37=>{const _0x324658=a0_0x58c8,_0x1d46a3=new a0_0x2a76a9[(_0x324658(0x119))]();_0x1d46a3[_0x324658(0x106)](0x7d0),_0x1d46a3['on'](_0x324658(0xfb),()=>{const _0x5b9aa2=_0x324658;_0x1d46a3[_0x5b9aa2(0x115)](),_0x533f37(!![]);}),_0x1d46a3['on'](_0x324658(0x104),()=>{const _0x415fdd=_0x324658;_0x1d46a3[_0x415fdd(0x115)](),_0x533f37(![]);}),_0x1d46a3['on']('error',()=>{const _0x11f579=_0x324658;_0x1d46a3[_0x11f579(0x115)](),_0x533f37(![]);}),_0x1d46a3[_0x324658(0xfb)](_0x279dd9,_0x2e65c7);});}async function startServer(_0x4a1bcd,_0x259cc7){const _0x30cadd=a0_0x45fe4d;return console[_0x30cadd(0x102)](_0x30cadd(0x127)),new Promise((_0xe82a1,_0x1971ac)=>{const _0x15c29e=_0x30cadd,_0x2060e2=spawn(_0x15c29e(0x11b),[a0_0x1897bd[_0x15c29e(0x100)](projectRoot,'bin/cli.js'),_0x15c29e(0x10d),_0x15c29e(0x126),_0x15c29e(0x10f),_0x4a1bcd,_0x15c29e(0x11f),_0x259cc7['toString']()],{'detached':![],'stdio':[_0x15c29e(0x105),_0x15c29e(0x12c),_0x15c29e(0x12c)]});_0x2060e2[_0x15c29e(0x12b)]['on'](_0x15c29e(0xfe),()=>{}),_0x2060e2[_0x15c29e(0x11e)]['on'](_0x15c29e(0xfe),()=>{}),_0x2060e2['on']('error',_0x5c1e70=>{const _0xbb70a4=_0x15c29e;console[_0xbb70a4(0x117)](_0xbb70a4(0x128),_0x5c1e70[_0xbb70a4(0x124)]),_0x1971ac(_0x5c1e70);});const _0x350557=Date[_0x15c29e(0x10a)](),_0x4a5da4=setInterval(async()=>{const _0x55b978=_0x15c29e,_0x319544=await isServerRunning(_0x4a1bcd,_0x259cc7);if(_0x319544)clearInterval(_0x4a5da4),console['log']('✓\x20Server\x20started\x20at\x20'+_0x4a1bcd+':'+_0x259cc7),_0xe82a1();else Date[_0x55b978(0x10a)]()-_0x350557>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x4a5da4),_0x2060e2[_0x55b978(0x113)](),_0x1971ac(new Error(_0x55b978(0x103))));},0x1f4);});}async function main(){const _0x56ba76=a0_0x45fe4d;try{console['log'](_0x56ba76(0x112)),console[_0x56ba76(0x102)](_0x56ba76(0x122)),console[_0x56ba76(0x102)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x56ba76(0x102)]('');const _0x27f719=process[_0x56ba76(0x12d)][_0x56ba76(0x12a)](0x2);let _0x475815=DEFAULT_HOST,_0x3d8496=DEFAULT_PORT;for(let _0x511e4b=0x0;_0x511e4b<_0x27f719['length'];_0x511e4b++){if(_0x27f719[_0x511e4b]===_0x56ba76(0x10f)&&_0x27f719[_0x511e4b+0x1])_0x475815=_0x27f719[_0x511e4b+0x1],_0x511e4b++;else _0x27f719[_0x511e4b]===_0x56ba76(0x11f)&&_0x27f719[_0x511e4b+0x1]&&(_0x3d8496=parseInt(_0x27f719[_0x511e4b+0x1],0xa),_0x511e4b++);}console['log'](_0x56ba76(0x101)+_0x475815+':'+_0x3d8496+_0x56ba76(0x123));const _0x5eb544=await isServerRunning(_0x475815,_0x3d8496);!_0x5eb544?(console['log'](_0x56ba76(0x121)),await startServer(_0x475815,_0x3d8496)):console['log'](_0x56ba76(0x11d)+_0x475815+':'+_0x3d8496),console['log'](''),console['log'](_0x56ba76(0x11a)),console[_0x56ba76(0x102)](''),await new Promise(_0x49e037=>setTimeout(_0x49e037,0x1f4)),process.env.LOXIA_HOST=_0x475815,process.env.LOXIA_PORT=_0x3d8496[_0x56ba76(0x114)](),await import(_0x56ba76(0xff));}catch(_0x2814d3){console[_0x56ba76(0x117)](''),console[_0x56ba76(0x117)](_0x56ba76(0x11c)),console[_0x56ba76(0x117)]('\x20\x20',_0x2814d3[_0x56ba76(0x124)]),console[_0x56ba76(0x117)](''),console[_0x56ba76(0x117)](_0x56ba76(0x109)),console[_0x56ba76(0x117)](_0x56ba76(0x107)),console['error'](_0x56ba76(0x10e)),console[_0x56ba76(0x117)](_0x56ba76(0x116)),console[_0x56ba76(0x117)](''),process[_0x56ba76(0xfa)](0x1);}}main();
3
+ const a0_0x686b16=a0_0x42ad;(function(_0x4902c3,_0x411e4e){const _0x350485=a0_0x42ad,_0xed230a=_0x4902c3();while(!![]){try{const _0x4fbb61=-parseInt(_0x350485(0xa5))/0x1+parseInt(_0x350485(0xa6))/0x2+-parseInt(_0x350485(0x91))/0x3+parseInt(_0x350485(0x9d))/0x4*(parseInt(_0x350485(0x9b))/0x5)+parseInt(_0x350485(0x99))/0x6+-parseInt(_0x350485(0xb8))/0x7+-parseInt(_0x350485(0xaf))/0x8;if(_0x4fbb61===_0x411e4e)break;else _0xed230a['push'](_0xed230a['shift']());}catch(_0x3a51ee){_0xed230a['push'](_0xed230a['shift']());}}}(a0_0x6920,0x86692));import{spawn}from'child_process';import a0_0x3f815e from'net';function a0_0x6920(){const _0x36a8d6=['1644320lAaFSw','length','bin/cli.js','--host','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','Socket','error','setTimeout','2442648NZEaCV','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','pipe','log','connect','--ui','ignore','💡\x20Troubleshooting:','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','3596999FhbHlm','Failed\x20to\x20start\x20server:','2533242XlPwyj','slice','destroy','✓\x20Server\x20started\x20at\x20','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','✗\x20Server\x20is\x20not\x20running','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','localhost','3125136RqCuiu','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','10WytPdt','data','2034588AckRen','timeout','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','web','message','../src/interfaces/terminal/index.js','toString','now','146162PyKsxt'];a0_0x6920=function(){return _0x36a8d6;};return a0_0x6920();}function a0_0x42ad(_0x4e700f,_0x28508f){_0x4e700f=_0x4e700f-0x90;const _0x69208c=a0_0x6920();let _0x42ad46=_0x69208c[_0x4e700f];return _0x42ad46;}import a0_0x322b20 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x322b20['dirname'](__filename),projectRoot=a0_0x322b20['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x686b16(0x98),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x15e626,_0x589510){return new Promise(_0x5201d8=>{const _0x51479f=a0_0x42ad,_0x87b964=new a0_0x3f815e[(_0x51479f(0xac))]();_0x87b964[_0x51479f(0xae)](0x7d0),_0x87b964['on'](_0x51479f(0xb3),()=>{const _0xcf6a0f=_0x51479f;_0x87b964[_0xcf6a0f(0x93)](),_0x5201d8(!![]);}),_0x87b964['on'](_0x51479f(0x9e),()=>{const _0x19438f=_0x51479f;_0x87b964[_0x19438f(0x93)](),_0x5201d8(![]);}),_0x87b964['on']('error',()=>{const _0x250e90=_0x51479f;_0x87b964[_0x250e90(0x93)](),_0x5201d8(![]);}),_0x87b964['connect'](_0x589510,_0x15e626);});}async function startServer(_0x5346a7,_0x92af78){const _0x7ea793=a0_0x686b16;return console[_0x7ea793(0xb2)]('🚀\x20Starting\x20Loxia\x20server...'),new Promise((_0x57265d,_0x331cf5)=>{const _0x290d79=_0x7ea793,_0x7608db=spawn('node',[a0_0x322b20['join'](projectRoot,_0x290d79(0xa8)),_0x290d79(0xb4),_0x290d79(0xa0),_0x290d79(0xa9),_0x5346a7,'--port',_0x92af78[_0x290d79(0xa3)]()],{'detached':![],'stdio':[_0x290d79(0xb5),_0x290d79(0xb1),_0x290d79(0xb1)]});_0x7608db['stdout']['on'](_0x290d79(0x9c),()=>{}),_0x7608db['stderr']['on'](_0x290d79(0x9c),()=>{}),_0x7608db['on'](_0x290d79(0xad),_0x42fea5=>{const _0x406206=_0x290d79;console[_0x406206(0xad)](_0x406206(0x90),_0x42fea5[_0x406206(0xa1)]),_0x331cf5(_0x42fea5);});const _0x78a948=Date[_0x290d79(0xa4)](),_0x514bfb=setInterval(async()=>{const _0x57466d=_0x290d79,_0x2f8a1d=await isServerRunning(_0x5346a7,_0x92af78);if(_0x2f8a1d)clearInterval(_0x514bfb),console[_0x57466d(0xb2)](_0x57466d(0x94)+_0x5346a7+':'+_0x92af78),_0x57265d();else Date[_0x57466d(0xa4)]()-_0x78a948>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x514bfb),_0x7608db['kill'](),_0x331cf5(new Error('Server\x20startup\x20timeout')));},0x1f4);});}async function main(){const _0x36ef76=a0_0x686b16;try{console[_0x36ef76(0xb2)](_0x36ef76(0xb7)),console[_0x36ef76(0xb2)](_0x36ef76(0x97)),console[_0x36ef76(0xb2)](_0x36ef76(0xb7)),console[_0x36ef76(0xb2)]('');const _0x141b39=process['argv'][_0x36ef76(0x92)](0x2);let _0x412178=DEFAULT_HOST,_0xbf5b8f=DEFAULT_PORT;for(let _0x75fd15=0x0;_0x75fd15<_0x141b39[_0x36ef76(0xa7)];_0x75fd15++){if(_0x141b39[_0x75fd15]===_0x36ef76(0xa9)&&_0x141b39[_0x75fd15+0x1])_0x412178=_0x141b39[_0x75fd15+0x1],_0x75fd15++;else _0x141b39[_0x75fd15]==='--port'&&_0x141b39[_0x75fd15+0x1]&&(_0xbf5b8f=parseInt(_0x141b39[_0x75fd15+0x1],0xa),_0x75fd15++);}console[_0x36ef76(0xb2)](_0x36ef76(0xb0)+_0x412178+':'+_0xbf5b8f+'...');const _0x5ac4d3=await isServerRunning(_0x412178,_0xbf5b8f);!_0x5ac4d3?(console[_0x36ef76(0xb2)](_0x36ef76(0x96)),await startServer(_0x412178,_0xbf5b8f)):console[_0x36ef76(0xb2)]('✓\x20Server\x20is\x20already\x20running\x20at\x20'+_0x412178+':'+_0xbf5b8f),console[_0x36ef76(0xb2)](''),console[_0x36ef76(0xb2)](_0x36ef76(0x9f)),console['log'](''),await new Promise(_0x3c5388=>setTimeout(_0x3c5388,0x1f4)),process.env.LOXIA_HOST=_0x412178,process.env.LOXIA_PORT=_0xbf5b8f[_0x36ef76(0xa3)](),await import(_0x36ef76(0xa2));}catch(_0xdd0376){console[_0x36ef76(0xad)](''),console[_0x36ef76(0xad)](_0x36ef76(0xaa)),console[_0x36ef76(0xad)]('\x20\x20',_0xdd0376[_0x36ef76(0xa1)]),console['error'](''),console[_0x36ef76(0xad)](_0x36ef76(0xb6)),console[_0x36ef76(0xad)](_0x36ef76(0xab)),console[_0x36ef76(0xad)](_0x36ef76(0x9a)),console[_0x36ef76(0xad)](_0x36ef76(0x95)),console['error'](''),process['exit'](0x1);}}main();
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0x1e4d(_0x228398,_0x37bc98){_0x228398=_0x228398-0x1eb;const _0x6b1c8a=a0_0x6b1c();let _0x1e4d7a=_0x6b1c8a[_0x228398];return _0x1e4d7a;}const a0_0x45c76d=a0_0x1e4d;(function(_0x26ae38,_0x27da3b){const _0x37157d=a0_0x1e4d,_0x1c28bf=_0x26ae38();while(!![]){try{const _0x454b0f=parseInt(_0x37157d(0x200))/0x1*(-parseInt(_0x37157d(0x20c))/0x2)+-parseInt(_0x37157d(0x1f6))/0x3*(-parseInt(_0x37157d(0x1fd))/0x4)+-parseInt(_0x37157d(0x204))/0x5*(parseInt(_0x37157d(0x1f2))/0x6)+parseInt(_0x37157d(0x1ff))/0x7+parseInt(_0x37157d(0x201))/0x8+-parseInt(_0x37157d(0x1ef))/0x9*(-parseInt(_0x37157d(0x205))/0xa)+-parseInt(_0x37157d(0x206))/0xb*(-parseInt(_0x37157d(0x1f0))/0xc);if(_0x454b0f===_0x27da3b)break;else _0x1c28bf['push'](_0x1c28bf['shift']());}catch(_0x882099){_0x1c28bf['push'](_0x1c28bf['shift']());}}}(a0_0x6b1c,0xe6413));function a0_0x6b1c(){const _0xfac76c=['host','localhost','\x0aTerminal\x20UI\x20error:','--help','argv','4029372oAwiJz','then','1448062vPaDzy','818EPuiEV','5692968PPYtgk','The\x20terminal\x20UI\x20cannot\x20run\x20in:','port','70wFJPwy','513580wmAbtK','2783YlBfdy','stdin','--host','slice','\x20\x20npm\x20start','log','3914dbPSWE','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','Starting\x20Loxia\x20Terminal\x20UI...','\x0aTerminal\x20UI\x20exited','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','\x20\x20-\x20Some\x20CI/CD\x20environments','Press\x20Ctrl+C\x20to\x20exit\x0a','126iRIdpU','25260GCHkvC','error','271482hUZFSw','--port','waitUntilExit','exit','3THisbF','\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'];a0_0x6b1c=function(){return _0xfac76c;};return a0_0x6b1c();}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x45c76d(0x1fc)][a0_0x45c76d(0x209)](0x2),options={'host':a0_0x45c76d(0x1f9),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x45c76d(0x208)||arg==='-h')options['host']=args[++i];else{if(arg===a0_0x45c76d(0x1f3)||arg==='-p')options['port']=parseInt(args[++i],0xa);else arg===a0_0x45c76d(0x1fb)&&(console[a0_0x45c76d(0x20b)](a0_0x45c76d(0x1f7)),process[a0_0x45c76d(0x1f5)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x45c76d(0x1f8)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x45c76d(0x203)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x45c76d(0x207)]['isTTY']&&(console[a0_0x45c76d(0x1f1)]('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x202)),console['error']('\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x20d)),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x1ec)),console['error'](a0_0x45c76d(0x1ed)),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)]('Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:'),console[a0_0x45c76d(0x1f1)]('\x20\x20npm\x20run\x20terminal-ui'),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)]('Or\x20use\x20the\x20web\x20UI\x20instead:'),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x20a)),process[a0_0x45c76d(0x1f5)](0x1));console['log'](a0_0x45c76d(0x20e)),console[a0_0x45c76d(0x20b)]('Connecting\x20to:\x20'+options['host']+':'+options[a0_0x45c76d(0x203)]),console[a0_0x45c76d(0x20b)](a0_0x45c76d(0x1ee));const instance=startTerminalUI(options);instance[a0_0x45c76d(0x1f4)]()[a0_0x45c76d(0x1fe)](()=>{const _0x314ad5=a0_0x45c76d;console['log'](_0x314ad5(0x1eb)),process['exit'](0x0);})['catch'](_0x5bc130=>{const _0x29203c=a0_0x45c76d;console[_0x29203c(0x1f1)](_0x29203c(0x1fa),_0x5bc130),process[_0x29203c(0x1f5)](0x1);});
3
+ function a0_0x4ba7(){const _0x2ef99d=['3143280byYVXQ','220bEkTwT','--help','argv','then','localhost','917vmvrRA','host','waitUntilExit','330420xGqdPv','Starting\x20Loxia\x20Terminal\x20UI...','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','1532610XtWlCc','\x0aTerminal\x20UI\x20error:','109214nmKfOp','catch','6107940nkoEOX','\x20\x20npm\x20run\x20terminal-ui','Connecting\x20to:\x20','36944oLTnIY','exit','Or\x20use\x20the\x20web\x20UI\x20instead:','5mPhbAe','The\x20terminal\x20UI\x20cannot\x20run\x20in:','log','Press\x20Ctrl+C\x20to\x20exit\x0a','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\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','error','stdin','--host','821029AokmMl','\x0aTerminal\x20UI\x20exited','length','--port','51GHPaXy','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','port'];a0_0x4ba7=function(){return _0x2ef99d;};return a0_0x4ba7();}const a0_0x2c514f=a0_0x1351;(function(_0x2f1fe4,_0x45d158){const _0x26d18c=a0_0x1351,_0x51c8d3=_0x2f1fe4();while(!![]){try{const _0x4a7fcb=-parseInt(_0x26d18c(0xd6))/0x1+-parseInt(_0x26d18c(0xc5))/0x2*(parseInt(_0x26d18c(0xda))/0x3)+-parseInt(_0x26d18c(0xde))/0x4+parseInt(_0x26d18c(0xcd))/0x5*(-parseInt(_0x26d18c(0xc0))/0x6)+parseInt(_0x26d18c(0xbd))/0x7*(-parseInt(_0x26d18c(0xca))/0x8)+parseInt(_0x26d18c(0xc7))/0x9+parseInt(_0x26d18c(0xc3))/0xa*(parseInt(_0x26d18c(0xdf))/0xb);if(_0x4a7fcb===_0x45d158)break;else _0x51c8d3['push'](_0x51c8d3['shift']());}catch(_0x4495c8){_0x51c8d3['push'](_0x51c8d3['shift']());}}}(a0_0x4ba7,0x85f4c));function a0_0x1351(_0x4fe98b,_0x132151){_0x4fe98b=_0x4fe98b-0xb9;const _0x4ba7dc=a0_0x4ba7();let _0x135118=_0x4ba7dc[_0x4fe98b];return _0x135118;}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x2c514f(0xba)]['slice'](0x2),options={'host':a0_0x2c514f(0xbc),'port':0x1f90};for(let i=0x0;i<args[a0_0x2c514f(0xd8)];i++){const arg=args[i];if(arg===a0_0x2c514f(0xd5)||arg==='-h')options[a0_0x2c514f(0xbe)]=args[++i];else{if(arg===a0_0x2c514f(0xd9)||arg==='-p')options[a0_0x2c514f(0xdd)]=parseInt(args[++i],0xa);else arg===a0_0x2c514f(0xb9)&&(console[a0_0x2c514f(0xcf)](a0_0x2c514f(0xd2)),process[a0_0x2c514f(0xcb)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x2c514f(0xbe)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x2c514f(0xdd)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x2c514f(0xd4)]['isTTY']&&(console[a0_0x2c514f(0xd3)]('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x2c514f(0xd3)](''),console[a0_0x2c514f(0xd3)](a0_0x2c514f(0xce)),console[a0_0x2c514f(0xd3)](a0_0x2c514f(0xdc)),console['error'](a0_0x2c514f(0xc2)),console['error'](a0_0x2c514f(0xdb)),console[a0_0x2c514f(0xd3)]('\x20\x20-\x20Some\x20CI/CD\x20environments'),console['error'](''),console[a0_0x2c514f(0xd3)](a0_0x2c514f(0xd1)),console[a0_0x2c514f(0xd3)](a0_0x2c514f(0xc8)),console[a0_0x2c514f(0xd3)](''),console[a0_0x2c514f(0xd3)](a0_0x2c514f(0xcc)),console[a0_0x2c514f(0xd3)]('\x20\x20npm\x20start'),process[a0_0x2c514f(0xcb)](0x1));console[a0_0x2c514f(0xcf)](a0_0x2c514f(0xc1)),console[a0_0x2c514f(0xcf)](a0_0x2c514f(0xc9)+options[a0_0x2c514f(0xbe)]+':'+options[a0_0x2c514f(0xdd)]),console[a0_0x2c514f(0xcf)](a0_0x2c514f(0xd0));const instance=startTerminalUI(options);instance[a0_0x2c514f(0xbf)]()[a0_0x2c514f(0xbb)](()=>{const _0x33c347=a0_0x2c514f;console[_0x33c347(0xcf)](_0x33c347(0xd7)),process[_0x33c347(0xcb)](0x0);})[a0_0x2c514f(0xc6)](_0x2746f4=>{const _0x2ef8f=a0_0x2c514f;console[_0x2ef8f(0xd3)](_0x2ef8f(0xc4),_0x2746f4),process[_0x2ef8f(0xcb)](0x1);});
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x3413d6=a0_0x1d20;(function(_0x45d667,_0x1076d3){const _0x4ef319=a0_0x1d20,_0x5d12de=_0x45d667();while(!![]){try{const _0x2ad0fc=parseInt(_0x4ef319(0x91))/0x1+-parseInt(_0x4ef319(0x7c))/0x2+parseInt(_0x4ef319(0x8c))/0x3+parseInt(_0x4ef319(0x85))/0x4+parseInt(_0x4ef319(0x70))/0x5+parseInt(_0x4ef319(0x81))/0x6*(-parseInt(_0x4ef319(0x6b))/0x7)+-parseInt(_0x4ef319(0x78))/0x8;if(_0x2ad0fc===_0x1076d3)break;else _0x5d12de['push'](_0x5d12de['shift']());}catch(_0x352baa){_0x5d12de['push'](_0x5d12de['shift']());}}}(a0_0x4a13,0x72813));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x54205b 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;async function checkServerReady(_0x41ed30=0xa,_0x42b6db=0x1f4){const _0x56c19a=a0_0x1d20;for(let _0x4183df=0x0;_0x4183df<_0x41ed30;_0x4183df++){try{return await new Promise((_0x1b87e4,_0x48b56d)=>{const _0x1842db=a0_0x1d20,_0xa158eb=a0_0x54205b[_0x1842db(0x82)]('http://localhost:'+SERVER_PORT+_0x1842db(0x89),_0x43f60c=>{const _0x42d4f3=_0x1842db;_0x43f60c[_0x42d4f3(0x92)]===0xc8?_0x1b87e4():_0x48b56d(new Error(_0x42d4f3(0x69)+_0x43f60c[_0x42d4f3(0x92)]));});_0xa158eb['on'](_0x1842db(0x8d),_0x48b56d),_0xa158eb['setTimeout'](0x3e8,()=>{const _0x1ed959=_0x1842db;_0xa158eb[_0x1ed959(0x7e)](),_0x48b56d(new Error(_0x1ed959(0x8b)));});}),console['log']('✅\x20Server\x20is\x20ready!'),!![];}catch(_0x5388e8){_0x4183df<_0x41ed30-0x1&&await new Promise(_0x989a93=>setTimeout(_0x989a93,_0x42b6db));}}return console[_0x56c19a(0x7f)](_0x56c19a(0x7d)),![];}function a0_0x1d20(_0x18c221,_0xc3540a){_0x18c221=_0x18c221-0x65;const _0x4a13bf=a0_0x4a13();let _0x1d20f6=_0x4a13bf[_0x18c221];return _0x1d20f6;}async function startServer(){return new Promise(_0x3f220f=>{const _0x2038cb=a0_0x1d20;console[_0x2038cb(0x7f)](_0x2038cb(0x74));const _0x35b1fc=join(rootDir,_0x2038cb(0x6c),'index.js');serverProcess=spawn(_0x2038cb(0x79),[_0x35b1fc],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x2038cb(0x68),'pipe',_0x2038cb(0x80)],'detached':![]}),serverProcess[_0x2038cb(0x7b)]['on'](_0x2038cb(0x8f),_0x5cd497=>{const _0x59a1d3=_0x2038cb,_0x2fa2ed=_0x5cd497['toString']()[_0x59a1d3(0x86)]();_0x2fa2ed&&console[_0x59a1d3(0x7f)](_0x59a1d3(0x90)+_0x2fa2ed);}),serverProcess['stderr']['on'](_0x2038cb(0x8f),_0x49565e=>{const _0x3c08e1=_0x2038cb,_0xe07b71=_0x49565e[_0x3c08e1(0x72)]()[_0x3c08e1(0x86)]();_0xe07b71&&!_0xe07b71[_0x3c08e1(0x67)](_0x3c08e1(0x84))&&console[_0x3c08e1(0x8d)](_0x3c08e1(0x73)+_0xe07b71);}),serverProcess['on']('error',_0x5a326e=>{const _0x78825b=_0x2038cb;console[_0x78825b(0x8d)](_0x78825b(0x7a),_0x5a326e[_0x78825b(0x87)]),process['exit'](0x1);}),serverProcess['on']('exit',(_0x11b366,_0x1e55bc)=>{const _0x36af75=_0x2038cb;_0x11b366!==null&&_0x11b366!==0x0&&(console[_0x36af75(0x8d)](_0x36af75(0x88)+_0x11b366),process[_0x36af75(0x83)](_0x11b366));}),setTimeout(_0x3f220f,STARTUP_WAIT);});}async function startTerminalUI(){const _0x480f45=a0_0x1d20;console[_0x480f45(0x7f)](_0x480f45(0x75)),console[_0x480f45(0x7f)]('');const _0xef20b=join(rootDir,_0x480f45(0x8a),'loxia-terminal.js'),_0x586308=spawn('node',[_0xef20b],{'cwd':rootDir,'env':{...process.env},'stdio':_0x480f45(0x76)});return _0x586308['on'](_0x480f45(0x8d),_0xbe5d04=>{const _0x16faf1=_0x480f45;console[_0x16faf1(0x8d)]('Failed\x20to\x20start\x20Terminal\x20UI:',_0xbe5d04[_0x16faf1(0x87)]),cleanup(),process[_0x16faf1(0x83)](0x1);}),_0x586308['on'](_0x480f45(0x83),_0xac6944=>{const _0x1a80bd=_0x480f45;console[_0x1a80bd(0x7f)](_0x1a80bd(0x6a)),cleanup(),process['exit'](_0xac6944||0x0);}),_0x586308;}function cleanup(){const _0x22a1df=a0_0x1d20;serverProcess&&!serverProcess[_0x22a1df(0x65)]&&(console[_0x22a1df(0x7f)](_0x22a1df(0x6e)),serverProcess[_0x22a1df(0x8e)]('SIGTERM'),setTimeout(()=>{const _0x4771d8=_0x22a1df;!serverProcess['killed']&&serverProcess[_0x4771d8(0x8e)](_0x4771d8(0x6f));},0x1388));}process['on']('SIGINT',()=>{const _0xcf7637=a0_0x1d20;console[_0xcf7637(0x7f)]('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process['exit'](0x0);}),process['on'](a0_0x3413d6(0x77),()=>{const _0x2c2bbc=a0_0x3413d6;console['log'](_0x2c2bbc(0x6d)),cleanup(),process['exit'](0x0);}),process['on'](a0_0x3413d6(0x83),()=>{cleanup();});async function main(){const _0x29ab8a=a0_0x3413d6;console['log']('╔════════════════════════════════════════════════╗'),console[_0x29ab8a(0x7f)](_0x29ab8a(0x71)),console[_0x29ab8a(0x7f)]('╚════════════════════════════════════════════════╝'),console[_0x29ab8a(0x7f)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x3ab0bb){console['error'](_0x29ab8a(0x66),_0x3ab0bb[_0x29ab8a(0x87)]),cleanup(),process[_0x29ab8a(0x83)](0x1);}}main();function a0_0x4a13(){const _0x173a35=['get','exit','ExperimentalWarning','3100072ZCipeW','trim','message','Server\x20exited\x20with\x20code\x20','/health','bin','Timeout','395793SrRIsB','error','kill','data','[SERVER]\x20','565857peenLn','statusCode','killed','Error\x20during\x20startup:','includes','ignore','Server\x20returned\x20','\x0a👋\x20Terminal\x20UI\x20closed.','3395147OnfGPs','src','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','🛑\x20Stopping\x20server...','SIGKILL','328170eKBJOD','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','toString','[SERVER\x20ERROR]\x20','🚀\x20Starting\x20Loxia\x20server...','🖥️\x20\x20Starting\x20Terminal\x20UI...','inherit','SIGTERM','211008XfcDlA','node','Failed\x20to\x20start\x20server:','stdout','1116064sYystQ','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','destroy','log','pipe','6RifLNr'];a0_0x4a13=function(){return _0x173a35;};return a0_0x4a13();}
3
+ const a0_0x2dd779=a0_0x14a8;function a0_0x14a8(_0x15fb8a,_0x16f2d0){_0x15fb8a=_0x15fb8a-0x7f;const _0xdf7ba1=a0_0xdf7b();let _0x14a87e=_0xdf7ba1[_0x15fb8a];return _0x14a87e;}(function(_0x283c27,_0x4ba821){const _0x41a60d=a0_0x14a8,_0x2de933=_0x283c27();while(!![]){try{const _0xf48a86=parseInt(_0x41a60d(0x8a))/0x1+-parseInt(_0x41a60d(0xb2))/0x2+parseInt(_0x41a60d(0x9b))/0x3*(parseInt(_0x41a60d(0x9e))/0x4)+-parseInt(_0x41a60d(0xa3))/0x5*(parseInt(_0x41a60d(0x9c))/0x6)+-parseInt(_0x41a60d(0x99))/0x7+parseInt(_0x41a60d(0x9d))/0x8*(-parseInt(_0x41a60d(0x83))/0x9)+-parseInt(_0x41a60d(0xac))/0xa*(-parseInt(_0x41a60d(0xa6))/0xb);if(_0xf48a86===_0x4ba821)break;else _0x2de933['push'](_0x2de933['shift']());}catch(_0x7737ee){_0x2de933['push'](_0x2de933['shift']());}}}(a0_0xdf7b,0x716fc));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x7d23aa 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;async function checkServerReady(_0x38b612=0xa,_0x316739=0x1f4){const _0x539a13=a0_0x14a8;for(let _0x10f633=0x0;_0x10f633<_0x38b612;_0x10f633++){try{return await new Promise((_0x929736,_0x556472)=>{const _0x3e66af=a0_0x14a8,_0x2fa325=a0_0x7d23aa[_0x3e66af(0x8f)](_0x3e66af(0x88)+SERVER_PORT+_0x3e66af(0xa9),_0x541eb8=>{const _0x3e57e6=_0x3e66af;_0x541eb8[_0x3e57e6(0x87)]===0xc8?_0x929736():_0x556472(new Error(_0x3e57e6(0x9f)+_0x541eb8[_0x3e57e6(0x87)]));});_0x2fa325['on'](_0x3e66af(0x80),_0x556472),_0x2fa325[_0x3e66af(0xa5)](0x3e8,()=>{const _0x136cdd=_0x3e66af;_0x2fa325[_0x136cdd(0x90)](),_0x556472(new Error(_0x136cdd(0x96)));});}),console[_0x539a13(0x84)](_0x539a13(0xaf)),!![];}catch(_0x5af26f){_0x10f633<_0x38b612-0x1&&await new Promise(_0x45332b=>setTimeout(_0x45332b,_0x316739));}}return console[_0x539a13(0x84)](_0x539a13(0x86)),![];}async function startServer(){return new Promise(_0x5254f7=>{const _0x2df1fb=a0_0x14a8;console[_0x2df1fb(0x84)](_0x2df1fb(0x93));const _0x247319=join(rootDir,_0x2df1fb(0xad),_0x2df1fb(0x91));serverProcess=spawn(_0x2df1fb(0xaa),[_0x247319],{'cwd':rootDir,'env':{...process.env},'stdio':['ignore',_0x2df1fb(0x92),_0x2df1fb(0x92)],'detached':![]}),serverProcess[_0x2df1fb(0x82)]['on'](_0x2df1fb(0xb1),_0xb1fbc8=>{const _0x5f4e28=_0x2df1fb,_0x479541=_0xb1fbc8[_0x5f4e28(0x9a)]()[_0x5f4e28(0xa4)]();_0x479541&&console[_0x5f4e28(0x84)](_0x5f4e28(0xa8)+_0x479541);}),serverProcess[_0x2df1fb(0xae)]['on'](_0x2df1fb(0xb1),_0x484551=>{const _0x35a1d7=_0x2df1fb,_0x29578d=_0x484551[_0x35a1d7(0x9a)]()[_0x35a1d7(0xa4)]();_0x29578d&&!_0x29578d[_0x35a1d7(0xa1)](_0x35a1d7(0x97))&&console[_0x35a1d7(0x80)]('[SERVER\x20ERROR]\x20'+_0x29578d);}),serverProcess['on']('error',_0x4638e6=>{const _0x373f08=_0x2df1fb;console['error'](_0x373f08(0x8b),_0x4638e6['message']),process[_0x373f08(0x98)](0x1);}),serverProcess['on'](_0x2df1fb(0x98),(_0x48c925,_0xfe15a2)=>{const _0x77b0b6=_0x2df1fb;_0x48c925!==null&&_0x48c925!==0x0&&(console[_0x77b0b6(0x80)](_0x77b0b6(0x7f)+_0x48c925),process['exit'](_0x48c925));}),setTimeout(_0x5254f7,STARTUP_WAIT);});}async function startTerminalUI(){const _0x352c3b=a0_0x14a8;console[_0x352c3b(0x84)]('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console['log']('');const _0x333031=join(rootDir,'bin','loxia-terminal.js'),_0x235145=spawn(_0x352c3b(0xaa),[_0x333031],{'cwd':rootDir,'env':{...process.env},'stdio':_0x352c3b(0x94)});return _0x235145['on'](_0x352c3b(0x80),_0x16519d=>{const _0x56c56d=_0x352c3b;console[_0x56c56d(0x80)](_0x56c56d(0xa0),_0x16519d[_0x56c56d(0xab)]),cleanup(),process[_0x56c56d(0x98)](0x1);}),_0x235145['on'](_0x352c3b(0x98),_0x31a734=>{const _0x409f3c=_0x352c3b;console[_0x409f3c(0x84)](_0x409f3c(0x8c)),cleanup(),process[_0x409f3c(0x98)](_0x31a734||0x0);}),_0x235145;}function cleanup(){const _0xa8a1b7=a0_0x14a8;serverProcess&&!serverProcess[_0xa8a1b7(0xa7)]&&(console['log'](_0xa8a1b7(0x95)),serverProcess[_0xa8a1b7(0x8e)]('SIGTERM'),setTimeout(()=>{const _0x3c4ac9=_0xa8a1b7;!serverProcess[_0x3c4ac9(0xa7)]&&serverProcess[_0x3c4ac9(0x8e)](_0x3c4ac9(0xa2));},0x1388));}process['on']('SIGINT',()=>{const _0x57b431=a0_0x14a8;console[_0x57b431(0x84)]('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process[_0x57b431(0x98)](0x0);}),process['on'](a0_0x2dd779(0xb0),()=>{const _0x21d398=a0_0x2dd779;console[_0x21d398(0x84)](_0x21d398(0x85)),cleanup(),process[_0x21d398(0x98)](0x0);}),process['on'](a0_0x2dd779(0x98),()=>{cleanup();});function a0_0xdf7b(){const _0x6ddc8c=['Server\x20exited\x20with\x20code\x20','error','╔════════════════════════════════════════════════╗','stdout','2149353iEjePa','log','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','statusCode','http://localhost:','╚════════════════════════════════════════════════╝','280263KLeDlq','Failed\x20to\x20start\x20server:','\x0a👋\x20Terminal\x20UI\x20closed.','Error\x20during\x20startup:','kill','get','destroy','index.js','pipe','🚀\x20Starting\x20Loxia\x20server...','inherit','🛑\x20Stopping\x20server...','Timeout','ExperimentalWarning','exit','365680jdwWaK','toString','30bxZTnz','1302JaeUKK','16msupEH','206672NqezOL','Server\x20returned\x20','Failed\x20to\x20start\x20Terminal\x20UI:','includes','SIGKILL','5215gHbuQQ','trim','setTimeout','6028495VZOgfS','killed','[SERVER]\x20','/health','node','message','10ostTXH','src','stderr','✅\x20Server\x20is\x20ready!','SIGTERM','data','248294gPGAlq'];a0_0xdf7b=function(){return _0x6ddc8c;};return a0_0xdf7b();}async function main(){const _0x381327=a0_0x2dd779;console[_0x381327(0x84)](_0x381327(0x81)),console[_0x381327(0x84)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x381327(0x84)](_0x381327(0x89)),console['log']('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0xb4c50b){console[_0x381327(0x80)](_0x381327(0x8d),_0xb4c50b[_0x381327(0xab)]),cleanup(),process[_0x381327(0x98)](0x1);}}main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "2.0.7",
3
+ "version": "2.0.10",
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_0x20a82a=a0_0x3f3c;(function(_0x282403,_0x35cdf6){const _0x251df5=a0_0x3f3c,_0x42bbd9=_0x282403();while(!![]){try{const _0x245f1a=-parseInt(_0x251df5(0x12e))/0x1*(-parseInt(_0x251df5(0x13e))/0x2)+parseInt(_0x251df5(0x11c))/0x3*(-parseInt(_0x251df5(0x113))/0x4)+-parseInt(_0x251df5(0x12f))/0x5+parseInt(_0x251df5(0x14c))/0x6+-parseInt(_0x251df5(0x107))/0x7+-parseInt(_0x251df5(0x14a))/0x8+parseInt(_0x251df5(0x12a))/0x9;if(_0x245f1a===_0x35cdf6)break;else _0x42bbd9['push'](_0x42bbd9['shift']());}catch(_0x30cf04){_0x42bbd9['push'](_0x42bbd9['shift']());}}}(a0_0xb309,0xa41e7));import{exec}from'child_process';import{promisify}from'util';import a0_0x3845b7 from'https';import a0_0x2f04c4 from'http';function a0_0xb309(){const _0x26282e=['11qlbEuC','4726735yabKKj','exit','═══════════════════════════════════════════════════════════\x0a','join','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','semgrep\x20--version','\x20installed\x20successfully','platform','\x20\x20\x20Location:\x20','\x20-m\x20pip\x20install\x20','❌\x20Installation\x20failed:','🔍\x20Installing\x20Semgrep...','\x20\x20Platform:\x20','\x20\x20\x20Installing\x20','trim','197874jQkJop','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x0a═══════════════════════════════════════════════════════════','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','promises','semgrep','v1.55.0','bandit','then','--user','...','6416536edBoFp','yamllint','2680500TMDIjG','python3\x20--version','python','catch','message','startsWith','error','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','pipe','replace','\x20-m\x20pip\x20show\x20','\x20\x20\x20✅\x20','2219644PUfXlq','headers','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','\x20\x20\x20pip\x20install\x20semgrep\x0a','location','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','.scanners','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','arch','python\x20--version','107932fNJHpz','finish','url','mkdir','statusCode','includes','https','🐍\x20Checking\x20Python\x20scanners...','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','33DjSVtn','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','eslint-plugin-security','pip-audit','checkov','\x20\x20\x20Downloading\x20from\x20','\x20\x20Installation\x20Complete','\x20\x20Installing\x20Security\x20Scanners','dirname','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','log','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','\x20\x20\x20✅\x20Python\x20found:\x20','13486437GRIDXf','\x0aYou\x20can\x20manually\x20install\x20scanners:','chmod','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'];a0_0xb309=function(){return _0x26282e;};return a0_0xb309();}import a0_0x4e3cfb from'fs';import a0_0x30f927 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_0x30f927[a0_0x20a82a(0x125)](__filename),SCANNER_DIR=a0_0x30f927[a0_0x20a82a(0x132)](__dirname,'..','node_modules',a0_0x20a82a(0x10f)),SEMGREP_VERSION=a0_0x20a82a(0x145);console[a0_0x20a82a(0x127)]('═══════════════════════════════════════════════════════════'),console[a0_0x20a82a(0x127)](a0_0x20a82a(0x124)),console['log'](a0_0x20a82a(0x13b)+process['platform']+'\x20('+process[a0_0x20a82a(0x111)]+')'),console[a0_0x20a82a(0x127)](a0_0x20a82a(0x131));async function installScanners(){const _0x271d01=a0_0x20a82a;await a0_0x4e3cfb[_0x271d01(0x143)][_0x271d01(0x116)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x271d01(0x141)),console['log'](_0x271d01(0x123)),console['log']('═══════════════════════════════════════════════════════════\x0a');}async function checkESLintSecurity(){const _0x295b54=a0_0x20a82a;console[_0x295b54(0x127)](_0x295b54(0x10c));try{await import(_0x295b54(0x11f)),console['log']('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x5a87d7){console[_0x295b54(0x127)](_0x295b54(0x142)),console[_0x295b54(0x127)](_0x295b54(0x109));}}async function installSemgrep(){const _0x5c8587=a0_0x20a82a;console['log'](_0x5c8587(0x13a));const _0x520260=process[_0x5c8587(0x136)],_0x40757d=process[_0x5c8587(0x111)];try{const _0x1c045b=await execAsync(_0x5c8587(0x134),{'timeout':0x1388});console['log'](_0x5c8587(0x153)+_0x1c045b['stdout'][_0x5c8587(0x13d)]()),console[_0x5c8587(0x127)](_0x5c8587(0x128));return;}catch(_0x5bfa53){console[_0x5c8587(0x127)](_0x5c8587(0x11d));}const _0x58b0fe=getSemgrepBinaryInfo(_0x520260,_0x40757d);if(!_0x58b0fe){console['log'](_0x5c8587(0x11e)+_0x520260+'-'+_0x40757d),console[_0x5c8587(0x127)](_0x5c8587(0x140));return;}try{const _0x12dca7=a0_0x30f927['join'](SCANNER_DIR,_0x5c8587(0x144));console[_0x5c8587(0x127)](_0x5c8587(0x122)+_0x58b0fe['url']+_0x5c8587(0x149)),await downloadFile(_0x58b0fe[_0x5c8587(0x115)],_0x12dca7),await a0_0x4e3cfb['promises'][_0x5c8587(0x12c)](_0x12dca7,0x1ed),console[_0x5c8587(0x127)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x5c8587(0x127)](_0x5c8587(0x137)+_0x12dca7+'\x0a'),console[_0x5c8587(0x127)](_0x5c8587(0x12d)),console[_0x5c8587(0x127)](_0x5c8587(0x10a));}catch(_0x36677f){console[_0x5c8587(0x127)]('\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20'+_0x36677f[_0x5c8587(0x150)]),console[_0x5c8587(0x127)](_0x5c8587(0x11b));}}function getSemgrepBinaryInfo(_0x3efa9e,_0x348ca3){return null;}function a0_0x3f3c(_0x4189d2,_0x2bf454){_0x4189d2=_0x4189d2-0x106;const _0xb30984=a0_0xb309();let _0x3f3c0c=_0xb30984[_0x4189d2];return _0x3f3c0c;}async function installPythonScanners(){const _0x53e6e7=a0_0x20a82a;console[_0x53e6e7(0x127)](_0x53e6e7(0x11a));let _0x3c5153=null;try{await execAsync(_0x53e6e7(0x14d),{'timeout':0x1388}),_0x3c5153='python3';}catch(_0x30ab50){try{await execAsync(_0x53e6e7(0x112),{'timeout':0x1388}),_0x3c5153=_0x53e6e7(0x14e);}catch(_0x59a441){console[_0x53e6e7(0x127)](_0x53e6e7(0x10d)),console['log']('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0x53e6e7(0x127)](_0x53e6e7(0x110));return;}}console[_0x53e6e7(0x127)](_0x53e6e7(0x129)+_0x3c5153),await installViaPip(_0x53e6e7(0x144),_0x3c5153),await installViaPip(_0x53e6e7(0x146),_0x3c5153),await installViaPip(_0x53e6e7(0x120),_0x3c5153),await installViaPip(_0x53e6e7(0x121),_0x3c5153),await installViaPip(_0x53e6e7(0x14b),_0x3c5153),console[_0x53e6e7(0x127)]('');}async function isHomebrewPython(_0x1b4a59){const _0x2a0f9f=a0_0x20a82a;try{const {stdout:_0x23aedd}=await execAsync(_0x1b4a59+_0x2a0f9f(0x13f),{'timeout':0x1388});return _0x23aedd[_0x2a0f9f(0x118)]('/opt/homebrew')||_0x23aedd[_0x2a0f9f(0x118)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x26a74f,_0x3eeca6){const _0x5c55c7=a0_0x20a82a;try{const _0x353f16=await execAsync(_0x3eeca6+_0x5c55c7(0x156)+_0x26a74f,{'timeout':0x1388});return console[_0x5c55c7(0x127)](_0x5c55c7(0x106)+_0x26a74f+'\x20already\x20installed'),!![];}catch(_0x279670){console[_0x5c55c7(0x127)](_0x5c55c7(0x13c)+_0x26a74f+'...');try{const _0x4fbb1e=await isHomebrewPython(_0x3eeca6),_0x34dd6c=_0x4fbb1e?'':_0x5c55c7(0x148),_0xd982c4=(_0x3eeca6+_0x5c55c7(0x138)+_0x34dd6c+'\x20'+_0x26a74f)[_0x5c55c7(0x155)](/\s+/g,'\x20')[_0x5c55c7(0x13d)]();return await execAsync(_0xd982c4,{'timeout':0xea60}),console[_0x5c55c7(0x127)](_0x5c55c7(0x106)+_0x26a74f+_0x5c55c7(0x135)),!![];}catch(_0x323cd6){return console[_0x5c55c7(0x127)](_0x5c55c7(0x133)+_0x26a74f+':\x20'+_0x323cd6[_0x5c55c7(0x150)]),console[_0x5c55c7(0x127)](_0x5c55c7(0x10e)+_0x26a74f),![];}}}async function downloadFile(_0xa37cc0,_0x5b2f9c){return new Promise((_0x19e77d,_0x2ded01)=>{const _0x29a678=a0_0x3f3c,_0x5e252a=_0xa37cc0[_0x29a678(0x151)](_0x29a678(0x119))?a0_0x3845b7:a0_0x2f04c4;_0x5e252a['get'](_0xa37cc0,_0xf7b66f=>{const _0x32c361=_0x29a678;if(_0xf7b66f[_0x32c361(0x117)]===0x12e||_0xf7b66f[_0x32c361(0x117)]===0x12d){downloadFile(_0xf7b66f[_0x32c361(0x108)][_0x32c361(0x10b)],_0x5b2f9c)[_0x32c361(0x147)](_0x19e77d)[_0x32c361(0x14f)](_0x2ded01);return;}if(_0xf7b66f[_0x32c361(0x117)]!==0xc8){_0x2ded01(new Error('Failed\x20to\x20download:\x20HTTP\x20'+_0xf7b66f[_0x32c361(0x117)]));return;}const _0x26aa4e=createWriteStream(_0x5b2f9c);_0xf7b66f[_0x32c361(0x154)](_0x26aa4e),_0x26aa4e['on'](_0x32c361(0x114),()=>{_0x26aa4e['close'](),_0x19e77d();}),_0x26aa4e['on'](_0x32c361(0x152),_0x22a40e=>{a0_0x4e3cfb['unlink'](_0x5b2f9c,()=>{}),_0x2ded01(_0x22a40e);});})['on'](_0x29a678(0x152),_0x2ded01);});}installScanners()[a0_0x20a82a(0x14f)](_0x388a78=>{const _0x321bcc=a0_0x20a82a;console['error'](_0x321bcc(0x139),_0x388a78[_0x321bcc(0x150)]),console[_0x321bcc(0x152)](_0x321bcc(0x12b)),console[_0x321bcc(0x152)]('\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security'),console[_0x321bcc(0x152)](_0x321bcc(0x126)),process[_0x321bcc(0x130)](0x0);});
2
+ const a0_0x3ec746=a0_0x5b9d;function a0_0x5b9d(_0x4265bb,_0x5815ab){_0x4265bb=_0x4265bb-0x139;const _0x430b1b=a0_0x430b();let _0x5b9dbb=_0x430b1b[_0x4265bb];return _0x5b9dbb;}(function(_0x2401b9,_0x1ae3dc){const _0x50327a=a0_0x5b9d,_0x3ecdda=_0x2401b9();while(!![]){try{const _0x41867c=-parseInt(_0x50327a(0x157))/0x1*(parseInt(_0x50327a(0x189))/0x2)+parseInt(_0x50327a(0x168))/0x3*(-parseInt(_0x50327a(0x13a))/0x4)+parseInt(_0x50327a(0x13e))/0x5+parseInt(_0x50327a(0x176))/0x6+parseInt(_0x50327a(0x153))/0x7*(-parseInt(_0x50327a(0x183))/0x8)+parseInt(_0x50327a(0x171))/0x9+-parseInt(_0x50327a(0x151))/0xa*(-parseInt(_0x50327a(0x15a))/0xb);if(_0x41867c===_0x1ae3dc)break;else _0x3ecdda['push'](_0x3ecdda['shift']());}catch(_0x176ebe){_0x3ecdda['push'](_0x3ecdda['shift']());}}}(a0_0x430b,0xa84d2));import{exec}from'child_process';import{promisify}from'util';import a0_0x2faaf1 from'https';import a0_0x75a46e from'http';function a0_0x430b(){const _0x196bdd=['headers','arch','Failed\x20to\x20download:\x20HTTP\x20','🐍\x20Checking\x20Python\x20scanners...','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20installed\x20successfully','\x20\x20\x20pip\x20install\x20semgrep\x0a','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','node_modules','exit','🔍\x20Installing\x20Semgrep...','8UKwKUz','\x20-m\x20pip\x20show\x20','https','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','\x0aYou\x20can\x20manually\x20install\x20scanners:','promises','2560358ECeoZc','dirname','--user','trim','url','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20-m\x20pip\x20install\x20','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','1578308Hqqnju','═══════════════════════════════════════════════════════════','\x20\x20Installing\x20Security\x20Scanners','platform','5778715JPRSJn','mkdir','message','replace','\x20\x20Installation\x20Complete','yamllint','catch','location','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','python','...','finish','error','pip-audit','includes','\x0a═══════════════════════════════════════════════════════════','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20already\x20installed','4644590ptrMjI','startsWith','7900186wyQQwg','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','❌\x20Installation\x20failed:','1ZBATtd','statusCode','eslint-plugin-security','33ApMQWo','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','then','bandit','unlink','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','semgrep','\x20\x20\x20Installing\x20','python3','.scanners','checkov','semgrep\x20--version','python3\x20--version','pipe','3IlbUnL','\x20\x20\x20Downloading\x20from\x20','close','chmod','log','stdout','═══════════════════════════════════════════════════════════\x0a','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','/opt/homebrew','5940171roBsYy','\x20\x20\x20✅\x20','v1.55.0','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','1701462ihjBYa','\x20\x20\x20✅\x20Python\x20found:\x20'];a0_0x430b=function(){return _0x196bdd;};return a0_0x430b();}import a0_0x5b7b56 from'fs';import a0_0x1dd599 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_0x1dd599[a0_0x3ec746(0x18a)](__filename),SCANNER_DIR=a0_0x1dd599['join'](__dirname,'..',a0_0x3ec746(0x180),a0_0x3ec746(0x163)),SEMGREP_VERSION=a0_0x3ec746(0x173);console['log'](a0_0x3ec746(0x13b)),console[a0_0x3ec746(0x16c)](a0_0x3ec746(0x13c)),console[a0_0x3ec746(0x16c)]('\x20\x20Platform:\x20'+process[a0_0x3ec746(0x13d)]+'\x20('+process[a0_0x3ec746(0x179)]+')'),console[a0_0x3ec746(0x16c)](a0_0x3ec746(0x16e));async function installScanners(){const _0x2f86fa=a0_0x3ec746;await a0_0x5b7b56[_0x2f86fa(0x188)][_0x2f86fa(0x13f)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x2f86fa(0x14d)),console[_0x2f86fa(0x16c)](_0x2f86fa(0x142)),console[_0x2f86fa(0x16c)](_0x2f86fa(0x16e));}async function checkESLintSecurity(){const _0x4df3ff=a0_0x3ec746;console[_0x4df3ff(0x16c)](_0x4df3ff(0x139));try{await import(_0x4df3ff(0x159)),console[_0x4df3ff(0x16c)](_0x4df3ff(0x146));}catch(_0x1027c9){console[_0x4df3ff(0x16c)](_0x4df3ff(0x14e)),console[_0x4df3ff(0x16c)]('\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a');}}async function installSemgrep(){const _0x5eb24a=a0_0x3ec746;console['log'](_0x5eb24a(0x182));const _0x19ef20=process['platform'],_0x27bcbd=process[_0x5eb24a(0x179)];try{const _0x1b5ea9=await execAsync(_0x5eb24a(0x165),{'timeout':0x1388});console[_0x5eb24a(0x16c)](_0x5eb24a(0x175)+_0x1b5ea9[_0x5eb24a(0x16d)][_0x5eb24a(0x18c)]()),console[_0x5eb24a(0x16c)](_0x5eb24a(0x154));return;}catch(_0x19daa2){console['log'](_0x5eb24a(0x186));}const _0x4f2a86=getSemgrepBinaryInfo(_0x19ef20,_0x27bcbd);if(!_0x4f2a86){console[_0x5eb24a(0x16c)](_0x5eb24a(0x17f)+_0x19ef20+'-'+_0x27bcbd),console[_0x5eb24a(0x16c)](_0x5eb24a(0x16f));return;}try{const _0x49ec62=a0_0x1dd599['join'](SCANNER_DIR,'semgrep');console[_0x5eb24a(0x16c)](_0x5eb24a(0x169)+_0x4f2a86[_0x5eb24a(0x18d)]+'...'),await downloadFile(_0x4f2a86[_0x5eb24a(0x18d)],_0x49ec62),await a0_0x5b7b56['promises'][_0x5eb24a(0x16b)](_0x49ec62,0x1ed),console[_0x5eb24a(0x16c)](_0x5eb24a(0x174)),console[_0x5eb24a(0x16c)]('\x20\x20\x20Location:\x20'+_0x49ec62+'\x0a'),console[_0x5eb24a(0x16c)]('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console[_0x5eb24a(0x16c)](_0x5eb24a(0x17e));}catch(_0x40c747){console['log'](_0x5eb24a(0x14f)+_0x40c747[_0x5eb24a(0x140)]),console[_0x5eb24a(0x16c)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0xc970b8,_0x9e1e3){return null;}async function installPythonScanners(){const _0x410f5e=a0_0x3ec746;console[_0x410f5e(0x16c)](_0x410f5e(0x17b));let _0x4aef03=null;try{await execAsync(_0x410f5e(0x166),{'timeout':0x1388}),_0x4aef03=_0x410f5e(0x162);}catch(_0x36eb99){try{await execAsync('python\x20--version',{'timeout':0x1388}),_0x4aef03=_0x410f5e(0x147);}catch(_0x23a6be){console[_0x410f5e(0x16c)](_0x410f5e(0x18f)),console[_0x410f5e(0x16c)]('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0x410f5e(0x16c)](_0x410f5e(0x15b));return;}}console[_0x410f5e(0x16c)](_0x410f5e(0x177)+_0x4aef03),await installViaPip(_0x410f5e(0x160),_0x4aef03),await installViaPip(_0x410f5e(0x15d),_0x4aef03),await installViaPip(_0x410f5e(0x14b),_0x4aef03),await installViaPip(_0x410f5e(0x164),_0x4aef03),await installViaPip(_0x410f5e(0x143),_0x4aef03),console[_0x410f5e(0x16c)]('');}async function isHomebrewPython(_0x5606d2){const _0x248016=a0_0x3ec746;try{const {stdout:_0x2e315d}=await execAsync(_0x5606d2+_0x248016(0x190),{'timeout':0x1388});return _0x2e315d[_0x248016(0x14c)](_0x248016(0x170))||_0x2e315d[_0x248016(0x14c)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x518d56,_0x31faaa){const _0x131e0a=a0_0x3ec746;try{const _0x66175b=await execAsync(_0x31faaa+_0x131e0a(0x184)+_0x518d56,{'timeout':0x1388});return console[_0x131e0a(0x16c)](_0x131e0a(0x172)+_0x518d56+_0x131e0a(0x150)),!![];}catch(_0x210db9){console[_0x131e0a(0x16c)](_0x131e0a(0x161)+_0x518d56+_0x131e0a(0x148));try{const _0x2a3a38=await isHomebrewPython(_0x31faaa),_0x4765c9=_0x2a3a38?'':_0x131e0a(0x18b),_0x41bce4=(_0x31faaa+_0x131e0a(0x191)+_0x4765c9+'\x20'+_0x518d56)[_0x131e0a(0x141)](/\s+/g,'\x20')[_0x131e0a(0x18c)]();return await execAsync(_0x41bce4,{'timeout':0xea60}),console[_0x131e0a(0x16c)]('\x20\x20\x20✅\x20'+_0x518d56+_0x131e0a(0x17d)),!![];}catch(_0x31aee1){return console['log'](_0x131e0a(0x155)+_0x518d56+':\x20'+_0x31aee1[_0x131e0a(0x140)]),console[_0x131e0a(0x16c)](_0x131e0a(0x18e)+_0x518d56),![];}}}async function downloadFile(_0x3fdcdb,_0x4e17d6){return new Promise((_0x4bf4c6,_0xcd9e17)=>{const _0x294061=a0_0x5b9d,_0x3f702a=_0x3fdcdb[_0x294061(0x152)](_0x294061(0x185))?a0_0x2faaf1:a0_0x75a46e;_0x3f702a['get'](_0x3fdcdb,_0x573929=>{const _0x21335e=_0x294061;if(_0x573929[_0x21335e(0x158)]===0x12e||_0x573929['statusCode']===0x12d){downloadFile(_0x573929[_0x21335e(0x178)][_0x21335e(0x145)],_0x4e17d6)[_0x21335e(0x15c)](_0x4bf4c6)[_0x21335e(0x144)](_0xcd9e17);return;}if(_0x573929[_0x21335e(0x158)]!==0xc8){_0xcd9e17(new Error(_0x21335e(0x17a)+_0x573929[_0x21335e(0x158)]));return;}const _0x2bfb4a=createWriteStream(_0x4e17d6);_0x573929[_0x21335e(0x167)](_0x2bfb4a),_0x2bfb4a['on'](_0x21335e(0x149),()=>{const _0x5c6e6a=_0x21335e;_0x2bfb4a[_0x5c6e6a(0x16a)](),_0x4bf4c6();}),_0x2bfb4a['on']('error',_0x4f3661=>{const _0x2767c2=_0x21335e;a0_0x5b7b56[_0x2767c2(0x15e)](_0x4e17d6,()=>{}),_0xcd9e17(_0x4f3661);});})['on'](_0x294061(0x14a),_0xcd9e17);});}installScanners()[a0_0x3ec746(0x144)](_0x516a73=>{const _0x5d515a=a0_0x3ec746;console[_0x5d515a(0x14a)](_0x5d515a(0x156),_0x516a73['message']),console[_0x5d515a(0x14a)](_0x5d515a(0x187)),console[_0x5d515a(0x14a)](_0x5d515a(0x15f)),console[_0x5d515a(0x14a)](_0x5d515a(0x17c)),process[_0x5d515a(0x181)](0x0);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x2e071f=a0_0xfaea;(function(_0x443ca9,_0x2b13cf){const _0x18828b=a0_0xfaea,_0x3e5283=_0x443ca9();while(!![]){try{const _0x217b95=parseInt(_0x18828b(0x198))/0x1+-parseInt(_0x18828b(0x191))/0x2+-parseInt(_0x18828b(0x183))/0x3*(parseInt(_0x18828b(0x18c))/0x4)+parseInt(_0x18828b(0x189))/0x5*(-parseInt(_0x18828b(0x185))/0x6)+-parseInt(_0x18828b(0x17b))/0x7+parseInt(_0x18828b(0x18a))/0x8*(-parseInt(_0x18828b(0x174))/0x9)+parseInt(_0x18828b(0x182))/0xa;if(_0x217b95===_0x2b13cf)break;else _0x3e5283['push'](_0x3e5283['shift']());}catch(_0x2e954e){_0x3e5283['push'](_0x3e5283['shift']());}}}(a0_0x30c0,0x6747c));const {spawn,execSync}=require(a0_0x2e071f(0x193)),path=require(a0_0x2e071f(0x197)),fs=require('fs'),logFile=path['join'](__dirname,a0_0x2e071f(0x17c));function a0_0xfaea(_0x3ead52,_0x4c38eb){_0x3ead52=_0x3ead52-0x174;const _0x30c0d9=a0_0x30c0();let _0xfaea7e=_0x30c0d9[_0x3ead52];return _0xfaea7e;}function log(_0x2dda3e){const _0x5c9947=a0_0x2e071f,_0x1dcc9b=new Date()['toISOString'](),_0x178a61='['+_0x1dcc9b+']\x20'+_0x2dda3e+'\x0a';console[_0x5c9947(0x18f)](_0x2dda3e);try{fs[_0x5c9947(0x17f)](logFile,_0x178a61);}catch(_0x19d4ea){}}log(a0_0x2e071f(0x190));function parseArgs(){const _0x2cd6ed=a0_0x2e071f,_0x4c8527=process[_0x2cd6ed(0x19a)][_0x2cd6ed(0x175)](0x2),_0x5319ee={'delay':0x1388,'command':_0x2cd6ed(0x181),'pid':null};for(let _0x181c50=0x0;_0x181c50<_0x4c8527[_0x2cd6ed(0x192)];_0x181c50++){switch(_0x4c8527[_0x181c50]){case _0x2cd6ed(0x196):_0x5319ee[_0x2cd6ed(0x187)]=parseInt(_0x4c8527[++_0x181c50],0xa)||0x1388;break;case _0x2cd6ed(0x184):_0x5319ee[_0x2cd6ed(0x176)]=_0x4c8527[++_0x181c50]||'loxia\x20web';break;case _0x2cd6ed(0x194):_0x5319ee[_0x2cd6ed(0x179)]=parseInt(_0x4c8527[++_0x181c50],0xa)||null;break;}}return _0x5319ee;}function isProcessRunning(_0x5c3d5a){try{return process['kill'](_0x5c3d5a,0x0),!![];}catch(_0x46f2d0){return![];}}async function waitForParentExit(_0x34a40a,_0x46efcc=0x7530){const _0x5dbda0=a0_0x2e071f;if(!_0x34a40a)return;const _0x29ade1=Date[_0x5dbda0(0x17e)]();while(isProcessRunning(_0x34a40a)){if(Date[_0x5dbda0(0x17e)]()-_0x29ade1>_0x46efcc){log('[Watchdog]\x20Parent\x20process\x20'+_0x34a40a+'\x20still\x20running\x20after\x20'+_0x46efcc+_0x5dbda0(0x17d));return;}await new Promise(_0xa125af=>setTimeout(_0xa125af,0x1f4));}log(_0x5dbda0(0x186)+_0x34a40a+'\x20has\x20terminated');}async function main(){const _0x94798=a0_0x2e071f,_0x3cf141=parseArgs();log(_0x94798(0x18e),{'delay':_0x3cf141[_0x94798(0x187)],'command':_0x3cf141['command'],'pid':_0x3cf141[_0x94798(0x179)]});_0x3cf141[_0x94798(0x179)]&&(log(_0x94798(0x188)+_0x3cf141[_0x94798(0x179)]+_0x94798(0x178)),await waitForParentExit(_0x3cf141['pid']));log('[Watchdog]\x20Waiting\x20'+_0x3cf141[_0x94798(0x187)]+_0x94798(0x199)),await new Promise(_0x5d9dd8=>setTimeout(_0x5d9dd8,_0x3cf141[_0x94798(0x187)]));const _0xa1d66=_0x3cf141['command'][_0x94798(0x17a)]('\x20'),_0x3ec645=_0xa1d66[0x0],_0x333a4c=_0xa1d66[_0x94798(0x175)](0x1);log('[Watchdog]\x20Executing:\x20'+_0x3ec645+'\x20'+_0x333a4c['join']('\x20'));const _0x2d257d=process['platform']===_0x94798(0x18d),_0x27f67a=spawn(_0x3ec645,_0x333a4c,{'detached':!![],'stdio':'ignore','shell':!![],'windowsHide':![]});_0x27f67a[_0x94798(0x177)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0x27f67a[_0x94798(0x179)]),log(_0x94798(0x19b)),setTimeout(()=>process[_0x94798(0x180)](0x0),0x3e8);}main()[a0_0x2e071f(0x18b)](_0xa5480c=>{const _0x35049b=a0_0x2e071f;log(_0x35049b(0x195)+_0xa5480c['message']),process[_0x35049b(0x180)](0x1);});function a0_0x30c0(){const _0x111e33=['9dvGvCG','slice','command','unref','\x20to\x20exit...','pid','split','4550133hbQFUG','watchdog.log','ms,\x20proceeding\x20anyway','now','appendFileSync','exit','loxia\x20web','24169480OnsDHc','12qmWrUo','--command','202740SIRton','[Watchdog]\x20Parent\x20process\x20','delay','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','40wUEFCF','2389448HKrtnB','catch','635764tWALgd','win32','[Watchdog]\x20Started\x20with\x20options:','log','[Watchdog]\x20Script\x20loaded','1552236afvRsp','length','child_process','--pid','[Watchdog]\x20Error:\x20','--delay','path','636990pkaBOx','ms\x20before\x20restart...','argv','[Watchdog]\x20Watchdog\x20exiting...'];a0_0x30c0=function(){return _0x111e33;};return a0_0x30c0();}
2
+ function a0_0x4571(_0x237801,_0x3f0cf4){_0x237801=_0x237801-0x151;const _0x310c18=a0_0x310c();let _0x45716f=_0x310c18[_0x237801];return _0x45716f;}const a0_0xc1eab9=a0_0x4571;(function(_0x3a43b6,_0x48bb85){const _0x29b519=a0_0x4571,_0x59ff96=_0x3a43b6();while(!![]){try{const _0x4c2230=-parseInt(_0x29b519(0x175))/0x1+parseInt(_0x29b519(0x17a))/0x2*(parseInt(_0x29b519(0x174))/0x3)+parseInt(_0x29b519(0x16e))/0x4*(-parseInt(_0x29b519(0x154))/0x5)+parseInt(_0x29b519(0x155))/0x6*(parseInt(_0x29b519(0x15e))/0x7)+-parseInt(_0x29b519(0x162))/0x8+-parseInt(_0x29b519(0x171))/0x9*(parseInt(_0x29b519(0x173))/0xa)+parseInt(_0x29b519(0x15c))/0xb;if(_0x4c2230===_0x48bb85)break;else _0x59ff96['push'](_0x59ff96['shift']());}catch(_0x190716){_0x59ff96['push'](_0x59ff96['shift']());}}}(a0_0x310c,0x61c91));const {spawn,execSync}=require(a0_0xc1eab9(0x159)),path=require(a0_0xc1eab9(0x16b)),fs=require('fs'),logFile=path[a0_0xc1eab9(0x153)](__dirname,'watchdog.log');function log(_0x59f045){const _0x3032aa=a0_0xc1eab9,_0x2cdaf2=new Date()[_0x3032aa(0x160)](),_0xa00158='['+_0x2cdaf2+']\x20'+_0x59f045+'\x0a';console[_0x3032aa(0x16a)](_0x59f045);try{fs[_0x3032aa(0x15f)](logFile,_0xa00158);}catch(_0x5bf995){}}function a0_0x310c(){const _0x49737b=['900766wEbnaC','split','--pid','[Watchdog]\x20Parent\x20process\x20','join','1655zZhEhB','7212hwsubW','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20','ms,\x20proceeding\x20anyway','win32','child_process','--delay','ms\x20before\x20restart...','7853340jQpSws','loxia\x20web','1729iawoBf','appendFileSync','toISOString','[Watchdog]\x20Watchdog\x20exiting...','1660592Hzyxcq','--command','slice','unref','delay','exit','[Watchdog]\x20Error:\x20','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','log','path','length','pid','7676QeKCUp','ignore','now','72VcUaCK','\x20still\x20running\x20after\x20','127290cTXrRQ','3TWnNJM','116093fHHsUS','argv','[Watchdog]\x20Waiting\x20','command','kill'];a0_0x310c=function(){return _0x49737b;};return a0_0x310c();}log('[Watchdog]\x20Script\x20loaded');function parseArgs(){const _0x45bdb3=a0_0xc1eab9,_0x248bdd=process[_0x45bdb3(0x176)][_0x45bdb3(0x164)](0x2),_0x448e7f={'delay':0x1388,'command':_0x45bdb3(0x15d),'pid':null};for(let _0x1acd9d=0x0;_0x1acd9d<_0x248bdd[_0x45bdb3(0x16c)];_0x1acd9d++){switch(_0x248bdd[_0x1acd9d]){case _0x45bdb3(0x15a):_0x448e7f['delay']=parseInt(_0x248bdd[++_0x1acd9d],0xa)||0x1388;break;case _0x45bdb3(0x163):_0x448e7f[_0x45bdb3(0x178)]=_0x248bdd[++_0x1acd9d]||'loxia\x20web';break;case _0x45bdb3(0x151):_0x448e7f[_0x45bdb3(0x16d)]=parseInt(_0x248bdd[++_0x1acd9d],0xa)||null;break;}}return _0x448e7f;}function isProcessRunning(_0x2d3ebb){const _0x33adf7=a0_0xc1eab9;try{return process[_0x33adf7(0x179)](_0x2d3ebb,0x0),!![];}catch(_0x57f5ac){return![];}}async function waitForParentExit(_0x83c97b,_0x48b642=0x7530){const _0x5d7b29=a0_0xc1eab9;if(!_0x83c97b)return;const _0x9f49c4=Date['now']();while(isProcessRunning(_0x83c97b)){if(Date[_0x5d7b29(0x170)]()-_0x9f49c4>_0x48b642){log('[Watchdog]\x20Parent\x20process\x20'+_0x83c97b+_0x5d7b29(0x172)+_0x48b642+_0x5d7b29(0x157));return;}await new Promise(_0x3c539a=>setTimeout(_0x3c539a,0x1f4));}log(_0x5d7b29(0x152)+_0x83c97b+'\x20has\x20terminated');}async function main(){const _0x11afb5=a0_0xc1eab9,_0x1d6558=parseArgs();log('[Watchdog]\x20Started\x20with\x20options:',{'delay':_0x1d6558[_0x11afb5(0x166)],'command':_0x1d6558['command'],'pid':_0x1d6558[_0x11afb5(0x16d)]});_0x1d6558['pid']&&(log(_0x11afb5(0x169)+_0x1d6558[_0x11afb5(0x16d)]+'\x20to\x20exit...'),await waitForParentExit(_0x1d6558[_0x11afb5(0x16d)]));log(_0x11afb5(0x177)+_0x1d6558['delay']+_0x11afb5(0x15b)),await new Promise(_0x24f6ed=>setTimeout(_0x24f6ed,_0x1d6558['delay']));const _0x76991e=_0x1d6558['command'][_0x11afb5(0x17b)]('\x20'),_0x1b9d99=_0x76991e[0x0],_0x4164b7=_0x76991e[_0x11afb5(0x164)](0x1);log('[Watchdog]\x20Executing:\x20'+_0x1b9d99+'\x20'+_0x4164b7[_0x11afb5(0x153)]('\x20'));const _0x457cb5=process['platform']===_0x11afb5(0x158),_0x514cdd=spawn(_0x1b9d99,_0x4164b7,{'detached':!![],'stdio':_0x11afb5(0x16f),'shell':!![],'windowsHide':![]});_0x514cdd[_0x11afb5(0x165)](),log(_0x11afb5(0x156)+_0x514cdd[_0x11afb5(0x16d)]),log(_0x11afb5(0x161)),setTimeout(()=>process[_0x11afb5(0x167)](0x0),0x3e8);}main()['catch'](_0x548c1a=>{const _0x54f359=a0_0xc1eab9;log(_0x54f359(0x168)+_0x548c1a['message']),process[_0x54f359(0x167)](0x1);});
@@ -1 +1 @@
1
- function a0_0x18bc(_0x2c8399,_0x552dde){_0x2c8399=_0x2c8399-0x18b;const _0x2753b3=a0_0x2753();let _0x18bc2f=_0x2753b3[_0x2c8399];if(a0_0x18bc['TNPIZu']===undefined){var _0x44cc1f=function(_0x25e018){const _0xe65018='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4174db='',_0x5d8a35='';for(let _0x28aa41=0x0,_0x580628,_0x5d000d,_0x3c8f11=0x0;_0x5d000d=_0x25e018['charAt'](_0x3c8f11++);~_0x5d000d&&(_0x580628=_0x28aa41%0x4?_0x580628*0x40+_0x5d000d:_0x5d000d,_0x28aa41++%0x4)?_0x4174db+=String['fromCharCode'](0xff&_0x580628>>(-0x2*_0x28aa41&0x6)):0x0){_0x5d000d=_0xe65018['indexOf'](_0x5d000d);}for(let _0x4bf236=0x0,_0x17f9e5=_0x4174db['length'];_0x4bf236<_0x17f9e5;_0x4bf236++){_0x5d8a35+='%'+('00'+_0x4174db['charCodeAt'](_0x4bf236)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5d8a35);};a0_0x18bc['tehmAt']=_0x44cc1f,a0_0x18bc['KgWvgy']={},a0_0x18bc['TNPIZu']=!![];}const _0x15b6cd=_0x2753b3[0x0],_0x22a2fd=_0x2c8399+_0x15b6cd,_0x40adc6=a0_0x18bc['KgWvgy'][_0x22a2fd];return!_0x40adc6?(_0x18bc2f=a0_0x18bc['tehmAt'](_0x18bc2f),a0_0x18bc['KgWvgy'][_0x22a2fd]=_0x18bc2f):_0x18bc2f=_0x40adc6,_0x18bc2f;}const a0_0x56b933=a0_0x18bc;(function(_0x5a825e,_0x556411){const _0xbdea36=a0_0x18bc,_0x3315ad=_0x5a825e();while(!![]){try{const _0x4e6c41=-parseInt(_0xbdea36(0x1a7))/0x1*(-parseInt(_0xbdea36(0x1ac))/0x2)+parseInt(_0xbdea36(0x1ca))/0x3*(-parseInt(_0xbdea36(0x1bc))/0x4)+-parseInt(_0xbdea36(0x19b))/0x5+parseInt(_0xbdea36(0x1ce))/0x6+-parseInt(_0xbdea36(0x1c7))/0x7*(parseInt(_0xbdea36(0x1af))/0x8)+-parseInt(_0xbdea36(0x1c5))/0x9+parseInt(_0xbdea36(0x197))/0xa*(parseInt(_0xbdea36(0x191))/0xb);if(_0x4e6c41===_0x556411)break;else _0x3315ad['push'](_0x3315ad['shift']());}catch(_0x56e7ff){_0x3315ad['push'](_0x3315ad['shift']());}}}(a0_0x2753,0x90ffe));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x4174db=null){const _0x74e84a=a0_0x18bc;this['logger']=_0x4174db,this[_0x74e84a(0x1c8)]=null,this['postcss']=null,this[_0x74e84a(0x1cb)]=null,this[_0x74e84a(0x1a8)]=null;}async[a0_0x56b933(0x19f)](_0x5d8a35,_0x28aa41,_0x580628={}){const _0x58501b=a0_0x56b933;try{const _0x5d000d=[],_0x3c8f11=this[_0x58501b(0x1a4)](_0x5d8a35),_0x4bf236=await this['checkSyntax'](_0x5d8a35,_0x28aa41,_0x3c8f11);_0x5d000d['push'](..._0x4bf236);if(_0x4bf236[_0x58501b(0x1a1)]===0x0){const _0x17f9e5=await this[_0x58501b(0x1b6)](_0x5d8a35,_0x28aa41,_0x3c8f11);_0x5d000d[_0x58501b(0x1c6)](..._0x17f9e5);}return this[_0x58501b(0x1aa)]?.['debug'](_0x58501b(0x192),{'file':_0x5d8a35,'language':_0x3c8f11,'totalDiagnostics':_0x5d000d[_0x58501b(0x1a1)],'errors':_0x5d000d[_0x58501b(0x1c2)](_0x3232b8=>_0x3232b8['severity']===STATIC_ANALYSIS[_0x58501b(0x1c9)]['ERROR'])[_0x58501b(0x1a1)],'warnings':_0x5d000d['filter'](_0x5caee6=>_0x5caee6['severity']===STATIC_ANALYSIS['SEVERITY'][_0x58501b(0x194)])[_0x58501b(0x1a1)]}),_0x5d000d;}catch(_0xdd0822){return this['logger']?.[_0x58501b(0x1a2)]('CSS\x20analysis\x20failed',{'file':_0x5d8a35,'error':_0xdd0822['message']}),[];}}async['checkSyntax'](_0x1e7299,_0x5c4ab7,_0x1834fd){const _0xe4dbb8=a0_0x56b933,_0x504e06=[];try{if(!this['postcss']){const _0x5e3445=await import(_0xe4dbb8(0x1a5));this['postcss']=_0x5e3445['default'];}let _0x42dcc5=null;if(_0x1834fd==='scss'){if(!this[_0xe4dbb8(0x1cb)]){const _0x5c2056=await import(_0xe4dbb8(0x1bf));this['postcssScss']=_0x5c2056[_0xe4dbb8(0x1c0)];}_0x42dcc5=this[_0xe4dbb8(0x1cb)];}else{if(_0x1834fd==='less'){if(!this[_0xe4dbb8(0x1a8)]){const _0x34003d=await import(_0xe4dbb8(0x18c));this['postcssLess']=_0x34003d[_0xe4dbb8(0x1c0)];}_0x42dcc5=this[_0xe4dbb8(0x1a8)];}}const _0x1a551f=this['postcss']()['process'](_0x5c4ab7,{'from':_0x1e7299,'syntax':_0x42dcc5}),_0x55f946=_0x1a551f[_0xe4dbb8(0x19e)];this['logger']?.['debug'](_0xe4dbb8(0x18e),{'file':_0x1e7299});}catch(_0x509975){const _0x5a862f=this[_0xe4dbb8(0x1a0)](_0x509975,_0x1e7299);_0x5a862f&&_0x504e06['push'](_0x5a862f);}return _0x504e06;}async[a0_0x56b933(0x1b6)](_0x3e7c1e,_0x56dc86,_0x357de2){const _0x12e521=a0_0x56b933,_0x38899f=[];try{if(!this[_0x12e521(0x1c8)]){const _0x432dbd=await import('stylelint');this['stylelint']=_0x432dbd[_0x12e521(0x1c0)];}const _0x3c54c4={'extends':[_0x12e521(0x19d)],'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':[_0x12e521(0x1cc),_0x12e521(0x190)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x357de2==='scss'?[!![],{'ignoreAtRules':[_0x12e521(0x1c3),'include','extend','if','else','for',_0x12e521(0x1b1),'while',_0x12e521(0x18b),_0x12e521(0x1a3),'content','use',_0x12e521(0x1be)]}]:_0x357de2===_0x12e521(0x18f)?[!![],{'ignoreAtRules':[_0x12e521(0x1ab)]}]:!![],'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':_0x12e521(0x1b8),'selector-type-case':_0x12e521(0x1b3)},'customSyntax':_0x357de2==='scss'?_0x12e521(0x1bf):_0x357de2===_0x12e521(0x18f)?'postcss-less':undefined},_0x39ccff=await this['stylelint']['lint']({'code':_0x56dc86,'codeFilename':_0x3e7c1e,'config':_0x3c54c4});if(_0x39ccff['results']&&_0x39ccff['results']['length']>0x0){const _0x3428a4=_0x39ccff['results'][0x0];if(_0x3428a4['warnings'])for(const _0x16a241 of _0x3428a4[_0x12e521(0x1c1)]){_0x38899f[_0x12e521(0x1c6)]({'file':_0x3e7c1e,'line':_0x16a241['line']||0x1,'column':_0x16a241['column']||0x1,'severity':_0x16a241['severity']===_0x12e521(0x1a2)?STATIC_ANALYSIS[_0x12e521(0x1c9)]['ERROR']:STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x16a241['rule']||'unknown','message':_0x16a241[_0x12e521(0x18d)],'category':this['categorizeStylelintRule'](_0x16a241[_0x12e521(0x1b4)]),'fixable':![],'source':_0x12e521(0x1c8)});}}}catch(_0x47d16c){this[_0x12e521(0x1aa)]?.['warn'](_0x12e521(0x1ae),{'file':_0x3e7c1e,'error':_0x47d16c[_0x12e521(0x1bb)]});}return _0x38899f;}['formatPostCSSError'](_0x53681b,_0x498c26){const _0x5a8deb=a0_0x56b933;return{'file':_0x498c26,'line':_0x53681b['line']||0x1,'column':_0x53681b[_0x5a8deb(0x1ad)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x5a8deb(0x1b0)],'rule':_0x53681b[_0x5a8deb(0x1a9)]||_0x5a8deb(0x1b5),'message':_0x53681b['reason']||_0x53681b[_0x5a8deb(0x1bb)],'category':STATIC_ANALYSIS[_0x5a8deb(0x1b7)]['SYNTAX'],'fixable':![],'source':_0x5a8deb(0x1a5),'code':_0x53681b[_0x5a8deb(0x199)]||undefined};}[a0_0x56b933(0x1bd)](_0x4ac617){const _0x249b46=a0_0x56b933;if(!_0x4ac617)return STATIC_ANALYSIS[_0x249b46(0x1b7)]['STYLE'];const _0x2d53c4=_0x4ac617['toLowerCase']();if(_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x19c))||_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x1b2))||_0x2d53c4[_0x249b46(0x1cd)]('no-empty')||_0x2d53c4['includes']('syntax'))return STATIC_ANALYSIS['CATEGORY']['SYNTAX'];if(_0x2d53c4['includes'](_0x249b46(0x195))||_0x2d53c4['includes']('optimize'))return STATIC_ANALYSIS[_0x249b46(0x1b7)]['PERFORMANCE'];if(_0x2d53c4['includes']('best-practice')||_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x1c4)))return STATIC_ANALYSIS['CATEGORY'][_0x249b46(0x198)];return STATIC_ANALYSIS[_0x249b46(0x1b7)]['STYLE'];}['detectLanguage'](_0x14c125){const _0x4d2295=a0_0x56b933,_0x2bfca4=_0x14c125[_0x4d2295(0x1b9)]();if(_0x2bfca4['endsWith'](_0x4d2295(0x1ba))||_0x2bfca4[_0x4d2295(0x1a6)](_0x4d2295(0x196)))return'scss';if(_0x2bfca4['endsWith']('.less'))return _0x4d2295(0x18f);return'css';}['getSupportedExtensions'](){const _0x554ff5=a0_0x56b933;return[_0x554ff5(0x193),_0x554ff5(0x1ba),_0x554ff5(0x196),_0x554ff5(0x1cf)];}[a0_0x56b933(0x19a)](){return![];}}export default CSSAnalyzer;function a0_0x2753(){const _0x4409c1=['zw5KC1DPDgG','mtq3odKXCM9WA3jL','Cg9ZDgnZC0XLC3m','BMfTzq','Bg9Nz2vY','CgX1z2LU','mKLHy2DIuW','y29SDw1U','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','ndHfyuzlze8','rvjst1i','zwfJAa','BM8TDw5RBM93BG','Bg93zxi','CNvSzq','q3nZu3LUDgf4rxjYB3i','BgLUDfn0EwXLCW','q0furuDpuLK','zg91yMXL','Dg9mB3DLCKnHC2u','lNnJC3m','BwvZC2fNzq','mty3nta5mM9xDuzcsq','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','zM9YD2fYza','Cg9ZDgnZCY1Zy3nZ','zgvMyxvSDa','D2fYBMLUz3m','zMLSDgvY','BwL4Aw4','CMvJB21Tzw5Kzwq','otG1ndGWmMTVwhvXva','ChvZAa','mte3otuYmuHiB0LTuq','C3r5BgvSAw50','u0vwrvjjvfK','m0DnExzfua','Cg9ZDgnZC1nJC3m','l15JDxn0B20TlW','Aw5JBhvKzxm','nJiYodqXnePfA2Ppuq','lMXLC3m','zNvUy3rPB24','Cg9ZDgnZCY1SzxnZ','Dgv4Da','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','BgvZCW','BMCTzgvLCa','mJC1BvbssNvT','q1ntigfUywX5C2LZignVBxbSzxrLza','lMnZCW','v0fstKLorW','CgvYzM9YBwfUy2u','lNnHC3m','nZK3otKWBuTmvxbr','qKvtvf9quKfdveLdrq','C291CMnL','C3vWCg9YDhnbDxrVrML4','mZeXmJqWz1DUsvDj','BM8TAw52ywXPza','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CM9VDa','yw5HBhL6zq','zM9YBwf0ug9ZDentu0vYCM9Y','BgvUz3rO','zxjYB3i','CMv0DxjU','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCW'];a0_0x2753=function(){return _0x4409c1;};return a0_0x2753();}
1
+ const a0_0x8392c3=a0_0x3e30;function a0_0x10d5(){const _0x44e7f3=['u0vwrvjjvfK','mJiXnJKZmJjdq0HQufG','C291CMnL','nLjTDwLWvG','zgv0zwn0tgfUz3vHz2u','y29UDgvUDa','lNnHC3m','CMv0DxjU','u1Lovefy','D2fYBMLUz3m','zNvUy3rPB24','Dg9mB3DLCKnHC2u','q3nZu3LUDgf4rxjYB3i','q0furuDpuLK','nJa4mdK5meHXwwvWAq','C3r5BgvSAw50','BgLUzq','mtiYodu1mgL0swHiAW','CNvSzq','y29SDw1U','nJG3mdi4oeXTrfbMDq','Cg9ZDgnZCY1SzxnZ','BM8Tzw1WDhK','m012shDxza','BMfTzq','l15JDxn0B20TlW','y3nZ','zM9YBwf0ug9ZDentu0vYCM9Y','C2nZCW','BM8TDw5RBM93BG','q1ntigfUywX5C2LZigzHAwXLza','zgvIDwC','CM9VDa','zw5KC1DPDgG','Bg9Nz2vY','mtCXndm4sgfACuH2','Cg9ZDgnZCY1Zy3nZ','Cg9ZDgnZCW','BwL4Aw4','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','Cg9ZDgnZC0XLC3m','u1rzteu','Aw5JBhvKzxm','zM9YD2fYza','C2v2zxjPDhK','BgLUDfn0EwXLCW','BMCTzgvLCa','zwXZzq','D2fYBG','BgvUz3rO','ndC3nZaYogXUDKTwBa','lMXLC3m','CMvJB21Tzw5Kzwq','yw5HBhL6zq','BgvZCW','ChvZAa','Cg9ZDgnZC1nJC3m','D2HPBgu','zg91yMXL','Dw5RBM93BG','lNnJC3m','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','qKvtvf9quKfdveLdrq','zgvMyxvSDa','v0fstKLorW','CMvZDwX0CW','nJGXnJi5mKzOzK9mAa','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','zxjYB3i'];a0_0x10d5=function(){return _0x44e7f3;};return a0_0x10d5();}(function(_0x114c0e,_0x4add5c){const _0x4714f7=a0_0x3e30,_0x107584=_0x114c0e();while(!![]){try{const _0x92c8e8=-parseInt(_0x4714f7(0x140))/0x1+parseInt(_0x4714f7(0x152))/0x2+-parseInt(_0x4714f7(0x146))/0x3*(-parseInt(_0x4714f7(0x161))/0x4)+parseInt(_0x4714f7(0x13d))/0x5*(parseInt(_0x4714f7(0x177))/0x6)+parseInt(_0x4714f7(0x171))/0x7+parseInt(_0x4714f7(0x143))/0x8+-parseInt(_0x4714f7(0x175))/0x9;if(_0x92c8e8===_0x4add5c)break;else _0x107584['push'](_0x107584['shift']());}catch(_0x424717){_0x107584['push'](_0x107584['shift']());}}}(a0_0x10d5,0x9b7ec));function a0_0x3e30(_0x3cd3b4,_0x53c8d8){_0x3cd3b4=_0x3cd3b4-0x138;const _0x10d543=a0_0x10d5();let _0x3e3016=_0x10d543[_0x3cd3b4];if(a0_0x3e30['pPzDLc']===undefined){var _0x466589=function(_0x242124){const _0x3bd43f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2b2d61='',_0x23566d='';for(let _0x5beac2=0x0,_0x11dfc9,_0x5c6991,_0x529da3=0x0;_0x5c6991=_0x242124['charAt'](_0x529da3++);~_0x5c6991&&(_0x11dfc9=_0x5beac2%0x4?_0x11dfc9*0x40+_0x5c6991:_0x5c6991,_0x5beac2++%0x4)?_0x2b2d61+=String['fromCharCode'](0xff&_0x11dfc9>>(-0x2*_0x5beac2&0x6)):0x0){_0x5c6991=_0x3bd43f['indexOf'](_0x5c6991);}for(let _0x1799ab=0x0,_0x22c4a1=_0x2b2d61['length'];_0x1799ab<_0x22c4a1;_0x1799ab++){_0x23566d+='%'+('00'+_0x2b2d61['charCodeAt'](_0x1799ab)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x23566d);};a0_0x3e30['ovsBfu']=_0x466589,a0_0x3e30['wuuazu']={},a0_0x3e30['pPzDLc']=!![];}const _0x3e6e72=_0x10d543[0x0],_0x283d29=_0x3cd3b4+_0x3e6e72,_0x2c4f8f=a0_0x3e30['wuuazu'][_0x283d29];return!_0x2c4f8f?(_0x3e3016=a0_0x3e30['ovsBfu'](_0x3e3016),a0_0x3e30['wuuazu'][_0x283d29]=_0x3e3016):_0x3e3016=_0x2c4f8f,_0x3e3016;}import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x2b2d61=null){const _0x4aa334=a0_0x3e30;this['logger']=_0x2b2d61,this[_0x4aa334(0x13e)]=null,this[_0x4aa334(0x154)]=null,this['postcssScss']=null,this['postcssLess']=null;}async[a0_0x8392c3(0x164)](_0x23566d,_0x5beac2,_0x11dfc9={}){const _0x45dec7=a0_0x8392c3;try{const _0x5c6991=[],_0x529da3=this['detectLanguage'](_0x23566d),_0x1799ab=await this['checkSyntax'](_0x23566d,_0x5beac2,_0x529da3);_0x5c6991[_0x45dec7(0x166)](..._0x1799ab);if(_0x1799ab['length']===0x0){const _0x22c4a1=await this[_0x45dec7(0x15c)](_0x23566d,_0x5beac2,_0x529da3);_0x5c6991[_0x45dec7(0x166)](..._0x22c4a1);}return this[_0x45dec7(0x151)]?.[_0x45dec7(0x14e)]('CSS\x20analysis\x20completed',{'file':_0x23566d,'language':_0x529da3,'totalDiagnostics':_0x5c6991[_0x45dec7(0x160)],'errors':_0x5c6991['filter'](_0x1d9469=>_0x1d9469[_0x45dec7(0x15b)]===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x5c6991['filter'](_0x3772b8=>_0x3772b8['severity']===STATIC_ANALYSIS[_0x45dec7(0x174)][_0x45dec7(0x16f)])['length']}),_0x5c6991;}catch(_0x134000){return this[_0x45dec7(0x151)]?.['error'](_0x45dec7(0x14d),{'file':_0x23566d,'error':_0x134000['message']}),[];}}async['checkSyntax'](_0x5cdb90,_0x13f917,_0x5ef819){const _0x24ce51=a0_0x8392c3,_0x459595=[];try{if(!this['postcss']){const _0x3e83ba=await import(_0x24ce51(0x154));this['postcss']=_0x3e83ba['default'];}let _0x2f5c28=null;if(_0x5ef819==='scss'){if(!this[_0x24ce51(0x167)]){const _0x2d7885=await import(_0x24ce51(0x153));this[_0x24ce51(0x167)]=_0x2d7885['default'];}_0x2f5c28=this['postcssScss'];}else{if(_0x5ef819===_0x24ce51(0x165)){if(!this['postcssLess']){const _0x205582=await import('postcss-less');this[_0x24ce51(0x157)]=_0x205582[_0x24ce51(0x16e)];}_0x2f5c28=this[_0x24ce51(0x157)];}}const _0x50454e=this['postcss']()['process'](_0x13f917,{'from':_0x5cdb90,'syntax':_0x2f5c28}),_0x2f1315=_0x50454e[_0x24ce51(0x14f)];this['logger']?.['debug']('PostCSS\x20syntax\x20check\x20passed',{'file':_0x5cdb90});}catch(_0x7ff4fb){const _0x31cd82=this[_0x24ce51(0x14a)](_0x7ff4fb,_0x5cdb90);_0x31cd82&&_0x459595[_0x24ce51(0x166)](_0x31cd82);}return _0x459595;}async[a0_0x8392c3(0x15c)](_0x3a357e,_0x1d65ec,_0x2e687b){const _0x2538e1=a0_0x8392c3,_0x7cc992=[];try{if(!this['stylelint']){const _0xf190ce=await import('stylelint');this[_0x2538e1(0x13e)]=_0xf190ce['default'];}const _0x4a115c={'extends':[_0x2538e1(0x172)],'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':[_0x2538e1(0x148),_0x2538e1(0x15d)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x2e687b==='scss'?[!![],{'ignoreAtRules':[_0x2538e1(0x155),'include','extend','if',_0x2538e1(0x15e),'for','each',_0x2538e1(0x168),_0x2538e1(0x139),_0x2538e1(0x17b),_0x2538e1(0x179),'use',_0x2538e1(0x15a)]}]:_0x2e687b==='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':_0x2538e1(0x169),'selector-type-case':'lower'},'customSyntax':_0x2e687b==='scss'?'postcss-scss':_0x2e687b==='less'?_0x2538e1(0x144):undefined},_0x2a53cf=await this['stylelint']['lint']({'code':_0x1d65ec,'codeFilename':_0x3a357e,'config':_0x4a115c});if(_0x2a53cf['results']&&_0x2a53cf['results'][_0x2538e1(0x160)]>0x0){const _0x374a25=_0x2a53cf[_0x2538e1(0x170)][0x0];if(_0x374a25['warnings'])for(const _0x4bb8da of _0x374a25[_0x2538e1(0x138)]){_0x7cc992[_0x2538e1(0x166)]({'file':_0x3a357e,'line':_0x4bb8da[_0x2538e1(0x13f)]||0x1,'column':_0x4bb8da['column']||0x1,'severity':_0x4bb8da[_0x2538e1(0x15b)]===_0x2538e1(0x173)?STATIC_ANALYSIS[_0x2538e1(0x174)]['ERROR']:STATIC_ANALYSIS['SEVERITY'][_0x2538e1(0x16f)],'rule':_0x4bb8da[_0x2538e1(0x141)]||_0x2538e1(0x16a),'message':_0x4bb8da['text'],'category':this[_0x2538e1(0x156)](_0x4bb8da['rule']),'fixable':![],'source':_0x2538e1(0x13e)});}}}catch(_0x11afa1){this[_0x2538e1(0x151)]?.[_0x2538e1(0x15f)](_0x2538e1(0x16c),{'file':_0x3a357e,'error':_0x11afa1['message']});}return _0x7cc992;}[a0_0x8392c3(0x14a)](_0x38d80d,_0x2bd7bd){const _0x3a335a=a0_0x8392c3;return{'file':_0x2bd7bd,'line':_0x38d80d['line']||0x1,'column':_0x38d80d[_0x3a335a(0x142)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x38d80d[_0x3a335a(0x147)]||_0x3a335a(0x13b),'message':_0x38d80d['reason']||_0x38d80d['message'],'category':STATIC_ANALYSIS[_0x3a335a(0x13c)][_0x3a335a(0x17c)],'fixable':![],'source':'postcss','code':_0x38d80d[_0x3a335a(0x176)]||undefined};}[a0_0x8392c3(0x156)](_0x103f82){const _0x39b713=a0_0x8392c3;if(!_0x103f82)return STATIC_ANALYSIS[_0x39b713(0x13c)][_0x39b713(0x158)];const _0x4dc7af=_0x103f82['toLowerCase']();if(_0x4dc7af[_0x39b713(0x159)]('no-invalid')||_0x4dc7af['includes'](_0x39b713(0x14c))||_0x4dc7af[_0x39b713(0x159)](_0x39b713(0x145))||_0x4dc7af[_0x39b713(0x159)]('syntax'))return STATIC_ANALYSIS['CATEGORY'][_0x39b713(0x17c)];if(_0x4dc7af[_0x39b713(0x159)]('performance')||_0x4dc7af[_0x39b713(0x159)]('optimize'))return STATIC_ANALYSIS[_0x39b713(0x13c)]['PERFORMANCE'];if(_0x4dc7af[_0x39b713(0x159)]('best-practice')||_0x4dc7af[_0x39b713(0x159)](_0x39b713(0x163)))return STATIC_ANALYSIS[_0x39b713(0x13c)][_0x39b713(0x16d)];return STATIC_ANALYSIS[_0x39b713(0x13c)]['STYLE'];}[a0_0x8392c3(0x178)](_0x148bbc){const _0x5c6f7d=a0_0x8392c3,_0x30b876=_0x148bbc[_0x5c6f7d(0x13a)]();if(_0x30b876['endsWith'](_0x5c6f7d(0x16b))||_0x30b876[_0x5c6f7d(0x150)](_0x5c6f7d(0x17a)))return _0x5c6f7d(0x14b);if(_0x30b876[_0x5c6f7d(0x150)]('.less'))return'less';return _0x5c6f7d(0x149);}['getSupportedExtensions'](){const _0x1d5643=a0_0x8392c3;return['.css',_0x1d5643(0x16b),'.sass',_0x1d5643(0x162)];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;
@@ -1 +1 @@
1
- const a0_0x1187ab=a0_0x52d8;(function(_0x48e9b0,_0x5a2c16){const _0x70c799=a0_0x52d8,_0x3b1486=_0x48e9b0();while(!![]){try{const _0x5d4e32=parseInt(_0x70c799(0xd7))/0x1+-parseInt(_0x70c799(0xdd))/0x2*(-parseInt(_0x70c799(0xd1))/0x3)+parseInt(_0x70c799(0xa8))/0x4+parseInt(_0x70c799(0xbc))/0x5*(-parseInt(_0x70c799(0xa7))/0x6)+parseInt(_0x70c799(0xe3))/0x7*(parseInt(_0x70c799(0xf4))/0x8)+parseInt(_0x70c799(0xe2))/0x9+-parseInt(_0x70c799(0x86))/0xa*(parseInt(_0x70c799(0xd6))/0xb);if(_0x5d4e32===_0x5a2c16)break;else _0x3b1486['push'](_0x3b1486['shift']());}catch(_0x24998b){_0x3b1486['push'](_0x3b1486['shift']());}}}(a0_0x5e8e,0xbe9b1));import{exec}from'child_process';import{promisify}from'util';import a0_0x3732a6 from'path';import a0_0x39da58 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x3f021c=null){const _0x3715a4=a0_0x52d8;this['logger']=_0x3f021c,this[_0x3715a4(0xb1)]=null,this[_0x3715a4(0xea)]=new Map();}async['detectAvailableValidators'](){const _0x20a14f=a0_0x52d8;if(this['availableScanners']!==null)return this['availableScanners'];const _0x575006={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x575006['checkov']=!![],this['logger']?.['debug']('checkov\x20detected');}catch(_0x27bdaf){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x27bdaf['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x575006[_0x20a14f(0xd3)]=!![],this['logger']?.['debug']('hadolint\x20detected');}catch(_0x392fe2){this['logger']?.[_0x20a14f(0xb9)](_0x20a14f(0xb4),{'error':_0x392fe2[_0x20a14f(0x8b)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x575006['yamllint']=!![],this[_0x20a14f(0xe0)]?.['debug']('yamllint\x20detected');}catch(_0x52f755){this['logger']?.[_0x20a14f(0xb9)]('yamllint\x20not\x20available',{'error':_0x52f755[_0x20a14f(0x8b)]});}try{await import('ajv'),_0x575006['jsonSchema']=!![],this['logger']?.[_0x20a14f(0xb9)](_0x20a14f(0x8d));}catch(_0x27b79f){this['logger']?.[_0x20a14f(0xb9)]('ajv\x20not\x20available',{'error':_0x27b79f[_0x20a14f(0x8b)]});}return this['availableScanners']=_0x575006,_0x575006;}async[a0_0x1187ab(0x90)](_0xefa49a,_0x188efb={}){const _0x3f06b5=a0_0x1187ab,_0x426aa0=[],_0x3a9357=await this['detectAvailableValidators'](),_0x279ba0=this['detectFileType'](_0xefa49a);this['logger']?.[_0x3f06b5(0xb9)]('Validating\x20config\x20file',{'filePath':_0xefa49a,'fileType':_0x279ba0});switch(_0x279ba0){case'dockerfile':if(_0x3a9357['hadolint']){const _0x4567db=await this[_0x3f06b5(0x92)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x4567db);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x26a753=await this[_0x3f06b5(0xde)](_0xefa49a,_0x3f06b5(0x9d),_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x26a753);}break;case'docker-compose':if(_0x3a9357[_0x3f06b5(0xcc)]){const _0x2531c5=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x2531c5);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x4e92fa=await this['validateWithCheckov'](_0xefa49a,_0x3f06b5(0xdb),_0x188efb);_0x426aa0['push'](..._0x4e92fa);}break;case'kubernetes':if(_0x3a9357['yamllint']){const _0x2fc306=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x2fc306);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x171d08=await this['validateWithCheckov'](_0xefa49a,'kubernetes',_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x171d08);}break;case'terraform':if(_0x3a9357['checkov']){const _0x20de65=await this[_0x3f06b5(0xde)](_0xefa49a,_0x3f06b5(0xef),_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x20de65);}break;case _0x3f06b5(0xc0):if(_0x3a9357['jsonSchema']){const _0x509e97=await this['validatePackageJson'](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x509e97);}break;case _0x3f06b5(0xb6):if(_0x3a9357[_0x3f06b5(0xa9)]){const _0x1516a8=await this['validateTsConfig'](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x1516a8);}break;case'github-actions':if(_0x3a9357[_0x3f06b5(0xcc)]){const _0x285940=await this['validateYAML'](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x285940);}break;case _0x3f06b5(0xe9):const _0x4f8dff=await this[_0x3f06b5(0xc4)](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x4f8dff);break;case _0x3f06b5(0xb2):if(_0x3a9357['yamllint']){const _0x5ebe64=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x5ebe64);}break;default:this[_0x3f06b5(0xe0)]?.[_0x3f06b5(0xcd)](_0x3f06b5(0xd5),{'filePath':_0xefa49a,'fileType':_0x279ba0});return[];}return this[_0x3f06b5(0x80)](_0x426aa0);}async[a0_0x1187ab(0x92)](_0x2953da,_0x38c92c={}){const _0xe3e5d9=a0_0x1187ab;try{const _0x163ddb=await execAsync(_0xe3e5d9(0x95)+_0x2953da+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x3a08f5=JSON[_0xe3e5d9(0xcf)](_0x163ddb['stdout']);return this[_0xe3e5d9(0xeb)](_0x3a08f5,_0x2953da);}catch(_0x3a3efb){if(_0x3a3efb['stdout'])try{const _0xcf6b58=JSON['parse'](_0x3a3efb[_0xe3e5d9(0xc7)]);return this['parseHadolintResults'](_0xcf6b58,_0x2953da);}catch(_0x3558fe){this['logger']?.[_0xe3e5d9(0xd4)](_0xe3e5d9(0x9e),{'error':_0x3558fe[_0xe3e5d9(0x8b)]});}return this['logger']?.['error']('hadolint\x20validation\x20failed',{'error':_0x3a3efb['message']}),[];}}['parseHadolintResults'](_0x23d9db,_0x115dc7){const _0x297291=a0_0x1187ab,_0x3ef4a1=[];if(Array['isArray'](_0x23d9db))for(const _0x49051b of _0x23d9db){_0x3ef4a1[_0x297291(0xdf)]({'file':_0x115dc7,'line':_0x49051b[_0x297291(0xd0)]||0x1,'column':_0x49051b[_0x297291(0xf5)]||0x1,'severity':this[_0x297291(0xed)](_0x49051b['level']),'rule':_0x49051b[_0x297291(0xb0)],'message':_0x49051b['message'],'category':'dockerfile','validator':'hadolint'});}return _0x3ef4a1;}async['validateYAML'](_0x7c01ba,_0x48559d={}){const _0x28d99c=a0_0x1187ab;try{const _0x50cf31=await execAsync(_0x28d99c(0xe7)+_0x7c01ba+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x50cf31[_0x28d99c(0xc7)],_0x7c01ba);}catch(_0xc0321e){if(_0xc0321e['stdout'])return this[_0x28d99c(0xbd)](_0xc0321e['stdout'],_0x7c01ba);return this[_0x28d99c(0xe0)]?.[_0x28d99c(0xd4)]('yamllint\x20validation\x20failed',{'error':_0xc0321e['message']}),[];}}[a0_0x1187ab(0xbd)](_0x4d48da,_0x401dde){const _0x40a522=a0_0x1187ab,_0x10a90c=[],_0x1efc14=_0x4d48da['split']('\x0a')[_0x40a522(0xb8)](_0x2c7666=>_0x2c7666['trim']());for(const _0x5c589d of _0x1efc14){const _0xd24d79=_0x5c589d['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0xd24d79){const [,_0x29c105,_0x4bef2d,_0x5f1311,_0x3e3d2c,_0x34c7e1,_0x54a59a]=_0xd24d79;_0x10a90c[_0x40a522(0xdf)]({'file':_0x401dde,'line':parseInt(_0x4bef2d,0xa),'column':parseInt(_0x5f1311,0xa),'severity':this[_0x40a522(0xc8)](_0x3e3d2c),'rule':_0x54a59a,'message':_0x34c7e1,'category':'yaml','validator':'yamllint'});}}return _0x10a90c;}async['validateWithCheckov'](_0xcf8f83,_0x3d9a2c,_0x3893b4={}){const _0x407c5b=a0_0x1187ab;try{const _0x34d2e1=await execAsync('checkov\x20-f\x20\x22'+_0xcf8f83+_0x407c5b(0x9f)+_0x3d9a2c+_0x407c5b(0xad),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1e7576=JSON[_0x407c5b(0xcf)](_0x34d2e1[_0x407c5b(0xc7)]);return this[_0x407c5b(0xf2)](_0x1e7576,_0xcf8f83);}catch(_0x4b0b70){if(_0x4b0b70[_0x407c5b(0xc7)])try{const _0x1f1dd5=JSON['parse'](_0x4b0b70['stdout']);return this[_0x407c5b(0xf2)](_0x1f1dd5,_0xcf8f83);}catch(_0x210ce2){this[_0x407c5b(0xe0)]?.[_0x407c5b(0xd4)](_0x407c5b(0xc3),{'error':_0x210ce2[_0x407c5b(0x8b)]});}return this[_0x407c5b(0xe0)]?.[_0x407c5b(0xd4)]('checkov\x20validation\x20failed',{'error':_0x4b0b70['message']}),[];}}['parseCheckovResults'](_0xf95b36,_0x3eced0){const _0x1f670d=a0_0x1187ab,_0x4cdaf4=[];if(_0xf95b36[_0x1f670d(0x8a)]&&_0xf95b36[_0x1f670d(0x8a)]['failed_checks'])for(const _0x27b666 of _0xf95b36[_0x1f670d(0x8a)]['failed_checks']){_0x4cdaf4['push']({'file':_0x3eced0,'line':_0x27b666[_0x1f670d(0xa0)]?_0x27b666[_0x1f670d(0xa0)][0x0]:0x1,'column':0x1,'severity':this[_0x1f670d(0xa5)](_0x27b666[_0x1f670d(0xbb)]),'rule':_0x27b666['check_id'],'message':_0x27b666['check_name']||_0x27b666['check_id'],'category':'security','validator':'checkov','remediation':_0x27b666[_0x1f670d(0x99)],'cwe':_0x27b666['cwe'],'references':_0x27b666[_0x1f670d(0x99)]?[_0x27b666['guideline']]:[]});}return _0x4cdaf4;}async[a0_0x1187ab(0x88)](_0x2157a3,_0x5528ca={}){const _0x3f433d=a0_0x1187ab;try{const _0xbc2499=(await import(_0x3f433d(0xbf)))[_0x3f433d(0xdc)],_0x4b3728=(await import('ajv-formats'))['default'],_0x30bb50=await a0_0x39da58[_0x3f433d(0xd8)](_0x2157a3,'utf-8'),_0x2a9280=JSON[_0x3f433d(0xcf)](_0x30bb50),_0x370b6a=new _0xbc2499({'allErrors':!![],'strict':![]});_0x4b3728(_0x370b6a);const _0x19951c={'type':'object','required':[_0x3f433d(0xb7),_0x3f433d(0xe5)],'properties':{'name':{'type':_0x3f433d(0xf1),'pattern':_0x3f433d(0x8e)},'version':{'type':'string'},'description':{'type':_0x3f433d(0xf1)},'main':{'type':'string'},'type':{'type':_0x3f433d(0xf1),'enum':['module',_0x3f433d(0x87)]},'scripts':{'type':_0x3f433d(0xf3)},'dependencies':{'type':_0x3f433d(0xf3)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x46c38e=_0x370b6a[_0x3f433d(0xab)](_0x19951c),_0x1f4167=_0x46c38e(_0x2a9280);if(!_0x1f4167&&_0x46c38e[_0x3f433d(0xf8)])return _0x46c38e['errors']['map'](_0xb497f5=>({'file':_0x2157a3,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-schema','message':_0xb497f5[_0x3f433d(0x91)]?_0xb497f5['instancePath']+'\x20'+_0xb497f5['message']:_0x3f433d(0x96)+_0xb497f5['params']['missingProperty']+'\x27','category':_0x3f433d(0x82),'validator':'json-schema'}));return[];}catch(_0x3f4a6f){return this['logger']?.[_0x3f433d(0xd4)]('package.json\x20validation\x20failed',{'error':_0x3f4a6f['message']}),[{'file':_0x2157a3,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x3f433d(0xaf)][_0x3f433d(0xa2)],'rule':'json-parse','message':_0x3f433d(0x89)+_0x3f4a6f['message'],'category':_0x3f433d(0x9a),'validator':'json-parse'}];}}async[a0_0x1187ab(0xda)](_0x53a48b,_0x5d1a91={}){const _0x1b5fbb=a0_0x1187ab;try{const _0x6db026=await a0_0x39da58[_0x1b5fbb(0xd8)](_0x53a48b,'utf-8'),_0x444649=JSON['parse'](_0x6db026),_0x518d3f=[];if(_0x444649[_0x1b5fbb(0xbe)]){const _0x4a1a4b=_0x444649['compilerOptions'];!_0x4a1a4b[_0x1b5fbb(0x8f)]&&_0x518d3f['push']({'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'strict-mode','message':_0x1b5fbb(0xa4),'category':'best-practice','validator':'tsconfig-validator'}),_0x4a1a4b['noImplicitAny']===![]&&_0x518d3f['push']({'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x1b5fbb(0xa3),'message':_0x1b5fbb(0xac),'category':'best-practice','validator':'tsconfig-validator'});}return _0x518d3f;}catch(_0x569604){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x569604[_0x1b5fbb(0x8b)]}),[{'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x1b5fbb(0xaf)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x569604[_0x1b5fbb(0x8b)],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x278a6c,_0x3a6f59={}){const _0x3b3695=a0_0x1187ab;try{const _0xb75caf=await a0_0x39da58[_0x3b3695(0xd8)](_0x278a6c,_0x3b3695(0x81)),_0x3f103b=[],_0x237622=_0xb75caf[_0x3b3695(0xcb)]('\x0a'),_0x45442f=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':_0x3b3695(0xba)},{'pattern':/secret/i,'name':_0x3b3695(0x9b)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':_0x3b3695(0xaa)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x237622[_0x3b3695(0xa6)]((_0x54371e,_0x2d5b68)=>{const _0x2733a5=_0x3b3695,_0x2dad6c=_0x54371e[_0x2733a5(0xf0)]();if(!_0x2dad6c||_0x2dad6c['startsWith']('#'))return;if(_0x2dad6c['includes']('=')){const [_0x54b524,_0x3035a5]=_0x2dad6c['split']('='),_0x455f60=_0x54b524[_0x2733a5(0xe4)](),_0x1a49fb=_0x3035a5?.['trim']()||'',_0x43ef5c=_0x1a49fb&&_0x1a49fb!==''&&!_0x1a49fb['startsWith']('$')&&_0x1a49fb!=='your-key-here'&&_0x1a49fb!=='changeme'&&_0x1a49fb[_0x2733a5(0x83)]>0x5;if(_0x43ef5c)for(const {pattern:_0x3777ec,name:_0x4bcbec}of _0x45442f){if(_0x3777ec[_0x2733a5(0x84)](_0x455f60)){_0x3f103b[_0x2733a5(0xdf)]({'file':_0x278a6c,'line':_0x2d5b68+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2733a5(0xaf)]['CRITICAL'],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0x4bcbec+'\x20detected\x20in\x20.env\x20file','category':_0x2733a5(0xee),'validator':_0x2733a5(0xd9),'remediation':_0x2733a5(0xf6)});break;}}}}),_0x3f103b;}catch(_0x150cc2){return this['logger']?.[_0x3b3695(0xd4)]('.env\x20validation\x20failed',{'error':_0x150cc2['message']}),[];}}['detectFileType'](_0x2af4af){const _0x1b3056=a0_0x1187ab,_0x3debe1=a0_0x3732a6[_0x1b3056(0xec)](_0x2af4af)[_0x1b3056(0xe4)](),_0x4ca145=a0_0x3732a6['dirname'](_0x2af4af);if(_0x3debe1==='dockerfile')return'dockerfile';if(_0x3debe1==='docker-compose.yml'||_0x3debe1==='docker-compose.yaml')return'docker-compose';if(_0x3debe1===_0x1b3056(0xc0))return _0x1b3056(0xc0);if(_0x3debe1==='tsconfig.json')return _0x1b3056(0xb6);if(_0x3debe1==='.env'||_0x3debe1['endsWith']('.env'))return'env';if(_0x4ca145[_0x1b3056(0x85)](_0x1b3056(0x93)))return _0x1b3056(0x9c);if(_0x4ca145['includes'](_0x1b3056(0xd2))||_0x4ca145[_0x1b3056(0x85)]('k8s'))return _0x1b3056(0xd2);const _0x54e62c=a0_0x3732a6[_0x1b3056(0xc1)](_0x2af4af)['toLowerCase']();if(_0x54e62c==='.tf'||_0x54e62c==='.tfvars')return'terraform';if(_0x54e62c==='.yml'||_0x54e62c==='.yaml')return _0x1b3056(0xb2);if(_0x54e62c===_0x1b3056(0xa1))return'json';return _0x1b3056(0xe6);}['normalizeResults'](_0x1b07a3){const _0x43c6fe=a0_0x1187ab;return _0x1b07a3[_0x43c6fe(0xe1)](_0x4ed47f=>({'file':_0x4ed47f[_0x43c6fe(0xb5)],'line':_0x4ed47f[_0x43c6fe(0xd0)]||0x1,'column':_0x4ed47f[_0x43c6fe(0xf5)]||0x1,'severity':_0x4ed47f['severity']||STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x4ed47f['rule']||_0x43c6fe(0xe6),'message':_0x4ed47f[_0x43c6fe(0x8b)]||'Validation\x20issue\x20detected','category':_0x4ed47f[_0x43c6fe(0xc9)]||_0x43c6fe(0x82),'validator':_0x4ed47f['validator'],'cwe':_0x4ed47f['cwe']||null,'remediation':_0x4ed47f[_0x43c6fe(0xc6)]||null,'references':_0x4ed47f[_0x43c6fe(0x98)]||[]}));}['mapHadolintSeverity'](_0x402e5d){const _0x3b2543=a0_0x1187ab,_0x3d5a36={'error':STATIC_ANALYSIS[_0x3b2543(0xaf)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS[_0x3b2543(0xaf)]['INFO'],'style':STATIC_ANALYSIS[_0x3b2543(0xaf)][_0x3b2543(0x97)]};return _0x3d5a36[_0x402e5d?.['toLowerCase']()]||STATIC_ANALYSIS[_0x3b2543(0xaf)][_0x3b2543(0xae)];}['mapYamllintSeverity'](_0x1405f6){const _0x1178f7=a0_0x1187ab,_0x66a550={'error':STATIC_ANALYSIS[_0x1178f7(0xaf)]['ERROR'],'warning':STATIC_ANALYSIS[_0x1178f7(0xaf)][_0x1178f7(0xae)]};return _0x66a550[_0x1405f6?.[_0x1178f7(0xe4)]()]||STATIC_ANALYSIS['SEVERITY'][_0x1178f7(0xae)];}['mapCheckovSeverity'](_0x263cd8){const _0x220ccb=a0_0x1187ab;return STATIC_ANALYSIS['SEVERITY'][_0x220ccb(0xa2)];}async['getValidatorStatus'](){const _0x48a663=a0_0x1187ab,_0x5e6610=await this[_0x48a663(0xca)]();return{'validators':_0x5e6610,'recommendations':this['getInstallRecommendations'](_0x5e6610)};}['getInstallRecommendations'](_0x339e81){const _0x580e08=a0_0x1187ab,_0x291e9b=[];return!_0x339e81['checkov']&&_0x291e9b[_0x580e08(0xdf)]({'validator':_0x580e08(0xce),'reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':_0x580e08(0xb3)}),!_0x339e81['hadolint']&&_0x291e9b[_0x580e08(0xdf)]({'validator':_0x580e08(0xd3),'reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x339e81['yamllint']&&_0x291e9b[_0x580e08(0xdf)]({'validator':'yamllint','reason':_0x580e08(0x8c),'install':'pip\x20install\x20yamllint','priority':_0x580e08(0xe8)}),!_0x339e81[_0x580e08(0xa9)]&&_0x291e9b['push']({'validator':_0x580e08(0xf7),'reason':_0x580e08(0xc2),'install':_0x580e08(0x94),'priority':_0x580e08(0xe8)}),_0x291e9b;}}function a0_0x52d8(_0xd7814d,_0x2a2425){_0xd7814d=_0xd7814d-0x80;const _0x5e8e2f=a0_0x5e8e();let _0x52d8ec=_0x5e8e2f[_0xd7814d];if(a0_0x52d8['YZcvRY']===undefined){var _0x2477ca=function(_0xa814fd){const _0xe00b48='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3732a6='',_0x39da58='';for(let _0x3f021c=0x0,_0x575006,_0x27bdaf,_0x392fe2=0x0;_0x27bdaf=_0xa814fd['charAt'](_0x392fe2++);~_0x27bdaf&&(_0x575006=_0x3f021c%0x4?_0x575006*0x40+_0x27bdaf:_0x27bdaf,_0x3f021c++%0x4)?_0x3732a6+=String['fromCharCode'](0xff&_0x575006>>(-0x2*_0x3f021c&0x6)):0x0){_0x27bdaf=_0xe00b48['indexOf'](_0x27bdaf);}for(let _0x52f755=0x0,_0x27b79f=_0x3732a6['length'];_0x52f755<_0x27b79f;_0x52f755++){_0x39da58+='%'+('00'+_0x3732a6['charCodeAt'](_0x52f755)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39da58);};a0_0x52d8['wLpLtK']=_0x2477ca,a0_0x52d8['RRCAws']={},a0_0x52d8['YZcvRY']=!![];}const _0x338f9b=_0x5e8e2f[0x0],_0x5ea52b=_0xd7814d+_0x338f9b,_0x193649=a0_0x52d8['RRCAws'][_0x5ea52b];return!_0x193649?(_0x52d8ec=a0_0x52d8['wLpLtK'](_0x52d8ec),a0_0x52d8['RRCAws'][_0x5ea52b]=_0x52d8ec):_0x52d8ec=_0x193649,_0x52d8ec;}function a0_0x5e8e(){const _0x128a3a=['y2HLy2TFy2XHC3m','mZvvww5qCui','CgfYC2vzyw1SBgLUDfjLC3vSDhm','y29TCgLSzxjpChrPB25Z','ywP2','CgfJA2fNzs5QC29U','zxH0BMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','DMfSAwrHDgvfBNzgAwXL','DMfSAwrHDgvzqu1m','CMvTzwrPyxrPB24','C3rKB3v0','BwfWwwfTBgXPBNrtzxzLCML0Eq','y2f0zwDVCNK','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3bSAxq','EwfTBgXPBNq','D2fYBG','y2HLy2TVDG','CgfYC2u','BgLUzq','nJe4vhLUBwPM','A3vIzxjUzxrLCW','AgfKB2XPBNq','zxjYB3i','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','mty4mZeYmJfKB3fhsuC','nZy1mZvfrNPVCNm','CMvHzezPBgu','zw52lxzHBgLKyxrVCG','DMfSAwrHDgvuC0nVBMzPzW','zg9JA2vYx2nVBxbVC2u','zgvMyxvSDa','nJa4ohretw1sEG','DMfSAwrHDgvxAxrOq2HLy2TVDG','ChvZAa','Bg9Nz2vY','BwfW','nZi0otuWy3DxEevO','mJe5otqWCg9Ut1bx','Dg9mB3DLCKnHC2u','DMvYC2LVBG','Dw5RBM93BG','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','BwvKAxvT','zw52','C2nHBM5LCKnHy2HL','CgfYC2viywrVBgLUDfjLC3vSDhm','yMfZzw5HBwu','BwfWsgfKB2XPBNrtzxzLCML0Eq','C2vJDxjPDhK','DgvYCMfMB3jT','DhjPBq','C3rYAw5N','CgfYC2vdAgvJA292uMvZDwX0CW','B2jQzwn0','odH4u1b2zKe','y29SDw1U','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','ywP2icHku09oifnJAgvTysK','zxjYB3jZ','BM9YBwfSAxPLuMvZDwX0CW','DxrMltG','DMfSAwrHDgLVBG','BgvUz3rO','DgvZDa','Aw5JBhvKzxm','mtb2sLHpt2y','y29TBw9UANm','DMfSAwrHDgvqywnRywDLsNnVBG','sw52ywXPzcbku09ooIa','CMvZDwX0CW','BwvZC2fNzq','wufntcbMAwXLihzHBgLKyxrPB24','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','C3rYAwn0','DMfSAwrHDgu','Aw5ZDgfUy2vqyxrO','DMfSAwrHDgveB2nRzxjMAwXL','lMDPDgH1yI93B3jRzMXVD3m','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','su5gtW','CMvMzxjLBMnLCW','z3vPzgvSAw5L','C3LUDgf4','C2vJCMv0','z2L0AhvIlwfJDgLVBNm','zg9JA2vYzMLSzq','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','iIaTlwzYyw1LD29YAYa','zMLSzv9SAw5Lx3jHBMDL','lMPZB24','rvjst1i','BM8TAw1WBgLJAxqTyw55','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','BwfWq2HLy2TVDLnLDMvYAxr5','zM9YrwfJAa','ndmXmJjhs2vtwg4','ndKYntq4oe13BgntsW','ANnVBLnJAgvTyq','ChjPDMf0zsbRzxK','y29TCgLSzq','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','v0fstKLorW','u0vwrvjjvfK','y29Kzq','yxzHAwXHyMXLu2nHBM5LCNm','EwfTBa','AgLNAa','AgfKB2XPBNqGBM90igf2ywLSywjSzq','zMLSzq','DhnJB25MAwCUANnVBG','BMfTzq','zMLSDgvY','zgvIDwC','qvbjigTLEq'];a0_0x5e8e=function(){return _0x128a3a;};return a0_0x5e8e();}export default ConfigValidator;
1
+ const a0_0x19775a=a0_0x26b6;(function(_0x5845b9,_0x465c85){const _0x1bb25a=a0_0x26b6,_0xe45e33=_0x5845b9();while(!![]){try{const _0x2e433d=parseInt(_0x1bb25a(0x120))/0x1*(parseInt(_0x1bb25a(0x14d))/0x2)+-parseInt(_0x1bb25a(0x168))/0x3*(parseInt(_0x1bb25a(0x14f))/0x4)+parseInt(_0x1bb25a(0x14b))/0x5+-parseInt(_0x1bb25a(0x148))/0x6+parseInt(_0x1bb25a(0x162))/0x7+-parseInt(_0x1bb25a(0x11e))/0x8+parseInt(_0x1bb25a(0x13f))/0x9;if(_0x2e433d===_0x465c85)break;else _0xe45e33['push'](_0xe45e33['shift']());}catch(_0x58b329){_0xe45e33['push'](_0xe45e33['shift']());}}}(a0_0x89a2,0x67266));function a0_0x89a2(){const _0x2e3fbe=['mZC0nZi4mNDcBNzSCq','BgLUzq','DMfSAwrHDgvuC0nVBMzPzW','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','BwLZC2LUz1bYB3bLCNr5','lNLTBa','nZuWmdnesxn5v2O','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','su5gtW','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','CgfYC2viywrVBgLUDfjLC3vSDhm','Ew91CI1RzxKTAgvYzq','Bw9KDwXL','zgLYBMfTzq','CgfYC2u','Bg9Nz2vY','y29Kzq','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','DMfSAwrHDgLVBG','igrLDgvJDgvKigLUic5LBNyGzMLSzq','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','BM8TAw1WBgLJAxqTyw55','AgfKB2XPBNq','AZHZ','y2HLy2TFy2XHC3m','DhnJB25MAwCUANnVBG','EwfTBgXPBNqGls12zxjZAw9U','y3DL','DgvYCMfMB3jT','CgfZC3DVCMq','ANnVBLnJAgvTyq','ChjPDMf0zsbRzxK','zgvMyxvSDa','Bgv2zwW','y29TBw9UANm','zgvIDwC','qvbjigTLEq','BwvZC2fNzq','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','zMLSzq','C2vJCMv0','DMfSAwrHDgvzqu1m','DhjPBq','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','C3rKB3v0','DMfSAwrHDgvfBNzgAwXL','Dg9Rzw4','rvjst1i','C2vJDxjPDhK','BwfWsgfKB2XPBNrtzxzLCML0Eq','ANnVBG','DMfSAwrHDgvxAxrOq2HLy2TVDG','lMDPDgH1yI93B3jRzMXVD3m','DMfSAwrHDgu','B2jQzwn0','qvDtignYzwrLBNrPywXZ','DMfSAwrHDgveB2nRzxjMAwXL','y2HLy2TFBMfTzq','Aw5JBhvKzxm','BM9jBxbSAwnPDefUEq','ndy3nZqZmMLsB1nUuG','ANnVBI1Zy2HLBwe','mtnbqwXjANK','BwfWwwfTBgXPBNrtzxzLCML0Eq','DhnJB25MAwCTDMfSAwrHDg9Y','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','ANnVBI1WyxjZzq','z3vPzgvSAw5L','C3rYAw5N','y2HLy2TVDG','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','CgfJA2fNzs5QC29U','CMvMzxjLBMnLCW','AxnbCNjHEq','zMLSzv9SAw5Lx3jHBMDL','v0fstKLorW','ChvZAa','C3rHCNrZv2L0Aa','CMvZDwX0CW','zxjYB3jZ','DMfSAwrHDgvqywnRywDLsNnVBG','AgfYzgnVzgvKlxnLy3jLDa','Dg9mB3DLCKnHC2u','BMfTzq','D2fYBG','zgv0zwn0rMLSzvr5Cgu','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','wufntcbMAwXLihzHBgLKyxrPB24','ywP2lwzVCM1HDhm','zxH0BMfTzq','zw52','zMfPBgvKx2nOzwnRCW','yxzHAwXHyMXLu2nHBM5LCNm','mta2nJmYoxPeyu1vzq','Dw5RBM93BG','y29TCgLSzxjpChrPB25Z','ywP2icHku09oifnJAgvTysK','y2HLy2TVDIaTzIaI','zg9JA2vYzMLSzq','DxrMltG','BwfWq2HLy2TVDLnLDMvYAxr5','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','otaYmtm2qw9nCKPX','y2HLy2TFAwq','ug90zw50AwfSigHHCMrJB2rLzca','mJy2mty3meLtvMvnBG','u0vwrvjjvfK','ntmYotrUAw1st0O','Aw5ZDgfUy2vqyxrO','nJb5DMrJt3a','zg9JA2vYlwnVBxbVC2uUEw1S','EwfTBa','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','DMfSAwrHDg9Y','A3vIzxjUzxrLCW','ywP2','CMvHzezPBgu','zM9YrwfJAa','CgfYC2vdAgvJA292uMvZDwX0CW','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','zw52lxzHBgLKyxrVCG','C3bSAxq','zxjYB3i','z2L0AhvIlwfJDgLVBNm','CgLWigLUC3rHBgWGy2HLy2TVDG','EwfTBgXPBNq','yMfZzw5HBwu','DMvYC2LVBG'];a0_0x89a2=function(){return _0x2e3fbe;};return a0_0x89a2();}function a0_0x26b6(_0x575be0,_0x208d4a){_0x575be0=_0x575be0-0xee;const _0x89a213=a0_0x89a2();let _0x26b699=_0x89a213[_0x575be0];if(a0_0x26b6['UDQWeY']===undefined){var _0x2390c7=function(_0xcc3839){const _0x43f5c9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5795c9='',_0x56294a='';for(let _0x265633=0x0,_0x15407f,_0xc055d2,_0x409112=0x0;_0xc055d2=_0xcc3839['charAt'](_0x409112++);~_0xc055d2&&(_0x15407f=_0x265633%0x4?_0x15407f*0x40+_0xc055d2:_0xc055d2,_0x265633++%0x4)?_0x5795c9+=String['fromCharCode'](0xff&_0x15407f>>(-0x2*_0x265633&0x6)):0x0){_0xc055d2=_0x43f5c9['indexOf'](_0xc055d2);}for(let _0x2dc7ae=0x0,_0x55809f=_0x5795c9['length'];_0x2dc7ae<_0x55809f;_0x2dc7ae++){_0x56294a+='%'+('00'+_0x5795c9['charCodeAt'](_0x2dc7ae)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x56294a);};a0_0x26b6['DHSOFG']=_0x2390c7,a0_0x26b6['GJZyMR']={},a0_0x26b6['UDQWeY']=!![];}const _0x2897c8=_0x89a213[0x0],_0x59622a=_0x575be0+_0x2897c8,_0x139e32=a0_0x26b6['GJZyMR'][_0x59622a];return!_0x139e32?(_0x26b699=a0_0x26b6['DHSOFG'](_0x26b699),a0_0x26b6['GJZyMR'][_0x59622a]=_0x26b699):_0x26b699=_0x139e32,_0x26b699;}import{exec}from'child_process';import{promisify}from'util';import a0_0x5795c9 from'path';import a0_0x56294a from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x265633=null){const _0x3038aa=a0_0x26b6;this['logger']=_0x265633,this[_0x3038aa(0x13e)]=null,this['scannerCache']=new Map();}async['detectAvailableValidators'](){const _0x23dcbe=a0_0x26b6;if(this[_0x23dcbe(0x13e)]!==null)return this['availableScanners'];const _0x15407f={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x15407f[_0x23dcbe(0x127)]=!![],this[_0x23dcbe(0xf1)]?.['debug']('checkov\x20detected');}catch(_0xc055d2){this[_0x23dcbe(0xf1)]?.[_0x23dcbe(0x105)](_0x23dcbe(0x108),{'error':_0xc055d2['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x15407f[_0x23dcbe(0xf8)]=!![],this[_0x23dcbe(0xf1)]?.[_0x23dcbe(0x105)]('hadolint\x20detected');}catch(_0x409112){this['logger']?.['debug']('hadolint\x20not\x20available',{'error':_0x409112['message']});}try{await execAsync(_0x23dcbe(0xfc),{'timeout':0x1388}),_0x15407f['yamllint']=!![],this['logger']?.['debug']('yamllint\x20detected');}catch(_0x2dc7ae){this[_0x23dcbe(0xf1)]?.[_0x23dcbe(0x105)]('yamllint\x20not\x20available',{'error':_0x2dc7ae['message']});}try{await import('ajv'),_0x15407f[_0x23dcbe(0x100)]=!![],this['logger']?.['debug'](_0x23dcbe(0x159));}catch(_0x55809f){this['logger']?.['debug']('ajv\x20not\x20available',{'error':_0x55809f['message']});}return this['availableScanners']=_0x15407f,_0x15407f;}async[a0_0x19775a(0x117)](_0x2d0e6c,_0x1d54d2={}){const _0x540466=a0_0x19775a,_0x4b98f6=[],_0x52d656=await this['detectAvailableValidators'](),_0x21b786=this[_0x540466(0x137)](_0x2d0e6c);this['logger']?.[_0x540466(0x105)](_0x540466(0x152),{'filePath':_0x2d0e6c,'fileType':_0x21b786});switch(_0x21b786){case'dockerfile':if(_0x52d656[_0x540466(0xf8)]){const _0x432f39=await this['validateDockerfile'](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x432f39);}if(_0x52d656[_0x540466(0x127)]){const _0x321234=await this['validateWithCheckov'](_0x2d0e6c,_0x540466(0x144),_0x1d54d2);_0x4b98f6['push'](..._0x321234);}break;case'docker-compose':if(_0x52d656[_0x540466(0x15f)]){const _0x43e1d2=await this['validateYAML'](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x43e1d2);}if(_0x52d656['checkov']){const _0x2f60fc=await this[_0x540466(0x115)](_0x2d0e6c,'docker_compose',_0x1d54d2);_0x4b98f6['push'](..._0x2f60fc);}break;case'kubernetes':if(_0x52d656[_0x540466(0x15f)]){const _0x5514bd=await this[_0x540466(0x10b)](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x5514bd);}if(_0x52d656['checkov']){const _0x6b3c9e=await this['validateWithCheckov'](_0x2d0e6c,_0x540466(0x154),_0x1d54d2);_0x4b98f6['push'](..._0x6b3c9e);}break;case'terraform':if(_0x52d656['checkov']){const _0x1c2c42=await this[_0x540466(0x115)](_0x2d0e6c,_0x540466(0xfe),_0x1d54d2);_0x4b98f6[_0x540466(0x12e)](..._0x1c2c42);}break;case'package.json':if(_0x52d656['jsonSchema']){const _0x59b8ed=await this['validatePackageJson'](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x59b8ed);}break;case _0x540466(0xfb):if(_0x52d656[_0x540466(0x100)]){const _0x17c4af=await this['validateTsConfig'](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x17c4af);}break;case'github-actions':if(_0x52d656['yamllint']){const _0x16ec43=await this[_0x540466(0x10b)](_0x2d0e6c,_0x1d54d2);_0x4b98f6[_0x540466(0x12e)](..._0x16ec43);}break;case'env':const _0x138af2=await this['validateEnvFile'](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x138af2);break;case _0x540466(0x151):if(_0x52d656[_0x540466(0x15f)]){const _0x5b05a3=await this[_0x540466(0x10b)](_0x2d0e6c,_0x1d54d2);_0x4b98f6['push'](..._0x5b05a3);}break;default:this[_0x540466(0xf1)]?.[_0x540466(0x136)](_0x540466(0x169),{'filePath':_0x2d0e6c,'fileType':_0x21b786});return[];}return this['normalizeResults'](_0x4b98f6);}async[a0_0x19775a(0x11a)](_0x5b0eed,_0x4709d7={}){const _0x85f1fe=a0_0x19775a;try{const _0x1db061=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x5b0eed+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x59eec7=JSON['parse'](_0x1db061[_0x85f1fe(0x10e)]);return this[_0x85f1fe(0x16c)](_0x59eec7,_0x5b0eed);}catch(_0x168b4b){if(_0x168b4b['stdout'])try{const _0xa35be6=JSON['parse'](_0x168b4b[_0x85f1fe(0x10e)]);return this['parseHadolintResults'](_0xa35be6,_0x5b0eed);}catch(_0xc76ece){this['logger']?.['error'](_0x85f1fe(0x10d),{'error':_0xc76ece['message']});}return this[_0x85f1fe(0xf1)]?.['error']('hadolint\x20validation\x20failed',{'error':_0x168b4b['message']}),[];}}[a0_0x19775a(0x16c)](_0x522f2b,_0x3a0356){const _0x197bf6=a0_0x19775a,_0x2a0649=[];if(Array[_0x197bf6(0x12b)](_0x522f2b))for(const _0x584cd9 of _0x522f2b){_0x2a0649[_0x197bf6(0x12e)]({'file':_0x3a0356,'line':_0x584cd9['line']||0x1,'column':_0x584cd9['column']||0x1,'severity':this['mapHadolintSeverity'](_0x584cd9[_0x197bf6(0x103)]),'rule':_0x584cd9[_0x197bf6(0xf2)],'message':_0x584cd9[_0x197bf6(0x107)],'category':_0x197bf6(0x144),'validator':'hadolint'});}return _0x2a0649;}async[a0_0x19775a(0x10b)](_0x2074ac,_0x498d25={}){const _0x14b6c2=a0_0x19775a;try{const _0x40b2f3=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x2074ac+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x40b2f3[_0x14b6c2(0x10e)],_0x2074ac);}catch(_0x47a3fc){if(_0x47a3fc[_0x14b6c2(0x10e)])return this['parseYamllintResults'](_0x47a3fc['stdout'],_0x2074ac);return this[_0x14b6c2(0xf1)]?.[_0x14b6c2(0x15c)]('yamllint\x20validation\x20failed',{'error':_0x47a3fc['message']}),[];}}['parseYamllintResults'](_0x5891d4,_0x307715){const _0x1b3dcf=a0_0x19775a,_0x2c4562=[],_0x1fdf97=_0x5891d4['split']('\x0a')['filter'](_0x5d626c=>_0x5d626c[_0x1b3dcf(0x10c)]());for(const _0x2b1aa5 of _0x1fdf97){const _0x17cbaa=_0x2b1aa5['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x17cbaa){const [,_0x2bc444,_0xcfd02e,_0x5d03ec,_0x59fdf1,_0x2c284e,_0x4cb666]=_0x17cbaa;_0x2c4562['push']({'file':_0x307715,'line':parseInt(_0xcfd02e,0xa),'column':parseInt(_0x5d03ec,0xa),'severity':this['mapYamllintSeverity'](_0x59fdf1),'rule':_0x4cb666,'message':_0x2c284e,'category':_0x1b3dcf(0x151),'validator':'yamllint'});}}return _0x2c4562;}async['validateWithCheckov'](_0x4978d9,_0x1b1a70,_0x4787bb={}){const _0x40fbbb=a0_0x19775a;try{const _0x429f36=await execAsync(_0x40fbbb(0x143)+_0x4978d9+'\x22\x20--framework\x20'+_0x1b1a70+_0x40fbbb(0xf6),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x3f0cd2=JSON[_0x40fbbb(0xf0)](_0x429f36[_0x40fbbb(0x10e)]);return this['parseCheckovResults'](_0x3f0cd2,_0x4978d9);}catch(_0x46a288){if(_0x46a288['stdout'])try{const _0x57aaf4=JSON[_0x40fbbb(0xf0)](_0x46a288[_0x40fbbb(0x10e)]);return this['parseCheckovResults'](_0x57aaf4,_0x4978d9);}catch(_0x33c418){this[_0x40fbbb(0xf1)]?.[_0x40fbbb(0x15c)]('Failed\x20to\x20parse\x20checkov\x20output',{'error':_0x33c418['message']});}return this[_0x40fbbb(0xf1)]?.[_0x40fbbb(0x15c)](_0x40fbbb(0x16b),{'error':_0x46a288['message']}),[];}}[a0_0x19775a(0x158)](_0x879240,_0x46a02b){const _0x4b08ce=a0_0x19775a,_0x555945=[];if(_0x879240['results']&&_0x879240[_0x4b08ce(0x130)][_0x4b08ce(0x13d)])for(const _0x39d4dd of _0x879240['results']['failed_checks']){_0x555945[_0x4b08ce(0x12e)]({'file':_0x46a02b,'line':_0x39d4dd[_0x4b08ce(0x12c)]?_0x39d4dd[_0x4b08ce(0x12c)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x39d4dd[_0x4b08ce(0xfa)]),'rule':_0x39d4dd[_0x4b08ce(0x149)],'message':_0x39d4dd[_0x4b08ce(0x11b)]||_0x39d4dd['check_id'],'category':_0x4b08ce(0x112),'validator':'checkov','remediation':_0x39d4dd['guideline'],'cwe':_0x39d4dd[_0x4b08ce(0xfd)],'references':_0x39d4dd[_0x4b08ce(0x125)]?[_0x39d4dd['guideline']]:[]});}return _0x555945;}async[a0_0x19775a(0x132)](_0x25ad03,_0x4021ad={}){const _0x78488a=a0_0x19775a;try{const _0x3983a1=(await import(_0x78488a(0x155)))[_0x78488a(0x102)],_0x3c574f=(await import(_0x78488a(0x13a)))['default'],_0x394620=await a0_0x56294a['readFile'](_0x25ad03,_0x78488a(0x145)),_0xf784e8=JSON[_0x78488a(0xf0)](_0x394620),_0x52ae87=new _0x3983a1({'allErrors':!![],'strict':![]});_0x3c574f(_0x52ae87);const _0x347915={'type':_0x78488a(0x118),'required':[_0x78488a(0x135),_0x78488a(0x161)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x78488a(0x126)},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':'string','enum':[_0x78488a(0xee),_0x78488a(0x104)]},'scripts':{'type':_0x78488a(0x118)},'dependencies':{'type':'object'},'devDependencies':{'type':_0x78488a(0x118)}},'additionalProperties':!![]},_0x404693=_0x52ae87['compile'](_0x347915),_0x4db1b7=_0x404693(_0xf784e8);if(!_0x4db1b7&&_0x404693['errors'])return _0x404693[_0x78488a(0x131)]['map'](_0x4d74e7=>({'file':_0x25ad03,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x78488a(0x14c)]['ERROR'],'rule':'json-schema','message':_0x4d74e7['instancePath']?_0x4d74e7[_0x78488a(0x14e)]+'\x20'+_0x4d74e7['message']:_0x78488a(0xf3)+_0x4d74e7['params'][_0x78488a(0x166)]+'\x27','category':_0x78488a(0xf4),'validator':_0x78488a(0x11f)}));return[];}catch(_0x1aedf7){return this['logger']?.[_0x78488a(0x15c)](_0x78488a(0x147),{'error':_0x1aedf7[_0x78488a(0x107)]}),[{'file':_0x25ad03,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x78488a(0x111)],'rule':_0x78488a(0x124),'message':'Invalid\x20JSON:\x20'+_0x1aedf7[_0x78488a(0x107)],'category':'syntax','validator':_0x78488a(0x124)}];}}async[a0_0x19775a(0x164)](_0x182499,_0x2ded8e={}){const _0x203c94=a0_0x19775a;try{const _0x4ab1c1=await a0_0x56294a['readFile'](_0x182499,_0x203c94(0x145)),_0x4d2afc=JSON[_0x203c94(0xf0)](_0x4ab1c1),_0x34fb74=[];if(_0x4d2afc[_0x203c94(0x141)]){const _0x50123b=_0x4d2afc['compilerOptions'];!_0x50123b['strict']&&_0x34fb74['push']({'file':_0x182499,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x203c94(0x14c)][_0x203c94(0x12d)],'rule':'strict-mode','message':_0x203c94(0x123),'category':'best-practice','validator':_0x203c94(0x122)}),_0x50123b[_0x203c94(0x11d)]===![]&&_0x34fb74[_0x203c94(0x12e)]({'file':_0x182499,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x203c94(0x14c)][_0x203c94(0x12d)],'rule':_0x203c94(0xf7),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':'tsconfig-validator'});}return _0x34fb74;}catch(_0x234c6b){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x234c6b[_0x203c94(0x107)]}),[{'file':_0x182499,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x203c94(0x14c)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x234c6b[_0x203c94(0x107)],'category':'syntax','validator':'json-parse'}];}}async[a0_0x19775a(0x10f)](_0x24e53a,_0x4074ee={}){const _0x46b127=a0_0x19775a;try{const _0x10ca84=await a0_0x56294a[_0x46b127(0x156)](_0x24e53a,'utf-8'),_0xb9f212=[],_0x6c5b52=_0x10ca84['split']('\x0a'),_0x53e4e2=[{'pattern':/password|passwd|pwd/i,'name':_0x46b127(0xff)},{'pattern':/api[_-]?key/i,'name':_0x46b127(0x106)},{'pattern':/secret/i,'name':_0x46b127(0x10a)},{'pattern':/token/i,'name':_0x46b127(0x110)},{'pattern':/private[_-]?key/i,'name':_0x46b127(0x101)},{'pattern':/aws[_-]?access/i,'name':_0x46b127(0x119)}];return _0x6c5b52[_0x46b127(0x157)]((_0x41405c,_0x353a37)=>{const _0x17f2ce=_0x46b127,_0x1b3e61=_0x41405c[_0x17f2ce(0x10c)]();if(!_0x1b3e61||_0x1b3e61[_0x17f2ce(0x12f)]('#'))return;if(_0x1b3e61[_0x17f2ce(0x11c)]('=')){const [_0x552555,_0x35bba1]=_0x1b3e61[_0x17f2ce(0x15b)]('='),_0x50140e=_0x552555[_0x17f2ce(0x134)](),_0x276c2c=_0x35bba1?.['trim']()||'',_0x4db490=_0x276c2c&&_0x276c2c!==''&&!_0x276c2c['startsWith']('$')&&_0x276c2c!==_0x17f2ce(0x16d)&&_0x276c2c!=='changeme'&&_0x276c2c['length']>0x5;if(_0x4db490)for(const {pattern:_0x3945a2,name:_0x27360e}of _0x53e4e2){if(_0x3945a2['test'](_0x50140e)){_0xb9f212['push']({'file':_0x24e53a,'line':_0x353a37+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x17f2ce(0x14c)]['CRITICAL'],'rule':_0x17f2ce(0x133),'message':_0x17f2ce(0x14a)+_0x27360e+_0x17f2ce(0xf5),'category':_0x17f2ce(0x112),'validator':_0x17f2ce(0x15a),'remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0xb9f212;}catch(_0x33b0b0){return this['logger']?.['error']('.env\x20validation\x20failed',{'error':_0x33b0b0['message']}),[];}}['detectFileType'](_0x3b91b3){const _0x4f4ff5=a0_0x19775a,_0x1f4b02=a0_0x5795c9[_0x4f4ff5(0x160)](_0x3b91b3)[_0x4f4ff5(0x134)](),_0x3cfad2=a0_0x5795c9[_0x4f4ff5(0xef)](_0x3b91b3);if(_0x1f4b02===_0x4f4ff5(0x144))return _0x4f4ff5(0x144);if(_0x1f4b02===_0x4f4ff5(0x150)||_0x1f4b02==='docker-compose.yaml')return'docker-compose';if(_0x1f4b02===_0x4f4ff5(0x129))return _0x4f4ff5(0x129);if(_0x1f4b02===_0x4f4ff5(0xfb))return'tsconfig.json';if(_0x1f4b02==='.env'||_0x1f4b02['endsWith']('.env'))return _0x4f4ff5(0x13c);if(_0x3cfad2[_0x4f4ff5(0x11c)](_0x4f4ff5(0x116)))return _0x4f4ff5(0x15d);if(_0x3cfad2[_0x4f4ff5(0x11c)]('kubernetes')||_0x3cfad2[_0x4f4ff5(0x11c)](_0x4f4ff5(0xf9)))return _0x4f4ff5(0x154);const _0x64b164=a0_0x5795c9[_0x4f4ff5(0x13b)](_0x3b91b3)['toLowerCase']();if(_0x64b164==='.tf'||_0x64b164==='.tfvars')return'terraform';if(_0x64b164===_0x4f4ff5(0x167)||_0x64b164==='.yaml')return'yaml';if(_0x64b164==='.json')return _0x4f4ff5(0x114);return'unknown';}['normalizeResults'](_0xad568){const _0x5149a6=a0_0x19775a;return _0xad568['map'](_0x92b669=>({'file':_0x92b669[_0x5149a6(0x109)],'line':_0x92b669[_0x5149a6(0x163)]||0x1,'column':_0x92b669['column']||0x1,'severity':_0x92b669['severity']||STATIC_ANALYSIS[_0x5149a6(0x14c)]['WARNING'],'rule':_0x92b669['rule']||_0x5149a6(0x140),'message':_0x92b669[_0x5149a6(0x107)]||'Validation\x20issue\x20detected','category':_0x92b669['category']||_0x5149a6(0xf4),'validator':_0x92b669[_0x5149a6(0x153)],'cwe':_0x92b669[_0x5149a6(0xfd)]||null,'remediation':_0x92b669['remediation']||null,'references':_0x92b669[_0x5149a6(0x12a)]||[]}));}[a0_0x19775a(0x113)](_0x24191c){const _0x157386=a0_0x19775a,_0x22ecd3={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x157386(0x14c)][_0x157386(0x12d)],'info':STATIC_ANALYSIS['SEVERITY'][_0x157386(0x16a)],'style':STATIC_ANALYSIS['SEVERITY']['INFO']};return _0x22ecd3[_0x24191c?.['toLowerCase']()]||STATIC_ANALYSIS[_0x157386(0x14c)]['WARNING'];}[a0_0x19775a(0x121)](_0x3ab98e){const _0x296861=a0_0x19775a,_0x1f8c2a={'error':STATIC_ANALYSIS[_0x296861(0x14c)][_0x296861(0x111)],'warning':STATIC_ANALYSIS[_0x296861(0x14c)][_0x296861(0x12d)]};return _0x1f8c2a[_0x3ab98e?.['toLowerCase']()]||STATIC_ANALYSIS[_0x296861(0x14c)][_0x296861(0x12d)];}[a0_0x19775a(0x146)](_0x247413){return STATIC_ANALYSIS['SEVERITY']['ERROR'];}async['getValidatorStatus'](){const _0x41bcd7=await this['detectAvailableValidators']();return{'validators':_0x41bcd7,'recommendations':this['getInstallRecommendations'](_0x41bcd7)};}[a0_0x19775a(0x138)](_0x52a890){const _0xd7ad44=a0_0x19775a,_0x143ab4=[];return!_0x52a890['checkov']&&_0x143ab4['push']({'validator':'checkov','reason':_0xd7ad44(0x165),'install':_0xd7ad44(0x15e),'priority':'high'}),!_0x52a890[_0xd7ad44(0xf8)]&&_0x143ab4[_0xd7ad44(0x12e)]({'validator':'hadolint','reason':_0xd7ad44(0x128),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x52a890['yamllint']&&_0x143ab4[_0xd7ad44(0x12e)]({'validator':_0xd7ad44(0x15f),'reason':_0xd7ad44(0x139),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x52a890[_0xd7ad44(0x100)]&&_0x143ab4['push']({'validator':_0xd7ad44(0x142),'reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x143ab4;}}export default ConfigValidator;