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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/bin/cli.js +1 -1
  2. package/bin/loxia-terminal-v2.js +1 -1
  3. package/bin/loxia-terminal.js +1 -1
  4. package/bin/start-with-terminal.js +1 -1
  5. package/package.json +1 -1
  6. package/scripts/install-scanners.js +1 -1
  7. package/scripts/watchdog.js +1 -1
  8. package/src/analyzers/CSSAnalyzer.js +1 -1
  9. package/src/analyzers/ConfigValidator.js +1 -1
  10. package/src/analyzers/ESLintAnalyzer.js +1 -1
  11. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  12. package/src/analyzers/PrettierFormatter.js +1 -1
  13. package/src/analyzers/PythonAnalyzer.js +1 -1
  14. package/src/analyzers/SecurityAnalyzer.js +1 -1
  15. package/src/analyzers/SparrowAnalyzer.js +1 -1
  16. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  17. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  18. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  19. package/src/analyzers/codeCloneDetector/index.js +1 -1
  20. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  21. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  22. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  23. package/src/core/agentPool.js +1 -1
  24. package/src/core/agentScheduler.js +1 -1
  25. package/src/core/contextManager.js +1 -1
  26. package/src/core/flowExecutor.js +1 -1
  27. package/src/core/messageProcessor.js +1 -1
  28. package/src/core/orchestrator.js +1 -1
  29. package/src/core/stateManager.js +1 -1
  30. package/src/index.js +1 -1
  31. package/src/interfaces/cli.js +1 -1
  32. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  38. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  39. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  40. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  41. package/src/interfaces/terminal/api/apiClient.js +1 -1
  42. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  43. package/src/interfaces/terminal/api/session.js +1 -1
  44. package/src/interfaces/terminal/api/websocket.js +1 -1
  45. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  46. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  47. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  48. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  49. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  50. package/src/interfaces/terminal/components/Header.js +1 -1
  51. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  52. package/src/interfaces/terminal/components/InputBox.js +1 -1
  53. package/src/interfaces/terminal/components/Layout.js +1 -1
  54. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  55. package/src/interfaces/terminal/components/MessageList.js +1 -1
  56. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  57. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  58. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  59. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  60. package/src/interfaces/terminal/components/TextInput.js +1 -1
  61. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  62. package/src/interfaces/terminal/config/constants.js +1 -1
  63. package/src/interfaces/terminal/index.js +1 -1
  64. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  65. package/src/interfaces/terminal/state/useAgents.js +1 -1
  66. package/src/interfaces/terminal/state/useConnection.js +1 -1
  67. package/src/interfaces/terminal/state/useMessages.js +1 -1
  68. package/src/interfaces/terminal/state/useTools.js +1 -1
  69. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  70. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  71. package/src/interfaces/terminal/utils/theme.js +1 -1
  72. package/src/interfaces/webServer.js +1 -1
  73. package/src/modules/fileExplorer/controller.js +1 -1
  74. package/src/modules/fileExplorer/index.js +1 -1
  75. package/src/modules/fileExplorer/middleware.js +1 -1
  76. package/src/modules/fileExplorer/routes.js +1 -1
  77. package/src/services/agentActivityService.js +1 -1
  78. package/src/services/aiService.js +1 -1
  79. package/src/services/apiKeyManager.js +1 -1
  80. package/src/services/benchmarkService.js +1 -1
  81. package/src/services/budgetService.js +1 -1
  82. package/src/services/contextInjectionService.js +1 -1
  83. package/src/services/conversationCompactionService.js +1 -1
  84. package/src/services/credentialVault.js +1 -1
  85. package/src/services/errorHandler.js +1 -1
  86. package/src/services/fileAttachmentService.js +1 -1
  87. package/src/services/flowContextService.js +1 -1
  88. package/src/services/memoryService.js +1 -1
  89. package/src/services/modelRouterService.js +1 -1
  90. package/src/services/modelsService.js +1 -1
  91. package/src/services/portRegistry.js +1 -1
  92. package/src/services/portTracker.js +1 -1
  93. package/src/services/projectDetector.js +1 -1
  94. package/src/services/promptService.js +1 -1
  95. package/src/services/qualityInspector.js +1 -1
  96. package/src/services/serviceRegistry.js +1 -1
  97. package/src/services/tokenCountingService.js +1 -1
  98. package/src/services/visualEditorBridge.js +1 -1
  99. package/src/services/visualEditorServer.js +1 -1
  100. package/src/tools/agentCommunicationTool.js +1 -1
  101. package/src/tools/agentDelayTool.js +1 -1
  102. package/src/tools/asyncToolManager.js +1 -1
  103. package/src/tools/baseTool.js +1 -1
  104. package/src/tools/browserTool.js +1 -1
  105. package/src/tools/cloneDetectionTool.js +1 -1
  106. package/src/tools/dependencyResolverTool.js +1 -1
  107. package/src/tools/docxTool.js +1 -1
  108. package/src/tools/excelTool.js +1 -1
  109. package/src/tools/fileContentReplaceTool.js +1 -1
  110. package/src/tools/fileSystemTool.js +1 -1
  111. package/src/tools/fileTreeTool.js +1 -1
  112. package/src/tools/helpTool.js +1 -1
  113. package/src/tools/imageTool.js +1 -1
  114. package/src/tools/importAnalyzerTool.js +1 -1
  115. package/src/tools/jobDoneTool.js +1 -1
  116. package/src/tools/memoryTool.js +1 -1
  117. package/src/tools/pdfTool.js +1 -1
  118. package/src/tools/seekTool.js +1 -1
  119. package/src/tools/staticAnalysisTool.js +1 -1
  120. package/src/tools/taskManagerTool.js +1 -1
  121. package/src/tools/terminalTool.js +1 -1
  122. package/src/tools/userPromptTool.js +1 -1
  123. package/src/tools/videoTool.js +1 -1
  124. package/src/tools/visualEditorTool.js +1 -1
  125. package/src/tools/webTool.js +1 -1
  126. package/src/types/agent.js +1 -1
  127. package/src/types/contextReference.js +1 -1
  128. package/src/types/conversation.js +1 -1
  129. package/src/types/toolCommand.js +1 -1
  130. package/src/utilities/attachmentValidator.js +1 -1
  131. package/src/utilities/browserStealth.js +1 -1
  132. package/src/utilities/configManager.js +1 -1
  133. package/src/utilities/constants.js +1 -1
  134. package/src/utilities/directoryAccessManager.js +1 -1
  135. package/src/utilities/fileProcessor.js +1 -1
  136. package/src/utilities/humanBehavior.js +1 -1
  137. package/src/utilities/jsonRepair.js +1 -1
  138. package/src/utilities/logger.js +1 -1
  139. package/src/utilities/platformUtils.js +1 -1
  140. package/src/utilities/platformUtils.test.js +1 -1
  141. package/src/utilities/stealthConstants.js +1 -1
  142. package/src/utilities/structuredFileValidator.js +1 -1
  143. package/src/utilities/tagParser.js +1 -1
  144. package/src/utilities/toolConstants.js +1 -1
  145. package/src/utilities/userDataDir.js +1 -1
  146. package/web-ui/build/index.html +1 -1
  147. package/web-ui/build/static/{index-B5f---1N.js → index-BoJVEi2s.js} +78 -78
