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

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 -3
  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.6
101
+ # Should display: Loxia Autopilot One v2.0.7
102
102
  ```
103
103
 
104
104
  ### 4. Create an API Key
@@ -297,12 +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.6)
300
+ ### Current Version (2.0.7)
301
301
 
302
+ - Compaction: preserve recent achievements, file paths, meaningful tool outcomes; 8K summary tokens
303
+ - Tool invocation guidance: dependent calls must split across messages
304
+ - CI publish fix: OIDC auth no longer interferes with npm install
305
+
306
+ ### v2.0.6
302
307
  - Tool path sync: terminal `cd` now propagates to all tools (filesystem, seek, pdf, etc.)
303
308
  - Streaming performance: chunk batching, incremental parser, reduced overscan
304
309
  - WebSocket log suppression for high-frequency stream chunks
305
- - Agent system prompt: tool result availability guidance for dependent vs independent calls
306
310
 
307
311
  ### Previous Versions
308
312
 
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
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));
3
+ const a0_0x4122c6=a0_0x3d78;(function(_0x4344b9,_0x55f9b0){const _0x44cc8f=a0_0x3d78,_0x5d0016=_0x4344b9();while(!![]){try{const _0x2cda76=parseInt(_0x44cc8f(0x202))/0x1*(-parseInt(_0x44cc8f(0x1f4))/0x2)+-parseInt(_0x44cc8f(0x1f9))/0x3+-parseInt(_0x44cc8f(0x215))/0x4+-parseInt(_0x44cc8f(0x1fd))/0x5*(-parseInt(_0x44cc8f(0x204))/0x6)+-parseInt(_0x44cc8f(0x22e))/0x7+-parseInt(_0x44cc8f(0x234))/0x8+parseInt(_0x44cc8f(0x20f))/0x9;if(_0x2cda76===_0x55f9b0)break;else _0x5d0016['push'](_0x5d0016['shift']());}catch(_0x23d319){_0x5d0016['push'](_0x5d0016['shift']());}}}(a0_0x53d0,0xcb831));import{fileURLToPath}from'url';function a0_0x53d0(){const _0x2645b7=['\x20but\x20not\x20responding.','Please\x20open\x20manually:\x20','6303464AbnFkl','Loxia\x20Autopilot\x20One\x20v','Starting\x20Loxia\x20server...\x0a','log','../src/services/portRegistry.js','LOXIA_PORT','darwin','src','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','Server\x20discovered\x20at\x20','\x0aLoxia\x20Autopilot\x20One\x20v','--help','\x0aPlease\x20start\x20the\x20server\x20first:','now','destroy','cmd','Starting\x20Terminal\x20UI...\x0a','package.json','SIGTERM','utf8','includes','LOXIA_HOST','--port','help','web','11265891AQONjW','Waiting\x20for\x20server\x20to\x20start...','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','inherit','message','error','9152680qSgyJq','ignore','getService','port','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','Looking\x20for\x20running\x20server...','Server\x20running\x20at\x20http://','kill','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','Starting\x20Loxia\x20server\x20in\x20background...','version','index.js','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','\x0aShutting\x20down\x20server...','\x0a✓\x20Server\x20running\x20at\x20','parse','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','2TVczRu','\x0aOpening\x20Web\x20UI\x20at\x20','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','xdg-open','3743904tYPxCw','--version','loxia-terminal.js','win32','25405gccmPo','--host','cleanupStaleEntries','localhost','unref','68851VyCNmA',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','1134djzLWW','\x0aServer\x20registered\x20at\x20','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','length','pid','SIGINT','exit','127.0.0.1','Unknown\x20command:\x20','http://','platform','49675131sAVPPj','host','ceil','toString'];a0_0x53d0=function(){return _0x2645b7;};return a0_0x53d0();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';function a0_0x3d78(_0x1f0c60,_0x127daa){_0x1f0c60=_0x1f0c60-0x1e5;const _0x53d078=a0_0x53d0();let _0x3d78a2=_0x53d078[_0x1f0c60];return _0x3d78a2;}import a0_0x31cbd9 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x4122c6(0x20b),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv']['slice'](0x2),command=args[0x0]&&!args[0x0]['startsWith']('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes'](a0_0x4122c6(0x220))||args[a0_0x4122c6(0x229)]('-h'),'version':args['includes'](a0_0x4122c6(0x1fa))||args[a0_0x4122c6(0x229)]('-v')};for(let i=0x0;i<args[a0_0x4122c6(0x207)];i++){args[i]===a0_0x4122c6(0x22b)&&args[i+0x1]&&(flags[a0_0x4122c6(0x1e6)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x4122c6(0x1fe)&&args[i+0x1]&&(flags[a0_0x4122c6(0x210)]=args[i+0x1]);}const explicitPort=flags[a0_0x4122c6(0x1e6)],host=flags['host']||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x4122c6(0x226)),pkg=JSON[a0_0x4122c6(0x1f2)](readFileSync(pkgPath,a0_0x4122c6(0x228)));console[a0_0x4122c6(0x218)](a0_0x4122c6(0x216)+pkg[a0_0x4122c6(0x1ed)]),process[a0_0x4122c6(0x20a)](0x0);}if(flags[a0_0x4122c6(0x22c)]||!command){const pkgPath=join(__dirname,'..',a0_0x4122c6(0x226)),pkg=JSON['parse'](readFileSync(pkgPath,'utf8'));console[a0_0x4122c6(0x218)](a0_0x4122c6(0x21f)+pkg[a0_0x4122c6(0x1ed)]+'\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20'+DEFAULT_PORT+a0_0x4122c6(0x203)+DEFAULT_HOST+')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a'),process[a0_0x4122c6(0x20a)](0x0);}async function getPortRegistry(){const _0x394bce=a0_0x4122c6,{getPortRegistry:_0x1f2090}=await import(_0x394bce(0x219));return _0x1f2090();}async function discoverBackend(){const _0x23e6ef=a0_0x4122c6;try{const _0xc91dde=await getPortRegistry();await _0xc91dde[_0x23e6ef(0x1ff)]();const _0x3bdfd8=await _0xc91dde[_0x23e6ef(0x1e5)]('backend');if(_0x3bdfd8)return{'host':_0x3bdfd8[_0x23e6ef(0x210)]||_0x23e6ef(0x200),'port':_0x3bdfd8['port'],'pid':_0x3bdfd8[_0x23e6ef(0x208)]};return null;}catch(_0xbb3779){return null;}}async function checkServerRunning(_0x2406ad,_0x22c035,_0x18bdd4=0x1){for(let _0x38609a=0x0;_0x38609a<_0x18bdd4;_0x38609a++){const _0xe75624=await new Promise(_0x12352b=>{const _0x217076=a0_0x3d78,_0x1ed49b=a0_0x31cbd9['get'](_0x217076(0x20d)+_0x2406ad+':'+_0x22c035+'/api/health',_0x36d243=>{_0x12352b(_0x36d243['statusCode']===0xc8);});_0x1ed49b['on'](_0x217076(0x233),()=>_0x12352b(![])),_0x1ed49b['setTimeout'](0x7d0,()=>{const _0x2efc45=_0x217076;_0x1ed49b[_0x2efc45(0x223)](),_0x12352b(![]);});});if(_0xe75624)return!![];_0x38609a<_0x18bdd4-0x1&&await new Promise(_0x4a49f3=>setTimeout(_0x4a49f3,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x5ea7c6=SERVER_STARTUP_TIMEOUT){const _0xf8ff1=a0_0x4122c6,_0x15037c=Date[_0xf8ff1(0x222)]();while(Date[_0xf8ff1(0x222)]()-_0x15037c<_0x5ea7c6){const _0x3c7819=await discoverBackend();if(_0x3c7819){const _0x2b6d72=await checkServerRunning(_0x3c7819[_0xf8ff1(0x210)],_0x3c7819['port']);if(_0x2b6d72)return _0x3c7819;}await new Promise(_0x549385=>setTimeout(_0x549385,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x247a7c,_0x5a8adc,_0x57bd72=SERVER_STARTUP_TIMEOUT){const _0x418849=a0_0x4122c6,_0x3b6af2=Math[_0x418849(0x211)](_0x57bd72/SERVER_CHECK_INTERVAL),_0x299350=await checkServerRunning(_0x247a7c,_0x5a8adc,_0x3b6af2);return _0x299350?{'host':_0x247a7c,'port':_0x5a8adc}:null;}function openBrowser(_0x44189b){const _0x2a8afa=a0_0x4122c6;let _0x467627,_0x23917c;if(process['platform']===_0x2a8afa(0x21b))_0x467627='open',_0x23917c=[_0x44189b];else process[_0x2a8afa(0x20e)]===_0x2a8afa(0x1fc)?(_0x467627=_0x2a8afa(0x224),_0x23917c=['/c','start','\x22\x22',_0x44189b]):(_0x467627=_0x2a8afa(0x1f8),_0x23917c=[_0x44189b]);const _0x43508e=spawn(_0x467627,_0x23917c,{'detached':!![],'stdio':_0x2a8afa(0x235)});_0x43508e[_0x2a8afa(0x201)](),_0x43508e['on'](_0x2a8afa(0x233),()=>{const _0x26bbc1=_0x2a8afa;console[_0x26bbc1(0x218)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x26bbc1(0x218)](_0x26bbc1(0x214)+_0x44189b);});}function startServer(_0x19ecd8=![]){const _0x24a03d=a0_0x4122c6,_0x108804={...process.env};explicitPort&&(_0x108804[_0x24a03d(0x21a)]=explicitPort['toString'](),_0x108804['PORT']=explicitPort[_0x24a03d(0x212)]());flags[_0x24a03d(0x210)]&&(_0x108804[_0x24a03d(0x22a)]=flags[_0x24a03d(0x210)]);const _0x1c52b0=join(__dirname,'..',_0x24a03d(0x21c),_0x24a03d(0x1ee)),_0x9a5b9f=spawn('node',[_0x1c52b0],{'cwd':join(__dirname,'..'),'env':_0x108804,'stdio':_0x19ecd8?[_0x24a03d(0x235),'ignore','ignore']:_0x24a03d(0x231),'detached':_0x19ecd8});return _0x19ecd8&&_0x9a5b9f[_0x24a03d(0x201)](),_0x9a5b9f;}function startTerminalUIProcess(_0x84f496,_0x403a19){const _0x1ca86e=a0_0x4122c6,_0x3a3ac9=join(__dirname,_0x1ca86e(0x1fb)),_0x3107d2={...process.env,'LOXIA_PORT':_0x403a19['toString'](),'LOXIA_HOST':_0x84f496},_0x5aee5c=spawn('node',[_0x3a3ac9],{'cwd':join(__dirname,'..'),'env':_0x3107d2,'stdio':_0x1ca86e(0x231)});return _0x5aee5c;}const commands={'web':async()=>{const _0x520cc8=a0_0x4122c6;console[_0x520cc8(0x218)](_0x520cc8(0x217));const _0x54f582=startServer(![]);console[_0x520cc8(0x218)](_0x520cc8(0x22f));let _0x4d1fbe;explicitPort?_0x4d1fbe=await waitForServerAtPort(host,explicitPort):_0x4d1fbe=await waitForServerWithDiscovery();if(_0x4d1fbe){const _0x62b977='http://'+_0x4d1fbe['host']+':'+_0x4d1fbe[_0x520cc8(0x1e6)];console['log'](_0x520cc8(0x1f5)+_0x62b977),openBrowser(_0x62b977);}else console[_0x520cc8(0x218)](_0x520cc8(0x1ef));process['on'](_0x520cc8(0x209),()=>_0x54f582[_0x520cc8(0x1ea)]('SIGINT')),process['on'](_0x520cc8(0x227),()=>_0x54f582['kill'](_0x520cc8(0x227))),_0x54f582['on'](_0x520cc8(0x20a),_0x551d9b=>process[_0x520cc8(0x20a)](_0x551d9b||0x0));},'plus-web':async()=>{const _0x217b1e=a0_0x4122c6;await commands[_0x217b1e(0x22d)]();},'serve':async()=>{const _0x455d61=a0_0x4122c6;console[_0x455d61(0x218)](_0x455d61(0x217));const _0x17eb52=startServer(![]);console[_0x455d61(0x218)](_0x455d61(0x22f));let _0x23d3ab;explicitPort?_0x23d3ab=await waitForServerAtPort(host,explicitPort):_0x23d3ab=await waitForServerWithDiscovery();if(_0x23d3ab){const _0x1192d8=_0x455d61(0x20d)+_0x23d3ab[_0x455d61(0x210)]+':'+_0x23d3ab[_0x455d61(0x1e6)];console['log'](_0x455d61(0x1f1)+_0x1192d8),console[_0x455d61(0x218)](_0x455d61(0x230)+_0x1192d8),console[_0x455d61(0x218)](_0x455d61(0x1e7)),console[_0x455d61(0x218)]('\x20\x20API\x20Health:\x20\x20\x20'+_0x1192d8+'/api/health\x0a');}else console[_0x455d61(0x218)](_0x455d61(0x1f7)),console[_0x455d61(0x218)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on'](_0x455d61(0x209),()=>_0x17eb52[_0x455d61(0x1ea)](_0x455d61(0x209))),process['on'](_0x455d61(0x227),()=>_0x17eb52['kill'](_0x455d61(0x227))),_0x17eb52['on'](_0x455d61(0x20a),_0x2ff4a6=>process[_0x455d61(0x20a)](_0x2ff4a6||0x0));},'terminal':async()=>{const _0x4e6af3=a0_0x4122c6;console[_0x4e6af3(0x218)](_0x4e6af3(0x1e8));let _0x237116=await discoverBackend();explicitPort&&(_0x237116={'host':host,'port':explicitPort});!_0x237116&&(console[_0x4e6af3(0x233)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x4e6af3(0x233)](_0x4e6af3(0x221)),console[_0x4e6af3(0x233)](_0x4e6af3(0x206)),console[_0x4e6af3(0x233)](_0x4e6af3(0x1f3)),console['error'](_0x4e6af3(0x1f6)),process['exit'](0x1));const _0x2b75ab=await checkServerRunning(_0x237116[_0x4e6af3(0x210)],_0x237116[_0x4e6af3(0x1e6)]);!_0x2b75ab&&(console[_0x4e6af3(0x233)](_0x4e6af3(0x205)+_0x237116[_0x4e6af3(0x210)]+':'+_0x237116[_0x4e6af3(0x1e6)]+_0x4e6af3(0x213)),console[_0x4e6af3(0x233)](_0x4e6af3(0x1eb)),process['exit'](0x1));console['log'](_0x4e6af3(0x21e)+_0x237116[_0x4e6af3(0x210)]+':'+_0x237116[_0x4e6af3(0x1e6)]),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x2c9a91=startTerminalUIProcess(_0x237116[_0x4e6af3(0x210)],_0x237116[_0x4e6af3(0x1e6)]);process['on'](_0x4e6af3(0x209),()=>_0x2c9a91[_0x4e6af3(0x1ea)](_0x4e6af3(0x209))),process['on'](_0x4e6af3(0x227),()=>_0x2c9a91[_0x4e6af3(0x1ea)](_0x4e6af3(0x227))),_0x2c9a91['on'](_0x4e6af3(0x20a),_0x2cb993=>process[_0x4e6af3(0x20a)](_0x2cb993||0x0));},'plus-terminal':async()=>{const _0x2ab914=a0_0x4122c6;console['log'](_0x2ab914(0x1ec));const _0x53b4cd=startServer(!![]);let _0x58c7c3;explicitPort?_0x58c7c3=await waitForServerAtPort(host,explicitPort):_0x58c7c3=await waitForServerWithDiscovery();!_0x58c7c3&&(console[_0x2ab914(0x233)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process[_0x2ab914(0x20a)](0x1));console[_0x2ab914(0x218)](_0x2ab914(0x1e9)+_0x58c7c3[_0x2ab914(0x210)]+':'+_0x58c7c3['port']),console[_0x2ab914(0x218)](_0x2ab914(0x225));const _0x1f374e=startTerminalUIProcess(_0x58c7c3[_0x2ab914(0x210)],_0x58c7c3['port']);_0x1f374e['on']('exit',_0x5dfc8e=>{const _0x174174=_0x2ab914;console['log'](_0x174174(0x1f0));try{process[_0x174174(0x1ea)](_0x53b4cd[_0x174174(0x208)],'SIGTERM');}catch(_0x5bede6){}process['exit'](_0x5dfc8e||0x0);}),process['on'](_0x2ab914(0x209),()=>{const _0x48bb64=_0x2ab914;_0x1f374e[_0x48bb64(0x1ea)](_0x48bb64(0x209));}),process['on']('SIGTERM',()=>{const _0x2de10c=_0x2ab914;_0x1f374e[_0x2de10c(0x1ea)](_0x2de10c(0x227));});}};commands[command]?commands[command]()['catch'](_0x2278b1=>{const _0x48be96=a0_0x4122c6;console[_0x48be96(0x233)]('Error:',_0x2278b1[_0x48be96(0x232)]),process['exit'](0x1);}):(console[a0_0x4122c6(0x233)](a0_0x4122c6(0x20c)+command),console[a0_0x4122c6(0x233)](a0_0x4122c6(0x21d)),process['exit'](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
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();
3
+ const a0_0x45fe4d=a0_0x58c8;(function(_0xca2c6b,_0x10eb76){const _0x4b9416=a0_0x58c8,_0x2baba8=_0xca2c6b();while(!![]){try{const _0x440e40=parseInt(_0x4b9416(0x10b))/0x1+-parseInt(_0x4b9416(0x108))/0x2+-parseInt(_0x4b9416(0x12e))/0x3+-parseInt(_0x4b9416(0x129))/0x4*(parseInt(_0x4b9416(0x125))/0x5)+-parseInt(_0x4b9416(0xfc))/0x6*(parseInt(_0x4b9416(0x120))/0x7)+parseInt(_0x4b9416(0x10c))/0x8+-parseInt(_0x4b9416(0x111))/0x9*(-parseInt(_0x4b9416(0xfd))/0xa);if(_0x440e40===_0x10eb76)break;else _0x2baba8['push'](_0x2baba8['shift']());}catch(_0x2f4a81){_0x2baba8['push'](_0x2baba8['shift']());}}}(a0_0x474c,0x3efba));import{spawn}from'child_process';function a0_0x58c8(_0x44192a,_0x2fe542){_0x44192a=_0x44192a-0xfa;const _0x474c02=a0_0x474c();let _0x58c8f4=_0x474c02[_0x44192a];return _0x58c8f4;}import a0_0x2a76a9 from'net';import a0_0x1897bd from'path';import{fileURLToPath}from'url';function a0_0x474c(){const _0x3ffab2=['ignore','setTimeout','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','378610jyTBqg','💡\x20Troubleshooting:','now','147806uRHmlC','1284808xommeo','--ui','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','--host','localhost','3481434GHhQwB','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','kill','toString','destroy','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','error','dirname','Socket','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','node','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','✓\x20Server\x20is\x20already\x20running\x20at\x20','stderr','--port','154CkPkaM','✗\x20Server\x20is\x20not\x20running','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','...','message','5QbHOlh','web','🚀\x20Starting\x20Loxia\x20server...','Failed\x20to\x20start\x20server:','285948vaTJOg','slice','stdout','pipe','argv','505695wVshVb','exit','connect','107652bTieIR','20nknkHH','data','../src/interfaces/terminal/index.js','join','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','log','Server\x20startup\x20timeout','timeout'];a0_0x474c=function(){return _0x3ffab2;};return a0_0x474c();}const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x1897bd[a0_0x45fe4d(0x118)](__filename),projectRoot=a0_0x1897bd[a0_0x45fe4d(0x118)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x45fe4d(0x110),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x2e65c7,_0x279dd9){return new Promise(_0x533f37=>{const _0x324658=a0_0x58c8,_0x1d46a3=new a0_0x2a76a9[(_0x324658(0x119))]();_0x1d46a3[_0x324658(0x106)](0x7d0),_0x1d46a3['on'](_0x324658(0xfb),()=>{const _0x5b9aa2=_0x324658;_0x1d46a3[_0x5b9aa2(0x115)](),_0x533f37(!![]);}),_0x1d46a3['on'](_0x324658(0x104),()=>{const _0x415fdd=_0x324658;_0x1d46a3[_0x415fdd(0x115)](),_0x533f37(![]);}),_0x1d46a3['on']('error',()=>{const _0x11f579=_0x324658;_0x1d46a3[_0x11f579(0x115)](),_0x533f37(![]);}),_0x1d46a3[_0x324658(0xfb)](_0x279dd9,_0x2e65c7);});}async function startServer(_0x4a1bcd,_0x259cc7){const _0x30cadd=a0_0x45fe4d;return console[_0x30cadd(0x102)](_0x30cadd(0x127)),new Promise((_0xe82a1,_0x1971ac)=>{const _0x15c29e=_0x30cadd,_0x2060e2=spawn(_0x15c29e(0x11b),[a0_0x1897bd[_0x15c29e(0x100)](projectRoot,'bin/cli.js'),_0x15c29e(0x10d),_0x15c29e(0x126),_0x15c29e(0x10f),_0x4a1bcd,_0x15c29e(0x11f),_0x259cc7['toString']()],{'detached':![],'stdio':[_0x15c29e(0x105),_0x15c29e(0x12c),_0x15c29e(0x12c)]});_0x2060e2[_0x15c29e(0x12b)]['on'](_0x15c29e(0xfe),()=>{}),_0x2060e2[_0x15c29e(0x11e)]['on'](_0x15c29e(0xfe),()=>{}),_0x2060e2['on']('error',_0x5c1e70=>{const _0xbb70a4=_0x15c29e;console[_0xbb70a4(0x117)](_0xbb70a4(0x128),_0x5c1e70[_0xbb70a4(0x124)]),_0x1971ac(_0x5c1e70);});const _0x350557=Date[_0x15c29e(0x10a)](),_0x4a5da4=setInterval(async()=>{const _0x55b978=_0x15c29e,_0x319544=await isServerRunning(_0x4a1bcd,_0x259cc7);if(_0x319544)clearInterval(_0x4a5da4),console['log']('✓\x20Server\x20started\x20at\x20'+_0x4a1bcd+':'+_0x259cc7),_0xe82a1();else Date[_0x55b978(0x10a)]()-_0x350557>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x4a5da4),_0x2060e2[_0x55b978(0x113)](),_0x1971ac(new Error(_0x55b978(0x103))));},0x1f4);});}async function main(){const _0x56ba76=a0_0x45fe4d;try{console['log'](_0x56ba76(0x112)),console[_0x56ba76(0x102)](_0x56ba76(0x122)),console[_0x56ba76(0x102)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x56ba76(0x102)]('');const _0x27f719=process[_0x56ba76(0x12d)][_0x56ba76(0x12a)](0x2);let _0x475815=DEFAULT_HOST,_0x3d8496=DEFAULT_PORT;for(let _0x511e4b=0x0;_0x511e4b<_0x27f719['length'];_0x511e4b++){if(_0x27f719[_0x511e4b]===_0x56ba76(0x10f)&&_0x27f719[_0x511e4b+0x1])_0x475815=_0x27f719[_0x511e4b+0x1],_0x511e4b++;else _0x27f719[_0x511e4b]===_0x56ba76(0x11f)&&_0x27f719[_0x511e4b+0x1]&&(_0x3d8496=parseInt(_0x27f719[_0x511e4b+0x1],0xa),_0x511e4b++);}console['log'](_0x56ba76(0x101)+_0x475815+':'+_0x3d8496+_0x56ba76(0x123));const _0x5eb544=await isServerRunning(_0x475815,_0x3d8496);!_0x5eb544?(console['log'](_0x56ba76(0x121)),await startServer(_0x475815,_0x3d8496)):console['log'](_0x56ba76(0x11d)+_0x475815+':'+_0x3d8496),console['log'](''),console['log'](_0x56ba76(0x11a)),console[_0x56ba76(0x102)](''),await new Promise(_0x49e037=>setTimeout(_0x49e037,0x1f4)),process.env.LOXIA_HOST=_0x475815,process.env.LOXIA_PORT=_0x3d8496[_0x56ba76(0x114)](),await import(_0x56ba76(0xff));}catch(_0x2814d3){console[_0x56ba76(0x117)](''),console[_0x56ba76(0x117)](_0x56ba76(0x11c)),console[_0x56ba76(0x117)]('\x20\x20',_0x2814d3[_0x56ba76(0x124)]),console[_0x56ba76(0x117)](''),console[_0x56ba76(0x117)](_0x56ba76(0x109)),console[_0x56ba76(0x117)](_0x56ba76(0x107)),console['error'](_0x56ba76(0x10e)),console[_0x56ba76(0x117)](_0x56ba76(0x116)),console[_0x56ba76(0x117)](''),process[_0x56ba76(0xfa)](0x1);}}main();
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
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);});
3
+ function a0_0x1e4d(_0x228398,_0x37bc98){_0x228398=_0x228398-0x1eb;const _0x6b1c8a=a0_0x6b1c();let _0x1e4d7a=_0x6b1c8a[_0x228398];return _0x1e4d7a;}const a0_0x45c76d=a0_0x1e4d;(function(_0x26ae38,_0x27da3b){const _0x37157d=a0_0x1e4d,_0x1c28bf=_0x26ae38();while(!![]){try{const _0x454b0f=parseInt(_0x37157d(0x200))/0x1*(-parseInt(_0x37157d(0x20c))/0x2)+-parseInt(_0x37157d(0x1f6))/0x3*(-parseInt(_0x37157d(0x1fd))/0x4)+-parseInt(_0x37157d(0x204))/0x5*(parseInt(_0x37157d(0x1f2))/0x6)+parseInt(_0x37157d(0x1ff))/0x7+parseInt(_0x37157d(0x201))/0x8+-parseInt(_0x37157d(0x1ef))/0x9*(-parseInt(_0x37157d(0x205))/0xa)+-parseInt(_0x37157d(0x206))/0xb*(-parseInt(_0x37157d(0x1f0))/0xc);if(_0x454b0f===_0x27da3b)break;else _0x1c28bf['push'](_0x1c28bf['shift']());}catch(_0x882099){_0x1c28bf['push'](_0x1c28bf['shift']());}}}(a0_0x6b1c,0xe6413));function a0_0x6b1c(){const _0xfac76c=['host','localhost','\x0aTerminal\x20UI\x20error:','--help','argv','4029372oAwiJz','then','1448062vPaDzy','818EPuiEV','5692968PPYtgk','The\x20terminal\x20UI\x20cannot\x20run\x20in:','port','70wFJPwy','513580wmAbtK','2783YlBfdy','stdin','--host','slice','\x20\x20npm\x20start','log','3914dbPSWE','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','Starting\x20Loxia\x20Terminal\x20UI...','\x0aTerminal\x20UI\x20exited','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','\x20\x20-\x20Some\x20CI/CD\x20environments','Press\x20Ctrl+C\x20to\x20exit\x0a','126iRIdpU','25260GCHkvC','error','271482hUZFSw','--port','waitUntilExit','exit','3THisbF','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a'];a0_0x6b1c=function(){return _0xfac76c;};return a0_0x6b1c();}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x45c76d(0x1fc)][a0_0x45c76d(0x209)](0x2),options={'host':a0_0x45c76d(0x1f9),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x45c76d(0x208)||arg==='-h')options['host']=args[++i];else{if(arg===a0_0x45c76d(0x1f3)||arg==='-p')options['port']=parseInt(args[++i],0xa);else arg===a0_0x45c76d(0x1fb)&&(console[a0_0x45c76d(0x20b)](a0_0x45c76d(0x1f7)),process[a0_0x45c76d(0x1f5)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x45c76d(0x1f8)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x45c76d(0x203)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x45c76d(0x207)]['isTTY']&&(console[a0_0x45c76d(0x1f1)]('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x202)),console['error']('\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x20d)),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x1ec)),console['error'](a0_0x45c76d(0x1ed)),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)]('Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:'),console[a0_0x45c76d(0x1f1)]('\x20\x20npm\x20run\x20terminal-ui'),console[a0_0x45c76d(0x1f1)](''),console[a0_0x45c76d(0x1f1)]('Or\x20use\x20the\x20web\x20UI\x20instead:'),console[a0_0x45c76d(0x1f1)](a0_0x45c76d(0x20a)),process[a0_0x45c76d(0x1f5)](0x1));console['log'](a0_0x45c76d(0x20e)),console[a0_0x45c76d(0x20b)]('Connecting\x20to:\x20'+options['host']+':'+options[a0_0x45c76d(0x203)]),console[a0_0x45c76d(0x20b)](a0_0x45c76d(0x1ee));const instance=startTerminalUI(options);instance[a0_0x45c76d(0x1f4)]()[a0_0x45c76d(0x1fe)](()=>{const _0x314ad5=a0_0x45c76d;console['log'](_0x314ad5(0x1eb)),process['exit'](0x0);})['catch'](_0x5bc130=>{const _0x29203c=a0_0x45c76d;console[_0x29203c(0x1f1)](_0x29203c(0x1fa),_0x5bc130),process[_0x29203c(0x1f5)](0x1);});
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
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();}
3
+ const a0_0x3413d6=a0_0x1d20;(function(_0x45d667,_0x1076d3){const _0x4ef319=a0_0x1d20,_0x5d12de=_0x45d667();while(!![]){try{const _0x2ad0fc=parseInt(_0x4ef319(0x91))/0x1+-parseInt(_0x4ef319(0x7c))/0x2+parseInt(_0x4ef319(0x8c))/0x3+parseInt(_0x4ef319(0x85))/0x4+parseInt(_0x4ef319(0x70))/0x5+parseInt(_0x4ef319(0x81))/0x6*(-parseInt(_0x4ef319(0x6b))/0x7)+-parseInt(_0x4ef319(0x78))/0x8;if(_0x2ad0fc===_0x1076d3)break;else _0x5d12de['push'](_0x5d12de['shift']());}catch(_0x352baa){_0x5d12de['push'](_0x5d12de['shift']());}}}(a0_0x4a13,0x72813));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x54205b from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x41ed30=0xa,_0x42b6db=0x1f4){const _0x56c19a=a0_0x1d20;for(let _0x4183df=0x0;_0x4183df<_0x41ed30;_0x4183df++){try{return await new Promise((_0x1b87e4,_0x48b56d)=>{const _0x1842db=a0_0x1d20,_0xa158eb=a0_0x54205b[_0x1842db(0x82)]('http://localhost:'+SERVER_PORT+_0x1842db(0x89),_0x43f60c=>{const _0x42d4f3=_0x1842db;_0x43f60c[_0x42d4f3(0x92)]===0xc8?_0x1b87e4():_0x48b56d(new Error(_0x42d4f3(0x69)+_0x43f60c[_0x42d4f3(0x92)]));});_0xa158eb['on'](_0x1842db(0x8d),_0x48b56d),_0xa158eb['setTimeout'](0x3e8,()=>{const _0x1ed959=_0x1842db;_0xa158eb[_0x1ed959(0x7e)](),_0x48b56d(new Error(_0x1ed959(0x8b)));});}),console['log']('✅\x20Server\x20is\x20ready!'),!![];}catch(_0x5388e8){_0x4183df<_0x41ed30-0x1&&await new Promise(_0x989a93=>setTimeout(_0x989a93,_0x42b6db));}}return console[_0x56c19a(0x7f)](_0x56c19a(0x7d)),![];}function a0_0x1d20(_0x18c221,_0xc3540a){_0x18c221=_0x18c221-0x65;const _0x4a13bf=a0_0x4a13();let _0x1d20f6=_0x4a13bf[_0x18c221];return _0x1d20f6;}async function startServer(){return new Promise(_0x3f220f=>{const _0x2038cb=a0_0x1d20;console[_0x2038cb(0x7f)](_0x2038cb(0x74));const _0x35b1fc=join(rootDir,_0x2038cb(0x6c),'index.js');serverProcess=spawn(_0x2038cb(0x79),[_0x35b1fc],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x2038cb(0x68),'pipe',_0x2038cb(0x80)],'detached':![]}),serverProcess[_0x2038cb(0x7b)]['on'](_0x2038cb(0x8f),_0x5cd497=>{const _0x59a1d3=_0x2038cb,_0x2fa2ed=_0x5cd497['toString']()[_0x59a1d3(0x86)]();_0x2fa2ed&&console[_0x59a1d3(0x7f)](_0x59a1d3(0x90)+_0x2fa2ed);}),serverProcess['stderr']['on'](_0x2038cb(0x8f),_0x49565e=>{const _0x3c08e1=_0x2038cb,_0xe07b71=_0x49565e[_0x3c08e1(0x72)]()[_0x3c08e1(0x86)]();_0xe07b71&&!_0xe07b71[_0x3c08e1(0x67)](_0x3c08e1(0x84))&&console[_0x3c08e1(0x8d)](_0x3c08e1(0x73)+_0xe07b71);}),serverProcess['on']('error',_0x5a326e=>{const _0x78825b=_0x2038cb;console[_0x78825b(0x8d)](_0x78825b(0x7a),_0x5a326e[_0x78825b(0x87)]),process['exit'](0x1);}),serverProcess['on']('exit',(_0x11b366,_0x1e55bc)=>{const _0x36af75=_0x2038cb;_0x11b366!==null&&_0x11b366!==0x0&&(console[_0x36af75(0x8d)](_0x36af75(0x88)+_0x11b366),process[_0x36af75(0x83)](_0x11b366));}),setTimeout(_0x3f220f,STARTUP_WAIT);});}async function startTerminalUI(){const _0x480f45=a0_0x1d20;console[_0x480f45(0x7f)](_0x480f45(0x75)),console[_0x480f45(0x7f)]('');const _0xef20b=join(rootDir,_0x480f45(0x8a),'loxia-terminal.js'),_0x586308=spawn('node',[_0xef20b],{'cwd':rootDir,'env':{...process.env},'stdio':_0x480f45(0x76)});return _0x586308['on'](_0x480f45(0x8d),_0xbe5d04=>{const _0x16faf1=_0x480f45;console[_0x16faf1(0x8d)]('Failed\x20to\x20start\x20Terminal\x20UI:',_0xbe5d04[_0x16faf1(0x87)]),cleanup(),process[_0x16faf1(0x83)](0x1);}),_0x586308['on'](_0x480f45(0x83),_0xac6944=>{const _0x1a80bd=_0x480f45;console[_0x1a80bd(0x7f)](_0x1a80bd(0x6a)),cleanup(),process['exit'](_0xac6944||0x0);}),_0x586308;}function cleanup(){const _0x22a1df=a0_0x1d20;serverProcess&&!serverProcess[_0x22a1df(0x65)]&&(console[_0x22a1df(0x7f)](_0x22a1df(0x6e)),serverProcess[_0x22a1df(0x8e)]('SIGTERM'),setTimeout(()=>{const _0x4771d8=_0x22a1df;!serverProcess['killed']&&serverProcess[_0x4771d8(0x8e)](_0x4771d8(0x6f));},0x1388));}process['on']('SIGINT',()=>{const _0xcf7637=a0_0x1d20;console[_0xcf7637(0x7f)]('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process['exit'](0x0);}),process['on'](a0_0x3413d6(0x77),()=>{const _0x2c2bbc=a0_0x3413d6;console['log'](_0x2c2bbc(0x6d)),cleanup(),process['exit'](0x0);}),process['on'](a0_0x3413d6(0x83),()=>{cleanup();});async function main(){const _0x29ab8a=a0_0x3413d6;console['log']('╔════════════════════════════════════════════════╗'),console[_0x29ab8a(0x7f)](_0x29ab8a(0x71)),console[_0x29ab8a(0x7f)]('╚════════════════════════════════════════════════╝'),console[_0x29ab8a(0x7f)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x3ab0bb){console['error'](_0x29ab8a(0x66),_0x3ab0bb[_0x29ab8a(0x87)]),cleanup(),process[_0x29ab8a(0x83)](0x1);}}main();function a0_0x4a13(){const _0x173a35=['get','exit','ExperimentalWarning','3100072ZCipeW','trim','message','Server\x20exited\x20with\x20code\x20','/health','bin','Timeout','395793SrRIsB','error','kill','data','[SERVER]\x20','565857peenLn','statusCode','killed','Error\x20during\x20startup:','includes','ignore','Server\x20returned\x20','\x0a👋\x20Terminal\x20UI\x20closed.','3395147OnfGPs','src','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','🛑\x20Stopping\x20server...','SIGKILL','328170eKBJOD','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','toString','[SERVER\x20ERROR]\x20','🚀\x20Starting\x20Loxia\x20server...','🖥️\x20\x20Starting\x20Terminal\x20UI...','inherit','SIGTERM','211008XfcDlA','node','Failed\x20to\x20start\x20server:','stdout','1116064sYystQ','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','destroy','log','pipe','6RifLNr'];a0_0x4a13=function(){return _0x173a35;};return a0_0x4a13();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
4
4
  "description": "Loxia AI Agents System - No-code/vibe-code/companion-coder platform",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_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);});
2
+ const a0_0x20a82a=a0_0x3f3c;(function(_0x282403,_0x35cdf6){const _0x251df5=a0_0x3f3c,_0x42bbd9=_0x282403();while(!![]){try{const _0x245f1a=-parseInt(_0x251df5(0x12e))/0x1*(-parseInt(_0x251df5(0x13e))/0x2)+parseInt(_0x251df5(0x11c))/0x3*(-parseInt(_0x251df5(0x113))/0x4)+-parseInt(_0x251df5(0x12f))/0x5+parseInt(_0x251df5(0x14c))/0x6+-parseInt(_0x251df5(0x107))/0x7+-parseInt(_0x251df5(0x14a))/0x8+parseInt(_0x251df5(0x12a))/0x9;if(_0x245f1a===_0x35cdf6)break;else _0x42bbd9['push'](_0x42bbd9['shift']());}catch(_0x30cf04){_0x42bbd9['push'](_0x42bbd9['shift']());}}}(a0_0xb309,0xa41e7));import{exec}from'child_process';import{promisify}from'util';import a0_0x3845b7 from'https';import a0_0x2f04c4 from'http';function a0_0xb309(){const _0x26282e=['11qlbEuC','4726735yabKKj','exit','═══════════════════════════════════════════════════════════\x0a','join','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','semgrep\x20--version','\x20installed\x20successfully','platform','\x20\x20\x20Location:\x20','\x20-m\x20pip\x20install\x20','❌\x20Installation\x20failed:','🔍\x20Installing\x20Semgrep...','\x20\x20Platform:\x20','\x20\x20\x20Installing\x20','trim','197874jQkJop','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x0a═══════════════════════════════════════════════════════════','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','promises','semgrep','v1.55.0','bandit','then','--user','...','6416536edBoFp','yamllint','2680500TMDIjG','python3\x20--version','python','catch','message','startsWith','error','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','pipe','replace','\x20-m\x20pip\x20show\x20','\x20\x20\x20✅\x20','2219644PUfXlq','headers','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','\x20\x20\x20pip\x20install\x20semgrep\x0a','location','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','.scanners','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','arch','python\x20--version','107932fNJHpz','finish','url','mkdir','statusCode','includes','https','🐍\x20Checking\x20Python\x20scanners...','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','33DjSVtn','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','eslint-plugin-security','pip-audit','checkov','\x20\x20\x20Downloading\x20from\x20','\x20\x20Installation\x20Complete','\x20\x20Installing\x20Security\x20Scanners','dirname','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','log','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','\x20\x20\x20✅\x20Python\x20found:\x20','13486437GRIDXf','\x0aYou\x20can\x20manually\x20install\x20scanners:','chmod','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'];a0_0xb309=function(){return _0x26282e;};return a0_0xb309();}import a0_0x4e3cfb from'fs';import a0_0x30f927 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x30f927[a0_0x20a82a(0x125)](__filename),SCANNER_DIR=a0_0x30f927[a0_0x20a82a(0x132)](__dirname,'..','node_modules',a0_0x20a82a(0x10f)),SEMGREP_VERSION=a0_0x20a82a(0x145);console[a0_0x20a82a(0x127)]('═══════════════════════════════════════════════════════════'),console[a0_0x20a82a(0x127)](a0_0x20a82a(0x124)),console['log'](a0_0x20a82a(0x13b)+process['platform']+'\x20('+process[a0_0x20a82a(0x111)]+')'),console[a0_0x20a82a(0x127)](a0_0x20a82a(0x131));async function installScanners(){const _0x271d01=a0_0x20a82a;await a0_0x4e3cfb[_0x271d01(0x143)][_0x271d01(0x116)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x271d01(0x141)),console['log'](_0x271d01(0x123)),console['log']('═══════════════════════════════════════════════════════════\x0a');}async function checkESLintSecurity(){const _0x295b54=a0_0x20a82a;console[_0x295b54(0x127)](_0x295b54(0x10c));try{await import(_0x295b54(0x11f)),console['log']('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x5a87d7){console[_0x295b54(0x127)](_0x295b54(0x142)),console[_0x295b54(0x127)](_0x295b54(0x109));}}async function installSemgrep(){const _0x5c8587=a0_0x20a82a;console['log'](_0x5c8587(0x13a));const _0x520260=process[_0x5c8587(0x136)],_0x40757d=process[_0x5c8587(0x111)];try{const _0x1c045b=await execAsync(_0x5c8587(0x134),{'timeout':0x1388});console['log'](_0x5c8587(0x153)+_0x1c045b['stdout'][_0x5c8587(0x13d)]()),console[_0x5c8587(0x127)](_0x5c8587(0x128));return;}catch(_0x5bfa53){console[_0x5c8587(0x127)](_0x5c8587(0x11d));}const _0x58b0fe=getSemgrepBinaryInfo(_0x520260,_0x40757d);if(!_0x58b0fe){console['log'](_0x5c8587(0x11e)+_0x520260+'-'+_0x40757d),console[_0x5c8587(0x127)](_0x5c8587(0x140));return;}try{const _0x12dca7=a0_0x30f927['join'](SCANNER_DIR,_0x5c8587(0x144));console[_0x5c8587(0x127)](_0x5c8587(0x122)+_0x58b0fe['url']+_0x5c8587(0x149)),await downloadFile(_0x58b0fe[_0x5c8587(0x115)],_0x12dca7),await a0_0x4e3cfb['promises'][_0x5c8587(0x12c)](_0x12dca7,0x1ed),console[_0x5c8587(0x127)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x5c8587(0x127)](_0x5c8587(0x137)+_0x12dca7+'\x0a'),console[_0x5c8587(0x127)](_0x5c8587(0x12d)),console[_0x5c8587(0x127)](_0x5c8587(0x10a));}catch(_0x36677f){console[_0x5c8587(0x127)]('\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20'+_0x36677f[_0x5c8587(0x150)]),console[_0x5c8587(0x127)](_0x5c8587(0x11b));}}function getSemgrepBinaryInfo(_0x3efa9e,_0x348ca3){return null;}function a0_0x3f3c(_0x4189d2,_0x2bf454){_0x4189d2=_0x4189d2-0x106;const _0xb30984=a0_0xb309();let _0x3f3c0c=_0xb30984[_0x4189d2];return _0x3f3c0c;}async function installPythonScanners(){const _0x53e6e7=a0_0x20a82a;console[_0x53e6e7(0x127)](_0x53e6e7(0x11a));let _0x3c5153=null;try{await execAsync(_0x53e6e7(0x14d),{'timeout':0x1388}),_0x3c5153='python3';}catch(_0x30ab50){try{await execAsync(_0x53e6e7(0x112),{'timeout':0x1388}),_0x3c5153=_0x53e6e7(0x14e);}catch(_0x59a441){console[_0x53e6e7(0x127)](_0x53e6e7(0x10d)),console['log']('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0x53e6e7(0x127)](_0x53e6e7(0x110));return;}}console[_0x53e6e7(0x127)](_0x53e6e7(0x129)+_0x3c5153),await installViaPip(_0x53e6e7(0x144),_0x3c5153),await installViaPip(_0x53e6e7(0x146),_0x3c5153),await installViaPip(_0x53e6e7(0x120),_0x3c5153),await installViaPip(_0x53e6e7(0x121),_0x3c5153),await installViaPip(_0x53e6e7(0x14b),_0x3c5153),console[_0x53e6e7(0x127)]('');}async function isHomebrewPython(_0x1b4a59){const _0x2a0f9f=a0_0x20a82a;try{const {stdout:_0x23aedd}=await execAsync(_0x1b4a59+_0x2a0f9f(0x13f),{'timeout':0x1388});return _0x23aedd[_0x2a0f9f(0x118)]('/opt/homebrew')||_0x23aedd[_0x2a0f9f(0x118)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x26a74f,_0x3eeca6){const _0x5c55c7=a0_0x20a82a;try{const _0x353f16=await execAsync(_0x3eeca6+_0x5c55c7(0x156)+_0x26a74f,{'timeout':0x1388});return console[_0x5c55c7(0x127)](_0x5c55c7(0x106)+_0x26a74f+'\x20already\x20installed'),!![];}catch(_0x279670){console[_0x5c55c7(0x127)](_0x5c55c7(0x13c)+_0x26a74f+'...');try{const _0x4fbb1e=await isHomebrewPython(_0x3eeca6),_0x34dd6c=_0x4fbb1e?'':_0x5c55c7(0x148),_0xd982c4=(_0x3eeca6+_0x5c55c7(0x138)+_0x34dd6c+'\x20'+_0x26a74f)[_0x5c55c7(0x155)](/\s+/g,'\x20')[_0x5c55c7(0x13d)]();return await execAsync(_0xd982c4,{'timeout':0xea60}),console[_0x5c55c7(0x127)](_0x5c55c7(0x106)+_0x26a74f+_0x5c55c7(0x135)),!![];}catch(_0x323cd6){return console[_0x5c55c7(0x127)](_0x5c55c7(0x133)+_0x26a74f+':\x20'+_0x323cd6[_0x5c55c7(0x150)]),console[_0x5c55c7(0x127)](_0x5c55c7(0x10e)+_0x26a74f),![];}}}async function downloadFile(_0xa37cc0,_0x5b2f9c){return new Promise((_0x19e77d,_0x2ded01)=>{const _0x29a678=a0_0x3f3c,_0x5e252a=_0xa37cc0[_0x29a678(0x151)](_0x29a678(0x119))?a0_0x3845b7:a0_0x2f04c4;_0x5e252a['get'](_0xa37cc0,_0xf7b66f=>{const _0x32c361=_0x29a678;if(_0xf7b66f[_0x32c361(0x117)]===0x12e||_0xf7b66f[_0x32c361(0x117)]===0x12d){downloadFile(_0xf7b66f[_0x32c361(0x108)][_0x32c361(0x10b)],_0x5b2f9c)[_0x32c361(0x147)](_0x19e77d)[_0x32c361(0x14f)](_0x2ded01);return;}if(_0xf7b66f[_0x32c361(0x117)]!==0xc8){_0x2ded01(new Error('Failed\x20to\x20download:\x20HTTP\x20'+_0xf7b66f[_0x32c361(0x117)]));return;}const _0x26aa4e=createWriteStream(_0x5b2f9c);_0xf7b66f[_0x32c361(0x154)](_0x26aa4e),_0x26aa4e['on'](_0x32c361(0x114),()=>{_0x26aa4e['close'](),_0x19e77d();}),_0x26aa4e['on'](_0x32c361(0x152),_0x22a40e=>{a0_0x4e3cfb['unlink'](_0x5b2f9c,()=>{}),_0x2ded01(_0x22a40e);});})['on'](_0x29a678(0x152),_0x2ded01);});}installScanners()[a0_0x20a82a(0x14f)](_0x388a78=>{const _0x321bcc=a0_0x20a82a;console['error'](_0x321bcc(0x139),_0x388a78[_0x321bcc(0x150)]),console[_0x321bcc(0x152)](_0x321bcc(0x12b)),console[_0x321bcc(0x152)]('\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security'),console[_0x321bcc(0x152)](_0x321bcc(0x126)),process[_0x321bcc(0x130)](0x0);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
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);});
2
+ const a0_0x2e071f=a0_0xfaea;(function(_0x443ca9,_0x2b13cf){const _0x18828b=a0_0xfaea,_0x3e5283=_0x443ca9();while(!![]){try{const _0x217b95=parseInt(_0x18828b(0x198))/0x1+-parseInt(_0x18828b(0x191))/0x2+-parseInt(_0x18828b(0x183))/0x3*(parseInt(_0x18828b(0x18c))/0x4)+parseInt(_0x18828b(0x189))/0x5*(-parseInt(_0x18828b(0x185))/0x6)+-parseInt(_0x18828b(0x17b))/0x7+parseInt(_0x18828b(0x18a))/0x8*(-parseInt(_0x18828b(0x174))/0x9)+parseInt(_0x18828b(0x182))/0xa;if(_0x217b95===_0x2b13cf)break;else _0x3e5283['push'](_0x3e5283['shift']());}catch(_0x2e954e){_0x3e5283['push'](_0x3e5283['shift']());}}}(a0_0x30c0,0x6747c));const {spawn,execSync}=require(a0_0x2e071f(0x193)),path=require(a0_0x2e071f(0x197)),fs=require('fs'),logFile=path['join'](__dirname,a0_0x2e071f(0x17c));function a0_0xfaea(_0x3ead52,_0x4c38eb){_0x3ead52=_0x3ead52-0x174;const _0x30c0d9=a0_0x30c0();let _0xfaea7e=_0x30c0d9[_0x3ead52];return _0xfaea7e;}function log(_0x2dda3e){const _0x5c9947=a0_0x2e071f,_0x1dcc9b=new Date()['toISOString'](),_0x178a61='['+_0x1dcc9b+']\x20'+_0x2dda3e+'\x0a';console[_0x5c9947(0x18f)](_0x2dda3e);try{fs[_0x5c9947(0x17f)](logFile,_0x178a61);}catch(_0x19d4ea){}}log(a0_0x2e071f(0x190));function parseArgs(){const _0x2cd6ed=a0_0x2e071f,_0x4c8527=process[_0x2cd6ed(0x19a)][_0x2cd6ed(0x175)](0x2),_0x5319ee={'delay':0x1388,'command':_0x2cd6ed(0x181),'pid':null};for(let _0x181c50=0x0;_0x181c50<_0x4c8527[_0x2cd6ed(0x192)];_0x181c50++){switch(_0x4c8527[_0x181c50]){case _0x2cd6ed(0x196):_0x5319ee[_0x2cd6ed(0x187)]=parseInt(_0x4c8527[++_0x181c50],0xa)||0x1388;break;case _0x2cd6ed(0x184):_0x5319ee[_0x2cd6ed(0x176)]=_0x4c8527[++_0x181c50]||'loxia\x20web';break;case _0x2cd6ed(0x194):_0x5319ee[_0x2cd6ed(0x179)]=parseInt(_0x4c8527[++_0x181c50],0xa)||null;break;}}return _0x5319ee;}function isProcessRunning(_0x5c3d5a){try{return process['kill'](_0x5c3d5a,0x0),!![];}catch(_0x46f2d0){return![];}}async function waitForParentExit(_0x34a40a,_0x46efcc=0x7530){const _0x5dbda0=a0_0x2e071f;if(!_0x34a40a)return;const _0x29ade1=Date[_0x5dbda0(0x17e)]();while(isProcessRunning(_0x34a40a)){if(Date[_0x5dbda0(0x17e)]()-_0x29ade1>_0x46efcc){log('[Watchdog]\x20Parent\x20process\x20'+_0x34a40a+'\x20still\x20running\x20after\x20'+_0x46efcc+_0x5dbda0(0x17d));return;}await new Promise(_0xa125af=>setTimeout(_0xa125af,0x1f4));}log(_0x5dbda0(0x186)+_0x34a40a+'\x20has\x20terminated');}async function main(){const _0x94798=a0_0x2e071f,_0x3cf141=parseArgs();log(_0x94798(0x18e),{'delay':_0x3cf141[_0x94798(0x187)],'command':_0x3cf141['command'],'pid':_0x3cf141[_0x94798(0x179)]});_0x3cf141[_0x94798(0x179)]&&(log(_0x94798(0x188)+_0x3cf141[_0x94798(0x179)]+_0x94798(0x178)),await waitForParentExit(_0x3cf141['pid']));log('[Watchdog]\x20Waiting\x20'+_0x3cf141[_0x94798(0x187)]+_0x94798(0x199)),await new Promise(_0x5d9dd8=>setTimeout(_0x5d9dd8,_0x3cf141[_0x94798(0x187)]));const _0xa1d66=_0x3cf141['command'][_0x94798(0x17a)]('\x20'),_0x3ec645=_0xa1d66[0x0],_0x333a4c=_0xa1d66[_0x94798(0x175)](0x1);log('[Watchdog]\x20Executing:\x20'+_0x3ec645+'\x20'+_0x333a4c['join']('\x20'));const _0x2d257d=process['platform']===_0x94798(0x18d),_0x27f67a=spawn(_0x3ec645,_0x333a4c,{'detached':!![],'stdio':'ignore','shell':!![],'windowsHide':![]});_0x27f67a[_0x94798(0x177)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0x27f67a[_0x94798(0x179)]),log(_0x94798(0x19b)),setTimeout(()=>process[_0x94798(0x180)](0x0),0x3e8);}main()[a0_0x2e071f(0x18b)](_0xa5480c=>{const _0x35049b=a0_0x2e071f;log(_0x35049b(0x195)+_0xa5480c['message']),process[_0x35049b(0x180)](0x1);});function a0_0x30c0(){const _0x111e33=['9dvGvCG','slice','command','unref','\x20to\x20exit...','pid','split','4550133hbQFUG','watchdog.log','ms,\x20proceeding\x20anyway','now','appendFileSync','exit','loxia\x20web','24169480OnsDHc','12qmWrUo','--command','202740SIRton','[Watchdog]\x20Parent\x20process\x20','delay','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','40wUEFCF','2389448HKrtnB','catch','635764tWALgd','win32','[Watchdog]\x20Started\x20with\x20options:','log','[Watchdog]\x20Script\x20loaded','1552236afvRsp','length','child_process','--pid','[Watchdog]\x20Error:\x20','--delay','path','636990pkaBOx','ms\x20before\x20restart...','argv','[Watchdog]\x20Watchdog\x20exiting...'];a0_0x30c0=function(){return _0x111e33;};return a0_0x30c0();}
@@ -1 +1 @@
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
+ function a0_0x18bc(_0x2c8399,_0x552dde){_0x2c8399=_0x2c8399-0x18b;const _0x2753b3=a0_0x2753();let _0x18bc2f=_0x2753b3[_0x2c8399];if(a0_0x18bc['TNPIZu']===undefined){var _0x44cc1f=function(_0x25e018){const _0xe65018='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4174db='',_0x5d8a35='';for(let _0x28aa41=0x0,_0x580628,_0x5d000d,_0x3c8f11=0x0;_0x5d000d=_0x25e018['charAt'](_0x3c8f11++);~_0x5d000d&&(_0x580628=_0x28aa41%0x4?_0x580628*0x40+_0x5d000d:_0x5d000d,_0x28aa41++%0x4)?_0x4174db+=String['fromCharCode'](0xff&_0x580628>>(-0x2*_0x28aa41&0x6)):0x0){_0x5d000d=_0xe65018['indexOf'](_0x5d000d);}for(let _0x4bf236=0x0,_0x17f9e5=_0x4174db['length'];_0x4bf236<_0x17f9e5;_0x4bf236++){_0x5d8a35+='%'+('00'+_0x4174db['charCodeAt'](_0x4bf236)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5d8a35);};a0_0x18bc['tehmAt']=_0x44cc1f,a0_0x18bc['KgWvgy']={},a0_0x18bc['TNPIZu']=!![];}const _0x15b6cd=_0x2753b3[0x0],_0x22a2fd=_0x2c8399+_0x15b6cd,_0x40adc6=a0_0x18bc['KgWvgy'][_0x22a2fd];return!_0x40adc6?(_0x18bc2f=a0_0x18bc['tehmAt'](_0x18bc2f),a0_0x18bc['KgWvgy'][_0x22a2fd]=_0x18bc2f):_0x18bc2f=_0x40adc6,_0x18bc2f;}const a0_0x56b933=a0_0x18bc;(function(_0x5a825e,_0x556411){const _0xbdea36=a0_0x18bc,_0x3315ad=_0x5a825e();while(!![]){try{const _0x4e6c41=-parseInt(_0xbdea36(0x1a7))/0x1*(-parseInt(_0xbdea36(0x1ac))/0x2)+parseInt(_0xbdea36(0x1ca))/0x3*(-parseInt(_0xbdea36(0x1bc))/0x4)+-parseInt(_0xbdea36(0x19b))/0x5+parseInt(_0xbdea36(0x1ce))/0x6+-parseInt(_0xbdea36(0x1c7))/0x7*(parseInt(_0xbdea36(0x1af))/0x8)+-parseInt(_0xbdea36(0x1c5))/0x9+parseInt(_0xbdea36(0x197))/0xa*(parseInt(_0xbdea36(0x191))/0xb);if(_0x4e6c41===_0x556411)break;else _0x3315ad['push'](_0x3315ad['shift']());}catch(_0x56e7ff){_0x3315ad['push'](_0x3315ad['shift']());}}}(a0_0x2753,0x90ffe));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x4174db=null){const _0x74e84a=a0_0x18bc;this['logger']=_0x4174db,this[_0x74e84a(0x1c8)]=null,this['postcss']=null,this[_0x74e84a(0x1cb)]=null,this[_0x74e84a(0x1a8)]=null;}async[a0_0x56b933(0x19f)](_0x5d8a35,_0x28aa41,_0x580628={}){const _0x58501b=a0_0x56b933;try{const _0x5d000d=[],_0x3c8f11=this[_0x58501b(0x1a4)](_0x5d8a35),_0x4bf236=await this['checkSyntax'](_0x5d8a35,_0x28aa41,_0x3c8f11);_0x5d000d['push'](..._0x4bf236);if(_0x4bf236[_0x58501b(0x1a1)]===0x0){const _0x17f9e5=await this[_0x58501b(0x1b6)](_0x5d8a35,_0x28aa41,_0x3c8f11);_0x5d000d[_0x58501b(0x1c6)](..._0x17f9e5);}return this[_0x58501b(0x1aa)]?.['debug'](_0x58501b(0x192),{'file':_0x5d8a35,'language':_0x3c8f11,'totalDiagnostics':_0x5d000d[_0x58501b(0x1a1)],'errors':_0x5d000d[_0x58501b(0x1c2)](_0x3232b8=>_0x3232b8['severity']===STATIC_ANALYSIS[_0x58501b(0x1c9)]['ERROR'])[_0x58501b(0x1a1)],'warnings':_0x5d000d['filter'](_0x5caee6=>_0x5caee6['severity']===STATIC_ANALYSIS['SEVERITY'][_0x58501b(0x194)])[_0x58501b(0x1a1)]}),_0x5d000d;}catch(_0xdd0822){return this['logger']?.[_0x58501b(0x1a2)]('CSS\x20analysis\x20failed',{'file':_0x5d8a35,'error':_0xdd0822['message']}),[];}}async['checkSyntax'](_0x1e7299,_0x5c4ab7,_0x1834fd){const _0xe4dbb8=a0_0x56b933,_0x504e06=[];try{if(!this['postcss']){const _0x5e3445=await import(_0xe4dbb8(0x1a5));this['postcss']=_0x5e3445['default'];}let _0x42dcc5=null;if(_0x1834fd==='scss'){if(!this[_0xe4dbb8(0x1cb)]){const _0x5c2056=await import(_0xe4dbb8(0x1bf));this['postcssScss']=_0x5c2056[_0xe4dbb8(0x1c0)];}_0x42dcc5=this[_0xe4dbb8(0x1cb)];}else{if(_0x1834fd==='less'){if(!this[_0xe4dbb8(0x1a8)]){const _0x34003d=await import(_0xe4dbb8(0x18c));this['postcssLess']=_0x34003d[_0xe4dbb8(0x1c0)];}_0x42dcc5=this[_0xe4dbb8(0x1a8)];}}const _0x1a551f=this['postcss']()['process'](_0x5c4ab7,{'from':_0x1e7299,'syntax':_0x42dcc5}),_0x55f946=_0x1a551f[_0xe4dbb8(0x19e)];this['logger']?.['debug'](_0xe4dbb8(0x18e),{'file':_0x1e7299});}catch(_0x509975){const _0x5a862f=this[_0xe4dbb8(0x1a0)](_0x509975,_0x1e7299);_0x5a862f&&_0x504e06['push'](_0x5a862f);}return _0x504e06;}async[a0_0x56b933(0x1b6)](_0x3e7c1e,_0x56dc86,_0x357de2){const _0x12e521=a0_0x56b933,_0x38899f=[];try{if(!this[_0x12e521(0x1c8)]){const _0x432dbd=await import('stylelint');this['stylelint']=_0x432dbd[_0x12e521(0x1c0)];}const _0x3c54c4={'extends':[_0x12e521(0x19d)],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x12e521(0x1cc),_0x12e521(0x190)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x357de2==='scss'?[!![],{'ignoreAtRules':[_0x12e521(0x1c3),'include','extend','if','else','for',_0x12e521(0x1b1),'while',_0x12e521(0x18b),_0x12e521(0x1a3),'content','use',_0x12e521(0x1be)]}]:_0x357de2===_0x12e521(0x18f)?[!![],{'ignoreAtRules':[_0x12e521(0x1ab)]}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x12e521(0x1b8),'selector-type-case':_0x12e521(0x1b3)},'customSyntax':_0x357de2==='scss'?_0x12e521(0x1bf):_0x357de2===_0x12e521(0x18f)?'postcss-less':undefined},_0x39ccff=await this['stylelint']['lint']({'code':_0x56dc86,'codeFilename':_0x3e7c1e,'config':_0x3c54c4});if(_0x39ccff['results']&&_0x39ccff['results']['length']>0x0){const _0x3428a4=_0x39ccff['results'][0x0];if(_0x3428a4['warnings'])for(const _0x16a241 of _0x3428a4[_0x12e521(0x1c1)]){_0x38899f[_0x12e521(0x1c6)]({'file':_0x3e7c1e,'line':_0x16a241['line']||0x1,'column':_0x16a241['column']||0x1,'severity':_0x16a241['severity']===_0x12e521(0x1a2)?STATIC_ANALYSIS[_0x12e521(0x1c9)]['ERROR']:STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x16a241['rule']||'unknown','message':_0x16a241[_0x12e521(0x18d)],'category':this['categorizeStylelintRule'](_0x16a241[_0x12e521(0x1b4)]),'fixable':![],'source':_0x12e521(0x1c8)});}}}catch(_0x47d16c){this[_0x12e521(0x1aa)]?.['warn'](_0x12e521(0x1ae),{'file':_0x3e7c1e,'error':_0x47d16c[_0x12e521(0x1bb)]});}return _0x38899f;}['formatPostCSSError'](_0x53681b,_0x498c26){const _0x5a8deb=a0_0x56b933;return{'file':_0x498c26,'line':_0x53681b['line']||0x1,'column':_0x53681b[_0x5a8deb(0x1ad)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x5a8deb(0x1b0)],'rule':_0x53681b[_0x5a8deb(0x1a9)]||_0x5a8deb(0x1b5),'message':_0x53681b['reason']||_0x53681b[_0x5a8deb(0x1bb)],'category':STATIC_ANALYSIS[_0x5a8deb(0x1b7)]['SYNTAX'],'fixable':![],'source':_0x5a8deb(0x1a5),'code':_0x53681b[_0x5a8deb(0x199)]||undefined};}[a0_0x56b933(0x1bd)](_0x4ac617){const _0x249b46=a0_0x56b933;if(!_0x4ac617)return STATIC_ANALYSIS[_0x249b46(0x1b7)]['STYLE'];const _0x2d53c4=_0x4ac617['toLowerCase']();if(_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x19c))||_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x1b2))||_0x2d53c4[_0x249b46(0x1cd)]('no-empty')||_0x2d53c4['includes']('syntax'))return STATIC_ANALYSIS['CATEGORY']['SYNTAX'];if(_0x2d53c4['includes'](_0x249b46(0x195))||_0x2d53c4['includes']('optimize'))return STATIC_ANALYSIS[_0x249b46(0x1b7)]['PERFORMANCE'];if(_0x2d53c4['includes']('best-practice')||_0x2d53c4[_0x249b46(0x1cd)](_0x249b46(0x1c4)))return STATIC_ANALYSIS['CATEGORY'][_0x249b46(0x198)];return STATIC_ANALYSIS[_0x249b46(0x1b7)]['STYLE'];}['detectLanguage'](_0x14c125){const _0x4d2295=a0_0x56b933,_0x2bfca4=_0x14c125[_0x4d2295(0x1b9)]();if(_0x2bfca4['endsWith'](_0x4d2295(0x1ba))||_0x2bfca4[_0x4d2295(0x1a6)](_0x4d2295(0x196)))return'scss';if(_0x2bfca4['endsWith']('.less'))return _0x4d2295(0x18f);return'css';}['getSupportedExtensions'](){const _0x554ff5=a0_0x56b933;return[_0x554ff5(0x193),_0x554ff5(0x1ba),_0x554ff5(0x196),_0x554ff5(0x1cf)];}[a0_0x56b933(0x19a)](){return![];}}export default CSSAnalyzer;function a0_0x2753(){const _0x4409c1=['zw5KC1DPDgG','mtq3odKXCM9WA3jL','Cg9ZDgnZC0XLC3m','BMfTzq','Bg9Nz2vY','CgX1z2LU','mKLHy2DIuW','y29SDw1U','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','ndHfyuzlze8','rvjst1i','zwfJAa','BM8TDw5RBM93BG','Bg93zxi','CNvSzq','q3nZu3LUDgf4rxjYB3i','BgLUDfn0EwXLCW','q0furuDpuLK','zg91yMXL','Dg9mB3DLCKnHC2u','lNnJC3m','BwvZC2fNzq','mty3nta5mM9xDuzcsq','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','zM9YD2fYza','Cg9ZDgnZCY1Zy3nZ','zgvMyxvSDa','D2fYBMLUz3m','zMLSDgvY','BwL4Aw4','CMvJB21Tzw5Kzwq','otG1ndGWmMTVwhvXva','ChvZAa','mte3otuYmuHiB0LTuq','C3r5BgvSAw50','u0vwrvjjvfK','m0DnExzfua','Cg9ZDgnZC1nJC3m','l15JDxn0B20TlW','Aw5JBhvKzxm','nJiYodqXnePfA2Ppuq','lMXLC3m','zNvUy3rPB24','Cg9ZDgnZCY1SzxnZ','Dgv4Da','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','BgvZCW','BMCTzgvLCa','mJC1BvbssNvT','q1ntigfUywX5C2LZignVBxbSzxrLza','lMnZCW','v0fstKLorW','CgvYzM9YBwfUy2u','lNnHC3m','nZK3otKWBuTmvxbr','qKvtvf9quKfdveLdrq','C291CMnL','C3vWCg9YDhnbDxrVrML4','mZeXmJqWz1DUsvDj','BM8TAw52ywXPza','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CM9VDa','yw5HBhL6zq','zM9YBwf0ug9ZDentu0vYCM9Y','BgvUz3rO','zxjYB3i','CMv0DxjU','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCW'];a0_0x2753=function(){return _0x4409c1;};return a0_0x2753();}
@@ -1 +1 @@
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;
1
+ const a0_0x1187ab=a0_0x52d8;(function(_0x48e9b0,_0x5a2c16){const _0x70c799=a0_0x52d8,_0x3b1486=_0x48e9b0();while(!![]){try{const _0x5d4e32=parseInt(_0x70c799(0xd7))/0x1+-parseInt(_0x70c799(0xdd))/0x2*(-parseInt(_0x70c799(0xd1))/0x3)+parseInt(_0x70c799(0xa8))/0x4+parseInt(_0x70c799(0xbc))/0x5*(-parseInt(_0x70c799(0xa7))/0x6)+parseInt(_0x70c799(0xe3))/0x7*(parseInt(_0x70c799(0xf4))/0x8)+parseInt(_0x70c799(0xe2))/0x9+-parseInt(_0x70c799(0x86))/0xa*(parseInt(_0x70c799(0xd6))/0xb);if(_0x5d4e32===_0x5a2c16)break;else _0x3b1486['push'](_0x3b1486['shift']());}catch(_0x24998b){_0x3b1486['push'](_0x3b1486['shift']());}}}(a0_0x5e8e,0xbe9b1));import{exec}from'child_process';import{promisify}from'util';import a0_0x3732a6 from'path';import a0_0x39da58 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x3f021c=null){const _0x3715a4=a0_0x52d8;this['logger']=_0x3f021c,this[_0x3715a4(0xb1)]=null,this[_0x3715a4(0xea)]=new Map();}async['detectAvailableValidators'](){const _0x20a14f=a0_0x52d8;if(this['availableScanners']!==null)return this['availableScanners'];const _0x575006={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x575006['checkov']=!![],this['logger']?.['debug']('checkov\x20detected');}catch(_0x27bdaf){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x27bdaf['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x575006[_0x20a14f(0xd3)]=!![],this['logger']?.['debug']('hadolint\x20detected');}catch(_0x392fe2){this['logger']?.[_0x20a14f(0xb9)](_0x20a14f(0xb4),{'error':_0x392fe2[_0x20a14f(0x8b)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x575006['yamllint']=!![],this[_0x20a14f(0xe0)]?.['debug']('yamllint\x20detected');}catch(_0x52f755){this['logger']?.[_0x20a14f(0xb9)]('yamllint\x20not\x20available',{'error':_0x52f755[_0x20a14f(0x8b)]});}try{await import('ajv'),_0x575006['jsonSchema']=!![],this['logger']?.[_0x20a14f(0xb9)](_0x20a14f(0x8d));}catch(_0x27b79f){this['logger']?.[_0x20a14f(0xb9)]('ajv\x20not\x20available',{'error':_0x27b79f[_0x20a14f(0x8b)]});}return this['availableScanners']=_0x575006,_0x575006;}async[a0_0x1187ab(0x90)](_0xefa49a,_0x188efb={}){const _0x3f06b5=a0_0x1187ab,_0x426aa0=[],_0x3a9357=await this['detectAvailableValidators'](),_0x279ba0=this['detectFileType'](_0xefa49a);this['logger']?.[_0x3f06b5(0xb9)]('Validating\x20config\x20file',{'filePath':_0xefa49a,'fileType':_0x279ba0});switch(_0x279ba0){case'dockerfile':if(_0x3a9357['hadolint']){const _0x4567db=await this[_0x3f06b5(0x92)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x4567db);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x26a753=await this[_0x3f06b5(0xde)](_0xefa49a,_0x3f06b5(0x9d),_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x26a753);}break;case'docker-compose':if(_0x3a9357[_0x3f06b5(0xcc)]){const _0x2531c5=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x2531c5);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x4e92fa=await this['validateWithCheckov'](_0xefa49a,_0x3f06b5(0xdb),_0x188efb);_0x426aa0['push'](..._0x4e92fa);}break;case'kubernetes':if(_0x3a9357['yamllint']){const _0x2fc306=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x2fc306);}if(_0x3a9357[_0x3f06b5(0xce)]){const _0x171d08=await this['validateWithCheckov'](_0xefa49a,'kubernetes',_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x171d08);}break;case'terraform':if(_0x3a9357['checkov']){const _0x20de65=await this[_0x3f06b5(0xde)](_0xefa49a,_0x3f06b5(0xef),_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x20de65);}break;case _0x3f06b5(0xc0):if(_0x3a9357['jsonSchema']){const _0x509e97=await this['validatePackageJson'](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x509e97);}break;case _0x3f06b5(0xb6):if(_0x3a9357[_0x3f06b5(0xa9)]){const _0x1516a8=await this['validateTsConfig'](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x1516a8);}break;case'github-actions':if(_0x3a9357[_0x3f06b5(0xcc)]){const _0x285940=await this['validateYAML'](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x285940);}break;case _0x3f06b5(0xe9):const _0x4f8dff=await this[_0x3f06b5(0xc4)](_0xefa49a,_0x188efb);_0x426aa0['push'](..._0x4f8dff);break;case _0x3f06b5(0xb2):if(_0x3a9357['yamllint']){const _0x5ebe64=await this[_0x3f06b5(0xc5)](_0xefa49a,_0x188efb);_0x426aa0[_0x3f06b5(0xdf)](..._0x5ebe64);}break;default:this[_0x3f06b5(0xe0)]?.[_0x3f06b5(0xcd)](_0x3f06b5(0xd5),{'filePath':_0xefa49a,'fileType':_0x279ba0});return[];}return this[_0x3f06b5(0x80)](_0x426aa0);}async[a0_0x1187ab(0x92)](_0x2953da,_0x38c92c={}){const _0xe3e5d9=a0_0x1187ab;try{const _0x163ddb=await execAsync(_0xe3e5d9(0x95)+_0x2953da+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x3a08f5=JSON[_0xe3e5d9(0xcf)](_0x163ddb['stdout']);return this[_0xe3e5d9(0xeb)](_0x3a08f5,_0x2953da);}catch(_0x3a3efb){if(_0x3a3efb['stdout'])try{const _0xcf6b58=JSON['parse'](_0x3a3efb[_0xe3e5d9(0xc7)]);return this['parseHadolintResults'](_0xcf6b58,_0x2953da);}catch(_0x3558fe){this['logger']?.[_0xe3e5d9(0xd4)](_0xe3e5d9(0x9e),{'error':_0x3558fe[_0xe3e5d9(0x8b)]});}return this['logger']?.['error']('hadolint\x20validation\x20failed',{'error':_0x3a3efb['message']}),[];}}['parseHadolintResults'](_0x23d9db,_0x115dc7){const _0x297291=a0_0x1187ab,_0x3ef4a1=[];if(Array['isArray'](_0x23d9db))for(const _0x49051b of _0x23d9db){_0x3ef4a1[_0x297291(0xdf)]({'file':_0x115dc7,'line':_0x49051b[_0x297291(0xd0)]||0x1,'column':_0x49051b[_0x297291(0xf5)]||0x1,'severity':this[_0x297291(0xed)](_0x49051b['level']),'rule':_0x49051b[_0x297291(0xb0)],'message':_0x49051b['message'],'category':'dockerfile','validator':'hadolint'});}return _0x3ef4a1;}async['validateYAML'](_0x7c01ba,_0x48559d={}){const _0x28d99c=a0_0x1187ab;try{const _0x50cf31=await execAsync(_0x28d99c(0xe7)+_0x7c01ba+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this['parseYamllintResults'](_0x50cf31[_0x28d99c(0xc7)],_0x7c01ba);}catch(_0xc0321e){if(_0xc0321e['stdout'])return this[_0x28d99c(0xbd)](_0xc0321e['stdout'],_0x7c01ba);return this[_0x28d99c(0xe0)]?.[_0x28d99c(0xd4)]('yamllint\x20validation\x20failed',{'error':_0xc0321e['message']}),[];}}[a0_0x1187ab(0xbd)](_0x4d48da,_0x401dde){const _0x40a522=a0_0x1187ab,_0x10a90c=[],_0x1efc14=_0x4d48da['split']('\x0a')[_0x40a522(0xb8)](_0x2c7666=>_0x2c7666['trim']());for(const _0x5c589d of _0x1efc14){const _0xd24d79=_0x5c589d['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0xd24d79){const [,_0x29c105,_0x4bef2d,_0x5f1311,_0x3e3d2c,_0x34c7e1,_0x54a59a]=_0xd24d79;_0x10a90c[_0x40a522(0xdf)]({'file':_0x401dde,'line':parseInt(_0x4bef2d,0xa),'column':parseInt(_0x5f1311,0xa),'severity':this[_0x40a522(0xc8)](_0x3e3d2c),'rule':_0x54a59a,'message':_0x34c7e1,'category':'yaml','validator':'yamllint'});}}return _0x10a90c;}async['validateWithCheckov'](_0xcf8f83,_0x3d9a2c,_0x3893b4={}){const _0x407c5b=a0_0x1187ab;try{const _0x34d2e1=await execAsync('checkov\x20-f\x20\x22'+_0xcf8f83+_0x407c5b(0x9f)+_0x3d9a2c+_0x407c5b(0xad),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1e7576=JSON[_0x407c5b(0xcf)](_0x34d2e1[_0x407c5b(0xc7)]);return this[_0x407c5b(0xf2)](_0x1e7576,_0xcf8f83);}catch(_0x4b0b70){if(_0x4b0b70[_0x407c5b(0xc7)])try{const _0x1f1dd5=JSON['parse'](_0x4b0b70['stdout']);return this[_0x407c5b(0xf2)](_0x1f1dd5,_0xcf8f83);}catch(_0x210ce2){this[_0x407c5b(0xe0)]?.[_0x407c5b(0xd4)](_0x407c5b(0xc3),{'error':_0x210ce2[_0x407c5b(0x8b)]});}return this[_0x407c5b(0xe0)]?.[_0x407c5b(0xd4)]('checkov\x20validation\x20failed',{'error':_0x4b0b70['message']}),[];}}['parseCheckovResults'](_0xf95b36,_0x3eced0){const _0x1f670d=a0_0x1187ab,_0x4cdaf4=[];if(_0xf95b36[_0x1f670d(0x8a)]&&_0xf95b36[_0x1f670d(0x8a)]['failed_checks'])for(const _0x27b666 of _0xf95b36[_0x1f670d(0x8a)]['failed_checks']){_0x4cdaf4['push']({'file':_0x3eced0,'line':_0x27b666[_0x1f670d(0xa0)]?_0x27b666[_0x1f670d(0xa0)][0x0]:0x1,'column':0x1,'severity':this[_0x1f670d(0xa5)](_0x27b666[_0x1f670d(0xbb)]),'rule':_0x27b666['check_id'],'message':_0x27b666['check_name']||_0x27b666['check_id'],'category':'security','validator':'checkov','remediation':_0x27b666[_0x1f670d(0x99)],'cwe':_0x27b666['cwe'],'references':_0x27b666[_0x1f670d(0x99)]?[_0x27b666['guideline']]:[]});}return _0x4cdaf4;}async[a0_0x1187ab(0x88)](_0x2157a3,_0x5528ca={}){const _0x3f433d=a0_0x1187ab;try{const _0xbc2499=(await import(_0x3f433d(0xbf)))[_0x3f433d(0xdc)],_0x4b3728=(await import('ajv-formats'))['default'],_0x30bb50=await a0_0x39da58[_0x3f433d(0xd8)](_0x2157a3,'utf-8'),_0x2a9280=JSON[_0x3f433d(0xcf)](_0x30bb50),_0x370b6a=new _0xbc2499({'allErrors':!![],'strict':![]});_0x4b3728(_0x370b6a);const _0x19951c={'type':'object','required':[_0x3f433d(0xb7),_0x3f433d(0xe5)],'properties':{'name':{'type':_0x3f433d(0xf1),'pattern':_0x3f433d(0x8e)},'version':{'type':'string'},'description':{'type':_0x3f433d(0xf1)},'main':{'type':'string'},'type':{'type':_0x3f433d(0xf1),'enum':['module',_0x3f433d(0x87)]},'scripts':{'type':_0x3f433d(0xf3)},'dependencies':{'type':_0x3f433d(0xf3)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x46c38e=_0x370b6a[_0x3f433d(0xab)](_0x19951c),_0x1f4167=_0x46c38e(_0x2a9280);if(!_0x1f4167&&_0x46c38e[_0x3f433d(0xf8)])return _0x46c38e['errors']['map'](_0xb497f5=>({'file':_0x2157a3,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':'json-schema','message':_0xb497f5[_0x3f433d(0x91)]?_0xb497f5['instancePath']+'\x20'+_0xb497f5['message']:_0x3f433d(0x96)+_0xb497f5['params']['missingProperty']+'\x27','category':_0x3f433d(0x82),'validator':'json-schema'}));return[];}catch(_0x3f4a6f){return this['logger']?.[_0x3f433d(0xd4)]('package.json\x20validation\x20failed',{'error':_0x3f4a6f['message']}),[{'file':_0x2157a3,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x3f433d(0xaf)][_0x3f433d(0xa2)],'rule':'json-parse','message':_0x3f433d(0x89)+_0x3f4a6f['message'],'category':_0x3f433d(0x9a),'validator':'json-parse'}];}}async[a0_0x1187ab(0xda)](_0x53a48b,_0x5d1a91={}){const _0x1b5fbb=a0_0x1187ab;try{const _0x6db026=await a0_0x39da58[_0x1b5fbb(0xd8)](_0x53a48b,'utf-8'),_0x444649=JSON['parse'](_0x6db026),_0x518d3f=[];if(_0x444649[_0x1b5fbb(0xbe)]){const _0x4a1a4b=_0x444649['compilerOptions'];!_0x4a1a4b[_0x1b5fbb(0x8f)]&&_0x518d3f['push']({'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'strict-mode','message':_0x1b5fbb(0xa4),'category':'best-practice','validator':'tsconfig-validator'}),_0x4a1a4b['noImplicitAny']===![]&&_0x518d3f['push']({'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x1b5fbb(0xa3),'message':_0x1b5fbb(0xac),'category':'best-practice','validator':'tsconfig-validator'});}return _0x518d3f;}catch(_0x569604){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x569604[_0x1b5fbb(0x8b)]}),[{'file':_0x53a48b,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x1b5fbb(0xaf)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x569604[_0x1b5fbb(0x8b)],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x278a6c,_0x3a6f59={}){const _0x3b3695=a0_0x1187ab;try{const _0xb75caf=await a0_0x39da58[_0x3b3695(0xd8)](_0x278a6c,_0x3b3695(0x81)),_0x3f103b=[],_0x237622=_0xb75caf[_0x3b3695(0xcb)]('\x0a'),_0x45442f=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':_0x3b3695(0xba)},{'pattern':/secret/i,'name':_0x3b3695(0x9b)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':_0x3b3695(0xaa)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x237622[_0x3b3695(0xa6)]((_0x54371e,_0x2d5b68)=>{const _0x2733a5=_0x3b3695,_0x2dad6c=_0x54371e[_0x2733a5(0xf0)]();if(!_0x2dad6c||_0x2dad6c['startsWith']('#'))return;if(_0x2dad6c['includes']('=')){const [_0x54b524,_0x3035a5]=_0x2dad6c['split']('='),_0x455f60=_0x54b524[_0x2733a5(0xe4)](),_0x1a49fb=_0x3035a5?.['trim']()||'',_0x43ef5c=_0x1a49fb&&_0x1a49fb!==''&&!_0x1a49fb['startsWith']('$')&&_0x1a49fb!=='your-key-here'&&_0x1a49fb!=='changeme'&&_0x1a49fb[_0x2733a5(0x83)]>0x5;if(_0x43ef5c)for(const {pattern:_0x3777ec,name:_0x4bcbec}of _0x45442f){if(_0x3777ec[_0x2733a5(0x84)](_0x455f60)){_0x3f103b[_0x2733a5(0xdf)]({'file':_0x278a6c,'line':_0x2d5b68+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2733a5(0xaf)]['CRITICAL'],'rule':'hardcoded-secret','message':'Potential\x20hardcoded\x20'+_0x4bcbec+'\x20detected\x20in\x20.env\x20file','category':_0x2733a5(0xee),'validator':_0x2733a5(0xd9),'remediation':_0x2733a5(0xf6)});break;}}}}),_0x3f103b;}catch(_0x150cc2){return this['logger']?.[_0x3b3695(0xd4)]('.env\x20validation\x20failed',{'error':_0x150cc2['message']}),[];}}['detectFileType'](_0x2af4af){const _0x1b3056=a0_0x1187ab,_0x3debe1=a0_0x3732a6[_0x1b3056(0xec)](_0x2af4af)[_0x1b3056(0xe4)](),_0x4ca145=a0_0x3732a6['dirname'](_0x2af4af);if(_0x3debe1==='dockerfile')return'dockerfile';if(_0x3debe1==='docker-compose.yml'||_0x3debe1==='docker-compose.yaml')return'docker-compose';if(_0x3debe1===_0x1b3056(0xc0))return _0x1b3056(0xc0);if(_0x3debe1==='tsconfig.json')return _0x1b3056(0xb6);if(_0x3debe1==='.env'||_0x3debe1['endsWith']('.env'))return'env';if(_0x4ca145[_0x1b3056(0x85)](_0x1b3056(0x93)))return _0x1b3056(0x9c);if(_0x4ca145['includes'](_0x1b3056(0xd2))||_0x4ca145[_0x1b3056(0x85)]('k8s'))return _0x1b3056(0xd2);const _0x54e62c=a0_0x3732a6[_0x1b3056(0xc1)](_0x2af4af)['toLowerCase']();if(_0x54e62c==='.tf'||_0x54e62c==='.tfvars')return'terraform';if(_0x54e62c==='.yml'||_0x54e62c==='.yaml')return _0x1b3056(0xb2);if(_0x54e62c===_0x1b3056(0xa1))return'json';return _0x1b3056(0xe6);}['normalizeResults'](_0x1b07a3){const _0x43c6fe=a0_0x1187ab;return _0x1b07a3[_0x43c6fe(0xe1)](_0x4ed47f=>({'file':_0x4ed47f[_0x43c6fe(0xb5)],'line':_0x4ed47f[_0x43c6fe(0xd0)]||0x1,'column':_0x4ed47f[_0x43c6fe(0xf5)]||0x1,'severity':_0x4ed47f['severity']||STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x4ed47f['rule']||_0x43c6fe(0xe6),'message':_0x4ed47f[_0x43c6fe(0x8b)]||'Validation\x20issue\x20detected','category':_0x4ed47f[_0x43c6fe(0xc9)]||_0x43c6fe(0x82),'validator':_0x4ed47f['validator'],'cwe':_0x4ed47f['cwe']||null,'remediation':_0x4ed47f[_0x43c6fe(0xc6)]||null,'references':_0x4ed47f[_0x43c6fe(0x98)]||[]}));}['mapHadolintSeverity'](_0x402e5d){const _0x3b2543=a0_0x1187ab,_0x3d5a36={'error':STATIC_ANALYSIS[_0x3b2543(0xaf)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS[_0x3b2543(0xaf)]['INFO'],'style':STATIC_ANALYSIS[_0x3b2543(0xaf)][_0x3b2543(0x97)]};return _0x3d5a36[_0x402e5d?.['toLowerCase']()]||STATIC_ANALYSIS[_0x3b2543(0xaf)][_0x3b2543(0xae)];}['mapYamllintSeverity'](_0x1405f6){const _0x1178f7=a0_0x1187ab,_0x66a550={'error':STATIC_ANALYSIS[_0x1178f7(0xaf)]['ERROR'],'warning':STATIC_ANALYSIS[_0x1178f7(0xaf)][_0x1178f7(0xae)]};return _0x66a550[_0x1405f6?.[_0x1178f7(0xe4)]()]||STATIC_ANALYSIS['SEVERITY'][_0x1178f7(0xae)];}['mapCheckovSeverity'](_0x263cd8){const _0x220ccb=a0_0x1187ab;return STATIC_ANALYSIS['SEVERITY'][_0x220ccb(0xa2)];}async['getValidatorStatus'](){const _0x48a663=a0_0x1187ab,_0x5e6610=await this[_0x48a663(0xca)]();return{'validators':_0x5e6610,'recommendations':this['getInstallRecommendations'](_0x5e6610)};}['getInstallRecommendations'](_0x339e81){const _0x580e08=a0_0x1187ab,_0x291e9b=[];return!_0x339e81['checkov']&&_0x291e9b[_0x580e08(0xdf)]({'validator':_0x580e08(0xce),'reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':_0x580e08(0xb3)}),!_0x339e81['hadolint']&&_0x291e9b[_0x580e08(0xdf)]({'validator':_0x580e08(0xd3),'reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x339e81['yamllint']&&_0x291e9b[_0x580e08(0xdf)]({'validator':'yamllint','reason':_0x580e08(0x8c),'install':'pip\x20install\x20yamllint','priority':_0x580e08(0xe8)}),!_0x339e81[_0x580e08(0xa9)]&&_0x291e9b['push']({'validator':_0x580e08(0xf7),'reason':_0x580e08(0xc2),'install':_0x580e08(0x94),'priority':_0x580e08(0xe8)}),_0x291e9b;}}function a0_0x52d8(_0xd7814d,_0x2a2425){_0xd7814d=_0xd7814d-0x80;const _0x5e8e2f=a0_0x5e8e();let _0x52d8ec=_0x5e8e2f[_0xd7814d];if(a0_0x52d8['YZcvRY']===undefined){var _0x2477ca=function(_0xa814fd){const _0xe00b48='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3732a6='',_0x39da58='';for(let _0x3f021c=0x0,_0x575006,_0x27bdaf,_0x392fe2=0x0;_0x27bdaf=_0xa814fd['charAt'](_0x392fe2++);~_0x27bdaf&&(_0x575006=_0x3f021c%0x4?_0x575006*0x40+_0x27bdaf:_0x27bdaf,_0x3f021c++%0x4)?_0x3732a6+=String['fromCharCode'](0xff&_0x575006>>(-0x2*_0x3f021c&0x6)):0x0){_0x27bdaf=_0xe00b48['indexOf'](_0x27bdaf);}for(let _0x52f755=0x0,_0x27b79f=_0x3732a6['length'];_0x52f755<_0x27b79f;_0x52f755++){_0x39da58+='%'+('00'+_0x3732a6['charCodeAt'](_0x52f755)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x39da58);};a0_0x52d8['wLpLtK']=_0x2477ca,a0_0x52d8['RRCAws']={},a0_0x52d8['YZcvRY']=!![];}const _0x338f9b=_0x5e8e2f[0x0],_0x5ea52b=_0xd7814d+_0x338f9b,_0x193649=a0_0x52d8['RRCAws'][_0x5ea52b];return!_0x193649?(_0x52d8ec=a0_0x52d8['wLpLtK'](_0x52d8ec),a0_0x52d8['RRCAws'][_0x5ea52b]=_0x52d8ec):_0x52d8ec=_0x193649,_0x52d8ec;}function a0_0x5e8e(){const _0x128a3a=['y2HLy2TFy2XHC3m','mZvvww5qCui','CgfYC2vzyw1SBgLUDfjLC3vSDhm','y29TCgLSzxjpChrPB25Z','ywP2','CgfJA2fNzs5QC29U','zxH0BMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','DMfSAwrHDgvfBNzgAwXL','DMfSAwrHDgvzqu1m','CMvTzwrPyxrPB24','C3rKB3v0','BwfWwwfTBgXPBNrtzxzLCML0Eq','y2f0zwDVCNK','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3bSAxq','EwfTBgXPBNq','D2fYBG','y2HLy2TVDG','CgfYC2u','BgLUzq','nJe4vhLUBwPM','A3vIzxjUzxrLCW','AgfKB2XPBNq','zxjYB3i','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','mty4mZeYmJfKB3fhsuC','nZy1mZvfrNPVCNm','CMvHzezPBgu','zw52lxzHBgLKyxrVCG','DMfSAwrHDgvuC0nVBMzPzW','zg9JA2vYx2nVBxbVC2u','zgvMyxvSDa','nJa4ohretw1sEG','DMfSAwrHDgvxAxrOq2HLy2TVDG','ChvZAa','Bg9Nz2vY','BwfW','nZi0otuWy3DxEevO','mJe5otqWCg9Ut1bx','Dg9mB3DLCKnHC2u','DMvYC2LVBG','Dw5RBM93BG','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','BwvKAxvT','zw52','C2nHBM5LCKnHy2HL','CgfYC2viywrVBgLUDfjLC3vSDhm','yMfZzw5HBwu','BwfWsgfKB2XPBNrtzxzLCML0Eq','C2vJDxjPDhK','DgvYCMfMB3jT','DhjPBq','C3rYAw5N','CgfYC2vdAgvJA292uMvZDwX0CW','B2jQzwn0','odH4u1b2zKe','y29SDw1U','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','ywP2icHku09oifnJAgvTysK','zxjYB3jZ','BM9YBwfSAxPLuMvZDwX0CW','DxrMltG','DMfSAwrHDgLVBG','BgvUz3rO','DgvZDa','Aw5JBhvKzxm','mtb2sLHpt2y','y29TBw9UANm','DMfSAwrHDgvqywnRywDLsNnVBG','sw52ywXPzcbku09ooIa','CMvZDwX0CW','BwvZC2fNzq','wufntcbMAwXLihzHBgLKyxrPB24','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','C3rYAwn0','DMfSAwrHDgu','Aw5ZDgfUy2vqyxrO','DMfSAwrHDgveB2nRzxjMAwXL','lMDPDgH1yI93B3jRzMXVD3m','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','su5gtW','CMvMzxjLBMnLCW','z3vPzgvSAw5L','C3LUDgf4','C2vJCMv0','z2L0AhvIlwfJDgLVBNm','zg9JA2vYzMLSzq','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','iIaTlwzYyw1LD29YAYa','zMLSzv9SAw5Lx3jHBMDL','lMPZB24','rvjst1i','BM8TAw1WBgLJAxqTyw55','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','BwfWq2HLy2TVDLnLDMvYAxr5','zM9YrwfJAa','ndmXmJjhs2vtwg4','ndKYntq4oe13BgntsW','ANnVBLnJAgvTyq','ChjPDMf0zsbRzxK','y29TCgLSzq','rgLZywjSAw5Nig5Vsw1WBgLJAxrbBNKGCMvKDwnLCYb0ExbLihnHzMv0Eq','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','v0fstKLorW','u0vwrvjjvfK','y29Kzq','yxzHAwXHyMXLu2nHBM5LCNm','EwfTBa','AgLNAa','AgfKB2XPBNqGBM90igf2ywLSywjSzq','zMLSzq','DhnJB25MAwCUANnVBG','BMfTzq','zMLSDgvY','zgvIDwC','qvbjigTLEq'];a0_0x5e8e=function(){return _0x128a3a;};return a0_0x5e8e();}export default ConfigValidator;