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

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 +7 -5
  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.2
101
+ # Should display: Loxia Autopilot One v2.0.6
102
102
  ```
103
103
 
104
104
  ### 4. Create an API Key
@@ -297,14 +297,16 @@ Loxia comes with 18+ specialized tools that agents can use autonomously:
297
297
 
298
298
  ## Roadmap
299
299
 
300
- ### Current Version (2.0.2)
300
+ ### Current Version (2.0.6)
301
301
 
302
- - Compaction system rewrite: response-data-based token counting, multi-pass summarization
303
- - SSE stream parser fix for token usage tracking
304
- - Compaction UI indicator auto-cleanup
302
+ - Tool path sync: terminal `cd` now propagates to all tools (filesystem, seek, pdf, etc.)
303
+ - Streaming performance: chunk batching, incremental parser, reduced overscan
304
+ - WebSocket log suppression for high-frequency stream chunks
305
+ - Agent system prompt: tool result availability guidance for dependent vs independent calls
305
306
 
306
307
  ### Previous Versions
307
308
 
309
+ - v2.0.2: Compaction system rewrite, SSE stream parser fix, token usage tracking
308
310
  - v2.0.0: System port protection, UI responsiveness fixes, model error handling
309
311
  - v1.9.x: Port registry fix, startup timeout fix, agent creation UX, flow agent visibility
310
312
  - v1.8.0: Teams, agent duplication, flow execution, awaiting user input scheduling
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x214cf5=a0_0x21a6;(function(_0x2726d1,_0xba8122){const _0x124719=a0_0x21a6,_0x493df4=_0x2726d1();while(!![]){try{const _0xe8781b=-parseInt(_0x124719(0x19b))/0x1+parseInt(_0x124719(0x178))/0x2*(-parseInt(_0x124719(0x15a))/0x3)+parseInt(_0x124719(0x14f))/0x4*(-parseInt(_0x124719(0x18d))/0x5)+parseInt(_0x124719(0x182))/0x6*(-parseInt(_0x124719(0x19c))/0x7)+parseInt(_0x124719(0x183))/0x8+-parseInt(_0x124719(0x154))/0x9*(parseInt(_0x124719(0x194))/0xa)+parseInt(_0x124719(0x158))/0xb;if(_0xe8781b===_0xba8122)break;else _0x493df4['push'](_0x493df4['shift']());}catch(_0x35f1ab){_0x493df4['push'](_0x493df4['shift']());}}}(a0_0x20f9,0x5b613));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x52437a from'http';function a0_0x20f9(){const _0x3bcd70=['\x0a✓\x20Server\x20running\x20at\x20','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','node','35HhoyWi','src','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','open','host','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','message','10UvpdRz','log','/api/health','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','inherit','index.js','setTimeout','287304MCaIoX','5495xhqBUD','SIGTERM','pid','Server\x20discovered\x20at\x20','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','start','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','Error:','getService','77320OSqkce','--port','length','toString','win32','2032812UFlgzp','web','SIGINT','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','16926613ndDnXe','loxia-terminal.js','708qqhQDU','parse','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','Please\x20open\x20manually:\x20','darwin','LOXIA_HOST','platform','exit','cmd','port','error','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','help','\x0aOpening\x20Web\x20UI\x20at\x20','cleanupStaleEntries','version','http://','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','Waiting\x20for\x20server\x20to\x20start...','statusCode','--host','ceil','Starting\x20Loxia\x20server...\x0a',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','startsWith','Loxia\x20Autopilot\x20One\x20v','../src/services/portRegistry.js','Starting\x20Terminal\x20UI...\x0a','includes','xdg-open','5618OHmHgz','catch','\x20but\x20not\x20responding.','\x0aShutting\x20down\x20server...','now','unref','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','localhost','ignore','\x0aPlease\x20start\x20the\x20server\x20first:','4458DTSkvd','5841352YXKotD','package.json','Looking\x20for\x20running\x20server...','\x20\x20API\x20Health:\x20\x20\x20','kill'];a0_0x20f9=function(){return _0x3bcd70;};return a0_0x20f9();}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='127.0.0.1',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv']['slice'](0x2),command=args[0x0]&&!args[0x0][a0_0x214cf5(0x172)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x214cf5(0x176)]('--help')||args[a0_0x214cf5(0x176)]('-h'),'version':args[a0_0x214cf5(0x176)]('--version')||args[a0_0x214cf5(0x176)]('-v')};for(let i=0x0;i<args[a0_0x214cf5(0x151)];i++){args[i]===a0_0x214cf5(0x150)&&args[i+0x1]&&(flags[a0_0x214cf5(0x163)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x214cf5(0x16e)&&args[i+0x1]&&(flags[a0_0x214cf5(0x191)]=args[i+0x1]);}const explicitPort=flags[a0_0x214cf5(0x163)],host=flags[a0_0x214cf5(0x191)]||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x214cf5(0x184)),pkg=JSON[a0_0x214cf5(0x15b)](readFileSync(pkgPath,'utf8'));console[a0_0x214cf5(0x195)](a0_0x214cf5(0x173)+pkg[a0_0x214cf5(0x169)]),process[a0_0x214cf5(0x161)](0x0);}function a0_0x21a6(_0x5b9b1e,_0xcb24e5){_0x5b9b1e=_0x5b9b1e-0x149;const _0x20f9a7=a0_0x20f9();let _0x21a61f=_0x20f9a7[_0x5b9b1e];return _0x21a61f;}if(flags[a0_0x214cf5(0x166)]||!command){const pkgPath=join(__dirname,'..',a0_0x214cf5(0x184)),pkg=JSON[a0_0x214cf5(0x15b)](readFileSync(pkgPath,'utf8'));console[a0_0x214cf5(0x195)]('\x0aLoxia\x20Autopilot\x20One\x20v'+pkg[a0_0x214cf5(0x169)]+a0_0x214cf5(0x192)+DEFAULT_PORT+a0_0x214cf5(0x18b)+DEFAULT_HOST+a0_0x214cf5(0x171)),process[a0_0x214cf5(0x161)](0x0);}async function getPortRegistry(){const _0x3d7a37=a0_0x214cf5,{getPortRegistry:_0x14723c}=await import(_0x3d7a37(0x174));return _0x14723c();}async function discoverBackend(){const _0x18233e=a0_0x214cf5;try{const _0x5496fe=await getPortRegistry();await _0x5496fe[_0x18233e(0x168)]();const _0x2d67eb=await _0x5496fe[_0x18233e(0x14e)]('backend');if(_0x2d67eb)return{'host':_0x2d67eb[_0x18233e(0x191)]||_0x18233e(0x17f),'port':_0x2d67eb[_0x18233e(0x163)],'pid':_0x2d67eb[_0x18233e(0x19e)]};return null;}catch(_0x20590a){return null;}}async function checkServerRunning(_0x22f38b,_0x1b9b9b,_0x537102=0x1){for(let _0x369c01=0x0;_0x369c01<_0x537102;_0x369c01++){const _0x5234e9=await new Promise(_0x2e5f56=>{const _0x25b09b=a0_0x21a6,_0x3a865a=a0_0x52437a['get']('http://'+_0x22f38b+':'+_0x1b9b9b+_0x25b09b(0x196),_0x19a09a=>{const _0x569fde=_0x25b09b;_0x2e5f56(_0x19a09a[_0x569fde(0x16d)]===0xc8);});_0x3a865a['on'](_0x25b09b(0x164),()=>_0x2e5f56(![])),_0x3a865a[_0x25b09b(0x19a)](0x7d0,()=>{_0x3a865a['destroy'](),_0x2e5f56(![]);});});if(_0x5234e9)return!![];_0x369c01<_0x537102-0x1&&await new Promise(_0x153430=>setTimeout(_0x153430,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x59c058=SERVER_STARTUP_TIMEOUT){const _0x1757ea=a0_0x214cf5,_0x501f25=Date['now']();while(Date[_0x1757ea(0x17c)]()-_0x501f25<_0x59c058){const _0x2cde50=await discoverBackend();if(_0x2cde50){const _0x405320=await checkServerRunning(_0x2cde50['host'],_0x2cde50[_0x1757ea(0x163)]);if(_0x405320)return _0x2cde50;}await new Promise(_0x12e2dd=>setTimeout(_0x12e2dd,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x39dfdf,_0x4cee37,_0x5ec349=SERVER_STARTUP_TIMEOUT){const _0x4e1dfc=a0_0x214cf5,_0x3205b4=Math[_0x4e1dfc(0x16f)](_0x5ec349/SERVER_CHECK_INTERVAL),_0x1cad8a=await checkServerRunning(_0x39dfdf,_0x4cee37,_0x3205b4);return _0x1cad8a?{'host':_0x39dfdf,'port':_0x4cee37}:null;}function openBrowser(_0x16bda2){const _0x1634f3=a0_0x214cf5;let _0x21b2c6,_0x162449;if(process[_0x1634f3(0x160)]===_0x1634f3(0x15e))_0x21b2c6=_0x1634f3(0x190),_0x162449=[_0x16bda2];else process[_0x1634f3(0x160)]===_0x1634f3(0x153)?(_0x21b2c6=_0x1634f3(0x162),_0x162449=['/c',_0x1634f3(0x14b),'\x22\x22',_0x16bda2]):(_0x21b2c6=_0x1634f3(0x177),_0x162449=[_0x16bda2]);const _0x333c0b=spawn(_0x21b2c6,_0x162449,{'detached':!![],'stdio':_0x1634f3(0x180)});_0x333c0b[_0x1634f3(0x17d)](),_0x333c0b['on'](_0x1634f3(0x164),()=>{const _0x569c88=_0x1634f3;console['log']('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x569c88(0x195)](_0x569c88(0x15d)+_0x16bda2);});}function startServer(_0x16865d=![]){const _0x92bafb=a0_0x214cf5,_0x103a5e={...process.env};explicitPort&&(_0x103a5e['LOXIA_PORT']=explicitPort[_0x92bafb(0x152)](),_0x103a5e['PORT']=explicitPort['toString']());flags['host']&&(_0x103a5e[_0x92bafb(0x15f)]=flags[_0x92bafb(0x191)]);const _0x18efa3=join(__dirname,'..',_0x92bafb(0x18e),_0x92bafb(0x199)),_0x20dcab=spawn(_0x92bafb(0x18c),[_0x18efa3],{'cwd':join(__dirname,'..'),'env':_0x103a5e,'stdio':_0x16865d?[_0x92bafb(0x180),_0x92bafb(0x180),_0x92bafb(0x180)]:_0x92bafb(0x198),'detached':_0x16865d});return _0x16865d&&_0x20dcab[_0x92bafb(0x17d)](),_0x20dcab;}function startTerminalUIProcess(_0x4bf315,_0x3d041f){const _0x3a57a8=a0_0x214cf5,_0x109ef6=join(__dirname,_0x3a57a8(0x159)),_0x5d9185={...process.env,'LOXIA_PORT':_0x3d041f['toString'](),'LOXIA_HOST':_0x4bf315},_0x13a703=spawn('node',[_0x109ef6],{'cwd':join(__dirname,'..'),'env':_0x5d9185,'stdio':'inherit'});return _0x13a703;}const commands={'web':async()=>{const _0x45c815=a0_0x214cf5;console[_0x45c815(0x195)](_0x45c815(0x170));const _0x59af0f=startServer(![]);console['log'](_0x45c815(0x16c));let _0x468250;explicitPort?_0x468250=await waitForServerAtPort(host,explicitPort):_0x468250=await waitForServerWithDiscovery();if(_0x468250){const _0x35de45=_0x45c815(0x16a)+_0x468250[_0x45c815(0x191)]+':'+_0x468250['port'];console[_0x45c815(0x195)](_0x45c815(0x167)+_0x35de45),openBrowser(_0x35de45);}else console[_0x45c815(0x195)](_0x45c815(0x197));process['on'](_0x45c815(0x156),()=>_0x59af0f[_0x45c815(0x187)](_0x45c815(0x156))),process['on'](_0x45c815(0x19d),()=>_0x59af0f['kill']('SIGTERM')),_0x59af0f['on']('exit',_0x49894d=>process[_0x45c815(0x161)](_0x49894d||0x0));},'plus-web':async()=>{const _0x429c85=a0_0x214cf5;await commands[_0x429c85(0x155)]();},'serve':async()=>{const _0x322eba=a0_0x214cf5;console[_0x322eba(0x195)](_0x322eba(0x170));const _0x52aeab=startServer(![]);console[_0x322eba(0x195)](_0x322eba(0x16c));let _0x5e9b8d;explicitPort?_0x5e9b8d=await waitForServerAtPort(host,explicitPort):_0x5e9b8d=await waitForServerWithDiscovery();if(_0x5e9b8d){const _0x11a870=_0x322eba(0x16a)+_0x5e9b8d[_0x322eba(0x191)]+':'+_0x5e9b8d[_0x322eba(0x163)];console[_0x322eba(0x195)](_0x322eba(0x188)+_0x11a870),console[_0x322eba(0x195)](_0x322eba(0x14c)+_0x11a870),console[_0x322eba(0x195)](_0x322eba(0x17e)),console[_0x322eba(0x195)](_0x322eba(0x186)+_0x11a870+'/api/health\x0a');}else console[_0x322eba(0x195)](_0x322eba(0x16b)),console[_0x322eba(0x195)](_0x322eba(0x189));process['on']('SIGINT',()=>_0x52aeab[_0x322eba(0x187)](_0x322eba(0x156))),process['on'](_0x322eba(0x19d),()=>_0x52aeab[_0x322eba(0x187)](_0x322eba(0x19d))),_0x52aeab['on'](_0x322eba(0x161),_0x5b1f7d=>process[_0x322eba(0x161)](_0x5b1f7d||0x0));},'terminal':async()=>{const _0x330981=a0_0x214cf5;console[_0x330981(0x195)](_0x330981(0x185));let _0x5c7c47=await discoverBackend();explicitPort&&(_0x5c7c47={'host':host,'port':explicitPort});!_0x5c7c47&&(console[_0x330981(0x164)](_0x330981(0x15c)),console[_0x330981(0x164)](_0x330981(0x181)),console[_0x330981(0x164)](_0x330981(0x157)),console['error'](_0x330981(0x14a)),console[_0x330981(0x164)]('\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a'),process[_0x330981(0x161)](0x1));const _0x25e540=await checkServerRunning(_0x5c7c47['host'],_0x5c7c47[_0x330981(0x163)]);!_0x25e540&&(console[_0x330981(0x164)]('\x0aServer\x20registered\x20at\x20'+_0x5c7c47['host']+':'+_0x5c7c47['port']+_0x330981(0x17a)),console[_0x330981(0x164)](_0x330981(0x18f)),process[_0x330981(0x161)](0x1));console['log'](_0x330981(0x149)+_0x5c7c47[_0x330981(0x191)]+':'+_0x5c7c47['port']),console[_0x330981(0x195)](_0x330981(0x175));const _0x2d4bbc=startTerminalUIProcess(_0x5c7c47['host'],_0x5c7c47['port']);process['on'](_0x330981(0x156),()=>_0x2d4bbc[_0x330981(0x187)](_0x330981(0x156))),process['on']('SIGTERM',()=>_0x2d4bbc[_0x330981(0x187)](_0x330981(0x19d))),_0x2d4bbc['on'](_0x330981(0x161),_0x27fb92=>process['exit'](_0x27fb92||0x0));},'plus-terminal':async()=>{const _0x1e0606=a0_0x214cf5;console[_0x1e0606(0x195)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x98ae2e=startServer(!![]);let _0x4d9787;explicitPort?_0x4d9787=await waitForServerAtPort(host,explicitPort):_0x4d9787=await waitForServerWithDiscovery();!_0x4d9787&&(console[_0x1e0606(0x164)](_0x1e0606(0x18a)),process['exit'](0x1));console[_0x1e0606(0x195)]('Server\x20running\x20at\x20http://'+_0x4d9787[_0x1e0606(0x191)]+':'+_0x4d9787['port']),console[_0x1e0606(0x195)]('Starting\x20Terminal\x20UI...\x0a');const _0x509ddc=startTerminalUIProcess(_0x4d9787[_0x1e0606(0x191)],_0x4d9787[_0x1e0606(0x163)]);_0x509ddc['on'](_0x1e0606(0x161),_0x17798b=>{const _0x36cf8c=_0x1e0606;console[_0x36cf8c(0x195)](_0x36cf8c(0x17b));try{process['kill'](_0x98ae2e['pid'],'SIGTERM');}catch(_0x43008b){}process[_0x36cf8c(0x161)](_0x17798b||0x0);}),process['on'](_0x1e0606(0x156),()=>{const _0x19ad5e=_0x1e0606;_0x509ddc[_0x19ad5e(0x187)](_0x19ad5e(0x156));}),process['on']('SIGTERM',()=>{const _0x1a4ff7=_0x1e0606;_0x509ddc[_0x1a4ff7(0x187)]('SIGTERM');});}};commands[command]?commands[command]()[a0_0x214cf5(0x179)](_0x204db3=>{const _0x411eba=a0_0x214cf5;console[_0x411eba(0x164)](_0x411eba(0x14d),_0x204db3[_0x411eba(0x193)]),process[_0x411eba(0x161)](0x1);}):(console['error']('Unknown\x20command:\x20'+command),console[a0_0x214cf5(0x164)](a0_0x214cf5(0x165)),process['exit'](0x1));
3
+ const a0_0x347fbb=a0_0x382e;(function(_0x354f3f,_0x424502){const _0x1bc565=a0_0x382e,_0xcbead3=_0x354f3f();while(!![]){try{const _0x26b7ba=parseInt(_0x1bc565(0x194))/0x1+-parseInt(_0x1bc565(0x1a8))/0x2*(-parseInt(_0x1bc565(0x189))/0x3)+parseInt(_0x1bc565(0x195))/0x4+parseInt(_0x1bc565(0x18c))/0x5*(-parseInt(_0x1bc565(0x1ae))/0x6)+-parseInt(_0x1bc565(0x1af))/0x7+-parseInt(_0x1bc565(0x190))/0x8*(-parseInt(_0x1bc565(0x165))/0x9)+-parseInt(_0x1bc565(0x182))/0xa;if(_0x26b7ba===_0x424502)break;else _0xcbead3['push'](_0xcbead3['shift']());}catch(_0x34c3d8){_0xcbead3['push'](_0xcbead3['shift']());}}}(a0_0x5594,0x703d7));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x2df1ed from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x347fbb(0x187),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x347fbb(0x1ad)]['slice'](0x2),command=args[0x0]&&!args[0x0][a0_0x347fbb(0x184)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x347fbb(0x191)](a0_0x347fbb(0x160))||args[a0_0x347fbb(0x191)]('-h'),'version':args[a0_0x347fbb(0x191)]('--version')||args[a0_0x347fbb(0x191)]('-v')};for(let i=0x0;i<args[a0_0x347fbb(0x175)];i++){args[i]===a0_0x347fbb(0x192)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x347fbb(0x188)]=args[i+0x1]);}const explicitPort=flags['port'],host=flags[a0_0x347fbb(0x188)]||DEFAULT_HOST;if(flags[a0_0x347fbb(0x193)]){const pkgPath=join(__dirname,'..',a0_0x347fbb(0x196)),pkg=JSON[a0_0x347fbb(0x1ac)](readFileSync(pkgPath,a0_0x347fbb(0x173)));console['log'](a0_0x347fbb(0x18b)+pkg[a0_0x347fbb(0x193)]),process[a0_0x347fbb(0x1a5)](0x0);}if(flags[a0_0x347fbb(0x19d)]||!command){const pkgPath=join(__dirname,'..',a0_0x347fbb(0x196)),pkg=JSON[a0_0x347fbb(0x1ac)](readFileSync(pkgPath,a0_0x347fbb(0x173)));console['log'](a0_0x347fbb(0x1a3)+pkg[a0_0x347fbb(0x193)]+'\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+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+a0_0x347fbb(0x1ab)),process[a0_0x347fbb(0x1a5)](0x0);}async function getPortRegistry(){const _0x206f78=a0_0x347fbb,{getPortRegistry:_0x5a44d7}=await import(_0x206f78(0x171));return _0x5a44d7();}async function discoverBackend(){const _0x3e02b5=a0_0x347fbb;try{const _0x523776=await getPortRegistry();await _0x523776['cleanupStaleEntries']();const _0x3649c5=await _0x523776[_0x3e02b5(0x162)](_0x3e02b5(0x183));if(_0x3649c5)return{'host':_0x3649c5[_0x3e02b5(0x188)]||'localhost','port':_0x3649c5[_0x3e02b5(0x17b)],'pid':_0x3649c5['pid']};return null;}catch(_0x10454c){return null;}}function a0_0x5594(){const _0x11f782=['LOXIA_HOST','setTimeout','\x0aLoxia\x20Autopilot\x20One\x20v','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','exit','node','get','103546pNlXmM','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.',')\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','parse','argv','4206veoPHG','4989509dXupLB','message','Starting\x20Loxia\x20server\x20in\x20background...','catch','ignore','--help','ceil','getService','Please\x20open\x20manually:\x20','log','1341nsZwVB','http://','\x20\x20API\x20Health:\x20\x20\x20','error','\x0aOpening\x20Web\x20UI\x20at\x20','\x0a✓\x20Server\x20running\x20at\x20','Waiting\x20for\x20server\x20to\x20start...','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','cmd','SIGINT','Unknown\x20command:\x20','../src/services/portRegistry.js','\x0aServer\x20registered\x20at\x20','utf8','/api/health\x0a','length','\x0aShutting\x20down\x20server...','Server\x20running\x20at\x20http://','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','loxia-terminal.js','port','Could\x20not\x20open\x20browser\x20automatically.','\x0aPlease\x20start\x20the\x20server\x20first:','/api/health','xdg-open','destroy','index.js','11432450wuLVHo','backend','startsWith','PORT','platform','127.0.0.1','host','48hBhATe','kill','Loxia\x20Autopilot\x20One\x20v','1990tvwWYs','Error:','LOXIA_PORT','src','32136WUnKlO','includes','--port','version','624985sHZzNh','2171516xyJuhc','package.json','toString','Starting\x20Loxia\x20server...\x0a','SIGTERM','open','\x20but\x20not\x20responding.','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','help','now','unref','start'];a0_0x5594=function(){return _0x11f782;};return a0_0x5594();}async function checkServerRunning(_0x5337c9,_0x2bd2fd,_0x47e509=0x1){for(let _0x2a5a58=0x0;_0x2a5a58<_0x47e509;_0x2a5a58++){const _0x2f345d=await new Promise(_0x53490d=>{const _0x4d92f2=a0_0x382e,_0x469bcc=a0_0x2df1ed[_0x4d92f2(0x1a7)]('http://'+_0x5337c9+':'+_0x2bd2fd+_0x4d92f2(0x17e),_0x4e8690=>{_0x53490d(_0x4e8690['statusCode']===0xc8);});_0x469bcc['on'](_0x4d92f2(0x168),()=>_0x53490d(![])),_0x469bcc[_0x4d92f2(0x1a2)](0x7d0,()=>{const _0x3d8002=_0x4d92f2;_0x469bcc[_0x3d8002(0x180)](),_0x53490d(![]);});});if(_0x2f345d)return!![];_0x2a5a58<_0x47e509-0x1&&await new Promise(_0x5f9ba=>setTimeout(_0x5f9ba,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x3704b2=SERVER_STARTUP_TIMEOUT){const _0x69c3d5=a0_0x347fbb,_0x9efc61=Date[_0x69c3d5(0x19e)]();while(Date['now']()-_0x9efc61<_0x3704b2){const _0x1c35d7=await discoverBackend();if(_0x1c35d7){const _0x32573e=await checkServerRunning(_0x1c35d7['host'],_0x1c35d7[_0x69c3d5(0x17b)]);if(_0x32573e)return _0x1c35d7;}await new Promise(_0x257ad6=>setTimeout(_0x257ad6,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x1ddb5a,_0xf7df0b,_0x589f3a=SERVER_STARTUP_TIMEOUT){const _0x280067=a0_0x347fbb,_0xd469fd=Math[_0x280067(0x161)](_0x589f3a/SERVER_CHECK_INTERVAL),_0x355aa6=await checkServerRunning(_0x1ddb5a,_0xf7df0b,_0xd469fd);return _0x355aa6?{'host':_0x1ddb5a,'port':_0xf7df0b}:null;}function a0_0x382e(_0x1fc000,_0x4222aa){_0x1fc000=_0x1fc000-0x15e;const _0x5594be=a0_0x5594();let _0x382e85=_0x5594be[_0x1fc000];return _0x382e85;}function openBrowser(_0x5c6510){const _0xe53796=a0_0x347fbb;let _0x4242b1,_0x4e946b;if(process[_0xe53796(0x186)]==='darwin')_0x4242b1=_0xe53796(0x19a),_0x4e946b=[_0x5c6510];else process[_0xe53796(0x186)]==='win32'?(_0x4242b1=_0xe53796(0x16e),_0x4e946b=['/c',_0xe53796(0x1a0),'\x22\x22',_0x5c6510]):(_0x4242b1=_0xe53796(0x17f),_0x4e946b=[_0x5c6510]);const _0x521263=spawn(_0x4242b1,_0x4e946b,{'detached':!![],'stdio':_0xe53796(0x15f)});_0x521263[_0xe53796(0x19f)](),_0x521263['on'](_0xe53796(0x168),()=>{const _0x12844b=_0xe53796;console[_0x12844b(0x164)](_0x12844b(0x17c)),console[_0x12844b(0x164)](_0x12844b(0x163)+_0x5c6510);});}function startServer(_0x4d1ece=![]){const _0x2dcb0f=a0_0x347fbb,_0x3f1b03={...process.env};explicitPort&&(_0x3f1b03[_0x2dcb0f(0x18e)]=explicitPort[_0x2dcb0f(0x197)](),_0x3f1b03[_0x2dcb0f(0x185)]=explicitPort[_0x2dcb0f(0x197)]());flags['host']&&(_0x3f1b03[_0x2dcb0f(0x1a1)]=flags[_0x2dcb0f(0x188)]);const _0x2736d1=join(__dirname,'..',_0x2dcb0f(0x18f),_0x2dcb0f(0x181)),_0x4bd09a=spawn(_0x2dcb0f(0x1a6),[_0x2736d1],{'cwd':join(__dirname,'..'),'env':_0x3f1b03,'stdio':_0x4d1ece?[_0x2dcb0f(0x15f),'ignore',_0x2dcb0f(0x15f)]:'inherit','detached':_0x4d1ece});return _0x4d1ece&&_0x4bd09a[_0x2dcb0f(0x19f)](),_0x4bd09a;}function startTerminalUIProcess(_0x4fa8f8,_0x42a2cb){const _0x1b39ed=a0_0x347fbb,_0x8b64fe=join(__dirname,_0x1b39ed(0x17a)),_0x1c4ee8={...process.env,'LOXIA_PORT':_0x42a2cb[_0x1b39ed(0x197)](),'LOXIA_HOST':_0x4fa8f8},_0x508967=spawn(_0x1b39ed(0x1a6),[_0x8b64fe],{'cwd':join(__dirname,'..'),'env':_0x1c4ee8,'stdio':'inherit'});return _0x508967;}const commands={'web':async()=>{const _0x13cd0f=a0_0x347fbb;console['log'](_0x13cd0f(0x198));const _0xe8f4cc=startServer(![]);console[_0x13cd0f(0x164)](_0x13cd0f(0x16b));let _0xa0b2ac;explicitPort?_0xa0b2ac=await waitForServerAtPort(host,explicitPort):_0xa0b2ac=await waitForServerWithDiscovery();if(_0xa0b2ac){const _0x5c5ac3=_0x13cd0f(0x166)+_0xa0b2ac['host']+':'+_0xa0b2ac[_0x13cd0f(0x17b)];console[_0x13cd0f(0x164)](_0x13cd0f(0x169)+_0x5c5ac3),openBrowser(_0x5c5ac3);}else console[_0x13cd0f(0x164)]('\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.');process['on']('SIGINT',()=>_0xe8f4cc[_0x13cd0f(0x18a)]('SIGINT')),process['on'](_0x13cd0f(0x199),()=>_0xe8f4cc[_0x13cd0f(0x18a)](_0x13cd0f(0x199))),_0xe8f4cc['on'](_0x13cd0f(0x1a5),_0x289cd3=>process[_0x13cd0f(0x1a5)](_0x289cd3||0x0));},'plus-web':async()=>{await commands['web']();},'serve':async()=>{const _0x16e0d1=a0_0x347fbb;console[_0x16e0d1(0x164)](_0x16e0d1(0x198));const _0x50fcd1=startServer(![]);console[_0x16e0d1(0x164)](_0x16e0d1(0x16b));let _0x319df3;explicitPort?_0x319df3=await waitForServerAtPort(host,explicitPort):_0x319df3=await waitForServerWithDiscovery();if(_0x319df3){const _0x1223c0=_0x16e0d1(0x166)+_0x319df3[_0x16e0d1(0x188)]+':'+_0x319df3[_0x16e0d1(0x17b)];console[_0x16e0d1(0x164)](_0x16e0d1(0x16a)+_0x1223c0),console[_0x16e0d1(0x164)](_0x16e0d1(0x16d)+_0x1223c0),console[_0x16e0d1(0x164)](_0x16e0d1(0x179)),console[_0x16e0d1(0x164)](_0x16e0d1(0x167)+_0x1223c0+_0x16e0d1(0x174));}else console[_0x16e0d1(0x164)]('\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.'),console[_0x16e0d1(0x164)](_0x16e0d1(0x16c));process['on'](_0x16e0d1(0x16f),()=>_0x50fcd1[_0x16e0d1(0x18a)]('SIGINT')),process['on'](_0x16e0d1(0x199),()=>_0x50fcd1[_0x16e0d1(0x18a)]('SIGTERM')),_0x50fcd1['on'](_0x16e0d1(0x1a5),_0x5b8609=>process[_0x16e0d1(0x1a5)](_0x5b8609||0x0));},'terminal':async()=>{const _0x514f35=a0_0x347fbb;console['log']('Looking\x20for\x20running\x20server...');let _0x328c47=await discoverBackend();explicitPort&&(_0x328c47={'host':host,'port':explicitPort});!_0x328c47&&(console['error'](_0x514f35(0x1a9)),console[_0x514f35(0x168)](_0x514f35(0x17d)),console[_0x514f35(0x168)](_0x514f35(0x1a4)),console[_0x514f35(0x168)]('\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only'),console['error'](_0x514f35(0x178)),process[_0x514f35(0x1a5)](0x1));const _0xa99c1a=await checkServerRunning(_0x328c47[_0x514f35(0x188)],_0x328c47[_0x514f35(0x17b)]);!_0xa99c1a&&(console[_0x514f35(0x168)](_0x514f35(0x172)+_0x328c47[_0x514f35(0x188)]+':'+_0x328c47[_0x514f35(0x17b)]+_0x514f35(0x19b)),console[_0x514f35(0x168)](_0x514f35(0x1aa)),process[_0x514f35(0x1a5)](0x1));console[_0x514f35(0x164)]('Server\x20discovered\x20at\x20'+_0x328c47[_0x514f35(0x188)]+':'+_0x328c47[_0x514f35(0x17b)]),console[_0x514f35(0x164)]('Starting\x20Terminal\x20UI...\x0a');const _0xcdd9bb=startTerminalUIProcess(_0x328c47['host'],_0x328c47[_0x514f35(0x17b)]);process['on'](_0x514f35(0x16f),()=>_0xcdd9bb[_0x514f35(0x18a)]('SIGINT')),process['on'](_0x514f35(0x199),()=>_0xcdd9bb['kill'](_0x514f35(0x199))),_0xcdd9bb['on']('exit',_0x15ea31=>process[_0x514f35(0x1a5)](_0x15ea31||0x0));},'plus-terminal':async()=>{const _0x1dff3e=a0_0x347fbb;console[_0x1dff3e(0x164)](_0x1dff3e(0x1b1));const _0x18b8e6=startServer(!![]);let _0x55d308;explicitPort?_0x55d308=await waitForServerAtPort(host,explicitPort):_0x55d308=await waitForServerWithDiscovery();!_0x55d308&&(console[_0x1dff3e(0x168)](_0x1dff3e(0x19c)),process[_0x1dff3e(0x1a5)](0x1));console[_0x1dff3e(0x164)](_0x1dff3e(0x177)+_0x55d308['host']+':'+_0x55d308['port']),console[_0x1dff3e(0x164)]('Starting\x20Terminal\x20UI...\x0a');const _0xf18fb0=startTerminalUIProcess(_0x55d308[_0x1dff3e(0x188)],_0x55d308['port']);_0xf18fb0['on']('exit',_0x2906e3=>{const _0x5ba302=_0x1dff3e;console[_0x5ba302(0x164)](_0x5ba302(0x176));try{process['kill'](_0x18b8e6['pid'],_0x5ba302(0x199));}catch(_0x4ed521){}process['exit'](_0x2906e3||0x0);}),process['on'](_0x1dff3e(0x16f),()=>{const _0x5be8c8=_0x1dff3e;_0xf18fb0[_0x5be8c8(0x18a)](_0x5be8c8(0x16f));}),process['on'](_0x1dff3e(0x199),()=>{const _0x4a9b7f=_0x1dff3e;_0xf18fb0['kill'](_0x4a9b7f(0x199));});}};commands[command]?commands[command]()[a0_0x347fbb(0x15e)](_0x292a85=>{const _0x1b4602=a0_0x347fbb;console[_0x1b4602(0x168)](_0x1b4602(0x18d),_0x292a85[_0x1b4602(0x1b0)]),process[_0x1b4602(0x1a5)](0x1);}):(console[a0_0x347fbb(0x168)](a0_0x347fbb(0x170)+command),console[a0_0x347fbb(0x168)]('Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.'),process['exit'](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- function a0_0xe78c(){const _0x5ab26d=['slice','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','join','destroy','...','bin/cli.js','✗\x20Server\x20is\x20not\x20running','19698175JxpQIV','758090bIpVEN','connect','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','293544nnMbdm','timeout','533380RhRFVa','../src/interfaces/terminal/index.js','--host','exit','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','error','Failed\x20to\x20start\x20server:','localhost','stdout','now','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','1198404CsUIAU','node','toString','🚀\x20Starting\x20Loxia\x20server...','Server\x20startup\x20timeout','log','stderr','kill','--port','setTimeout','3857208dmVoaO','1096248auKBDs','message','--ui','length','web','✓\x20Server\x20started\x20at\x20','data','pipe','Socket','💡\x20Troubleshooting:'];a0_0xe78c=function(){return _0x5ab26d;};return a0_0xe78c();}const a0_0x16b6c9=a0_0xc4d3;(function(_0x5f1b01,_0x128beb){const _0x4d4456=a0_0xc4d3,_0x436e7d=_0x5f1b01();while(!![]){try{const _0x489d0e=-parseInt(_0x4d4456(0x92))/0x1+-parseInt(_0x4d4456(0x75))/0x2+-parseInt(_0x4d4456(0x80))/0x3+parseInt(_0x4d4456(0x95))/0x4+-parseInt(_0x4d4456(0x97))/0x5+-parseInt(_0x4d4456(0x7f))/0x6+parseInt(_0x4d4456(0x91))/0x7;if(_0x489d0e===_0x128beb)break;else _0x436e7d['push'](_0x436e7d['shift']());}catch(_0x29a913){_0x436e7d['push'](_0x436e7d['shift']());}}}(a0_0xe78c,0x655b7));function a0_0xc4d3(_0x3ff70f,_0x1a0782){_0x3ff70f=_0x3ff70f-0x70;const _0xe78c46=a0_0xe78c();let _0xc4d3df=_0xe78c46[_0x3ff70f];return _0xc4d3df;}import{spawn}from'child_process';import a0_0x243f74 from'net';import a0_0x171926 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x171926['dirname'](__filename),projectRoot=a0_0x171926['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x16b6c9(0x71),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x2e22fb,_0x118139){return new Promise(_0xf131b3=>{const _0x42f284=a0_0xc4d3,_0x3864e0=new a0_0x243f74[(_0x42f284(0x88))]();_0x3864e0[_0x42f284(0x7e)](0x7d0),_0x3864e0['on'](_0x42f284(0x93),()=>{const _0x2cf43b=_0x42f284;_0x3864e0[_0x2cf43b(0x8d)](),_0xf131b3(!![]);}),_0x3864e0['on'](_0x42f284(0x96),()=>{const _0x4051c1=_0x42f284;_0x3864e0[_0x4051c1(0x8d)](),_0xf131b3(![]);}),_0x3864e0['on']('error',()=>{_0x3864e0['destroy'](),_0xf131b3(![]);}),_0x3864e0[_0x42f284(0x93)](_0x118139,_0x2e22fb);});}async function startServer(_0x3555d0,_0x56c9dc){const _0x44ae29=a0_0x16b6c9;return console['log'](_0x44ae29(0x78)),new Promise((_0x229c1c,_0x17e0f7)=>{const _0x4b4bc9=_0x44ae29,_0x319333=spawn(_0x4b4bc9(0x76),[a0_0x171926[_0x4b4bc9(0x8c)](projectRoot,_0x4b4bc9(0x8f)),_0x4b4bc9(0x82),_0x4b4bc9(0x84),_0x4b4bc9(0x99),_0x3555d0,_0x4b4bc9(0x7d),_0x56c9dc['toString']()],{'detached':![],'stdio':['ignore',_0x4b4bc9(0x87),_0x4b4bc9(0x87)]});_0x319333[_0x4b4bc9(0x72)]['on'](_0x4b4bc9(0x86),()=>{}),_0x319333[_0x4b4bc9(0x7b)]['on']('data',()=>{}),_0x319333['on'](_0x4b4bc9(0x9c),_0x55fcab=>{const _0x181952=_0x4b4bc9;console[_0x181952(0x9c)](_0x181952(0x70),_0x55fcab[_0x181952(0x81)]),_0x17e0f7(_0x55fcab);});const _0x5d8dcb=Date[_0x4b4bc9(0x73)](),_0x400a4e=setInterval(async()=>{const _0x547a12=_0x4b4bc9,_0x445722=await isServerRunning(_0x3555d0,_0x56c9dc);if(_0x445722)clearInterval(_0x400a4e),console['log'](_0x547a12(0x85)+_0x3555d0+':'+_0x56c9dc),_0x229c1c();else Date['now']()-_0x5d8dcb>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x400a4e),_0x319333[_0x547a12(0x7c)](),_0x17e0f7(new Error(_0x547a12(0x79))));},0x1f4);});}async function main(){const _0x39f865=a0_0x16b6c9;try{console[_0x39f865(0x7a)](_0x39f865(0x8b)),console[_0x39f865(0x7a)](_0x39f865(0x74)),console[_0x39f865(0x7a)](_0x39f865(0x8b)),console['log']('');const _0x4ba951=process['argv'][_0x39f865(0x8a)](0x2);let _0x204fcd=DEFAULT_HOST,_0x4442e1=DEFAULT_PORT;for(let _0x3000b7=0x0;_0x3000b7<_0x4ba951[_0x39f865(0x83)];_0x3000b7++){if(_0x4ba951[_0x3000b7]===_0x39f865(0x99)&&_0x4ba951[_0x3000b7+0x1])_0x204fcd=_0x4ba951[_0x3000b7+0x1],_0x3000b7++;else _0x4ba951[_0x3000b7]===_0x39f865(0x7d)&&_0x4ba951[_0x3000b7+0x1]&&(_0x4442e1=parseInt(_0x4ba951[_0x3000b7+0x1],0xa),_0x3000b7++);}console['log']('🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20'+_0x204fcd+':'+_0x4442e1+_0x39f865(0x8e));const _0x586b6c=await isServerRunning(_0x204fcd,_0x4442e1);!_0x586b6c?(console['log'](_0x39f865(0x90)),await startServer(_0x204fcd,_0x4442e1)):console[_0x39f865(0x7a)]('✓\x20Server\x20is\x20already\x20running\x20at\x20'+_0x204fcd+':'+_0x4442e1),console[_0x39f865(0x7a)](''),console[_0x39f865(0x7a)]('🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...'),console[_0x39f865(0x7a)](''),await new Promise(_0x2425d5=>setTimeout(_0x2425d5,0x1f4)),process.env.LOXIA_HOST=_0x204fcd,process.env.LOXIA_PORT=_0x4442e1[_0x39f865(0x77)](),await import(_0x39f865(0x98));}catch(_0x4f4f7d){console[_0x39f865(0x9c)](''),console[_0x39f865(0x9c)]('❌\x20Failed\x20to\x20start\x20Terminal\x20UI:'),console['error']('\x20\x20',_0x4f4f7d[_0x39f865(0x81)]),console[_0x39f865(0x9c)](''),console[_0x39f865(0x9c)](_0x39f865(0x89)),console['error'](_0x39f865(0x94)),console[_0x39f865(0x9c)](_0x39f865(0x9b)),console[_0x39f865(0x9c)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x39f865(0x9c)](''),process[_0x39f865(0x9a)](0x1);}}main();
3
+ const a0_0x563781=a0_0x46e0;(function(_0x4e07a3,_0x2676c2){const _0x51a936=a0_0x46e0,_0x2ff948=_0x4e07a3();while(!![]){try{const _0xa4c9bb=-parseInt(_0x51a936(0x1c5))/0x1*(-parseInt(_0x51a936(0x1bf))/0x2)+-parseInt(_0x51a936(0x1c4))/0x3*(parseInt(_0x51a936(0x1bc))/0x4)+parseInt(_0x51a936(0x1d5))/0x5*(parseInt(_0x51a936(0x1c6))/0x6)+parseInt(_0x51a936(0x1b0))/0x7*(parseInt(_0x51a936(0x1d3))/0x8)+parseInt(_0x51a936(0x1a8))/0x9+-parseInt(_0x51a936(0x1ca))/0xa+-parseInt(_0x51a936(0x1aa))/0xb*(parseInt(_0x51a936(0x1a9))/0xc);if(_0xa4c9bb===_0x2676c2)break;else _0x2ff948['push'](_0x2ff948['shift']());}catch(_0x79b8ca){_0x2ff948['push'](_0x2ff948['shift']());}}}(a0_0x48f1,0xcc411));import{spawn}from'child_process';function a0_0x48f1(){const _0x36f85c=['--host','✗\x20Server\x20is\x20not\x20running','--port','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','dirname','web','error','join','✓\x20Server\x20started\x20at\x20','628clTThe','toString','Failed\x20to\x20start\x20server:','12lmRCtb','stderr','--ui','argv','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','16431iomVST','250321BBzqRL','132vLffln','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','connect','stdout','4098910AwGcEm','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','node','✓\x20Server\x20is\x20already\x20running\x20at\x20','data','slice','message','destroy','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','590584krpITO','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','31795mJLxod','6052887hYXbrw','1241484wdZAsv','132ssqJfJ','log','...','pipe','setTimeout','length','98OyHcGp','kill','ignore'];a0_0x48f1=function(){return _0x36f85c;};return a0_0x48f1();}import a0_0x31f7a1 from'net';import a0_0x441cd9 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x441cd9[a0_0x563781(0x1b7)](__filename),projectRoot=a0_0x441cd9[a0_0x563781(0x1b7)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x23d4e3,_0x15b710){return new Promise(_0x38d23d=>{const _0x310cc1=a0_0x46e0,_0x5559de=new a0_0x31f7a1['Socket']();_0x5559de[_0x310cc1(0x1ae)](0x7d0),_0x5559de['on']('connect',()=>{const _0x201789=_0x310cc1;_0x5559de[_0x201789(0x1d1)](),_0x38d23d(!![]);}),_0x5559de['on']('timeout',()=>{const _0x13ce73=_0x310cc1;_0x5559de[_0x13ce73(0x1d1)](),_0x38d23d(![]);}),_0x5559de['on']('error',()=>{const _0x4f4c2c=_0x310cc1;_0x5559de[_0x4f4c2c(0x1d1)](),_0x38d23d(![]);}),_0x5559de[_0x310cc1(0x1c8)](_0x15b710,_0x23d4e3);});}function a0_0x46e0(_0x105eef,_0x156c4b){_0x105eef=_0x105eef-0x1a8;const _0x48f17a=a0_0x48f1();let _0x46e0fa=_0x48f17a[_0x105eef];return _0x46e0fa;}async function startServer(_0x43e9cf,_0x539edc){const _0x5e5991=a0_0x563781;return console[_0x5e5991(0x1ab)]('🚀\x20Starting\x20Loxia\x20server...'),new Promise((_0x29a49a,_0x20c628)=>{const _0x11adf0=_0x5e5991,_0x5c3541=spawn(_0x11adf0(0x1cc),[a0_0x441cd9[_0x11adf0(0x1ba)](projectRoot,'bin/cli.js'),_0x11adf0(0x1c1),_0x11adf0(0x1b8),'--host',_0x43e9cf,_0x11adf0(0x1b5),_0x539edc[_0x11adf0(0x1bd)]()],{'detached':![],'stdio':[_0x11adf0(0x1b2),_0x11adf0(0x1ad),'pipe']});_0x5c3541[_0x11adf0(0x1c9)]['on'](_0x11adf0(0x1ce),()=>{}),_0x5c3541[_0x11adf0(0x1c0)]['on']('data',()=>{}),_0x5c3541['on'](_0x11adf0(0x1b9),_0x2f90ce=>{const _0x41be73=_0x11adf0;console[_0x41be73(0x1b9)](_0x41be73(0x1be),_0x2f90ce[_0x41be73(0x1d0)]),_0x20c628(_0x2f90ce);});const _0x50947d=Date['now'](),_0x416476=setInterval(async()=>{const _0x2fff6d=_0x11adf0,_0x2606a7=await isServerRunning(_0x43e9cf,_0x539edc);if(_0x2606a7)clearInterval(_0x416476),console[_0x2fff6d(0x1ab)](_0x2fff6d(0x1bb)+_0x43e9cf+':'+_0x539edc),_0x29a49a();else Date['now']()-_0x50947d>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x416476),_0x5c3541[_0x2fff6d(0x1b1)](),_0x20c628(new Error('Server\x20startup\x20timeout')));},0x1f4);});}async function main(){const _0x4c663b=a0_0x563781;try{console['log'](_0x4c663b(0x1d2)),console[_0x4c663b(0x1ab)](_0x4c663b(0x1b6)),console[_0x4c663b(0x1ab)](_0x4c663b(0x1d2)),console['log']('');const _0x423b76=process[_0x4c663b(0x1c2)][_0x4c663b(0x1cf)](0x2);let _0x100ede=DEFAULT_HOST,_0xbfd9b6=DEFAULT_PORT;for(let _0x1ce3ff=0x0;_0x1ce3ff<_0x423b76[_0x4c663b(0x1af)];_0x1ce3ff++){if(_0x423b76[_0x1ce3ff]===_0x4c663b(0x1b3)&&_0x423b76[_0x1ce3ff+0x1])_0x100ede=_0x423b76[_0x1ce3ff+0x1],_0x1ce3ff++;else _0x423b76[_0x1ce3ff]===_0x4c663b(0x1b5)&&_0x423b76[_0x1ce3ff+0x1]&&(_0xbfd9b6=parseInt(_0x423b76[_0x1ce3ff+0x1],0xa),_0x1ce3ff++);}console[_0x4c663b(0x1ab)](_0x4c663b(0x1cb)+_0x100ede+':'+_0xbfd9b6+_0x4c663b(0x1ac));const _0x1a56fc=await isServerRunning(_0x100ede,_0xbfd9b6);!_0x1a56fc?(console[_0x4c663b(0x1ab)](_0x4c663b(0x1b4)),await startServer(_0x100ede,_0xbfd9b6)):console[_0x4c663b(0x1ab)](_0x4c663b(0x1cd)+_0x100ede+':'+_0xbfd9b6),console[_0x4c663b(0x1ab)](''),console[_0x4c663b(0x1ab)]('🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...'),console[_0x4c663b(0x1ab)](''),await new Promise(_0x173168=>setTimeout(_0x173168,0x1f4)),process.env.LOXIA_HOST=_0x100ede,process.env.LOXIA_PORT=_0xbfd9b6['toString'](),await import('../src/interfaces/terminal/index.js');}catch(_0x3f614f){console[_0x4c663b(0x1b9)](''),console['error'](_0x4c663b(0x1c7)),console['error']('\x20\x20',_0x3f614f[_0x4c663b(0x1d0)]),console[_0x4c663b(0x1b9)](''),console['error']('💡\x20Troubleshooting:'),console['error'](_0x4c663b(0x1d4)),console[_0x4c663b(0x1b9)]('\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js'),console[_0x4c663b(0x1b9)](_0x4c663b(0x1c3)),console[_0x4c663b(0x1b9)](''),process['exit'](0x1);}}main();
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0xe5e72d=a0_0x31df;(function(_0x72b42a,_0x2f45a2){const _0x140ea5=a0_0x31df,_0x5be3cb=_0x72b42a();while(!![]){try{const _0x183af0=parseInt(_0x140ea5(0xb0))/0x1*(parseInt(_0x140ea5(0xcc))/0x2)+parseInt(_0x140ea5(0xce))/0x3+-parseInt(_0x140ea5(0xaf))/0x4*(-parseInt(_0x140ea5(0xc1))/0x5)+parseInt(_0x140ea5(0xcb))/0x6+parseInt(_0x140ea5(0xc6))/0x7+-parseInt(_0x140ea5(0xc9))/0x8+-parseInt(_0x140ea5(0xb6))/0x9;if(_0x183af0===_0x2f45a2)break;else _0x5be3cb['push'](_0x5be3cb['shift']());}catch(_0x12573d){_0x5be3cb['push'](_0x5be3cb['shift']());}}}(a0_0xff02,0x1ab54));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0xe5e72d(0xad)][a0_0xe5e72d(0xbe)](0x2),options={'host':a0_0xe5e72d(0xc2),'port':0x1f90};function a0_0xff02(){const _0x1434c0=['\x20\x20-\x20Some\x20CI/CD\x20environments','Press\x20Ctrl+C\x20to\x20exit\x0a','Or\x20use\x20the\x20web\x20UI\x20instead:','log','slice','length','port','527515bHorfu','localhost','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','waitUntilExit','The\x20terminal\x20UI\x20cannot\x20run\x20in:','1286684ayzNXp','--host','host','1654872tiXRhY','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','669174Hvmaby','13286YUxoHk','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','11238NIGWlU','then','\x0aTerminal\x20UI\x20exited','argv','--help','4WqCzDv','3QDRORp','\x20\x20npm\x20run\x20terminal-ui','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\x20\x20npm\x20start','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','exit','974376UhxAYl','error','stdin','\x0aTerminal\x20UI\x20error:'];a0_0xff02=function(){return _0x1434c0;};return a0_0xff02();}function a0_0x31df(_0x8a2fe1,_0x208e1c){_0x8a2fe1=_0x8a2fe1-0xac;const _0xff028e=a0_0xff02();let _0x31df5b=_0xff028e[_0x8a2fe1];return _0x31df5b;}for(let i=0x0;i<args[a0_0xe5e72d(0xbf)];i++){const arg=args[i];if(arg===a0_0xe5e72d(0xc7)||arg==='-h')options['host']=args[++i];else{if(arg==='--port'||arg==='-p')options[a0_0xe5e72d(0xc0)]=parseInt(args[++i],0xa);else arg===a0_0xe5e72d(0xae)&&(console[a0_0xe5e72d(0xbd)](a0_0xe5e72d(0xca)),process['exit'](0x0));}}process.env.LOXIA_HOST&&(options[a0_0xe5e72d(0xc8)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0xe5e72d(0xc0)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0xe5e72d(0xb8)]['isTTY']&&(console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb4)),console[a0_0xe5e72d(0xb7)](''),console['error'](a0_0xe5e72d(0xc5)),console[a0_0xe5e72d(0xb7)]('\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xcd)),console['error'](a0_0xe5e72d(0xc3)),console['error'](a0_0xe5e72d(0xba)),console['error'](''),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb2)),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xb1)),console['error'](''),console[a0_0xe5e72d(0xb7)](a0_0xe5e72d(0xbc)),console['error'](a0_0xe5e72d(0xb3)),process['exit'](0x1));console['log']('Starting\x20Loxia\x20Terminal\x20UI...'),console[a0_0xe5e72d(0xbd)]('Connecting\x20to:\x20'+options[a0_0xe5e72d(0xc8)]+':'+options[a0_0xe5e72d(0xc0)]),console[a0_0xe5e72d(0xbd)](a0_0xe5e72d(0xbb));const instance=startTerminalUI(options);instance[a0_0xe5e72d(0xc4)]()[a0_0xe5e72d(0xcf)](()=>{const _0x56374f=a0_0xe5e72d;console['log'](_0x56374f(0xac)),process[_0x56374f(0xb5)](0x0);})['catch'](_0x257596=>{const _0x168eb6=a0_0xe5e72d;console[_0x168eb6(0xb7)](_0x168eb6(0xb9),_0x257596),process[_0x168eb6(0xb5)](0x1);});
3
+ const a0_0x43a567=a0_0x4687;(function(_0x4b128a,_0x175ddf){const _0x343911=a0_0x4687,_0x38794d=_0x4b128a();while(!![]){try{const _0x45b2ba=parseInt(_0x343911(0x113))/0x1*(parseInt(_0x343911(0x12d))/0x2)+parseInt(_0x343911(0x119))/0x3+-parseInt(_0x343911(0x118))/0x4*(-parseInt(_0x343911(0x129))/0x5)+-parseInt(_0x343911(0x12f))/0x6*(-parseInt(_0x343911(0x11b))/0x7)+-parseInt(_0x343911(0x127))/0x8*(-parseInt(_0x343911(0x10f))/0x9)+-parseInt(_0x343911(0x12e))/0xa+-parseInt(_0x343911(0x121))/0xb;if(_0x45b2ba===_0x175ddf)break;else _0x38794d['push'](_0x38794d['shift']());}catch(_0x31bbce){_0x38794d['push'](_0x38794d['shift']());}}}(a0_0x412f,0x86218));function a0_0x4687(_0x57f1ef,_0x2a1d03){_0x57f1ef=_0x57f1ef-0x10e;const _0x412f44=a0_0x412f();let _0x468741=_0x412f44[_0x57f1ef];return _0x468741;}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process['argv'][a0_0x43a567(0x131)](0x2),options={'host':a0_0x43a567(0x120),'port':0x1f90};for(let i=0x0;i<args[a0_0x43a567(0x124)];i++){const arg=args[i];if(arg===a0_0x43a567(0x11f)||arg==='-h')options[a0_0x43a567(0x11c)]=args[++i];else{if(arg===a0_0x43a567(0x111)||arg==='-p')options[a0_0x43a567(0x115)]=parseInt(args[++i],0xa);else arg==='--help'&&(console['log'](a0_0x43a567(0x130)),process[a0_0x43a567(0x112)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x43a567(0x11c)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x43a567(0x115)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x43a567(0x122)][a0_0x43a567(0x10e)]&&(console['error'](a0_0x43a567(0x128)),console[a0_0x43a567(0x123)](''),console[a0_0x43a567(0x123)]('The\x20terminal\x20UI\x20cannot\x20run\x20in:'),console[a0_0x43a567(0x123)](a0_0x43a567(0x114)),console['error'](a0_0x43a567(0x11d)),console[a0_0x43a567(0x123)]('\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)'),console[a0_0x43a567(0x123)]('\x20\x20-\x20Some\x20CI/CD\x20environments'),console[a0_0x43a567(0x123)](''),console['error'](a0_0x43a567(0x110)),console[a0_0x43a567(0x123)]('\x20\x20npm\x20run\x20terminal-ui'),console[a0_0x43a567(0x123)](''),console[a0_0x43a567(0x123)](a0_0x43a567(0x12c)),console[a0_0x43a567(0x123)](a0_0x43a567(0x12a)),process[a0_0x43a567(0x112)](0x1));console[a0_0x43a567(0x117)](a0_0x43a567(0x11e)),console[a0_0x43a567(0x117)](a0_0x43a567(0x126)+options[a0_0x43a567(0x11c)]+':'+options[a0_0x43a567(0x115)]),console['log'](a0_0x43a567(0x125));function a0_0x412f(){const _0x193cbc=['log','79168QEYHeb','2283990WHUoJU','\x0aTerminal\x20UI\x20exited','6686029jpKvsv','host','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','Starting\x20Loxia\x20Terminal\x20UI...','--host','localhost','31130176QcnRrh','stdin','error','length','Press\x20Ctrl+C\x20to\x20exit\x0a','Connecting\x20to:\x20','8EbvGsB','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','135CsdHos','\x20\x20npm\x20start','\x0aTerminal\x20UI\x20error:','Or\x20use\x20the\x20web\x20UI\x20instead:','2119402urKDor','704730DVMZVi','6HYFTXu','\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','slice','isTTY','1253943GLEpCf','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','--port','exit','1kFyeCF','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','port','waitUntilExit'];a0_0x412f=function(){return _0x193cbc;};return a0_0x412f();}const instance=startTerminalUI(options);instance[a0_0x43a567(0x116)]()['then'](()=>{const _0x1ff557=a0_0x43a567;console['log'](_0x1ff557(0x11a)),process[_0x1ff557(0x112)](0x0);})['catch'](_0x41abc4=>{const _0x3b5a21=a0_0x43a567;console[_0x3b5a21(0x123)](_0x3b5a21(0x12b),_0x41abc4),process[_0x3b5a21(0x112)](0x1);});
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x2743e1=a0_0x6195;(function(_0x52e7c8,_0x5858f8){const _0xab7645=a0_0x6195,_0x5547ac=_0x52e7c8();while(!![]){try{const _0x52d84b=-parseInt(_0xab7645(0xf2))/0x1*(-parseInt(_0xab7645(0x103))/0x2)+parseInt(_0xab7645(0x105))/0x3+-parseInt(_0xab7645(0xfa))/0x4*(parseInt(_0xab7645(0x118))/0x5)+parseInt(_0xab7645(0xec))/0x6+parseInt(_0xab7645(0xfd))/0x7*(parseInt(_0xab7645(0x10d))/0x8)+-parseInt(_0xab7645(0x108))/0x9*(-parseInt(_0xab7645(0xff))/0xa)+parseInt(_0xab7645(0xe8))/0xb*(-parseInt(_0xab7645(0x119))/0xc);if(_0x52d84b===_0x5858f8)break;else _0x5547ac['push'](_0x5547ac['shift']());}catch(_0x3f16e8){_0x5547ac['push'](_0x5547ac['shift']());}}}(a0_0x5cbe,0x4acbe));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x101243 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;function a0_0x6195(_0x1b9706,_0x12cedc){_0x1b9706=_0x1b9706-0xe6;const _0x5cbe17=a0_0x5cbe();let _0x61950c=_0x5cbe17[_0x1b9706];return _0x61950c;}let serverProcess=null;async function checkServerReady(_0x42910c=0xa,_0x431768=0x1f4){const _0x3969fd=a0_0x6195;for(let _0x52beb2=0x0;_0x52beb2<_0x42910c;_0x52beb2++){try{return await new Promise((_0x48a01d,_0x5c1496)=>{const _0xa1b03c=a0_0x6195,_0x5e1cbf=a0_0x101243[_0xa1b03c(0x117)](_0xa1b03c(0x10e)+SERVER_PORT+_0xa1b03c(0x100),_0x1ff39d=>{const _0x2f8746=_0xa1b03c;_0x1ff39d[_0x2f8746(0xee)]===0xc8?_0x48a01d():_0x5c1496(new Error(_0x2f8746(0x115)+_0x1ff39d['statusCode']));});_0x5e1cbf['on']('error',_0x5c1496),_0x5e1cbf[_0xa1b03c(0xfb)](0x3e8,()=>{const _0x5b3603=_0xa1b03c;_0x5e1cbf[_0x5b3603(0xeb)](),_0x5c1496(new Error(_0x5b3603(0x104)));});}),console[_0x3969fd(0x106)](_0x3969fd(0xed)),!![];}catch(_0x188aaf){_0x52beb2<_0x42910c-0x1&&await new Promise(_0x88acda=>setTimeout(_0x88acda,_0x431768));}}return console[_0x3969fd(0x106)](_0x3969fd(0x101)),![];}async function startServer(){return new Promise(_0x516727=>{const _0x2dfd62=a0_0x6195;console[_0x2dfd62(0x106)](_0x2dfd62(0x116));const _0x3f40fb=join(rootDir,_0x2dfd62(0xfe),_0x2dfd62(0xf6));serverProcess=spawn('node',[_0x3f40fb],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x2dfd62(0xf1),_0x2dfd62(0xe6),_0x2dfd62(0xe6)],'detached':![]}),serverProcess[_0x2dfd62(0xea)]['on']('data',_0x443bb6=>{const _0x2ece98=_0x2dfd62,_0x2b056b=_0x443bb6[_0x2ece98(0xf3)]()[_0x2ece98(0xf0)]();_0x2b056b&&console[_0x2ece98(0x106)](_0x2ece98(0x111)+_0x2b056b);}),serverProcess[_0x2dfd62(0x112)]['on'](_0x2dfd62(0xfc),_0x39c5c1=>{const _0x1be1b1=_0x2dfd62,_0x38f833=_0x39c5c1[_0x1be1b1(0xf3)]()[_0x1be1b1(0xf0)]();_0x38f833&&!_0x38f833['includes'](_0x1be1b1(0xf8))&&console[_0x1be1b1(0xf9)](_0x1be1b1(0x10a)+_0x38f833);}),serverProcess['on']('error',_0x57631a=>{const _0x2017e1=_0x2dfd62;console[_0x2017e1(0xf9)](_0x2017e1(0xf5),_0x57631a[_0x2017e1(0x109)]),process[_0x2017e1(0x11a)](0x1);}),serverProcess['on']('exit',(_0xcfeb4c,_0x10620f)=>{const _0x3a35b1=_0x2dfd62;_0xcfeb4c!==null&&_0xcfeb4c!==0x0&&(console['error'](_0x3a35b1(0xf4)+_0xcfeb4c),process[_0x3a35b1(0x11a)](_0xcfeb4c));}),setTimeout(_0x516727,STARTUP_WAIT);});}async function startTerminalUI(){const _0x2ac6b7=a0_0x6195;console[_0x2ac6b7(0x106)](_0x2ac6b7(0x113)),console['log']('');const _0x11d27d=join(rootDir,_0x2ac6b7(0x10f),'loxia-terminal.js'),_0x25ed0e=spawn('node',[_0x11d27d],{'cwd':rootDir,'env':{...process.env},'stdio':_0x2ac6b7(0x102)});return _0x25ed0e['on'](_0x2ac6b7(0xf9),_0x9db66=>{const _0x127c88=_0x2ac6b7;console[_0x127c88(0xf9)](_0x127c88(0x110),_0x9db66[_0x127c88(0x109)]),cleanup(),process['exit'](0x1);}),_0x25ed0e['on'](_0x2ac6b7(0x11a),_0x5bf66c=>{const _0x5df6b6=_0x2ac6b7;console[_0x5df6b6(0x106)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process[_0x5df6b6(0x11a)](_0x5bf66c||0x0);}),_0x25ed0e;}function cleanup(){const _0x4a5b99=a0_0x6195;serverProcess&&!serverProcess[_0x4a5b99(0x10c)]&&(console['log']('🛑\x20Stopping\x20server...'),serverProcess[_0x4a5b99(0xef)](_0x4a5b99(0x10b)),setTimeout(()=>{const _0xf3533a=_0x4a5b99;!serverProcess[_0xf3533a(0x10c)]&&serverProcess[_0xf3533a(0xef)](_0xf3533a(0xf7));},0x1388));}process['on']('SIGINT',()=>{const _0x27b957=a0_0x6195;console[_0x27b957(0x106)](_0x27b957(0xe7)),cleanup(),process[_0x27b957(0x11a)](0x0);}),process['on'](a0_0x2743e1(0x10b),()=>{const _0x53c2ca=a0_0x2743e1;console[_0x53c2ca(0x106)](_0x53c2ca(0xe9)),cleanup(),process[_0x53c2ca(0x11a)](0x0);}),process['on'](a0_0x2743e1(0x11a),()=>{cleanup();});async function main(){const _0x48e72d=a0_0x2743e1;console[_0x48e72d(0x106)](_0x48e72d(0x11b)),console[_0x48e72d(0x106)](_0x48e72d(0x107)),console[_0x48e72d(0x106)]('╚════════════════════════════════════════════════╝'),console[_0x48e72d(0x106)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x4b9793){console[_0x48e72d(0xf9)](_0x48e72d(0x114),_0x4b9793[_0x48e72d(0x109)]),cleanup(),process[_0x48e72d(0x11a)](0x1);}}function a0_0x5cbe(){const _0x46093b=['🖥️\x20\x20Starting\x20Terminal\x20UI...','Error\x20during\x20startup:','Server\x20returned\x20','🚀\x20Starting\x20Loxia\x20server...','get','5LWPZPG','36xCWaip','exit','╔════════════════════════════════════════════════╗','pipe','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','4111173fevhUX','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','stdout','destroy','2643024oYECjb','✅\x20Server\x20is\x20ready!','statusCode','kill','trim','ignore','1lGqFgP','toString','Server\x20exited\x20with\x20code\x20','Failed\x20to\x20start\x20server:','index.js','SIGKILL','ExperimentalWarning','error','326408ciPIxk','setTimeout','data','1750833glwrZl','src','233660suBGKb','/health','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','inherit','316346jnafwc','Timeout','1490517CWBJpk','log','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','63FqBEEU','message','[SERVER\x20ERROR]\x20','SIGTERM','killed','8knNStA','http://localhost:','bin','Failed\x20to\x20start\x20Terminal\x20UI:','[SERVER]\x20','stderr'];a0_0x5cbe=function(){return _0x46093b;};return a0_0x5cbe();}main();
3
+ const a0_0x2589d5=a0_0x15ff;(function(_0x4ae0a1,_0x3d167c){const _0x201ef5=a0_0x15ff,_0x4232d9=_0x4ae0a1();while(!![]){try{const _0x39924a=-parseInt(_0x201ef5(0xd5))/0x1*(parseInt(_0x201ef5(0xd1))/0x2)+-parseInt(_0x201ef5(0xdc))/0x3*(-parseInt(_0x201ef5(0xb7))/0x4)+parseInt(_0x201ef5(0xc3))/0x5+-parseInt(_0x201ef5(0xd8))/0x6+-parseInt(_0x201ef5(0xcd))/0x7+-parseInt(_0x201ef5(0xce))/0x8+parseInt(_0x201ef5(0xd3))/0x9;if(_0x39924a===_0x3d167c)break;else _0x4232d9['push'](_0x4232d9['shift']());}catch(_0x20296d){_0x4232d9['push'](_0x4232d9['shift']());}}}(a0_0x2205,0xa9853));function a0_0x15ff(_0x56c1b4,_0x5d23ff){_0x56c1b4=_0x56c1b4-0xae;const _0x220557=a0_0x2205();let _0x15ff7d=_0x220557[_0x56c1b4];return _0x15ff7d;}import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x55910b 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(_0xa0f51c=0xa,_0x2b8a37=0x1f4){const _0x5414d3=a0_0x15ff;for(let _0x987bfb=0x0;_0x987bfb<_0xa0f51c;_0x987bfb++){try{return await new Promise((_0x3b69aa,_0x56ed03)=>{const _0x3366da=a0_0x15ff,_0x5b3a6d=a0_0x55910b[_0x3366da(0xc1)](_0x3366da(0xc8)+SERVER_PORT+_0x3366da(0xb0),_0x1e39ef=>{const _0xb3718b=_0x3366da;_0x1e39ef[_0xb3718b(0xc0)]===0xc8?_0x3b69aa():_0x56ed03(new Error('Server\x20returned\x20'+_0x1e39ef[_0xb3718b(0xc0)]));});_0x5b3a6d['on']('error',_0x56ed03),_0x5b3a6d[_0x3366da(0xb3)](0x3e8,()=>{const _0x4bd704=_0x3366da;_0x5b3a6d[_0x4bd704(0xb5)](),_0x56ed03(new Error('Timeout'));});}),console[_0x5414d3(0xd7)](_0x5414d3(0xb4)),!![];}catch(_0xbf74e8){_0x987bfb<_0xa0f51c-0x1&&await new Promise(_0x31e987=>setTimeout(_0x31e987,_0x2b8a37));}}return console[_0x5414d3(0xd7)]('⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...'),![];}async function startServer(){return new Promise(_0x3fe1a0=>{const _0x150fa3=a0_0x15ff;console[_0x150fa3(0xd7)](_0x150fa3(0xde));const _0x335820=join(rootDir,_0x150fa3(0xaf),'index.js');serverProcess=spawn(_0x150fa3(0xc4),[_0x335820],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x150fa3(0xbd),_0x150fa3(0xbc),_0x150fa3(0xbc)],'detached':![]}),serverProcess[_0x150fa3(0xdf)]['on'](_0x150fa3(0xb2),_0x2acef7=>{const _0x3ec0e9=_0x150fa3,_0x324e2a=_0x2acef7[_0x3ec0e9(0xd6)]()[_0x3ec0e9(0xd9)]();_0x324e2a&&console[_0x3ec0e9(0xd7)](_0x3ec0e9(0xda)+_0x324e2a);}),serverProcess[_0x150fa3(0xc2)]['on'](_0x150fa3(0xb2),_0x2fff07=>{const _0x56de25=_0x150fa3,_0x1d473a=_0x2fff07[_0x56de25(0xd6)]()['trim']();_0x1d473a&&!_0x1d473a[_0x56de25(0xbf)](_0x56de25(0xd2))&&console[_0x56de25(0xc9)](_0x56de25(0xcf)+_0x1d473a);}),serverProcess['on']('error',_0x27d782=>{const _0x4dce53=_0x150fa3;console[_0x4dce53(0xc9)](_0x4dce53(0xb9),_0x27d782[_0x4dce53(0xca)]),process[_0x4dce53(0xdb)](0x1);}),serverProcess['on'](_0x150fa3(0xdb),(_0x37fd44,_0x490ceb)=>{const _0x230d8a=_0x150fa3;_0x37fd44!==null&&_0x37fd44!==0x0&&(console[_0x230d8a(0xc9)]('Server\x20exited\x20with\x20code\x20'+_0x37fd44),process[_0x230d8a(0xdb)](_0x37fd44));}),setTimeout(_0x3fe1a0,STARTUP_WAIT);});}async function startTerminalUI(){const _0x1d7e65=a0_0x15ff;console[_0x1d7e65(0xd7)](_0x1d7e65(0xb6)),console['log']('');const _0x1a9ee5=join(rootDir,_0x1d7e65(0xc5),'loxia-terminal.js'),_0x1a1d30=spawn(_0x1d7e65(0xc4),[_0x1a9ee5],{'cwd':rootDir,'env':{...process.env},'stdio':_0x1d7e65(0xae)});return _0x1a1d30['on'](_0x1d7e65(0xc9),_0x183a25=>{const _0x45ef0e=_0x1d7e65;console[_0x45ef0e(0xc9)](_0x45ef0e(0xdd),_0x183a25[_0x45ef0e(0xca)]),cleanup(),process[_0x45ef0e(0xdb)](0x1);}),_0x1a1d30['on'](_0x1d7e65(0xdb),_0x138d6c=>{const _0x47ed49=_0x1d7e65;console[_0x47ed49(0xd7)](_0x47ed49(0xc6)),cleanup(),process[_0x47ed49(0xdb)](_0x138d6c||0x0);}),_0x1a1d30;}function cleanup(){const _0x3bc417=a0_0x15ff;serverProcess&&!serverProcess[_0x3bc417(0xb1)]&&(console[_0x3bc417(0xd7)](_0x3bc417(0xe0)),serverProcess['kill']('SIGTERM'),setTimeout(()=>{const _0x142c1e=_0x3bc417;!serverProcess[_0x142c1e(0xb1)]&&serverProcess['kill'](_0x142c1e(0xb8));},0x1388));}process['on'](a0_0x2589d5(0xbe),()=>{const _0x13c155=a0_0x2589d5;console[_0x13c155(0xd7)](_0x13c155(0xd4)),cleanup(),process[_0x13c155(0xdb)](0x0);}),process['on'](a0_0x2589d5(0xcc),()=>{const _0x23bcba=a0_0x2589d5;console['log'](_0x23bcba(0xc7)),cleanup(),process[_0x23bcba(0xdb)](0x0);}),process['on'](a0_0x2589d5(0xdb),()=>{cleanup();});async function main(){const _0x26984a=a0_0x2589d5;console[_0x26984a(0xd7)](_0x26984a(0xcb)),console[_0x26984a(0xd7)](_0x26984a(0xd0)),console[_0x26984a(0xd7)](_0x26984a(0xbb)),console['log']('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x2dd87e){console[_0x26984a(0xc9)](_0x26984a(0xba),_0x2dd87e[_0x26984a(0xca)]),cleanup(),process['exit'](0x1);}}main();function a0_0x2205(){const _0x147c4e=['killed','data','setTimeout','✅\x20Server\x20is\x20ready!','destroy','🖥️\x20\x20Starting\x20Terminal\x20UI...','2228zzIWms','SIGKILL','Failed\x20to\x20start\x20server:','Error\x20during\x20startup:','╚════════════════════════════════════════════════╝','pipe','ignore','SIGINT','includes','statusCode','get','stderr','2203815LcWXFn','node','bin','\x0a👋\x20Terminal\x20UI\x20closed.','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','http://localhost:','error','message','╔════════════════════════════════════════════════╗','SIGTERM','6425398sQGjww','1893056abMOKo','[SERVER\x20ERROR]\x20','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','398iQDIhB','ExperimentalWarning','27322713JiMocF','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','4468ajKwZA','toString','log','6473484BhZksS','trim','[SERVER]\x20','exit','1833PYaAmQ','Failed\x20to\x20start\x20Terminal\x20UI:','🚀\x20Starting\x20Loxia\x20server...','stdout','🛑\x20Stopping\x20server...','inherit','src','/health'];a0_0x2205=function(){return _0x147c4e;};return a0_0x2205();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "2.0.5",
3
+ "version": "2.0.6",
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
- function a0_0x2b01(_0x414be2,_0xdd83d3){_0x414be2=_0x414be2-0xc1;const _0x383914=a0_0x3839();let _0x2b01a0=_0x383914[_0x414be2];return _0x2b01a0;}const a0_0x40f9f0=a0_0x2b01;(function(_0x2afe4d,_0x213248){const _0x42c4f6=a0_0x2b01,_0x5d0fc0=_0x2afe4d();while(!![]){try{const _0x2e427d=parseInt(_0x42c4f6(0xfb))/0x1*(-parseInt(_0x42c4f6(0x10a))/0x2)+-parseInt(_0x42c4f6(0xee))/0x3+-parseInt(_0x42c4f6(0xe2))/0x4+-parseInt(_0x42c4f6(0xc7))/0x5+parseInt(_0x42c4f6(0xcb))/0x6+parseInt(_0x42c4f6(0xf2))/0x7*(parseInt(_0x42c4f6(0xfc))/0x8)+parseInt(_0x42c4f6(0xce))/0x9*(parseInt(_0x42c4f6(0xec))/0xa);if(_0x2e427d===_0x213248)break;else _0x5d0fc0['push'](_0x5d0fc0['shift']());}catch(_0x36d4a3){_0x5d0fc0['push'](_0x5d0fc0['shift']());}}}(a0_0x3839,0xe6e17));import{exec}from'child_process';import{promisify}from'util';import a0_0x1b406d from'https';import a0_0x519d56 from'http';import a0_0x4894c4 from'fs';import a0_0x3680d8 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x3680d8['dirname'](__filename),SCANNER_DIR=a0_0x3680d8[a0_0x40f9f0(0xda)](__dirname,'..',a0_0x40f9f0(0x104),a0_0x40f9f0(0xdc)),SEMGREP_VERSION=a0_0x40f9f0(0x108);console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0xc8)),console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0xdb)),console['log'](a0_0x40f9f0(0xe7)+process['platform']+'\x20('+process['arch']+')'),console[a0_0x40f9f0(0x107)](a0_0x40f9f0(0x103));async function installScanners(){const _0x144dd4=a0_0x40f9f0;await a0_0x4894c4['promises'][_0x144dd4(0xc2)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x144dd4(0x107)](_0x144dd4(0xde)),console[_0x144dd4(0x107)](_0x144dd4(0xd7)),console[_0x144dd4(0x107)](_0x144dd4(0x103));}async function checkESLintSecurity(){const _0x2c28e9=a0_0x40f9f0;console[_0x2c28e9(0x107)]('📦\x20Checking\x20ESLint\x20Security\x20Plugin...');try{await import(_0x2c28e9(0xca)),console['log'](_0x2c28e9(0xc5));}catch(_0x3ddc67){console['log']('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x2c28e9(0x107)](_0x2c28e9(0xd1));}}async function installSemgrep(){const _0x6675d9=a0_0x40f9f0;console[_0x6675d9(0x107)](_0x6675d9(0xed));const _0x1598b5=process[_0x6675d9(0xd6)],_0x5236e7=process[_0x6675d9(0xc9)];try{const _0x2921e9=await execAsync('semgrep\x20--version',{'timeout':0x1388});console[_0x6675d9(0x107)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x2921e9[_0x6675d9(0xd5)][_0x6675d9(0xe4)]()),console[_0x6675d9(0x107)](_0x6675d9(0xeb));return;}catch(_0x481e1b){console['log'](_0x6675d9(0xef));}const _0xab72c7=getSemgrepBinaryInfo(_0x1598b5,_0x5236e7);if(!_0xab72c7){console[_0x6675d9(0x107)](_0x6675d9(0xfd)+_0x1598b5+'-'+_0x5236e7),console['log']('\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a');return;}try{const _0x2b0d31=a0_0x3680d8[_0x6675d9(0xda)](SCANNER_DIR,_0x6675d9(0xe3));console[_0x6675d9(0x107)](_0x6675d9(0x102)+_0xab72c7[_0x6675d9(0xcd)]+'...'),await downloadFile(_0xab72c7['url'],_0x2b0d31),await a0_0x4894c4[_0x6675d9(0xe5)][_0x6675d9(0xfa)](_0x2b0d31,0x1ed),console[_0x6675d9(0x107)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x6675d9(0x107)]('\x20\x20\x20Location:\x20'+_0x2b0d31+'\x0a'),console['log']('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console[_0x6675d9(0x107)](_0x6675d9(0xff));}catch(_0x534b51){console['log'](_0x6675d9(0xf9)+_0x534b51['message']),console[_0x6675d9(0x107)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0xfd1399,_0x3b90a9){return null;}function a0_0x3839(){const _0x35c36e=['\x20\x20Platform:\x20','startsWith','\x20installed\x20successfully','\x20\x20\x20✅\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','23329710yzTZuu','🔍\x20Installing\x20Semgrep...','3758622NOrfsD','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','bandit','python3','7779191OTXKUf','headers','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','yamllint','get','/opt/homebrew','--user','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','chmod','55wKEVjR','8HmHrGw','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20pip\x20install\x20semgrep\x0a','error','python3\x20--version','\x20\x20\x20Downloading\x20from\x20','═══════════════════════════════════════════════════════════\x0a','node_modules','catch','...','log','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','25502PwbAUt','includes','python\x20--version','mkdir','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','statusCode','645365OUaIuY','═══════════════════════════════════════════════════════════','arch','eslint-plugin-security','2074140NtDuTl','unlink','url','9dyqxjS','Failed\x20to\x20download:\x20HTTP\x20','\x20already\x20installed','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','close','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','message','stdout','platform','\x20\x20Installation\x20Complete','🐍\x20Checking\x20Python\x20scanners...','\x20-m\x20pip\x20show\x20','join','\x20\x20Installing\x20Security\x20Scanners','.scanners','\x20\x20\x20Installing\x20','\x0a═══════════════════════════════════════════════════════════','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','exit','finish','3044140QxaWpo','semgrep','trim','promises','pip-audit'];a0_0x3839=function(){return _0x35c36e;};return a0_0x3839();}async function installPythonScanners(){const _0x5ae26e=a0_0x40f9f0;console[_0x5ae26e(0x107)](_0x5ae26e(0xd8));let _0x8a8eae=null;try{await execAsync(_0x5ae26e(0x101),{'timeout':0x1388}),_0x8a8eae=_0x5ae26e(0xf1);}catch(_0x5ec49e){try{await execAsync(_0x5ae26e(0xc1),{'timeout':0x1388}),_0x8a8eae='python';}catch(_0x1a4a2a){console[_0x5ae26e(0x107)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0x5ae26e(0x107)](_0x5ae26e(0xfe)),console[_0x5ae26e(0x107)](_0x5ae26e(0xc4));return;}}console[_0x5ae26e(0x107)]('\x20\x20\x20✅\x20Python\x20found:\x20'+_0x8a8eae),await installViaPip(_0x5ae26e(0xe3),_0x8a8eae),await installViaPip(_0x5ae26e(0xf0),_0x8a8eae),await installViaPip(_0x5ae26e(0xe6),_0x8a8eae),await installViaPip('checkov',_0x8a8eae),await installViaPip(_0x5ae26e(0xf5),_0x8a8eae),console[_0x5ae26e(0x107)]('');}async function isHomebrewPython(_0x486606){const _0x12366b=a0_0x40f9f0;try{const {stdout:_0x28fd20}=await execAsync(_0x486606+_0x12366b(0xdf),{'timeout':0x1388});return _0x28fd20[_0x12366b(0x10b)](_0x12366b(0xf7))||_0x28fd20[_0x12366b(0x10b)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x2b9b70,_0x24ed1a){const _0x458a74=a0_0x40f9f0;try{const _0x289a0d=await execAsync(_0x24ed1a+_0x458a74(0xd9)+_0x2b9b70,{'timeout':0x1388});return console['log']('\x20\x20\x20✅\x20'+_0x2b9b70+_0x458a74(0xd0)),!![];}catch(_0x1147eb){console['log'](_0x458a74(0xdd)+_0x2b9b70+_0x458a74(0x106));try{const _0x465c11=await isHomebrewPython(_0x24ed1a),_0x2ddddd=_0x465c11?'':_0x458a74(0xf8),_0x2f462c=(_0x24ed1a+'\x20-m\x20pip\x20install\x20'+_0x2ddddd+'\x20'+_0x2b9b70)['replace'](/\s+/g,'\x20')[_0x458a74(0xe4)]();return await execAsync(_0x2f462c,{'timeout':0xea60}),console[_0x458a74(0x107)](_0x458a74(0xea)+_0x2b9b70+_0x458a74(0xe9)),!![];}catch(_0x226af3){return console['log'](_0x458a74(0x109)+_0x2b9b70+':\x20'+_0x226af3[_0x458a74(0xd4)]),console[_0x458a74(0x107)](_0x458a74(0xf4)+_0x2b9b70),![];}}}async function downloadFile(_0x49e21d,_0x447985){return new Promise((_0x131087,_0x477279)=>{const _0x4fb9d0=a0_0x2b01,_0x1ed955=_0x49e21d[_0x4fb9d0(0xe8)]('https')?a0_0x1b406d:a0_0x519d56;_0x1ed955[_0x4fb9d0(0xf6)](_0x49e21d,_0x2a574a=>{const _0x583367=_0x4fb9d0;if(_0x2a574a['statusCode']===0x12e||_0x2a574a[_0x583367(0xc6)]===0x12d){downloadFile(_0x2a574a[_0x583367(0xf3)]['location'],_0x447985)['then'](_0x131087)[_0x583367(0x105)](_0x477279);return;}if(_0x2a574a[_0x583367(0xc6)]!==0xc8){_0x477279(new Error(_0x583367(0xcf)+_0x2a574a[_0x583367(0xc6)]));return;}const _0x442578=createWriteStream(_0x447985);_0x2a574a['pipe'](_0x442578),_0x442578['on'](_0x583367(0xe1),()=>{const _0x47231a=_0x583367;_0x442578[_0x47231a(0xd2)](),_0x131087();}),_0x442578['on'](_0x583367(0x100),_0xedb219=>{const _0x35b9f6=_0x583367;a0_0x4894c4[_0x35b9f6(0xcc)](_0x447985,()=>{}),_0x477279(_0xedb219);});})['on']('error',_0x477279);});}installScanners()['catch'](_0x3c9ad2=>{const _0x5e4176=a0_0x40f9f0;console[_0x5e4176(0x100)]('❌\x20Installation\x20failed:',_0x3c9ad2[_0x5e4176(0xd4)]),console[_0x5e4176(0x100)]('\x0aYou\x20can\x20manually\x20install\x20scanners:'),console[_0x5e4176(0x100)](_0x5e4176(0xd3)),console[_0x5e4176(0x100)](_0x5e4176(0xc3)),process[_0x5e4176(0xe0)](0x0);});
2
+ const a0_0x59807b=a0_0x5a87;(function(_0x58d326,_0x220031){const _0xa8523c=a0_0x5a87,_0x195cbd=_0x58d326();while(!![]){try{const _0x17b978=parseInt(_0xa8523c(0x19b))/0x1*(parseInt(_0xa8523c(0x1c2))/0x2)+parseInt(_0xa8523c(0x1b1))/0x3*(parseInt(_0xa8523c(0x1e4))/0x4)+-parseInt(_0xa8523c(0x1ce))/0x5+-parseInt(_0xa8523c(0x1b6))/0x6*(parseInt(_0xa8523c(0x1e6))/0x7)+parseInt(_0xa8523c(0x1a9))/0x8*(parseInt(_0xa8523c(0x1ad))/0x9)+-parseInt(_0xa8523c(0x1ec))/0xa*(-parseInt(_0xa8523c(0x1e1))/0xb)+-parseInt(_0xa8523c(0x1d6))/0xc*(parseInt(_0xa8523c(0x1a6))/0xd);if(_0x17b978===_0x220031)break;else _0x195cbd['push'](_0x195cbd['shift']());}catch(_0x537855){_0x195cbd['push'](_0x195cbd['shift']());}}}(a0_0x20f4,0x92b95));function a0_0x20f4(){const _0x29bd38=['python','\x20installed\x20successfully','dirname','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','\x20\x20\x20✅\x20','arch','\x20\x20\x20Location:\x20','349921bscZDG','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20\x20Installing\x20Security\x20Scanners','68MvIAxl','═══════════════════════════════════════════════════════════','5332901rxMxQX','join','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','statusCode','log','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','130KkhnUM','\x20\x20Platform:\x20','python\x20--version','503999srbAvJ','unlink','catch','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','python3\x20--version','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','stdout','node_modules','\x20\x20\x20pip\x20install\x20semgrep\x0a','includes','--user','26078rQRkUl','\x0aYou\x20can\x20manually\x20install\x20scanners:','❌\x20Installation\x20failed:','8RJMVmt','semgrep','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','promises','10320246krVfCi','...','replace','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','68097oZnmTz','location','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','checkov','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','6sBnUhA','https','🔍\x20Installing\x20Semgrep...','trim','chmod','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','message','═══════════════════════════════════════════════════════════\x0a','then','Failed\x20to\x20download:\x20HTTP\x20','\x20already\x20installed','.scanners','2ymhDLC','close','error','🐍\x20Checking\x20Python\x20scanners...','\x20-m\x20pip\x20show\x20','semgrep\x20--version','v1.55.0','python3','pipe','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','4924945FRjnua','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','platform','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','\x20\x20\x20Downloading\x20from\x20','get','eslint-plugin-security','612MjiewJ','\x20\x20\x20✅\x20Python\x20found:\x20','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','url'];a0_0x20f4=function(){return _0x29bd38;};return a0_0x20f4();}import{exec}from'child_process';import{promisify}from'util';import a0_0x308df8 from'https';import a0_0x541c11 from'http';import a0_0x21af6e from'fs';import a0_0x3248f6 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';function a0_0x5a87(_0x1a9a95,_0x4843d2){_0x1a9a95=_0x1a9a95-0x19b;const _0x20f495=a0_0x20f4();let _0x5a872e=_0x20f495[_0x1a9a95];return _0x5a872e;}const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x3248f6[a0_0x59807b(0x1dc)](__filename),SCANNER_DIR=a0_0x3248f6[a0_0x59807b(0x1e7)](__dirname,'..',a0_0x59807b(0x1a2),a0_0x59807b(0x1c1)),SEMGREP_VERSION=a0_0x59807b(0x1c8);console[a0_0x59807b(0x1ea)](a0_0x59807b(0x1e5)),console[a0_0x59807b(0x1ea)](a0_0x59807b(0x1e3)),console['log'](a0_0x59807b(0x1ed)+process['platform']+'\x20('+process[a0_0x59807b(0x1df)]+')'),console[a0_0x59807b(0x1ea)]('═══════════════════════════════════════════════════════════\x0a');async function installScanners(){const _0x20a5f3=a0_0x59807b;await a0_0x21af6e['promises']['mkdir'](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x20a5f3(0x1ea)]('\x0a═══════════════════════════════════════════════════════════'),console['log']('\x20\x20Installation\x20Complete'),console['log'](_0x20a5f3(0x1bd));}async function checkESLintSecurity(){const _0x16ecfb=a0_0x59807b;console['log'](_0x16ecfb(0x1eb));try{await import(_0x16ecfb(0x1d5)),console[_0x16ecfb(0x1ea)](_0x16ecfb(0x1b0));}catch(_0xfe8750){console[_0x16ecfb(0x1ea)](_0x16ecfb(0x1cc)),console[_0x16ecfb(0x1ea)](_0x16ecfb(0x1a0));}}async function installSemgrep(){const _0x44eba8=a0_0x59807b;console[_0x44eba8(0x1ea)](_0x44eba8(0x1b8));const _0x4817eb=process[_0x44eba8(0x1d1)],_0x49a342=process[_0x44eba8(0x1df)];try{const _0x8e6eaa=await execAsync(_0x44eba8(0x1c7),{'timeout':0x1388});console[_0x44eba8(0x1ea)](_0x44eba8(0x1cf)+_0x8e6eaa[_0x44eba8(0x1a1)][_0x44eba8(0x1b9)]()),console[_0x44eba8(0x1ea)](_0x44eba8(0x1d0));return;}catch(_0x5c9249){console[_0x44eba8(0x1ea)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x126597=getSemgrepBinaryInfo(_0x4817eb,_0x49a342);if(!_0x126597){console[_0x44eba8(0x1ea)](_0x44eba8(0x1dd)+_0x4817eb+'-'+_0x49a342),console[_0x44eba8(0x1ea)](_0x44eba8(0x1e8));return;}try{const _0x5e8ec8=a0_0x3248f6[_0x44eba8(0x1e7)](SCANNER_DIR,_0x44eba8(0x1aa));console[_0x44eba8(0x1ea)](_0x44eba8(0x1d3)+_0x126597[_0x44eba8(0x1d9)]+_0x44eba8(0x1ae)),await downloadFile(_0x126597[_0x44eba8(0x1d9)],_0x5e8ec8),await a0_0x21af6e[_0x44eba8(0x1ac)][_0x44eba8(0x1ba)](_0x5e8ec8,0x1ed),console[_0x44eba8(0x1ea)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x44eba8(0x1ea)](_0x44eba8(0x1e0)+_0x5e8ec8+'\x0a'),console[_0x44eba8(0x1ea)](_0x44eba8(0x1d8)),console['log'](_0x44eba8(0x1a3));}catch(_0x384b0f){console['log'](_0x44eba8(0x1e2)+_0x384b0f[_0x44eba8(0x1bc)]),console[_0x44eba8(0x1ea)](_0x44eba8(0x1b3));}}function getSemgrepBinaryInfo(_0x234435,_0x29648a){return null;}async function installPythonScanners(){const _0x2de610=a0_0x59807b;console[_0x2de610(0x1ea)](_0x2de610(0x1c5));let _0x2f04d8=null;try{await execAsync(_0x2de610(0x19f),{'timeout':0x1388}),_0x2f04d8=_0x2de610(0x1c9);}catch(_0x2c09ec){try{await execAsync(_0x2de610(0x1ee),{'timeout':0x1388}),_0x2f04d8=_0x2de610(0x1da);}catch(_0x4332ca){console[_0x2de610(0x1ea)](_0x2de610(0x1bb)),console[_0x2de610(0x1ea)](_0x2de610(0x19e)),console[_0x2de610(0x1ea)]('\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a');return;}}console[_0x2de610(0x1ea)](_0x2de610(0x1d7)+_0x2f04d8),await installViaPip(_0x2de610(0x1aa),_0x2f04d8),await installViaPip('bandit',_0x2f04d8),await installViaPip('pip-audit',_0x2f04d8),await installViaPip(_0x2de610(0x1b4),_0x2f04d8),await installViaPip('yamllint',_0x2f04d8),console['log']('');}async function isHomebrewPython(_0x1333e7){const _0x17c997=a0_0x59807b;try{const {stdout:_0x45bed6}=await execAsync(_0x1333e7+_0x17c997(0x1cb),{'timeout':0x1388});return _0x45bed6[_0x17c997(0x1a4)]('/opt/homebrew')||_0x45bed6[_0x17c997(0x1a4)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x15aa2a,_0x589124){const _0x10562b=a0_0x59807b;try{const _0x1f28ac=await execAsync(_0x589124+_0x10562b(0x1c6)+_0x15aa2a,{'timeout':0x1388});return console[_0x10562b(0x1ea)]('\x20\x20\x20✅\x20'+_0x15aa2a+_0x10562b(0x1c0)),!![];}catch(_0xf958e6){console[_0x10562b(0x1ea)]('\x20\x20\x20Installing\x20'+_0x15aa2a+_0x10562b(0x1ae));try{const _0x489996=await isHomebrewPython(_0x589124),_0x5a13e9=_0x489996?'':_0x10562b(0x1a5),_0x1661b6=(_0x589124+'\x20-m\x20pip\x20install\x20'+_0x5a13e9+'\x20'+_0x15aa2a)[_0x10562b(0x1af)](/\s+/g,'\x20')[_0x10562b(0x1b9)]();return await execAsync(_0x1661b6,{'timeout':0xea60}),console[_0x10562b(0x1ea)](_0x10562b(0x1de)+_0x15aa2a+_0x10562b(0x1db)),!![];}catch(_0x2497f2){return console['log'](_0x10562b(0x1cd)+_0x15aa2a+':\x20'+_0x2497f2[_0x10562b(0x1bc)]),console['log'](_0x10562b(0x1d2)+_0x15aa2a),![];}}}async function downloadFile(_0x504253,_0x311a32){return new Promise((_0xfc2d48,_0x452fa1)=>{const _0x129fdb=a0_0x5a87,_0x3d4147=_0x504253['startsWith'](_0x129fdb(0x1b7))?a0_0x308df8:a0_0x541c11;_0x3d4147[_0x129fdb(0x1d4)](_0x504253,_0x1a6add=>{const _0xa78d95=_0x129fdb;if(_0x1a6add[_0xa78d95(0x1e9)]===0x12e||_0x1a6add[_0xa78d95(0x1e9)]===0x12d){downloadFile(_0x1a6add['headers'][_0xa78d95(0x1b2)],_0x311a32)[_0xa78d95(0x1be)](_0xfc2d48)[_0xa78d95(0x19d)](_0x452fa1);return;}if(_0x1a6add[_0xa78d95(0x1e9)]!==0xc8){_0x452fa1(new Error(_0xa78d95(0x1bf)+_0x1a6add[_0xa78d95(0x1e9)]));return;}const _0xeefeb2=createWriteStream(_0x311a32);_0x1a6add[_0xa78d95(0x1ca)](_0xeefeb2),_0xeefeb2['on']('finish',()=>{const _0x2324d2=_0xa78d95;_0xeefeb2[_0x2324d2(0x1c3)](),_0xfc2d48();}),_0xeefeb2['on'](_0xa78d95(0x1c4),_0x3bec62=>{const _0x3cf421=_0xa78d95;a0_0x21af6e[_0x3cf421(0x19c)](_0x311a32,()=>{}),_0x452fa1(_0x3bec62);});})['on']('error',_0x452fa1);});}installScanners()['catch'](_0x58a672=>{const _0x10d4b9=a0_0x59807b;console['error'](_0x10d4b9(0x1a8),_0x58a672['message']),console[_0x10d4b9(0x1c4)](_0x10d4b9(0x1a7)),console[_0x10d4b9(0x1c4)](_0x10d4b9(0x1ab)),console[_0x10d4b9(0x1c4)](_0x10d4b9(0x1b5)),process['exit'](0x0);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function a0_0x1c22(_0x410e78,_0x131bed){_0x410e78=_0x410e78-0xd4;const _0x515849=a0_0x5158();let _0x1c22a0=_0x515849[_0x410e78];return _0x1c22a0;}const a0_0x366c75=a0_0x1c22;(function(_0x2e05e1,_0x387c48){const _0x1ca94f=a0_0x1c22,_0xba7aca=_0x2e05e1();while(!![]){try{const _0x56a035=-parseInt(_0x1ca94f(0xd6))/0x1+-parseInt(_0x1ca94f(0xd9))/0x2*(parseInt(_0x1ca94f(0xec))/0x3)+parseInt(_0x1ca94f(0xd8))/0x4*(parseInt(_0x1ca94f(0xf4))/0x5)+parseInt(_0x1ca94f(0xe8))/0x6+-parseInt(_0x1ca94f(0xdc))/0x7*(-parseInt(_0x1ca94f(0xfd))/0x8)+parseInt(_0x1ca94f(0xd4))/0x9*(-parseInt(_0x1ca94f(0xe6))/0xa)+parseInt(_0x1ca94f(0xfc))/0xb*(parseInt(_0x1ca94f(0xd5))/0xc);if(_0x56a035===_0x387c48)break;else _0xba7aca['push'](_0xba7aca['shift']());}catch(_0x290d4d){_0xba7aca['push'](_0xba7aca['shift']());}}}(a0_0x5158,0xbd1eb));const {spawn,execSync}=require('child_process'),path=require(a0_0x366c75(0xda)),fs=require('fs'),logFile=path[a0_0x366c75(0xe4)](__dirname,a0_0x366c75(0xf2));function log(_0x11cf66){const _0x3ef3b4=a0_0x366c75,_0xd26f86=new Date()['toISOString'](),_0x96823='['+_0xd26f86+']\x20'+_0x11cf66+'\x0a';console[_0x3ef3b4(0xee)](_0x11cf66);try{fs[_0x3ef3b4(0xe3)](logFile,_0x96823);}catch(_0xd7881b){}}log('[Watchdog]\x20Script\x20loaded');function a0_0x5158(){const _0x2d68ce=['\x20still\x20running\x20after\x20','platform','now','catch','784454BhDsKK','16bVrZov','--command','[Watchdog]\x20Parent\x20process\x20','--pid','5651766fQZQpe','276TFLeTX','837769Cvduii','ms\x20before\x20restart...','4jfnnuj','5278OltxQV','path','exit','432026rsXbCF','unref','message','[Watchdog]\x20Waiting\x20','delay','loxia\x20web','split','appendFileSync','join','ms,\x20proceeding\x20anyway','20EeAxiO','\x20to\x20exit...','4352508mlaGyC','[Watchdog]\x20Started\x20with\x20options:','command','[Watchdog]\x20Error:\x20','1257lSFZoZ','[Watchdog]\x20Executing:\x20','log','\x20has\x20terminated','slice','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','watchdog.log','pid','7425085aAHAyJ','[Watchdog]\x20Watchdog\x20exiting...','kill','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'];a0_0x5158=function(){return _0x2d68ce;};return a0_0x5158();}function parseArgs(){const _0x2cc264=a0_0x366c75,_0x2fbac9=process['argv'][_0x2cc264(0xf0)](0x2),_0x366ad6={'delay':0x1388,'command':'loxia\x20web','pid':null};for(let _0x493faf=0x0;_0x493faf<_0x2fbac9['length'];_0x493faf++){switch(_0x2fbac9[_0x493faf]){case'--delay':_0x366ad6[_0x2cc264(0xe0)]=parseInt(_0x2fbac9[++_0x493faf],0xa)||0x1388;break;case _0x2cc264(0xfe):_0x366ad6[_0x2cc264(0xea)]=_0x2fbac9[++_0x493faf]||_0x2cc264(0xe1);break;case _0x2cc264(0x100):_0x366ad6['pid']=parseInt(_0x2fbac9[++_0x493faf],0xa)||null;break;}}return _0x366ad6;}function isProcessRunning(_0x2e7f0e){const _0x428140=a0_0x366c75;try{return process[_0x428140(0xf6)](_0x2e7f0e,0x0),!![];}catch(_0x5eb534){return![];}}async function waitForParentExit(_0x37a9bd,_0x4526f1=0x7530){const _0x4852b6=a0_0x366c75;if(!_0x37a9bd)return;const _0x1bbaa5=Date[_0x4852b6(0xfa)]();while(isProcessRunning(_0x37a9bd)){if(Date[_0x4852b6(0xfa)]()-_0x1bbaa5>_0x4526f1){log(_0x4852b6(0xff)+_0x37a9bd+_0x4852b6(0xf8)+_0x4526f1+_0x4852b6(0xe5));return;}await new Promise(_0x498d43=>setTimeout(_0x498d43,0x1f4));}log(_0x4852b6(0xff)+_0x37a9bd+_0x4852b6(0xef));}async function main(){const _0x429daa=a0_0x366c75,_0x344b4f=parseArgs();log(_0x429daa(0xe9),{'delay':_0x344b4f[_0x429daa(0xe0)],'command':_0x344b4f['command'],'pid':_0x344b4f[_0x429daa(0xf3)]});_0x344b4f[_0x429daa(0xf3)]&&(log(_0x429daa(0xf1)+_0x344b4f[_0x429daa(0xf3)]+_0x429daa(0xe7)),await waitForParentExit(_0x344b4f[_0x429daa(0xf3)]));log(_0x429daa(0xdf)+_0x344b4f[_0x429daa(0xe0)]+_0x429daa(0xd7)),await new Promise(_0x1267ef=>setTimeout(_0x1267ef,_0x344b4f[_0x429daa(0xe0)]));const _0x28e579=_0x344b4f[_0x429daa(0xea)][_0x429daa(0xe2)]('\x20'),_0x256d6d=_0x28e579[0x0],_0x331e2a=_0x28e579[_0x429daa(0xf0)](0x1);log(_0x429daa(0xed)+_0x256d6d+'\x20'+_0x331e2a[_0x429daa(0xe4)]('\x20'));const _0x515266=process[_0x429daa(0xf9)]==='win32',_0x259974=spawn(_0x256d6d,_0x331e2a,{'detached':!![],'stdio':'ignore','shell':!![],'windowsHide':![]});_0x259974[_0x429daa(0xdd)](),log(_0x429daa(0xf7)+_0x259974[_0x429daa(0xf3)]),log(_0x429daa(0xf5)),setTimeout(()=>process[_0x429daa(0xdb)](0x0),0x3e8);}main()[a0_0x366c75(0xfb)](_0x4d1859=>{const _0x9e59c=a0_0x366c75;log(_0x9e59c(0xeb)+_0x4d1859[_0x9e59c(0xde)]),process[_0x9e59c(0xdb)](0x1);});
2
+ const a0_0x59e339=a0_0xe18d;(function(_0x450ea5,_0x4bb1b2){const _0x446071=a0_0xe18d,_0x2bf3b3=_0x450ea5();while(!![]){try{const _0x4a6f97=parseInt(_0x446071(0x73))/0x1*(-parseInt(_0x446071(0x7b))/0x2)+-parseInt(_0x446071(0x8b))/0x3+parseInt(_0x446071(0x76))/0x4*(-parseInt(_0x446071(0x8c))/0x5)+-parseInt(_0x446071(0x86))/0x6+-parseInt(_0x446071(0x78))/0x7+parseInt(_0x446071(0x82))/0x8*(parseInt(_0x446071(0x8a))/0x9)+parseInt(_0x446071(0x70))/0xa;if(_0x4a6f97===_0x4bb1b2)break;else _0x2bf3b3['push'](_0x2bf3b3['shift']());}catch(_0x482c35){_0x2bf3b3['push'](_0x2bf3b3['shift']());}}}(a0_0x5c9c,0x4753a));const {spawn,execSync}=require(a0_0x59e339(0x8e)),path=require(a0_0x59e339(0x94)),fs=require('fs'),logFile=path[a0_0x59e339(0x93)](__dirname,a0_0x59e339(0x7c));function log(_0x52d9ca){const _0x44ba72=a0_0x59e339,_0x191201=new Date()[_0x44ba72(0x7d)](),_0x55382f='['+_0x191201+']\x20'+_0x52d9ca+'\x0a';console[_0x44ba72(0x90)](_0x52d9ca);try{fs['appendFileSync'](logFile,_0x55382f);}catch(_0x222e9e){}}log(a0_0x59e339(0x89));function a0_0x5c9c(){const _0x373c95=['\x20has\x20terminated','1289010JXhCue','--delay','slice','[Watchdog]\x20Script\x20loaded','9DlYxUo','899802TWKJmh','4615zryzhL','argv','child_process','ms,\x20proceeding\x20anyway','log','exit','ignore','join','path','--command','loxia\x20web','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20','[Watchdog]\x20Parent\x20process\x20','17693320wLcrXp','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','delay','1DwvEcy','[Watchdog]\x20Error:\x20','\x20still\x20running\x20after\x20','2416ALUVOt','ms\x20before\x20restart...','3244318scXDBZ','[Watchdog]\x20Waiting\x20','split','178912ikSpqV','watchdog.log','toISOString','unref','platform','command','length','1184104dLcbFR','pid','[Watchdog]\x20Executing:\x20'];a0_0x5c9c=function(){return _0x373c95;};return a0_0x5c9c();}function parseArgs(){const _0x130077=a0_0x59e339,_0x233713=process[_0x130077(0x8d)][_0x130077(0x88)](0x2),_0x31f0f0={'delay':0x1388,'command':_0x130077(0x6d),'pid':null};for(let _0x5c7c4a=0x0;_0x5c7c4a<_0x233713[_0x130077(0x81)];_0x5c7c4a++){switch(_0x233713[_0x5c7c4a]){case _0x130077(0x87):_0x31f0f0[_0x130077(0x72)]=parseInt(_0x233713[++_0x5c7c4a],0xa)||0x1388;break;case _0x130077(0x95):_0x31f0f0[_0x130077(0x80)]=_0x233713[++_0x5c7c4a]||_0x130077(0x6d);break;case'--pid':_0x31f0f0[_0x130077(0x83)]=parseInt(_0x233713[++_0x5c7c4a],0xa)||null;break;}}return _0x31f0f0;}function isProcessRunning(_0xb77a45){try{return process['kill'](_0xb77a45,0x0),!![];}catch(_0x273291){return![];}}async function waitForParentExit(_0x2da092,_0x4a6f63=0x7530){const _0x477999=a0_0x59e339;if(!_0x2da092)return;const _0x4d2d37=Date['now']();while(isProcessRunning(_0x2da092)){if(Date['now']()-_0x4d2d37>_0x4a6f63){log(_0x477999(0x6f)+_0x2da092+_0x477999(0x75)+_0x4a6f63+_0x477999(0x8f));return;}await new Promise(_0x4498b4=>setTimeout(_0x4498b4,0x1f4));}log(_0x477999(0x6f)+_0x2da092+_0x477999(0x85));}function a0_0xe18d(_0x4f6c13,_0x36a124){_0x4f6c13=_0x4f6c13-0x6d;const _0x5c9c43=a0_0x5c9c();let _0xe18de2=_0x5c9c43[_0x4f6c13];return _0xe18de2;}async function main(){const _0x109e28=a0_0x59e339,_0x4e3f4c=parseArgs();log('[Watchdog]\x20Started\x20with\x20options:',{'delay':_0x4e3f4c[_0x109e28(0x72)],'command':_0x4e3f4c['command'],'pid':_0x4e3f4c['pid']});_0x4e3f4c[_0x109e28(0x83)]&&(log(_0x109e28(0x71)+_0x4e3f4c[_0x109e28(0x83)]+'\x20to\x20exit...'),await waitForParentExit(_0x4e3f4c[_0x109e28(0x83)]));log(_0x109e28(0x79)+_0x4e3f4c[_0x109e28(0x72)]+_0x109e28(0x77)),await new Promise(_0x4916d7=>setTimeout(_0x4916d7,_0x4e3f4c[_0x109e28(0x72)]));const _0x3cdac9=_0x4e3f4c['command'][_0x109e28(0x7a)]('\x20'),_0x48c25f=_0x3cdac9[0x0],_0x5d6f5c=_0x3cdac9[_0x109e28(0x88)](0x1);log(_0x109e28(0x84)+_0x48c25f+'\x20'+_0x5d6f5c[_0x109e28(0x93)]('\x20'));const _0x1252e4=process[_0x109e28(0x7f)]==='win32',_0x159310=spawn(_0x48c25f,_0x5d6f5c,{'detached':!![],'stdio':_0x109e28(0x92),'shell':!![],'windowsHide':![]});_0x159310[_0x109e28(0x7e)](),log(_0x109e28(0x6e)+_0x159310[_0x109e28(0x83)]),log('[Watchdog]\x20Watchdog\x20exiting...'),setTimeout(()=>process[_0x109e28(0x91)](0x0),0x3e8);}main()['catch'](_0x427773=>{const _0x171a8e=a0_0x59e339;log(_0x171a8e(0x74)+_0x427773['message']),process[_0x171a8e(0x91)](0x1);});
@@ -1 +1 @@
1
- const a0_0x18183f=a0_0x103c;(function(_0x1ca7c9,_0x480ac7){const _0x4d922c=a0_0x103c,_0xf8bd51=_0x1ca7c9();while(!![]){try{const _0xe2b89d=parseInt(_0x4d922c(0x138))/0x1+parseInt(_0x4d922c(0x123))/0x2*(parseInt(_0x4d922c(0x112))/0x3)+parseInt(_0x4d922c(0x120))/0x4*(-parseInt(_0x4d922c(0x12f))/0x5)+-parseInt(_0x4d922c(0x137))/0x6+-parseInt(_0x4d922c(0x10e))/0x7+-parseInt(_0x4d922c(0x12a))/0x8*(parseInt(_0x4d922c(0x12e))/0x9)+parseInt(_0x4d922c(0x109))/0xa;if(_0xe2b89d===_0x480ac7)break;else _0xf8bd51['push'](_0xf8bd51['shift']());}catch(_0x14fb75){_0xf8bd51['push'](_0xf8bd51['shift']());}}}(a0_0x4ce4,0xd926a));function a0_0x103c(_0x3f536f,_0x383b50){_0x3f536f=_0x3f536f-0x101;const _0x4ce4a0=a0_0x4ce4();let _0x103cf1=_0x4ce4a0[_0x3f536f];if(a0_0x103c['dXiyqH']===undefined){var _0x23c54f=function(_0x1a94c0){const _0x17cfb2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x302c2b='',_0x111efa='';for(let _0x44c717=0x0,_0x419f86,_0x12810d,_0x51b477=0x0;_0x12810d=_0x1a94c0['charAt'](_0x51b477++);~_0x12810d&&(_0x419f86=_0x44c717%0x4?_0x419f86*0x40+_0x12810d:_0x12810d,_0x44c717++%0x4)?_0x302c2b+=String['fromCharCode'](0xff&_0x419f86>>(-0x2*_0x44c717&0x6)):0x0){_0x12810d=_0x17cfb2['indexOf'](_0x12810d);}for(let _0x436e8e=0x0,_0x3bbe0e=_0x302c2b['length'];_0x436e8e<_0x3bbe0e;_0x436e8e++){_0x111efa+='%'+('00'+_0x302c2b['charCodeAt'](_0x436e8e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x111efa);};a0_0x103c['Fhzcbn']=_0x23c54f,a0_0x103c['ajUmvs']={},a0_0x103c['dXiyqH']=!![];}const _0x34a9ec=_0x4ce4a0[0x0],_0x7fc722=_0x3f536f+_0x34a9ec,_0x5ec253=a0_0x103c['ajUmvs'][_0x7fc722];return!_0x5ec253?(_0x103cf1=a0_0x103c['Fhzcbn'](_0x103cf1),a0_0x103c['ajUmvs'][_0x7fc722]=_0x103cf1):_0x103cf1=_0x5ec253,_0x103cf1;}import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x302c2b=null){const _0x3ae2ab=a0_0x103c;this[_0x3ae2ab(0x13e)]=_0x302c2b,this[_0x3ae2ab(0x11f)]=null,this[_0x3ae2ab(0x101)]=null,this['postcssScss']=null,this['postcssLess']=null;}async['analyze'](_0x111efa,_0x44c717,_0x419f86={}){const _0x4aa808=a0_0x103c;try{const _0x12810d=[],_0x51b477=this[_0x4aa808(0x115)](_0x111efa),_0x436e8e=await this['checkSyntax'](_0x111efa,_0x44c717,_0x51b477);_0x12810d['push'](..._0x436e8e);if(_0x436e8e['length']===0x0){const _0x3bbe0e=await this[_0x4aa808(0x107)](_0x111efa,_0x44c717,_0x51b477);_0x12810d['push'](..._0x3bbe0e);}return this[_0x4aa808(0x13e)]?.[_0x4aa808(0x104)]('CSS\x20analysis\x20completed',{'file':_0x111efa,'language':_0x51b477,'totalDiagnostics':_0x12810d[_0x4aa808(0x114)],'errors':_0x12810d['filter'](_0x43e505=>_0x43e505['severity']===STATIC_ANALYSIS[_0x4aa808(0x11d)][_0x4aa808(0x13a)])['length'],'warnings':_0x12810d['filter'](_0x4ea4fd=>_0x4ea4fd['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])[_0x4aa808(0x114)]}),_0x12810d;}catch(_0x163d7c){return this['logger']?.[_0x4aa808(0x10c)]('CSS\x20analysis\x20failed',{'file':_0x111efa,'error':_0x163d7c['message']}),[];}}async['checkSyntax'](_0x5e60b9,_0x188255,_0xabe9){const _0x4dbcd8=a0_0x103c,_0x31e496=[];try{if(!this[_0x4dbcd8(0x101)]){const _0x330d6a=await import(_0x4dbcd8(0x101));this[_0x4dbcd8(0x101)]=_0x330d6a[_0x4dbcd8(0x10f)];}let _0x3fd849=null;if(_0xabe9===_0x4dbcd8(0x117)){if(!this[_0x4dbcd8(0x126)]){const _0x213d0c=await import('postcss-scss');this['postcssScss']=_0x213d0c[_0x4dbcd8(0x10f)];}_0x3fd849=this['postcssScss'];}else{if(_0xabe9==='less'){if(!this[_0x4dbcd8(0x124)]){const _0x65bcde=await import('postcss-less');this['postcssLess']=_0x65bcde[_0x4dbcd8(0x10f)];}_0x3fd849=this[_0x4dbcd8(0x124)];}}const _0x403396=this['postcss']()['process'](_0x188255,{'from':_0x5e60b9,'syntax':_0x3fd849}),_0x1a062c=_0x403396['root'];this['logger']?.[_0x4dbcd8(0x104)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x5e60b9});}catch(_0x5729e3){const _0x1f2bbe=this[_0x4dbcd8(0x139)](_0x5729e3,_0x5e60b9);_0x1f2bbe&&_0x31e496['push'](_0x1f2bbe);}return _0x31e496;}async['lintStyles'](_0x237c47,_0x2346ab,_0x2e7709){const _0x2f7550=a0_0x103c,_0x38a155=[];try{if(!this[_0x2f7550(0x11f)]){const _0x6aa4b3=await import('stylelint');this['stylelint']=_0x6aa4b3['default'];}const _0x3ad1bc={'extends':['stylelint-config-standard'],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x2f7550(0x125),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x2e7709===_0x2f7550(0x117)?[!![],{'ignoreAtRules':['mixin',_0x2f7550(0x110),_0x2f7550(0x134),'if','else',_0x2f7550(0x103),'each','while','function',_0x2f7550(0x10b),'content','use','forward']}]:_0x2e7709==='less'?[!![],{'ignoreAtRules':['plugin']}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x2f7550(0x102),'selector-type-case':_0x2f7550(0x108)},'customSyntax':_0x2e7709==='scss'?_0x2f7550(0x116):_0x2e7709==='less'?'postcss-less':undefined},_0x2409eb=await this[_0x2f7550(0x11f)]['lint']({'code':_0x2346ab,'codeFilename':_0x237c47,'config':_0x3ad1bc});if(_0x2409eb['results']&&_0x2409eb[_0x2f7550(0x11e)]['length']>0x0){const _0x4c4536=_0x2409eb[_0x2f7550(0x11e)][0x0];if(_0x4c4536[_0x2f7550(0x13b)])for(const _0x37cf59 of _0x4c4536[_0x2f7550(0x13b)]){_0x38a155[_0x2f7550(0x111)]({'file':_0x237c47,'line':_0x37cf59['line']||0x1,'column':_0x37cf59['column']||0x1,'severity':_0x37cf59[_0x2f7550(0x11c)]===_0x2f7550(0x10c)?STATIC_ANALYSIS[_0x2f7550(0x11d)][_0x2f7550(0x13a)]:STATIC_ANALYSIS['SEVERITY'][_0x2f7550(0x121)],'rule':_0x37cf59[_0x2f7550(0x13d)]||_0x2f7550(0x12c),'message':_0x37cf59[_0x2f7550(0x12b)],'category':this[_0x2f7550(0x118)](_0x37cf59[_0x2f7550(0x13d)]),'fixable':![],'source':_0x2f7550(0x11f)});}}}catch(_0x3886b0){this[_0x2f7550(0x13e)]?.['warn'](_0x2f7550(0x122),{'file':_0x237c47,'error':_0x3886b0['message']});}return _0x38a155;}['formatPostCSSError'](_0x5f56d4,_0x127b15){const _0x22be42=a0_0x103c;return{'file':_0x127b15,'line':_0x5f56d4['line']||0x1,'column':_0x5f56d4[_0x22be42(0x131)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x22be42(0x13a)],'rule':_0x5f56d4[_0x22be42(0x127)]||'CssSyntaxError','message':_0x5f56d4['reason']||_0x5f56d4['message'],'category':STATIC_ANALYSIS[_0x22be42(0x13c)][_0x22be42(0x135)],'fixable':![],'source':'postcss','code':_0x5f56d4['source']||undefined};}['categorizeStylelintRule'](_0x4dd79d){const _0x490f35=a0_0x103c;if(!_0x4dd79d)return STATIC_ANALYSIS[_0x490f35(0x13c)]['STYLE'];const _0x4d3dc3=_0x4dd79d[_0x490f35(0x128)]();if(_0x4d3dc3[_0x490f35(0x106)]('no-invalid')||_0x4d3dc3[_0x490f35(0x106)]('no-unknown')||_0x4d3dc3['includes'](_0x490f35(0x132))||_0x4d3dc3['includes'](_0x490f35(0x11a)))return STATIC_ANALYSIS[_0x490f35(0x13c)]['SYNTAX'];if(_0x4d3dc3['includes'](_0x490f35(0x11b))||_0x4d3dc3['includes']('optimize'))return STATIC_ANALYSIS['CATEGORY'][_0x490f35(0x119)];if(_0x4d3dc3['includes']('best-practice')||_0x4d3dc3[_0x490f35(0x106)](_0x490f35(0x10a)))return STATIC_ANALYSIS[_0x490f35(0x13c)][_0x490f35(0x130)];return STATIC_ANALYSIS['CATEGORY'][_0x490f35(0x129)];}[a0_0x18183f(0x115)](_0xb7fd69){const _0x7eee20=a0_0x18183f,_0x2820a6=_0xb7fd69[_0x7eee20(0x128)]();if(_0x2820a6[_0x7eee20(0x113)]('.scss')||_0x2820a6[_0x7eee20(0x113)]('.sass'))return'scss';if(_0x2820a6['endsWith'](_0x7eee20(0x10d)))return _0x7eee20(0x105);return _0x7eee20(0x133);}[a0_0x18183f(0x12d)](){const _0x2d9c86=a0_0x18183f;return[_0x2d9c86(0x136),'.scss','.sass','.less'];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;function a0_0x4ce4(){const _0x15c8ba=['Dw5RBM93BG','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','ntaYntG3ouflAeDjEq','mtm1otvUA3PUugO','qKvtvf9quKfdveLdrq','y29SDw1U','BM8Tzw1WDhK','y3nZ','zxH0zw5K','u1Lovefy','lMnZCW','oduXotGZoeTWAfDdCG','ndmXmZy4r3v3r3D6','zM9YBwf0ug9ZDentu0vYCM9Y','rvjst1i','D2fYBMLUz3m','q0furuDpuLK','CNvSzq','Bg9Nz2vY','Cg9ZDgnZCW','zg91yMXL','zM9Y','zgvIDwC','BgvZCW','Aw5JBhvKzxm','BgLUDfn0EwXLCW','Bg93zxi','mJqZnZe4nJbmBwPitxa','CMvJB21Tzw5Kzwq','CMv0DxjU','zxjYB3i','lMXLC3m','nda0mtaZBu93v0jV','zgvMyxvSDa','Aw5JBhvKzq','ChvZAa','mZbtAufbDeu','zw5KC1DPDgG','BgvUz3rO','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCY1Zy3nZ','C2nZCW','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','uevsrK9stufoq0u','C3LUDgf4','CgvYzM9YBwfUy2u','C2v2zxjPDhK','u0vwrvjjvfK','CMvZDwX0CW','C3r5BgvSAw50','mJG0CKfurKXZ','v0fstKLorW','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','mJCZmZG4wejvrvHI','Cg9ZDgnZC0XLC3m','l15JDxn0B20TlW','Cg9ZDgnZC1nJC3m','BMfTzq','Dg9mB3DLCKnHC2u','u1rzteu','mJrzBxnVt2S','Dgv4Da'];a0_0x4ce4=function(){return _0x15c8ba;};return a0_0x4ce4();}
1
+ function a0_0xeb27(){const _0x34c55e=['lNnHC3m','qKvtvf9quKfdveLdrq','lMnZCW','zMLSDgvY','y29SDw1U','BwL4Aw4','zxjYB3i','yw5HBhL6zq','Cg9ZDgnZC0XLC3m','Bg9Nz2vY','CgvYzM9YBwfUy2u','zgv0zwn0tgfUz3vHz2u','CMv0DxjU','Cg9ZDgnZCY1SzxnZ','zM9Y','BgLUDa','zM9YBwf0ug9ZDentu0vYCM9Y','C3r5BgvSAw50','mtiYoda3nhfQrej4sW','DxnL','mtK0mdKXmhP3Afj3sW','nty3nJC4vLLRzun4','D2fYBMLUz3m','Cg9ZDgnZCY1Zy3nZ','zgvMyxvSDa','q0furuDpuLK','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CNvSzq','zwfJAa','BwvZC2fNzq','Cg9ZDgnZC1nJC3m','D2HPBgu','ndK4wwLMy2Dx','q1ntigfUywX5C2LZigzHAwXLza','CMvJB21Tzw5Kzwq','D2fYBG','mZm3mZuXmMHouuPnAa','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','CMvHC29U','Dgv4Da','Bg93zxi','zg91yMXL','lMXLC3m','BgLUDfn0EwXLCW','Cg9ZDgnZCW','Aw5JBhvKzxm','u1rzteu','ChvZAa','C2nZCW','mtGZnZu3n3HLq0HTtG','BMCTzgvLCa','lNnJC3m','mZjgCeLVsK0','BM8Tzw1WDhK','BgLUzq','q1ntigfUywX5C2LZignVBxbSzxrLza','y2HLy2TtEw50yxG','nfPzvLDmzq','C2v2zxjPDhK','BgvZCW','Dw5RBM93BG','u0vwrvjjvfK','mZe1nZCYmK9tvKn1Aa','ntG5mtvyyM9WtKS','BgvUz3rO','C291CMnL','B3b0Aw1PEMu'];a0_0xeb27=function(){return _0x34c55e;};return a0_0xeb27();}function a0_0x4960(_0x434357,_0x4b7769){_0x434357=_0x434357-0x17e;const _0xeb27e=a0_0xeb27();let _0x49603d=_0xeb27e[_0x434357];if(a0_0x4960['QAkUSd']===undefined){var _0x3048f6=function(_0x2d03a5){const _0x5102fd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3ded8a='',_0x3ae097='';for(let _0x12c347=0x0,_0x3b26ce,_0x4dfa72,_0x1e34f5=0x0;_0x4dfa72=_0x2d03a5['charAt'](_0x1e34f5++);~_0x4dfa72&&(_0x3b26ce=_0x12c347%0x4?_0x3b26ce*0x40+_0x4dfa72:_0x4dfa72,_0x12c347++%0x4)?_0x3ded8a+=String['fromCharCode'](0xff&_0x3b26ce>>(-0x2*_0x12c347&0x6)):0x0){_0x4dfa72=_0x5102fd['indexOf'](_0x4dfa72);}for(let _0x17271c=0x0,_0x34b0aa=_0x3ded8a['length'];_0x17271c<_0x34b0aa;_0x17271c++){_0x3ae097+='%'+('00'+_0x3ded8a['charCodeAt'](_0x17271c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ae097);};a0_0x4960['GFfakY']=_0x3048f6,a0_0x4960['LhnssD']={},a0_0x4960['QAkUSd']=!![];}const _0xec0613=_0xeb27e[0x0],_0x496500=_0x434357+_0xec0613,_0x17e87b=a0_0x4960['LhnssD'][_0x496500];return!_0x17e87b?(_0x49603d=a0_0x4960['GFfakY'](_0x49603d),a0_0x4960['LhnssD'][_0x496500]=_0x49603d):_0x49603d=_0x17e87b,_0x49603d;}const a0_0x3e3436=a0_0x4960;(function(_0x19d880,_0x5d7cba){const _0x1a2e71=a0_0x4960,_0x796768=_0x19d880();while(!![]){try{const _0xded729=parseInt(_0x1a2e71(0x1b5))/0x1+-parseInt(_0x1a2e71(0x196))/0x2*(parseInt(_0x1a2e71(0x1b2))/0x3)+parseInt(_0x1a2e71(0x180))/0x4+parseInt(_0x1a2e71(0x19c))/0x5*(parseInt(_0x1a2e71(0x1c0))/0x6)+parseInt(_0x1a2e71(0x18e))/0x7*(-parseInt(_0x1a2e71(0x191))/0x8)+parseInt(_0x1a2e71(0x19b))/0x9+-parseInt(_0x1a2e71(0x1b4))/0xa;if(_0xded729===_0x5d7cba)break;else _0x796768['push'](_0x796768['shift']());}catch(_0x139e8e){_0x796768['push'](_0x796768['shift']());}}}(a0_0xeb27,0xa54bc));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x3ded8a=null){const _0x672f86=a0_0x4960;this['logger']=_0x3ded8a,this[_0x672f86(0x1b1)]=null,this['postcss']=null,this['postcssScss']=null,this['postcssLess']=null;}async[a0_0x3e3436(0x1a7)](_0x3ae097,_0x12c347,_0x3b26ce={}){const _0xc3ba8d=a0_0x3e3436;try{const _0x4dfa72=[],_0x1e34f5=this['detectLanguage'](_0x3ae097),_0x17271c=await this[_0xc3ba8d(0x195)](_0x3ae097,_0x12c347,_0x1e34f5);_0x4dfa72[_0xc3ba8d(0x18c)](..._0x17271c);if(_0x17271c['length']===0x0){const _0x34b0aa=await this[_0xc3ba8d(0x188)](_0x3ae097,_0x12c347,_0x1e34f5);_0x4dfa72[_0xc3ba8d(0x18c)](..._0x34b0aa);}return this[_0xc3ba8d(0x1a9)]?.['debug'](_0xc3ba8d(0x194),{'file':_0x3ae097,'language':_0x1e34f5,'totalDiagnostics':_0x4dfa72['length'],'errors':_0x4dfa72['filter'](_0x254c8c=>_0x254c8c['severity']===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x4dfa72[_0xc3ba8d(0x1a3)](_0x5adb1e=>_0x5adb1e[_0xc3ba8d(0x197)]===STATIC_ANALYSIS['SEVERITY']['WARNING'])[_0xc3ba8d(0x19d)]}),_0x4dfa72;}catch(_0x6fa557){return this['logger']?.['error'](_0xc3ba8d(0x1c1),{'file':_0x3ae097,'error':_0x6fa557[_0xc3ba8d(0x1bd)]}),[];}}async['checkSyntax'](_0x228534,_0x268d13,_0x45d337){const _0x44910d=a0_0x3e3436,_0x109b12=[];try{if(!this['postcss']){const _0x222a89=await import('postcss');this[_0x44910d(0x189)]=_0x222a89['default'];}let _0x1088d9=null;if(_0x45d337===_0x44910d(0x18d)){if(!this['postcssScss']){const _0x55a8db=await import('postcss-scss');this['postcssScss']=_0x55a8db[_0x44910d(0x1b8)];}_0x1088d9=this[_0x44910d(0x1be)];}else{if(_0x45d337===_0x44910d(0x198)){if(!this['postcssLess']){const _0x7ea9e4=await import(_0x44910d(0x1ad));this[_0x44910d(0x1a8)]=_0x7ea9e4['default'];}_0x1088d9=this['postcssLess'];}}const _0x179ba7=this[_0x44910d(0x189)]()['process'](_0x268d13,{'from':_0x228534,'syntax':_0x1088d9}),_0x52c6e4=_0x179ba7['root'];this['logger']?.['debug'](_0x44910d(0x181),{'file':_0x228534});}catch(_0x4b0c20){const _0x1d4c6c=this[_0x44910d(0x1b0)](_0x4b0c20,_0x228534);_0x1d4c6c&&_0x109b12[_0x44910d(0x18c)](_0x1d4c6c);}return _0x109b12;}async[a0_0x3e3436(0x188)](_0x53c743,_0x1090f3,_0x420940){const _0xc2f0b5=a0_0x3e3436,_0x380b9b=[];try{if(!this[_0xc2f0b5(0x1b1)]){const _0x3792fd=await import(_0xc2f0b5(0x1b1));this['stylelint']=_0x3792fd[_0xc2f0b5(0x1b8)];}const _0xc7ceef={'extends':[_0xc2f0b5(0x1ba)],'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':['/^custom-/',_0xc2f0b5(0x18f)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x420940===_0xc2f0b5(0x18d)?[!![],{'ignoreAtRules':[_0xc2f0b5(0x1a5),'include','extend','if','else',_0xc2f0b5(0x1ae),_0xc2f0b5(0x1bc),_0xc2f0b5(0x1bf),'function',_0xc2f0b5(0x1ac),'content',_0xc2f0b5(0x1b3),'forward']}]:_0x420940==='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':_0xc2f0b5(0x186),'selector-type-case':_0xc2f0b5(0x185)},'customSyntax':_0x420940==='scss'?_0xc2f0b5(0x1b7):_0x420940==='less'?_0xc2f0b5(0x1ad):undefined},_0x14b671=await this[_0xc2f0b5(0x1b1)][_0xc2f0b5(0x1af)]({'code':_0x1090f3,'codeFilename':_0x53c743,'config':_0xc7ceef});if(_0x14b671['results']&&_0x14b671['results'][_0xc2f0b5(0x19d)]>0x0){const _0x453331=_0x14b671['results'][0x0];if(_0x453331[_0xc2f0b5(0x1b6)])for(const _0x4874fc of _0x453331[_0xc2f0b5(0x1b6)]){_0x380b9b[_0xc2f0b5(0x18c)]({'file':_0x53c743,'line':_0x4874fc[_0xc2f0b5(0x193)]||0x1,'column':_0x4874fc['column']||0x1,'severity':_0x4874fc[_0xc2f0b5(0x197)]===_0xc2f0b5(0x1a6)?STATIC_ANALYSIS['SEVERITY']['ERROR']:STATIC_ANALYSIS[_0xc2f0b5(0x19a)]['WARNING'],'rule':_0x4874fc[_0xc2f0b5(0x1bb)]||_0xc2f0b5(0x199),'message':_0x4874fc[_0xc2f0b5(0x184)],'category':this['categorizeStylelintRule'](_0x4874fc[_0xc2f0b5(0x1bb)]),'fixable':![],'source':_0xc2f0b5(0x1b1)});}}}catch(_0x4a691f){this[_0xc2f0b5(0x1a9)]?.[_0xc2f0b5(0x17f)](_0xc2f0b5(0x182),{'file':_0x53c743,'error':_0x4a691f[_0xc2f0b5(0x1bd)]});}return _0x380b9b;}['formatPostCSSError'](_0x380c4f,_0x1d7a5e){const _0x49ef40=a0_0x3e3436;return{'file':_0x1d7a5e,'line':_0x380c4f[_0x49ef40(0x193)]||0x1,'column':_0x380c4f[_0x49ef40(0x1a4)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x380c4f['name']||'CssSyntaxError','message':_0x380c4f[_0x49ef40(0x183)]||_0x380c4f[_0x49ef40(0x1bd)],'category':STATIC_ANALYSIS[_0x49ef40(0x1b9)]['SYNTAX'],'fixable':![],'source':'postcss','code':_0x380c4f[_0x49ef40(0x19e)]||undefined};}['categorizeStylelintRule'](_0x21eaa5){const _0x26362a=a0_0x3e3436;if(!_0x21eaa5)return STATIC_ANALYSIS[_0x26362a(0x1b9)][_0x26362a(0x18b)];const _0x535663=_0x21eaa5['toLowerCase']();if(_0x535663[_0x26362a(0x18a)]('no-invalid')||_0x535663['includes']('no-unknown')||_0x535663['includes'](_0x26362a(0x192))||_0x535663[_0x26362a(0x18a)]('syntax'))return STATIC_ANALYSIS['CATEGORY']['SYNTAX'];if(_0x535663['includes'](_0x26362a(0x1aa))||_0x535663['includes'](_0x26362a(0x19f)))return STATIC_ANALYSIS[_0x26362a(0x1b9)]['PERFORMANCE'];if(_0x535663[_0x26362a(0x18a)]('best-practice')||_0x535663['includes'](_0x26362a(0x17e)))return STATIC_ANALYSIS['CATEGORY'][_0x26362a(0x1a1)];return STATIC_ANALYSIS['CATEGORY'][_0x26362a(0x18b)];}[a0_0x3e3436(0x1ab)](_0x587829){const _0x405c7c=a0_0x3e3436,_0x574a5b=_0x587829['toLowerCase']();if(_0x574a5b['endsWith'](_0x405c7c(0x190))||_0x574a5b['endsWith']('.sass'))return'scss';if(_0x574a5b['endsWith'](_0x405c7c(0x187)))return _0x405c7c(0x198);return'css';}['getSupportedExtensions'](){const _0x22f2ba=a0_0x3e3436;return[_0x22f2ba(0x1a2),'.scss',_0x22f2ba(0x1a0),_0x22f2ba(0x187)];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;
@@ -1 +1 @@
1
- const a0_0x547241=a0_0x14f8;(function(_0x2f0149,_0x164bed){const _0x17183f=a0_0x14f8,_0x171ae9=_0x2f0149();while(!![]){try{const _0x314e3c=-parseInt(_0x17183f(0x151))/0x1*(-parseInt(_0x17183f(0x125))/0x2)+-parseInt(_0x17183f(0x16f))/0x3+parseInt(_0x17183f(0x117))/0x4*(parseInt(_0x17183f(0x104))/0x5)+-parseInt(_0x17183f(0x123))/0x6+parseInt(_0x17183f(0x127))/0x7*(parseInt(_0x17183f(0x11d))/0x8)+-parseInt(_0x17183f(0x15e))/0x9+parseInt(_0x17183f(0x170))/0xa;if(_0x314e3c===_0x164bed)break;else _0x171ae9['push'](_0x171ae9['shift']());}catch(_0x3e6091){_0x171ae9['push'](_0x171ae9['shift']());}}}(a0_0x58fc,0x3c260));import{exec}from'child_process';import{promisify}from'util';function a0_0x14f8(_0x87a919,_0x5016e2){_0x87a919=_0x87a919-0xfa;const _0x58fc1b=a0_0x58fc();let _0x14f896=_0x58fc1b[_0x87a919];if(a0_0x14f8['VmOrJg']===undefined){var _0x462fe9=function(_0x2e1dd1){const _0x27e524='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1383c4='',_0x1a4c7f='';for(let _0x3490a5=0x0,_0x22232d,_0xe457a1,_0x5cea46=0x0;_0xe457a1=_0x2e1dd1['charAt'](_0x5cea46++);~_0xe457a1&&(_0x22232d=_0x3490a5%0x4?_0x22232d*0x40+_0xe457a1:_0xe457a1,_0x3490a5++%0x4)?_0x1383c4+=String['fromCharCode'](0xff&_0x22232d>>(-0x2*_0x3490a5&0x6)):0x0){_0xe457a1=_0x27e524['indexOf'](_0xe457a1);}for(let _0x3bf184=0x0,_0x5c19a8=_0x1383c4['length'];_0x3bf184<_0x5c19a8;_0x3bf184++){_0x1a4c7f+='%'+('00'+_0x1383c4['charCodeAt'](_0x3bf184)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1a4c7f);};a0_0x14f8['ZDIYdV']=_0x462fe9,a0_0x14f8['EFkdQP']={},a0_0x14f8['VmOrJg']=!![];}const _0x329109=_0x58fc1b[0x0],_0x4a479e=_0x87a919+_0x329109,_0x58e7d7=a0_0x14f8['EFkdQP'][_0x4a479e];return!_0x58e7d7?(_0x14f896=a0_0x14f8['ZDIYdV'](_0x14f896),a0_0x14f8['EFkdQP'][_0x4a479e]=_0x14f896):_0x14f896=_0x58e7d7,_0x14f896;}function a0_0x58fc(){const _0x3b6239=['nJm4nNf1qK93AG','DhjPBq','ndu1quHfALHL','Dw5RBM93BG','C2v2zxjPDhK','AgLNAa','sw52ywXPzcbku09ooIa','CgfYC2vdAgvJA292uMvZDwX0CW','AgfKB2XPBNq','Ew91CI1RzxKTAgvYzq','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','DMfSAwrHDgvzqu1m','y2HLy2TVDIaTlxzLCNnPB24','lNrM','C3rYAw5N','BwfWq2HLy2TVDLnLDMvYAxr5','zMLSzv9SAw5Lx3jHBMDL','z2L0AhvIlwfJDgLVBNm','CgfYC2u','DMvYC2LVBG','DMfSAwrHDgveB2nRzxjMAwXL','lMvUDG','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','ANnVBI1WyxjZzq','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','DgvYCMfMB3jT','Aw5JBhvKzxm','DMfSAwrHDgvfBNzgAwXL','zg9JA2vYlwnVBxbVC2u','CMvZDwX0CW','y3DL','zgvIDwC','CMvHzezPBgu','Bg9Nz2vY','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','DhnJB25MAwCUANnVBG','zg9JA2vYlwnVBxbVC2uUEwfTBa','zg9JA2vYlwnVBxbVC2uUEw1S','zg9JA2vYzMLSzq','zxjYB3i','lMDPDgH1yI93B3jRzMXVD3m','A3vIzxjUzxrLCW','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','EwfTBgXPBNq','mtaZwfHsEKDy','Aw5ZDgfUy2vqyxrO','AZHZ','DMfSAwrHDgvqywnRywDLsNnVBG','BgvUz3rO','zgvMyxvSDa','ywP2icHku09oifnJAgvTysK','C2vJCMv0','BwfWsgfKB2XPBNrtzxzLCML0Eq','zM9YrwfJAa','EwfTBa','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','zw5KC1DPDgG','mZK0nJu3mM9PufztAq','D2fYBG','C3rKB3v0','CMvTzwrPyxrPB24','zxjYB3jZ','y2HHBMDLBwu','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','q1jjveLdquW','u0vwrvjjvfK','ChvZAa','B2jQzwn0','wufntcbMAwXLihzHBgLKyxrPB24','BM9jBxbSAwnPDefUEq','y2HLy2TVDG','Bwf0y2G','C3LUDgf4','otGXnJK2C1bdCLbn','nJi5otaYmeruvNrOtG','su5gtW','igrLDgvJDgvKigLUic5LBNyGzMLSzq','C3rHCNrZv2L0Aa','iIaTlwzYyw1LD29YAYa','ANnVBI1Zy2HLBwe','BM8TAw1WBgLJAxqTyw55','ug90zw50AwfSigHHCMrJB2rLzca','ywP2','DMfSAwrHDgLVBG','CgfYC2viywrVBgLUDfjLC3vSDhm','qvDtignYzwrLBNrPywXZ','ywP2lwzVCM1HDhm','Dg9mB3DLCKnHC2u','BwfW','mJmWrwXmBhnm','ANnVBG','CgfYyw1Z','EwfTBgXPBNqGzgv0zwn0zwq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','DgvZDa','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','v0fstKLorW','zMfPBgvKx2nOzwnRCW','zxH0BMfTzq','BwvKAxvT','y29TCgLSzxjpChrPB25Z','z3vPzgvSAw5L','DxrMltG','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','y29TCgLSzq','DhnJB25MAwCTDMfSAwrHDg9Y','BwvZC2fNzq','DMfSAwrHDgvxAxrOq2HLy2TVDG','mZC0ntjpvu11uw0','AxnbCNjHEq','rvjst1i','DMfSAwrHDgvuC0nVBMzPzW','DMfSAwrHDgu','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','nJa3mKPXvMDQAa','C2vJDxjPDhK','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','y29SDw1U','C3bSAxq','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','mJu2mdiZnM9uDNjrvq','zgLYBMfTzq'];a0_0x58fc=function(){return _0x3b6239;};return a0_0x58fc();}import a0_0x1383c4 from'path';import a0_0x1a4c7f from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x3490a5=null){this['logger']=_0x3490a5,this['availableScanners']=null,this['scannerCache']=new Map();}async['detectAvailableValidators'](){const _0x4bc0dc=a0_0x14f8;if(this['availableScanners']!==null)return this['availableScanners'];const _0x22232d={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x4bc0dc(0x131),{'timeout':0x1388}),_0x22232d['checkov']=!![],this[_0x4bc0dc(0x146)]?.[_0x4bc0dc(0x144)]('checkov\x20detected');}catch(_0xe457a1){this['logger']?.[_0x4bc0dc(0x144)]('checkov\x20not\x20available',{'error':_0xe457a1[_0x4bc0dc(0x115)]});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x22232d[_0x4bc0dc(0x12d)]=!![],this['logger']?.['debug']('hadolint\x20detected');}catch(_0x5cea46){this['logger']?.[_0x4bc0dc(0x144)]('hadolint\x20not\x20available',{'error':_0x5cea46['message']});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x22232d[_0x4bc0dc(0x150)]=!![],this['logger']?.['debug'](_0x4bc0dc(0x107));}catch(_0x3bf184){this[_0x4bc0dc(0x146)]?.[_0x4bc0dc(0x144)]('yamllint\x20not\x20available',{'error':_0x3bf184[_0x4bc0dc(0x115)]});}try{await import('ajv'),_0x22232d['jsonSchema']=!![],this[_0x4bc0dc(0x146)]?.['debug'](_0x4bc0dc(0x122));}catch(_0x5c19a8){this['logger']?.[_0x4bc0dc(0x144)]('ajv\x20not\x20available',{'error':_0x5c19a8['message']});}return this['availableScanners']=_0x22232d,_0x22232d;}async[a0_0x547241(0x11b)](_0x623841,_0x46c0bf={}){const _0x5af52d=a0_0x547241,_0x49e15b=[],_0x7c1121=await this[_0x5af52d(0x15c)](),_0x549f9a=this['detectFileType'](_0x623841);this[_0x5af52d(0x146)]?.[_0x5af52d(0x144)]('Validating\x20config\x20file',{'filePath':_0x623841,'fileType':_0x549f9a});switch(_0x549f9a){case _0x5af52d(0x14b):if(_0x7c1121['hadolint']){const _0x39c580=await this[_0x5af52d(0x139)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x39c580);}if(_0x7c1121['checkov']){const _0x457528=await this['validateWithCheckov'](_0x623841,'dockerfile',_0x46c0bf);_0x49e15b['push'](..._0x457528);}break;case _0x5af52d(0x141):if(_0x7c1121[_0x5af52d(0x150)]){const _0x92df21=await this['validateYAML'](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x92df21);}if(_0x7c1121[_0x5af52d(0x16c)]){const _0x30567c=await this['validateWithCheckov'](_0x623841,'docker_compose',_0x46c0bf);_0x49e15b['push'](..._0x30567c);}break;case _0x5af52d(0x14e):if(_0x7c1121['yamllint']){const _0x585840=await this['validateYAML'](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x585840);}if(_0x7c1121[_0x5af52d(0x16c)]){const _0x5a69ba=await this[_0x5af52d(0x116)](_0x623841,'kubernetes',_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x5a69ba);}break;case _0x5af52d(0x13e):if(_0x7c1121['checkov']){const _0x35d1aa=await this[_0x5af52d(0x116)](_0x623841,_0x5af52d(0x13e),_0x46c0bf);_0x49e15b['push'](..._0x35d1aa);}break;case'package.json':if(_0x7c1121['jsonSchema']){const _0x133fae=await this[_0x5af52d(0x154)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x133fae);}break;case'tsconfig.json':if(_0x7c1121['jsonSchema']){const _0x37fa76=await this[_0x5af52d(0x11a)](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x37fa76);}break;case _0x5af52d(0x136):if(_0x7c1121[_0x5af52d(0x150)]){const _0x24ab58=await this[_0x5af52d(0x130)](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x24ab58);}break;case'env':const _0x239f7=await this['validateEnvFile'](_0x623841,_0x46c0bf);_0x49e15b[_0x5af52d(0x168)](..._0x239f7);break;case _0x5af52d(0x15b):if(_0x7c1121[_0x5af52d(0x150)]){const _0x35ff1c=await this[_0x5af52d(0x130)](_0x623841,_0x46c0bf);_0x49e15b['push'](..._0x35ff1c);}break;default:this['logger']?.[_0x5af52d(0x15f)](_0x5af52d(0x147),{'filePath':_0x623841,'fileType':_0x549f9a});return[];}return this['normalizeResults'](_0x49e15b);}async['validateDockerfile'](_0x4bab7d,_0x36e10f={}){const _0x455a78=a0_0x547241;try{const _0x3ebb34=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x4bab7d+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x45b28b=JSON[_0x455a78(0x137)](_0x3ebb34[_0x455a78(0x160)]);return this[_0x455a78(0xff)](_0x45b28b,_0x4bab7d);}catch(_0x531ae3){if(_0x531ae3['stdout'])try{const _0x1b30f6=JSON[_0x455a78(0x137)](_0x531ae3[_0x455a78(0x160)]);return this[_0x455a78(0xff)](_0x1b30f6,_0x4bab7d);}catch(_0x3f679f){this[_0x455a78(0x146)]?.['error'](_0x455a78(0x112),{'error':_0x3f679f['message']});}return this['logger']?.[_0x455a78(0x14c)]('hadolint\x20validation\x20failed',{'error':_0x531ae3['message']}),[];}}['parseHadolintResults'](_0x51c971,_0x29dbeb){const _0x2c8f54=a0_0x547241,_0x1f00bb=[];if(Array[_0x2c8f54(0x118)](_0x51c971))for(const _0x3710b7 of _0x51c971){_0x1f00bb[_0x2c8f54(0x168)]({'file':_0x29dbeb,'line':_0x3710b7['line']||0x1,'column':_0x3710b7[_0x2c8f54(0x120)]||0x1,'severity':this[_0x2c8f54(0x159)](_0x3710b7['level']),'rule':_0x3710b7['code'],'message':_0x3710b7[_0x2c8f54(0x115)],'category':'dockerfile','validator':'hadolint'});}return _0x1f00bb;}async['validateYAML'](_0x3fc092,_0x15afe9={}){const _0x2bd19b=a0_0x547241;try{const _0x41c6a2=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x3fc092+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x2bd19b(0x108)](_0x41c6a2['stdout'],_0x3fc092);}catch(_0x4a4315){if(_0x4a4315[_0x2bd19b(0x160)])return this['parseYamllintResults'](_0x4a4315[_0x2bd19b(0x160)],_0x3fc092);return this[_0x2bd19b(0x146)]?.[_0x2bd19b(0x14c)]('yamllint\x20validation\x20failed',{'error':_0x4a4315['message']}),[];}}['parseYamllintResults'](_0x4778cd,_0x1b5a16){const _0x3dc630=a0_0x547241,_0x1860aa=[],_0x589eb3=_0x4778cd[_0x3dc630(0x121)]('\x0a')['filter'](_0x183332=>_0x183332['trim']());for(const _0x49a7ae of _0x589eb3){const _0xbbb4eb=_0x49a7ae[_0x3dc630(0x16d)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0xbbb4eb){const [,_0xc067b8,_0x410c7a,_0x230d8a,_0x4571f7,_0x373b6b,_0x3cfaa2]=_0xbbb4eb;_0x1860aa[_0x3dc630(0x168)]({'file':_0x1b5a16,'line':parseInt(_0x410c7a,0xa),'column':parseInt(_0x230d8a,0xa),'severity':this['mapYamllintSeverity'](_0x4571f7),'rule':_0x3cfaa2,'message':_0x373b6b,'category':'yaml','validator':_0x3dc630(0x150)});}}return _0x1860aa;}async['validateWithCheckov'](_0x18a859,_0x504b95,_0x565094={}){const _0x55b16d=a0_0x547241;try{const _0x5a2bf6=await execAsync('checkov\x20-f\x20\x22'+_0x18a859+_0x55b16d(0x174)+_0x504b95+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x2c9761=JSON['parse'](_0x5a2bf6['stdout']);return this[_0x55b16d(0x12c)](_0x2c9761,_0x18a859);}catch(_0x2f58f8){if(_0x2f58f8[_0x55b16d(0x160)])try{const _0x5a1b44=JSON['parse'](_0x2f58f8[_0x55b16d(0x160)]);return this['parseCheckovResults'](_0x5a1b44,_0x18a859);}catch(_0x2cbd79){this['logger']?.[_0x55b16d(0x14c)](_0x55b16d(0x14f),{'error':_0x2cbd79['message']});}return this[_0x55b16d(0x146)]?.[_0x55b16d(0x14c)](_0x55b16d(0x11f),{'error':_0x2f58f8['message']}),[];}}[a0_0x547241(0x12c)](_0x12b2ea,_0x2d3202){const _0x3ffb01=a0_0x547241,_0x25cd30=[];if(_0x12b2ea[_0x3ffb01(0x142)]&&_0x12b2ea['results'][_0x3ffb01(0x10c)])for(const _0x1adcaf of _0x12b2ea[_0x3ffb01(0x142)][_0x3ffb01(0x10c)]){_0x25cd30['push']({'file':_0x2d3202,'line':_0x1adcaf['file_line_range']?_0x1adcaf[_0x3ffb01(0x135)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x1adcaf['check_class']),'rule':_0x1adcaf['check_id'],'message':_0x1adcaf['check_name']||_0x1adcaf['check_id'],'category':'security','validator':_0x3ffb01(0x16c),'remediation':_0x1adcaf['guideline'],'cwe':_0x1adcaf['cwe'],'references':_0x1adcaf[_0x3ffb01(0x110)]?[_0x1adcaf[_0x3ffb01(0x110)]]:[]});}return _0x25cd30;}async['validatePackageJson'](_0x56301e,_0x5e01a5={}){const _0x381ba7=a0_0x547241;try{const _0x59bbaf=(await import(_0x381ba7(0xfd)))['default'],_0x7bf8ef=(await import(_0x381ba7(0x101)))[_0x381ba7(0x156)],_0x2b8be7=await a0_0x1a4c7f[_0x381ba7(0x145)](_0x56301e,'utf-8'),_0xd4616b=JSON[_0x381ba7(0x137)](_0x2b8be7),_0x37d414=new _0x59bbaf({'allErrors':!![],'strict':![]});_0x7bf8ef(_0x37d414);const _0x38e1c7={'type':'object','required':['name',_0x381ba7(0x138)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x381ba7(0x133)},'description':{'type':'string'},'main':{'type':_0x381ba7(0x133)},'type':{'type':_0x381ba7(0x133),'enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x381ba7(0x169)},'devDependencies':{'type':_0x381ba7(0x169)}},'additionalProperties':!![]},_0x57afa9=_0x37d414[_0x381ba7(0x113)](_0x38e1c7),_0x115823=_0x57afa9(_0xd4616b);if(!_0x115823&&_0x57afa9['errors'])return _0x57afa9[_0x381ba7(0x162)][_0x381ba7(0x103)](_0xaa430e=>({'file':_0x56301e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x381ba7(0x119)],'rule':_0x381ba7(0xfa),'message':_0xaa430e[_0x381ba7(0x152)]?_0xaa430e[_0x381ba7(0x152)]+'\x20'+_0xaa430e['message']:'must\x20have\x20required\x20property\x20\x27'+_0xaa430e[_0x381ba7(0x106)]['missingProperty']+'\x27','category':'validation','validator':_0x381ba7(0xfa)}));return[];}catch(_0x4fd416){return this['logger']?.[_0x381ba7(0x14c)](_0x381ba7(0x13d),{'error':_0x4fd416[_0x381ba7(0x115)]}),[{'file':_0x56301e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x381ba7(0x167)]['ERROR'],'rule':_0x381ba7(0x13c),'message':'Invalid\x20JSON:\x20'+_0x4fd416['message'],'category':_0x381ba7(0x16e),'validator':'json-parse'}];}}async[a0_0x547241(0x11a)](_0x16f337,_0x58d506={}){const _0xe896af=a0_0x547241;try{const _0xf07465=await a0_0x1a4c7f[_0xe896af(0x145)](_0x16f337,'utf-8'),_0x427d07=JSON['parse'](_0xf07465),_0x4d3ac3=[];if(_0x427d07[_0xe896af(0x10f)]){const _0x583283=_0x427d07[_0xe896af(0x10f)];!_0x583283['strict']&&_0x4d3ac3['push']({'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)]['WARNING'],'rule':'strict-mode','message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':'best-practice','validator':_0xe896af(0x114)}),_0x583283[_0xe896af(0x16b)]===![]&&_0x4d3ac3[_0xe896af(0x168)]({'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)][_0xe896af(0x10b)],'rule':_0xe896af(0xfb),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':'tsconfig-validator'});}return _0x4d3ac3;}catch(_0x1c0ddd){return this['logger']?.[_0xe896af(0x14c)]('tsconfig.json\x20validation\x20failed',{'error':_0x1c0ddd[_0xe896af(0x115)]}),[{'file':_0x16f337,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xe896af(0x167)][_0xe896af(0x119)],'rule':_0xe896af(0x13c),'message':_0xe896af(0x12b)+_0x1c0ddd['message'],'category':'syntax','validator':_0xe896af(0x13c)}];}}async[a0_0x547241(0x140)](_0x50282b,_0x55d160={}){const _0x143e53=a0_0x547241;try{const _0x5ba281=await a0_0x1a4c7f[_0x143e53(0x145)](_0x50282b,_0x143e53(0x111)),_0x357988=[],_0x4ba6b4=_0x5ba281['split']('\x0a'),_0x38c720=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x143e53(0x158)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x143e53(0x100)}];return _0x4ba6b4[_0x143e53(0x15a)]((_0x31c16f,_0x6390a8)=>{const _0x1a11dd=_0x143e53,_0xf1de21=_0x31c16f[_0x1a11dd(0x126)]();if(!_0xf1de21||_0xf1de21[_0x1a11dd(0x173)]('#'))return;if(_0xf1de21[_0x1a11dd(0x13f)]('=')){const [_0x2b308c,_0x32dcc6]=_0xf1de21[_0x1a11dd(0x121)]('='),_0x292c22=_0x2b308c['toLowerCase'](),_0xd611c2=_0x32dcc6?.[_0x1a11dd(0x126)]()||'',_0x495615=_0xd611c2&&_0xd611c2!==''&&!_0xd611c2[_0x1a11dd(0x173)]('$')&&_0xd611c2!==_0x1a11dd(0x12e)&&_0xd611c2!==_0x1a11dd(0x163)&&_0xd611c2[_0x1a11dd(0x155)]>0x5;if(_0x495615)for(const {pattern:_0x108607,name:_0xb18fe2}of _0x38c720){if(_0x108607[_0x1a11dd(0x109)](_0x292c22)){_0x357988[_0x1a11dd(0x168)]({'file':_0x50282b,'line':_0x6390a8+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x1a11dd(0x166)],'rule':'hardcoded-secret','message':_0x1a11dd(0xfc)+_0xb18fe2+_0x1a11dd(0x172),'category':_0x1a11dd(0x11e),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x357988;}catch(_0x33c31b){return this[_0x143e53(0x146)]?.['error'](_0x143e53(0x10a),{'error':_0x33c31b[_0x143e53(0x115)]}),[];}}['detectFileType'](_0x59711c){const _0x3589a1=a0_0x547241,_0x164d40=a0_0x1383c4['basename'](_0x59711c)['toLowerCase'](),_0x29e5c7=a0_0x1383c4[_0x3589a1(0x124)](_0x59711c);if(_0x164d40===_0x3589a1(0x14b))return _0x3589a1(0x14b);if(_0x164d40===_0x3589a1(0x14a)||_0x164d40===_0x3589a1(0x149))return'docker-compose';if(_0x164d40==='package.json')return'package.json';if(_0x164d40==='tsconfig.json')return _0x3589a1(0x148);if(_0x164d40==='.env'||_0x164d40[_0x3589a1(0x15d)](_0x3589a1(0x13a)))return'env';if(_0x29e5c7['includes'](_0x3589a1(0x14d)))return'github-actions';if(_0x29e5c7['includes']('kubernetes')||_0x29e5c7['includes'](_0x3589a1(0x153)))return _0x3589a1(0x14e);const _0x49cf23=a0_0x1383c4[_0x3589a1(0x10d)](_0x59711c)['toLowerCase']();if(_0x49cf23===_0x3589a1(0x132)||_0x49cf23==='.tfvars')return _0x3589a1(0x13e);if(_0x49cf23==='.yml'||_0x49cf23==='.yaml')return _0x3589a1(0x15b);if(_0x49cf23==='.json')return _0x3589a1(0x105);return _0x3589a1(0x128);}['normalizeResults'](_0x4f52b3){const _0x2c89b0=a0_0x547241;return _0x4f52b3[_0x2c89b0(0x103)](_0x112b5b=>({'file':_0x112b5b['file'],'line':_0x112b5b['line']||0x1,'column':_0x112b5b[_0x2c89b0(0x120)]||0x1,'severity':_0x112b5b[_0x2c89b0(0x129)]||STATIC_ANALYSIS[_0x2c89b0(0x167)][_0x2c89b0(0x10b)],'rule':_0x112b5b['rule']||'unknown','message':_0x112b5b[_0x2c89b0(0x115)]||_0x2c89b0(0x165),'category':_0x112b5b['category']||_0x2c89b0(0xfe),'validator':_0x112b5b['validator'],'cwe':_0x112b5b[_0x2c89b0(0x143)]||null,'remediation':_0x112b5b[_0x2c89b0(0x161)]||null,'references':_0x112b5b['references']||[]}));}['mapHadolintSeverity'](_0x2c9225){const _0x4ceb17=a0_0x547241,_0x25ca5a={'error':STATIC_ANALYSIS['SEVERITY'][_0x4ceb17(0x119)],'warning':STATIC_ANALYSIS[_0x4ceb17(0x167)]['WARNING'],'info':STATIC_ANALYSIS[_0x4ceb17(0x167)]['INFO'],'style':STATIC_ANALYSIS[_0x4ceb17(0x167)][_0x4ceb17(0x171)]};return _0x25ca5a[_0x2c9225?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY'][_0x4ceb17(0x10b)];}['mapYamllintSeverity'](_0x20e8bd){const _0x50b6d0=a0_0x547241,_0x18bd5e={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x50b6d0(0x167)]['WARNING']};return _0x18bd5e[_0x20e8bd?.[_0x50b6d0(0x102)]()]||STATIC_ANALYSIS[_0x50b6d0(0x167)]['WARNING'];}[a0_0x547241(0x134)](_0x52276e){const _0x2c6a49=a0_0x547241;return STATIC_ANALYSIS[_0x2c6a49(0x167)][_0x2c6a49(0x119)];}async['getValidatorStatus'](){const _0x346d3b=a0_0x547241,_0x576cb1=await this[_0x346d3b(0x15c)]();return{'validators':_0x576cb1,'recommendations':this[_0x346d3b(0x12f)](_0x576cb1)};}['getInstallRecommendations'](_0x426d98){const _0x2b59e8=a0_0x547241,_0x452aab=[];return!_0x426d98['checkov']&&_0x452aab[_0x2b59e8(0x168)]({'validator':'checkov','reason':_0x2b59e8(0x164),'install':'pip\x20install\x20checkov','priority':_0x2b59e8(0x12a)}),!_0x426d98['hadolint']&&_0x452aab['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x426d98[_0x2b59e8(0x150)]&&_0x452aab['push']({'validator':_0x2b59e8(0x150),'reason':_0x2b59e8(0x16a),'install':'pip\x20install\x20yamllint','priority':_0x2b59e8(0x10e)}),!_0x426d98['jsonSchema']&&_0x452aab['push']({'validator':_0x2b59e8(0x157),'reason':_0x2b59e8(0x11c),'install':_0x2b59e8(0x13b),'priority':_0x2b59e8(0x10e)}),_0x452aab;}}export default ConfigValidator;
1
+ const a0_0x43f094=a0_0x38e9;(function(_0x1caf43,_0x154377){const _0x3e1497=a0_0x38e9,_0xbf6cd4=_0x1caf43();while(!![]){try{const _0x11784a=parseInt(_0x3e1497(0xfa))/0x1*(-parseInt(_0x3e1497(0x121))/0x2)+-parseInt(_0x3e1497(0xc9))/0x3*(parseInt(_0x3e1497(0xce))/0x4)+-parseInt(_0x3e1497(0xc6))/0x5*(-parseInt(_0x3e1497(0x137))/0x6)+-parseInt(_0x3e1497(0xd3))/0x7*(-parseInt(_0x3e1497(0x120))/0x8)+parseInt(_0x3e1497(0xc1))/0x9+parseInt(_0x3e1497(0x10c))/0xa+parseInt(_0x3e1497(0xfb))/0xb*(-parseInt(_0x3e1497(0x125))/0xc);if(_0x11784a===_0x154377)break;else _0xbf6cd4['push'](_0xbf6cd4['shift']());}catch(_0x5b7a99){_0xbf6cd4['push'](_0xbf6cd4['shift']());}}}(a0_0x126b,0x3dd0d));import{exec}from'child_process';function a0_0x38e9(_0x3a55b7,_0x49af43){_0x3a55b7=_0x3a55b7-0xbe;const _0x126b63=a0_0x126b();let _0x38e901=_0x126b63[_0x3a55b7];if(a0_0x38e9['ZzJsCB']===undefined){var _0x20c335=function(_0x4bec53){const _0x414cbc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4a4298='',_0x1c9f43='';for(let _0x4f772f=0x0,_0x519737,_0x1f229b,_0x39ca1e=0x0;_0x1f229b=_0x4bec53['charAt'](_0x39ca1e++);~_0x1f229b&&(_0x519737=_0x4f772f%0x4?_0x519737*0x40+_0x1f229b:_0x1f229b,_0x4f772f++%0x4)?_0x4a4298+=String['fromCharCode'](0xff&_0x519737>>(-0x2*_0x4f772f&0x6)):0x0){_0x1f229b=_0x414cbc['indexOf'](_0x1f229b);}for(let _0x3ae52c=0x0,_0x19436c=_0x4a4298['length'];_0x3ae52c<_0x19436c;_0x3ae52c++){_0x1c9f43+='%'+('00'+_0x4a4298['charCodeAt'](_0x3ae52c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1c9f43);};a0_0x38e9['skVdtp']=_0x20c335,a0_0x38e9['nWswLY']={},a0_0x38e9['ZzJsCB']=!![];}const _0x1e8d8f=_0x126b63[0x0],_0x78dda3=_0x3a55b7+_0x1e8d8f,_0x2f5477=a0_0x38e9['nWswLY'][_0x78dda3];return!_0x2f5477?(_0x38e901=a0_0x38e9['skVdtp'](_0x38e901),a0_0x38e9['nWswLY'][_0x78dda3]=_0x38e901):_0x38e901=_0x2f5477,_0x38e901;}import{promisify}from'util';import a0_0x4a4298 from'path';function a0_0x126b(){const _0x22ad6d=['BwfW','lNrMDMfYCW','AgLNAa','CgfYC2vzyw1SBgLUDfjLC3vSDhm','lNrM','DMfSAwrHDgu','ChvZAa','z3vPzgvSAw5L','lMvUDG','zg9JA2vYzMLSzq','zgv0zwn0rMLSzvr5Cgu','y29SDw1U','DhjPBq','DMfSAwrHDgveB2nRzxjMAwXL','BM9jBxbSAwnPDefUEq','BgLUzq','DxrMltG','C2vJCMv0','DgvYCMfMB3jT','z2L0AhvIlwfJDgLVBNm','DMfSAwrHDgvzqu1m','EwfTBgXPBNqGls12zxjZAw9U','y2HLy2TVDIaTzIaI','Aw5ZDgfUy2vqyxrO','BwfWsgfKB2XPBNrtzxzLCML0Eq','C3rKB3v0','AgfKB2XPBNqGzgv0zwn0zwq','y2HLy2TFy2XHC3m','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','zMLSzv9SAw5Lx3jHBMDL','D2fYBG','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','BwfWwwfTBgXPBNrtzxzLCML0Eq','igrLDgvJDgvKigLUic5LBNyGzMLSzq','BwvZC2fNzq','muzSwNvtta','mtiXr0XcAeDK','wufntcbMAwXLihzHBgLKyxrPB24','BwfWq2HLy2TVDLnLDMvYAxr5','EwfTBgXPBNqGBM90igf2ywLSywjSzq','Dw5RBM93BG','y29TCgLSzq','C2vJDxjPDhK','BgvUz3rO','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','y2f0zwDVCNK','lNLHBwW','A3vIzxjUzxrLCW','C3rHCNrZv2L0Aa','zw52lxzHBgLKyxrVCG','ANnVBLnJAgvTyq','yxzHAwXHyMXLu2nHBM5LCNm','CgfYC2u','mZGXnZyXmer6sMn6tq','zMLSDgvY','DMvYC2LVBG','B2jQzwn0','C2v2zxjPDhK','y29Kzq','ANnVBI1WyxjZzq','y2HLy2TVDIbKzxrLy3rLza','BM9YBwfSAxPLuMvZDwX0CW','ANnVBG','C3LUDgf4','rvjst1i','yMfZzw5HBwu','Ew91CI1RzxKTAgvYzq','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','ywP2ig5VDcbHDMfPBgfIBgu','yMvZDc1WCMfJDgLJzq','DhnJB25MAwCUANnVBG','sw52ywXPzcbku09ooIa','zxH0BMfTzq','mtG0s1nyBMLq','mJyZmJK4sKPwAeP0','y29TCgLSzxjpChrPB25Z','zxjYB3i','y2HHBMDLBwu','ndi0mZq0rgHmCwXj','DMfSAwrHDgvuC0nVBMzPzW','lNLTBa','zg9JA2vYlwnVBxbVC2u','zgvMyxvSDa','Dg9mB3DLCKnHC2u','zM9YrwfJAa','u0vwrvjjvfK','AgfKB2XPBNq','y2HLy2TVDG','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','CgfYC2viywrVBgLUDfjLC3vSDhm','zxjYB3jZ','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','ChjPDMf0zsbRzxK','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','lMPZB24','nMv3Ae9stG','zMfPBgvKx2nOzwnRCW','q1jjveLdquW','CMvTzwrPyxrPB24','mtC2mtKZowTTvMPYCa','Bw9KDwXL','Bg9Nz2vY','EwfTBgXPBNq','ANnVBI1Zy2HLBwe','mty0nJiWmg5MAK51wa','DMfSAwrHDgvqywnRywDLsNnVBG','ywP2','mtmWmdCZmxD0rKTXCW','CMvZDwX0CW','Aw5JBhvKzxm','CMvMzxjLBMnLCW','C3rYAw5N','nhnOqMzJAG','DMfSAwrHDgvfBNzgAwXL','zgvIDwC','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','CMvHzezPBgu','ote0otDSEujmEhu','DMfSAwrHDgvxAxrOq2HLy2TVDG','EwfTBa','Dg9Rzw4'];a0_0x126b=function(){return _0x22ad6d;};return a0_0x126b();}import a0_0x1c9f43 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x4f772f=null){const _0x32ec8c=a0_0x38e9;this[_0x32ec8c(0xc3)]=_0x4f772f,this['availableScanners']=null,this['scannerCache']=new Map();}async[a0_0x43f094(0x135)](){const _0x2353a0=a0_0x43f094;if(this[_0x2353a0(0x10a)]!==null)return this['availableScanners'];const _0x519737={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x519737[_0x2353a0(0x12e)]=!![],this[_0x2353a0(0xc3)]?.['debug'](_0x2353a0(0x113));}catch(_0x1f229b){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x1f229b['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x519737['hadolint']=!![],this['logger']?.['debug'](_0x2353a0(0xf1));}catch(_0x39ca1e){this['logger']?.[_0x2353a0(0xd0)]('hadolint\x20not\x20available',{'error':_0x39ca1e[_0x2353a0(0xf9)]});}try{await execAsync(_0x2353a0(0xec),{'timeout':0x1388}),_0x519737['yamllint']=!![],this['logger']?.['debug']('yamllint\x20detected');}catch(_0x3ae52c){this['logger']?.['debug'](_0x2353a0(0xfe),{'error':_0x3ae52c[_0x2353a0(0xf9)]});}try{await import(_0x2353a0(0xc8)),_0x519737['jsonSchema']=!![],this[_0x2353a0(0xc3)]?.[_0x2353a0(0xd0)]('JSON\x20Schema\x20validation\x20available');}catch(_0x19436c){this['logger']?.[_0x2353a0(0xd0)](_0x2353a0(0x11b),{'error':_0x19436c[_0x2353a0(0xf9)]});}return this['availableScanners']=_0x519737,_0x519737;}async[a0_0x43f094(0xdc)](_0x18935,_0x51eae5={}){const _0x445ecf=a0_0x43f094,_0x140e2b=[],_0x54165e=await this[_0x445ecf(0x135)](),_0x51c614=this[_0x445ecf(0xe1)](_0x18935);this['logger']?.['debug']('Validating\x20config\x20file',{'filePath':_0x18935,'fileType':_0x51c614});switch(_0x51c614){case'dockerfile':if(_0x54165e['hadolint']){const _0x2541a7=await this[_0x445ecf(0xe4)](_0x18935,_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x2541a7);}if(_0x54165e[_0x445ecf(0x12e)]){const _0x265fa8=await this['validateWithCheckov'](_0x18935,_0x445ecf(0xe0),_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x265fa8);}break;case _0x445ecf(0x128):if(_0x54165e['yamllint']){const _0x3b6669=await this[_0x445ecf(0xeb)](_0x18935,_0x51eae5);_0x140e2b['push'](..._0x3b6669);}if(_0x54165e[_0x445ecf(0x12e)]){const _0x55d070=await this[_0x445ecf(0xd4)](_0x18935,'docker_compose',_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x55d070);}break;case'kubernetes':if(_0x54165e['yamllint']){const _0x52ef2d=await this['validateYAML'](_0x18935,_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x52ef2d);}if(_0x54165e[_0x445ecf(0x12e)]){const _0x12af82=await this[_0x445ecf(0xd4)](_0x18935,_0x445ecf(0x106),_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x12af82);}break;case'terraform':if(_0x54165e['checkov']){const _0x25c74f=await this['validateWithCheckov'](_0x18935,_0x445ecf(0xe9),_0x51eae5);_0x140e2b['push'](..._0x25c74f);}break;case'package.json':if(_0x54165e[_0x445ecf(0x109)]){const _0x39baa0=await this[_0x445ecf(0xc7)](_0x18935,_0x51eae5);_0x140e2b['push'](..._0x39baa0);}break;case _0x445ecf(0x11d):if(_0x54165e[_0x445ecf(0x109)]){const _0x36c604=await this['validateTsConfig'](_0x18935,_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x36c604);}break;case _0x445ecf(0xea):if(_0x54165e[_0x445ecf(0xc4)]){const _0x3bda00=await this[_0x445ecf(0xeb)](_0x18935,_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x3bda00);}break;case'env':const _0x36c149=await this[_0x445ecf(0xcf)](_0x18935,_0x51eae5);_0x140e2b[_0x445ecf(0xdd)](..._0x36c149);break;case'yaml':if(_0x54165e[_0x445ecf(0xc4)]){const _0xa4856e=await this[_0x445ecf(0xeb)](_0x18935,_0x51eae5);_0x140e2b['push'](..._0xa4856e);}break;default:this['logger']?.[_0x445ecf(0xf5)]('Unknown\x20config\x20file\x20type',{'filePath':_0x18935,'fileType':_0x51c614});return[];}return this['normalizeResults'](_0x140e2b);}async['validateDockerfile'](_0x191c4c,_0x11c47={}){const _0x18a7b4=a0_0x43f094;try{const _0x3bb5d2=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x191c4c+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x3349b4=JSON['parse'](_0x3bb5d2['stdout']);return this[_0x18a7b4(0x131)](_0x3349b4,_0x191c4c);}catch(_0x28e552){if(_0x28e552[_0x18a7b4(0xf0)])try{const _0x289e2a=JSON['parse'](_0x28e552[_0x18a7b4(0xf0)]);return this[_0x18a7b4(0x131)](_0x289e2a,_0x191c4c);}catch(_0x4c63bf){this['logger']?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x4c63bf['message']});}return this[_0x18a7b4(0xc3)]?.['error'](_0x18a7b4(0x133),{'error':_0x28e552[_0x18a7b4(0xf9)]}),[];}}['parseHadolintResults'](_0x479a74,_0x444c4d){const _0x386efa=a0_0x43f094,_0x187371=[];if(Array['isArray'](_0x479a74))for(const _0x1399ce of _0x479a74){_0x187371['push']({'file':_0x444c4d,'line':_0x1399ce[_0x386efa(0xe6)]||0x1,'column':_0x1399ce[_0x386efa(0xe2)]||0x1,'severity':this['mapHadolintSeverity'](_0x1399ce['level']),'rule':_0x1399ce[_0x386efa(0x111)],'message':_0x1399ce['message'],'category':'dockerfile','validator':'hadolint'});}return _0x187371;}async['validateYAML'](_0x5686dd,_0x59db73={}){const _0x402408=a0_0x43f094;try{const _0x1910d6=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x5686dd+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x402408(0xda)](_0x1910d6['stdout'],_0x5686dd);}catch(_0x11dcc3){if(_0x11dcc3['stdout'])return this['parseYamllintResults'](_0x11dcc3[_0x402408(0xf0)],_0x5686dd);return this[_0x402408(0xc3)]?.[_0x402408(0x123)]('yamllint\x20validation\x20failed',{'error':_0x11dcc3[_0x402408(0xf9)]}),[];}}['parseYamllintResults'](_0x102eb4,_0x9b90e6){const _0x509284=a0_0x43f094,_0x28ef33=[],_0x7801a6=_0x102eb4['split']('\x0a')[_0x509284(0x10d)](_0x57cb10=>_0x57cb10['trim']());for(const _0x2886b4 of _0x7801a6){const _0x4f4a0c=_0x2886b4['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x4f4a0c){const [,_0x44537d,_0x10d897,_0x86f84d,_0x122ea0,_0x17cc70,_0x3d18b0]=_0x4f4a0c;_0x28ef33['push']({'file':_0x9b90e6,'line':parseInt(_0x10d897,0xa),'column':parseInt(_0x86f84d,0xa),'severity':this[_0x509284(0xf7)](_0x122ea0),'rule':_0x3d18b0,'message':_0x17cc70,'category':'yaml','validator':_0x509284(0xc4)});}}return _0x28ef33;}async[a0_0x43f094(0xd4)](_0x46aebe,_0x253ccf,_0x322bf2={}){const _0x4593de=a0_0x43f094;try{const _0x566250=await execAsync(_0x4593de(0xed)+_0x46aebe+'\x22\x20--framework\x20'+_0x253ccf+_0x4593de(0x12f),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1d80f4=JSON['parse'](_0x566250['stdout']);return this['parseCheckovResults'](_0x1d80f4,_0x46aebe);}catch(_0x6adcf9){if(_0x6adcf9[_0x4593de(0xf0)])try{const _0x55852=JSON['parse'](_0x6adcf9[_0x4593de(0xf0)]);return this['parseCheckovResults'](_0x55852,_0x46aebe);}catch(_0x624c11){this[_0x4593de(0xc3)]?.[_0x4593de(0x123)](_0x4593de(0x11a),{'error':_0x624c11['message']});}return this['logger']?.['error']('checkov\x20validation\x20failed',{'error':_0x6adcf9['message']}),[];}}['parseCheckovResults'](_0xa35a86,_0x3eccf2){const _0x4de821=a0_0x43f094,_0x5a0dd2=[];if(_0xa35a86[_0x4de821(0xca)]&&_0xa35a86[_0x4de821(0xca)][_0x4de821(0xbe)])for(const _0x4837cd of _0xa35a86['results'][_0x4de821(0xbe)]){_0x5a0dd2[_0x4de821(0xdd)]({'file':_0x3eccf2,'line':_0x4837cd['file_line_range']?_0x4837cd[_0x4de821(0xf4)][0x0]:0x1,'column':0x1,'severity':this[_0x4de821(0xfd)](_0x4837cd[_0x4de821(0xf2)]),'rule':_0x4837cd['check_id'],'message':_0x4837cd['check_name']||_0x4837cd['check_id'],'category':'security','validator':_0x4de821(0x12e),'remediation':_0x4837cd['guideline'],'cwe':_0x4837cd['cwe'],'references':_0x4837cd[_0x4de821(0xde)]?[_0x4837cd[_0x4de821(0xde)]]:[]});}return _0x5a0dd2;}async[a0_0x43f094(0xc7)](_0x40ec95,_0x4c9afd={}){const _0x4fa1dc=a0_0x43f094;try{const _0x121afe=(await import(_0x4fa1dc(0xc8)))[_0x4fa1dc(0x129)],_0x1cadc5=(await import('ajv-formats'))['default'],_0x57e966=await a0_0x1c9f43['readFile'](_0x40ec95,_0x4fa1dc(0xe7)),_0x5277a5=JSON[_0x4fa1dc(0x10b)](_0x57e966),_0x51b0f5=new _0x121afe({'allErrors':!![],'strict':![]});_0x1cadc5(_0x51b0f5);const _0x1f782e={'type':_0x4fa1dc(0x10f),'required':['name',_0x4fa1dc(0x10e)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':'string'},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':_0x4fa1dc(0xcd),'enum':[_0x4fa1dc(0xc2),'commonjs']},'scripts':{'type':'object'},'dependencies':{'type':'object'},'devDependencies':{'type':_0x4fa1dc(0x10f)}},'additionalProperties':!![]},_0x429460=_0x51b0f5[_0x4fa1dc(0x100)](_0x1f782e),_0x55a7bc=_0x429460(_0x5277a5);if(!_0x55a7bc&&_0x429460[_0x4fa1dc(0x132)])return _0x429460['errors'][_0x4fa1dc(0xd7)](_0x179239=>({'file':_0x40ec95,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x4fa1dc(0x12c)][_0x4fa1dc(0x117)],'rule':'json-schema','message':_0x179239['instancePath']?_0x179239[_0x4fa1dc(0xee)]+'\x20'+_0x179239[_0x4fa1dc(0xf9)]:'must\x20have\x20required\x20property\x20\x27'+_0x179239['params']['missingProperty']+'\x27','category':'validation','validator':_0x4fa1dc(0xc5)}));return[];}catch(_0x20b764){return this[_0x4fa1dc(0xc3)]?.['error'](_0x4fa1dc(0xf3),{'error':_0x20b764[_0x4fa1dc(0xf9)]}),[{'file':_0x40ec95,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x4fa1dc(0x12c)][_0x4fa1dc(0x117)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x20b764[_0x4fa1dc(0xf9)],'category':_0x4fa1dc(0x116),'validator':_0x4fa1dc(0x112)}];}}async[a0_0x43f094(0x126)](_0x5aa048,_0x3b836f={}){const _0x23f206=a0_0x43f094;try{const _0x2f36c5=await a0_0x1c9f43[_0x23f206(0xd2)](_0x5aa048,_0x23f206(0xe7)),_0x45912d=JSON['parse'](_0x2f36c5),_0x58e022=[];if(_0x45912d[_0x23f206(0x122)]){const _0x56d1d3=_0x45912d['compilerOptions'];!_0x56d1d3['strict']&&_0x58e022['push']({'file':_0x5aa048,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'strict-mode','message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x23f206(0x11c),'validator':'tsconfig-validator'}),_0x56d1d3[_0x23f206(0xe5)]===![]&&_0x58e022['push']({'file':_0x5aa048,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'no-implicit-any','message':_0x23f206(0x130),'category':'best-practice','validator':'tsconfig-validator'});}return _0x58e022;}catch(_0x323a0a){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x323a0a[_0x23f206(0xf9)]}),[{'file':_0x5aa048,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x23f206(0x117)],'rule':'json-parse','message':_0x23f206(0x11e)+_0x323a0a[_0x23f206(0xf9)],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x55d229,_0x1db149={}){const _0x53228f=a0_0x43f094;try{const _0x2fa886=await a0_0x1c9f43['readFile'](_0x55d229,_0x53228f(0xe7)),_0xc5cabf=[],_0x1013b9=_0x2fa886['split']('\x0a'),_0x936caf=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x53228f(0xe8)},{'pattern':/token/i,'name':_0x53228f(0xd6)},{'pattern':/private[_-]?key/i,'name':_0x53228f(0x134)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x1013b9[_0x53228f(0x12b)]((_0x4c6142,_0x5eaa8f)=>{const _0x3337b7=_0x53228f,_0x1e8875=_0x4c6142[_0x3337b7(0xe3)]();if(!_0x1e8875||_0x1e8875['startsWith']('#'))return;if(_0x1e8875[_0x3337b7(0xcb)]('=')){const [_0x4342e8,_0x7055cb]=_0x1e8875['split']('='),_0x43bbd0=_0x4342e8[_0x3337b7(0x12a)](),_0x4961af=_0x7055cb?.['trim']()||'',_0x284579=_0x4961af&&_0x4961af!==''&&!_0x4961af[_0x3337b7(0x107)]('$')&&_0x4961af!==_0x3337b7(0x119)&&_0x4961af!==_0x3337b7(0x124)&&_0x4961af[_0x3337b7(0x102)]>0x5;if(_0x284579)for(const {pattern:_0x5ebd95,name:_0x54fa39}of _0x936caf){if(_0x5ebd95['test'](_0x43bbd0)){_0xc5cabf[_0x3337b7(0xdd)]({'file':_0x55d229,'line':_0x5eaa8f+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x3337b7(0x12c)][_0x3337b7(0xbf)],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0x54fa39+_0x3337b7(0xf8),'category':_0x3337b7(0x101),'validator':_0x3337b7(0x108),'remediation':_0x3337b7(0xd1)});break;}}}}),_0xc5cabf;}catch(_0x4e8bf0){return this['logger']?.['error']('.env\x20validation\x20failed',{'error':_0x4e8bf0['message']}),[];}}[a0_0x43f094(0xe1)](_0xdd7123){const _0x557174=a0_0x43f094,_0x1b9cba=a0_0x4a4298[_0x557174(0x118)](_0xdd7123)[_0x557174(0x12a)](),_0x2b9e0a=a0_0x4a4298['dirname'](_0xdd7123);if(_0x1b9cba==='dockerfile')return _0x557174(0xe0);if(_0x1b9cba==='docker-compose.yml'||_0x1b9cba==='docker-compose.yaml')return'docker-compose';if(_0x1b9cba==='package.json')return'package.json';if(_0x1b9cba==='tsconfig.json')return'tsconfig.json';if(_0x1b9cba===_0x557174(0xdf)||_0x1b9cba['endsWith']('.env'))return'env';if(_0x2b9e0a['includes']('.github/workflows'))return'github-actions';if(_0x2b9e0a[_0x557174(0xcb)]('kubernetes')||_0x2b9e0a['includes']('k8s'))return _0x557174(0x106);const _0x137a85=a0_0x4a4298[_0x557174(0x11f)](_0xdd7123)[_0x557174(0x12a)]();if(_0x137a85===_0x557174(0xdb)||_0x137a85===_0x557174(0xd8))return _0x557174(0xe9);if(_0x137a85===_0x557174(0x127)||_0x137a85===_0x557174(0x105))return _0x557174(0xd5);if(_0x137a85===_0x557174(0x136))return _0x557174(0x115);return _0x557174(0xff);}[a0_0x43f094(0x114)](_0x1e170f){const _0x13be59=a0_0x43f094;return _0x1e170f[_0x13be59(0xd7)](_0x48f6c8=>({'file':_0x48f6c8['file'],'line':_0x48f6c8[_0x13be59(0xe6)]||0x1,'column':_0x48f6c8['column']||0x1,'severity':_0x48f6c8[_0x13be59(0x110)]||STATIC_ANALYSIS[_0x13be59(0x12c)]['WARNING'],'rule':_0x48f6c8['rule']||_0x13be59(0xff),'message':_0x48f6c8['message']||'Validation\x20issue\x20detected','category':_0x48f6c8[_0x13be59(0x104)]||'validation','validator':_0x48f6c8['validator'],'cwe':_0x48f6c8['cwe']||null,'remediation':_0x48f6c8[_0x13be59(0xc0)]||null,'references':_0x48f6c8[_0x13be59(0xcc)]||[]}));}[a0_0x43f094(0xef)](_0x55de63){const _0x22697b=a0_0x43f094,_0x37f356={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x22697b(0x12c)]['WARNING'],'info':STATIC_ANALYSIS[_0x22697b(0x12c)]['INFO'],'style':STATIC_ANALYSIS['SEVERITY']['INFO']};return _0x37f356[_0x55de63?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapYamllintSeverity'](_0x159a89){const _0x532f0d=a0_0x43f094,_0x1457fc={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x532f0d(0x12c)]['WARNING']};return _0x1457fc[_0x159a89?.['toLowerCase']()]||STATIC_ANALYSIS[_0x532f0d(0x12c)]['WARNING'];}[a0_0x43f094(0xfd)](_0x1112ce){const _0x4ef676=a0_0x43f094;return STATIC_ANALYSIS[_0x4ef676(0x12c)][_0x4ef676(0x117)];}async['getValidatorStatus'](){const _0x1a246a=await this['detectAvailableValidators']();return{'validators':_0x1a246a,'recommendations':this['getInstallRecommendations'](_0x1a246a)};}['getInstallRecommendations'](_0x2a2ced){const _0xedc979=a0_0x43f094,_0x183cd4=[];return!_0x2a2ced[_0xedc979(0x12e)]&&_0x183cd4['push']({'validator':_0xedc979(0x12e),'reason':_0xedc979(0xf6),'install':'pip\x20install\x20checkov','priority':_0xedc979(0xd9)}),!_0x2a2ced['hadolint']&&_0x183cd4['push']({'validator':_0xedc979(0x12d),'reason':_0xedc979(0x103),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x2a2ced['yamllint']&&_0x183cd4[_0xedc979(0xdd)]({'validator':'yamllint','reason':_0xedc979(0xfc),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x2a2ced['jsonSchema']&&_0x183cd4[_0xedc979(0xdd)]({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x183cd4;}}export default ConfigValidator;