package/bin/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x55b6c9=a0_0x5411;(function(_0x2a9365,_0xdd6ac8){const _0x6a1dcb=a0_0x5411,_0x3ef263=_0x2a9365();while(!![]){try{const _0x2c4f46=-parseInt(_0x6a1dcb(0x78))/0x1+parseInt(_0x6a1dcb(0xb0))/0x2+-parseInt(_0x6a1dcb(0x70))/0x3+-parseInt(_0x6a1dcb(0xbb))/0x4*(-parseInt(_0x6a1dcb(0x6e))/0x5)+parseInt(_0x6a1dcb(0xc1))/0x6*(-parseInt(_0x6a1dcb(0x83))/0x7)+parseInt(_0x6a1dcb(0x9b))/0x8+-parseInt(_0x6a1dcb(0xc0))/0x9*(-parseInt(_0x6a1dcb(0xb4))/0xa);if(_0x2c4f46===_0xdd6ac8)break;else _0x3ef263['push'](_0x3ef263['shift']());}catch(_0x1b7d52){_0x3ef263['push'](_0x3ef263['shift']());}}}(a0_0x584a,0x4a177));function a0_0x5411(_0xad9da5,_0x3b09c2){_0xad9da5=_0xad9da5-0x6d;const _0x584a48=a0_0x584a();let _0x5411f8=_0x584a48[_0xad9da5];return _0x5411f8;}import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x79ae3 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x55b6c9(0x94),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x55b6c9(0x72)][a0_0x55b6c9(0x97)](0x2),command=args[0x0]&&!args[0x0][a0_0x55b6c9(0xa9)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes'](a0_0x55b6c9(0xb1))||args[a0_0x55b6c9(0xa5)]('-h'),'version':args[a0_0x55b6c9(0xa5)]('--version')||args['includes']('-v')};for(let i=0x0;i<args['length'];i++){args[i]===a0_0x55b6c9(0xbd)&&args[i+0x1]&&(flags[a0_0x55b6c9(0x82)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x55b6c9(0x8a)&&args[i+0x1]&&(flags[a0_0x55b6c9(0xc5)]=args[i+0x1]);}const explicitPort=flags[a0_0x55b6c9(0x82)],host=flags[a0_0x55b6c9(0xc5)]||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x55b6c9(0xc3)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x55b6c9(0xc6)));console[a0_0x55b6c9(0xa0)](a0_0x55b6c9(0x9f)+pkg['version']),process[a0_0x55b6c9(0xa2)](0x0);}if(flags[a0_0x55b6c9(0x6d)]||!command){const pkgPath=join(__dirname,'..',a0_0x55b6c9(0xc3)),pkg=JSON[a0_0x55b6c9(0x8c)](readFileSync(pkgPath,a0_0x55b6c9(0xc6)));console[a0_0x55b6c9(0xa0)](a0_0x55b6c9(0xa6)+pkg[a0_0x55b6c9(0xc7)]+a0_0x55b6c9(0xbf)+DEFAULT_PORT+a0_0x55b6c9(0xba)+DEFAULT_HOST+a0_0x55b6c9(0x7f)),process[a0_0x55b6c9(0xa2)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x179478}=await import('../src/services/portRegistry.js');return _0x179478();}async function discoverBackend(){const _0x3ad5d8=a0_0x55b6c9;try{const _0x439112=await getPortRegistry();await _0x439112[_0x3ad5d8(0x7b)]();const _0xa5bda8=await _0x439112[_0x3ad5d8(0x77)](_0x3ad5d8(0xa8));if(_0xa5bda8)return{'host':_0xa5bda8['host']||_0x3ad5d8(0x7c),'port':_0xa5bda8[_0x3ad5d8(0x82)],'pid':_0xa5bda8[_0x3ad5d8(0x7e)]};return null;}catch(_0x4978f9){return null;}}function a0_0x584a(){const _0x4b93ab=['PORT','slice','kill','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','unref','1045104KqxHsQ','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','\x0aPlease\x20start\x20the\x20server\x20first:','Loxia\x20Autopilot\x20One\x20v','log','index.js','exit','Waiting\x20for\x20server\x20to\x20start...','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','includes','\x0aLoxia\x20Autopilot\x20One\x20v','win32','backend','startsWith','\x20\x20API\x20Health:\x20\x20\x20','\x0aOpening\x20Web\x20UI\x20at\x20','Server\x20running\x20at\x20http://','ignore','/api/health\x0a','start','619560qpfFiz','--help','\x0aShutting\x20down\x20server...','SIGINT','581680tDCJIp','inherit','ceil','\x0aServer\x20registered\x20at\x20','SIGTERM','Starting\x20Loxia\x20server...\x0a',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','1268116rHAFeq','now','--port','darwin','\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','36vEsUsv','564024jfKJOR','\x0a✓\x20Server\x20running\x20at\x20','package.json','Could\x20not\x20open\x20browser\x20automatically.','host','utf8','version','help','5crkzmp','src','1369986PCVGQo','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','argv','web','get','error','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','getService','135974uPwoyK','node','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','cleanupStaleEntries','localhost','Please\x20open\x20manually:\x20','pid',')\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','setTimeout','Starting\x20Terminal\x20UI...\x0a','port','7ivurAE','toString','Unknown\x20command:\x20','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','catch','LOXIA_HOST','LOXIA_PORT','--host','statusCode','parse','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','Looking\x20for\x20running\x20server...','Starting\x20Loxia\x20server\x20in\x20background...','open','platform','http://','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','127.0.0.1','cmd'];a0_0x584a=function(){return _0x4b93ab;};return a0_0x584a();}async function checkServerRunning(_0x3e3c8b,_0x12123b,_0x14f45b=0x1){for(let _0x24debd=0x0;_0x24debd<_0x14f45b;_0x24debd++){const _0x128419=await new Promise(_0xe8bedc=>{const _0x2cf8f8=a0_0x5411,_0x10f895=a0_0x79ae3[_0x2cf8f8(0x74)](_0x2cf8f8(0x92)+_0x3e3c8b+':'+_0x12123b+'/api/health',_0x2ec930=>{const _0x2cbac2=_0x2cf8f8;_0xe8bedc(_0x2ec930[_0x2cbac2(0x8b)]===0xc8);});_0x10f895['on'](_0x2cf8f8(0x75),()=>_0xe8bedc(![])),_0x10f895[_0x2cf8f8(0x80)](0x7d0,()=>{_0x10f895['destroy'](),_0xe8bedc(![]);});});if(_0x128419)return!![];_0x24debd<_0x14f45b-0x1&&await new Promise(_0x16cef8=>setTimeout(_0x16cef8,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x2fe2fd=SERVER_STARTUP_TIMEOUT){const _0x4b6eba=a0_0x55b6c9,_0x15410d=Date[_0x4b6eba(0xbc)]();while(Date[_0x4b6eba(0xbc)]()-_0x15410d<_0x2fe2fd){const _0x2b016d=await discoverBackend();if(_0x2b016d){const _0xfa731b=await checkServerRunning(_0x2b016d['host'],_0x2b016d[_0x4b6eba(0x82)]);if(_0xfa731b)return _0x2b016d;}await new Promise(_0x251782=>setTimeout(_0x251782,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x4c2343,_0x57e8f1,_0x5f1fbc=SERVER_STARTUP_TIMEOUT){const _0x2ee7ff=a0_0x55b6c9,_0x56b383=Math[_0x2ee7ff(0xb6)](_0x5f1fbc/SERVER_CHECK_INTERVAL),_0x4ab25f=await checkServerRunning(_0x4c2343,_0x57e8f1,_0x56b383);return _0x4ab25f?{'host':_0x4c2343,'port':_0x57e8f1}:null;}function openBrowser(_0x223849){const _0x27a7fb=a0_0x55b6c9;let _0x34af75,_0x391c4e;if(process[_0x27a7fb(0x91)]===_0x27a7fb(0xbe))_0x34af75=_0x27a7fb(0x90),_0x391c4e=[_0x223849];else process[_0x27a7fb(0x91)]===_0x27a7fb(0xa7)?(_0x34af75=_0x27a7fb(0x95),_0x391c4e=['/c',_0x27a7fb(0xaf),'\x22\x22',_0x223849]):(_0x34af75='xdg-open',_0x391c4e=[_0x223849]);const _0x95d74d=spawn(_0x34af75,_0x391c4e,{'detached':!![],'stdio':_0x27a7fb(0xad)});_0x95d74d[_0x27a7fb(0x9a)](),_0x95d74d['on'](_0x27a7fb(0x75),()=>{const _0x13e2ef=_0x27a7fb;console[_0x13e2ef(0xa0)](_0x13e2ef(0xc4)),console[_0x13e2ef(0xa0)](_0x13e2ef(0x7d)+_0x223849);});}function startServer(_0x28fad2=![]){const _0xf22ae6=a0_0x55b6c9,_0x44e254={...process.env};explicitPort&&(_0x44e254[_0xf22ae6(0x89)]=explicitPort[_0xf22ae6(0x84)](),_0x44e254[_0xf22ae6(0x96)]=explicitPort[_0xf22ae6(0x84)]());flags[_0xf22ae6(0xc5)]&&(_0x44e254[_0xf22ae6(0x88)]=flags[_0xf22ae6(0xc5)]);const _0x265ad6=join(__dirname,'..',_0xf22ae6(0x6f),_0xf22ae6(0xa1)),_0x56fafa=spawn(_0xf22ae6(0x79),[_0x265ad6],{'cwd':join(__dirname,'..'),'env':_0x44e254,'stdio':_0x28fad2?[_0xf22ae6(0xad),_0xf22ae6(0xad),_0xf22ae6(0xad)]:'inherit','detached':_0x28fad2});return _0x28fad2&&_0x56fafa[_0xf22ae6(0x9a)](),_0x56fafa;}function startTerminalUIProcess(_0x346682,_0x3448e1){const _0x1c6a35=a0_0x55b6c9,_0xf01db=join(__dirname,'loxia-terminal.js'),_0x354a6e={...process.env,'LOXIA_PORT':_0x3448e1[_0x1c6a35(0x84)](),'LOXIA_HOST':_0x346682},_0x3b7085=spawn(_0x1c6a35(0x79),[_0xf01db],{'cwd':join(__dirname,'..'),'env':_0x354a6e,'stdio':_0x1c6a35(0xb5)});return _0x3b7085;}const commands={'web':async()=>{const _0x5cfa3b=a0_0x55b6c9;console[_0x5cfa3b(0xa0)]('Starting\x20Loxia\x20server...\x0a');const _0x489527=startServer(![]);console[_0x5cfa3b(0xa0)](_0x5cfa3b(0xa3));let _0xf668dc;explicitPort?_0xf668dc=await waitForServerAtPort(host,explicitPort):_0xf668dc=await waitForServerWithDiscovery();if(_0xf668dc){const _0x2179ab=_0x5cfa3b(0x92)+_0xf668dc[_0x5cfa3b(0xc5)]+':'+_0xf668dc['port'];console['log'](_0x5cfa3b(0xab)+_0x2179ab),openBrowser(_0x2179ab);}else console['log'](_0x5cfa3b(0x76));process['on'](_0x5cfa3b(0xb3),()=>_0x489527[_0x5cfa3b(0x98)](_0x5cfa3b(0xb3))),process['on'](_0x5cfa3b(0xb8),()=>_0x489527['kill']('SIGTERM')),_0x489527['on']('exit',_0x20f8eb=>process['exit'](_0x20f8eb||0x0));},'plus-web':async()=>{const _0x38c781=a0_0x55b6c9;await commands[_0x38c781(0x73)]();},'serve':async()=>{const _0x6f6341=a0_0x55b6c9;console[_0x6f6341(0xa0)](_0x6f6341(0xb9));const _0x4ba47a=startServer(![]);console['log'](_0x6f6341(0xa3));let _0x5d439e;explicitPort?_0x5d439e=await waitForServerAtPort(host,explicitPort):_0x5d439e=await waitForServerWithDiscovery();if(_0x5d439e){const _0x37241a=_0x6f6341(0x92)+_0x5d439e[_0x6f6341(0xc5)]+':'+_0x5d439e['port'];console[_0x6f6341(0xa0)](_0x6f6341(0xc2)+_0x37241a),console['log'](_0x6f6341(0x93)+_0x37241a),console[_0x6f6341(0xa0)](_0x6f6341(0x71)),console[_0x6f6341(0xa0)](_0x6f6341(0xaa)+_0x37241a+_0x6f6341(0xae));}else console['log'](_0x6f6341(0x9c)),console['log'](_0x6f6341(0x9d));process['on'](_0x6f6341(0xb3),()=>_0x4ba47a[_0x6f6341(0x98)](_0x6f6341(0xb3))),process['on'](_0x6f6341(0xb8),()=>_0x4ba47a[_0x6f6341(0x98)](_0x6f6341(0xb8))),_0x4ba47a['on'](_0x6f6341(0xa2),_0x2f7abe=>process[_0x6f6341(0xa2)](_0x2f7abe||0x0));},'terminal':async()=>{const _0x420081=a0_0x55b6c9;console[_0x420081(0xa0)](_0x420081(0x8e));let _0x9d75b9=await discoverBackend();explicitPort&&(_0x9d75b9={'host':host,'port':explicitPort});!_0x9d75b9&&(console[_0x420081(0x75)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x420081(0x75)](_0x420081(0x9e)),console['error'](_0x420081(0x7a)),console[_0x420081(0x75)](_0x420081(0x8d)),console[_0x420081(0x75)](_0x420081(0x86)),process[_0x420081(0xa2)](0x1));const _0x2602fe=await checkServerRunning(_0x9d75b9[_0x420081(0xc5)],_0x9d75b9[_0x420081(0x82)]);!_0x2602fe&&(console[_0x420081(0x75)](_0x420081(0xb7)+_0x9d75b9['host']+':'+_0x9d75b9[_0x420081(0x82)]+'\x20but\x20not\x20responding.'),console[_0x420081(0x75)](_0x420081(0x99)),process[_0x420081(0xa2)](0x1));console[_0x420081(0xa0)]('Server\x20discovered\x20at\x20'+_0x9d75b9[_0x420081(0xc5)]+':'+_0x9d75b9[_0x420081(0x82)]),console[_0x420081(0xa0)](_0x420081(0x81));const _0x347374=startTerminalUIProcess(_0x9d75b9[_0x420081(0xc5)],_0x9d75b9[_0x420081(0x82)]);process['on'](_0x420081(0xb3),()=>_0x347374[_0x420081(0x98)]('SIGINT')),process['on'](_0x420081(0xb8),()=>_0x347374[_0x420081(0x98)](_0x420081(0xb8))),_0x347374['on'](_0x420081(0xa2),_0x4b9879=>process['exit'](_0x4b9879||0x0));},'plus-terminal':async()=>{const _0x304cc5=a0_0x55b6c9;console[_0x304cc5(0xa0)](_0x304cc5(0x8f));const _0x489177=startServer(!![]);let _0x55942e;explicitPort?_0x55942e=await waitForServerAtPort(host,explicitPort):_0x55942e=await waitForServerWithDiscovery();!_0x55942e&&(console[_0x304cc5(0x75)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process['exit'](0x1));console['log'](_0x304cc5(0xac)+_0x55942e[_0x304cc5(0xc5)]+':'+_0x55942e[_0x304cc5(0x82)]),console[_0x304cc5(0xa0)](_0x304cc5(0x81));const _0x4ace15=startTerminalUIProcess(_0x55942e[_0x304cc5(0xc5)],_0x55942e[_0x304cc5(0x82)]);_0x4ace15['on']('exit',_0x4fa176=>{const _0x2ff6d5=_0x304cc5;console['log'](_0x2ff6d5(0xb2));try{process[_0x2ff6d5(0x98)](_0x489177[_0x2ff6d5(0x7e)],'SIGTERM');}catch(_0x33deeb){}process[_0x2ff6d5(0xa2)](_0x4fa176||0x0);}),process['on'](_0x304cc5(0xb3),()=>{const _0x542e94=_0x304cc5;_0x4ace15['kill'](_0x542e94(0xb3));}),process['on'](_0x304cc5(0xb8),()=>{const _0x49508f=_0x304cc5;_0x4ace15[_0x49508f(0x98)](_0x49508f(0xb8));});}};commands[command]?commands[command]()[a0_0x55b6c9(0x87)](_0x456520=>{const _0x4076a6=a0_0x55b6c9;console['error']('Error:',_0x456520['message']),process[_0x4076a6(0xa2)](0x1);}):(console[a0_0x55b6c9(0x75)](a0_0x55b6c9(0x85)+command),console[a0_0x55b6c9(0x75)](a0_0x55b6c9(0xa4)),process['exit'](0x1));
3
+ const a0_0x28fff5=a0_0x121f;(function(_0x1ba806,_0x4fc59d){const _0x5b2c14=a0_0x121f,_0x494198=_0x1ba806();while(!![]){try{const _0x535985=parseInt(_0x5b2c14(0xff))/0x1+parseInt(_0x5b2c14(0xfb))/0x2+-parseInt(_0x5b2c14(0xdc))/0x3+-parseInt(_0x5b2c14(0xeb))/0x4+parseInt(_0x5b2c14(0xf5))/0x5*(parseInt(_0x5b2c14(0x100))/0x6)+parseInt(_0x5b2c14(0xcc))/0x7+-parseInt(_0x5b2c14(0xd6))/0x8*(parseInt(_0x5b2c14(0xe2))/0x9);if(_0x535985===_0x4fc59d)break;else _0x494198['push'](_0x494198['shift']());}catch(_0x55d31e){_0x494198['push'](_0x494198['shift']());}}}(a0_0xeed5,0x64621));import{fileURLToPath}from'url';function a0_0x121f(_0x4e925c,_0x5c0f9e){_0x4e925c=_0x4e925c-0xc2;const _0xeed5a2=a0_0xeed5();let _0x121f46=_0xeed5a2[_0x4e925c];return _0x121f46;}function a0_0xeed5(){const _0x496e54=['package.json','unref','src','LOXIA_HOST',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','\x0a✓\x20Server\x20running\x20at\x20','Unknown\x20command:\x20','loxia-terminal.js','statusCode','length','includes','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','web','kill','index.js',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','Error:','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','4165665DUQVsh','Server\x20discovered\x20at\x20','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','argv','destroy','log','ignore','\x20but\x20not\x20responding.','\x0aLoxia\x20Autopilot\x20One\x20v','127.0.0.1','16fIcKTc','inherit','\x0aServer\x20registered\x20at\x20','darwin','\x0aPlease\x20start\x20the\x20server\x20first:','node','494469DRsRbP','SIGINT','now','startsWith','cmd','http://','3597138CHaqMo','SIGTERM','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','ceil','platform','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','--version','get','Server\x20running\x20at\x20http://','240308HHLpJY','version','PORT','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','Loxia\x20Autopilot\x20One\x20v','error','win32','exit','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','host','1128995UghUIh','start','xdg-open','utf8','localhost','/api/health','47788ctVtDc','\x0aShutting\x20down\x20server...','backend','port','590645YOLQak','6WOnrvZ','Waiting\x20for\x20server\x20to\x20start...','cleanupStaleEntries','--help','message','\x20\x20API\x20Health:\x20\x20\x20','--port','toString','slice','Looking\x20for\x20running\x20server...','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Starting\x20Loxia\x20server...\x0a','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','Starting\x20Terminal\x20UI...\x0a','getService','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','pid'];a0_0xeed5=function(){return _0x496e54;};return a0_0xeed5();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x398be7 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x28fff5(0xd5),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x28fff5(0xcf)][a0_0x28fff5(0x108)](0x2),command=args[0x0]&&!args[0x0][a0_0x28fff5(0xdf)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x28fff5(0xc4)](a0_0x28fff5(0x103))||args['includes']('-h'),'version':args['includes'](a0_0x28fff5(0xe8))||args[a0_0x28fff5(0xc4)]('-v')};for(let i=0x0;i<args[a0_0x28fff5(0xc3)];i++){args[i]===a0_0x28fff5(0x106)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x28fff5(0xf4)]=args[i+0x1]);}const explicitPort=flags[a0_0x28fff5(0xfe)],host=flags[a0_0x28fff5(0xf4)]||DEFAULT_HOST;if(flags[a0_0x28fff5(0xec)]){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x28fff5(0xf8)));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xef)+pkg[a0_0x28fff5(0xec)]),process['exit'](0x0);}if(flags['help']||!command){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,'utf8'));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xd4)+pkg[a0_0x28fff5(0xec)]+a0_0x28fff5(0xcb)+DEFAULT_PORT+a0_0x28fff5(0xc9)+DEFAULT_HOST+a0_0x28fff5(0x115)),process[a0_0x28fff5(0xf2)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x314863}=await import('../src/services/portRegistry.js');return _0x314863();}async function discoverBackend(){const _0x3921f9=a0_0x28fff5;try{const _0x34391d=await getPortRegistry();await _0x34391d[_0x3921f9(0x102)]();const _0x51a924=await _0x34391d[_0x3921f9(0x10e)](_0x3921f9(0xfd));if(_0x51a924)return{'host':_0x51a924[_0x3921f9(0xf4)]||_0x3921f9(0xf9),'port':_0x51a924[_0x3921f9(0xfe)],'pid':_0x51a924[_0x3921f9(0x110)]};return null;}catch(_0x2b0cc4){return null;}}async function checkServerRunning(_0x58eb84,_0x41c8cc,_0x1273c4=0x1){for(let _0x4935a4=0x0;_0x4935a4<_0x1273c4;_0x4935a4++){const _0x39587d=await new Promise(_0x53de52=>{const _0x43fd84=a0_0x121f,_0x37ac1b=a0_0x398be7[_0x43fd84(0xe9)]('http://'+_0x58eb84+':'+_0x41c8cc+_0x43fd84(0xfa),_0x48d178=>{const _0x49313c=_0x43fd84;_0x53de52(_0x48d178[_0x49313c(0xc2)]===0xc8);});_0x37ac1b['on'](_0x43fd84(0xf0),()=>_0x53de52(![])),_0x37ac1b['setTimeout'](0x7d0,()=>{const _0x7fd836=_0x43fd84;_0x37ac1b[_0x7fd836(0xd0)](),_0x53de52(![]);});});if(_0x39587d)return!![];_0x4935a4<_0x1273c4-0x1&&await new Promise(_0x5a91b4=>setTimeout(_0x5a91b4,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x19f1a1=SERVER_STARTUP_TIMEOUT){const _0x2bb70e=a0_0x28fff5,_0x262682=Date['now']();while(Date[_0x2bb70e(0xde)]()-_0x262682<_0x19f1a1){const _0x51f540=await discoverBackend();if(_0x51f540){const _0x17a27b=await checkServerRunning(_0x51f540[_0x2bb70e(0xf4)],_0x51f540[_0x2bb70e(0xfe)]);if(_0x17a27b)return _0x51f540;}await new Promise(_0x5592f9=>setTimeout(_0x5592f9,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x21134e,_0x2a5f75,_0x384ae4=SERVER_STARTUP_TIMEOUT){const _0x2737a3=a0_0x28fff5,_0x41191f=Math[_0x2737a3(0xe5)](_0x384ae4/SERVER_CHECK_INTERVAL),_0x2a4221=await checkServerRunning(_0x21134e,_0x2a5f75,_0x41191f);return _0x2a4221?{'host':_0x21134e,'port':_0x2a5f75}:null;}function openBrowser(_0x193cb2){const _0x4d12a4=a0_0x28fff5;let _0x5eab38,_0x1db5e0;if(process['platform']===_0x4d12a4(0xd9))_0x5eab38='open',_0x1db5e0=[_0x193cb2];else process[_0x4d12a4(0xe6)]===_0x4d12a4(0xf1)?(_0x5eab38=_0x4d12a4(0xe0),_0x1db5e0=['/c',_0x4d12a4(0xf6),'\x22\x22',_0x193cb2]):(_0x5eab38=_0x4d12a4(0xf7),_0x1db5e0=[_0x193cb2]);const _0x574471=spawn(_0x5eab38,_0x1db5e0,{'detached':!![],'stdio':'ignore'});_0x574471[_0x4d12a4(0x112)](),_0x574471['on'](_0x4d12a4(0xf0),()=>{const _0x4cd4ac=_0x4d12a4;console[_0x4cd4ac(0xd1)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x4cd4ac(0xd1)]('Please\x20open\x20manually:\x20'+_0x193cb2);});}function startServer(_0x13fbde=![]){const _0x1a1f2c=a0_0x28fff5,_0x24ec26={...process.env};explicitPort&&(_0x24ec26['LOXIA_PORT']=explicitPort[_0x1a1f2c(0x107)](),_0x24ec26[_0x1a1f2c(0xed)]=explicitPort['toString']());flags['host']&&(_0x24ec26[_0x1a1f2c(0x114)]=flags[_0x1a1f2c(0xf4)]);const _0x471a07=join(__dirname,'..',_0x1a1f2c(0x113),_0x1a1f2c(0xc8)),_0x4866fa=spawn(_0x1a1f2c(0xdb),[_0x471a07],{'cwd':join(__dirname,'..'),'env':_0x24ec26,'stdio':_0x13fbde?[_0x1a1f2c(0xd2),'ignore',_0x1a1f2c(0xd2)]:_0x1a1f2c(0xd7),'detached':_0x13fbde});return _0x13fbde&&_0x4866fa[_0x1a1f2c(0x112)](),_0x4866fa;}function startTerminalUIProcess(_0x22a3c2,_0x3510c9){const _0x37277a=a0_0x28fff5,_0x5ea08b=join(__dirname,_0x37277a(0x118)),_0x4887f3={...process.env,'LOXIA_PORT':_0x3510c9[_0x37277a(0x107)](),'LOXIA_HOST':_0x22a3c2},_0x914ce=spawn(_0x37277a(0xdb),[_0x5ea08b],{'cwd':join(__dirname,'..'),'env':_0x4887f3,'stdio':_0x37277a(0xd7)});return _0x914ce;}const commands={'web':async()=>{const _0x5003d2=a0_0x28fff5;console[_0x5003d2(0xd1)](_0x5003d2(0x10b));const _0x18b385=startServer(![]);console[_0x5003d2(0xd1)]('Waiting\x20for\x20server\x20to\x20start...');let _0x9b3df4;explicitPort?_0x9b3df4=await waitForServerAtPort(host,explicitPort):_0x9b3df4=await waitForServerWithDiscovery();if(_0x9b3df4){const _0x36622c=_0x5003d2(0xe1)+_0x9b3df4[_0x5003d2(0xf4)]+':'+_0x9b3df4[_0x5003d2(0xfe)];console['log']('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x36622c),openBrowser(_0x36622c);}else console['log']('\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.');process['on'](_0x5003d2(0xdd),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xdd))),process['on'](_0x5003d2(0xe3),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xe3))),_0x18b385['on'](_0x5003d2(0xf2),_0x55b532=>process[_0x5003d2(0xf2)](_0x55b532||0x0));},'plus-web':async()=>{const _0x5d9982=a0_0x28fff5;await commands[_0x5d9982(0xc6)]();},'serve':async()=>{const _0x435396=a0_0x28fff5;console[_0x435396(0xd1)](_0x435396(0x10b));const _0x15b9f7=startServer(![]);console[_0x435396(0xd1)](_0x435396(0x101));let _0x504923;explicitPort?_0x504923=await waitForServerAtPort(host,explicitPort):_0x504923=await waitForServerWithDiscovery();if(_0x504923){const _0x30d4a0='http://'+_0x504923['host']+':'+_0x504923[_0x435396(0xfe)];console[_0x435396(0xd1)](_0x435396(0x116)+_0x30d4a0),console['log']('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x30d4a0),console[_0x435396(0xd1)](_0x435396(0x10f)),console['log'](_0x435396(0x105)+_0x30d4a0+'/api/health\x0a');}else console['log'](_0x435396(0xe4)),console[_0x435396(0xd1)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on']('SIGINT',()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xdd))),process['on'](_0x435396(0xe3),()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xe3))),_0x15b9f7['on'](_0x435396(0xf2),_0x564667=>process['exit'](_0x564667||0x0));},'terminal':async()=>{const _0xd18747=a0_0x28fff5;console[_0xd18747(0xd1)](_0xd18747(0x109));let _0x36b9eb=await discoverBackend();explicitPort&&(_0x36b9eb={'host':host,'port':explicitPort});!_0x36b9eb&&(console['error'](_0xd18747(0xc5)),console['error'](_0xd18747(0xda)),console['error'](_0xd18747(0xee)),console[_0xd18747(0xf0)](_0xd18747(0xe7)),console['error'](_0xd18747(0x10a)),process[_0xd18747(0xf2)](0x1));const _0x2fdc3d=await checkServerRunning(_0x36b9eb[_0xd18747(0xf4)],_0x36b9eb[_0xd18747(0xfe)]);!_0x2fdc3d&&(console[_0xd18747(0xf0)](_0xd18747(0xd8)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]+_0xd18747(0xd3)),console['error'](_0xd18747(0x10c)),process['exit'](0x1));console['log'](_0xd18747(0xcd)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]),console[_0xd18747(0xd1)](_0xd18747(0x10d));const _0x39b13d=startTerminalUIProcess(_0x36b9eb['host'],_0x36b9eb[_0xd18747(0xfe)]);process['on'](_0xd18747(0xdd),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xdd))),process['on'](_0xd18747(0xe3),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xe3))),_0x39b13d['on'](_0xd18747(0xf2),_0x561973=>process[_0xd18747(0xf2)](_0x561973||0x0));},'plus-terminal':async()=>{const _0x56481a=a0_0x28fff5;console[_0x56481a(0xd1)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x5358c4=startServer(!![]);let _0x35b7fc;explicitPort?_0x35b7fc=await waitForServerAtPort(host,explicitPort):_0x35b7fc=await waitForServerWithDiscovery();!_0x35b7fc&&(console['error'](_0x56481a(0xf3)),process['exit'](0x1));console[_0x56481a(0xd1)](_0x56481a(0xea)+_0x35b7fc[_0x56481a(0xf4)]+':'+_0x35b7fc[_0x56481a(0xfe)]),console['log'](_0x56481a(0x10d));const _0xb5c835=startTerminalUIProcess(_0x35b7fc[_0x56481a(0xf4)],_0x35b7fc[_0x56481a(0xfe)]);_0xb5c835['on'](_0x56481a(0xf2),_0x5f4024=>{const _0x3c9d4a=_0x56481a;console[_0x3c9d4a(0xd1)](_0x3c9d4a(0xfc));try{process[_0x3c9d4a(0xc7)](_0x5358c4[_0x3c9d4a(0x110)],'SIGTERM');}catch(_0x2a1e59){}process[_0x3c9d4a(0xf2)](_0x5f4024||0x0);}),process['on'](_0x56481a(0xdd),()=>{const _0x26b80e=_0x56481a;_0xb5c835[_0x26b80e(0xc7)](_0x26b80e(0xdd));}),process['on'](_0x56481a(0xe3),()=>{const _0x3b32d6=_0x56481a;_0xb5c835['kill'](_0x3b32d6(0xe3));});}};commands[command]?commands[command]()['catch'](_0x1becdf=>{const _0x59ddc1=a0_0x28fff5;console[_0x59ddc1(0xf0)](_0x59ddc1(0xca),_0x1becdf[_0x59ddc1(0x104)]),process[_0x59ddc1(0xf2)](0x1);}):(console[a0_0x28fff5(0xf0)](a0_0x28fff5(0x117)+command),console[a0_0x28fff5(0xf0)](a0_0x28fff5(0xce)),process['exit'](0x1));
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x16e01e=a0_0x15bb;(function(_0xc5be7a,_0x1c2d40){const _0x4b1c72=a0_0x15bb,_0x187af2=_0xc5be7a();while(!![]){try{const _0x50914e=parseInt(_0x4b1c72(0xf5))/0x1*(-parseInt(_0x4b1c72(0xd6))/0x2)+parseInt(_0x4b1c72(0xd4))/0x3+-parseInt(_0x4b1c72(0xf6))/0x4+-parseInt(_0x4b1c72(0xe9))/0x5*(-parseInt(_0x4b1c72(0xfa))/0x6)+-parseInt(_0x4b1c72(0xea))/0x7*(parseInt(_0x4b1c72(0xf2))/0x8)+-parseInt(_0x4b1c72(0xd2))/0x9*(-parseInt(_0x4b1c72(0xe7))/0xa)+parseInt(_0x4b1c72(0xf8))/0xb*(-parseInt(_0x4b1c72(0xde))/0xc);if(_0x50914e===_0x1c2d40)break;else _0x187af2['push'](_0x187af2['shift']());}catch(_0x3766ff){_0x187af2['push'](_0x187af2['shift']());}}}(a0_0x3449,0xc79d7));import{spawn}from'child_process';import a0_0x3c0379 from'net';function a0_0x3449(){const _0x484ff6=['--ui','exit','connect','node','1533276emxkdz','✓\x20Server\x20is\x20already\x20running\x20at\x20','toString','join','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','kill','stderr','../src/interfaces/terminal/index.js','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','40oGOoGo','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','267435cssujQ','6404209KwEuOC','✗\x20Server\x20is\x20not\x20running','timeout','web','💡\x20Troubleshooting:','data','--host','--port','8MXWpgn','destroy','setTimeout','1889szRKqF','5739452JcPjrM','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','11puVkIZ','message','162DglALY','slice','Socket','now','...','error','log','2287062TLiDRy','bin/cli.js','4033665AtImaP','dirname','540bBlwVA','pipe','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...'];a0_0x3449=function(){return _0x484ff6;};return a0_0x3449();}import a0_0x1aa01e from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x1aa01e[a0_0x16e01e(0xd5)](__filename),projectRoot=a0_0x1aa01e[a0_0x16e01e(0xd5)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x4ee220,_0x380a29){return new Promise(_0x37b3cd=>{const _0x1720c6=a0_0x15bb,_0x4ab080=new a0_0x3c0379[(_0x1720c6(0xfc))]();_0x4ab080[_0x1720c6(0xf4)](0x7d0),_0x4ab080['on'](_0x1720c6(0xdc),()=>{const _0x1bb8c7=_0x1720c6;_0x4ab080[_0x1bb8c7(0xf3)](),_0x37b3cd(!![]);}),_0x4ab080['on'](_0x1720c6(0xec),()=>{const _0xe4a481=_0x1720c6;_0x4ab080[_0xe4a481(0xf3)](),_0x37b3cd(![]);}),_0x4ab080['on']('error',()=>{const _0x1fb1c4=_0x1720c6;_0x4ab080[_0x1fb1c4(0xf3)](),_0x37b3cd(![]);}),_0x4ab080[_0x1720c6(0xdc)](_0x380a29,_0x4ee220);});}async function startServer(_0x3dbd1d,_0x414412){return console['log']('🚀\x20Starting\x20Loxia\x20server...'),new Promise((_0x48aeff,_0x561d89)=>{const _0x33469b=a0_0x15bb,_0x2e20dc=spawn(_0x33469b(0xdd),[a0_0x1aa01e[_0x33469b(0xe1)](projectRoot,_0x33469b(0xd3)),_0x33469b(0xda),_0x33469b(0xed),_0x33469b(0xf0),_0x3dbd1d,'--port',_0x414412['toString']()],{'detached':![],'stdio':['ignore',_0x33469b(0xd7),_0x33469b(0xd7)]});_0x2e20dc['stdout']['on']('data',()=>{}),_0x2e20dc[_0x33469b(0xe4)]['on'](_0x33469b(0xef),()=>{}),_0x2e20dc['on'](_0x33469b(0xd0),_0x3a2f4f=>{const _0x38b697=_0x33469b;console['error']('Failed\x20to\x20start\x20server:',_0x3a2f4f[_0x38b697(0xf9)]),_0x561d89(_0x3a2f4f);});const _0x3db281=Date['now'](),_0x44737f=setInterval(async()=>{const _0x31fad5=_0x33469b,_0x67219a=await isServerRunning(_0x3dbd1d,_0x414412);if(_0x67219a)clearInterval(_0x44737f),console[_0x31fad5(0xd1)]('✓\x20Server\x20started\x20at\x20'+_0x3dbd1d+':'+_0x414412),_0x48aeff();else Date[_0x31fad5(0xce)]()-_0x3db281>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x44737f),_0x2e20dc[_0x31fad5(0xe3)](),_0x561d89(new Error('Server\x20startup\x20timeout')));},0x1f4);});}async function main(){const _0x4774ce=a0_0x16e01e;try{console[_0x4774ce(0xd1)](_0x4774ce(0xd8)),console[_0x4774ce(0xd1)]('\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI'),console[_0x4774ce(0xd1)](_0x4774ce(0xd8)),console[_0x4774ce(0xd1)]('');const _0x3f75c4=process['argv'][_0x4774ce(0xfb)](0x2);let _0x43a597=DEFAULT_HOST,_0x548bd3=DEFAULT_PORT;for(let _0x337f1c=0x0;_0x337f1c<_0x3f75c4['length'];_0x337f1c++){if(_0x3f75c4[_0x337f1c]===_0x4774ce(0xf0)&&_0x3f75c4[_0x337f1c+0x1])_0x43a597=_0x3f75c4[_0x337f1c+0x1],_0x337f1c++;else _0x3f75c4[_0x337f1c]===_0x4774ce(0xf1)&&_0x3f75c4[_0x337f1c+0x1]&&(_0x548bd3=parseInt(_0x3f75c4[_0x337f1c+0x1],0xa),_0x337f1c++);}console[_0x4774ce(0xd1)](_0x4774ce(0xe2)+_0x43a597+':'+_0x548bd3+_0x4774ce(0xcf));const _0x1b589e=await isServerRunning(_0x43a597,_0x548bd3);!_0x1b589e?(console['log'](_0x4774ce(0xeb)),await startServer(_0x43a597,_0x548bd3)):console['log'](_0x4774ce(0xdf)+_0x43a597+':'+_0x548bd3),console[_0x4774ce(0xd1)](''),console[_0x4774ce(0xd1)](_0x4774ce(0xd9)),console['log'](''),await new Promise(_0xab7f57=>setTimeout(_0xab7f57,0x1f4)),process.env.LOXIA_HOST=_0x43a597,process.env.LOXIA_PORT=_0x548bd3[_0x4774ce(0xe0)](),await import(_0x4774ce(0xe5));}catch(_0x1d7f50){console[_0x4774ce(0xd0)](''),console[_0x4774ce(0xd0)](_0x4774ce(0xf7)),console[_0x4774ce(0xd0)]('\x20\x20',_0x1d7f50[_0x4774ce(0xf9)]),console[_0x4774ce(0xd0)](''),console[_0x4774ce(0xd0)](_0x4774ce(0xee)),console[_0x4774ce(0xd0)](_0x4774ce(0xe6)),console[_0x4774ce(0xd0)](_0x4774ce(0xe8)),console[_0x4774ce(0xd0)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x4774ce(0xd0)](''),process[_0x4774ce(0xdb)](0x1);}}function a0_0x15bb(_0x2ee0ca,_0x11fa7c){_0x2ee0ca=_0x2ee0ca-0xce;const _0x34499c=a0_0x3449();let _0x15bb39=_0x34499c[_0x2ee0ca];return _0x15bb39;}main();
3
+ const a0_0x1a6b25=a0_0x3173;(function(_0x591e48,_0x284758){const _0x256fdf=a0_0x3173,_0x5f4a48=_0x591e48();while(!![]){try{const _0x117042=parseInt(_0x256fdf(0x13c))/0x1*(parseInt(_0x256fdf(0x14b))/0x2)+-parseInt(_0x256fdf(0x133))/0x3*(parseInt(_0x256fdf(0x11e))/0x4)+-parseInt(_0x256fdf(0x147))/0x5*(-parseInt(_0x256fdf(0x143))/0x6)+parseInt(_0x256fdf(0x13f))/0x7+parseInt(_0x256fdf(0x127))/0x8+-parseInt(_0x256fdf(0x12b))/0x9+parseInt(_0x256fdf(0x134))/0xa;if(_0x117042===_0x284758)break;else _0x5f4a48['push'](_0x5f4a48['shift']());}catch(_0x246b04){_0x5f4a48['push'](_0x5f4a48['shift']());}}}(a0_0x2221,0xb1e09));import{spawn}from'child_process';import a0_0x2109d2 from'net';import a0_0x504f9e from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x504f9e[a0_0x1a6b25(0x144)](__filename),projectRoot=a0_0x504f9e[a0_0x1a6b25(0x144)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x1a6b25(0x135),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x377176,_0x2edda6){return new Promise(_0x15fbd1=>{const _0xcd5da3=a0_0x3173,_0x406a18=new a0_0x2109d2[(_0xcd5da3(0x140))]();_0x406a18[_0xcd5da3(0x124)](0x7d0),_0x406a18['on']('connect',()=>{const _0x5a09dd=_0xcd5da3;_0x406a18[_0x5a09dd(0x11f)](),_0x15fbd1(!![]);}),_0x406a18['on'](_0xcd5da3(0x121),()=>{const _0x42a371=_0xcd5da3;_0x406a18[_0x42a371(0x11f)](),_0x15fbd1(![]);}),_0x406a18['on']('error',()=>{_0x406a18['destroy'](),_0x15fbd1(![]);}),_0x406a18[_0xcd5da3(0x139)](_0x2edda6,_0x377176);});}function a0_0x3173(_0x1621d7,_0x2a5bd4){_0x1621d7=_0x1621d7-0x11e;const _0x222119=a0_0x2221();let _0x317397=_0x222119[_0x1621d7];return _0x317397;}async function startServer(_0x5dcdac,_0x4d2374){const _0x13823a=a0_0x1a6b25;return console[_0x13823a(0x145)](_0x13823a(0x13b)),new Promise((_0x42e717,_0x3e4fff)=>{const _0x34caab=_0x13823a,_0x5c1b27=spawn('node',[a0_0x504f9e[_0x34caab(0x128)](projectRoot,'bin/cli.js'),_0x34caab(0x14a),_0x34caab(0x146),_0x34caab(0x129),_0x5dcdac,_0x34caab(0x126),_0x4d2374[_0x34caab(0x13e)]()],{'detached':![],'stdio':['ignore',_0x34caab(0x149),_0x34caab(0x149)]});_0x5c1b27[_0x34caab(0x142)]['on'](_0x34caab(0x137),()=>{}),_0x5c1b27['stderr']['on']('data',()=>{}),_0x5c1b27['on'](_0x34caab(0x131),_0x24cf85=>{const _0x3b3214=_0x34caab;console[_0x3b3214(0x131)](_0x3b3214(0x136),_0x24cf85[_0x3b3214(0x130)]),_0x3e4fff(_0x24cf85);});const _0x37d05d=Date[_0x34caab(0x132)](),_0x3670a0=setInterval(async()=>{const _0x25bf83=_0x34caab,_0x3b392d=await isServerRunning(_0x5dcdac,_0x4d2374);if(_0x3b392d)clearInterval(_0x3670a0),console[_0x25bf83(0x145)](_0x25bf83(0x12c)+_0x5dcdac+':'+_0x4d2374),_0x42e717();else Date[_0x25bf83(0x132)]()-_0x37d05d>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x3670a0),_0x5c1b27[_0x25bf83(0x12e)](),_0x3e4fff(new Error(_0x25bf83(0x122))));},0x1f4);});}async function main(){const _0x4f581f=a0_0x1a6b25;try{console['log'](_0x4f581f(0x125)),console[_0x4f581f(0x145)](_0x4f581f(0x12a)),console[_0x4f581f(0x145)](_0x4f581f(0x125)),console[_0x4f581f(0x145)]('');const _0x306891=process['argv'][_0x4f581f(0x13a)](0x2);let _0x49701d=DEFAULT_HOST,_0x6554c=DEFAULT_PORT;for(let _0xec5cf0=0x0;_0xec5cf0<_0x306891[_0x4f581f(0x138)];_0xec5cf0++){if(_0x306891[_0xec5cf0]===_0x4f581f(0x129)&&_0x306891[_0xec5cf0+0x1])_0x49701d=_0x306891[_0xec5cf0+0x1],_0xec5cf0++;else _0x306891[_0xec5cf0]===_0x4f581f(0x126)&&_0x306891[_0xec5cf0+0x1]&&(_0x6554c=parseInt(_0x306891[_0xec5cf0+0x1],0xa),_0xec5cf0++);}console[_0x4f581f(0x145)](_0x4f581f(0x14d)+_0x49701d+':'+_0x6554c+_0x4f581f(0x123));const _0x4d79f6=await isServerRunning(_0x49701d,_0x6554c);!_0x4d79f6?(console[_0x4f581f(0x145)](_0x4f581f(0x120)),await startServer(_0x49701d,_0x6554c)):console[_0x4f581f(0x145)](_0x4f581f(0x14c)+_0x49701d+':'+_0x6554c),console[_0x4f581f(0x145)](''),console['log'](_0x4f581f(0x141)),console[_0x4f581f(0x145)](''),await new Promise(_0x1b87d5=>setTimeout(_0x1b87d5,0x1f4)),process.env.LOXIA_HOST=_0x49701d,process.env.LOXIA_PORT=_0x6554c['toString'](),await import(_0x4f581f(0x148));}catch(_0xedc848){console[_0x4f581f(0x131)](''),console[_0x4f581f(0x131)]('❌\x20Failed\x20to\x20start\x20Terminal\x20UI:'),console['error']('\x20\x20',_0xedc848[_0x4f581f(0x130)]),console['error'](''),console[_0x4f581f(0x131)](_0x4f581f(0x12d)),console['error'](_0x4f581f(0x12f)),console['error'](_0x4f581f(0x13d)),console[_0x4f581f(0x131)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x4f581f(0x131)](''),process[_0x4f581f(0x14e)](0x1);}}main();function a0_0x2221(){const _0x86a2e2=['slice','🚀\x20Starting\x20Loxia\x20server...','1331961apwmIZ','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','toString','2431030ONnzyw','Socket','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','stdout','71892lGfkbp','dirname','log','web','5WajJDk','../src/interfaces/terminal/index.js','pipe','--ui','2YwnJti','✓\x20Server\x20is\x20already\x20running\x20at\x20','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','exit','4064OSBmpq','destroy','✗\x20Server\x20is\x20not\x20running','timeout','Server\x20startup\x20timeout','...','setTimeout','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','--port','4579920cPTKSZ','join','--host','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','6326721kxbFpR','✓\x20Server\x20started\x20at\x20','💡\x20Troubleshooting:','kill','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','message','error','now','2820cMiHRN','1228710aHhxhm','localhost','Failed\x20to\x20start\x20server:','data','length','connect'];a0_0x2221=function(){return _0x86a2e2;};return a0_0x2221();}
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0x5dbe35=a0_0x432b;(function(_0x34f4cc,_0x121ec4){const _0x1ecff2=a0_0x432b,_0x519f5c=_0x34f4cc();while(!![]){try{const _0x2f0b03=parseInt(_0x1ecff2(0xaf))/0x1+parseInt(_0x1ecff2(0xc1))/0x2*(-parseInt(_0x1ecff2(0xbd))/0x3)+parseInt(_0x1ecff2(0xc4))/0x4*(-parseInt(_0x1ecff2(0xb6))/0x5)+-parseInt(_0x1ecff2(0xb7))/0x6*(parseInt(_0x1ecff2(0xbc))/0x7)+-parseInt(_0x1ecff2(0xcb))/0x8+-parseInt(_0x1ecff2(0xb9))/0x9*(parseInt(_0x1ecff2(0xb8))/0xa)+parseInt(_0x1ecff2(0xd0))/0xb;if(_0x2f0b03===_0x121ec4)break;else _0x519f5c['push'](_0x519f5c['shift']());}catch(_0x484545){_0x519f5c['push'](_0x519f5c['shift']());}}}(a0_0x1599,0x5ac04));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process['argv'][a0_0x5dbe35(0xce)](0x2),options={'host':'localhost','port':0x1f90};for(let i=0x0;i<args[a0_0x5dbe35(0xc0)];i++){const arg=args[i];if(arg===a0_0x5dbe35(0xb0)||arg==='-h')options['host']=args[++i];else{if(arg===a0_0x5dbe35(0xcc)||arg==='-p')options[a0_0x5dbe35(0xc3)]=parseInt(args[++i],0xa);else arg===a0_0x5dbe35(0xbb)&&(console[a0_0x5dbe35(0xc7)](a0_0x5dbe35(0xbe)),process[a0_0x5dbe35(0xbf)](0x0));}}function a0_0x432b(_0x23051d,_0x14b004){_0x23051d=_0x23051d-0xae;const _0x159966=a0_0x1599();let _0x432bc9=_0x159966[_0x23051d];return _0x432bc9;}process.env.LOXIA_HOST&&(options[a0_0x5dbe35(0xcf)]=process.env.LOXIA_HOST);function a0_0x1599(){const _0x155582=['port','818956EoRniU','Or\x20use\x20the\x20web\x20UI\x20instead:','Connecting\x20to:\x20','log','Starting\x20Loxia\x20Terminal\x20UI...','\x20\x20-\x20Some\x20CI/CD\x20environments','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','1583040pQwhfh','--port','\x0aTerminal\x20UI\x20error:','slice','host','26240555XAeomU','\x20\x20npm\x20run\x20terminal-ui','stdin','253648VmPbRa','--host','isTTY','Press\x20Ctrl+C\x20to\x20exit\x0a','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','error','\x0aTerminal\x20UI\x20exited','15rgNlOr','13326KKqQfA','190RXXHeY','133074YHkFWt','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).','--help','2240LrgqWq','654fuByDt','\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','exit','length','4254KffiWJ','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'];a0_0x1599=function(){return _0x155582;};return a0_0x1599();}process.env.LOXIA_PORT&&(options[a0_0x5dbe35(0xc3)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x5dbe35(0xae)][a0_0x5dbe35(0xb1)]&&(console[a0_0x5dbe35(0xb4)](a0_0x5dbe35(0xba)),console[a0_0x5dbe35(0xb4)](''),console[a0_0x5dbe35(0xb4)]('The\x20terminal\x20UI\x20cannot\x20run\x20in:'),console[a0_0x5dbe35(0xb4)](a0_0x5dbe35(0xc2)),console[a0_0x5dbe35(0xb4)](a0_0x5dbe35(0xb3)),console[a0_0x5dbe35(0xb4)]('\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)'),console['error'](a0_0x5dbe35(0xc9)),console['error'](''),console['error'](a0_0x5dbe35(0xca)),console[a0_0x5dbe35(0xb4)](a0_0x5dbe35(0xd1)),console[a0_0x5dbe35(0xb4)](''),console[a0_0x5dbe35(0xb4)](a0_0x5dbe35(0xc5)),console['error']('\x20\x20npm\x20start'),process[a0_0x5dbe35(0xbf)](0x1));console[a0_0x5dbe35(0xc7)](a0_0x5dbe35(0xc8)),console['log'](a0_0x5dbe35(0xc6)+options[a0_0x5dbe35(0xcf)]+':'+options['port']),console[a0_0x5dbe35(0xc7)](a0_0x5dbe35(0xb2));const instance=startTerminalUI(options);instance['waitUntilExit']()['then'](()=>{const _0x3c50fd=a0_0x5dbe35;console[_0x3c50fd(0xc7)](_0x3c50fd(0xb5)),process['exit'](0x0);})['catch'](_0x59dc5d=>{const _0x10dd23=a0_0x5dbe35;console[_0x10dd23(0xb4)](_0x10dd23(0xcd),_0x59dc5d),process['exit'](0x1);});
3
+ function a0_0x1cde(_0x16908c,_0x4af050){_0x16908c=_0x16908c-0x174;const _0x260e45=a0_0x260e();let _0x1cde70=_0x260e45[_0x16908c];return _0x1cde70;}const a0_0x23204e=a0_0x1cde;(function(_0x17e14e,_0x313578){const _0x1f772c=a0_0x1cde,_0x2c39e7=_0x17e14e();while(!![]){try{const _0x2b105a=-parseInt(_0x1f772c(0x192))/0x1+-parseInt(_0x1f772c(0x18d))/0x2*(-parseInt(_0x1f772c(0x193))/0x3)+parseInt(_0x1f772c(0x185))/0x4*(-parseInt(_0x1f772c(0x18a))/0x5)+parseInt(_0x1f772c(0x198))/0x6+parseInt(_0x1f772c(0x17a))/0x7*(parseInt(_0x1f772c(0x178))/0x8)+-parseInt(_0x1f772c(0x177))/0x9+parseInt(_0x1f772c(0x174))/0xa;if(_0x2b105a===_0x313578)break;else _0x2c39e7['push'](_0x2c39e7['shift']());}catch(_0x5b9a2b){_0x2c39e7['push'](_0x2c39e7['shift']());}}}(a0_0x260e,0xb4e04));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x23204e(0x176)]['slice'](0x2),options={'host':a0_0x23204e(0x189),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x23204e(0x18e)||arg==='-h')options[a0_0x23204e(0x17b)]=args[++i];else{if(arg===a0_0x23204e(0x17f)||arg==='-p')options[a0_0x23204e(0x17e)]=parseInt(args[++i],0xa);else arg===a0_0x23204e(0x18b)&&(console[a0_0x23204e(0x179)](a0_0x23204e(0x195)),process[a0_0x23204e(0x183)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x23204e(0x17b)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x23204e(0x17e)]=parseInt(process.env.LOXIA_PORT,0xa));!process['stdin']['isTTY']&&(console[a0_0x23204e(0x180)](a0_0x23204e(0x186)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x190)),console[a0_0x23204e(0x180)](a0_0x23204e(0x187)),console[a0_0x23204e(0x180)](a0_0x23204e(0x17c)),console['error'](a0_0x23204e(0x197)),console['error'](a0_0x23204e(0x184)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x196)),console['error'](a0_0x23204e(0x175)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x181)),console[a0_0x23204e(0x180)](a0_0x23204e(0x18c)),process['exit'](0x1));console[a0_0x23204e(0x179)](a0_0x23204e(0x188)),console[a0_0x23204e(0x179)](a0_0x23204e(0x194)+options['host']+':'+options['port']),console[a0_0x23204e(0x179)]('Press\x20Ctrl+C\x20to\x20exit\x0a');const instance=startTerminalUI(options);instance['waitUntilExit']()[a0_0x23204e(0x17d)](()=>{const _0x56f5dc=a0_0x23204e;console[_0x56f5dc(0x179)](_0x56f5dc(0x182)),process['exit'](0x0);})[a0_0x23204e(0x191)](_0x209bca=>{const _0x103f8a=a0_0x23204e;console[_0x103f8a(0x180)](_0x103f8a(0x18f),_0x209bca),process['exit'](0x1);});function a0_0x260e(){const _0x29d714=['\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','Starting\x20Loxia\x20Terminal\x20UI...','localhost','600205vCrKde','--help','\x20\x20npm\x20start','64qmiUCV','--host','\x0aTerminal\x20UI\x20error:','The\x20terminal\x20UI\x20cannot\x20run\x20in:','catch','867333prmiDx','16392KeMDIG','Connecting\x20to:\x20','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','5509554xmFsHr','8598190rzgLFB','\x20\x20npm\x20run\x20terminal-ui','argv','13179969UbmfBk','528YijLeF','log','144221YEHJoy','host','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','then','port','--port','error','Or\x20use\x20the\x20web\x20UI\x20instead:','\x0aTerminal\x20UI\x20exited','exit','\x20\x20-\x20Some\x20CI/CD\x20environments','8HEpDfm','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'];a0_0x260e=function(){return _0x29d714;};return a0_0x260e();}
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const a0_0xaaac71=a0_0xff98;function a0_0xff98(_0x1a664d,_0xf43a4c){_0x1a664d=_0x1a664d-0x1d4;const _0x273a16=a0_0x273a();let _0xff982c=_0x273a16[_0x1a664d];return _0xff982c;}(function(_0x2b044d,_0x41c89a){const _0x1b638c=a0_0xff98,_0x502fec=_0x2b044d();while(!![]){try{const _0x2b6b74=-parseInt(_0x1b638c(0x1ef))/0x1*(-parseInt(_0x1b638c(0x1e8))/0x2)+-parseInt(_0x1b638c(0x1d9))/0x3+-parseInt(_0x1b638c(0x1f0))/0x4+-parseInt(_0x1b638c(0x1e7))/0x5+-parseInt(_0x1b638c(0x1eb))/0x6+-parseInt(_0x1b638c(0x1e1))/0x7+-parseInt(_0x1b638c(0x1e2))/0x8*(-parseInt(_0x1b638c(0x1ee))/0x9);if(_0x2b6b74===_0x41c89a)break;else _0x502fec['push'](_0x502fec['shift']());}catch(_0x598ffd){_0x502fec['push'](_0x502fec['shift']());}}}(a0_0x273a,0x71d58));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x34113e from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;function a0_0x273a(){const _0x376f79=['toString','error','3866496YXbhbn','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','stdout','27885645TpNWkp','343EDySmT','3419732ruwyYC','statusCode','✅\x20Server\x20is\x20ready!','get','ExperimentalWarning','index.js','🚀\x20Starting\x20Loxia\x20server...','Timeout','SIGTERM','data','inherit','[SERVER\x20ERROR]\x20','Failed\x20to\x20start\x20server:','bin','╚════════════════════════════════════════════════╝','destroy','killed','stderr','🛑\x20Stopping\x20server...','ignore','/health','🖥️\x20\x20Starting\x20Terminal\x20UI...','exit','message','Error\x20during\x20startup:','setTimeout','trim','1013715bsuXwo','src','log','pipe','Failed\x20to\x20start\x20Terminal\x20UI:','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','Server\x20returned\x20','SIGINT','4932599uwFRzl','8pBTjbB','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','SIGKILL','kill','node','3011645bqkyjt','2986lATKrT'];a0_0x273a=function(){return _0x376f79;};return a0_0x273a();}let serverProcess=null;async function checkServerReady(_0xebf595=0xa,_0x4f8b38=0x1f4){const _0x9687fc=a0_0xff98;for(let _0x3a7c5b=0x0;_0x3a7c5b<_0xebf595;_0x3a7c5b++){try{return await new Promise((_0x241e77,_0x492a1b)=>{const _0x2bd064=a0_0xff98,_0x5ee84b=a0_0x34113e[_0x2bd064(0x1f3)]('http://localhost:'+SERVER_PORT+_0x2bd064(0x204),_0x1341fa=>{const _0x333282=_0x2bd064;_0x1341fa['statusCode']===0xc8?_0x241e77():_0x492a1b(new Error(_0x333282(0x1df)+_0x1341fa[_0x333282(0x1f1)]));});_0x5ee84b['on']('error',_0x492a1b),_0x5ee84b[_0x2bd064(0x1d7)](0x3e8,()=>{const _0x506f97=_0x2bd064;_0x5ee84b[_0x506f97(0x1ff)](),_0x492a1b(new Error(_0x506f97(0x1f7)));});}),console[_0x9687fc(0x1db)](_0x9687fc(0x1f2)),!![];}catch(_0x1a0319){_0x3a7c5b<_0xebf595-0x1&&await new Promise(_0x5c7179=>setTimeout(_0x5c7179,_0x4f8b38));}}return console['log'](_0x9687fc(0x1de)),![];}async function startServer(){return new Promise(_0x27f308=>{const _0x34a5bf=a0_0xff98;console[_0x34a5bf(0x1db)](_0x34a5bf(0x1f6));const _0x1e1302=join(rootDir,_0x34a5bf(0x1da),_0x34a5bf(0x1f5));serverProcess=spawn(_0x34a5bf(0x1e6),[_0x1e1302],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x34a5bf(0x203),_0x34a5bf(0x1dc),_0x34a5bf(0x1dc)],'detached':![]}),serverProcess[_0x34a5bf(0x1ed)]['on'](_0x34a5bf(0x1f9),_0x35f4c9=>{const _0x4f5026=_0x34a5bf,_0x3adb72=_0x35f4c9['toString']()[_0x4f5026(0x1d8)]();_0x3adb72&&console['log']('[SERVER]\x20'+_0x3adb72);}),serverProcess[_0x34a5bf(0x201)]['on'](_0x34a5bf(0x1f9),_0x56090a=>{const _0x4292ec=_0x34a5bf,_0x37243d=_0x56090a[_0x4292ec(0x1e9)]()[_0x4292ec(0x1d8)]();_0x37243d&&!_0x37243d['includes'](_0x4292ec(0x1f4))&&console[_0x4292ec(0x1ea)](_0x4292ec(0x1fb)+_0x37243d);}),serverProcess['on'](_0x34a5bf(0x1ea),_0x5af09c=>{const _0x8957d0=_0x34a5bf;console[_0x8957d0(0x1ea)](_0x8957d0(0x1fc),_0x5af09c['message']),process[_0x8957d0(0x1d4)](0x1);}),serverProcess['on']('exit',(_0x52f758,_0x415437)=>{const _0x4eea52=_0x34a5bf;_0x52f758!==null&&_0x52f758!==0x0&&(console[_0x4eea52(0x1ea)]('Server\x20exited\x20with\x20code\x20'+_0x52f758),process[_0x4eea52(0x1d4)](_0x52f758));}),setTimeout(_0x27f308,STARTUP_WAIT);});}async function startTerminalUI(){const _0x375ed1=a0_0xff98;console[_0x375ed1(0x1db)](_0x375ed1(0x205)),console[_0x375ed1(0x1db)]('');const _0x31f094=join(rootDir,_0x375ed1(0x1fd),'loxia-terminal.js'),_0x43e4af=spawn(_0x375ed1(0x1e6),[_0x31f094],{'cwd':rootDir,'env':{...process.env},'stdio':_0x375ed1(0x1fa)});return _0x43e4af['on']('error',_0x1050de=>{const _0x5ceea7=_0x375ed1;console['error'](_0x5ceea7(0x1dd),_0x1050de['message']),cleanup(),process[_0x5ceea7(0x1d4)](0x1);}),_0x43e4af['on'](_0x375ed1(0x1d4),_0x4ed2d8=>{const _0x551986=_0x375ed1;console[_0x551986(0x1db)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process[_0x551986(0x1d4)](_0x4ed2d8||0x0);}),_0x43e4af;}function cleanup(){const _0x2d1b79=a0_0xff98;serverProcess&&!serverProcess[_0x2d1b79(0x200)]&&(console[_0x2d1b79(0x1db)](_0x2d1b79(0x202)),serverProcess['kill'](_0x2d1b79(0x1f8)),setTimeout(()=>{const _0x12cce8=_0x2d1b79;!serverProcess[_0x12cce8(0x200)]&&serverProcess[_0x12cce8(0x1e5)](_0x12cce8(0x1e4));},0x1388));}process['on'](a0_0xaaac71(0x1e0),()=>{const _0x475ae6=a0_0xaaac71;console[_0x475ae6(0x1db)]('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process[_0x475ae6(0x1d4)](0x0);}),process['on'](a0_0xaaac71(0x1f8),()=>{const _0x22923e=a0_0xaaac71;console[_0x22923e(0x1db)](_0x22923e(0x1ec)),cleanup(),process[_0x22923e(0x1d4)](0x0);}),process['on'](a0_0xaaac71(0x1d4),()=>{cleanup();});async function main(){const _0x372f02=a0_0xaaac71;console[_0x372f02(0x1db)]('╔════════════════════════════════════════════════╗'),console[_0x372f02(0x1db)](_0x372f02(0x1e3)),console['log'](_0x372f02(0x1fe)),console[_0x372f02(0x1db)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x5d915f){console[_0x372f02(0x1ea)](_0x372f02(0x1d6),_0x5d915f[_0x372f02(0x1d5)]),cleanup(),process[_0x372f02(0x1d4)](0x1);}}main();
3
+ function a0_0x852a(_0x3a0236,_0xd88c98){_0x3a0236=_0x3a0236-0x9e;const _0x5155ef=a0_0x5155();let _0x852ad9=_0x5155ef[_0x3a0236];return _0x852ad9;}const a0_0x5f449d=a0_0x852a;(function(_0x29fb10,_0x393420){const _0x19932f=a0_0x852a,_0x59d028=_0x29fb10();while(!![]){try{const _0x4b7d1b=parseInt(_0x19932f(0xc8))/0x1*(-parseInt(_0x19932f(0xc5))/0x2)+-parseInt(_0x19932f(0xbf))/0x3*(parseInt(_0x19932f(0xcf))/0x4)+-parseInt(_0x19932f(0xb8))/0x5*(-parseInt(_0x19932f(0xd1))/0x6)+-parseInt(_0x19932f(0xba))/0x7*(-parseInt(_0x19932f(0xaa))/0x8)+-parseInt(_0x19932f(0xad))/0x9*(parseInt(_0x19932f(0xa3))/0xa)+-parseInt(_0x19932f(0xc2))/0xb+parseInt(_0x19932f(0xb3))/0xc;if(_0x4b7d1b===_0x393420)break;else _0x59d028['push'](_0x59d028['shift']());}catch(_0x1bad5d){_0x59d028['push'](_0x59d028['shift']());}}}(a0_0x5155,0xc0878));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x5459b9 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;function a0_0x5155(){const _0x4e7bd7=['message','784BbDjpD','inherit','killed','1654reGYpL','http://localhost:','data','get','╔════════════════════════════════════════════════╗','includes','bin','1889468saHayO','error','29982mrgGbV','Error\x20during\x20startup:','SIGINT','[SERVER\x20ERROR]\x20','destroy','loxia-terminal.js','50MpsWyN','Server\x20exited\x20with\x20code\x20','trim','Server\x20returned\x20','SIGTERM','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','8NzOssS','SIGKILL','log','1918827Dkgrtv','✅\x20Server\x20is\x20ready!','Timeout','ignore','pipe','Failed\x20to\x20start\x20Terminal\x20UI:','35144052mjAjkW','statusCode','toString','ExperimentalWarning','\x0a👋\x20Terminal\x20UI\x20closed.','1220gainny','stderr','7232981gtSdxd','index.js','/health','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','exit','9FKJpLJ','node','kill','13872518jkWzhE','src'];a0_0x5155=function(){return _0x4e7bd7;};return a0_0x5155();}async function checkServerReady(_0x276a40=0xa,_0x1fc259=0x1f4){const _0x2ebf42=a0_0x852a;for(let _0x12f2ad=0x0;_0x12f2ad<_0x276a40;_0x12f2ad++){try{return await new Promise((_0x263b4f,_0x387e68)=>{const _0x38a6b7=a0_0x852a,_0x40f342=a0_0x5459b9[_0x38a6b7(0xcb)](_0x38a6b7(0xc9)+SERVER_PORT+_0x38a6b7(0xbc),_0x2e5beb=>{const _0x5917cf=_0x38a6b7;_0x2e5beb[_0x5917cf(0xb4)]===0xc8?_0x263b4f():_0x387e68(new Error(_0x5917cf(0xa6)+_0x2e5beb[_0x5917cf(0xb4)]));});_0x40f342['on'](_0x38a6b7(0xd0),_0x387e68),_0x40f342['setTimeout'](0x3e8,()=>{const _0x3a13d7=_0x38a6b7;_0x40f342[_0x3a13d7(0xa1)](),_0x387e68(new Error(_0x3a13d7(0xaf)));});}),console[_0x2ebf42(0xac)](_0x2ebf42(0xae)),!![];}catch(_0x39af5a){_0x12f2ad<_0x276a40-0x1&&await new Promise(_0x424557=>setTimeout(_0x424557,_0x1fc259));}}return console['log'](_0x2ebf42(0xa9)),![];}async function startServer(){return new Promise(_0x1612b2=>{const _0x1effb2=a0_0x852a;console[_0x1effb2(0xac)]('🚀\x20Starting\x20Loxia\x20server...');const _0x4988dc=join(rootDir,_0x1effb2(0xc3),_0x1effb2(0xbb));serverProcess=spawn(_0x1effb2(0xc0),[_0x4988dc],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x1effb2(0xb0),'pipe',_0x1effb2(0xb1)],'detached':![]}),serverProcess['stdout']['on']('data',_0x3c6f71=>{const _0x5ab783=_0x1effb2,_0x460560=_0x3c6f71['toString']()[_0x5ab783(0xa5)]();_0x460560&&console[_0x5ab783(0xac)]('[SERVER]\x20'+_0x460560);}),serverProcess[_0x1effb2(0xb9)]['on'](_0x1effb2(0xca),_0x5df387=>{const _0x1f5055=_0x1effb2,_0x11a45a=_0x5df387[_0x1f5055(0xb5)]()['trim']();_0x11a45a&&!_0x11a45a[_0x1f5055(0xcd)](_0x1f5055(0xb6))&&console[_0x1f5055(0xd0)](_0x1f5055(0xa0)+_0x11a45a);}),serverProcess['on'](_0x1effb2(0xd0),_0x2986ae=>{const _0x25530d=_0x1effb2;console[_0x25530d(0xd0)]('Failed\x20to\x20start\x20server:',_0x2986ae['message']),process[_0x25530d(0xbe)](0x1);}),serverProcess['on'](_0x1effb2(0xbe),(_0x577276,_0x3451df)=>{const _0x14bec0=_0x1effb2;_0x577276!==null&&_0x577276!==0x0&&(console[_0x14bec0(0xd0)](_0x14bec0(0xa4)+_0x577276),process[_0x14bec0(0xbe)](_0x577276));}),setTimeout(_0x1612b2,STARTUP_WAIT);});}async function startTerminalUI(){const _0x34f704=a0_0x852a;console[_0x34f704(0xac)]('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console[_0x34f704(0xac)]('');const _0x3630fa=join(rootDir,_0x34f704(0xce),_0x34f704(0xa2)),_0x34804a=spawn(_0x34f704(0xc0),[_0x3630fa],{'cwd':rootDir,'env':{...process.env},'stdio':_0x34f704(0xc6)});return _0x34804a['on']('error',_0x4e7d55=>{const _0x1e0c83=_0x34f704;console[_0x1e0c83(0xd0)](_0x1e0c83(0xb2),_0x4e7d55[_0x1e0c83(0xc4)]),cleanup(),process[_0x1e0c83(0xbe)](0x1);}),_0x34804a['on'](_0x34f704(0xbe),_0x106c77=>{const _0x11909c=_0x34f704;console[_0x11909c(0xac)](_0x11909c(0xb7)),cleanup(),process[_0x11909c(0xbe)](_0x106c77||0x0);}),_0x34804a;}function cleanup(){const _0x3e677e=a0_0x852a;serverProcess&&!serverProcess[_0x3e677e(0xc7)]&&(console[_0x3e677e(0xac)]('🛑\x20Stopping\x20server...'),serverProcess[_0x3e677e(0xc1)](_0x3e677e(0xa7)),setTimeout(()=>{const _0x476a47=_0x3e677e;!serverProcess['killed']&&serverProcess[_0x476a47(0xc1)](_0x476a47(0xab));},0x1388));}process['on'](a0_0x5f449d(0x9f),()=>{const _0x2dfd7f=a0_0x5f449d;console['log'](_0x2dfd7f(0xbd)),cleanup(),process['exit'](0x0);}),process['on']('SIGTERM',()=>{const _0x53cc10=a0_0x5f449d;console[_0x53cc10(0xac)](_0x53cc10(0xa8)),cleanup(),process['exit'](0x0);}),process['on'](a0_0x5f449d(0xbe),()=>{cleanup();});async function main(){const _0x460e3c=a0_0x5f449d;console[_0x460e3c(0xac)](_0x460e3c(0xcc)),console[_0x460e3c(0xac)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x460e3c(0xac)]('╚════════════════════════════════════════════════╝'),console[_0x460e3c(0xac)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x25bba2){console['error'](_0x460e3c(0x9e),_0x25bba2[_0x460e3c(0xc4)]),cleanup(),process[_0x460e3c(0xbe)](0x1);}}main();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loxia-labs/loxia-autopilot-one",
3
- "version": "2.0.3",
3
+ "version": "2.0.4",
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_0x5f4bb3=a0_0x4cdb;(function(_0x384666,_0x4ba450){const _0x13f18e=a0_0x4cdb,_0x496f35=_0x384666();while(!![]){try{const _0x519258=parseInt(_0x13f18e(0x1fd))/0x1+-parseInt(_0x13f18e(0x206))/0x2+parseInt(_0x13f18e(0x1ee))/0x3+parseInt(_0x13f18e(0x1e9))/0x4+-parseInt(_0x13f18e(0x212))/0x5*(-parseInt(_0x13f18e(0x211))/0x6)+parseInt(_0x13f18e(0x1f0))/0x7*(parseInt(_0x13f18e(0x203))/0x8)+-parseInt(_0x13f18e(0x218))/0x9;if(_0x519258===_0x4ba450)break;else _0x496f35['push'](_0x496f35['shift']());}catch(_0x2e3593){_0x496f35['push'](_0x496f35['shift']());}}}(a0_0xc362,0x47e0c));function a0_0x4cdb(_0x42cfa6,_0xf7b442){_0x42cfa6=_0x42cfa6-0x1d6;const _0xc362ea=a0_0xc362();let _0x4cdbaa=_0xc362ea[_0x42cfa6];return _0x4cdbaa;}import{exec}from'child_process';import{promisify}from'util';import a0_0x354adb from'https';import a0_0x493d69 from'http';import a0_0x2f2283 from'fs';import a0_0x320004 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_0x320004[a0_0x5f4bb3(0x1ef)](__filename),SCANNER_DIR=a0_0x320004['join'](__dirname,'..',a0_0x5f4bb3(0x21f),'.scanners'),SEMGREP_VERSION=a0_0x5f4bb3(0x1f8);console[a0_0x5f4bb3(0x21e)](a0_0x5f4bb3(0x1f7)),console[a0_0x5f4bb3(0x21e)](a0_0x5f4bb3(0x20e)),console[a0_0x5f4bb3(0x21e)](a0_0x5f4bb3(0x210)+process[a0_0x5f4bb3(0x20b)]+'\x20('+process[a0_0x5f4bb3(0x202)]+')'),console[a0_0x5f4bb3(0x21e)]('═══════════════════════════════════════════════════════════\x0a');async function installScanners(){const _0x431894=a0_0x5f4bb3;await a0_0x2f2283[_0x431894(0x1df)][_0x431894(0x205)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x431894(0x21e)](_0x431894(0x1fe)),console['log'](_0x431894(0x213)),console['log']('═══════════════════════════════════════════════════════════\x0a');}async function checkESLintSecurity(){const _0x32b406=a0_0x5f4bb3;console[_0x32b406(0x21e)](_0x32b406(0x221));try{await import(_0x32b406(0x1e4)),console[_0x32b406(0x21e)]('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x1d180f){console[_0x32b406(0x21e)](_0x32b406(0x1fa)),console[_0x32b406(0x21e)](_0x32b406(0x1d9));}}async function installSemgrep(){const _0x33c3ed=a0_0x5f4bb3;console[_0x33c3ed(0x21e)](_0x33c3ed(0x1d8));const _0x21ce04=process['platform'],_0x12fa62=process[_0x33c3ed(0x202)];try{const _0x415c74=await execAsync(_0x33c3ed(0x217),{'timeout':0x1388});console[_0x33c3ed(0x21e)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x415c74[_0x33c3ed(0x1ea)][_0x33c3ed(0x1da)]()),console[_0x33c3ed(0x21e)](_0x33c3ed(0x204));return;}catch(_0x5d0bdb){console[_0x33c3ed(0x21e)](_0x33c3ed(0x207));}const _0x3c9f20=getSemgrepBinaryInfo(_0x21ce04,_0x12fa62);if(!_0x3c9f20){console[_0x33c3ed(0x21e)](_0x33c3ed(0x1f3)+_0x21ce04+'-'+_0x12fa62),console['log'](_0x33c3ed(0x209));return;}try{const _0x241290=a0_0x320004[_0x33c3ed(0x1eb)](SCANNER_DIR,_0x33c3ed(0x222));console[_0x33c3ed(0x21e)](_0x33c3ed(0x200)+_0x3c9f20[_0x33c3ed(0x1e5)]+'...'),await downloadFile(_0x3c9f20[_0x33c3ed(0x1e5)],_0x241290),await a0_0x2f2283[_0x33c3ed(0x1df)][_0x33c3ed(0x208)](_0x241290,0x1ed),console[_0x33c3ed(0x21e)](_0x33c3ed(0x21b)),console[_0x33c3ed(0x21e)](_0x33c3ed(0x215)+_0x241290+'\x0a'),console[_0x33c3ed(0x21e)](_0x33c3ed(0x201)),console[_0x33c3ed(0x21e)]('\x20\x20\x20pip\x20install\x20semgrep\x0a');}catch(_0x581767){console['log'](_0x33c3ed(0x1fb)+_0x581767[_0x33c3ed(0x1e7)]),console[_0x33c3ed(0x21e)](_0x33c3ed(0x1e1));}}function getSemgrepBinaryInfo(_0x28cd66,_0x11ec87){return null;}async function installPythonScanners(){const _0x35ed57=a0_0x5f4bb3;console[_0x35ed57(0x21e)]('🐍\x20Checking\x20Python\x20scanners...');let _0x520a80=null;try{await execAsync('python3\x20--version',{'timeout':0x1388}),_0x520a80='python3';}catch(_0x56ea35){try{await execAsync(_0x35ed57(0x219),{'timeout':0x1388}),_0x520a80='python';}catch(_0x4acdde){console[_0x35ed57(0x21e)](_0x35ed57(0x21a)),console['log'](_0x35ed57(0x1e0)),console[_0x35ed57(0x21e)]('\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a');return;}}console[_0x35ed57(0x21e)]('\x20\x20\x20✅\x20Python\x20found:\x20'+_0x520a80),await installViaPip(_0x35ed57(0x222),_0x520a80),await installViaPip(_0x35ed57(0x1dd),_0x520a80),await installViaPip(_0x35ed57(0x20f),_0x520a80),await installViaPip(_0x35ed57(0x1f6),_0x520a80),await installViaPip(_0x35ed57(0x1db),_0x520a80),console[_0x35ed57(0x21e)]('');}async function isHomebrewPython(_0x4e54bf){const _0x125948=a0_0x5f4bb3;try{const {stdout:_0x292116}=await execAsync(_0x4e54bf+_0x125948(0x1ff),{'timeout':0x1388});return _0x292116[_0x125948(0x1e2)](_0x125948(0x1f2))||_0x292116[_0x125948(0x1e2)](_0x125948(0x21d));}catch{return![];}}async function installViaPip(_0x3828f8,_0x11c075){const _0x17209e=a0_0x5f4bb3;try{const _0x5929aa=await execAsync(_0x11c075+_0x17209e(0x1f5)+_0x3828f8,{'timeout':0x1388});return console['log'](_0x17209e(0x1e6)+_0x3828f8+_0x17209e(0x1dc)),!![];}catch(_0x545401){console[_0x17209e(0x21e)](_0x17209e(0x20d)+_0x3828f8+'...');try{const _0x3ea24b=await isHomebrewPython(_0x11c075),_0x36f261=_0x3ea24b?'':'--user',_0x1eecc4=(_0x11c075+_0x17209e(0x1de)+_0x36f261+'\x20'+_0x3828f8)['replace'](/\s+/g,'\x20')[_0x17209e(0x1da)]();return await execAsync(_0x1eecc4,{'timeout':0xea60}),console[_0x17209e(0x21e)](_0x17209e(0x1e6)+_0x3828f8+_0x17209e(0x1f1)),!![];}catch(_0x20925e){return console['log'](_0x17209e(0x21c)+_0x3828f8+':\x20'+_0x20925e['message']),console[_0x17209e(0x21e)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20'+_0x3828f8),![];}}}async function downloadFile(_0x3daf7a,_0x450963){return new Promise((_0x44e563,_0x24384f)=>{const _0x1d253d=a0_0x4cdb,_0x314466=_0x3daf7a[_0x1d253d(0x1e3)](_0x1d253d(0x1ed))?a0_0x354adb:a0_0x493d69;_0x314466['get'](_0x3daf7a,_0x28e8e8=>{const _0x3bda34=_0x1d253d;if(_0x28e8e8['statusCode']===0x12e||_0x28e8e8[_0x3bda34(0x1d6)]===0x12d){downloadFile(_0x28e8e8[_0x3bda34(0x214)]['location'],_0x450963)[_0x3bda34(0x1f9)](_0x44e563)['catch'](_0x24384f);return;}if(_0x28e8e8[_0x3bda34(0x1d6)]!==0xc8){_0x24384f(new Error(_0x3bda34(0x220)+_0x28e8e8[_0x3bda34(0x1d6)]));return;}const _0x2fa48b=createWriteStream(_0x450963);_0x28e8e8[_0x3bda34(0x20a)](_0x2fa48b),_0x2fa48b['on']('finish',()=>{const _0x331279=_0x3bda34;_0x2fa48b[_0x331279(0x1e8)](),_0x44e563();}),_0x2fa48b['on'](_0x3bda34(0x1ec),_0x426a2d=>{a0_0x2f2283['unlink'](_0x450963,()=>{}),_0x24384f(_0x426a2d);});})['on'](_0x1d253d(0x1ec),_0x24384f);});}function a0_0xc362(){const _0x4935f0=['join','error','https','1759269bsNCDX','dirname','483kHPxsy','\x20installed\x20successfully','/opt/homebrew','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','catch','\x20-m\x20pip\x20show\x20','checkov','═══════════════════════════════════════════════════════════','v1.55.0','then','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x0aYou\x20can\x20manually\x20install\x20scanners:','189464qYfKsD','\x0a═══════════════════════════════════════════════════════════','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20Downloading\x20from\x20','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','arch','3944bYPPiq','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','mkdir','158536eMBMNV','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','chmod','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','pipe','platform','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','\x20\x20\x20Installing\x20','\x20\x20Installing\x20Security\x20Scanners','pip-audit','\x20\x20Platform:\x20','906oWXshV','4195TSDtMi','\x20\x20Installation\x20Complete','headers','\x20\x20\x20Location:\x20','exit','semgrep\x20--version','8803935YbVXKn','python\x20--version','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','/usr/local/Cellar','log','node_modules','Failed\x20to\x20download:\x20HTTP\x20','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','semgrep','statusCode','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','🔍\x20Installing\x20Semgrep...','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','trim','yamllint','\x20already\x20installed','bandit','\x20-m\x20pip\x20install\x20','promises','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','includes','startsWith','eslint-plugin-security','url','\x20\x20\x20✅\x20','message','close','1661208veWCoi','stdout'];a0_0xc362=function(){return _0x4935f0;};return a0_0xc362();}installScanners()[a0_0x5f4bb3(0x1f4)](_0x2617a=>{const _0x148b2c=a0_0x5f4bb3;console[_0x148b2c(0x1ec)]('❌\x20Installation\x20failed:',_0x2617a[_0x148b2c(0x1e7)]),console[_0x148b2c(0x1ec)](_0x148b2c(0x1fc)),console[_0x148b2c(0x1ec)](_0x148b2c(0x20c)),console['error'](_0x148b2c(0x1d7)),process[_0x148b2c(0x216)](0x0);});
2
+ const a0_0xe1d980=a0_0xdba0;(function(_0x1776c8,_0x505671){const _0x54df35=a0_0xdba0,_0x4e1f0e=_0x1776c8();while(!![]){try{const _0x553b11=-parseInt(_0x54df35(0x1f9))/0x1+-parseInt(_0x54df35(0x216))/0x2+-parseInt(_0x54df35(0x215))/0x3+parseInt(_0x54df35(0x22a))/0x4+parseInt(_0x54df35(0x1f1))/0x5+-parseInt(_0x54df35(0x220))/0x6*(-parseInt(_0x54df35(0x219))/0x7)+parseInt(_0x54df35(0x1fa))/0x8*(parseInt(_0x54df35(0x229))/0x9);if(_0x553b11===_0x505671)break;else _0x4e1f0e['push'](_0x4e1f0e['shift']());}catch(_0x4227c2){_0x4e1f0e['push'](_0x4e1f0e['shift']());}}}(a0_0x18e4,0x35ad2));import{exec}from'child_process';function a0_0x18e4(){const _0x9c1b7a=['═══════════════════════════════════════════════════════════','includes','--user','platform','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','headers','\x0a═══════════════════════════════════════════════════════════','44073IwDdyL','265248gJiBoc','pipe','dirname','\x0aYou\x20can\x20manually\x20install\x20scanners:','message','url','═══════════════════════════════════════════════════════════\x0a','semgrep\x20--version','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','/opt/homebrew','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','log','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','statusCode','\x20\x20Platform:\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','pip-audit','yamllint','\x20already\x20installed','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','72275mQwLhP','stdout','join','checkov','trim','python3\x20--version','promises','location','197634ufHSjj','968aBCGWJ','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','https','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','semgrep','python3','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','❌\x20Installation\x20failed:','startsWith','\x20\x20\x20Downloading\x20from\x20','🐍\x20Checking\x20Python\x20scanners...','bandit','error','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20pip\x20install\x20semgrep\x0a','exit','get','\x20\x20Installation\x20Complete','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','Failed\x20to\x20download:\x20HTTP\x20','node_modules','arch','eslint-plugin-security','967302dpogzK','231964PZKLZO','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20\x20\x20✅\x20Python\x20found:\x20','319557fRHCDy','chmod','\x20installed\x20successfully','then','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x20\x20Installing\x20Security\x20Scanners','/usr/local/Cellar','24hSkzQl'];a0_0x18e4=function(){return _0x9c1b7a;};return a0_0x18e4();}import{promisify}from'util';function a0_0xdba0(_0x1c19d9,_0x549514){_0x1c19d9=_0x1c19d9-0x1ec;const _0x18e432=a0_0x18e4();let _0xdba04d=_0x18e432[_0x1c19d9];return _0xdba04d;}import a0_0x560669 from'https';import a0_0x54ea6f from'http';import a0_0x66471f from'fs';import a0_0x4cc32a from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x4cc32a[a0_0xe1d980(0x22c)](__filename),SCANNER_DIR=a0_0x4cc32a[a0_0xe1d980(0x1f3)](__dirname,'..',a0_0xe1d980(0x212),'.scanners'),SEMGREP_VERSION=a0_0xe1d980(0x236);console['log'](a0_0xe1d980(0x221)),console[a0_0xe1d980(0x235)](a0_0xe1d980(0x21e)),console['log'](a0_0xe1d980(0x239)+process[a0_0xe1d980(0x224)]+'\x20('+process['arch']+')'),console['log'](a0_0xe1d980(0x230));async function installScanners(){const _0x265b08=a0_0xe1d980;await a0_0x66471f[_0x265b08(0x1f7)]['mkdir'](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x265b08(0x228)),console[_0x265b08(0x235)](_0x265b08(0x20e)),console[_0x265b08(0x235)](_0x265b08(0x230));}async function checkESLintSecurity(){const _0x2dc05d=a0_0xe1d980;console[_0x2dc05d(0x235)](_0x2dc05d(0x20f));try{await import(_0x2dc05d(0x214)),console[_0x2dc05d(0x235)](_0x2dc05d(0x202));}catch(_0x3bdbeb){console[_0x2dc05d(0x235)]('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x2dc05d(0x235)](_0x2dc05d(0x234));}}async function installSemgrep(){const _0x32e63d=a0_0xe1d980;console['log']('🔍\x20Installing\x20Semgrep...');const _0x1ec99a=process['platform'],_0x29a018=process[_0x32e63d(0x213)];try{const _0x28b576=await execAsync(_0x32e63d(0x231),{'timeout':0x1388});console[_0x32e63d(0x235)](_0x32e63d(0x217)+_0x28b576[_0x32e63d(0x1f2)][_0x32e63d(0x1f5)]()),console[_0x32e63d(0x235)](_0x32e63d(0x1ec));return;}catch(_0x3ba3fd){console[_0x32e63d(0x235)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x1dea9f=getSemgrepBinaryInfo(_0x1ec99a,_0x29a018);if(!_0x1dea9f){console[_0x32e63d(0x235)](_0x32e63d(0x1ff)+_0x1ec99a+'-'+_0x29a018),console[_0x32e63d(0x235)](_0x32e63d(0x21d));return;}try{const _0x543e7c=a0_0x4cc32a['join'](SCANNER_DIR,'semgrep');console[_0x32e63d(0x235)](_0x32e63d(0x205)+_0x1dea9f[_0x32e63d(0x22f)]+'...'),await downloadFile(_0x1dea9f[_0x32e63d(0x22f)],_0x543e7c),await a0_0x66471f[_0x32e63d(0x1f7)][_0x32e63d(0x21a)](_0x543e7c,0x1ed),console[_0x32e63d(0x235)](_0x32e63d(0x209)),console['log']('\x20\x20\x20Location:\x20'+_0x543e7c+'\x0a'),console['log'](_0x32e63d(0x1fd)),console[_0x32e63d(0x235)](_0x32e63d(0x20b));}catch(_0x406ecb){console[_0x32e63d(0x235)](_0x32e63d(0x237)+_0x406ecb[_0x32e63d(0x22e)]),console[_0x32e63d(0x235)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0x274213,_0x38aacc){return null;}async function installPythonScanners(){const _0x1cec4a=a0_0xe1d980;console[_0x1cec4a(0x235)](_0x1cec4a(0x206));let _0x28941c=null;try{await execAsync(_0x1cec4a(0x1f6),{'timeout':0x1388}),_0x28941c=_0x1cec4a(0x201);}catch(_0x391a45){try{await execAsync('python\x20--version',{'timeout':0x1388}),_0x28941c='python';}catch(_0x3b5452){console[_0x1cec4a(0x235)](_0x1cec4a(0x232)),console[_0x1cec4a(0x235)](_0x1cec4a(0x1fe)),console['log'](_0x1cec4a(0x226));return;}}console[_0x1cec4a(0x235)](_0x1cec4a(0x218)+_0x28941c),await installViaPip(_0x1cec4a(0x200),_0x28941c),await installViaPip(_0x1cec4a(0x207),_0x28941c),await installViaPip(_0x1cec4a(0x1ed),_0x28941c),await installViaPip(_0x1cec4a(0x1f4),_0x28941c),await installViaPip(_0x1cec4a(0x1ee),_0x28941c),console[_0x1cec4a(0x235)]('');}async function isHomebrewPython(_0x213cda){const _0x2495f3=a0_0xe1d980;try{const {stdout:_0x28e832}=await execAsync(_0x213cda+_0x2495f3(0x225),{'timeout':0x1388});return _0x28e832[_0x2495f3(0x222)](_0x2495f3(0x233))||_0x28e832[_0x2495f3(0x222)](_0x2495f3(0x21f));}catch{return![];}}async function installViaPip(_0x47bd87,_0x5214ce){const _0x85f596=a0_0xe1d980;try{const _0x2eb2cb=await execAsync(_0x5214ce+'\x20-m\x20pip\x20show\x20'+_0x47bd87,{'timeout':0x1388});return console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x1ef)),!![];}catch(_0x543ed3){console['log']('\x20\x20\x20Installing\x20'+_0x47bd87+'...');try{const _0x58b653=await isHomebrewPython(_0x5214ce),_0x23ec66=_0x58b653?'':_0x85f596(0x223),_0x2af1b9=(_0x5214ce+'\x20-m\x20pip\x20install\x20'+_0x23ec66+'\x20'+_0x47bd87)['replace'](/\s+/g,'\x20')[_0x85f596(0x1f5)]();return await execAsync(_0x2af1b9,{'timeout':0xea60}),console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x21b)),!![];}catch(_0x2ea39f){return console[_0x85f596(0x235)](_0x85f596(0x1fb)+_0x47bd87+':\x20'+_0x2ea39f[_0x85f596(0x22e)]),console[_0x85f596(0x235)](_0x85f596(0x1f0)+_0x47bd87),![];}}}async function downloadFile(_0x5effd4,_0x4d3db8){return new Promise((_0xe061c4,_0x7120a2)=>{const _0x1bee71=a0_0xdba0,_0x316da5=_0x5effd4[_0x1bee71(0x204)](_0x1bee71(0x1fc))?a0_0x560669:a0_0x54ea6f;_0x316da5[_0x1bee71(0x20d)](_0x5effd4,_0x4b4c2c=>{const _0x3d509b=_0x1bee71;if(_0x4b4c2c[_0x3d509b(0x238)]===0x12e||_0x4b4c2c['statusCode']===0x12d){downloadFile(_0x4b4c2c[_0x3d509b(0x227)][_0x3d509b(0x1f8)],_0x4d3db8)[_0x3d509b(0x21c)](_0xe061c4)['catch'](_0x7120a2);return;}if(_0x4b4c2c[_0x3d509b(0x238)]!==0xc8){_0x7120a2(new Error(_0x3d509b(0x211)+_0x4b4c2c[_0x3d509b(0x238)]));return;}const _0x52e180=createWriteStream(_0x4d3db8);_0x4b4c2c[_0x3d509b(0x22b)](_0x52e180),_0x52e180['on']('finish',()=>{_0x52e180['close'](),_0xe061c4();}),_0x52e180['on'](_0x3d509b(0x208),_0x5bd715=>{a0_0x66471f['unlink'](_0x4d3db8,()=>{}),_0x7120a2(_0x5bd715);});})['on'](_0x1bee71(0x208),_0x7120a2);});}installScanners()['catch'](_0x1ad224=>{const _0x3074c5=a0_0xe1d980;console[_0x3074c5(0x208)](_0x3074c5(0x203),_0x1ad224[_0x3074c5(0x22e)]),console[_0x3074c5(0x208)](_0x3074c5(0x22d)),console[_0x3074c5(0x208)](_0x3074c5(0x210)),console[_0x3074c5(0x208)](_0x3074c5(0x20a)),process[_0x3074c5(0x20c)](0x0);});
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x5257f1=a0_0x5970;(function(_0x47d9a1,_0x183b75){const _0x1bedd9=a0_0x5970,_0x43a117=_0x47d9a1();while(!![]){try{const _0x3fd728=-parseInt(_0x1bedd9(0x110))/0x1+parseInt(_0x1bedd9(0x113))/0x2*(-parseInt(_0x1bedd9(0x114))/0x3)+parseInt(_0x1bedd9(0x112))/0x4+-parseInt(_0x1bedd9(0x10d))/0x5*(-parseInt(_0x1bedd9(0x11d))/0x6)+parseInt(_0x1bedd9(0xfe))/0x7*(parseInt(_0x1bedd9(0x105))/0x8)+-parseInt(_0x1bedd9(0x117))/0x9*(-parseInt(_0x1bedd9(0x109))/0xa)+-parseInt(_0x1bedd9(0xfd))/0xb;if(_0x3fd728===_0x183b75)break;else _0x43a117['push'](_0x43a117['shift']());}catch(_0x114c80){_0x43a117['push'](_0x43a117['shift']());}}}(a0_0x5563,0x65f46));const {spawn,execSync}=require('child_process'),path=require(a0_0x5257f1(0x11a)),fs=require('fs'),logFile=path[a0_0x5257f1(0x10f)](__dirname,'watchdog.log');function log(_0x9397c0){const _0xef59a=a0_0x5257f1,_0x30b435=new Date()[_0xef59a(0x111)](),_0x22e6ea='['+_0x30b435+']\x20'+_0x9397c0+'\x0a';console[_0xef59a(0x11b)](_0x9397c0);try{fs[_0xef59a(0x10b)](logFile,_0x22e6ea);}catch(_0x8996ac){}}log(a0_0x5257f1(0x10e));function parseArgs(){const _0x334839=a0_0x5257f1,_0x88cd90=process[_0x334839(0x103)][_0x334839(0x106)](0x2),_0x54f70a={'delay':0x1388,'command':_0x334839(0x122),'pid':null};for(let _0x23e29d=0x0;_0x23e29d<_0x88cd90[_0x334839(0x116)];_0x23e29d++){switch(_0x88cd90[_0x23e29d]){case'--delay':_0x54f70a[_0x334839(0x120)]=parseInt(_0x88cd90[++_0x23e29d],0xa)||0x1388;break;case'--command':_0x54f70a[_0x334839(0x115)]=_0x88cd90[++_0x23e29d]||_0x334839(0x122);break;case _0x334839(0x10c):_0x54f70a[_0x334839(0x104)]=parseInt(_0x88cd90[++_0x23e29d],0xa)||null;break;}}return _0x54f70a;}function isProcessRunning(_0x3369a2){const _0x30d7c0=a0_0x5257f1;try{return process[_0x30d7c0(0x123)](_0x3369a2,0x0),!![];}catch(_0x7fbe92){return![];}}function a0_0x5970(_0xbded27,_0xf067b5){_0xbded27=_0xbded27-0xfa;const _0x556301=a0_0x5563();let _0x59700f=_0x556301[_0xbded27];return _0x59700f;}async function waitForParentExit(_0xbf7d01,_0xa4e83f=0x7530){const _0x427f2c=a0_0x5257f1;if(!_0xbf7d01)return;const _0x13d813=Date[_0x427f2c(0x100)]();while(isProcessRunning(_0xbf7d01)){if(Date['now']()-_0x13d813>_0xa4e83f){log('[Watchdog]\x20Parent\x20process\x20'+_0xbf7d01+_0x427f2c(0x118)+_0xa4e83f+_0x427f2c(0x107));return;}await new Promise(_0x790c2d=>setTimeout(_0x790c2d,0x1f4));}log(_0x427f2c(0x11f)+_0xbf7d01+_0x427f2c(0x10a));}function a0_0x5563(){const _0x567fc2=['[Watchdog]\x20Executing:\x20','658700qsLsUO','\x20has\x20terminated','appendFileSync','--pid','445uSjYwQ','[Watchdog]\x20Script\x20loaded','join','304141AamWGr','toISOString','415976EJePeM','12Ycruwr','29364CgmyOU','command','length','99MBVlAh','\x20still\x20running\x20after\x20','ms\x20before\x20restart...','path','log','unref','37182WCfqaQ','ignore','[Watchdog]\x20Parent\x20process\x20','delay','exit','loxia\x20web','kill','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','[Watchdog]\x20Started\x20with\x20options:','[Watchdog]\x20Error:\x20','12786697igCFNr','217cMlaly','message','now','platform','[Watchdog]\x20Watchdog\x20exiting...','argv','pid','145240NaGhvD','slice','ms,\x20proceeding\x20anyway'];a0_0x5563=function(){return _0x567fc2;};return a0_0x5563();}async function main(){const _0x47af0d=a0_0x5257f1,_0x33d2a1=parseArgs();log(_0x47af0d(0xfb),{'delay':_0x33d2a1[_0x47af0d(0x120)],'command':_0x33d2a1[_0x47af0d(0x115)],'pid':_0x33d2a1['pid']});_0x33d2a1[_0x47af0d(0x104)]&&(log(_0x47af0d(0xfa)+_0x33d2a1[_0x47af0d(0x104)]+'\x20to\x20exit...'),await waitForParentExit(_0x33d2a1[_0x47af0d(0x104)]));log('[Watchdog]\x20Waiting\x20'+_0x33d2a1[_0x47af0d(0x120)]+_0x47af0d(0x119)),await new Promise(_0x5e6628=>setTimeout(_0x5e6628,_0x33d2a1[_0x47af0d(0x120)]));const _0x3557f8=_0x33d2a1[_0x47af0d(0x115)]['split']('\x20'),_0x331bd5=_0x3557f8[0x0],_0x3cf91f=_0x3557f8[_0x47af0d(0x106)](0x1);log(_0x47af0d(0x108)+_0x331bd5+'\x20'+_0x3cf91f[_0x47af0d(0x10f)]('\x20'));const _0x2bee6d=process[_0x47af0d(0x101)]==='win32',_0x1d2140=spawn(_0x331bd5,_0x3cf91f,{'detached':!![],'stdio':_0x47af0d(0x11e),'shell':!![],'windowsHide':![]});_0x1d2140[_0x47af0d(0x11c)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0x1d2140[_0x47af0d(0x104)]),log(_0x47af0d(0x102)),setTimeout(()=>process['exit'](0x0),0x3e8);}main()['catch'](_0x27d1af=>{const _0x1db175=a0_0x5257f1;log(_0x1db175(0xfc)+_0x27d1af[_0x1db175(0xff)]),process[_0x1db175(0x121)](0x1);});
2
+ function a0_0x5e3b(){const _0x428527=['slice','win32','argv','147bYDwij','63SDFpiB','path','unref','toISOString','ms\x20before\x20restart...','message','--pid','\x20still\x20running\x20after\x20','join','ignore','5762580ZdMcLL','[Watchdog]\x20Parent\x20process\x20','command','pid','split','[Watchdog]\x20Error:\x20','963804tGoLCl','ms,\x20proceeding\x20anyway','\x20has\x20terminated','6198GaVMow','delay','334072FmTrLe','exit','948084djVikT','[Watchdog]\x20Executing:\x20','[Watchdog]\x20Started\x20with\x20options:','141293IsbGdZ','[Watchdog]\x20Waiting\x20','appendFileSync','4854510JYLlci','loxia\x20web','log','\x20to\x20exit...','catch','now','10opzgbQ','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','platform','--command'];a0_0x5e3b=function(){return _0x428527;};return a0_0x5e3b();}const a0_0x16a350=a0_0xfbf3;(function(_0x408048,_0x3fe22c){const _0x33746a=a0_0xfbf3,_0x3d6ae6=_0x408048();while(!![]){try{const _0x3839be=parseInt(_0x33746a(0xb8))/0x1+parseInt(_0x33746a(0xb1))/0x2*(parseInt(_0x33746a(0x9d))/0x3)+-parseInt(_0x33746a(0xae))/0x4*(-parseInt(_0x33746a(0xc1))/0x5)+-parseInt(_0x33746a(0xb5))/0x6+parseInt(_0x33746a(0x9e))/0x7*(-parseInt(_0x33746a(0xb3))/0x8)+-parseInt(_0x33746a(0xbb))/0x9+parseInt(_0x33746a(0xa8))/0xa;if(_0x3839be===_0x3fe22c)break;else _0x3d6ae6['push'](_0x3d6ae6['shift']());}catch(_0x4e55b4){_0x3d6ae6['push'](_0x3d6ae6['shift']());}}}(a0_0x5e3b,0x43e35));const {spawn,execSync}=require('child_process'),path=require(a0_0x16a350(0x9f)),fs=require('fs'),logFile=path[a0_0x16a350(0xa6)](__dirname,'watchdog.log');function log(_0x3b48e1){const _0x3163a6=a0_0x16a350,_0x247819=new Date()[_0x3163a6(0xa1)](),_0x24681f='['+_0x247819+']\x20'+_0x3b48e1+'\x0a';console[_0x3163a6(0xbd)](_0x3b48e1);try{fs[_0x3163a6(0xba)](logFile,_0x24681f);}catch(_0x1936f6){}}log('[Watchdog]\x20Script\x20loaded');function parseArgs(){const _0x1a2a83=a0_0x16a350,_0x29f297=process[_0x1a2a83(0x9c)][_0x1a2a83(0xc5)](0x2),_0x126ffe={'delay':0x1388,'command':_0x1a2a83(0xbc),'pid':null};for(let _0x56ae80=0x0;_0x56ae80<_0x29f297['length'];_0x56ae80++){switch(_0x29f297[_0x56ae80]){case'--delay':_0x126ffe[_0x1a2a83(0xb2)]=parseInt(_0x29f297[++_0x56ae80],0xa)||0x1388;break;case _0x1a2a83(0xc4):_0x126ffe[_0x1a2a83(0xaa)]=_0x29f297[++_0x56ae80]||_0x1a2a83(0xbc);break;case _0x1a2a83(0xa4):_0x126ffe[_0x1a2a83(0xab)]=parseInt(_0x29f297[++_0x56ae80],0xa)||null;break;}}return _0x126ffe;}function a0_0xfbf3(_0x6f8dd6,_0x2aa5c6){_0x6f8dd6=_0x6f8dd6-0x9c;const _0x5e3b14=a0_0x5e3b();let _0xfbf38d=_0x5e3b14[_0x6f8dd6];return _0xfbf38d;}function isProcessRunning(_0x4412e6){try{return process['kill'](_0x4412e6,0x0),!![];}catch(_0x5bd975){return![];}}async function waitForParentExit(_0x214a39,_0x57667d=0x7530){const _0x47a97d=a0_0x16a350;if(!_0x214a39)return;const _0x378218=Date[_0x47a97d(0xc0)]();while(isProcessRunning(_0x214a39)){if(Date['now']()-_0x378218>_0x57667d){log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xa5)+_0x57667d+_0x47a97d(0xaf));return;}await new Promise(_0x41273e=>setTimeout(_0x41273e,0x1f4));}log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xb0));}async function main(){const _0x327db8=a0_0x16a350,_0x1504a5=parseArgs();log(_0x327db8(0xb7),{'delay':_0x1504a5[_0x327db8(0xb2)],'command':_0x1504a5[_0x327db8(0xaa)],'pid':_0x1504a5[_0x327db8(0xab)]});_0x1504a5[_0x327db8(0xab)]&&(log(_0x327db8(0xc2)+_0x1504a5[_0x327db8(0xab)]+_0x327db8(0xbe)),await waitForParentExit(_0x1504a5[_0x327db8(0xab)]));log(_0x327db8(0xb9)+_0x1504a5[_0x327db8(0xb2)]+_0x327db8(0xa2)),await new Promise(_0x2caa62=>setTimeout(_0x2caa62,_0x1504a5[_0x327db8(0xb2)]));const _0x5b4d96=_0x1504a5[_0x327db8(0xaa)][_0x327db8(0xac)]('\x20'),_0x4326a8=_0x5b4d96[0x0],_0x24c8df=_0x5b4d96['slice'](0x1);log(_0x327db8(0xb6)+_0x4326a8+'\x20'+_0x24c8df[_0x327db8(0xa6)]('\x20'));const _0x336a4f=process[_0x327db8(0xc3)]===_0x327db8(0xc6),_0xe45af7=spawn(_0x4326a8,_0x24c8df,{'detached':!![],'stdio':_0x327db8(0xa7),'shell':!![],'windowsHide':![]});_0xe45af7[_0x327db8(0xa0)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0xe45af7[_0x327db8(0xab)]),log('[Watchdog]\x20Watchdog\x20exiting...'),setTimeout(()=>process['exit'](0x0),0x3e8);}main()[a0_0x16a350(0xbf)](_0x2a796a=>{const _0x30efe6=a0_0x16a350;log(_0x30efe6(0xad)+_0x2a796a[_0x30efe6(0xa3)]),process[_0x30efe6(0xb4)](0x1);});
@@ -1 +1 @@
1
- const a0_0x339d38=a0_0x45df;(function(_0x137315,_0x5b7c41){const _0x18456d=a0_0x45df,_0x2b9a07=_0x137315();while(!![]){try{const _0x192a37=-parseInt(_0x18456d(0xdb))/0x1*(parseInt(_0x18456d(0xe2))/0x2)+parseInt(_0x18456d(0xfd))/0x3+-parseInt(_0x18456d(0xc6))/0x4*(parseInt(_0x18456d(0xcf))/0x5)+-parseInt(_0x18456d(0xf6))/0x6+parseInt(_0x18456d(0x102))/0x7*(-parseInt(_0x18456d(0xc7))/0x8)+-parseInt(_0x18456d(0xe8))/0x9*(parseInt(_0x18456d(0x105))/0xa)+parseInt(_0x18456d(0xea))/0xb;if(_0x192a37===_0x5b7c41)break;else _0x2b9a07['push'](_0x2b9a07['shift']());}catch(_0x5a17c2){_0x2b9a07['push'](_0x2b9a07['shift']());}}}(a0_0x149b,0x54182));import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x45df(_0x3c0d12,_0x425949){_0x3c0d12=_0x3c0d12-0xc6;const _0x149bd6=a0_0x149b();let _0x45dfca=_0x149bd6[_0x3c0d12];if(a0_0x45df['fWcGIT']===undefined){var _0x4e0b1d=function(_0x64c30d){const _0x1967c5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x21848c='',_0xf38e10='';for(let _0x448cce=0x0,_0x486d12,_0x1aed99,_0x32faf8=0x0;_0x1aed99=_0x64c30d['charAt'](_0x32faf8++);~_0x1aed99&&(_0x486d12=_0x448cce%0x4?_0x486d12*0x40+_0x1aed99:_0x1aed99,_0x448cce++%0x4)?_0x21848c+=String['fromCharCode'](0xff&_0x486d12>>(-0x2*_0x448cce&0x6)):0x0){_0x1aed99=_0x1967c5['indexOf'](_0x1aed99);}for(let _0x4dc7c2=0x0,_0x5c5d18=_0x21848c['length'];_0x4dc7c2<_0x5c5d18;_0x4dc7c2++){_0xf38e10+='%'+('00'+_0x21848c['charCodeAt'](_0x4dc7c2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf38e10);};a0_0x45df['KzHzSO']=_0x4e0b1d,a0_0x45df['MhLCWA']={},a0_0x45df['fWcGIT']=!![];}const _0x42b84c=_0x149bd6[0x0],_0x361fa7=_0x3c0d12+_0x42b84c,_0x5277f0=a0_0x45df['MhLCWA'][_0x361fa7];return!_0x5277f0?(_0x45dfca=a0_0x45df['KzHzSO'](_0x45dfca),a0_0x45df['MhLCWA'][_0x361fa7]=_0x45dfca):_0x45dfca=_0x5277f0,_0x45dfca;}class CSSAnalyzer{constructor(_0x21848c=null){const _0x3e3d7d=a0_0x45df;this[_0x3e3d7d(0xd4)]=_0x21848c,this['stylelint']=null,this[_0x3e3d7d(0x10b)]=null,this[_0x3e3d7d(0xff)]=null,this['postcssLess']=null;}async[a0_0x339d38(0x109)](_0xf38e10,_0x448cce,_0x486d12={}){const _0x1e6e79=a0_0x339d38;try{const _0x1aed99=[],_0x32faf8=this[_0x1e6e79(0x10a)](_0xf38e10),_0x4dc7c2=await this['checkSyntax'](_0xf38e10,_0x448cce,_0x32faf8);_0x1aed99[_0x1e6e79(0xe4)](..._0x4dc7c2);if(_0x4dc7c2[_0x1e6e79(0xd7)]===0x0){const _0x5c5d18=await this[_0x1e6e79(0xf3)](_0xf38e10,_0x448cce,_0x32faf8);_0x1aed99[_0x1e6e79(0xe4)](..._0x5c5d18);}return this['logger']?.['debug'](_0x1e6e79(0xec),{'file':_0xf38e10,'language':_0x32faf8,'totalDiagnostics':_0x1aed99['length'],'errors':_0x1aed99[_0x1e6e79(0xd1)](_0x2986a9=>_0x2986a9['severity']===STATIC_ANALYSIS[_0x1e6e79(0xcd)][_0x1e6e79(0xd6)])['length'],'warnings':_0x1aed99['filter'](_0x28f147=>_0x28f147['severity']===STATIC_ANALYSIS[_0x1e6e79(0xcd)]['WARNING'])['length']}),_0x1aed99;}catch(_0x4326a2){return this['logger']?.['error']('CSS\x20analysis\x20failed',{'file':_0xf38e10,'error':_0x4326a2['message']}),[];}}async['checkSyntax'](_0x192ea6,_0x326096,_0x5cf053){const _0xd7d619=a0_0x339d38,_0x45066a=[];try{if(!this[_0xd7d619(0x10b)]){const _0x2186bf=await import('postcss');this[_0xd7d619(0x10b)]=_0x2186bf[_0xd7d619(0xda)];}let _0x3bbd2f=null;if(_0x5cf053===_0xd7d619(0xcb)){if(!this['postcssScss']){const _0xe56d36=await import(_0xd7d619(0x100));this['postcssScss']=_0xe56d36[_0xd7d619(0xda)];}_0x3bbd2f=this[_0xd7d619(0xff)];}else{if(_0x5cf053==='less'){if(!this['postcssLess']){const _0x5c13bf=await import('postcss-less');this['postcssLess']=_0x5c13bf['default'];}_0x3bbd2f=this[_0xd7d619(0xfe)];}}const _0x2cc401=this['postcss']()['process'](_0x326096,{'from':_0x192ea6,'syntax':_0x3bbd2f}),_0x36b852=_0x2cc401[_0xd7d619(0xed)];this[_0xd7d619(0xd4)]?.[_0xd7d619(0xf1)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x192ea6});}catch(_0xf03b0f){const _0x5a3d6a=this[_0xd7d619(0xd8)](_0xf03b0f,_0x192ea6);_0x5a3d6a&&_0x45066a['push'](_0x5a3d6a);}return _0x45066a;}async['lintStyles'](_0x578b7b,_0x189b37,_0x1e5282){const _0xf42870=a0_0x339d38,_0x561d49=[];try{if(!this['stylelint']){const _0x571aed=await import('stylelint');this['stylelint']=_0x571aed['default'];}const _0x340085={'extends':[_0xf42870(0xdc)],'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-/',_0xf42870(0xf7)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x1e5282==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0xf42870(0xe3),'if',_0xf42870(0xee),'for','each','while','function','return',_0xf42870(0x101),_0xf42870(0x107),_0xf42870(0x103)]}]:_0x1e5282===_0xf42870(0xd0)?[!![],{'ignoreAtRules':[_0xf42870(0xf0)]}]:!![],'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':_0xf42870(0xc8),'selector-type-case':_0xf42870(0xd9)},'customSyntax':_0x1e5282==='scss'?_0xf42870(0x100):_0x1e5282==='less'?_0xf42870(0xef):undefined},_0x2841dc=await this['stylelint'][_0xf42870(0x104)]({'code':_0x189b37,'codeFilename':_0x578b7b,'config':_0x340085});if(_0x2841dc['results']&&_0x2841dc['results'][_0xf42870(0xd7)]>0x0){const _0x3df17e=_0x2841dc[_0xf42870(0x108)][0x0];if(_0x3df17e[_0xf42870(0xe5)])for(const _0xbfaba9 of _0x3df17e[_0xf42870(0xe5)]){_0x561d49['push']({'file':_0x578b7b,'line':_0xbfaba9['line']||0x1,'column':_0xbfaba9[_0xf42870(0xd3)]||0x1,'severity':_0xbfaba9['severity']==='error'?STATIC_ANALYSIS[_0xf42870(0xcd)]['ERROR']:STATIC_ANALYSIS[_0xf42870(0xcd)][_0xf42870(0xcc)],'rule':_0xbfaba9['rule']||_0xf42870(0xce),'message':_0xbfaba9['text'],'category':this['categorizeStylelintRule'](_0xbfaba9[_0xf42870(0xf2)]),'fixable':![],'source':_0xf42870(0xd2)});}}}catch(_0x464165){this['logger']?.[_0xf42870(0xc9)]('Stylelint\x20analysis\x20failed',{'file':_0x578b7b,'error':_0x464165[_0xf42870(0x10c)]});}return _0x561d49;}[a0_0x339d38(0xd8)](_0x1451be,_0x5d57c3){const _0x4f9714=a0_0x339d38;return{'file':_0x5d57c3,'line':_0x1451be[_0x4f9714(0xca)]||0x1,'column':_0x1451be['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x1451be[_0x4f9714(0x106)]||'CssSyntaxError','message':_0x1451be['reason']||_0x1451be['message'],'category':STATIC_ANALYSIS[_0x4f9714(0xd5)][_0x4f9714(0xe1)],'fixable':![],'source':'postcss','code':_0x1451be['source']||undefined};}[a0_0x339d38(0xde)](_0x37b505){const _0xf426c9=a0_0x339d38;if(!_0x37b505)return STATIC_ANALYSIS[_0xf426c9(0xd5)][_0xf426c9(0xf5)];const _0x132583=_0x37b505['toLowerCase']();if(_0x132583[_0xf426c9(0xdd)]('no-invalid')||_0x132583[_0xf426c9(0xdd)](_0xf426c9(0xf4))||_0x132583[_0xf426c9(0xdd)](_0xf426c9(0xe0))||_0x132583['includes'](_0xf426c9(0xfc)))return STATIC_ANALYSIS['CATEGORY'][_0xf426c9(0xe1)];if(_0x132583[_0xf426c9(0xdd)]('performance')||_0x132583['includes'](_0xf426c9(0xfa)))return STATIC_ANALYSIS[_0xf426c9(0xd5)]['PERFORMANCE'];if(_0x132583[_0xf426c9(0xdd)](_0xf426c9(0xdf))||_0x132583['includes'](_0xf426c9(0xf8)))return STATIC_ANALYSIS[_0xf426c9(0xd5)][_0xf426c9(0xeb)];return STATIC_ANALYSIS['CATEGORY'][_0xf426c9(0xf5)];}['detectLanguage'](_0x9f0593){const _0x55a2d2=a0_0x339d38,_0x134edf=_0x9f0593[_0x55a2d2(0xe9)]();if(_0x134edf[_0x55a2d2(0xf9)]('.scss')||_0x134edf['endsWith']('.sass'))return'scss';if(_0x134edf[_0x55a2d2(0xf9)]('.less'))return'less';return _0x55a2d2(0xe6);}[a0_0x339d38(0xe7)](){const _0xcc9b67=a0_0x339d38;return[_0xcc9b67(0xfb),'.scss','.sass','.less'];}['supportsAutoFix'](){return![];}}export default CSSAnalyzer;function a0_0x149b(){const _0x385c2d=['BgvZCW','zMLSDgvY','C3r5BgvSAw50','y29SDw1U','Bg9Nz2vY','q0furuDpuLK','rvjst1i','BgvUz3rO','zM9YBwf0ug9ZDentu0vYCM9Y','Bg93zxi','zgvMyxvSDa','mxPbENbXtW','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','Aw5JBhvKzxm','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','yMvZDc1WCMfJDgLJzq','BM8Tzw1WDhK','u1Lovefy','mZCXmdu0z2DsrwnR','zxH0zw5K','ChvZAa','D2fYBMLUz3m','y3nZ','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','mtH6Chb1qMe','Dg9mB3DLCKnHC2u','mJeYmtyYotr0weHoCfa','qKvtvf9quKfdveLdrq','q1ntigfUywX5C2LZignVBxbSzxrLza','CM9VDa','zwXZzq','Cg9ZDgnZCY1SzxnZ','CgX1z2LU','zgvIDwC','CNvSzq','BgLUDfn0EwXLCW','BM8TDw5RBM93BG','u1rzteu','ndeZmduWmLfRDM9pBG','BMCTzgvLCa','CMvJB21Tzw5Kzwq','zw5KC1DPDgG','B3b0Aw1PEMu','lMnZCW','C3LUDgf4','mteWnta5ogzxrwzqyW','Cg9ZDgnZC0XLC3m','Cg9ZDgnZC1nJC3m','Cg9ZDgnZCY1Zy3nZ','y29UDgvUDa','mZaZnZKZn3fvtfzZEG','zM9YD2fYza','BgLUDa','ntaZnZbNtMXuBKO','BMfTzq','DxnL','CMvZDwX0CW','yw5HBhL6zq','zgv0zwn0tgfUz3vHz2u','Cg9ZDgnZCW','BwvZC2fNzq','mtq5mZmYB0rzt1ne','oej3tgjQra','zg91yMXL','D2fYBG','BgLUzq','C2nZCW','v0fstKLorW','u0vwrvjjvfK','Dw5RBM93BG','odvhCuPhDxO'];a0_0x149b=function(){return _0x385c2d;};return a0_0x149b();}
1
+ function a0_0x490b(_0x143adb,_0x195bd3){_0x143adb=_0x143adb-0x122;const _0x4e7a2c=a0_0x4e7a();let _0x490b74=_0x4e7a2c[_0x143adb];if(a0_0x490b['iTWiqF']===undefined){var _0x488037=function(_0x43e621){const _0x5cddbb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x391660='',_0x6dab52='';for(let _0x4f3faa=0x0,_0x49f72b,_0x4c7bb8,_0x8b9e45=0x0;_0x4c7bb8=_0x43e621['charAt'](_0x8b9e45++);~_0x4c7bb8&&(_0x49f72b=_0x4f3faa%0x4?_0x49f72b*0x40+_0x4c7bb8:_0x4c7bb8,_0x4f3faa++%0x4)?_0x391660+=String['fromCharCode'](0xff&_0x49f72b>>(-0x2*_0x4f3faa&0x6)):0x0){_0x4c7bb8=_0x5cddbb['indexOf'](_0x4c7bb8);}for(let _0x206fac=0x0,_0x55c3b3=_0x391660['length'];_0x206fac<_0x55c3b3;_0x206fac++){_0x6dab52+='%'+('00'+_0x391660['charCodeAt'](_0x206fac)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x6dab52);};a0_0x490b['LKgKXM']=_0x488037,a0_0x490b['fdjfPb']={},a0_0x490b['iTWiqF']=!![];}const _0x103c46=_0x4e7a2c[0x0],_0x7b4e63=_0x143adb+_0x103c46,_0x143a5a=a0_0x490b['fdjfPb'][_0x7b4e63];return!_0x143a5a?(_0x490b74=a0_0x490b['LKgKXM'](_0x490b74),a0_0x490b['fdjfPb'][_0x7b4e63]=_0x490b74):_0x490b74=_0x143a5a,_0x490b74;}const a0_0x2d3683=a0_0x490b;function a0_0x4e7a(){const _0x3a29f2=['zM9Y','zgv0zwn0tgfUz3vHz2u','q0furuDpuLK','C2v2zxjPDhK','l15JDxn0B20TlW','zxjYB3i','zg91yMXL','BM8TAw52ywXPza','BgvUz3rO','Aw5JBhvKzxm','mty3m1zczvnRzq','Cg9ZDgnZCY1SzxnZ','q1ntigfUywX5C2LZigzHAwXLza','BgvZCW','mZyYnde3nfLoyLnuEG','yw5HBhL6zq','zM9YBwf0ug9ZDentu0vYCM9Y','u0vwrvjjvfK','Cg9ZDgnZCY1Zy3nZ','Dw5RBM93BG','BgLUzq','ntiYnJrQyKfsDuG','v0fstKLorW','rvjst1i','mZiZmZeZmvnsBfvzrW','zxH0zw5K','y29UDgvUDa','C3vWCg9YDhnbDxrVrML4','D2fYBMLUz3m','Cg9ZDgnZCW','Dgv4Da','C3r5BgvSAw50','ChvZAa','zMLSDgvY','zgvMyxvSDa','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','Cg9ZDgnZC0XLC3m','C2nZCW','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CMvZDwX0CW','ChjVy2vZCW','Bg9Nz2vY','mteYmZu2nKXewfrYqq','Cg9ZDgnZC1nJC3m','ndbMuMTAtMu','ntqXnZG1tLvkuhHX','nJq4ogzkCMrYta','Dg9mB3DLCKnHC2u','zM9YD2fYza','q3nZu3LUDgf4rxjYB3i','nda5nwreCfHTsa','zgvIDwC','lMnZCW','y2HLy2TtEw50yxG','u1Lovefy','zwfJAa','zw5KC1DPDgG','CgX1z2LU','mZy5mdaWow50wuTpra','BgLUDfn0EwXLCW','BM8Tzw1WDhK','CNvSzq','BwvZC2fNzq','nMjRBNDwsG'];a0_0x4e7a=function(){return _0x3a29f2;};return a0_0x4e7a();}(function(_0xc0e69a,_0x2c1586){const _0x5f63eb=a0_0x490b,_0x3b9063=_0xc0e69a();while(!![]){try{const _0x576077=parseInt(_0x5f63eb(0x135))/0x1*(parseInt(_0x5f63eb(0x147))/0x2)+parseInt(_0x5f63eb(0x132))/0x3+parseInt(_0x5f63eb(0x136))/0x4*(-parseInt(_0x5f63eb(0x13a))/0x5)+-parseInt(_0x5f63eb(0x156))/0x6+parseInt(_0x5f63eb(0x152))/0x7*(parseInt(_0x5f63eb(0x15d))/0x8)+parseInt(_0x5f63eb(0x142))/0x9+-parseInt(_0x5f63eb(0x134))/0xa*(parseInt(_0x5f63eb(0x160))/0xb);if(_0x576077===_0x2c1586)break;else _0x3b9063['push'](_0x3b9063['shift']());}catch(_0x41fde1){_0x3b9063['push'](_0x3b9063['shift']());}}}(a0_0x4e7a,0xd2b9e));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x391660=null){const _0x532fcd=a0_0x490b;this[_0x532fcd(0x131)]=_0x391660,this['stylelint']=null,this[_0x532fcd(0x125)]=null,this[_0x532fcd(0x133)]=null,this['postcssLess']=null;}async[a0_0x2d3683(0x157)](_0x6dab52,_0x4f3faa,_0x49f72b={}){const _0x557067=a0_0x2d3683;try{const _0x4c7bb8=[],_0x8b9e45=this['detectLanguage'](_0x6dab52),_0x206fac=await this[_0x557067(0x13d)](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8['push'](..._0x206fac);if(_0x206fac[_0x557067(0x150)]===0x0){const _0x55c3b3=await this['lintStyles'](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8[_0x557067(0x128)](..._0x55c3b3);}return this[_0x557067(0x131)]?.[_0x557067(0x13b)]('CSS\x20analysis\x20completed',{'file':_0x6dab52,'language':_0x8b9e45,'totalDiagnostics':_0x4c7bb8[_0x557067(0x150)],'errors':_0x4c7bb8[_0x557067(0x129)](_0x1c8209=>_0x1c8209[_0x557067(0x14b)]===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x4c7bb8[_0x557067(0x129)](_0x4408b7=>_0x4408b7['severity']===STATIC_ANALYSIS['SEVERITY'][_0x557067(0x15e)])[_0x557067(0x150)]}),_0x4c7bb8;}catch(_0x5954c1){return this[_0x557067(0x131)]?.['error'](_0x557067(0x154),{'file':_0x6dab52,'error':_0x5954c1[_0x557067(0x146)]}),[];}}async[a0_0x2d3683(0x13d)](_0x4dca6b,_0x10b524,_0x14e7ae){const _0x10942b=a0_0x2d3683,_0x585616=[];try{if(!this[_0x10942b(0x125)]){const _0x24a452=await import(_0x10942b(0x125));this['postcss']=_0x24a452[_0x10942b(0x12a)];}let _0x182bf8=null;if(_0x14e7ae==='scss'){if(!this['postcssScss']){const _0x2b3a76=await import('postcss-scss');this['postcssScss']=_0x2b3a76['default'];}_0x182bf8=this[_0x10942b(0x133)];}else{if(_0x14e7ae==='less'){if(!this['postcssLess']){const _0x2add54=await import(_0x10942b(0x153));this[_0x10942b(0x12c)]=_0x2add54[_0x10942b(0x12a)];}_0x182bf8=this[_0x10942b(0x12c)];}}const _0x2ec3b8=this[_0x10942b(0x125)]()[_0x10942b(0x130)](_0x10b524,{'from':_0x4dca6b,'syntax':_0x182bf8}),_0x5d3885=_0x2ec3b8['root'];this['logger']?.[_0x10942b(0x13b)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x4dca6b});}catch(_0x1666f8){const _0x2c4a29=this['formatPostCSSError'](_0x1666f8,_0x4dca6b);_0x2c4a29&&_0x585616['push'](_0x2c4a29);}return _0x585616;}async[a0_0x2d3683(0x143)](_0x10e53e,_0x4a1fff,_0x10a1d1){const _0x42705a=a0_0x2d3683,_0x2ddf41=[];try{if(!this[_0x42705a(0x127)]){const _0x3b99a1=await import('stylelint');this['stylelint']=_0x3b99a1['default'];}const _0x4c16a5={'extends':[_0x42705a(0x12e)],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x42705a(0x14c),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x10a1d1==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0x42705a(0x161),'if','else',_0x42705a(0x148),_0x42705a(0x13f),'while','function','return',_0x42705a(0x122),'use',_0x42705a(0x138)]}]:_0x10a1d1===_0x42705a(0x155)?[!![],{'ignoreAtRules':[_0x42705a(0x141)]}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x42705a(0x14e),'selector-type-case':'lower'},'customSyntax':_0x10a1d1==='scss'?_0x42705a(0x15a):_0x10a1d1==='less'?_0x42705a(0x153):undefined},_0x225e0e=await this['stylelint']['lint']({'code':_0x4a1fff,'codeFilename':_0x10e53e,'config':_0x4c16a5});if(_0x225e0e[_0x42705a(0x12f)]&&_0x225e0e['results'][_0x42705a(0x150)]>0x0){const _0x53a4dc=_0x225e0e['results'][0x0];if(_0x53a4dc[_0x42705a(0x124)])for(const _0x4d7b6d of _0x53a4dc['warnings']){_0x2ddf41[_0x42705a(0x128)]({'file':_0x10e53e,'line':_0x4d7b6d[_0x42705a(0x15c)]||0x1,'column':_0x4d7b6d['column']||0x1,'severity':_0x4d7b6d[_0x42705a(0x14b)]===_0x42705a(0x14d)?STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15f)]:STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15e)],'rule':_0x4d7b6d['rule']||_0x42705a(0x15b),'message':_0x4d7b6d[_0x42705a(0x126)],'category':this[_0x42705a(0x12b)](_0x4d7b6d[_0x42705a(0x145)]),'fixable':![],'source':'stylelint'});}}}catch(_0x3ca870){this['logger']?.['warn']('Stylelint\x20analysis\x20failed',{'file':_0x10e53e,'error':_0x3ca870['message']});}return _0x2ddf41;}[a0_0x2d3683(0x158)](_0x3b46eb,_0xc46b84){const _0x1f03d5=a0_0x2d3683;return{'file':_0xc46b84,'line':_0x3b46eb['line']||0x1,'column':_0x3b46eb['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x3b46eb['name']||_0x1f03d5(0x139),'message':_0x3b46eb['reason']||_0x3b46eb['message'],'category':STATIC_ANALYSIS[_0x1f03d5(0x14a)]['SYNTAX'],'fixable':![],'source':_0x1f03d5(0x125),'code':_0x3b46eb['source']||undefined};}[a0_0x2d3683(0x12b)](_0x27dd9b){const _0x2789a2=a0_0x2d3683;if(!_0x27dd9b)return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];const _0x4fa650=_0x27dd9b[_0x2789a2(0x137)]();if(_0x4fa650['includes'](_0x2789a2(0x14f))||_0x4fa650['includes']('no-unknown')||_0x4fa650[_0x2789a2(0x151)](_0x2789a2(0x144))||_0x4fa650['includes']('syntax'))return STATIC_ANALYSIS[_0x2789a2(0x14a)][_0x2789a2(0x13e)];if(_0x4fa650[_0x2789a2(0x151)]('performance')||_0x4fa650['includes']('optimize'))return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x4fa650['includes']('best-practice')||_0x4fa650[_0x2789a2(0x151)]('recommended'))return STATIC_ANALYSIS[_0x2789a2(0x14a)]['BEST_PRACTICE'];return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];}[a0_0x2d3683(0x149)](_0x2c676e){const _0x14d1ac=a0_0x2d3683,_0xf563c1=_0x2c676e['toLowerCase']();if(_0xf563c1['endsWith']('.scss')||_0xf563c1[_0x14d1ac(0x140)]('.sass'))return _0x14d1ac(0x12d);if(_0xf563c1[_0x14d1ac(0x140)]('.less'))return'less';return'css';}['getSupportedExtensions'](){const _0x48c4ae=a0_0x2d3683;return[_0x48c4ae(0x13c),'.scss','.sass','.less'];}[a0_0x2d3683(0x123)](){return![];}}export default CSSAnalyzer;
@@ -1 +1 @@
1
- const a0_0x139e9d=a0_0x4baa;(function(_0x305a13,_0x8c57e3){const _0x268503=a0_0x4baa,_0x14956d=_0x305a13();while(!![]){try{const _0x46ce2b=parseInt(_0x268503(0x1fb))/0x1*(parseInt(_0x268503(0x1e2))/0x2)+-parseInt(_0x268503(0x227))/0x3*(-parseInt(_0x268503(0x204))/0x4)+parseInt(_0x268503(0x1ea))/0x5*(-parseInt(_0x268503(0x21a))/0x6)+-parseInt(_0x268503(0x205))/0x7*(-parseInt(_0x268503(0x1eb))/0x8)+-parseInt(_0x268503(0x1df))/0x9+-parseInt(_0x268503(0x21c))/0xa+-parseInt(_0x268503(0x1ec))/0xb*(-parseInt(_0x268503(0x1db))/0xc);if(_0x46ce2b===_0x8c57e3)break;else _0x14956d['push'](_0x14956d['shift']());}catch(_0x50295e){_0x14956d['push'](_0x14956d['shift']());}}}(a0_0x2dc2,0x5e94b));import{exec}from'child_process';import{promisify}from'util';import a0_0xae44fc from'path';function a0_0x2dc2(){const _0x1cfe04=['CgfYyw1Z','CgfJA2fNzs5QC29U','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','DMfSAwrHDgvzqu1m','A3vIzxjUzxrLCW','zg9JA2vYlwnVBxbVC2uUEwfTBa','Aw5JBhvKzxm','CMvTzwrPyxrPB24','C2vJCMv0','DMfSAwrHDgvqywnRywDLsNnVBG','C3rKB3v0','C3LUDgf4','BM9YBwfSAxPLuMvZDwX0CW','BwLZC2LUz1bYB3bLCNr5','mZG2mdm1zfriA0fq','ChjPDMf0zsbRzxK','Bwf0y2G','DMfSAwrHDgLVBG','DhnJB25MAwCTDMfSAwrHDg9Y','rvjst1i','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','sw52ywXPzcbku09ooIa','DMvYC2LVBG','mtaZntzIvgryAMe','mtC1mJGWDuTbuuTL','z2L0AhvIlwfJDgLVBNm','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','BwfWwwfTBgXPBNrtzxzLCML0Eq','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','DMfSAwrHDgvfBNzgAwXL','zw52lxzHBgLKyxrVCG','qvbjigTLEq','y2HLy2TFAwq','Bg9Nz2vY','B2jQzwn0','y2HLy2TVDG','CgfYC2viywrVBgLUDfjLC3vSDhm','DgvYCMfMB3jT','y29TCgLSzxjpChrPB25Z','zgv0zwn0rMLSzvr5Cgu','AxnbCNjHEq','Dg9mB3DLCKnHC2u','z3vPzgvSAw5L','y29TCgLSzq','ANnVBI1Zy2HLBwe','mJeXotmZmMnMAvjerG','Dw5RBM93BG','ndCYota2mhDvqLLSCq','zgvIDwC','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','lMvUDG','CgfYC2vdAgvJA292uMvZDwX0CW','yxzHAwXHyMXLu2nHBM5LCNm','yMvZDc1WCMfJDgLJzq','C3rYAwn0lw1Vzgu','y2HLy2TVDIbKzxrLy3rLza','zw52','DMfSAwrHDgveB2nRzxjMAwXL','mteXDhrACgnK','Bgv2zwW','lNLHBwW','wufntcbMAwXLihzHBgLKyxrPB24','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','q1jjveLdquW','Dg9Rzw4','BwvZC2fNzq','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','zg9JA2vYzMLSzq','EwfTBgXPBNqGzgv0zwn0zwq','CMvZDwX0CW','v0fstKLorW','C3bSAxq','Aw5ZDgfUy2vqyxrO','yMfZzw5HBwu','ANnVBI1WyxjZzq','zMLSDgvY','CgfYC2vzyw1SBgLUDfjLC3vSDhm','BwfW','BgvUz3rO','BgLUzq','EwfTBgXPBNq','ywP2ig5VDcbHDMfPBgfIBgu','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','DMfSAwrHDgvuC0nVBMzPzW','DhnJB25MAwCUANnVBG','zxjYB3i','CgfYC2u','AgfKB2XPBNq','CMvHzezPBgu','CgfZC3DVCMq','ChvZAa','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','zg9JA2vYlwnVBxbVC2u','y2HHBMDLBwu','lNrM','C3rYAw5N','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','AgfYzgnVzgvKlxnLy3jLDa','EwfTBgXPBNqGls12zxjZAw9U','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','ANnVBLnJAgvTyq','Ew91CI1RzxKTAgvYzq','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','mta3mtzJuLv2y0O','CMvMzxjLBMnLCW','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','CgLWigLUC3rHBgWGy2HLy2TVDG','mZa5ota4n29rrefNAG','EwfTBa','zMLSzv9SAw5Lx3jHBMDL','mM5TqKLcsG','y2HLy2TFBMfTzq','C3rHCNrZv2L0Aa','u0vwrvjjvfK','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','lMPZB24','AgLNAa','DMfSAwrHDgvxAxrOq2HLy2TVDG','mtbuChn3EKy','mta0Eff0Dw13','mtm1otzVwgX4zNu'];a0_0x2dc2=function(){return _0x1cfe04;};return a0_0x2dc2();}import a0_0x1d2b10 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x18c9f7=null){const _0x5aff01=a0_0x4baa;this[_0x5aff01(0x20e)]=_0x18c9f7,this[_0x5aff01(0x221)]=null,this['scannerCache']=new Map();}async[a0_0x139e9d(0x1dd)](){const _0xf085ca=a0_0x139e9d;if(this['availableScanners']!==null)return this['availableScanners'];const _0x1e9ce2={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x1e9ce2['checkov']=!![],this['logger']?.[_0xf085ca(0x21d)](_0xf085ca(0x224));}catch(_0x15586c){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x15586c[_0xf085ca(0x1b5)]});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x1e9ce2['hadolint']=!![],this['logger']?.[_0xf085ca(0x21d)]('hadolint\x20detected');}catch(_0x55a341){this[_0xf085ca(0x20e)]?.['debug']('hadolint\x20not\x20available',{'error':_0x55a341[_0xf085ca(0x1b5)]});}try{await execAsync(_0xf085ca(0x1d6),{'timeout':0x1388}),_0x1e9ce2[_0xf085ca(0x1c4)]=!![],this[_0xf085ca(0x20e)]?.[_0xf085ca(0x21d)](_0xf085ca(0x1b8));}catch(_0x1fdf0b){this['logger']?.[_0xf085ca(0x21d)]('yamllint\x20not\x20available',{'error':_0x1fdf0b[_0xf085ca(0x1b5)]});}try{await import('ajv'),_0x1e9ce2[_0xf085ca(0x1d8)]=!![],this['logger']?.['debug'](_0xf085ca(0x1ef));}catch(_0x559fdc){this[_0xf085ca(0x20e)]?.['debug'](_0xf085ca(0x1c5),{'error':_0x559fdc['message']});}return this[_0xf085ca(0x221)]=_0x1e9ce2,_0x1e9ce2;}async['validate'](_0x454b2e,_0xfac408={}){const _0x2b2bbb=a0_0x139e9d,_0x1041b2=[],_0x5c491c=await this[_0x2b2bbb(0x1dd)](),_0x3da523=this['detectFileType'](_0x454b2e);this['logger']?.['debug'](_0x2b2bbb(0x22b),{'filePath':_0x454b2e,'fileType':_0x3da523});switch(_0x3da523){case'dockerfile':if(_0x5c491c[_0x2b2bbb(0x1cb)]){const _0x3e25b9=await this['validateDockerfile'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x3e25b9);}if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x326d9b=await this[_0x2b2bbb(0x1e9)](_0x454b2e,_0x2b2bbb(0x1b7),_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x326d9b);}break;case'docker-compose':if(_0x5c491c['yamllint']){const _0x36e185=await this[_0x2b2bbb(0x1f0)](_0x454b2e,_0xfac408);_0x1041b2['push'](..._0x36e185);}if(_0x5c491c['checkov']){const _0x34331c=await this['validateWithCheckov'](_0x454b2e,'docker_compose',_0xfac408);_0x1041b2['push'](..._0x34331c);}break;case _0x2b2bbb(0x1f1):if(_0x5c491c['yamllint']){const _0x158a3a=await this['validateYAML'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x158a3a);}if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x582204=await this['validateWithCheckov'](_0x454b2e,'kubernetes',_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x582204);}break;case'terraform':if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x299925=await this[_0x2b2bbb(0x1e9)](_0x454b2e,_0x2b2bbb(0x212),_0xfac408);_0x1041b2['push'](..._0x299925);}break;case _0x2b2bbb(0x1ee):if(_0x5c491c['jsonSchema']){const _0x393332=await this[_0x2b2bbb(0x1f6)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x393332);}break;case _0x2b2bbb(0x1c8):if(_0x5c491c[_0x2b2bbb(0x1d8)]){const _0x38360c=await this[_0x2b2bbb(0x1c7)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x38360c);}break;case _0x2b2bbb(0x206):if(_0x5c491c[_0x2b2bbb(0x1c4)]){const _0x2c724d=await this['validateYAML'](_0x454b2e,_0xfac408);_0x1041b2['push'](..._0x2c724d);}break;case _0x2b2bbb(0x225):const _0x21fdbd=await this['validateEnvFile'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x21fdbd);break;case _0x2b2bbb(0x1e0):if(_0x5c491c[_0x2b2bbb(0x1c4)]){const _0x80ed67=await this[_0x2b2bbb(0x1f0)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x80ed67);}break;default:this[_0x2b2bbb(0x20e)]?.['warn'](_0x2b2bbb(0x1d4),{'filePath':_0x454b2e,'fileType':_0x3da523});return[];}return this[_0x2b2bbb(0x1f9)](_0x1041b2);}async[a0_0x139e9d(0x226)](_0x30ce50,_0x2814f2={}){const _0x3b2973=a0_0x139e9d;try{const _0x363268=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x30ce50+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x20da63=JSON['parse'](_0x363268[_0x3b2973(0x1f7)]);return this['parseHadolintResults'](_0x20da63,_0x30ce50);}catch(_0x6cbf37){if(_0x6cbf37[_0x3b2973(0x1f7)])try{const _0x234f8c=JSON[_0x3b2973(0x1ca)](_0x6cbf37['stdout']);return this[_0x3b2973(0x211)](_0x234f8c,_0x30ce50);}catch(_0xab3344){this[_0x3b2973(0x20e)]?.[_0x3b2973(0x1c9)]('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0xab3344[_0x3b2973(0x1b5)]});}return this['logger']?.[_0x3b2973(0x1c9)]('hadolint\x20validation\x20failed',{'error':_0x6cbf37[_0x3b2973(0x1b5)]}),[];}}[a0_0x139e9d(0x211)](_0x4b52d8,_0xdab310){const _0x401044=a0_0x139e9d,_0x266b37=[];if(Array[_0x401044(0x215)](_0x4b52d8))for(const _0x288a84 of _0x4b52d8){_0x266b37['push']({'file':_0xdab310,'line':_0x288a84[_0x401044(0x1c3)]||0x1,'column':_0x288a84['column']||0x1,'severity':this['mapHadolintSeverity'](_0x288a84[_0x401044(0x228)]),'rule':_0x288a84['code'],'message':_0x288a84['message'],'category':_0x401044(0x1b7),'validator':_0x401044(0x1cb)});}return _0x266b37;}async[a0_0x139e9d(0x1f0)](_0x48e913,_0x3a2c31={}){const _0x47861f=a0_0x139e9d;try{const _0xb0ad23=await execAsync(_0x47861f(0x1c6)+_0x48e913+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x47861f(0x1c0)](_0xb0ad23[_0x47861f(0x1f7)],_0x48e913);}catch(_0x4a458b){if(_0x4a458b[_0x47861f(0x1f7)])return this['parseYamllintResults'](_0x4a458b[_0x47861f(0x1f7)],_0x48e913);return this['logger']?.['error']('yamllint\x20validation\x20failed',{'error':_0x4a458b['message']}),[];}}[a0_0x139e9d(0x1c0)](_0xfae5d5,_0x519ff9){const _0x5d8212=a0_0x139e9d,_0x3cbb2c=[],_0x3bd788=_0xfae5d5[_0x5d8212(0x1bb)]('\x0a')[_0x5d8212(0x1bf)](_0x18039f=>_0x18039f['trim']());for(const _0x340fe5 of _0x3bd788){const _0x2cac3e=_0x340fe5[_0x5d8212(0x1fd)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x2cac3e){const [,_0x40d599,_0x1bc823,_0xfc9899,_0x54bb07,_0x2a0e80,_0x476dc0]=_0x2cac3e;_0x3cbb2c['push']({'file':_0x519ff9,'line':parseInt(_0x1bc823,0xa),'column':parseInt(_0xfc9899,0xa),'severity':this[_0x5d8212(0x208)](_0x54bb07),'rule':_0x476dc0,'message':_0x2a0e80,'category':_0x5d8212(0x1e0),'validator':'yamllint'});}}return _0x3cbb2c;}async['validateWithCheckov'](_0x16711f,_0x50e42b,_0x44fefc={}){const _0x37c126=a0_0x139e9d;try{const _0x23f9ef=await execAsync('checkov\x20-f\x20\x22'+_0x16711f+'\x22\x20--framework\x20'+_0x50e42b+_0x37c126(0x209),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x477efb=JSON[_0x37c126(0x1ca)](_0x23f9ef[_0x37c126(0x1f7)]);return this['parseCheckovResults'](_0x477efb,_0x16711f);}catch(_0x29927b){if(_0x29927b[_0x37c126(0x1f7)])try{const _0x47baa5=JSON['parse'](_0x29927b['stdout']);return this['parseCheckovResults'](_0x47baa5,_0x16711f);}catch(_0x3db50e){this['logger']?.[_0x37c126(0x1c9)](_0x37c126(0x21e),{'error':_0x3db50e['message']});}return this[_0x37c126(0x20e)]?.[_0x37c126(0x1c9)](_0x37c126(0x207),{'error':_0x29927b['message']}),[];}}[a0_0x139e9d(0x220)](_0x53e81f,_0x9de270){const _0x5406eb=a0_0x139e9d,_0x43779=[];if(_0x53e81f[_0x5406eb(0x1b9)]&&_0x53e81f[_0x5406eb(0x1b9)]['failed_checks'])for(const _0x1dd2fb of _0x53e81f['results']['failed_checks']){_0x43779['push']({'file':_0x9de270,'line':_0x1dd2fb[_0x5406eb(0x1e1)]?_0x1dd2fb[_0x5406eb(0x1e1)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x1dd2fb['check_class']),'rule':_0x1dd2fb[_0x5406eb(0x20d)],'message':_0x1dd2fb[_0x5406eb(0x1e3)]||_0x1dd2fb[_0x5406eb(0x20d)],'category':'security','validator':_0x5406eb(0x210),'remediation':_0x1dd2fb[_0x5406eb(0x217)],'cwe':_0x1dd2fb['cwe'],'references':_0x1dd2fb[_0x5406eb(0x217)]?[_0x1dd2fb['guideline']]:[]});}return _0x43779;}async[a0_0x139e9d(0x1f6)](_0x420f45,_0x490aa7={}){const _0x5af4b7=a0_0x139e9d;try{const _0x272e84=(await import('ajv'))['default'],_0x553cdb=(await import('ajv-formats'))['default'],_0x8802c6=await a0_0x1d2b10['readFile'](_0x420f45,'utf-8'),_0x26d410=JSON['parse'](_0x8802c6),_0x24707=new _0x272e84({'allErrors':!![],'strict':![]});_0x553cdb(_0x24707);const _0x1daad4={'type':'object','required':['name',_0x5af4b7(0x203)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x5af4b7(0x1d3)},'description':{'type':_0x5af4b7(0x1d3)},'main':{'type':'string'},'type':{'type':_0x5af4b7(0x1d3),'enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x5af4b7(0x20f)},'devDependencies':{'type':_0x5af4b7(0x20f)}},'additionalProperties':!![]},_0x1acf6f=_0x24707[_0x5af4b7(0x218)](_0x1daad4),_0x52892f=_0x1acf6f(_0x26d410);if(!_0x52892f&&_0x1acf6f['errors'])return _0x1acf6f['errors'][_0x5af4b7(0x1c1)](_0x3d88be=>({'file':_0x420f45,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x5af4b7(0x200)],'rule':_0x5af4b7(0x219),'message':_0x3d88be[_0x5af4b7(0x1bc)]?_0x3d88be[_0x5af4b7(0x1bc)]+'\x20'+_0x3d88be[_0x5af4b7(0x1b5)]:_0x5af4b7(0x1cf)+_0x3d88be[_0x5af4b7(0x1ed)][_0x5af4b7(0x1fa)]+'\x27','category':_0x5af4b7(0x1fe),'validator':_0x5af4b7(0x219)}));return[];}catch(_0x50c482){return this['logger']?.['error']('package.json\x20validation\x20failed',{'error':_0x50c482[_0x5af4b7(0x1b5)]}),[{'file':_0x420f45,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x5af4b7(0x1be),'message':_0x5af4b7(0x202)+_0x50c482['message'],'category':_0x5af4b7(0x1f8),'validator':_0x5af4b7(0x1be)}];}}async['validateTsConfig'](_0x38fa11,_0x4fb938={}){const _0x17970f=a0_0x139e9d;try{const _0x571232=await a0_0x1d2b10[_0x17970f(0x1cc)](_0x38fa11,'utf-8'),_0x1a26be=JSON['parse'](_0x571232),_0x7bb284=[];if(_0x1a26be[_0x17970f(0x213)]){const _0x19173f=_0x1a26be['compilerOptions'];!_0x19173f['strict']&&_0x7bb284['push']({'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x1ba)],'rule':_0x17970f(0x223),'message':_0x17970f(0x1da),'category':'best-practice','validator':_0x17970f(0x1ff)}),_0x19173f['noImplicitAny']===![]&&_0x7bb284[_0x17970f(0x1ce)]({'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x1ba)],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x17970f(0x222),'validator':_0x17970f(0x1ff)});}return _0x7bb284;}catch(_0x5cd53b){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x5cd53b[_0x17970f(0x1b5)]}),[{'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x200)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x5cd53b[_0x17970f(0x1b5)],'category':_0x17970f(0x1f8),'validator':_0x17970f(0x1be)}];}}async[a0_0x139e9d(0x20a)](_0x5c4926,_0x54506a={}){const _0x60e026=a0_0x139e9d;try{const _0x537dc5=await a0_0x1d2b10[_0x60e026(0x1cc)](_0x5c4926,'utf-8'),_0x4f2434=[],_0x405b95=_0x537dc5[_0x60e026(0x1bb)]('\x0a'),_0x4e283c=[{'pattern':/password|passwd|pwd/i,'name':_0x60e026(0x1cd)},{'pattern':/api[_-]?key/i,'name':_0x60e026(0x20c)},{'pattern':/secret/i,'name':_0x60e026(0x1f5)},{'pattern':/token/i,'name':_0x60e026(0x1b4)},{'pattern':/private[_-]?key/i,'name':_0x60e026(0x1fc)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x405b95['forEach']((_0x2eb21d,_0x470e7a)=>{const _0x2af2e3=_0x60e026,_0x156b4b=_0x2eb21d['trim']();if(!_0x156b4b||_0x156b4b['startsWith']('#'))return;if(_0x156b4b[_0x2af2e3(0x1f3)]('=')){const [_0x587897,_0x1ff446]=_0x156b4b[_0x2af2e3(0x1bb)]('='),_0xfe4490=_0x587897['toLowerCase'](),_0x2eeba5=_0x1ff446?.['trim']()||'',_0x353949=_0x2eeba5&&_0x2eeba5!==''&&!_0x2eeba5[_0x2af2e3(0x1e4)]('$')&&_0x2eeba5!==_0x2af2e3(0x1d9)&&_0x2eeba5!==_0x2af2e3(0x1d1)&&_0x2eeba5[_0x2af2e3(0x1c2)]>0x5;if(_0x353949)for(const {pattern:_0x32a30b,name:_0x1e0d41}of _0x4e283c){if(_0x32a30b['test'](_0xfe4490)){_0x4f2434[_0x2af2e3(0x1ce)]({'file':_0x5c4926,'line':_0x470e7a+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2af2e3(0x1e5)][_0x2af2e3(0x22c)],'rule':_0x2af2e3(0x1d5),'message':'Potential\x20hardcoded\x20'+_0x1e0d41+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0x2af2e3(0x20b),'remediation':_0x2af2e3(0x201)});break;}}}}),_0x4f2434;}catch(_0x3e5cab){return this[_0x60e026(0x20e)]?.[_0x60e026(0x1c9)](_0x60e026(0x1e6),{'error':_0x3e5cab[_0x60e026(0x1b5)]}),[];}}[a0_0x139e9d(0x214)](_0x5211fb){const _0x393e46=a0_0x139e9d,_0x2a4e66=a0_0xae44fc[_0x393e46(0x1bd)](_0x5211fb)['toLowerCase'](),_0x467ee5=a0_0xae44fc['dirname'](_0x5211fb);if(_0x2a4e66==='dockerfile')return _0x393e46(0x1b7);if(_0x2a4e66==='docker-compose.yml'||_0x2a4e66===_0x393e46(0x1f2))return _0x393e46(0x1d0);if(_0x2a4e66===_0x393e46(0x1ee))return _0x393e46(0x1ee);if(_0x2a4e66===_0x393e46(0x1c8))return'tsconfig.json';if(_0x2a4e66===_0x393e46(0x21f)||_0x2a4e66['endsWith']('.env'))return'env';if(_0x467ee5[_0x393e46(0x1f3)]('.github/workflows'))return'github-actions';if(_0x467ee5['includes'](_0x393e46(0x1f1))||_0x467ee5[_0x393e46(0x1f3)]('k8s'))return _0x393e46(0x1f1);const _0x876fa5=a0_0xae44fc['extname'](_0x5211fb)[_0x393e46(0x216)]();if(_0x876fa5===_0x393e46(0x1d2)||_0x876fa5==='.tfvars')return _0x393e46(0x212);if(_0x876fa5==='.yml'||_0x876fa5===_0x393e46(0x229))return'yaml';if(_0x876fa5===_0x393e46(0x1e7))return'json';return _0x393e46(0x21b);}['normalizeResults'](_0x12e684){const _0x1855cb=a0_0x139e9d;return _0x12e684['map'](_0x43b02d=>({'file':_0x43b02d['file'],'line':_0x43b02d['line']||0x1,'column':_0x43b02d['column']||0x1,'severity':_0x43b02d['severity']||STATIC_ANALYSIS[_0x1855cb(0x1e5)]['WARNING'],'rule':_0x43b02d['rule']||'unknown','message':_0x43b02d['message']||'Validation\x20issue\x20detected','category':_0x43b02d['category']||'validation','validator':_0x43b02d['validator'],'cwe':_0x43b02d['cwe']||null,'remediation':_0x43b02d[_0x1855cb(0x1f4)]||null,'references':_0x43b02d[_0x1855cb(0x1dc)]||[]}));}['mapHadolintSeverity'](_0x3025f7){const _0x21eb5b=a0_0x139e9d,_0x5e94fa={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS[_0x21eb5b(0x1e5)]['INFO']};return _0x5e94fa[_0x3025f7?.[_0x21eb5b(0x216)]()]||STATIC_ANALYSIS['SEVERITY'][_0x21eb5b(0x1ba)];}['mapYamllintSeverity'](_0x1cc340){const _0x148f74=a0_0x139e9d,_0x503f3f={'error':STATIC_ANALYSIS[_0x148f74(0x1e5)]['ERROR'],'warning':STATIC_ANALYSIS[_0x148f74(0x1e5)][_0x148f74(0x1ba)]};return _0x503f3f[_0x1cc340?.[_0x148f74(0x216)]()]||STATIC_ANALYSIS[_0x148f74(0x1e5)][_0x148f74(0x1ba)];}['mapCheckovSeverity'](_0x396d4a){const _0x3173d4=a0_0x139e9d;return STATIC_ANALYSIS[_0x3173d4(0x1e5)]['ERROR'];}async['getValidatorStatus'](){const _0x139b71=a0_0x139e9d,_0x3d7a88=await this[_0x139b71(0x1dd)]();return{'validators':_0x3d7a88,'recommendations':this['getInstallRecommendations'](_0x3d7a88)};}['getInstallRecommendations'](_0xdd89b5){const _0x386925=a0_0x139e9d,_0x2e9be1=[];return!_0xdd89b5[_0x386925(0x210)]&&_0x2e9be1[_0x386925(0x1ce)]({'validator':'checkov','reason':_0x386925(0x1b6),'install':_0x386925(0x1de),'priority':_0x386925(0x1e8)}),!_0xdd89b5['hadolint']&&_0x2e9be1['push']({'validator':'hadolint','reason':_0x386925(0x1d7),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0xdd89b5['yamllint']&&_0x2e9be1['push']({'validator':'yamllint','reason':_0x386925(0x22a),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0xdd89b5['jsonSchema']&&_0x2e9be1[_0x386925(0x1ce)]({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x2e9be1;}}function a0_0x4baa(_0x3aede1,_0x3cbae0){_0x3aede1=_0x3aede1-0x1b4;const _0x2dc23d=a0_0x2dc2();let _0x4baa04=_0x2dc23d[_0x3aede1];if(a0_0x4baa['kOxVmS']===undefined){var _0x1b64e6=function(_0x5ad4ab){const _0x354698='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xae44fc='',_0x1d2b10='';for(let _0x18c9f7=0x0,_0x1e9ce2,_0x15586c,_0x55a341=0x0;_0x15586c=_0x5ad4ab['charAt'](_0x55a341++);~_0x15586c&&(_0x1e9ce2=_0x18c9f7%0x4?_0x1e9ce2*0x40+_0x15586c:_0x15586c,_0x18c9f7++%0x4)?_0xae44fc+=String['fromCharCode'](0xff&_0x1e9ce2>>(-0x2*_0x18c9f7&0x6)):0x0){_0x15586c=_0x354698['indexOf'](_0x15586c);}for(let _0x1fdf0b=0x0,_0x559fdc=_0xae44fc['length'];_0x1fdf0b<_0x559fdc;_0x1fdf0b++){_0x1d2b10+='%'+('00'+_0xae44fc['charCodeAt'](_0x1fdf0b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1d2b10);};a0_0x4baa['jblGhZ']=_0x1b64e6,a0_0x4baa['NrOOAh']={},a0_0x4baa['kOxVmS']=!![];}const _0x535637=_0x2dc23d[0x0],_0x47c268=_0x3aede1+_0x535637,_0x4176fc=a0_0x4baa['NrOOAh'][_0x47c268];return!_0x4176fc?(_0x4baa04=a0_0x4baa['jblGhZ'](_0x4baa04),a0_0x4baa['NrOOAh'][_0x47c268]=_0x4baa04):_0x4baa04=_0x4176fc,_0x4baa04;}export default ConfigValidator;
1
+ function a0_0x445f(_0x5e9a15,_0x36e80b){_0x5e9a15=_0x5e9a15-0x1e6;const _0x37cee3=a0_0x37ce();let _0x445f10=_0x37cee3[_0x5e9a15];if(a0_0x445f['rIjIvf']===undefined){var _0x506f18=function(_0x5ef6c1){const _0x1de4d8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cc598='',_0xa8af1f='';for(let _0x2ba567=0x0,_0x44c8ee,_0xc72de4,_0x5b99=0x0;_0xc72de4=_0x5ef6c1['charAt'](_0x5b99++);~_0xc72de4&&(_0x44c8ee=_0x2ba567%0x4?_0x44c8ee*0x40+_0xc72de4:_0xc72de4,_0x2ba567++%0x4)?_0x3cc598+=String['fromCharCode'](0xff&_0x44c8ee>>(-0x2*_0x2ba567&0x6)):0x0){_0xc72de4=_0x1de4d8['indexOf'](_0xc72de4);}for(let _0x19d7f2=0x0,_0x524771=_0x3cc598['length'];_0x19d7f2<_0x524771;_0x19d7f2++){_0xa8af1f+='%'+('00'+_0x3cc598['charCodeAt'](_0x19d7f2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xa8af1f);};a0_0x445f['onrLgK']=_0x506f18,a0_0x445f['hNvXHL']={},a0_0x445f['rIjIvf']=!![];}const _0x5b4e44=_0x37cee3[0x0],_0x46e60a=_0x5e9a15+_0x5b4e44,_0x542858=a0_0x445f['hNvXHL'][_0x46e60a];return!_0x542858?(_0x445f10=a0_0x445f['onrLgK'](_0x445f10),a0_0x445f['hNvXHL'][_0x46e60a]=_0x445f10):_0x445f10=_0x542858,_0x445f10;}const a0_0x357114=a0_0x445f;(function(_0x34ba18,_0x51e985){const _0x51e9cd=a0_0x445f,_0x1fa6ec=_0x34ba18();while(!![]){try{const _0x331058=parseInt(_0x51e9cd(0x202))/0x1*(-parseInt(_0x51e9cd(0x249))/0x2)+-parseInt(_0x51e9cd(0x241))/0x3*(-parseInt(_0x51e9cd(0x1e7))/0x4)+parseInt(_0x51e9cd(0x200))/0x5+parseInt(_0x51e9cd(0x220))/0x6+parseInt(_0x51e9cd(0x203))/0x7*(-parseInt(_0x51e9cd(0x210))/0x8)+-parseInt(_0x51e9cd(0x22c))/0x9*(-parseInt(_0x51e9cd(0x25e))/0xa)+-parseInt(_0x51e9cd(0x1ec))/0xb*(parseInt(_0x51e9cd(0x1ef))/0xc);if(_0x331058===_0x51e985)break;else _0x1fa6ec['push'](_0x1fa6ec['shift']());}catch(_0x2a042b){_0x1fa6ec['push'](_0x1fa6ec['shift']());}}}(a0_0x37ce,0x96116));import{exec}from'child_process';import{promisify}from'util';import a0_0x3cc598 from'path';import a0_0xa8af1f from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x37ce(){const _0x6891d6=['ywP2','zg9JA2vYlwnVBxbVC2uUEwfTBa','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','Dg9mB3DLCKnHC2u','y2HLy2TVDIaTlxzLCNnPB24','CgfYC2vdAgvJA292uMvZDwX0CW','BwvKAxvT','y3DL','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','mtHqthnpt0K','AgfKB2XPBNqGls12zxjZAw9U','zxH0BMfTzq','zw5KC1DPDgG','BwfW','iIaTlwzYyw1LD29YAYa','BwfWq2HLy2TVDLnLDMvYAxr5','C3rKB3v0','DhjPBq','zgvMyxvSDa','BM9YBwfSAxPLuMvZDwX0CW','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','y29Kzq','C3rHCNrZv2L0Aa','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','y29TCgLSzxjpChrPB25Z','z2L0AhvIlwfJDgLVBNm','zg9JA2vYlwnVBxbVC2u','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','DMfSAwrHDgvfBNzgAwXL','otnirvflCuG','EwfTBgXPBNq','y2HLy2TVDG','DhnJB25MAwCTDMfSAwrHDg9Y','CgfYC2u','ywP2icHku09oifnJAgvTysK','y2HLy2TVDIbKzxrLy3rLza','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','nejNzxnAvG','Aw5ZDgfUy2vqyxrO','zg9JA2vYlwnVBxbVC2uUEw1S','wufntcbMAwXLihzHBgLKyxrPB24','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3LUDgf4','DMfSAwrHDgvxAxrOq2HLy2TVDG','Aw5JBhvKzxm','DMfSAwrHDgvqywnRywDLsNnVBG','lNrMDMfYCW','DMfSAwrHDgvuC0nVBMzPzW','BwfWsgfKB2XPBNrtzxzLCML0Eq','C3bSAxq','B2jQzwn0','DMfSAwrHDgu','y2HLy2TVDIaTzIaI','DhnJB25MAwCUANnVBG','C2vJCMv0','Dw5RBM93BG','ANnVBLnJAgvTyq','C3rYAw5N','mteXmJiWy25oCe5o','y2HLy2TFBMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','Bwf0y2G','zxjYB3i','DMfSAwrHDg9Y','ANnVBI1Zy2HLBwe','BwfWwwfTBgXPBNrtzxzLCML0Eq','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','mtaYmti0vMrpuwni','A3vIzxjUzxrLCW','Bg9Nz2vY','C3rYAwn0','CgfYC2viywrVBgLUDfjLC3vSDhm','nZKXmti3n2DOreHSuW','su5gtW','CgLWigLUC3rHBgWGEwfTBgXPBNq','mtjpDNDOtfi','BgvUz3rO','AgfKB2XPBNq','CgfYyw1Z','ug90zw50AwfSigHHCMrJB2rLzca','ywP2lwzVCM1HDhm','zxjYB3jZ','DgvYCMfMB3jT','lNrM','DMvYC2LVBG','ChvZAa','CgfJA2fNzs5QC29U','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','DMfSAwrHDgLVBG','yMvZDc1WCMfJDgLJzq','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','yxzHAwXHyMXLu2nHBM5LCNm','ndi1nJy1mfneB2PrEq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','mZuWmZeXu3jhruLl','n0TpvKfLuq','rvjst1i','CMvTzwrPyxrPB24','CMvHzezPBgu','C2v2zxjPDhK','zMfPBgvKx2nOzwnRCW','zgvIDwC','BM9jBxbSAwnPDefUEq','EwfTBa','v0fstKLorW','zgv0zwn0rMLSzvr5Cgu','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','mZa5ndaWofPgtML3Cq','BwvZC2fNzq','CMvZDwX0CW','zw52lxzHBgLKyxrVCG','zgLYBMfTzq','DMfSAwrHDgvzqu1m','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zw52','u0vwrvjjvfK','zg9JA2vYzMLSzq','z3vPzgvSAw5L','y2HHBMDLBwu','ANnVBI1WyxjZzq','qvDtignYzwrLBNrPywXZ','C2vJDxjPDhK','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','nduZnZmZogrAtLPtuW','yMfZzw5HBwu','DMfSAwrHDgveB2nRzxjMAwXL'];a0_0x37ce=function(){return _0x6891d6;};return a0_0x37ce();}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x2ba567=null){const _0x11c664=a0_0x445f;this[_0x11c664(0x1e9)]=_0x2ba567,this[_0x11c664(0x1ff)]=null,this['scannerCache']=new Map();}async[a0_0x357114(0x24d)](){const _0x4c4fe7=a0_0x357114;if(this['availableScanners']!==null)return this[_0x4c4fe7(0x1ff)];const _0x44c8ee={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x4c4fe7(0x227),{'timeout':0x1388}),_0x44c8ee[_0x4c4fe7(0x243)]=!![],this[_0x4c4fe7(0x1e9)]?.['debug'](_0x4c4fe7(0x247));}catch(_0xc72de4){this['logger']?.[_0x4c4fe7(0x209)](_0x4c4fe7(0x23b),{'error':_0xc72de4[_0x4c4fe7(0x211)]});}try{await execAsync(_0x4c4fe7(0x22d),{'timeout':0x1388}),_0x44c8ee['hadolint']=!![],this['logger']?.[_0x4c4fe7(0x209)]('hadolint\x20detected');}catch(_0x5b99){this[_0x4c4fe7(0x1e9)]?.['debug']('hadolint\x20not\x20available',{'error':_0x5b99[_0x4c4fe7(0x211)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x44c8ee['yamllint']=!![],this['logger']?.['debug']('yamllint\x20detected');}catch(_0x19d7f2){this['logger']?.[_0x4c4fe7(0x209)]('yamllint\x20not\x20available',{'error':_0x19d7f2[_0x4c4fe7(0x211)]});}try{await import(_0x4c4fe7(0x223)),_0x44c8ee[_0x4c4fe7(0x25c)]=!![],this['logger']?.['debug'](_0x4c4fe7(0x238));}catch(_0x524771){this[_0x4c4fe7(0x1e9)]?.[_0x4c4fe7(0x209)]('ajv\x20not\x20available',{'error':_0x524771[_0x4c4fe7(0x211)]});}return this[_0x4c4fe7(0x1ff)]=_0x44c8ee,_0x44c8ee;}async[a0_0x357114(0x257)](_0xc7bdca,_0x2cddf5={}){const _0x322b76=a0_0x357114,_0x151955=[],_0x3fca87=await this['detectAvailableValidators'](),_0x50d62b=this['detectFileType'](_0xc7bdca);this[_0x322b76(0x1e9)]?.[_0x322b76(0x209)]('Validating\x20config\x20file',{'filePath':_0xc7bdca,'fileType':_0x50d62b});switch(_0x50d62b){case _0x322b76(0x219):if(_0x3fca87[_0x322b76(0x1f1)]){const _0x94f5f5=await this[_0x322b76(0x222)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x94f5f5);}if(_0x3fca87[_0x322b76(0x243)]){const _0x5570ee=await this[_0x322b76(0x24f)](_0xc7bdca,'dockerfile',_0x2cddf5);_0x151955['push'](..._0x5570ee);}break;case _0x322b76(0x23e):if(_0x3fca87[_0x322b76(0x242)]){const _0x262fbc=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x262fbc);}if(_0x3fca87[_0x322b76(0x243)]){const _0x4bfe33=await this['validateWithCheckov'](_0xc7bdca,'docker_compose',_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4bfe33);}break;case'kubernetes':if(_0x3fca87[_0x322b76(0x242)]){const _0xd3f0f5=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xd3f0f5);}if(_0x3fca87['checkov']){const _0x39f867=await this['validateWithCheckov'](_0xc7bdca,_0x322b76(0x1e8),_0x2cddf5);_0x151955['push'](..._0x39f867);}break;case _0x322b76(0x1f6):if(_0x3fca87[_0x322b76(0x243)]){const _0x5a59eb=await this['validateWithCheckov'](_0xc7bdca,'terraform',_0x2cddf5);_0x151955['push'](..._0x5a59eb);}break;case _0x322b76(0x1fa):if(_0x3fca87[_0x322b76(0x25c)]){const _0x4fb5a3=await this[_0x322b76(0x251)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x4fb5a3);}break;case'tsconfig.json':if(_0x3fca87['jsonSchema']){const _0xee9b06=await this[_0x322b76(0x253)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xee9b06);}break;case'github-actions':if(_0x3fca87[_0x322b76(0x242)]){const _0xc5ae3f=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xc5ae3f);}break;case'env':const _0x6df047=await this['validateEnvFile'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x6df047);break;case'yaml':if(_0x3fca87['yamllint']){const _0x4304d9=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4304d9);}break;default:this['logger']?.['warn'](_0x322b76(0x23f),{'filePath':_0xc7bdca,'fileType':_0x50d62b});return[];}return this[_0x322b76(0x236)](_0x151955);}async[a0_0x357114(0x222)](_0x299844,_0x7b9b08={}){const _0x14bd93=a0_0x357114;try{const _0x92e72b=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x299844+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x5e5fc0=JSON['parse'](_0x92e72b['stdout']);return this[_0x14bd93(0x1eb)](_0x5e5fc0,_0x299844);}catch(_0x5520cd){if(_0x5520cd[_0x14bd93(0x233)])try{const _0x8b68b2=JSON[_0x14bd93(0x245)](_0x5520cd[_0x14bd93(0x233)]);return this[_0x14bd93(0x1eb)](_0x8b68b2,_0x299844);}catch(_0x47f908){this['logger']?.[_0x14bd93(0x262)]('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x47f908[_0x14bd93(0x211)]});}return this[_0x14bd93(0x1e9)]?.['error'](_0x14bd93(0x1fe),{'error':_0x5520cd[_0x14bd93(0x211)]}),[];}}[a0_0x357114(0x1eb)](_0x44b46c,_0x424791){const _0x4a9ce6=a0_0x357114,_0x1a7c68=[];if(Array['isArray'](_0x44b46c))for(const _0x3a0949 of _0x44b46c){_0x1a7c68['push']({'file':_0x424791,'line':_0x3a0949['line']||0x1,'column':_0x3a0949['column']||0x1,'severity':this['mapHadolintSeverity'](_0x3a0949['level']),'rule':_0x3a0949[_0x4a9ce6(0x239)],'message':_0x3a0949['message'],'category':'dockerfile','validator':_0x4a9ce6(0x1f1)});}return _0x1a7c68;}async[a0_0x357114(0x215)](_0x416508,_0x2a3f1a={}){const _0x4e376b=a0_0x357114;try{const _0xf4a5ae=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x416508+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x4e376b(0x201)](_0xf4a5ae[_0x4e376b(0x233)],_0x416508);}catch(_0x45beed){if(_0x45beed[_0x4e376b(0x233)])return this[_0x4e376b(0x201)](_0x45beed['stdout'],_0x416508);return this[_0x4e376b(0x1e9)]?.[_0x4e376b(0x262)](_0x4e376b(0x1e6),{'error':_0x45beed['message']}),[];}}['parseYamllintResults'](_0x1e29f6,_0x4f47f7){const _0xede58b=a0_0x357114,_0x155b51=[],_0x538b21=_0x1e29f6['split']('\x0a')['filter'](_0xdcbb9a=>_0xdcbb9a[_0xede58b(0x234)]());for(const _0x20ba80 of _0x538b21){const _0x3c2a6b=_0x20ba80[_0xede58b(0x261)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x3c2a6b){const [,_0x5213c1,_0x113c96,_0x4c50dc,_0x93f7dd,_0x2dde65,_0x470103]=_0x3c2a6b;_0x155b51['push']({'file':_0x4f47f7,'line':parseInt(_0x113c96,0xa),'column':parseInt(_0x4c50dc,0xa),'severity':this[_0xede58b(0x265)](_0x93f7dd),'rule':_0x470103,'message':_0x2dde65,'category':'yaml','validator':_0xede58b(0x242)});}}return _0x155b51;}async['validateWithCheckov'](_0x5d1af4,_0xf0cc90,_0x2674a4={}){const _0x29cf0f=a0_0x357114;try{const _0x2dff01=await execAsync(_0x29cf0f(0x258)+_0x5d1af4+_0x29cf0f(0x231)+_0xf0cc90+_0x29cf0f(0x248),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x354848=JSON[_0x29cf0f(0x245)](_0x2dff01['stdout']);return this[_0x29cf0f(0x228)](_0x354848,_0x5d1af4);}catch(_0x78e98e){if(_0x78e98e['stdout'])try{const _0x1b3176=JSON[_0x29cf0f(0x245)](_0x78e98e['stdout']);return this['parseCheckovResults'](_0x1b3176,_0x5d1af4);}catch(_0x5194ab){this['logger']?.['error'](_0x29cf0f(0x22b),{'error':_0x5194ab[_0x29cf0f(0x211)]});}return this['logger']?.[_0x29cf0f(0x262)]('checkov\x20validation\x20failed',{'error':_0x78e98e['message']}),[];}}['parseCheckovResults'](_0xbba814,_0x27d057){const _0x1a70dc=a0_0x357114,_0x4bda0d=[];if(_0xbba814[_0x1a70dc(0x212)]&&_0xbba814['results'][_0x1a70dc(0x208)])for(const _0x23f48a of _0xbba814[_0x1a70dc(0x212)][_0x1a70dc(0x208)]){_0x4bda0d['push']({'file':_0x27d057,'line':_0x23f48a['file_line_range']?_0x23f48a['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x1a70dc(0x232)](_0x23f48a['check_class']),'rule':_0x23f48a['check_id'],'message':_0x23f48a[_0x1a70dc(0x25f)]||_0x23f48a['check_id'],'category':_0x1a70dc(0x21e),'validator':_0x1a70dc(0x243),'remediation':_0x23f48a[_0x1a70dc(0x21a)],'cwe':_0x23f48a['cwe'],'references':_0x23f48a['guideline']?[_0x23f48a['guideline']]:[]});}return _0x4bda0d;}async[a0_0x357114(0x251)](_0x2f4101,_0x494d43={}){const _0x2916f0=a0_0x357114;try{const _0x6555c8=(await import('ajv'))[_0x2916f0(0x235)],_0x5ed3eb=(await import(_0x2916f0(0x1f4)))[_0x2916f0(0x235)],_0x5c2a07=await a0_0xa8af1f['readFile'](_0x2f4101,'utf-8'),_0x3a972a=JSON['parse'](_0x5c2a07),_0x9c4ff9=new _0x6555c8({'allErrors':!![],'strict':![]});_0x5ed3eb(_0x9c4ff9);const _0x16b388={'type':'object','required':['name',_0x2916f0(0x1f8)],'properties':{'name':{'type':_0x2916f0(0x25d),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':'string'},'description':{'type':_0x2916f0(0x25d)},'main':{'type':'string'},'type':{'type':'string','enum':['module','commonjs']},'scripts':{'type':_0x2916f0(0x256)},'dependencies':{'type':'object'},'devDependencies':{'type':_0x2916f0(0x256)}},'additionalProperties':!![]},_0x19493e=_0x9c4ff9['compile'](_0x16b388),_0x505e77=_0x19493e(_0x3a972a);if(!_0x505e77&&_0x19493e['errors'])return _0x19493e[_0x2916f0(0x1f5)][_0x2916f0(0x230)](_0x18d8be=>({'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)][_0x2916f0(0x204)],'rule':_0x2916f0(0x264),'message':_0x18d8be['instancePath']?_0x18d8be[_0x2916f0(0x24a)]+'\x20'+_0x18d8be['message']:'must\x20have\x20required\x20property\x20\x27'+_0x18d8be[_0x2916f0(0x1f2)]['missingProperty']+'\x27','category':_0x2916f0(0x1fc),'validator':'json-schema'}));return[];}catch(_0x285775){return this[_0x2916f0(0x1e9)]?.['error'](_0x2916f0(0x20f),{'error':_0x285775[_0x2916f0(0x211)]}),[{'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x285775[_0x2916f0(0x211)],'category':'syntax','validator':_0x2916f0(0x21c)}];}}async[a0_0x357114(0x253)](_0x31321d,_0xa685ea={}){const _0x226b60=a0_0x357114;try{const _0x28b922=await a0_0xa8af1f[_0x226b60(0x206)](_0x31321d,'utf-8'),_0x54706a=JSON['parse'](_0x28b922),_0x138565=[];if(_0x54706a['compilerOptions']){const _0x5ca1bd=_0x54706a[_0x226b60(0x23c)];!_0x5ca1bd[_0x226b60(0x1ea)]&&_0x138565[_0x226b60(0x1f9)]({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x226b60(0x218)][_0x226b60(0x20c)],'rule':'strict-mode','message':_0x226b60(0x225),'category':_0x226b60(0x1fd),'validator':'tsconfig-validator'}),_0x5ca1bd[_0x226b60(0x20a)]===![]&&_0x138565['push']({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x226b60(0x244)});}return _0x138565;}catch(_0x37c614){return this[_0x226b60(0x1e9)]?.[_0x226b60(0x262)]('tsconfig.json\x20validation\x20failed',{'error':_0x37c614['message']}),[{'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x226b60(0x204)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x37c614['message'],'category':_0x226b60(0x24e),'validator':'json-parse'}];}}async[a0_0x357114(0x240)](_0x47620d,_0x10096b={}){const _0x2c053d=a0_0x357114;try{const _0x2d5247=await a0_0xa8af1f['readFile'](_0x47620d,'utf-8'),_0x4a5c7f=[],_0xfa391e=_0x2d5247[_0x2c053d(0x255)]('\x0a'),_0x35c8c9=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x2c053d(0x25a)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x2c053d(0x21d)}];return _0xfa391e['forEach']((_0x4dafba,_0x39d221)=>{const _0xb5a835=_0x2c053d,_0xd92cdf=_0x4dafba[_0xb5a835(0x234)]();if(!_0xd92cdf||_0xd92cdf[_0xb5a835(0x23a)]('#'))return;if(_0xd92cdf['includes']('=')){const [_0x38af11,_0x3a97b1]=_0xd92cdf[_0xb5a835(0x255)]('='),_0x5db324=_0x38af11[_0xb5a835(0x226)](),_0x188b8b=_0x3a97b1?.[_0xb5a835(0x234)]()||'',_0x5a050e=_0x188b8b&&_0x188b8b!==''&&!_0x188b8b[_0xb5a835(0x23a)]('$')&&_0x188b8b!=='your-key-here'&&_0x188b8b!==_0xb5a835(0x21b)&&_0x188b8b[_0xb5a835(0x1f0)]>0x5;if(_0x5a050e)for(const {pattern:_0x14606d,name:_0x111852}of _0x35c8c9){if(_0x14606d['test'](_0x5db324)){_0x4a5c7f['push']({'file':_0x47620d,'line':_0x39d221+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xb5a835(0x218)]['CRITICAL'],'rule':'hardcoded-secret','message':_0xb5a835(0x1f3)+_0x111852+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0xb5a835(0x213),'remediation':_0xb5a835(0x1fb)});break;}}}}),_0x4a5c7f;}catch(_0x26993e){return this[_0x2c053d(0x1e9)]?.['error'](_0x2c053d(0x216),{'error':_0x26993e[_0x2c053d(0x211)]}),[];}}[a0_0x357114(0x20d)](_0x104fe2){const _0x3767e8=a0_0x357114,_0x544351=a0_0x3cc598[_0x3767e8(0x221)](_0x104fe2)[_0x3767e8(0x226)](),_0x1e04b2=a0_0x3cc598[_0x3767e8(0x214)](_0x104fe2);if(_0x544351==='dockerfile')return'dockerfile';if(_0x544351===_0x3767e8(0x24b)||_0x544351===_0x3767e8(0x224))return'docker-compose';if(_0x544351==='package.json')return _0x3767e8(0x1fa);if(_0x544351===_0x3767e8(0x259))return'tsconfig.json';if(_0x544351==='.env'||_0x544351[_0x3767e8(0x22f)]('.env'))return _0x3767e8(0x217);if(_0x1e04b2[_0x3767e8(0x250)]('.github/workflows'))return _0x3767e8(0x23d);if(_0x1e04b2[_0x3767e8(0x250)]('kubernetes')||_0x1e04b2[_0x3767e8(0x250)]('k8s'))return'kubernetes';const _0x5b374a=a0_0x3cc598[_0x3767e8(0x22e)](_0x104fe2)[_0x3767e8(0x226)]();if(_0x5b374a===_0x3767e8(0x1f7)||_0x5b374a===_0x3767e8(0x252))return'terraform';if(_0x5b374a==='.yml'||_0x5b374a==='.yaml')return _0x3767e8(0x20b);if(_0x5b374a==='.json')return'json';return'unknown';}[a0_0x357114(0x236)](_0x1a7cae){const _0x480392=a0_0x357114;return _0x1a7cae['map'](_0x37f721=>({'file':_0x37f721['file'],'line':_0x37f721['line']||0x1,'column':_0x37f721['column']||0x1,'severity':_0x37f721[_0x480392(0x207)]||STATIC_ANALYSIS[_0x480392(0x218)]['WARNING'],'rule':_0x37f721['rule']||_0x480392(0x25b),'message':_0x37f721[_0x480392(0x211)]||_0x480392(0x21f),'category':_0x37f721['category']||_0x480392(0x1fc),'validator':_0x37f721[_0x480392(0x263)],'cwe':_0x37f721[_0x480392(0x22a)]||null,'remediation':_0x37f721[_0x480392(0x205)]||null,'references':_0x37f721['references']||[]}));}[a0_0x357114(0x254)](_0x1b4da5){const _0x437e05=a0_0x357114,_0xb966bd={'error':STATIC_ANALYSIS[_0x437e05(0x218)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)],'style':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)]};return _0xb966bd[_0x1b4da5?.['toLowerCase']()]||STATIC_ANALYSIS[_0x437e05(0x218)]['WARNING'];}[a0_0x357114(0x265)](_0x273bc9){const _0x210bf5=a0_0x357114,_0x3c466a={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x210bf5(0x218)]['WARNING']};return _0x3c466a[_0x273bc9?.['toLowerCase']()]||STATIC_ANALYSIS[_0x210bf5(0x218)][_0x210bf5(0x20c)];}[a0_0x357114(0x232)](_0x5db6b7){const _0x5f3f31=a0_0x357114;return STATIC_ANALYSIS[_0x5f3f31(0x218)][_0x5f3f31(0x204)];}async['getValidatorStatus'](){const _0x2b024a=a0_0x357114,_0x102f9d=await this[_0x2b024a(0x24d)]();return{'validators':_0x102f9d,'recommendations':this['getInstallRecommendations'](_0x102f9d)};}[a0_0x357114(0x237)](_0x32248f){const _0x3f6821=a0_0x357114,_0x3abaf3=[];return!_0x32248f[_0x3f6821(0x243)]&&_0x3abaf3['push']({'validator':_0x3f6821(0x243),'reason':_0x3f6821(0x20e),'install':'pip\x20install\x20checkov','priority':'high'}),!_0x32248f['hadolint']&&_0x3abaf3['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x32248f['yamllint']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':'yamllint','reason':_0x3f6821(0x24c),'install':_0x3f6821(0x1ee),'priority':_0x3f6821(0x229)}),!_0x32248f['jsonSchema']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':_0x3f6821(0x246),'reason':_0x3f6821(0x260),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x3f6821(0x229)}),_0x3abaf3;}}export default ConfigValidator;