@loxia-labs/loxia-autopilot-one 3.0.3 → 3.2.0
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.
- package/bin/cli.js +1 -1
- package/bin/loxia-terminal-v2.js +1 -1
- package/bin/loxia-terminal.js +1 -1
- package/bin/start-with-terminal.js +1 -1
- package/package.json +1 -1
- package/scripts/install-scanners.js +1 -1
- package/scripts/watchdog.js +1 -1
- package/src/analyzers/CSSAnalyzer.js +1 -1
- package/src/analyzers/ConfigValidator.js +1 -1
- package/src/analyzers/ESLintAnalyzer.js +1 -1
- package/src/analyzers/JavaScriptAnalyzer.js +1 -1
- package/src/analyzers/PrettierFormatter.js +1 -1
- package/src/analyzers/PythonAnalyzer.js +1 -1
- package/src/analyzers/SecurityAnalyzer.js +1 -1
- package/src/analyzers/SparrowAnalyzer.js +1 -1
- package/src/analyzers/TypeScriptAnalyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/detector.js +1 -1
- package/src/analyzers/codeCloneDetector/index.js +1 -1
- package/src/analyzers/codeCloneDetector/parser.js +1 -1
- package/src/analyzers/codeCloneDetector/reporter.js +1 -1
- package/src/analyzers/codeCloneDetector/scanner.js +1 -1
- package/src/core/agentPool.js +1 -1
- package/src/core/agentScheduler.js +1 -1
- package/src/core/contextManager.js +1 -1
- package/src/core/flowExecutor.js +1 -1
- package/src/core/messageProcessor.js +1 -1
- package/src/core/orchestrator.js +1 -1
- package/src/core/stateManager.js +1 -1
- package/src/index.js +1 -1
- package/src/interfaces/cli.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
- package/src/interfaces/terminal/api/apiClient.js +1 -1
- package/src/interfaces/terminal/api/messageRouter.js +1 -1
- package/src/interfaces/terminal/api/session.js +1 -1
- package/src/interfaces/terminal/api/websocket.js +1 -1
- package/src/interfaces/terminal/components/AgentCreator.js +1 -1
- package/src/interfaces/terminal/components/AgentEditor.js +1 -1
- package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
- package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
- package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
- package/src/interfaces/terminal/components/Header.js +1 -1
- package/src/interfaces/terminal/components/HelpPanel.js +1 -1
- package/src/interfaces/terminal/components/InputBox.js +1 -1
- package/src/interfaces/terminal/components/Layout.js +1 -1
- package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
- package/src/interfaces/terminal/components/MessageList.js +1 -1
- package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
- package/src/interfaces/terminal/components/SearchPanel.js +1 -1
- package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
- package/src/interfaces/terminal/components/StatusBar.js +1 -1
- package/src/interfaces/terminal/components/TextInput.js +1 -1
- package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
- package/src/interfaces/terminal/config/constants.js +1 -1
- package/src/interfaces/terminal/index.js +1 -1
- package/src/interfaces/terminal/state/useAgentControl.js +1 -1
- package/src/interfaces/terminal/state/useAgents.js +1 -1
- package/src/interfaces/terminal/state/useConnection.js +1 -1
- package/src/interfaces/terminal/state/useMessages.js +1 -1
- package/src/interfaces/terminal/state/useTools.js +1 -1
- package/src/interfaces/terminal/utils/debugLogger.js +1 -1
- package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
- package/src/interfaces/terminal/utils/theme.js +1 -1
- package/src/interfaces/webServer.js +1 -1
- package/src/modules/fileExplorer/controller.js +1 -1
- package/src/modules/fileExplorer/index.js +1 -1
- package/src/modules/fileExplorer/middleware.js +1 -1
- package/src/modules/fileExplorer/routes.js +1 -1
- package/src/services/agentActivityService.js +1 -1
- package/src/services/aiService.js +1 -1
- package/src/services/apiKeyManager.js +1 -1
- package/src/services/benchmarkService.js +1 -1
- package/src/services/budgetService.js +1 -1
- package/src/services/contextInjectionService.js +1 -1
- package/src/services/conversationCompactionService.js +1 -1
- package/src/services/credentialVault.js +1 -1
- package/src/services/errorHandler.js +1 -1
- package/src/services/fileAttachmentService.js +1 -1
- package/src/services/flowContextService.js +1 -1
- package/src/services/memoryService.js +1 -1
- package/src/services/modelRouterService.js +1 -1
- package/src/services/modelsService.js +1 -1
- package/src/services/ollamaService.js +1 -1
- package/src/services/portRegistry.js +1 -1
- package/src/services/portTracker.js +1 -1
- package/src/services/projectDetector.js +1 -1
- package/src/services/promptService.js +1 -1
- package/src/services/qualityInspector.js +1 -1
- package/src/services/scheduleService.js +1 -1
- package/src/services/serviceRegistry.js +1 -1
- package/src/services/skillsService.js +1 -1
- package/src/services/telegramService.js +1 -1
- package/src/services/tokenCountingService.js +1 -1
- package/src/services/visualEditorBridge.js +1 -1
- package/src/services/visualEditorServer.js +1 -1
- package/src/services/whatsappService.js +1 -1
- package/src/tools/agentCommunicationTool.js +1 -1
- package/src/tools/agentDelayTool.js +1 -1
- package/src/tools/asyncToolManager.js +1 -1
- package/src/tools/baseTool.js +1 -1
- package/src/tools/browserTool.js +1 -1
- package/src/tools/cloneDetectionTool.js +1 -1
- package/src/tools/codeMapTool.js +1 -1
- package/src/tools/dependencyResolverTool.js +1 -1
- package/src/tools/docxTool.js +1 -1
- package/src/tools/excelTool.js +1 -1
- package/src/tools/fileContentReplaceTool.js +1 -1
- package/src/tools/fileSystemTool.js +1 -1
- package/src/tools/fileTreeTool.js +1 -1
- package/src/tools/helpTool.js +1 -1
- package/src/tools/imageTool.js +1 -1
- package/src/tools/importAnalyzerTool.js +1 -1
- package/src/tools/jobDoneTool.js +1 -1
- package/src/tools/memoryTool.js +1 -1
- package/src/tools/pdfTool.js +1 -1
- package/src/tools/seekTool.js +1 -1
- package/src/tools/skillsTool.js +1 -1
- package/src/tools/staticAnalysisTool.js +1 -1
- package/src/tools/taskManagerTool.js +1 -1
- package/src/tools/terminalTool.js +1 -1
- package/src/tools/userPromptTool.js +1 -1
- package/src/tools/videoTool.js +1 -1
- package/src/tools/visionTool.js +1 -1
- package/src/tools/visualEditorTool.js +1 -1
- package/src/tools/webTool.js +1 -1
- package/src/tools/whatsappTool.js +1 -1
- package/src/types/agent.js +1 -1
- package/src/types/contextReference.js +1 -1
- package/src/types/conversation.js +1 -1
- package/src/types/toolCommand.js +1 -1
- package/src/utilities/attachmentValidator.js +1 -1
- package/src/utilities/browserStealth.js +1 -1
- package/src/utilities/configManager.js +1 -1
- package/src/utilities/constants.js +1 -1
- package/src/utilities/directoryAccessManager.js +1 -1
- package/src/utilities/fileProcessor.js +1 -1
- package/src/utilities/humanBehavior.js +1 -1
- package/src/utilities/jsonRepair.js +1 -1
- package/src/utilities/logger.js +1 -1
- package/src/utilities/platformUtils.js +1 -1
- package/src/utilities/platformUtils.test.js +1 -1
- package/src/utilities/stealthConstants.js +1 -1
- package/src/utilities/structuredFileValidator.js +1 -1
- package/src/utilities/tagParser.js +1 -1
- package/src/utilities/toolConstants.js +1 -1
- package/src/utilities/userDataDir.js +1 -1
- package/web-ui/build/index.html +2 -2
- package/web-ui/build/static/index-BHfbbXee.css +1 -0
- package/web-ui/build/static/index-CKM-bzdq.js +743 -0
- package/web-ui/build/static/index-CV3z5zRq.js +0 -741
- package/web-ui/build/static/index-D3TW3p_0.css +0 -1
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x5bda23=a0_0x5c61;(function(_0x2c9c87,_0xd5168d){const _0x5526cd=a0_0x5c61,_0x3076b6=_0x2c9c87();while(!![]){try{const _0x2c55dc=-parseInt(_0x5526cd(0x182))/0x1*(parseInt(_0x5526cd(0x18d))/0x2)+parseInt(_0x5526cd(0x187))/0x3*(-parseInt(_0x5526cd(0x19c))/0x4)+parseInt(_0x5526cd(0x1ad))/0x5*(-parseInt(_0x5526cd(0x1c5))/0x6)+parseInt(_0x5526cd(0x194))/0x7*(parseInt(_0x5526cd(0x18c))/0x8)+-parseInt(_0x5526cd(0x180))/0x9*(-parseInt(_0x5526cd(0x17a))/0xa)+-parseInt(_0x5526cd(0x1ca))/0xb+-parseInt(_0x5526cd(0x169))/0xc*(-parseInt(_0x5526cd(0x1cf))/0xd);if(_0x2c55dc===_0xd5168d)break;else _0x3076b6['push'](_0x3076b6['shift']());}catch(_0x434758){_0x3076b6['push'](_0x3076b6['shift']());}}}(a0_0x4a04,0x39820));import{fileURLToPath}from'url';function a0_0x5c61(_0x5023d1,_0x580452){_0x5023d1=_0x5023d1-0x169;const _0x4a04b0=a0_0x4a04();let _0x5c61fe=_0x4a04b0[_0x5023d1];return _0x5c61fe;}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0xc46307 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='127.0.0.1',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x5bda23(0x191)]['slice'](0x2),command=args[0x0]&&!args[0x0]['startsWith']('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes'](a0_0x5bda23(0x1a2))||args[a0_0x5bda23(0x1ae)]('-h'),'version':args['includes']('--version')||args[a0_0x5bda23(0x1ae)]('-v')};for(let i=0x0;i<args[a0_0x5bda23(0x1a0)];i++){args[i]===a0_0x5bda23(0x17c)&&args[i+0x1]&&(flags[a0_0x5bda23(0x1d1)]=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x5bda23(0x1a7)]=args[i+0x1]);}const explicitPort=flags[a0_0x5bda23(0x1d1)],host=flags[a0_0x5bda23(0x1a7)]||DEFAULT_HOST;if(flags[a0_0x5bda23(0x171)]){const pkgPath=join(__dirname,'..',a0_0x5bda23(0x17f)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x5bda23(0x18b)));console[a0_0x5bda23(0x19b)](a0_0x5bda23(0x1d0)+pkg[a0_0x5bda23(0x171)]),process[a0_0x5bda23(0x1c6)](0x0);}if(flags[a0_0x5bda23(0x17b)]||!command){const pkgPath=join(__dirname,'..',a0_0x5bda23(0x17f)),pkg=JSON[a0_0x5bda23(0x1a9)](readFileSync(pkgPath,'utf8'));console[a0_0x5bda23(0x19b)](a0_0x5bda23(0x173)+pkg[a0_0x5bda23(0x171)]+a0_0x5bda23(0x1b7)+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a'),process[a0_0x5bda23(0x1c6)](0x0);}async function getPortRegistry(){const _0x1ed7af=a0_0x5bda23,{getPortRegistry:_0x3e7bd1}=await import(_0x1ed7af(0x199));return _0x3e7bd1();}async function discoverBackend(){const _0x3e46d4=a0_0x5bda23;try{const _0x58ce7d=await getPortRegistry();await _0x58ce7d[_0x3e46d4(0x1b9)]();const _0xee514=await _0x58ce7d['getService'](_0x3e46d4(0x18e));if(_0xee514)return{'host':_0xee514[_0x3e46d4(0x1a7)]||'localhost','port':_0xee514[_0x3e46d4(0x1d1)],'pid':_0xee514[_0x3e46d4(0x1ac)]};return null;}catch(_0x81d4f0){return null;}}async function checkServerRunning(_0x122575,_0x27165e,_0x454820=0x1){for(let _0x268a96=0x0;_0x268a96<_0x454820;_0x268a96++){const _0x2b7eae=await new Promise(_0x5067e0=>{const _0x536450=a0_0x5c61,_0x19ed08=a0_0xc46307[_0x536450(0x1a8)]('http://'+_0x122575+':'+_0x27165e+'/api/health',_0x1f5e16=>{const _0x44a9ed=_0x536450;_0x5067e0(_0x1f5e16[_0x44a9ed(0x17e)]===0xc8);});_0x19ed08['on']('error',()=>_0x5067e0(![])),_0x19ed08[_0x536450(0x1be)](0x7d0,()=>{const _0x531ec3=_0x536450;_0x19ed08[_0x531ec3(0x185)](),_0x5067e0(![]);});});if(_0x2b7eae)return!![];_0x268a96<_0x454820-0x1&&await new Promise(_0x37f56f=>setTimeout(_0x37f56f,SERVER_CHECK_INTERVAL));}return![];}function a0_0x4a04(){const _0x425cf6=['inherit','297QBGOFC','success','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','SIGTERM','utf8','224PWLXiz','2FUxapK','backend','Request\x20timed\x20out','kill','argv','\x20\x20API\x20Health:\x20\x20\x20','error','9737dcgQFd','PORT','Failed\x20to\x20trigger\x20schedule:\x20','start','Server\x20discovered\x20at\x20','../src/services/portRegistry.js','win32','log','15380BfrMId','POST','LOXIA_HOST','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','length','/api/schedules/','--help','catch','src','Starting\x20Loxia\x20server...\x0a','end','host','get','parse','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','pid','5qwDqrv','includes','open','byteLength','node','data','Failed\x20to\x20start\x20server\x20within\x2030s.\x20Check\x20logs.','request','Starting\x20Loxia\x20server\x20in\x20background...','platform','\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\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\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\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x20\x20trigger-schedule\x20<id>\x20\x20\x20\x20\x20Trigger\x20a\x20scheduled\x20task\x20(wakes\x20server\x20if\x20needed)\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','No\x20running\x20server\x20found.\x20Starting\x20Loxia\x20in\x20background...','cleanupStaleEntries','loxia-terminal.js','application/json','Waiting\x20for\x20server\x20to\x20start...','Starting\x20Terminal\x20UI...\x0a','setTimeout','Please\x20open\x20manually:\x20','\x0aShutting\x20down\x20server...','/trigger','ceil','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','unref','397122mutjNd','exit','ignore','message','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','1465266TvhVkK','Looking\x20for\x20running\x20server...','\x22\x20triggered\x20successfully.','Could\x20not\x20open\x20browser\x20automatically.','xdg-open','234NOswWM','Loxia\x20Autopilot\x20One\x20v','port','455808eABVgx','LOXIA_PORT','/api/system/idle-shutdown','Schedule\x20\x22','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','\x20but\x20not\x20responding.','/api/health\x0a','toString','version','write','\x0aLoxia\x20Autopilot\x20One\x20v','index.js','\x0aServer\x20registered\x20at\x20','SIGINT','stringify','\x0a✓\x20Server\x20running\x20at\x20','http://','170yLURQP','help','--port','Unknown\x20command:\x20','statusCode','package.json','146817bJvvRY','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','184381iQrjvr','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','web','destroy'];a0_0x4a04=function(){return _0x425cf6;};return a0_0x4a04();}async function waitForServerWithDiscovery(_0x39e81b=SERVER_STARTUP_TIMEOUT){const _0x8b5a9a=a0_0x5bda23,_0x5b154b=Date['now']();while(Date['now']()-_0x5b154b<_0x39e81b){const _0x37a8c2=await discoverBackend();if(_0x37a8c2){const _0x2486b7=await checkServerRunning(_0x37a8c2[_0x8b5a9a(0x1a7)],_0x37a8c2[_0x8b5a9a(0x1d1)]);if(_0x2486b7)return _0x37a8c2;}await new Promise(_0x3de863=>setTimeout(_0x3de863,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x38df08,_0x1b4af6,_0x8c542f=SERVER_STARTUP_TIMEOUT){const _0x4ca2f8=a0_0x5bda23,_0x5d3ff3=Math[_0x4ca2f8(0x1c2)](_0x8c542f/SERVER_CHECK_INTERVAL),_0x57d0c7=await checkServerRunning(_0x38df08,_0x1b4af6,_0x5d3ff3);return _0x57d0c7?{'host':_0x38df08,'port':_0x1b4af6}:null;}function openBrowser(_0x44244a){const _0x39ee88=a0_0x5bda23;let _0x38be77,_0x12d9ae;if(process['platform']==='darwin')_0x38be77=_0x39ee88(0x1af),_0x12d9ae=[_0x44244a];else process[_0x39ee88(0x1b6)]===_0x39ee88(0x19a)?(_0x38be77='cmd',_0x12d9ae=['/c',_0x39ee88(0x197),'\x22\x22',_0x44244a]):(_0x38be77=_0x39ee88(0x1ce),_0x12d9ae=[_0x44244a]);const _0x4de93e=spawn(_0x38be77,_0x12d9ae,{'detached':!![],'stdio':_0x39ee88(0x1c7)});_0x4de93e[_0x39ee88(0x1c4)](),_0x4de93e['on'](_0x39ee88(0x193),()=>{const _0x115725=_0x39ee88;console[_0x115725(0x19b)](_0x115725(0x1cd)),console[_0x115725(0x19b)](_0x115725(0x1bf)+_0x44244a);});}function startServer(_0x3d61a4=![]){const _0x49289d=a0_0x5bda23,_0x236640={...process.env};explicitPort&&(_0x236640[_0x49289d(0x16a)]=explicitPort[_0x49289d(0x170)](),_0x236640[_0x49289d(0x195)]=explicitPort[_0x49289d(0x170)]());flags['host']&&(_0x236640[_0x49289d(0x19e)]=flags[_0x49289d(0x1a7)]);const _0x181333=join(__dirname,'..',_0x49289d(0x1a4),_0x49289d(0x174)),_0x3a53af=spawn('node',[_0x181333],{'cwd':join(__dirname,'..'),'env':_0x236640,'stdio':_0x3d61a4?['ignore',_0x49289d(0x1c7),_0x49289d(0x1c7)]:_0x49289d(0x186),'detached':_0x3d61a4});return _0x3d61a4&&_0x3a53af[_0x49289d(0x1c4)](),_0x3a53af;}function startTerminalUIProcess(_0x596e9c,_0x3cfeba){const _0x582734=a0_0x5bda23,_0x348fb3=join(__dirname,_0x582734(0x1ba)),_0x42e163={...process.env,'LOXIA_PORT':_0x3cfeba[_0x582734(0x170)](),'LOXIA_HOST':_0x596e9c},_0x2ecbdc=spawn(_0x582734(0x1b1),[_0x348fb3],{'cwd':join(__dirname,'..'),'env':_0x42e163,'stdio':'inherit'});return _0x2ecbdc;}const commands={'web':async()=>{const _0x45440a=a0_0x5bda23;console['log'](_0x45440a(0x1a5));const _0x27559a=startServer(![]);console[_0x45440a(0x19b)]('Waiting\x20for\x20server\x20to\x20start...');let _0x2ab704;explicitPort?_0x2ab704=await waitForServerAtPort(host,explicitPort):_0x2ab704=await waitForServerWithDiscovery();if(_0x2ab704){const _0x392ed5='http://'+_0x2ab704['host']+':'+_0x2ab704[_0x45440a(0x1d1)];console['log']('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x392ed5),openBrowser(_0x392ed5);}else console[_0x45440a(0x19b)](_0x45440a(0x16d));process['on']('SIGINT',()=>_0x27559a[_0x45440a(0x190)](_0x45440a(0x176))),process['on'](_0x45440a(0x18a),()=>_0x27559a[_0x45440a(0x190)](_0x45440a(0x18a))),_0x27559a['on'](_0x45440a(0x1c6),_0x416047=>process[_0x45440a(0x1c6)](_0x416047||0x0));},'plus-web':async()=>{const _0xf8a90b=a0_0x5bda23;await commands[_0xf8a90b(0x184)]();},'serve':async()=>{const _0x46d191=a0_0x5bda23;console[_0x46d191(0x19b)](_0x46d191(0x1a5));const _0x78412d=startServer(![]);console['log'](_0x46d191(0x1bc));let _0x4fdd4d;explicitPort?_0x4fdd4d=await waitForServerAtPort(host,explicitPort):_0x4fdd4d=await waitForServerWithDiscovery();if(_0x4fdd4d){const _0x145590='http://'+_0x4fdd4d[_0x46d191(0x1a7)]+':'+_0x4fdd4d[_0x46d191(0x1d1)];console[_0x46d191(0x19b)](_0x46d191(0x178)+_0x145590),console['log'](_0x46d191(0x189)+_0x145590),console[_0x46d191(0x19b)](_0x46d191(0x19f)),console['log'](_0x46d191(0x192)+_0x145590+_0x46d191(0x16f));}else console[_0x46d191(0x19b)]('\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.'),console[_0x46d191(0x19b)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on'](_0x46d191(0x176),()=>_0x78412d[_0x46d191(0x190)](_0x46d191(0x176))),process['on'](_0x46d191(0x18a),()=>_0x78412d[_0x46d191(0x190)](_0x46d191(0x18a))),_0x78412d['on'](_0x46d191(0x1c6),_0x5c4248=>process['exit'](_0x5c4248||0x0));},'terminal':async()=>{const _0x151ee0=a0_0x5bda23;console[_0x151ee0(0x19b)](_0x151ee0(0x1cb));let _0x395372=await discoverBackend();explicitPort&&(_0x395372={'host':host,'port':explicitPort});!_0x395372&&(console[_0x151ee0(0x193)](_0x151ee0(0x1c9)),console[_0x151ee0(0x193)]('\x0aPlease\x20start\x20the\x20server\x20first:'),console[_0x151ee0(0x193)](_0x151ee0(0x1ab)),console[_0x151ee0(0x193)](_0x151ee0(0x1aa)),console[_0x151ee0(0x193)](_0x151ee0(0x181)),process[_0x151ee0(0x1c6)](0x1));const _0x9bb61f=await checkServerRunning(_0x395372[_0x151ee0(0x1a7)],_0x395372['port']);!_0x9bb61f&&(console[_0x151ee0(0x193)](_0x151ee0(0x175)+_0x395372[_0x151ee0(0x1a7)]+':'+_0x395372[_0x151ee0(0x1d1)]+_0x151ee0(0x16e)),console[_0x151ee0(0x193)]('It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.'),process[_0x151ee0(0x1c6)](0x1));console[_0x151ee0(0x19b)](_0x151ee0(0x198)+_0x395372[_0x151ee0(0x1a7)]+':'+_0x395372[_0x151ee0(0x1d1)]),console[_0x151ee0(0x19b)](_0x151ee0(0x1bd));const _0x518bcb=startTerminalUIProcess(_0x395372['host'],_0x395372[_0x151ee0(0x1d1)]);process['on']('SIGINT',()=>_0x518bcb[_0x151ee0(0x190)]('SIGINT')),process['on']('SIGTERM',()=>_0x518bcb[_0x151ee0(0x190)](_0x151ee0(0x18a))),_0x518bcb['on'](_0x151ee0(0x1c6),_0x2eb6be=>process[_0x151ee0(0x1c6)](_0x2eb6be||0x0));},'plus-terminal':async()=>{const _0x2a298c=a0_0x5bda23;console['log'](_0x2a298c(0x1b5));const _0x3d4039=startServer(!![]);let _0x10ab75;explicitPort?_0x10ab75=await waitForServerAtPort(host,explicitPort):_0x10ab75=await waitForServerWithDiscovery();!_0x10ab75&&(console[_0x2a298c(0x193)](_0x2a298c(0x183)),process[_0x2a298c(0x1c6)](0x1));console[_0x2a298c(0x19b)]('Server\x20running\x20at\x20http://'+_0x10ab75['host']+':'+_0x10ab75[_0x2a298c(0x1d1)]),console[_0x2a298c(0x19b)](_0x2a298c(0x1bd));const _0x9e72a7=startTerminalUIProcess(_0x10ab75[_0x2a298c(0x1a7)],_0x10ab75['port']);_0x9e72a7['on'](_0x2a298c(0x1c6),_0x144705=>{const _0x296970=_0x2a298c;console['log'](_0x296970(0x1c0));try{process[_0x296970(0x190)](_0x3d4039[_0x296970(0x1ac)],'SIGTERM');}catch(_0x530b6b){}process[_0x296970(0x1c6)](_0x144705||0x0);}),process['on']('SIGINT',()=>{const _0x4da5f2=_0x2a298c;_0x9e72a7['kill'](_0x4da5f2(0x176));}),process['on']('SIGTERM',()=>{const _0x2a7ce2=_0x2a298c;_0x9e72a7[_0x2a7ce2(0x190)](_0x2a7ce2(0x18a));});},'trigger-schedule':async()=>{const _0x3f4189=a0_0x5bda23,_0x573cd1=args[0x1];!_0x573cd1&&(console['error']('Usage:\x20loxia\x20trigger-schedule\x20<schedule-id>'),process[_0x3f4189(0x1c6)](0x1));let _0x553bda=await discoverBackend(),_0x1d2b51=![];if(_0x553bda){const _0x31d908=await checkServerRunning(_0x553bda[_0x3f4189(0x1a7)],_0x553bda[_0x3f4189(0x1d1)]);if(!_0x31d908)_0x553bda=null;}!_0x553bda&&(console[_0x3f4189(0x19b)](_0x3f4189(0x1b8)),startServer(!![]),_0x1d2b51=!![],explicitPort?_0x553bda=await waitForServerAtPort(host,explicitPort,0x7530):_0x553bda=await waitForServerWithDiscovery(0x7530),!_0x553bda&&(console['error'](_0x3f4189(0x1b3)),process[_0x3f4189(0x1c6)](0x1)),console['log']('Server\x20started\x20at\x20'+_0x553bda[_0x3f4189(0x1a7)]+':'+_0x553bda['port']));const _0x1eb062=_0x3f4189(0x179)+_0x553bda['host']+':'+_0x553bda[_0x3f4189(0x1d1)]+_0x3f4189(0x1a1)+encodeURIComponent(_0x573cd1)+_0x3f4189(0x1c1);try{const _0x8512f=await new Promise((_0x451bd2,_0x9c21d5)=>{const _0x5ad3e4=_0x3f4189,_0x4df037=JSON[_0x5ad3e4(0x177)]({}),_0x3282c7=a0_0xc46307[_0x5ad3e4(0x1b4)](_0x1eb062,{'method':'POST','headers':{'Content-Type':'application/json','Content-Length':Buffer[_0x5ad3e4(0x1b0)](_0x4df037)}},_0x2d7bdf=>{const _0x2f3b0c=_0x5ad3e4;let _0x3bb0d5='';_0x2d7bdf['on'](_0x2f3b0c(0x1b2),_0x541802=>_0x3bb0d5+=_0x541802),_0x2d7bdf['on'](_0x2f3b0c(0x1a6),()=>{try{_0x451bd2(JSON['parse'](_0x3bb0d5));}catch{_0x9c21d5(new Error('Invalid\x20response:\x20'+_0x3bb0d5));}});});_0x3282c7['on'](_0x5ad3e4(0x193),_0x9c21d5),_0x3282c7[_0x5ad3e4(0x1be)](0xea60,()=>{const _0x4c8013=_0x5ad3e4;_0x3282c7[_0x4c8013(0x185)](),_0x9c21d5(new Error(_0x4c8013(0x18f)));}),_0x3282c7['write'](_0x4df037),_0x3282c7[_0x5ad3e4(0x1a6)]();});_0x8512f[_0x3f4189(0x188)]?console['log'](_0x3f4189(0x16c)+(_0x8512f['scheduleName']||_0x573cd1)+_0x3f4189(0x1cc)):(console['error']('Failed\x20to\x20trigger\x20schedule:\x20'+_0x8512f[_0x3f4189(0x193)]),process[_0x3f4189(0x1c6)](0x1));}catch(_0x50cd06){console[_0x3f4189(0x193)](_0x3f4189(0x196)+_0x50cd06[_0x3f4189(0x1c8)]),process[_0x3f4189(0x1c6)](0x1);}if(_0x1d2b51){const _0x1de91c=_0x3f4189(0x179)+_0x553bda[_0x3f4189(0x1a7)]+':'+_0x553bda[_0x3f4189(0x1d1)]+_0x3f4189(0x16b);try{const _0x57fe7b=JSON['stringify']({'timeoutMinutes':0xa});await new Promise(_0x50a33d=>{const _0x5b7d62=_0x3f4189,_0x412d77=a0_0xc46307[_0x5b7d62(0x1b4)](_0x1de91c,{'method':_0x5b7d62(0x19d),'headers':{'Content-Type':_0x5b7d62(0x1bb),'Content-Length':Buffer[_0x5b7d62(0x1b0)](_0x57fe7b)}},_0x1a1704=>{const _0x23e31b=_0x5b7d62;_0x1a1704['on'](_0x23e31b(0x1b2),()=>{}),_0x1a1704['on'](_0x23e31b(0x1a6),_0x50a33d);});_0x412d77['on']('error',_0x50a33d),_0x412d77[_0x5b7d62(0x172)](_0x57fe7b),_0x412d77[_0x5b7d62(0x1a6)]();});}catch{}}process[_0x3f4189(0x1c6)](0x0);}};commands[command]?commands[command]()[a0_0x5bda23(0x1a3)](_0x4b5ec6=>{const _0x5abf9a=a0_0x5bda23;console[_0x5abf9a(0x193)]('Error:',_0x4b5ec6['message']),process[_0x5abf9a(0x1c6)](0x1);}):(console[a0_0x5bda23(0x193)](a0_0x5bda23(0x17d)+command),console[a0_0x5bda23(0x193)](a0_0x5bda23(0x1c3)),process[a0_0x5bda23(0x1c6)](0x1));
|
|
3
|
+
const a0_0x56d54e=a0_0x4c6d;(function(_0x5702b8,_0x3f652e){const _0x43924a=a0_0x4c6d,_0x39d51b=_0x5702b8();while(!![]){try{const _0x389924=-parseInt(_0x43924a(0x1bb))/0x1*(-parseInt(_0x43924a(0x1df))/0x2)+parseInt(_0x43924a(0x1ba))/0x3*(-parseInt(_0x43924a(0x1a1))/0x4)+-parseInt(_0x43924a(0x1e2))/0x5+-parseInt(_0x43924a(0x19b))/0x6+-parseInt(_0x43924a(0x1ed))/0x7+-parseInt(_0x43924a(0x1a8))/0x8*(-parseInt(_0x43924a(0x1e1))/0x9)+parseInt(_0x43924a(0x1fe))/0xa*(parseInt(_0x43924a(0x1a0))/0xb);if(_0x389924===_0x3f652e)break;else _0x39d51b['push'](_0x39d51b['shift']());}catch(_0x211365){_0x39d51b['push'](_0x39d51b['shift']());}}}(a0_0x617e,0x2ab04));function a0_0x4c6d(_0x11bfbb,_0xceb872){_0x11bfbb=_0x11bfbb-0x199;const _0x617e01=a0_0x617e();let _0x4c6dd4=_0x617e01[_0x11bfbb];return _0x4c6dd4;}import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x232550 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x56d54e(0x1ef),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x56d54e(0x1f5)][a0_0x56d54e(0x1b2)](0x2),command=args[0x0]&&!args[0x0][a0_0x56d54e(0x1bd)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x56d54e(0x1d9)](a0_0x56d54e(0x1c5))||args[a0_0x56d54e(0x1d9)]('-h'),'version':args[a0_0x56d54e(0x1d9)](a0_0x56d54e(0x1a3))||args[a0_0x56d54e(0x1d9)]('-v')};for(let i=0x0;i<args[a0_0x56d54e(0x1d7)];i++){args[i]===a0_0x56d54e(0x1d3)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags['host']=args[i+0x1]);}const explicitPort=flags['port'],host=flags[a0_0x56d54e(0x19c)]||DEFAULT_HOST;if(flags[a0_0x56d54e(0x1b4)]){const pkgPath=join(__dirname,'..',a0_0x56d54e(0x1c0)),pkg=JSON[a0_0x56d54e(0x1eb)](readFileSync(pkgPath,a0_0x56d54e(0x1d0)));console[a0_0x56d54e(0x1b7)](a0_0x56d54e(0x19d)+pkg[a0_0x56d54e(0x1b4)]),process[a0_0x56d54e(0x1e7)](0x0);}if(flags[a0_0x56d54e(0x1a7)]||!command){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x56d54e(0x1eb)](readFileSync(pkgPath,'utf8'));console['log'](a0_0x56d54e(0x1b5)+pkg['version']+a0_0x56d54e(0x1ea)+DEFAULT_PORT+a0_0x56d54e(0x1ac)+DEFAULT_HOST+a0_0x56d54e(0x1dc)),process[a0_0x56d54e(0x1e7)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x2f3817}=await import('../src/services/portRegistry.js');return _0x2f3817();}async function discoverBackend(){const _0x2d6bca=a0_0x56d54e;try{const _0x1def26=await getPortRegistry();await _0x1def26[_0x2d6bca(0x1e0)]();const _0x4af132=await _0x1def26['getService'](_0x2d6bca(0x1f3));if(_0x4af132)return{'host':_0x4af132[_0x2d6bca(0x19c)]||_0x2d6bca(0x1c7),'port':_0x4af132['port'],'pid':_0x4af132[_0x2d6bca(0x1c2)]};return null;}catch(_0x12c42e){return null;}}async function checkServerRunning(_0x57b5fa,_0x41d33d,_0x3301ac=0x1){for(let _0x4d6ce3=0x0;_0x4d6ce3<_0x3301ac;_0x4d6ce3++){const _0x3067ac=await new Promise(_0x1f81a0=>{const _0x75d835=a0_0x4c6d,_0x1e96d0=a0_0x232550[_0x75d835(0x199)](_0x75d835(0x1a4)+_0x57b5fa+':'+_0x41d33d+'/api/health',_0x5663e2=>{const _0x2942cc=_0x75d835;_0x1f81a0(_0x5663e2[_0x2942cc(0x1b8)]===0xc8);});_0x1e96d0['on'](_0x75d835(0x1a5),()=>_0x1f81a0(![])),_0x1e96d0['setTimeout'](0x7d0,()=>{const _0x2fd757=_0x75d835;_0x1e96d0[_0x2fd757(0x1b0)](),_0x1f81a0(![]);});});if(_0x3067ac)return!![];_0x4d6ce3<_0x3301ac-0x1&&await new Promise(_0x178ce2=>setTimeout(_0x178ce2,SERVER_CHECK_INTERVAL));}return![];}function a0_0x617e(){const _0xa470d6=['index.js','setTimeout',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','Starting\x20Terminal\x20UI...\x0a','ignore','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','destroy','success','slice','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','version','\x0aLoxia\x20Autopilot\x20One\x20v','now','log','statusCode','Looking\x20for\x20running\x20server...','9kYDRhl','1VxiVeX','win32','startsWith','/api/health\x0a','scheduleName','package.json','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','pid','\x0aPlease\x20start\x20the\x20server\x20first:','\x0aServer\x20registered\x20at\x20','--help','start','localhost','toString','Please\x20open\x20manually:\x20','Invalid\x20response:\x20','write','/api/schedules/','cmd','end','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','utf8','web','Error:','--port','PORT','data','kill','length','SIGTERM','includes','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aShutting\x20down\x20server...',')\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','message','Server\x20running\x20at\x20http://','502726OOrLMJ','cleanupStaleEntries','144ZiRhAb','435740ChiskS','Failed\x20to\x20trigger\x20schedule:\x20','open','Server\x20discovered\x20at\x20','byteLength','exit','Could\x20not\x20open\x20browser\x20automatically.','Starting\x20Loxia\x20server...\x0a','\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\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\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\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x20\x20trigger-schedule\x20<id>\x20\x20\x20\x20\x20Trigger\x20a\x20scheduled\x20task\x20(wakes\x20server\x20if\x20needed)\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','parse','application/json','918722VDYPGX','unref','127.0.0.1','node','platform','POST','backend','Server\x20started\x20at\x20','argv','/trigger','\x20but\x20not\x20responding.','\x22\x20triggered\x20successfully.','inherit','port','Waiting\x20for\x20server\x20to\x20start...','LOXIA_PORT','SIGINT','88590CmTKeb','Usage:\x20loxia\x20trigger-schedule\x20<schedule-id>','get','stringify','574746AsRLVP','host','Loxia\x20Autopilot\x20One\x20v','No\x20running\x20server\x20found.\x20Starting\x20Loxia\x20in\x20background...','Failed\x20to\x20start\x20server\x20within\x2030s.\x20Check\x20logs.','495jzbhyl','447964xIIHxe','loxia-terminal.js','--version','http://','error','Starting\x20Loxia\x20server\x20in\x20background...','help','87496CmdYFV','ceil'];a0_0x617e=function(){return _0xa470d6;};return a0_0x617e();}async function waitForServerWithDiscovery(_0x20684c=SERVER_STARTUP_TIMEOUT){const _0x161629=a0_0x56d54e,_0xeed8c3=Date[_0x161629(0x1b6)]();while(Date[_0x161629(0x1b6)]()-_0xeed8c3<_0x20684c){const _0x4473a3=await discoverBackend();if(_0x4473a3){const _0x5e769c=await checkServerRunning(_0x4473a3['host'],_0x4473a3[_0x161629(0x1fa)]);if(_0x5e769c)return _0x4473a3;}await new Promise(_0x112dec=>setTimeout(_0x112dec,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x51a324,_0x11ce00,_0x1c8dca=SERVER_STARTUP_TIMEOUT){const _0x448e29=a0_0x56d54e,_0x71f75a=Math[_0x448e29(0x1a9)](_0x1c8dca/SERVER_CHECK_INTERVAL),_0x995662=await checkServerRunning(_0x51a324,_0x11ce00,_0x71f75a);return _0x995662?{'host':_0x51a324,'port':_0x11ce00}:null;}function openBrowser(_0x1b9029){const _0x19e4f1=a0_0x56d54e;let _0x4e2dc2,_0x35161c;if(process[_0x19e4f1(0x1f1)]==='darwin')_0x4e2dc2=_0x19e4f1(0x1e4),_0x35161c=[_0x1b9029];else process[_0x19e4f1(0x1f1)]===_0x19e4f1(0x1bc)?(_0x4e2dc2=_0x19e4f1(0x1cd),_0x35161c=['/c',_0x19e4f1(0x1c6),'\x22\x22',_0x1b9029]):(_0x4e2dc2='xdg-open',_0x35161c=[_0x1b9029]);const _0x24e0c5=spawn(_0x4e2dc2,_0x35161c,{'detached':!![],'stdio':_0x19e4f1(0x1ae)});_0x24e0c5[_0x19e4f1(0x1ee)](),_0x24e0c5['on'](_0x19e4f1(0x1a5),()=>{const _0x3f112d=_0x19e4f1;console[_0x3f112d(0x1b7)](_0x3f112d(0x1e8)),console[_0x3f112d(0x1b7)](_0x3f112d(0x1c9)+_0x1b9029);});}function startServer(_0x41a836=![]){const _0x180b12=a0_0x56d54e,_0xa7d4fe={...process.env};explicitPort&&(_0xa7d4fe[_0x180b12(0x1fc)]=explicitPort['toString'](),_0xa7d4fe[_0x180b12(0x1d4)]=explicitPort[_0x180b12(0x1c8)]());flags[_0x180b12(0x19c)]&&(_0xa7d4fe['LOXIA_HOST']=flags[_0x180b12(0x19c)]);const _0x5e6b21=join(__dirname,'..','src',_0x180b12(0x1aa)),_0x2a72d1=spawn('node',[_0x5e6b21],{'cwd':join(__dirname,'..'),'env':_0xa7d4fe,'stdio':_0x41a836?[_0x180b12(0x1ae),_0x180b12(0x1ae),'ignore']:_0x180b12(0x1f9),'detached':_0x41a836});return _0x41a836&&_0x2a72d1['unref'](),_0x2a72d1;}function startTerminalUIProcess(_0x902c,_0x30cd86){const _0x58e5ea=a0_0x56d54e,_0x34385a=join(__dirname,_0x58e5ea(0x1a2)),_0x51b8bc={...process.env,'LOXIA_PORT':_0x30cd86[_0x58e5ea(0x1c8)](),'LOXIA_HOST':_0x902c},_0x4c21fa=spawn(_0x58e5ea(0x1f0),[_0x34385a],{'cwd':join(__dirname,'..'),'env':_0x51b8bc,'stdio':_0x58e5ea(0x1f9)});return _0x4c21fa;}const commands={'web':async()=>{const _0x2ee359=a0_0x56d54e;console['log']('Starting\x20Loxia\x20server...\x0a');const _0x571aad=startServer(![]);console[_0x2ee359(0x1b7)]('Waiting\x20for\x20server\x20to\x20start...');let _0x4b2886;explicitPort?_0x4b2886=await waitForServerAtPort(host,explicitPort):_0x4b2886=await waitForServerWithDiscovery();if(_0x4b2886){const _0x5c40eb='http://'+_0x4b2886[_0x2ee359(0x19c)]+':'+_0x4b2886[_0x2ee359(0x1fa)];console[_0x2ee359(0x1b7)]('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x5c40eb),openBrowser(_0x5c40eb);}else console[_0x2ee359(0x1b7)](_0x2ee359(0x1b3));process['on'](_0x2ee359(0x1fd),()=>_0x571aad[_0x2ee359(0x1d6)]('SIGINT')),process['on']('SIGTERM',()=>_0x571aad[_0x2ee359(0x1d6)](_0x2ee359(0x1d8))),_0x571aad['on'](_0x2ee359(0x1e7),_0x1bc267=>process['exit'](_0x1bc267||0x0));},'plus-web':async()=>{const _0x414f9e=a0_0x56d54e;await commands[_0x414f9e(0x1d1)]();},'serve':async()=>{const _0x3f1c6e=a0_0x56d54e;console[_0x3f1c6e(0x1b7)](_0x3f1c6e(0x1e9));const _0x5dfaa1=startServer(![]);console[_0x3f1c6e(0x1b7)](_0x3f1c6e(0x1fb));let _0x1fa38e;explicitPort?_0x1fa38e=await waitForServerAtPort(host,explicitPort):_0x1fa38e=await waitForServerWithDiscovery();if(_0x1fa38e){const _0x2351fa=_0x3f1c6e(0x1a4)+_0x1fa38e[_0x3f1c6e(0x19c)]+':'+_0x1fa38e['port'];console[_0x3f1c6e(0x1b7)]('\x0a✓\x20Server\x20running\x20at\x20'+_0x2351fa),console[_0x3f1c6e(0x1b7)]('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x2351fa),console[_0x3f1c6e(0x1b7)](_0x3f1c6e(0x1c1)),console[_0x3f1c6e(0x1b7)]('\x20\x20API\x20Health:\x20\x20\x20'+_0x2351fa+_0x3f1c6e(0x1be));}else console[_0x3f1c6e(0x1b7)]('\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.'),console[_0x3f1c6e(0x1b7)](_0x3f1c6e(0x1cf));process['on'](_0x3f1c6e(0x1fd),()=>_0x5dfaa1[_0x3f1c6e(0x1d6)]('SIGINT')),process['on'](_0x3f1c6e(0x1d8),()=>_0x5dfaa1['kill'](_0x3f1c6e(0x1d8))),_0x5dfaa1['on'](_0x3f1c6e(0x1e7),_0x1cfca6=>process['exit'](_0x1cfca6||0x0));},'terminal':async()=>{const _0x23b754=a0_0x56d54e;console[_0x23b754(0x1b7)](_0x23b754(0x1b9));let _0x10d321=await discoverBackend();explicitPort&&(_0x10d321={'host':host,'port':explicitPort});!_0x10d321&&(console[_0x23b754(0x1a5)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x23b754(0x1a5)](_0x23b754(0x1c3)),console[_0x23b754(0x1a5)]('\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI'),console['error']('\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only'),console[_0x23b754(0x1a5)](_0x23b754(0x1da)),process[_0x23b754(0x1e7)](0x1));const _0x223547=await checkServerRunning(_0x10d321['host'],_0x10d321[_0x23b754(0x1fa)]);!_0x223547&&(console['error'](_0x23b754(0x1c4)+_0x10d321[_0x23b754(0x19c)]+':'+_0x10d321[_0x23b754(0x1fa)]+_0x23b754(0x1f7)),console[_0x23b754(0x1a5)]('It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.'),process[_0x23b754(0x1e7)](0x1));console['log'](_0x23b754(0x1e5)+_0x10d321[_0x23b754(0x19c)]+':'+_0x10d321[_0x23b754(0x1fa)]),console[_0x23b754(0x1b7)](_0x23b754(0x1ad));const _0x3dd44a=startTerminalUIProcess(_0x10d321[_0x23b754(0x19c)],_0x10d321[_0x23b754(0x1fa)]);process['on'](_0x23b754(0x1fd),()=>_0x3dd44a[_0x23b754(0x1d6)](_0x23b754(0x1fd))),process['on'](_0x23b754(0x1d8),()=>_0x3dd44a['kill'](_0x23b754(0x1d8))),_0x3dd44a['on'](_0x23b754(0x1e7),_0x22ad67=>process[_0x23b754(0x1e7)](_0x22ad67||0x0));},'plus-terminal':async()=>{const _0x299eb8=a0_0x56d54e;console[_0x299eb8(0x1b7)](_0x299eb8(0x1a6));const _0x36fa32=startServer(!![]);let _0x4c5fca;explicitPort?_0x4c5fca=await waitForServerAtPort(host,explicitPort):_0x4c5fca=await waitForServerWithDiscovery();!_0x4c5fca&&(console[_0x299eb8(0x1a5)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process[_0x299eb8(0x1e7)](0x1));console[_0x299eb8(0x1b7)](_0x299eb8(0x1de)+_0x4c5fca[_0x299eb8(0x19c)]+':'+_0x4c5fca[_0x299eb8(0x1fa)]),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x4fb46f=startTerminalUIProcess(_0x4c5fca[_0x299eb8(0x19c)],_0x4c5fca[_0x299eb8(0x1fa)]);_0x4fb46f['on'](_0x299eb8(0x1e7),_0x434041=>{const _0xf12440=_0x299eb8;console['log'](_0xf12440(0x1db));try{process[_0xf12440(0x1d6)](_0x36fa32[_0xf12440(0x1c2)],_0xf12440(0x1d8));}catch(_0x1974b7){}process[_0xf12440(0x1e7)](_0x434041||0x0);}),process['on'](_0x299eb8(0x1fd),()=>{const _0x4d076a=_0x299eb8;_0x4fb46f[_0x4d076a(0x1d6)](_0x4d076a(0x1fd));}),process['on'](_0x299eb8(0x1d8),()=>{const _0x3b17aa=_0x299eb8;_0x4fb46f[_0x3b17aa(0x1d6)](_0x3b17aa(0x1d8));});},'trigger-schedule':async()=>{const _0x1f8b9e=a0_0x56d54e,_0x5619a1=args[0x1];!_0x5619a1&&(console[_0x1f8b9e(0x1a5)](_0x1f8b9e(0x1ff)),process[_0x1f8b9e(0x1e7)](0x1));let _0x3a9050=await discoverBackend(),_0x450322=![];if(_0x3a9050){const _0x2b0c16=await checkServerRunning(_0x3a9050['host'],_0x3a9050['port']);if(!_0x2b0c16)_0x3a9050=null;}!_0x3a9050&&(console[_0x1f8b9e(0x1b7)](_0x1f8b9e(0x19e)),startServer(!![]),_0x450322=!![],explicitPort?_0x3a9050=await waitForServerAtPort(host,explicitPort,0x7530):_0x3a9050=await waitForServerWithDiscovery(0x7530),!_0x3a9050&&(console['error'](_0x1f8b9e(0x19f)),process[_0x1f8b9e(0x1e7)](0x1)),console[_0x1f8b9e(0x1b7)](_0x1f8b9e(0x1f4)+_0x3a9050[_0x1f8b9e(0x19c)]+':'+_0x3a9050['port']));const _0x39833c=_0x1f8b9e(0x1a4)+_0x3a9050[_0x1f8b9e(0x19c)]+':'+_0x3a9050[_0x1f8b9e(0x1fa)]+_0x1f8b9e(0x1cc)+encodeURIComponent(_0x5619a1)+_0x1f8b9e(0x1f6);try{const _0x1cb74e=await new Promise((_0x56f4e6,_0x28763b)=>{const _0x572d83=_0x1f8b9e,_0x5ee1a9=JSON['stringify']({}),_0x23071a=a0_0x232550['request'](_0x39833c,{'method':_0x572d83(0x1f2),'headers':{'Content-Type':_0x572d83(0x1ec),'Content-Length':Buffer[_0x572d83(0x1e6)](_0x5ee1a9)}},_0x583c9f=>{const _0x10b5be=_0x572d83;let _0x2136e3='';_0x583c9f['on'](_0x10b5be(0x1d5),_0x110a70=>_0x2136e3+=_0x110a70),_0x583c9f['on'](_0x10b5be(0x1ce),()=>{const _0x584cd9=_0x10b5be;try{_0x56f4e6(JSON[_0x584cd9(0x1eb)](_0x2136e3));}catch{_0x28763b(new Error(_0x584cd9(0x1ca)+_0x2136e3));}});});_0x23071a['on'](_0x572d83(0x1a5),_0x28763b),_0x23071a[_0x572d83(0x1ab)](0xea60,()=>{_0x23071a['destroy'](),_0x28763b(new Error('Request\x20timed\x20out'));}),_0x23071a['write'](_0x5ee1a9),_0x23071a['end']();});_0x1cb74e[_0x1f8b9e(0x1b1)]?console['log']('Schedule\x20\x22'+(_0x1cb74e[_0x1f8b9e(0x1bf)]||_0x5619a1)+_0x1f8b9e(0x1f8)):(console[_0x1f8b9e(0x1a5)](_0x1f8b9e(0x1e3)+_0x1cb74e[_0x1f8b9e(0x1a5)]),process[_0x1f8b9e(0x1e7)](0x1));}catch(_0x427faf){console[_0x1f8b9e(0x1a5)]('Failed\x20to\x20trigger\x20schedule:\x20'+_0x427faf[_0x1f8b9e(0x1dd)]),process[_0x1f8b9e(0x1e7)](0x1);}if(_0x450322){const _0x18e311=_0x1f8b9e(0x1a4)+_0x3a9050['host']+':'+_0x3a9050[_0x1f8b9e(0x1fa)]+'/api/system/idle-shutdown';try{const _0x524578=JSON[_0x1f8b9e(0x19a)]({'timeoutMinutes':0xa});await new Promise(_0x4ea547=>{const _0xc3a65b=_0x1f8b9e,_0x47864c=a0_0x232550['request'](_0x18e311,{'method':_0xc3a65b(0x1f2),'headers':{'Content-Type':'application/json','Content-Length':Buffer[_0xc3a65b(0x1e6)](_0x524578)}},_0x46afeb=>{const _0x4dc2e4=_0xc3a65b;_0x46afeb['on'](_0x4dc2e4(0x1d5),()=>{}),_0x46afeb['on'](_0x4dc2e4(0x1ce),_0x4ea547);});_0x47864c['on'](_0xc3a65b(0x1a5),_0x4ea547),_0x47864c[_0xc3a65b(0x1cb)](_0x524578),_0x47864c['end']();});}catch{}}process[_0x1f8b9e(0x1e7)](0x0);}};commands[command]?commands[command]()['catch'](_0xa992e8=>{const _0x505f5f=a0_0x56d54e;console[_0x505f5f(0x1a5)](_0x505f5f(0x1d2),_0xa992e8[_0x505f5f(0x1dd)]),process['exit'](0x1);}):(console['error']('Unknown\x20command:\x20'+command),console['error'](a0_0x56d54e(0x1af)),process['exit'](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x4d6857=a0_0xdbbe;(function(_0x5e81db,_0x2a4e4a){const _0x528bac=a0_0xdbbe,_0x3aff05=_0x5e81db();while(!![]){try{const _0x2df441=-parseInt(_0x528bac(0xbc))/0x1*(parseInt(_0x528bac(0xa6))/0x2)+-parseInt(_0x528bac(0xb7))/0x3*(parseInt(_0x528bac(0xb9))/0x4)+-parseInt(_0x528bac(0xc6))/0x5*(parseInt(_0x528bac(0xd1))/0x6)+parseInt(_0x528bac(0xc0))/0x7*(-parseInt(_0x528bac(0xb3))/0x8)+-parseInt(_0x528bac(0xac))/0x9+-parseInt(_0x528bac(0xc8))/0xa+parseInt(_0x528bac(0xab))/0xb;if(_0x2df441===_0x2a4e4a)break;else _0x3aff05['push'](_0x3aff05['shift']());}catch(_0x274eb3){_0x3aff05['push'](_0x3aff05['shift']());}}}(a0_0x1e81,0x718e4));function a0_0xdbbe(_0x59b024,_0x5e269a){_0x59b024=_0x59b024-0xa1;const _0x1e818f=a0_0x1e81();let _0xdbbeb=_0x1e818f[_0x59b024];return _0xdbbeb;}import{spawn}from'child_process';import a0_0x28e315 from'net';import a0_0x71db2a from'path';import{fileURLToPath}from'url';function a0_0x1e81(){const _0x496118=['373784ywyWWM','--host','\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','1FqYOmV','localhost','message','pipe','4907bbKXXI','...','destroy','stderr','connect','argv','10orkmZq','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','164170lrHPVo','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','Server\x20startup\x20timeout','--ui','log','💡\x20Troubleshooting:','data','ignore','2765478zcWUCy','🚀\x20Starting\x20Loxia\x20server...','✗\x20Server\x20is\x20not\x20running','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','timeout','stdout','1731242nMMMsO','kill','web','--port','join','32284879tFLVPd','4313898BsSFUY','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','slice','length','../src/interfaces/terminal/index.js','✓\x20Server\x20started\x20at\x20','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','1064sHrvug','toString','dirname','error','3ukebmz','now'];a0_0x1e81=function(){return _0x496118;};return a0_0x1e81();}const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x71db2a[a0_0x4d6857(0xb5)](__filename),projectRoot=a0_0x71db2a[a0_0x4d6857(0xb5)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x4d6857(0xbd),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x15e45e,_0x4983e1){return new Promise(_0x1de311=>{const _0x34e257=a0_0xdbbe,_0x23fd11=new a0_0x28e315['Socket']();_0x23fd11['setTimeout'](0x7d0),_0x23fd11['on'](_0x34e257(0xc4),()=>{_0x23fd11['destroy'](),_0x1de311(!![]);}),_0x23fd11['on'](_0x34e257(0xa4),()=>{const _0x10991c=_0x34e257;_0x23fd11[_0x10991c(0xc2)](),_0x1de311(![]);}),_0x23fd11['on'](_0x34e257(0xb6),()=>{const _0x1eee53=_0x34e257;_0x23fd11[_0x1eee53(0xc2)](),_0x1de311(![]);}),_0x23fd11[_0x34e257(0xc4)](_0x4983e1,_0x15e45e);});}async function startServer(_0x390491,_0x45d528){const _0x234c5a=a0_0x4d6857;return console[_0x234c5a(0xcd)](_0x234c5a(0xa1)),new Promise((_0xf33889,_0x5b9c53)=>{const _0x3bb4c5=_0x234c5a,_0x5f0df1=spawn('node',[a0_0x71db2a[_0x3bb4c5(0xaa)](projectRoot,'bin/cli.js'),_0x3bb4c5(0xcc),_0x3bb4c5(0xa8),_0x3bb4c5(0xba),_0x390491,_0x3bb4c5(0xa9),_0x45d528[_0x3bb4c5(0xb4)]()],{'detached':![],'stdio':[_0x3bb4c5(0xd0),_0x3bb4c5(0xbf),'pipe']});_0x5f0df1[_0x3bb4c5(0xa5)]['on'](_0x3bb4c5(0xcf),()=>{}),_0x5f0df1[_0x3bb4c5(0xc3)]['on'](_0x3bb4c5(0xcf),()=>{}),_0x5f0df1['on'](_0x3bb4c5(0xb6),_0x3dfd81=>{const _0x1867dd=_0x3bb4c5;console['error']('Failed\x20to\x20start\x20server:',_0x3dfd81[_0x1867dd(0xbe)]),_0x5b9c53(_0x3dfd81);});const _0x33e9f8=Date['now'](),_0x37e55f=setInterval(async()=>{const _0x40f880=_0x3bb4c5,_0xa9e15e=await isServerRunning(_0x390491,_0x45d528);if(_0xa9e15e)clearInterval(_0x37e55f),console['log'](_0x40f880(0xb1)+_0x390491+':'+_0x45d528),_0xf33889();else Date[_0x40f880(0xb8)]()-_0x33e9f8>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x37e55f),_0x5f0df1[_0x40f880(0xa7)](),_0x5b9c53(new Error(_0x40f880(0xcb))));},0x1f4);});}async function main(){const _0x3bbe71=a0_0x4d6857;try{console[_0x3bbe71(0xcd)](_0x3bbe71(0xc7)),console[_0x3bbe71(0xcd)](_0x3bbe71(0xc9)),console['log'](_0x3bbe71(0xc7)),console['log']('');const _0x342eff=process[_0x3bbe71(0xc5)][_0x3bbe71(0xae)](0x2);let _0x3172dd=DEFAULT_HOST,_0x2455d6=DEFAULT_PORT;for(let _0x5ba363=0x0;_0x5ba363<_0x342eff[_0x3bbe71(0xaf)];_0x5ba363++){if(_0x342eff[_0x5ba363]===_0x3bbe71(0xba)&&_0x342eff[_0x5ba363+0x1])_0x3172dd=_0x342eff[_0x5ba363+0x1],_0x5ba363++;else _0x342eff[_0x5ba363]==='--port'&&_0x342eff[_0x5ba363+0x1]&&(_0x2455d6=parseInt(_0x342eff[_0x5ba363+0x1],0xa),_0x5ba363++);}console['log']('🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20'+_0x3172dd+':'+_0x2455d6+_0x3bbe71(0xc1));const _0x5c7e75=await isServerRunning(_0x3172dd,_0x2455d6);!_0x5c7e75?(console[_0x3bbe71(0xcd)](_0x3bbe71(0xa2)),await startServer(_0x3172dd,_0x2455d6)):console[_0x3bbe71(0xcd)]('✓\x20Server\x20is\x20already\x20running\x20at\x20'+_0x3172dd+':'+_0x2455d6),console[_0x3bbe71(0xcd)](''),console[_0x3bbe71(0xcd)](_0x3bbe71(0xa3)),console[_0x3bbe71(0xcd)](''),await new Promise(_0x26c139=>setTimeout(_0x26c139,0x1f4)),process.env.LOXIA_HOST=_0x3172dd,process.env.LOXIA_PORT=_0x2455d6['toString'](),await import(_0x3bbe71(0xb0));}catch(_0x4bb265){console[_0x3bbe71(0xb6)](''),console[_0x3bbe71(0xb6)](_0x3bbe71(0xb2)),console[_0x3bbe71(0xb6)]('\x20\x20',_0x4bb265[_0x3bbe71(0xbe)]),console['error'](''),console['error'](_0x3bbe71(0xce)),console['error'](_0x3bbe71(0xca)),console['error'](_0x3bbe71(0xad)),console[_0x3bbe71(0xb6)](_0x3bbe71(0xbb)),console[_0x3bbe71(0xb6)](''),process['exit'](0x1);}}main();
|
package/bin/loxia-terminal.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x4187a4=a0_0x1b88;(function(_0x2e68c4,_0x3c5360){const _0x19a381=a0_0x1b88,_0x990d41=_0x2e68c4();while(!![]){try{const _0x48c466=parseInt(_0x19a381(0x8a))/0x1+parseInt(_0x19a381(0x89))/0x2*(parseInt(_0x19a381(0x8d))/0x3)+parseInt(_0x19a381(0x9c))/0x4+parseInt(_0x19a381(0x92))/0x5*(-parseInt(_0x19a381(0xa6))/0x6)+parseInt(_0x19a381(0xa3))/0x7*(parseInt(_0x19a381(0xa2))/0x8)+-parseInt(_0x19a381(0x87))/0x9+-parseInt(_0x19a381(0x91))/0xa;if(_0x48c466===_0x3c5360)break;else _0x990d41['push'](_0x990d41['shift']());}catch(_0x537a2d){_0x990d41['push'](_0x990d41['shift']());}}}(a0_0x16b0,0x68c0f));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x4187a4(0x9f)][a0_0x4187a4(0x88)](0x2),options={'host':a0_0x4187a4(0x9e),'port':0x1f90};for(let i=0x0;i<args[a0_0x4187a4(0x99)];i++){const arg=args[i];if(arg==='--host'||arg==='-h')options[a0_0x4187a4(0x9a)]=args[++i];else{if(arg===a0_0x4187a4(0x94)||arg==='-p')options[a0_0x4187a4(0xa1)]=parseInt(args[++i],0xa);else arg===a0_0x4187a4(0x98)&&(console['log'](a0_0x4187a4(0x9b)),process['exit'](0x0));}}function a0_0x16b0(){const _0x3e18f1=['exit','port','1612128tRgeer','7FUKfvC','\x20\x20npm\x20start','log','66cuItKM','error','1694457AQMHML','slice','10zhaZej','503536PhztlN','\x0aTerminal\x20UI\x20exited','\x20\x20npm\x20run\x20terminal-ui','356334VzrWTu','stdin','Press\x20Ctrl+C\x20to\x20exit\x0a','then','10248460GydnOK','66295nApwuf','Connecting\x20to:\x20','--port','Starting\x20Loxia\x20Terminal\x20UI...','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','isTTY','--help','length','host','\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','1956388CEAYAg','\x20\x20-\x20Some\x20CI/CD\x20environments','localhost','argv'];a0_0x16b0=function(){return _0x3e18f1;};return a0_0x16b0();}function a0_0x1b88(_0x27a605,_0x6cdede){_0x27a605=_0x27a605-0x86;const _0x16b0b6=a0_0x16b0();let _0x1b88a2=_0x16b0b6[_0x27a605];return _0x1b88a2;}process.env.LOXIA_HOST&&(options[a0_0x4187a4(0x9a)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x4187a4(0xa1)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x4187a4(0x8e)][a0_0x4187a4(0x97)]&&(console['error']('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x4187a4(0x86)](''),console[a0_0x4187a4(0x86)]('The\x20terminal\x20UI\x20cannot\x20run\x20in:'),console[a0_0x4187a4(0x86)](a0_0x4187a4(0x96)),console[a0_0x4187a4(0x86)]('\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)'),console['error']('\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)'),console[a0_0x4187a4(0x86)](a0_0x4187a4(0x9d)),console['error'](''),console[a0_0x4187a4(0x86)]('Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:'),console['error'](a0_0x4187a4(0x8c)),console[a0_0x4187a4(0x86)](''),console[a0_0x4187a4(0x86)]('Or\x20use\x20the\x20web\x20UI\x20instead:'),console[a0_0x4187a4(0x86)](a0_0x4187a4(0xa4)),process[a0_0x4187a4(0xa0)](0x1));console[a0_0x4187a4(0xa5)](a0_0x4187a4(0x95)),console[a0_0x4187a4(0xa5)](a0_0x4187a4(0x93)+options[a0_0x4187a4(0x9a)]+':'+options['port']),console['log'](a0_0x4187a4(0x8f));const instance=startTerminalUI(options);instance['waitUntilExit']()[a0_0x4187a4(0x90)](()=>{const _0x65cb35=a0_0x4187a4;console[_0x65cb35(0xa5)](_0x65cb35(0x8b)),process[_0x65cb35(0xa0)](0x0);})['catch'](_0x2f7fa4=>{const _0x19e8e2=a0_0x4187a4;console['error']('\x0aTerminal\x20UI\x20error:',_0x2f7fa4),process[_0x19e8e2(0xa0)](0x1);});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x1ebaf8=a0_0x2ccd;(function(_0x1763da,_0x1d1605){const _0x116650=a0_0x2ccd,_0x216bb0=_0x1763da();while(!![]){try{const _0x2e2db1=parseInt(_0x116650(0x97))/0x1+-parseInt(_0x116650(0xb7))/0x2+parseInt(_0x116650(0x94))/0x3+-parseInt(_0x116650(0xb8))/0x4+-parseInt(_0x116650(0xa4))/0x5+parseInt(_0x116650(0xaf))/0x6*(parseInt(_0x116650(0xa2))/0x7)+-parseInt(_0x116650(0xbd))/0x8*(parseInt(_0x116650(0xb1))/0x9);if(_0x2e2db1===_0x1d1605)break;else _0x216bb0['push'](_0x216bb0['shift']());}catch(_0x3a7b9f){_0x216bb0['push'](_0x216bb0['shift']());}}}(a0_0x562e,0x7ab89));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x23bfde 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_0x562e(){const _0x5a8406=['toString','78RPxZNc','includes','6583365Capwrm','✅\x20Server\x20is\x20ready!','error','Failed\x20to\x20start\x20server:','loxia-terminal.js','index.js','1616314ecohOn','1277592atJyWu','🚀\x20Starting\x20Loxia\x20server...','Failed\x20to\x20start\x20Terminal\x20UI:','stdout','log','8XcuWzd','ignore','http://localhost:','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','node','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','inherit','destroy','Timeout','2455212SfbKUx','ExperimentalWarning','╚════════════════════════════════════════════════╝','851678LvtPNP','Server\x20returned\x20','trim','get','/health','Server\x20exited\x20with\x20code\x20','🖥️\x20\x20Starting\x20Terminal\x20UI...','kill','statusCode','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','SIGKILL','527961FouhAH','killed','1444380nahmGK','SIGINT','message','exit','[SERVER\x20ERROR]\x20','pipe','SIGTERM','src','setTimeout','stderr'];a0_0x562e=function(){return _0x5a8406;};return a0_0x562e();}async function checkServerReady(_0x2f2a58=0xa,_0x1dabb9=0x1f4){const _0x3a9ddd=a0_0x2ccd;for(let _0x2c2d65=0x0;_0x2c2d65<_0x2f2a58;_0x2c2d65++){try{return await new Promise((_0x33a9a3,_0x5694c1)=>{const _0x3388fe=a0_0x2ccd,_0xedbbf3=a0_0x23bfde[_0x3388fe(0x9a)](_0x3388fe(0xbf)+SERVER_PORT+_0x3388fe(0x9b),_0x4d5c44=>{const _0x3180f5=_0x3388fe;_0x4d5c44[_0x3180f5(0x9f)]===0xc8?_0x33a9a3():_0x5694c1(new Error(_0x3180f5(0x98)+_0x4d5c44[_0x3180f5(0x9f)]));});_0xedbbf3['on'](_0x3388fe(0xb3),_0x5694c1),_0xedbbf3[_0x3388fe(0xac)](0x3e8,()=>{const _0x42a591=_0x3388fe;_0xedbbf3[_0x42a591(0x92)](),_0x5694c1(new Error(_0x42a591(0x93)));});}),console['log'](_0x3a9ddd(0xb2)),!![];}catch(_0x2591b2){_0x2c2d65<_0x2f2a58-0x1&&await new Promise(_0x44153e=>setTimeout(_0x44153e,_0x1dabb9));}}return console[_0x3a9ddd(0xbc)](_0x3a9ddd(0x90)),![];}async function startServer(){return new Promise(_0x188380=>{const _0x1c0e00=a0_0x2ccd;console[_0x1c0e00(0xbc)](_0x1c0e00(0xb9));const _0x4ed7be=join(rootDir,_0x1c0e00(0xab),_0x1c0e00(0xb6));serverProcess=spawn(_0x1c0e00(0xc1),[_0x4ed7be],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x1c0e00(0xbe),'pipe',_0x1c0e00(0xa9)],'detached':![]}),serverProcess[_0x1c0e00(0xbb)]['on']('data',_0x23a99d=>{const _0x2e5cc0=_0x1c0e00,_0x29ff32=_0x23a99d[_0x2e5cc0(0xae)]()[_0x2e5cc0(0x99)]();_0x29ff32&&console[_0x2e5cc0(0xbc)]('[SERVER]\x20'+_0x29ff32);}),serverProcess[_0x1c0e00(0xad)]['on']('data',_0x1337a4=>{const _0x5074c3=_0x1c0e00,_0x397870=_0x1337a4[_0x5074c3(0xae)]()['trim']();_0x397870&&!_0x397870[_0x5074c3(0xb0)](_0x5074c3(0x95))&&console[_0x5074c3(0xb3)](_0x5074c3(0xa8)+_0x397870);}),serverProcess['on'](_0x1c0e00(0xb3),_0x37fcbd=>{const _0xc943d=_0x1c0e00;console[_0xc943d(0xb3)](_0xc943d(0xb4),_0x37fcbd['message']),process[_0xc943d(0xa7)](0x1);}),serverProcess['on']('exit',(_0x107f81,_0x8ab401)=>{const _0x19fd79=_0x1c0e00;_0x107f81!==null&&_0x107f81!==0x0&&(console[_0x19fd79(0xb3)](_0x19fd79(0x9c)+_0x107f81),process[_0x19fd79(0xa7)](_0x107f81));}),setTimeout(_0x188380,STARTUP_WAIT);});}function a0_0x2ccd(_0x5b4b06,_0x1d9eff){_0x5b4b06=_0x5b4b06-0x90;const _0x562e77=a0_0x562e();let _0x2ccd3b=_0x562e77[_0x5b4b06];return _0x2ccd3b;}async function startTerminalUI(){const _0x12e872=a0_0x2ccd;console[_0x12e872(0xbc)](_0x12e872(0x9d)),console[_0x12e872(0xbc)]('');const _0xbadbac=join(rootDir,'bin',_0x12e872(0xb5)),_0x187faa=spawn(_0x12e872(0xc1),[_0xbadbac],{'cwd':rootDir,'env':{...process.env},'stdio':_0x12e872(0x91)});return _0x187faa['on'](_0x12e872(0xb3),_0x171a98=>{const _0x4a462c=_0x12e872;console[_0x4a462c(0xb3)](_0x4a462c(0xba),_0x171a98[_0x4a462c(0xa6)]),cleanup(),process[_0x4a462c(0xa7)](0x1);}),_0x187faa['on']('exit',_0xee6c53=>{const _0x8527c=_0x12e872;console[_0x8527c(0xbc)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process[_0x8527c(0xa7)](_0xee6c53||0x0);}),_0x187faa;}function cleanup(){const _0x4c331c=a0_0x2ccd;serverProcess&&!serverProcess[_0x4c331c(0xa3)]&&(console[_0x4c331c(0xbc)]('🛑\x20Stopping\x20server...'),serverProcess[_0x4c331c(0x9e)](_0x4c331c(0xaa)),setTimeout(()=>{const _0x4c63d7=_0x4c331c;!serverProcess[_0x4c63d7(0xa3)]&&serverProcess[_0x4c63d7(0x9e)](_0x4c63d7(0xa1));},0x1388));}process['on'](a0_0x1ebaf8(0xa5),()=>{const _0x36eeb4=a0_0x1ebaf8;console['log'](_0x36eeb4(0xc0)),cleanup(),process[_0x36eeb4(0xa7)](0x0);}),process['on']('SIGTERM',()=>{const _0x849f54=a0_0x1ebaf8;console[_0x849f54(0xbc)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process[_0x849f54(0xa7)](0x0);}),process['on'](a0_0x1ebaf8(0xa7),()=>{cleanup();});async function main(){const _0x3bf33d=a0_0x1ebaf8;console[_0x3bf33d(0xbc)]('╔════════════════════════════════════════════════╗'),console['log'](_0x3bf33d(0xa0)),console[_0x3bf33d(0xbc)](_0x3bf33d(0x96)),console['log']('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x3f8453){console['error']('Error\x20during\x20startup:',_0x3f8453['message']),cleanup(),process[_0x3bf33d(0xa7)](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x127e25=a0_0x503e;(function(_0x5becd4,_0x225464){const _0x2e6f1d=a0_0x503e,_0x298b38=_0x5becd4();while(!![]){try{const _0xefe860=-parseInt(_0x2e6f1d(0x172))/0x1*(parseInt(_0x2e6f1d(0x157))/0x2)+parseInt(_0x2e6f1d(0x174))/0x3+parseInt(_0x2e6f1d(0x175))/0x4+-parseInt(_0x2e6f1d(0x188))/0x5+-parseInt(_0x2e6f1d(0x164))/0x6*(parseInt(_0x2e6f1d(0x182))/0x7)+-parseInt(_0x2e6f1d(0x187))/0x8+-parseInt(_0x2e6f1d(0x173))/0x9*(-parseInt(_0x2e6f1d(0x183))/0xa);if(_0xefe860===_0x225464)break;else _0x298b38['push'](_0x298b38['shift']());}catch(_0x2988d7){_0x298b38['push'](_0x298b38['shift']());}}}(a0_0x24a0,0x92b4d));import{exec}from'child_process';import{promisify}from'util';function a0_0x503e(_0x23f27d,_0x57ede7){_0x23f27d=_0x23f27d-0x152;const _0x24a061=a0_0x24a0();let _0x503e48=_0x24a061[_0x23f27d];return _0x503e48;}import a0_0x171e4d from'https';import a0_0x285d42 from'http';import a0_0x300995 from'fs';import a0_0x20496a 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_0x20496a['dirname'](__filename),SCANNER_DIR=a0_0x20496a[a0_0x127e25(0x17b)](__dirname,'..','node_modules',a0_0x127e25(0x166)),SEMGREP_VERSION=a0_0x127e25(0x197);console[a0_0x127e25(0x154)](a0_0x127e25(0x15b)),console['log'](a0_0x127e25(0x15e)),console[a0_0x127e25(0x154)](a0_0x127e25(0x177)+process[a0_0x127e25(0x18f)]+'\x20('+process[a0_0x127e25(0x195)]+')'),console[a0_0x127e25(0x154)](a0_0x127e25(0x161));async function installScanners(){const _0xc27a6=a0_0x127e25;await a0_0x300995[_0xc27a6(0x192)][_0xc27a6(0x16f)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0xc27a6(0x15c)),console[_0xc27a6(0x154)](_0xc27a6(0x160)),console['log'](_0xc27a6(0x161));}async function checkESLintSecurity(){const _0x5bae0c=a0_0x127e25;console[_0x5bae0c(0x154)]('📦\x20Checking\x20ESLint\x20Security\x20Plugin...');try{await import(_0x5bae0c(0x170)),console[_0x5bae0c(0x154)](_0x5bae0c(0x191));}catch(_0x1f9e4b){console[_0x5bae0c(0x154)](_0x5bae0c(0x165)),console['log'](_0x5bae0c(0x18a));}}async function installSemgrep(){const _0x3266da=a0_0x127e25;console[_0x3266da(0x154)]('🔍\x20Installing\x20Semgrep...');const _0x30766f=process['platform'],_0xbbc6a3=process[_0x3266da(0x195)];try{const _0x17b904=await execAsync(_0x3266da(0x18d),{'timeout':0x1388});console['log']('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x17b904['stdout'][_0x3266da(0x184)]()),console[_0x3266da(0x154)](_0x3266da(0x18e));return;}catch(_0xc24f5d){console['log'](_0x3266da(0x169));}const _0xd3255b=getSemgrepBinaryInfo(_0x30766f,_0xbbc6a3);if(!_0xd3255b){console['log'](_0x3266da(0x15f)+_0x30766f+'-'+_0xbbc6a3),console[_0x3266da(0x154)](_0x3266da(0x156));return;}try{const _0x2513f4=a0_0x20496a[_0x3266da(0x17b)](SCANNER_DIR,_0x3266da(0x158));console[_0x3266da(0x154)](_0x3266da(0x159)+_0xd3255b['url']+'...'),await downloadFile(_0xd3255b[_0x3266da(0x16b)],_0x2513f4),await a0_0x300995[_0x3266da(0x192)]['chmod'](_0x2513f4,0x1ed),console[_0x3266da(0x154)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x3266da(0x154)](_0x3266da(0x163)+_0x2513f4+'\x0a'),console[_0x3266da(0x154)](_0x3266da(0x17d)),console[_0x3266da(0x154)](_0x3266da(0x167));}catch(_0x31b7cc){console[_0x3266da(0x154)](_0x3266da(0x18b)+_0x31b7cc[_0x3266da(0x15a)]),console[_0x3266da(0x154)](_0x3266da(0x186));}}function getSemgrepBinaryInfo(_0x31110e,_0xb43f2a){return null;}async function installPythonScanners(){const _0xb8f9b4=a0_0x127e25;console[_0xb8f9b4(0x154)]('🐍\x20Checking\x20Python\x20scanners...');let _0x25ebe2=null;try{await execAsync('python3\x20--version',{'timeout':0x1388}),_0x25ebe2='python3';}catch(_0x3bf54a){try{await execAsync(_0xb8f9b4(0x153),{'timeout':0x1388}),_0x25ebe2=_0xb8f9b4(0x181);}catch(_0x588875){console[_0xb8f9b4(0x154)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0xb8f9b4(0x154)]('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0xb8f9b4(0x154)]('\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a');return;}}console[_0xb8f9b4(0x154)](_0xb8f9b4(0x190)+_0x25ebe2),await installViaPip(_0xb8f9b4(0x158),_0x25ebe2),await installViaPip('bandit',_0x25ebe2),await installViaPip('pip-audit',_0x25ebe2),await installViaPip(_0xb8f9b4(0x193),_0x25ebe2),await installViaPip(_0xb8f9b4(0x185),_0x25ebe2),console[_0xb8f9b4(0x154)]('');}async function isHomebrewPython(_0x592446){const _0x21cf6a=a0_0x127e25;try{const {stdout:_0x5ee1df}=await execAsync(_0x592446+'\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22',{'timeout':0x1388});return _0x5ee1df[_0x21cf6a(0x176)](_0x21cf6a(0x18c))||_0x5ee1df[_0x21cf6a(0x176)]('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0x94ead3,_0x5749a5){const _0x8365af=a0_0x127e25;try{const _0x39523b=await execAsync(_0x5749a5+_0x8365af(0x16a)+_0x94ead3,{'timeout':0x1388});return console[_0x8365af(0x154)]('\x20\x20\x20✅\x20'+_0x94ead3+_0x8365af(0x16d)),!![];}catch(_0x3ea50e){console[_0x8365af(0x154)]('\x20\x20\x20Installing\x20'+_0x94ead3+_0x8365af(0x171));try{const _0x2dadcc=await isHomebrewPython(_0x5749a5),_0x6ff4d2=_0x2dadcc?'':_0x8365af(0x168),_0x1fe1db=(_0x5749a5+_0x8365af(0x15d)+_0x6ff4d2+'\x20'+_0x94ead3)[_0x8365af(0x189)](/\s+/g,'\x20')[_0x8365af(0x184)]();return await execAsync(_0x1fe1db,{'timeout':0xea60}),console[_0x8365af(0x154)](_0x8365af(0x17f)+_0x94ead3+_0x8365af(0x194)),!![];}catch(_0x1d49cb){return console[_0x8365af(0x154)]('\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20'+_0x94ead3+':\x20'+_0x1d49cb[_0x8365af(0x15a)]),console[_0x8365af(0x154)](_0x8365af(0x196)+_0x94ead3),![];}}}async function downloadFile(_0x4135f8,_0x66913){return new Promise((_0x33cccb,_0x101318)=>{const _0x47249b=a0_0x503e,_0x11dafb=_0x4135f8['startsWith'](_0x47249b(0x17c))?a0_0x171e4d:a0_0x285d42;_0x11dafb[_0x47249b(0x152)](_0x4135f8,_0x1f4389=>{const _0x61f57b=_0x47249b;if(_0x1f4389[_0x61f57b(0x180)]===0x12e||_0x1f4389[_0x61f57b(0x180)]===0x12d){downloadFile(_0x1f4389['headers']['location'],_0x66913)['then'](_0x33cccb)[_0x61f57b(0x179)](_0x101318);return;}if(_0x1f4389[_0x61f57b(0x180)]!==0xc8){_0x101318(new Error(_0x61f57b(0x16e)+_0x1f4389[_0x61f57b(0x180)]));return;}const _0x421857=createWriteStream(_0x66913);_0x1f4389[_0x61f57b(0x155)](_0x421857),_0x421857['on'](_0x61f57b(0x178),()=>{_0x421857['close'](),_0x33cccb();}),_0x421857['on'](_0x61f57b(0x162),_0x220bff=>{const _0xbb2026=_0x61f57b;a0_0x300995[_0xbb2026(0x17a)](_0x66913,()=>{}),_0x101318(_0x220bff);});})['on'](_0x47249b(0x162),_0x101318);});}function a0_0x24a0(){const _0x2f2b09=['Failed\x20to\x20download:\x20HTTP\x20','mkdir','eslint-plugin-security','...','81139GOenAf','20731437WLnCPE','145374mbKJfm','1267984geroYj','includes','\x20\x20Platform:\x20','finish','catch','unlink','join','https','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x0aYou\x20can\x20manually\x20install\x20scanners:','\x20\x20\x20✅\x20','statusCode','python','21UHszgU','10jAPgZK','trim','yamllint','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','7858552FmFWFw','3149790wgQIpL','replace','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','/opt/homebrew','semgrep\x20--version','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','platform','\x20\x20\x20✅\x20Python\x20found:\x20','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','promises','checkov','\x20installed\x20successfully','arch','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','v1.55.0','get','python\x20--version','log','pipe','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','8KqETyV','semgrep','\x20\x20\x20Downloading\x20from\x20','message','═══════════════════════════════════════════════════════════','\x0a═══════════════════════════════════════════════════════════','\x20-m\x20pip\x20install\x20','\x20\x20Installing\x20Security\x20Scanners','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','\x20\x20Installation\x20Complete','═══════════════════════════════════════════════════════════\x0a','error','\x20\x20\x20Location:\x20','262410GAtkvi','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','.scanners','\x20\x20\x20pip\x20install\x20semgrep\x0a','--user','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','\x20-m\x20pip\x20show\x20','url','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','\x20already\x20installed'];a0_0x24a0=function(){return _0x2f2b09;};return a0_0x24a0();}installScanners()[a0_0x127e25(0x179)](_0x2b553a=>{const _0x2d42ac=a0_0x127e25;console[_0x2d42ac(0x162)]('❌\x20Installation\x20failed:',_0x2b553a[_0x2d42ac(0x15a)]),console['error'](_0x2d42ac(0x17e)),console[_0x2d42ac(0x162)](_0x2d42ac(0x16c)),console[_0x2d42ac(0x162)]('\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit'),process['exit'](0x0);});
|
package/scripts/watchdog.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x3557b3=a0_0x11d2;(function(_0xb3149a,_0x96681f){const _0x14352e=a0_0x11d2,_0x40d9bc=_0xb3149a();while(!![]){try{const _0x43e2ca=-parseInt(_0x14352e(0x108))/0x1*(-parseInt(_0x14352e(0x10d))/0x2)+-parseInt(_0x14352e(0xfb))/0x3*(-parseInt(_0x14352e(0xf3))/0x4)+-parseInt(_0x14352e(0x10f))/0x5*(-parseInt(_0x14352e(0x102))/0x6)+parseInt(_0x14352e(0x101))/0x7*(-parseInt(_0x14352e(0x107))/0x8)+parseInt(_0x14352e(0xf5))/0x9+-parseInt(_0x14352e(0xf6))/0xa+parseInt(_0x14352e(0xe3))/0xb;if(_0x43e2ca===_0x96681f)break;else _0x40d9bc['push'](_0x40d9bc['shift']());}catch(_0x17f33f){_0x40d9bc['push'](_0x40d9bc['shift']());}}}(a0_0x300a,0x3380a));const {spawn,execSync}=require(a0_0x3557b3(0xf7)),path=require(a0_0x3557b3(0xed)),fs=require('fs'),logFile=path['join'](__dirname,a0_0x3557b3(0xf9));function log(_0x4ae370){const _0xdbe284=a0_0x3557b3,_0x520333=new Date()[_0xdbe284(0xfc)](),_0x4eee04='['+_0x520333+']\x20'+_0x4ae370+'\x0a';console[_0xdbe284(0x100)](_0x4ae370);try{fs[_0xdbe284(0xeb)](logFile,_0x4eee04);}catch(_0x305247){}}log(a0_0x3557b3(0x10a));function parseArgs(){const _0x55f15e=a0_0x3557b3,_0x125f41=process[_0x55f15e(0xf0)]['slice'](0x2),_0x46b4f5={'delay':0x1388,'command':'loxia\x20web','pid':null};for(let _0x37b696=0x0;_0x37b696<_0x125f41[_0x55f15e(0xe4)];_0x37b696++){switch(_0x125f41[_0x37b696]){case _0x55f15e(0xf1):_0x46b4f5[_0x55f15e(0x106)]=parseInt(_0x125f41[++_0x37b696],0xa)||0x1388;break;case _0x55f15e(0xef):_0x46b4f5['command']=_0x125f41[++_0x37b696]||'loxia\x20web';break;case _0x55f15e(0xff):_0x46b4f5['pid']=parseInt(_0x125f41[++_0x37b696],0xa)||null;break;}}return _0x46b4f5;}function isProcessRunning(_0x582686){const _0xa03074=a0_0x3557b3;try{return process[_0xa03074(0x10c)](_0x582686,0x0),!![];}catch(_0x227e26){return![];}}async function waitForParentExit(_0x283a85,_0x5aea27=0x7530){const _0x1eed69=a0_0x3557b3;if(!_0x283a85)return;const _0x166711=Date['now']();while(isProcessRunning(_0x283a85)){if(Date['now']()-_0x166711>_0x5aea27){log(_0x1eed69(0x10e)+_0x283a85+_0x1eed69(0x105)+_0x5aea27+_0x1eed69(0xe6));return;}await new Promise(_0x16ee6a=>setTimeout(_0x16ee6a,0x1f4));}log(_0x1eed69(0x10e)+_0x283a85+_0x1eed69(0x10b));}async function main(){const _0x4a7315=a0_0x3557b3,_0x1d4970=parseArgs();log(_0x4a7315(0x109),{'delay':_0x1d4970[_0x4a7315(0x106)],'command':_0x1d4970[_0x4a7315(0xe7)],'pid':_0x1d4970[_0x4a7315(0xfe)]});_0x1d4970[_0x4a7315(0xfe)]&&(log(_0x4a7315(0xfd)+_0x1d4970[_0x4a7315(0xfe)]+'\x20to\x20exit...'),await waitForParentExit(_0x1d4970[_0x4a7315(0xfe)]));log(_0x4a7315(0xec)+_0x1d4970['delay']+_0x4a7315(0xf4)),await new Promise(_0x265fdf=>setTimeout(_0x265fdf,_0x1d4970[_0x4a7315(0x106)]));const _0x138daa=_0x1d4970[_0x4a7315(0xe7)][_0x4a7315(0xfa)]('\x20'),_0x20fa75=_0x138daa[0x0],_0x2a7ac7=_0x138daa['slice'](0x1);log(_0x4a7315(0xf2)+_0x20fa75+'\x20'+_0x2a7ac7[_0x4a7315(0xe5)]('\x20'));const _0x5a434c=process['platform']===_0x4a7315(0xf8),_0x79ec00=spawn(_0x20fa75,_0x2a7ac7,{'detached':!![],'stdio':'ignore','shell':!![],'windowsHide':![]});_0x79ec00[_0x4a7315(0x104)](),log(_0x4a7315(0x103)+_0x79ec00[_0x4a7315(0xfe)]),log(_0x4a7315(0xe9)),setTimeout(()=>process[_0x4a7315(0xea)](0x0),0x3e8);}main()[a0_0x3557b3(0xe8)](_0x2ff321=>{const _0x5dfcfe=a0_0x3557b3;log(_0x5dfcfe(0xee)+_0x2ff321['message']),process[_0x5dfcfe(0xea)](0x1);});function a0_0x11d2(_0x36b043,_0x43c411){_0x36b043=_0x36b043-0xe3;const _0x300ac9=a0_0x300a();let _0x11d27a=_0x300ac9[_0x36b043];return _0x11d27a;}function a0_0x300a(){const _0x2f847c=['unref','\x20still\x20running\x20after\x20','delay','8QSOhMh','71038ZEdpuz','[Watchdog]\x20Started\x20with\x20options:','[Watchdog]\x20Script\x20loaded','\x20has\x20terminated','kill','8rifNwO','[Watchdog]\x20Parent\x20process\x20','5wtQCHn','145618AtxSOI','length','join','ms,\x20proceeding\x20anyway','command','catch','[Watchdog]\x20Watchdog\x20exiting...','exit','appendFileSync','[Watchdog]\x20Waiting\x20','path','[Watchdog]\x20Error:\x20','--command','argv','--delay','[Watchdog]\x20Executing:\x20','103636sNFsHY','ms\x20before\x20restart...','1147095TiSdMW','1995900rirNcl','child_process','win32','watchdog.log','split','3PCeMeB','toISOString','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','pid','--pid','log','1103389HwEWae','704502YqnRjG','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'];a0_0x300a=function(){return _0x2f847c;};return a0_0x300a();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x2a67d9=a0_0x5298;function a0_0x521c(){const _0x11459a=['z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','q0furuDpuLK','C3r5BgvSAw50','nJiWAefNrLvs','zM9YBwf0ug9ZDentu0vYCM9Y','zg91yMXL','Cg9ZDgnZCW','qKvtvf9quKfdveLdrq','ChvZAa','Cg9ZDgnZCY1Zy3nZ','mZC5nZq5EhnoC0nc','CMv0DxjU','Bg9Nz2vY','B3b0Aw1PEMu','Cg9ZDgnZC0XLC3m','BM8Tzw1WDhK','q3nZu3LUDgf4rxjYB3i','ChjVy2vZCW','y29SDw1U','Cg9ZDgnZC1nJC3m','BgvUz3rO','zw5KC1DPDgG','BgLUDfn0EwXLCW','ntmWnZaYngH3qM9LBW','D2fYBMLUz3m','CNvSzq','nty0otnctvPfrwq','mtr3BuHqA2i','zwfJAa','zxjYB3i','C291CMnL','CgvYzM9YBwfUy2u','lMnZCW','u0vwrvjjvfK','ndm4mZq2ANPTyxfK','Cg9ZDgnZCY1SzxnZ','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','mZm0mdq1twn5zMjs','C3LUDgf4','BMCTzgvLCa','BgvZCW','D2fYBG','lNnJC3m','zgvIDwC','BgLUzq','zgvMyxvSDa','mta4y0LWENLo','u1rzteu','zMLSDgvY','mJe5odm2oezWsMf0yG','C3vWCg9YDhnbDxrVrML4','DxnL','zM9YD2fYza','v0fstKLorW','u1Lovefy','C2nZCW','q1ntigfUywX5C2LZigzHAwXLza','lMXLC3m','zM9Y','rvjst1i','nJu4nZu4u3DVzgLM','CMvZDwX0CW','Dw5RBM93BG','Aw5JBhvKzxm','y29UDgvUDa'];a0_0x521c=function(){return _0x11459a;};return a0_0x521c();}function a0_0x5298(_0x178bdd,_0x580528){_0x178bdd=_0x178bdd-0x1a5;const _0x521c2b=a0_0x521c();let _0x52985c=_0x521c2b[_0x178bdd];if(a0_0x5298['IhwTWp']===undefined){var _0x6e93b5=function(_0x25dc03){const _0xc9712e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4f8dfd='',_0x4680b2='';for(let _0x37ee33=0x0,_0x3a5e32,_0x2d76cb,_0x468596=0x0;_0x2d76cb=_0x25dc03['charAt'](_0x468596++);~_0x2d76cb&&(_0x3a5e32=_0x37ee33%0x4?_0x3a5e32*0x40+_0x2d76cb:_0x2d76cb,_0x37ee33++%0x4)?_0x4f8dfd+=String['fromCharCode'](0xff&_0x3a5e32>>(-0x2*_0x37ee33&0x6)):0x0){_0x2d76cb=_0xc9712e['indexOf'](_0x2d76cb);}for(let _0x5d90fb=0x0,_0x1b8011=_0x4f8dfd['length'];_0x5d90fb<_0x1b8011;_0x5d90fb++){_0x4680b2+='%'+('00'+_0x4f8dfd['charCodeAt'](_0x5d90fb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4680b2);};a0_0x5298['rsOpbk']=_0x6e93b5,a0_0x5298['NZgSGN']={},a0_0x5298['IhwTWp']=!![];}const _0x1a98f0=_0x521c2b[0x0],_0x5c946c=_0x178bdd+_0x1a98f0,_0xa775ca=a0_0x5298['NZgSGN'][_0x5c946c];return!_0xa775ca?(_0x52985c=a0_0x5298['rsOpbk'](_0x52985c),a0_0x5298['NZgSGN'][_0x5c946c]=_0x52985c):_0x52985c=_0xa775ca,_0x52985c;}(function(_0x3ad8ef,_0x1668a6){const _0xe02e7d=a0_0x5298,_0x1afe62=_0x3ad8ef();while(!![]){try{const _0x3a31c6=parseInt(_0xe02e7d(0x1da))/0x1+parseInt(_0xe02e7d(0x1b1))/0x2+parseInt(_0xe02e7d(0x1cb))/0x3+-parseInt(_0xe02e7d(0x1c0))/0x4+parseInt(_0xe02e7d(0x1b4))/0x5*(-parseInt(_0xe02e7d(0x1bd))/0x6)+parseInt(_0xe02e7d(0x1aa))/0x7*(parseInt(_0xe02e7d(0x1a6))/0x8)+parseInt(_0xe02e7d(0x1a9))/0x9*(parseInt(_0xe02e7d(0x1d3))/0xa);if(_0x3a31c6===_0x1668a6)break;else _0x1afe62['push'](_0x1afe62['shift']());}catch(_0x373022){_0x1afe62['push'](_0x1afe62['shift']());}}}(a0_0x521c,0xbefcc));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x4f8dfd=null){const _0x2019bc=a0_0x5298;this[_0x2019bc(0x1dc)]=_0x4f8dfd,this[_0x2019bc(0x1d2)]=null,this[_0x2019bc(0x1d6)]=null,this[_0x2019bc(0x1e3)]=null,this[_0x2019bc(0x1de)]=null;}async['analyze'](_0x4680b2,_0x37ee33,_0x3a5e32={}){const _0x8bc5f=a0_0x5298;try{const _0x2d76cb=[],_0x468596=this['detectLanguage'](_0x4680b2),_0x5d90fb=await this['checkSyntax'](_0x4680b2,_0x37ee33,_0x468596);_0x2d76cb[_0x8bc5f(0x1d8)](..._0x5d90fb);if(_0x5d90fb[_0x8bc5f(0x1e4)]===0x0){const _0x1b8011=await this[_0x8bc5f(0x1a5)](_0x4680b2,_0x37ee33,_0x468596);_0x2d76cb['push'](..._0x1b8011);}return this['logger']?.[_0x8bc5f(0x1ba)]('CSS\x20analysis\x20completed',{'file':_0x4680b2,'language':_0x468596,'totalDiagnostics':_0x2d76cb['length'],'errors':_0x2d76cb['filter'](_0x897d32=>_0x897d32['severity']===STATIC_ANALYSIS[_0x8bc5f(0x1b0)]['ERROR'])[_0x8bc5f(0x1e4)],'warnings':_0x2d76cb[_0x8bc5f(0x1bf)](_0x3258b4=>_0x3258b4['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])[_0x8bc5f(0x1e4)]}),_0x2d76cb;}catch(_0x16cbb9){return this[_0x8bc5f(0x1dc)]?.[_0x8bc5f(0x1ac)](_0x8bc5f(0x1c7),{'file':_0x4680b2,'error':_0x16cbb9['message']}),[];}}async['checkSyntax'](_0x14f2cd,_0x2afccc,_0x2f1c5b){const _0x186d84=a0_0x5298,_0x3034e9=[];try{if(!this['postcss']){const _0x4d378d=await import(_0x186d84(0x1d6));this['postcss']=_0x4d378d[_0x186d84(0x1bc)];}let _0x3cdafa=null;if(_0x2f1c5b==='scss'){if(!this['postcssScss']){const _0x1c05b7=await import(_0x186d84(0x1d9));this[_0x186d84(0x1e3)]=_0x1c05b7[_0x186d84(0x1bc)];}_0x3cdafa=this[_0x186d84(0x1e3)];}else{if(_0x2f1c5b===_0x186d84(0x1b7)){if(!this[_0x186d84(0x1de)]){const _0x1ad25f=await import(_0x186d84(0x1b2));this[_0x186d84(0x1de)]=_0x1ad25f[_0x186d84(0x1bc)];}_0x3cdafa=this['postcssLess'];}}const _0x29c33f=this['postcss']()[_0x186d84(0x1e1)](_0x2afccc,{'from':_0x14f2cd,'syntax':_0x3cdafa}),_0x3f5675=_0x29c33f['root'];this['logger']?.[_0x186d84(0x1ba)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x14f2cd});}catch(_0x1b2faf){const _0x3d48c5=this[_0x186d84(0x1d4)](_0x1b2faf,_0x14f2cd);_0x3d48c5&&_0x3034e9[_0x186d84(0x1d8)](_0x3d48c5);}return _0x3034e9;}async[a0_0x2a67d9(0x1a5)](_0x56f3d3,_0x1f573d,_0x5de882){const _0x469f9d=a0_0x2a67d9,_0x4679a9=[];try{if(!this['stylelint']){const _0x7c54fa=await import('stylelint');this[_0x469f9d(0x1d2)]=_0x7c54fa[_0x469f9d(0x1bc)];}const _0x114fbb={'extends':['stylelint-config-standard'],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':['/^custom-/',_0x469f9d(0x1b6)]}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x5de882==='scss'?[!![],{'ignoreAtRules':['mixin','include','extend','if','else',_0x469f9d(0x1c9),_0x469f9d(0x1ab),'while','function',_0x469f9d(0x1db),_0x469f9d(0x1cf),_0x469f9d(0x1c2),_0x469f9d(0x1c3)]}]:_0x5de882==='less'?[!![],{'ignoreAtRules':['plugin']}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x469f9d(0x1d5),'selector-type-case':'lower'},'customSyntax':_0x5de882==='scss'?_0x469f9d(0x1d9):_0x5de882===_0x469f9d(0x1b7)?'postcss-less':undefined},_0x5c546f=await this[_0x469f9d(0x1d2)]['lint']({'code':_0x1f573d,'codeFilename':_0x56f3d3,'config':_0x114fbb});if(_0x5c546f[_0x469f9d(0x1cc)]&&_0x5c546f[_0x469f9d(0x1cc)][_0x469f9d(0x1e4)]>0x0){const _0x1b9a27=_0x5c546f['results'][0x0];if(_0x1b9a27['warnings'])for(const _0x29d054 of _0x1b9a27[_0x469f9d(0x1a7)]){_0x4679a9[_0x469f9d(0x1d8)]({'file':_0x56f3d3,'line':_0x29d054['line']||0x1,'column':_0x29d054[_0x469f9d(0x1e2)]||0x1,'severity':_0x29d054['severity']===_0x469f9d(0x1ac)?STATIC_ANALYSIS['SEVERITY']['ERROR']:STATIC_ANALYSIS['SEVERITY'][_0x469f9d(0x1c4)],'rule':_0x29d054[_0x469f9d(0x1a8)]||_0x469f9d(0x1cd),'message':_0x29d054['text'],'category':this[_0x469f9d(0x1b3)](_0x29d054['rule']),'fixable':![],'source':_0x469f9d(0x1d2)});}}}catch(_0x51c704){this['logger']?.[_0x469f9d(0x1b8)]('Stylelint\x20analysis\x20failed',{'file':_0x56f3d3,'error':_0x51c704['message']});}return _0x4679a9;}['formatPostCSSError'](_0x1302bc,_0x59b85e){const _0x3af565=a0_0x2a67d9;return{'file':_0x59b85e,'line':_0x1302bc[_0x3af565(0x1bb)]||0x1,'column':_0x1302bc[_0x3af565(0x1e2)]||0x1,'severity':STATIC_ANALYSIS[_0x3af565(0x1b0)][_0x3af565(0x1ca)],'rule':_0x1302bc['name']||_0x3af565(0x1e0),'message':_0x1302bc['reason']||_0x1302bc['message'],'category':STATIC_ANALYSIS['CATEGORY'][_0x3af565(0x1c5)],'fixable':![],'source':'postcss','code':_0x1302bc[_0x3af565(0x1ad)]||undefined};}[a0_0x2a67d9(0x1b3)](_0x21af9f){const _0x5974bb=a0_0x2a67d9;if(!_0x21af9f)return STATIC_ANALYSIS['CATEGORY'][_0x5974bb(0x1be)];const _0x5ab831=_0x21af9f['toLowerCase']();if(_0x5ab831[_0x5974bb(0x1ce)]('no-invalid')||_0x5ab831['includes']('no-unknown')||_0x5ab831[_0x5974bb(0x1ce)](_0x5974bb(0x1df))||_0x5ab831[_0x5974bb(0x1ce)](_0x5974bb(0x1b5)))return STATIC_ANALYSIS[_0x5974bb(0x1d1)][_0x5974bb(0x1c5)];if(_0x5ab831[_0x5974bb(0x1ce)](_0x5974bb(0x1ae))||_0x5ab831['includes'](_0x5974bb(0x1dd)))return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x5ab831['includes']('best-practice')||_0x5ab831[_0x5974bb(0x1ce)]('recommended'))return STATIC_ANALYSIS[_0x5974bb(0x1d1)][_0x5974bb(0x1d7)];return STATIC_ANALYSIS[_0x5974bb(0x1d1)][_0x5974bb(0x1be)];}['detectLanguage'](_0x4765f3){const _0x30d32a=a0_0x2a67d9,_0x51ce27=_0x4765f3['toLowerCase']();if(_0x51ce27['endsWith'](_0x30d32a(0x1b9))||_0x51ce27[_0x30d32a(0x1e5)]('.sass'))return _0x30d32a(0x1c6);if(_0x51ce27['endsWith'](_0x30d32a(0x1c8)))return'less';return'css';}[a0_0x2a67d9(0x1d0)](){const _0x58a125=a0_0x2a67d9;return[_0x58a125(0x1af),'.scss','.sass',_0x58a125(0x1c8)];}[a0_0x2a67d9(0x1c1)](){return![];}}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x257fa6=a0_0x4916;(function(_0x468139,_0x8cd63d){const _0x346202=a0_0x4916,_0x9fd55f=_0x468139();while(!![]){try{const _0x3e20fc=-parseInt(_0x346202(0x1bc))/0x1*(-parseInt(_0x346202(0x1d8))/0x2)+parseInt(_0x346202(0x1c0))/0x3+parseInt(_0x346202(0x183))/0x4*(parseInt(_0x346202(0x19e))/0x5)+-parseInt(_0x346202(0x1a0))/0x6+-parseInt(_0x346202(0x1e5))/0x7*(-parseInt(_0x346202(0x1df))/0x8)+parseInt(_0x346202(0x1be))/0x9+-parseInt(_0x346202(0x1c2))/0xa*(parseInt(_0x346202(0x1aa))/0xb);if(_0x3e20fc===_0x8cd63d)break;else _0x9fd55f['push'](_0x9fd55f['shift']());}catch(_0x267195){_0x9fd55f['push'](_0x9fd55f['shift']());}}}(a0_0xb4ed,0xb4d76));import{exec}from'child_process';import{promisify}from'util';function a0_0x4916(_0x16334b,_0x45c1d9){_0x16334b=_0x16334b-0x175;const _0xb4ed13=a0_0xb4ed();let _0x491677=_0xb4ed13[_0x16334b];if(a0_0x4916['nNsJsO']===undefined){var _0x5696f3=function(_0x209b24){const _0x33c729='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x214284='',_0x105ea3='';for(let _0x1ab831=0x0,_0x4011ee,_0x3322b7,_0x440321=0x0;_0x3322b7=_0x209b24['charAt'](_0x440321++);~_0x3322b7&&(_0x4011ee=_0x1ab831%0x4?_0x4011ee*0x40+_0x3322b7:_0x3322b7,_0x1ab831++%0x4)?_0x214284+=String['fromCharCode'](0xff&_0x4011ee>>(-0x2*_0x1ab831&0x6)):0x0){_0x3322b7=_0x33c729['indexOf'](_0x3322b7);}for(let _0x59961c=0x0,_0x1d891e=_0x214284['length'];_0x59961c<_0x1d891e;_0x59961c++){_0x105ea3+='%'+('00'+_0x214284['charCodeAt'](_0x59961c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x105ea3);};a0_0x4916['QpyLcC']=_0x5696f3,a0_0x4916['PFXAYZ']={},a0_0x4916['nNsJsO']=!![];}const _0x290fc1=_0xb4ed13[0x0],_0x2de699=_0x16334b+_0x290fc1,_0x2012c2=a0_0x4916['PFXAYZ'][_0x2de699];return!_0x2012c2?(_0x491677=a0_0x4916['QpyLcC'](_0x491677),a0_0x4916['PFXAYZ'][_0x2de699]=_0x491677):_0x491677=_0x2012c2,_0x491677;}import a0_0x214284 from'path';import a0_0x105ea3 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0xb4ed(){const _0x37fbf5=['y2HLy2TVDG','v0fstKLorW','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','DhnJB25MAwCTDMfSAwrHDg9Y','Dg9Rzw4','y29SDw1U','CgfYC2vdAgvJA292uMvZDwX0CW','yMvZDc1WCMfJDgLJzq','lNLHBwW','igrLDgvJDgvKigLUic5LBNyGzMLSzq','EwfTBgXPBNq','BMfTzq','BM9YBwfSAxPLuMvZDwX0CW','CgfZC3DVCMq','DMfSAwrHDg9Y','BwLZC2LUz1bYB3bLCNr5','mKXZwvrRsa','A3vIzxjUzxrLCW','Bw9KDwXL','BwvZC2fNzq','zgLYBMfTzq','z2L0AhvIlwfJDgLVBNm','zgvIDwC','otm3nteWnhr4rgH2sq','zgv0zwn0rMLSzvr5Cgu','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','wufntcbMAwXLihzHBgLKyxrPB24','yxzHAwXHyMXLu2nHBM5LCNm','y29Kzq','n1juA25czq','su5gtW','zMLSzq','zMLSzv9SAw5Lx3jHBMDL','ANnVBI1WyxjZzq','Aw5ZDgfUy2vqyxrO','C2vJDxjPDhK','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','zw52','ywP2lwzVCM1HDhm','BM8TAw1WBgLJAxqTyw55','EwfTBgXPBNqGzgv0zwn0zwq','DhnJB25MAwCUANnVBG','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','zg9JA2vYlwnVBxbVC2u','CgfYC2vzyw1SBgLUDfjLC3vSDhm','mtjYCu54v00','q1jjveLdquW','ChvZAa','B2jQzwn0','BwfWq2HLy2TVDLnLDMvYAxr5','ug90zw50AwfSigHHCMrJB2rLzca','zg9JA2vYzMLSzq','DxrMltG','qvbjigTLEq','Dw5RBM93BG','ywP2','zxjYB3jZ','zg9JA2vYlwnVBxbVC2uUEw1S','zg9JA2vYx2nVBxbVC2u','AxnbCNjHEq','DMvYC2LVBG','rvjst1i','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zxjYB3i','C3rYAwn0lw1Vzgu','ANnVBI1Zy2HLBwe','y2HLy2TVDIaTlxzLCNnPB24','BwvKAxvT','CMvTzwrPyxrPB24','zxH0BMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','sw52ywXPzcbku09ooIa','mJm5nJmZnvntCevovG','AgfKB2XPBNqGBM90igf2ywLSywjSzq','ndm4mdm2B3boChbZ','Bg9Nz2vY','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','y2HHBMDLBwu','BwfWwwfTBgXPBNrtzxzLCML0Eq','DgvYCMfMB3jT','ANnVBG','CMvHzezPBgu','u0vwrvjjvfK','CgfYC2u','mtfuBM1KA0i','y29TCgLSzxjpChrPB25Z','zgvMyxvSDa','CMvZDwX0CW','DMfSAwrHDgvxAxrOq2HLy2TVDG','DMfSAwrHDgvuC0nVBMzPzW','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','lNrM','z3vPzgvSAw5L','AgfKB2XPBNq','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','C3rYAw5N','CgLWigLUC3rHBgWGy2HLy2TVDG','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','ANnVBLnJAgvTyq','C3rKB3v0','CMvMzxjLBMnLCW','iIaTlwzYyw1LD29YAYa','nJC2mZb2A2DUu2G','BwfW','nZeZndq4mg1fDw1etG','DgvZDa','mZK5odG0ng56sgveuq','DMfSAwrHDgvzqu1m','mZK4oti1ntb0C3DgBwK','Dg9mB3DLCKnHC2u','y3DL','BgLUzq'];a0_0xb4ed=function(){return _0x37fbf5;};return a0_0xb4ed();}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x1ab831=null){const _0x5b1a46=a0_0x4916;this[_0x5b1a46(0x1a1)]=_0x1ab831,this[_0x5b1a46(0x1e3)]=null,this['scannerCache']=new Map();}async[a0_0x257fa6(0x1ca)](){const _0x53c925=a0_0x257fa6;if(this['availableScanners']!==null)return this[_0x53c925(0x1e3)];const _0x4011ee={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x53c925(0x198),{'timeout':0x1388}),_0x4011ee[_0x53c925(0x1c6)]=!![],this['logger']?.['debug']('checkov\x20detected');}catch(_0x3322b7){this[_0x53c925(0x1a1)]?.[_0x53c925(0x1de)](_0x53c925(0x179),{'error':_0x3322b7[_0x53c925(0x1db)]});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x4011ee[_0x53c925(0x1b3)]=!![],this[_0x53c925(0x1a1)]?.['debug']('hadolint\x20detected');}catch(_0x440321){this['logger']?.['debug'](_0x53c925(0x19f),{'error':_0x440321[_0x53c925(0x1db)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x4011ee['yamllint']=!![],this[_0x53c925(0x1a1)]?.['debug'](_0x53c925(0x17e));}catch(_0x59961c){this['logger']?.['debug']('yamllint\x20not\x20available',{'error':_0x59961c['message']});}try{await import('ajv'),_0x4011ee[_0x53c925(0x1b8)]=!![],this[_0x53c925(0x1a1)]?.[_0x53c925(0x1de)](_0x53c925(0x1a2));}catch(_0x1d891e){this[_0x53c925(0x1a1)]?.['debug']('ajv\x20not\x20available',{'error':_0x1d891e['message']});}return this[_0x53c925(0x1e3)]=_0x4011ee,_0x4011ee;}async['validate'](_0x2732c3,_0x2817eb={}){const _0x23bb6a=a0_0x257fa6,_0x50ac4b=[],_0x2a0b1c=await this[_0x23bb6a(0x1ca)](),_0x5cdaa7=this[_0x23bb6a(0x1e0)](_0x2732c3);this[_0x23bb6a(0x1a1)]?.['debug']('Validating\x20config\x20file',{'filePath':_0x2732c3,'fileType':_0x5cdaa7});switch(_0x5cdaa7){case'dockerfile':if(_0x2a0b1c['hadolint']){const _0x58b9ef=await this['validateDockerfile'](_0x2732c3,_0x2817eb);_0x50ac4b['push'](..._0x58b9ef);}if(_0x2a0b1c[_0x23bb6a(0x1c6)]){const _0x42c873=await this[_0x23bb6a(0x1ae)](_0x2732c3,_0x23bb6a(0x189),_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0x42c873);}break;case'docker-compose':if(_0x2a0b1c['yamllint']){const _0x4a0ad5=await this[_0x23bb6a(0x1c1)](_0x2732c3,_0x2817eb);_0x50ac4b['push'](..._0x4a0ad5);}if(_0x2a0b1c[_0x23bb6a(0x1c6)]){const _0x37e6a5=await this['validateWithCheckov'](_0x2732c3,_0x23bb6a(0x190),_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0x37e6a5);}break;case _0x23bb6a(0x1d9):if(_0x2a0b1c[_0x23bb6a(0x1d2)]){const _0x56b03c=await this[_0x23bb6a(0x1c1)](_0x2732c3,_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0x56b03c);}if(_0x2a0b1c['checkov']){const _0x1603c8=await this['validateWithCheckov'](_0x2732c3,_0x23bb6a(0x1d9),_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0x1603c8);}break;case'terraform':if(_0x2a0b1c['checkov']){const _0x1f95da=await this[_0x23bb6a(0x1ae)](_0x2732c3,_0x23bb6a(0x1a5),_0x2817eb);_0x50ac4b['push'](..._0x1f95da);}break;case'package.json':if(_0x2a0b1c[_0x23bb6a(0x1b8)]){const _0x4aff48=await this['validatePackageJson'](_0x2732c3,_0x2817eb);_0x50ac4b['push'](..._0x4aff48);}break;case _0x23bb6a(0x17f):if(_0x2a0b1c[_0x23bb6a(0x1b8)]){const _0xfa7380=await this['validateTsConfig'](_0x2732c3,_0x2817eb);_0x50ac4b['push'](..._0xfa7380);}break;case _0x23bb6a(0x1dd):if(_0x2a0b1c['yamllint']){const _0x6ed7c4=await this[_0x23bb6a(0x1c1)](_0x2732c3,_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0x6ed7c4);}break;case _0x23bb6a(0x17b):const _0xe75905=await this['validateEnvFile'](_0x2732c3,_0x2817eb);_0x50ac4b[_0x23bb6a(0x185)](..._0xe75905);break;case'yaml':if(_0x2a0b1c[_0x23bb6a(0x1d2)]){const _0x3328a2=await this['validateYAML'](_0x2732c3,_0x2817eb);_0x50ac4b['push'](..._0x3328a2);}break;default:this['logger']?.['warn']('Unknown\x20config\x20file\x20type',{'filePath':_0x2732c3,'fileType':_0x5cdaa7});return[];}return this['normalizeResults'](_0x50ac4b);}async['validateDockerfile'](_0x476865,_0x48e547={}){const _0x18fca7=a0_0x257fa6;try{const _0x587224=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x476865+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x324640=JSON['parse'](_0x587224[_0x18fca7(0x1b9)]);return this['parseHadolintResults'](_0x324640,_0x476865);}catch(_0x2fa491){if(_0x2fa491[_0x18fca7(0x1b9)])try{const _0x1ac52d=JSON[_0x18fca7(0x1a9)](_0x2fa491['stdout']);return this['parseHadolintResults'](_0x1ac52d,_0x476865);}catch(_0x3a143a){this['logger']?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x3a143a['message']});}return this['logger']?.[_0x18fca7(0x195)]('hadolint\x20validation\x20failed',{'error':_0x2fa491['message']}),[];}}['parseHadolintResults'](_0x4f3fce,_0x1edb30){const _0x37720a=a0_0x257fa6,_0x3b2351=[];if(Array[_0x37720a(0x191)](_0x4f3fce))for(const _0x4a09cd of _0x4f3fce){_0x3b2351['push']({'file':_0x1edb30,'line':_0x4a09cd[_0x37720a(0x1c5)]||0x1,'column':_0x4a09cd[_0x37720a(0x1cd)]||0x1,'severity':this['mapHadolintSeverity'](_0x4a09cd['level']),'rule':_0x4a09cd[_0x37720a(0x1e4)],'message':_0x4a09cd[_0x37720a(0x1db)],'category':_0x37720a(0x189),'validator':_0x37720a(0x1b3)});}return _0x3b2351;}async['validateYAML'](_0x127e55,_0x122edb={}){const _0x7943d=a0_0x257fa6;try{const _0x15a1fa=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x127e55+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x7943d(0x182)](_0x15a1fa[_0x7943d(0x1b9)],_0x127e55);}catch(_0x4ec953){if(_0x4ec953[_0x7943d(0x1b9)])return this[_0x7943d(0x182)](_0x4ec953[_0x7943d(0x1b9)],_0x127e55);return this['logger']?.['error'](_0x7943d(0x180),{'error':_0x4ec953[_0x7943d(0x1db)]}),[];}}[a0_0x257fa6(0x182)](_0x4a82c8,_0x49d5f0){const _0x516923=a0_0x257fa6,_0x425d13=[],_0x1e9578=_0x4a82c8['split']('\x0a')['filter'](_0x16f971=>_0x16f971['trim']());for(const _0x56351e of _0x1e9578){const _0x21a043=_0x56351e['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x21a043){const [,_0x103c6a,_0x160669,_0x4be4a2,_0x32d503,_0x3c0776,_0x5774bc]=_0x21a043;_0x425d13[_0x516923(0x185)]({'file':_0x49d5f0,'line':parseInt(_0x160669,0xa),'column':parseInt(_0x4be4a2,0xa),'severity':this[_0x516923(0x1a4)](_0x32d503),'rule':_0x5774bc,'message':_0x3c0776,'category':'yaml','validator':'yamllint'});}}return _0x425d13;}async['validateWithCheckov'](_0x294950,_0x3c6a77,_0x536a07={}){const _0x2eca6c=a0_0x257fa6;try{const _0x4ddb21=await execAsync('checkov\x20-f\x20\x22'+_0x294950+_0x2eca6c(0x1bb)+_0x3c6a77+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x3a94d2=JSON[_0x2eca6c(0x1a9)](_0x4ddb21[_0x2eca6c(0x1b9)]);return this[_0x2eca6c(0x1ce)](_0x3a94d2,_0x294950);}catch(_0x3703b4){if(_0x3703b4['stdout'])try{const _0x17bfa0=JSON['parse'](_0x3703b4[_0x2eca6c(0x1b9)]);return this[_0x2eca6c(0x1ce)](_0x17bfa0,_0x294950);}catch(_0x4c7c97){this['logger']?.['error'](_0x2eca6c(0x1c8),{'error':_0x4c7c97['message']});}return this['logger']?.['error']('checkov\x20validation\x20failed',{'error':_0x3703b4['message']}),[];}}['parseCheckovResults'](_0x55ca0e,_0x37b800){const _0x492ee6=a0_0x257fa6,_0x75a0b2=[];if(_0x55ca0e[_0x492ee6(0x1ad)]&&_0x55ca0e[_0x492ee6(0x1ad)]['failed_checks'])for(const _0x38ca75 of _0x55ca0e['results']['failed_checks']){_0x75a0b2['push']({'file':_0x37b800,'line':_0x38ca75[_0x492ee6(0x175)]?_0x38ca75['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x492ee6(0x187)](_0x38ca75['check_class']),'rule':_0x38ca75['check_id'],'message':_0x38ca75['check_name']||_0x38ca75['check_id'],'category':_0x492ee6(0x178),'validator':'checkov','remediation':_0x38ca75['guideline'],'cwe':_0x38ca75[_0x492ee6(0x1c4)],'references':_0x38ca75[_0x492ee6(0x1b2)]?[_0x38ca75['guideline']]:[]});}return _0x75a0b2;}async['validatePackageJson'](_0x505ead,_0x7f78dc={}){const _0x18705c=a0_0x257fa6;try{const _0x3fa08d=(await import(_0x18705c(0x18d)))[_0x18705c(0x1ac)],_0x5e654e=(await import(_0x18705c(0x17c)))['default'],_0x59f4a2=await a0_0x105ea3['readFile'](_0x505ead,'utf-8'),_0x11177d=JSON['parse'](_0x59f4a2),_0x21d783=new _0x3fa08d({'allErrors':!![],'strict':![]});_0x5e654e(_0x21d783);const _0x2da091={'type':_0x18705c(0x186),'required':[_0x18705c(0x1d3),_0x18705c(0x192)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x18705c(0x1b5)},'description':{'type':'string'},'main':{'type':'string'},'type':{'type':_0x18705c(0x1b5),'enum':[_0x18705c(0x1da),'commonjs']},'scripts':{'type':_0x18705c(0x186)},'dependencies':{'type':_0x18705c(0x186)},'devDependencies':{'type':_0x18705c(0x186)}},'additionalProperties':!![]},_0x42082c=_0x21d783['compile'](_0x2da091),_0x4758f5=_0x42082c(_0x11177d);if(!_0x4758f5&&_0x42082c[_0x18705c(0x18e)])return _0x42082c['errors'][_0x18705c(0x1bd)](_0x140163=>({'file':_0x505ead,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x18705c(0x1a8)]['ERROR'],'rule':_0x18705c(0x197),'message':_0x140163[_0x18705c(0x177)]?_0x140163['instancePath']+'\x20'+_0x140163['message']:'must\x20have\x20required\x20property\x20\x27'+_0x140163['params'][_0x18705c(0x1d7)]+'\x27','category':'validation','validator':_0x18705c(0x197)}));return[];}catch(_0x4363dd){return this['logger']?.[_0x18705c(0x195)]('package.json\x20validation\x20failed',{'error':_0x4363dd[_0x18705c(0x1db)]}),[{'file':_0x505ead,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x18705c(0x193)],'rule':'json-parse','message':_0x18705c(0x19d)+_0x4363dd[_0x18705c(0x1db)],'category':'syntax','validator':_0x18705c(0x176)}];}}async[a0_0x257fa6(0x1af)](_0x5c9463,_0xb8c8b8={}){const _0x15c0c7=a0_0x257fa6;try{const _0x549be1=await a0_0x105ea3['readFile'](_0x5c9463,_0x15c0c7(0x18a)),_0x2594f4=JSON['parse'](_0x549be1),_0xfb9ff8=[];if(_0x2594f4[_0x15c0c7(0x1ab)]){const _0x4e7f5f=_0x2594f4['compilerOptions'];!_0x4e7f5f['strict']&&_0xfb9ff8['push']({'file':_0x5c9463,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x15c0c7(0x1c7)],'rule':_0x15c0c7(0x196),'message':_0x15c0c7(0x1c9),'category':_0x15c0c7(0x1cf),'validator':'tsconfig-validator'}),_0x4e7f5f['noImplicitAny']===![]&&_0xfb9ff8[_0x15c0c7(0x185)]({'file':_0x5c9463,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x15c0c7(0x1a8)][_0x15c0c7(0x1c7)],'rule':_0x15c0c7(0x17d),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x15c0c7(0x1cb)});}return _0xfb9ff8;}catch(_0x59b01a){return this[_0x15c0c7(0x1a1)]?.[_0x15c0c7(0x195)](_0x15c0c7(0x1e1),{'error':_0x59b01a['message']}),[{'file':_0x5c9463,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x15c0c7(0x193)],'rule':_0x15c0c7(0x176),'message':_0x15c0c7(0x19d)+_0x59b01a['message'],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x1c515c,_0x178050={}){const _0x4a6a6a=a0_0x257fa6;try{const _0x3b120a=await a0_0x105ea3[_0x4a6a6a(0x1a7)](_0x1c515c,_0x4a6a6a(0x18a)),_0x57b7dd=[],_0x46972e=_0x3b120a['split']('\x0a'),_0xddf1bf=[{'pattern':/password|passwd|pwd/i,'name':_0x4a6a6a(0x1d5)},{'pattern':/api[_-]?key/i,'name':_0x4a6a6a(0x18b)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':_0x4a6a6a(0x1cc)},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x46972e['forEach']((_0x194b54,_0x3b6c77)=>{const _0xc34bdd=_0x4a6a6a,_0xf975c6=_0x194b54['trim']();if(!_0xf975c6||_0xf975c6['startsWith']('#'))return;if(_0xf975c6['includes']('=')){const [_0x4f505a,_0x462800]=_0xf975c6['split']('='),_0x2effcf=_0x4f505a['toLowerCase'](),_0x5a1712=_0x462800?.['trim']()||'',_0x8358b6=_0x5a1712&&_0x5a1712!==''&&!_0x5a1712['startsWith']('$')&&_0x5a1712!=='your-key-here'&&_0x5a1712!==_0xc34bdd(0x1a3)&&_0x5a1712['length']>0x5;if(_0x8358b6)for(const {pattern:_0x54bf32,name:_0x33aa73}of _0xddf1bf){if(_0x54bf32[_0xc34bdd(0x1bf)](_0x2effcf)){_0x57b7dd['push']({'file':_0x1c515c,'line':_0x3b6c77+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0xc34bdd(0x184)],'rule':'hardcoded-secret','message':_0xc34bdd(0x188)+_0x33aa73+_0xc34bdd(0x1d1),'category':_0xc34bdd(0x178),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x57b7dd;}catch(_0x821e7c){return this[_0x4a6a6a(0x1a1)]?.[_0x4a6a6a(0x195)](_0x4a6a6a(0x194),{'error':_0x821e7c[_0x4a6a6a(0x1db)]}),[];}}['detectFileType'](_0x14e46f){const _0x1b3ac5=a0_0x257fa6,_0xdf5259=a0_0x214284['basename'](_0x14e46f)[_0x1b3ac5(0x1c3)](),_0x5e5948=a0_0x214284[_0x1b3ac5(0x1dc)](_0x14e46f);if(_0xdf5259===_0x1b3ac5(0x189))return _0x1b3ac5(0x189);if(_0xdf5259===_0x1b3ac5(0x18f)||_0xdf5259==='docker-compose.yaml')return _0x1b3ac5(0x181);if(_0xdf5259==='package.json')return'package.json';if(_0xdf5259==='tsconfig.json')return _0x1b3ac5(0x17f);if(_0xdf5259==='.env'||_0xdf5259['endsWith']('.env'))return _0x1b3ac5(0x17b);if(_0x5e5948['includes']('.github/workflows'))return'github-actions';if(_0x5e5948['includes']('kubernetes')||_0x5e5948['includes']('k8s'))return _0x1b3ac5(0x1d9);const _0x3e1256=a0_0x214284[_0x1b3ac5(0x19b)](_0x14e46f)['toLowerCase']();if(_0x3e1256===_0x1b3ac5(0x1b1)||_0x3e1256==='.tfvars')return _0x1b3ac5(0x1a5);if(_0x3e1256==='.yml'||_0x3e1256===_0x1b3ac5(0x1d0))return'yaml';if(_0x3e1256==='.json')return _0x1b3ac5(0x1a6);return _0x1b3ac5(0x18c);}[a0_0x257fa6(0x1d4)](_0x54bf5c){const _0xe58a39=a0_0x257fa6;return _0x54bf5c[_0xe58a39(0x1bd)](_0x213553=>({'file':_0x213553[_0xe58a39(0x1e7)],'line':_0x213553[_0xe58a39(0x1c5)]||0x1,'column':_0x213553[_0xe58a39(0x1cd)]||0x1,'severity':_0x213553['severity']||STATIC_ANALYSIS[_0xe58a39(0x1a8)][_0xe58a39(0x1c7)],'rule':_0x213553['rule']||_0xe58a39(0x18c),'message':_0x213553[_0xe58a39(0x1db)]||_0xe58a39(0x1b4),'category':_0x213553['category']||'validation','validator':_0x213553[_0xe58a39(0x1d6)],'cwe':_0x213553[_0xe58a39(0x1c4)]||null,'remediation':_0x213553[_0xe58a39(0x19a)]||null,'references':_0x213553[_0xe58a39(0x1ba)]||[]}));}['mapHadolintSeverity'](_0x485326){const _0x27c63d=a0_0x257fa6,_0x3f1d2b={'error':STATIC_ANALYSIS['SEVERITY'][_0x27c63d(0x193)],'warning':STATIC_ANALYSIS['SEVERITY'][_0x27c63d(0x1c7)],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS['SEVERITY'][_0x27c63d(0x1e6)]};return _0x3f1d2b[_0x485326?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapYamllintSeverity'](_0x3eff95){const _0x1cda76=a0_0x257fa6,_0x1bc089={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x1cda76(0x1a8)]['WARNING']};return _0x1bc089[_0x3eff95?.['toLowerCase']()]||STATIC_ANALYSIS[_0x1cda76(0x1a8)][_0x1cda76(0x1c7)];}[a0_0x257fa6(0x187)](_0x5ba6e8){const _0x1c13a1=a0_0x257fa6;return STATIC_ANALYSIS[_0x1c13a1(0x1a8)]['ERROR'];}async['getValidatorStatus'](){const _0x56adde=await this['detectAvailableValidators']();return{'validators':_0x56adde,'recommendations':this['getInstallRecommendations'](_0x56adde)};}[a0_0x257fa6(0x1b0)](_0x2f9e78){const _0x32b239=a0_0x257fa6,_0x3b2860=[];return!_0x2f9e78['checkov']&&_0x3b2860['push']({'validator':'checkov','reason':_0x32b239(0x17a),'install':_0x32b239(0x1b6),'priority':'high'}),!_0x2f9e78['hadolint']&&_0x3b2860['push']({'validator':_0x32b239(0x1b3),'reason':_0x32b239(0x1b7),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x2f9e78['yamllint']&&_0x3b2860[_0x32b239(0x185)]({'validator':'yamllint','reason':_0x32b239(0x1e2),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x2f9e78['jsonSchema']&&_0x3b2860['push']({'validator':'ajv\x20(JSON\x20Schema)','reason':_0x32b239(0x19c),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x32b239(0x199)}),_0x3b2860;}}export default ConfigValidator;
|
|
1
|
+
const a0_0x471c3c=a0_0x5494;(function(_0x3dd411,_0x2ae3c6){const _0x3e3ee4=a0_0x5494,_0x41b625=_0x3dd411();while(!![]){try{const _0x4537dc=parseInt(_0x3e3ee4(0x213))/0x1+parseInt(_0x3e3ee4(0x1c7))/0x2+-parseInt(_0x3e3ee4(0x1bf))/0x3+-parseInt(_0x3e3ee4(0x1b3))/0x4*(-parseInt(_0x3e3ee4(0x20f))/0x5)+-parseInt(_0x3e3ee4(0x206))/0x6*(parseInt(_0x3e3ee4(0x222))/0x7)+parseInt(_0x3e3ee4(0x1de))/0x8*(parseInt(_0x3e3ee4(0x220))/0x9)+parseInt(_0x3e3ee4(0x219))/0xa*(-parseInt(_0x3e3ee4(0x1c9))/0xb);if(_0x4537dc===_0x2ae3c6)break;else _0x41b625['push'](_0x41b625['shift']());}catch(_0xa4b6d1){_0x41b625['push'](_0x41b625['shift']());}}}(a0_0x23fb,0xe82e0));import{exec}from'child_process';import{promisify}from'util';import a0_0x1f0732 from'path';function a0_0x23fb(){const _0x287c18=['zg9JA2vYzMLSzq','Dw5RBM93BG','CgfYC2vzyw1SBgLUDfjLC3vSDhm','oeTTEgX6Cq','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','CMvZDwX0CW','CgfYC2u','ANnVBLnJAgvTyq','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','ywP2lwzVCM1HDhm','CMvHzezPBgu','y2HLy2TVDG','ANnVBI1Zy2HLBwe','zxjYB3i','z2L0AhvIlwfJDgLVBNm','CgLWigLUC3rHBgWGEwfTBgXPBNq','DxrMltG','DhnJB25MAwCTDMfSAwrHDg9Y','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','sw52ywXPzcbku09ooIa','DMfSAwrHDgu','v0fstKLorW','DMfSAwrHDgveB2nRzxjMAwXL','y3DL','EwfTBa','DhjPBq','BM9jBxbSAwnPDefUEq','DMfSAwrHDg9Y','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','C2vJDxjPDhK','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','qvDtignYzwrLBNrPywXZ','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','y29SDw1U','CgfZC3DVCMq','zg9JA2vYlwnVBxbVC2uUEwfTBa','C2vJCMv0','y29Kzq','DMfSAwrHDgvzqu1m','zMLSzq','Ew91CI1RzxKTAgvYzq','iIaTlwzYyw1LD29YAYa','Dg9mB3DLCKnHC2u','mtjsuvPgqKS','q1jjveLdquW','CgfYC2vdAgvJA292uMvZDwX0CW','A3vIzxjUzxrLCW','BgLUzq','ywP2','AxnbCNjHEq','BwvKAxvT','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','ntm2odK2nwT1B0jZuq','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','CMvMzxjLBMnLCW','B2jQzwn0','mZi4odCWwhfkD0zI','lMvUDG','zMLSDgvY','EwfTBgXPBNq','DhnJB25MAwCUANnVBG','lMDPDgH1yI93B3jRzMXVD3m','mZG5mdbnB1LRAMO','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zgvIDwC','y29TCgLSzxjpChrPB25Z','u0vwrvjjvfK','lMPZB24','z3vPzgvSAw5L','mti0mZm4odDOsfD4y0W','zgLYBMfTzq','mZmYmdHfBgn1s1y','zw52','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','CgLWigLUC3rHBgWGy2HLy2TVDG','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','DMfSAwrHDgvfBNzgAwXL','y2HLy2TVDIaTlxzLCNnPB24','ChvZAa','BwfWsgfKB2XPBNrtzxzLCML0Eq','AgfKB2XPBNq','C3rYAw5N','EwfTBgXPBNqGBM90igf2ywLSywjSzq','yxzHAwXHyMXLu2nHBM5LCNm','DMfSAwrHDgvxAxrOq2HLy2TVDG','zgvMyxvSDa','BMfTzq','C2nHBM5LCKnHy2HL','DMfSAwrHDgLVBG','C3rKB3v0','DMfSAwrHDgvuC0nVBMzPzW','EwfTBgXPBNqGls12zxjZAw9U','zMLSzv9SAw5Lx3jHBMDL','CgfJA2fNzs5QC29U','nejftKHerq','ywP2ig5VDcbHDMfPBgfIBgu','yMvZDc1WCMfJDgLJzq','BwvZC2fNzq','y2HHBMDLBwu','ChjPDMf0zsbRzxK','C3rYAwn0lw1Vzgu','CgfYC2viywrVBgLUDfjLC3vSDhm','ANnVBI1WyxjZzq','CgfYyw1Z','AgfKB2XPBNqGzgv0zwn0zwq','Dg9Rzw4','nJe0mtu0s21mzw1H','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','AgLNAa','Aw5JBhvKzxm','Bg9Nz2vY','BM9YBwfSAxPLuMvZDwX0CW','ANnVBG','mtyXodC2vxL4vNzr','BwfW','ndGWn21rDwzSDa','wufntcbMAwXLihzHBgLKyxrPB24','y29TBw9UANm','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','zxjYB3jZ','zgv0zwn0rMLSzvr5Cgu','rvjst1i','C3LUDgf4','AgfKB2XPBNqGls12zxjZAw9U','zw5KC1DPDgG','BwLZC2LUz1bYB3bLCNr5','AgfYzgnVzgvKlxnLy3jLDa','DMfSAwrHDgvqywnRywDLsNnVBG','zg9JA2vYlwnVBxbVC2u','DgvYCMfMB3jT','yMfZzw5HBwu','BgvUz3rO','AgfKB2XPBNqGBM90igf2ywLSywjSzq'];a0_0x23fb=function(){return _0x287c18;};return a0_0x23fb();}import a0_0x24ce6a from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x5494(_0x586934,_0x499439){_0x586934=_0x586934-0x1b3;const _0x23fb1f=a0_0x23fb();let _0x5494de=_0x23fb1f[_0x586934];if(a0_0x5494['oqWDFj']===undefined){var _0x3b856a=function(_0x4a2888){const _0x27c944='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f0732='',_0x24ce6a='';for(let _0x44ece9=0x0,_0x14767c,_0x1bd46f,_0x122370=0x0;_0x1bd46f=_0x4a2888['charAt'](_0x122370++);~_0x1bd46f&&(_0x14767c=_0x44ece9%0x4?_0x14767c*0x40+_0x1bd46f:_0x1bd46f,_0x44ece9++%0x4)?_0x1f0732+=String['fromCharCode'](0xff&_0x14767c>>(-0x2*_0x44ece9&0x6)):0x0){_0x1bd46f=_0x27c944['indexOf'](_0x1bd46f);}for(let _0x6cd80a=0x0,_0x1c0193=_0x1f0732['length'];_0x6cd80a<_0x1c0193;_0x6cd80a++){_0x24ce6a+='%'+('00'+_0x1f0732['charCodeAt'](_0x6cd80a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x24ce6a);};a0_0x5494['QsvSRN']=_0x3b856a,a0_0x5494['BOZuLu']={},a0_0x5494['oqWDFj']=!![];}const _0x17e7c1=_0x23fb1f[0x0],_0x292b75=_0x586934+_0x17e7c1,_0x269e4a=a0_0x5494['BOZuLu'][_0x292b75];return!_0x269e4a?(_0x5494de=a0_0x5494['QsvSRN'](_0x5494de),a0_0x5494['BOZuLu'][_0x292b75]=_0x5494de):_0x5494de=_0x269e4a,_0x5494de;}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x44ece9=null){const _0x448ce2=a0_0x5494;this[_0x448ce2(0x1c4)]=_0x44ece9,this[_0x448ce2(0x22e)]=null,this[_0x448ce2(0x232)]=new Map();}async[a0_0x471c3c(0x1df)](){const _0x512739=a0_0x471c3c;if(this['availableScanners']!==null)return this[_0x512739(0x22e)];const _0x14767c={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x512739(0x228),{'timeout':0x1388}),_0x14767c[_0x512739(0x1e6)]=!![],this['logger']?.[_0x512739(0x21b)]('checkov\x20detected');}catch(_0x1bd46f){this['logger']?.['debug'](_0x512739(0x1f7),{'error':_0x1bd46f[_0x512739(0x1b6)]});}try{await execAsync(_0x512739(0x1d1),{'timeout':0x1388}),_0x14767c[_0x512739(0x22b)]=!![],this['logger']?.[_0x512739(0x21b)](_0x512739(0x1bd));}catch(_0x122370){this[_0x512739(0x1c4)]?.[_0x512739(0x21b)](_0x512739(0x1da),{'error':_0x122370['message']});}try{await execAsync(_0x512739(0x236),{'timeout':0x1388}),_0x14767c[_0x512739(0x216)]=!![],this['logger']?.[_0x512739(0x21b)]('yamllint\x20detected');}catch(_0x6cd80a){this['logger']?.[_0x512739(0x21b)](_0x512739(0x22d),{'error':_0x6cd80a['message']});}try{await import('ajv'),_0x14767c['jsonSchema']=!![],this[_0x512739(0x1c4)]?.['debug'](_0x512739(0x224));}catch(_0x1c0193){this[_0x512739(0x1c4)]?.['debug'](_0x512739(0x1b4),{'error':_0x1c0193['message']});}return this['availableScanners']=_0x14767c,_0x14767c;}async[a0_0x471c3c(0x1ef)](_0x57161e,_0x75e2a1={}){const _0x1bf5ba=a0_0x471c3c,_0x1ded77=[],_0x3f22c9=await this['detectAvailableValidators'](),_0x2abbc3=this['detectFileType'](_0x57161e);this['logger']?.[_0x1bf5ba(0x21b)]('Validating\x20config\x20file',{'filePath':_0x57161e,'fileType':_0x2abbc3});switch(_0x2abbc3){case'dockerfile':if(_0x3f22c9['hadolint']){const _0x1d2d7d=await this['validateDockerfile'](_0x57161e,_0x75e2a1);_0x1ded77[_0x1bf5ba(0x229)](..._0x1d2d7d);}if(_0x3f22c9[_0x1bf5ba(0x1e6)]){const _0x13b7c9=await this[_0x1bf5ba(0x22f)](_0x57161e,_0x1bf5ba(0x1db),_0x75e2a1);_0x1ded77['push'](..._0x13b7c9);}break;case _0x1bf5ba(0x1d6):if(_0x3f22c9[_0x1bf5ba(0x216)]){const _0x4ffe87=await this[_0x1bf5ba(0x201)](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x4ffe87);}if(_0x3f22c9['checkov']){const _0x49e0d3=await this[_0x1bf5ba(0x22f)](_0x57161e,'docker_compose',_0x75e2a1);_0x1ded77['push'](..._0x49e0d3);}break;case _0x1bf5ba(0x209):if(_0x3f22c9['yamllint']){const _0x58e421=await this['validateYAML'](_0x57161e,_0x75e2a1);_0x1ded77[_0x1bf5ba(0x229)](..._0x58e421);}if(_0x3f22c9['checkov']){const _0x291fae=await this[_0x1bf5ba(0x22f)](_0x57161e,_0x1bf5ba(0x209),_0x75e2a1);_0x1ded77[_0x1bf5ba(0x229)](..._0x291fae);}break;case _0x1bf5ba(0x1d7):if(_0x3f22c9[_0x1bf5ba(0x1e6)]){const _0x4c3619=await this[_0x1bf5ba(0x22f)](_0x57161e,_0x1bf5ba(0x1d7),_0x75e2a1);_0x1ded77['push'](..._0x4c3619);}break;case _0x1bf5ba(0x238):if(_0x3f22c9[_0x1bf5ba(0x1e2)]){const _0x30a2c9=await this[_0x1bf5ba(0x1d5)](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x30a2c9);}break;case _0x1bf5ba(0x217):if(_0x3f22c9['jsonSchema']){const _0x2b22e8=await this[_0x1bf5ba(0x235)](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x2b22e8);}break;case _0x1bf5ba(0x1e9):if(_0x3f22c9['yamllint']){const _0x52dde4=await this['validateYAML'](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x52dde4);}break;case _0x1bf5ba(0x223):const _0x1bb096=await this[_0x1bf5ba(0x227)](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x1bb096);break;case'yaml':if(_0x3f22c9['yamllint']){const _0x2eef61=await this['validateYAML'](_0x57161e,_0x75e2a1);_0x1ded77['push'](..._0x2eef61);}break;default:this['logger']?.['warn'](_0x1bf5ba(0x1ed),{'filePath':_0x57161e,'fileType':_0x2abbc3});return[];}return this[_0x1bf5ba(0x1c5)](_0x1ded77);}async[a0_0x471c3c(0x1f1)](_0xcc5620,_0x43d83f={}){const _0x178219=a0_0x471c3c;try{const _0x5170d0=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0xcc5620+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x114a24=JSON[_0x178219(0x1e1)](_0x5170d0['stdout']);return this[_0x178219(0x1ba)](_0x114a24,_0xcc5620);}catch(_0x514d64){if(_0x514d64['stdout'])try{const _0x4cb2b0=JSON['parse'](_0x514d64['stdout']);return this['parseHadolintResults'](_0x4cb2b0,_0xcc5620);}catch(_0x2ffcc6){this[_0x178219(0x1c4)]?.[_0x178219(0x1e8)](_0x178219(0x1fb),{'error':_0x2ffcc6['message']});}return this['logger']?.[_0x178219(0x1e8)](_0x178219(0x1e3),{'error':_0x514d64[_0x178219(0x1b6)]}),[];}}['parseHadolintResults'](_0x3f3a1a,_0xb6a33e){const _0x3f8872=a0_0x471c3c,_0x4ba85d=[];if(Array[_0x3f8872(0x20c)](_0x3f3a1a))for(const _0x3f5844 of _0x3f3a1a){_0x4ba85d['push']({'file':_0xb6a33e,'line':_0x3f5844[_0x3f8872(0x20a)]||0x1,'column':_0x3f5844[_0x3f8872(0x1fc)]||0x1,'severity':this['mapHadolintSeverity'](_0x3f5844['level']),'rule':_0x3f5844[_0x3f8872(0x200)],'message':_0x3f5844['message'],'category':_0x3f8872(0x1db),'validator':_0x3f8872(0x22b)});}return _0x4ba85d;}async[a0_0x471c3c(0x201)](_0x2d948d,_0x1217b9={}){const _0x29e2c2=a0_0x471c3c;try{const _0x465437=await execAsync(_0x29e2c2(0x20e)+_0x2d948d+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x29e2c2(0x1dd)](_0x465437[_0x29e2c2(0x234)],_0x2d948d);}catch(_0x447f0c){if(_0x447f0c['stdout'])return this['parseYamllintResults'](_0x447f0c['stdout'],_0x2d948d);return this['logger']?.['error']('yamllint\x20validation\x20failed',{'error':_0x447f0c['message']}),[];}}[a0_0x471c3c(0x1dd)](_0x51d35e,_0x11b7d4){const _0x510c5f=a0_0x471c3c,_0x2e3bde=[],_0x31062f=_0x51d35e['split']('\x0a')[_0x510c5f(0x215)](_0x5a6c9c=>_0x5a6c9c[_0x510c5f(0x1f4)]());for(const _0x400f78 of _0x31062f){const _0x58d6ad=_0x400f78['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x58d6ad){const [,_0x9bfaff,_0x1f6f08,_0x5f300e,_0x536ea9,_0x1b79a8,_0x12fe95]=_0x58d6ad;_0x2e3bde['push']({'file':_0x11b7d4,'line':parseInt(_0x1f6f08,0xa),'column':parseInt(_0x5f300e,0xa),'severity':this['mapYamllintSeverity'](_0x536ea9),'rule':_0x12fe95,'message':_0x1b79a8,'category':'yaml','validator':_0x510c5f(0x216)});}}return _0x2e3bde;}async[a0_0x471c3c(0x22f)](_0x1decfc,_0x4a2511,_0x2e8d0f={}){const _0xa521c=a0_0x471c3c;try{const _0x307455=await execAsync('checkov\x20-f\x20\x22'+_0x1decfc+_0xa521c(0x204)+_0x4a2511+_0xa521c(0x226),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x5760ee=JSON['parse'](_0x307455[_0xa521c(0x234)]);return this[_0xa521c(0x208)](_0x5760ee,_0x1decfc);}catch(_0x5d3b46){if(_0x5d3b46['stdout'])try{const _0x2cd56e=JSON[_0xa521c(0x1e1)](_0x5d3b46[_0xa521c(0x234)]);return this[_0xa521c(0x208)](_0x2cd56e,_0x1decfc);}catch(_0xbe9135){this['logger']?.['error']('Failed\x20to\x20parse\x20checkov\x20output',{'error':_0xbe9135['message']});}return this['logger']?.[_0xa521c(0x1e8)]('checkov\x20validation\x20failed',{'error':_0x5d3b46[_0xa521c(0x1b6)]}),[];}}['parseCheckovResults'](_0x4bb2ad,_0x50bae9){const _0xd8c4d2=a0_0x471c3c,_0x8418cb=[];if(_0x4bb2ad['results']&&_0x4bb2ad[_0xd8c4d2(0x1e0)]['failed_checks'])for(const _0x55304e of _0x4bb2ad[_0xd8c4d2(0x1e0)]['failed_checks']){_0x8418cb[_0xd8c4d2(0x229)]({'file':_0x50bae9,'line':_0x55304e[_0xd8c4d2(0x237)]?_0x55304e['file_line_range'][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x55304e['check_class']),'rule':_0x55304e['check_id'],'message':_0x55304e['check_name']||_0x55304e['check_id'],'category':'security','validator':_0xd8c4d2(0x1e6),'remediation':_0x55304e['guideline'],'cwe':_0x55304e[_0xd8c4d2(0x1f2)],'references':_0x55304e['guideline']?[_0x55304e[_0xd8c4d2(0x21f)]]:[]});}return _0x8418cb;}async['validatePackageJson'](_0xf03512,_0xeec1aa={}){const _0x29b144=a0_0x471c3c;try{const _0x39d3d1=(await import(_0x29b144(0x20b)))[_0x29b144(0x230)],_0x4b71a2=(await import(_0x29b144(0x1e4)))['default'],_0x5c2739=await a0_0x24ce6a['readFile'](_0xf03512,'utf-8'),_0x8467d2=JSON[_0x29b144(0x1e1)](_0x5c2739),_0x4f472d=new _0x39d3d1({'allErrors':!![],'strict':![]});_0x4b71a2(_0x4f472d);const _0x183e03={'type':_0x29b144(0x212),'required':[_0x29b144(0x231),'version'],'properties':{'name':{'type':_0x29b144(0x22c),'pattern':_0x29b144(0x1c1)},'version':{'type':_0x29b144(0x22c)},'description':{'type':_0x29b144(0x22c)},'main':{'type':'string'},'type':{'type':'string','enum':['module',_0x29b144(0x1cb)]},'scripts':{'type':_0x29b144(0x212)},'dependencies':{'type':_0x29b144(0x212)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x13dcfd=_0x4f472d['compile'](_0x183e03),_0x5952ca=_0x13dcfd(_0x8467d2);if(!_0x5952ca&&_0x13dcfd['errors'])return _0x13dcfd[_0x29b144(0x1cd)][_0x29b144(0x1c8)](_0x5e0508=>({'file':_0xf03512,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x29b144(0x21d)][_0x29b144(0x1cf)],'rule':_0x29b144(0x1e7),'message':_0x5e0508['instancePath']?_0x5e0508['instancePath']+'\x20'+_0x5e0508[_0x29b144(0x1b6)]:_0x29b144(0x1f9)+_0x5e0508[_0x29b144(0x1bc)][_0x29b144(0x1d3)]+'\x27','category':_0x29b144(0x233),'validator':'json-schema'}));return[];}catch(_0x575b69){return this['logger']?.[_0x29b144(0x1e8)](_0x29b144(0x1c0),{'error':_0x575b69['message']}),[{'file':_0xf03512,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x29b144(0x1bb),'message':_0x29b144(0x1ee)+_0x575b69[_0x29b144(0x1b6)],'category':'syntax','validator':_0x29b144(0x1bb)}];}}async[a0_0x471c3c(0x235)](_0x177a65,_0x226145={}){const _0x2b87da=a0_0x471c3c;try{const _0x181985=await a0_0x24ce6a['readFile'](_0x177a65,'utf-8'),_0x1a10cf=JSON['parse'](_0x181985),_0x1d312d=[];if(_0x1a10cf[_0x2b87da(0x21c)]){const _0x3f220a=_0x1a10cf[_0x2b87da(0x21c)];!_0x3f220a['strict']&&_0x1d312d[_0x2b87da(0x229)]({'file':_0x177a65,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2b87da(0x21d)]['WARNING'],'rule':_0x2b87da(0x1b9),'message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x2b87da(0x1b5),'validator':_0x2b87da(0x1ec)}),_0x3f220a[_0x2b87da(0x1f5)]===![]&&_0x1d312d['push']({'file':_0x177a65,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x2b87da(0x1ec)});}return _0x1d312d;}catch(_0x37486d){return this['logger']?.[_0x2b87da(0x1e8)]('tsconfig.json\x20validation\x20failed',{'error':_0x37486d['message']}),[{'file':_0x177a65,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2b87da(0x21d)][_0x2b87da(0x1cf)],'rule':_0x2b87da(0x1bb),'message':_0x2b87da(0x1ee)+_0x37486d[_0x2b87da(0x1b6)],'category':_0x2b87da(0x1d0),'validator':_0x2b87da(0x1bb)}];}}async['validateEnvFile'](_0x4358f4,_0x2b72a={}){const _0xb68071=a0_0x471c3c;try{const _0xa6584b=await a0_0x24ce6a[_0xb68071(0x1e5)](_0x4358f4,_0xb68071(0x1eb)),_0x4aec41=[],_0x4a763b=_0xa6584b['split']('\x0a'),_0x2b9c7b=[{'pattern':/password|passwd|pwd/i,'name':_0xb68071(0x1fd)},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0xb68071(0x1ff)},{'pattern':/token/i,'name':_0xb68071(0x1be)},{'pattern':/private[_-]?key/i,'name':_0xb68071(0x1b8)},{'pattern':/aws[_-]?access/i,'name':_0xb68071(0x1fa)}];return _0x4a763b['forEach']((_0x3455ce,_0x5132d4)=>{const _0x537ed8=_0xb68071,_0x59238d=_0x3455ce['trim']();if(!_0x59238d||_0x59238d['startsWith']('#'))return;if(_0x59238d[_0x537ed8(0x1c3)]('=')){const [_0xc7abda,_0x1a3de3]=_0x59238d['split']('='),_0x5e3e38=_0xc7abda[_0x537ed8(0x205)](),_0x517989=_0x1a3de3?.[_0x537ed8(0x1f4)]()||'',_0x457be4=_0x517989&&_0x517989!==''&&!_0x517989['startsWith']('$')&&_0x517989!==_0x537ed8(0x203)&&_0x517989!==_0x537ed8(0x1b7)&&_0x517989[_0x537ed8(0x1d9)]>0x5;if(_0x457be4)for(const {pattern:_0x37ac73,name:_0x4cb68f}of _0x2b9c7b){if(_0x37ac73['test'](_0x5e3e38)){_0x4aec41[_0x537ed8(0x229)]({'file':_0x4358f4,'line':_0x5132d4+0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x537ed8(0x207)],'rule':_0x537ed8(0x1d4),'message':'Potential\x20hardcoded\x20'+_0x4cb68f+'\x20detected\x20in\x20.env\x20file','category':_0x537ed8(0x1f8),'validator':'env-validator','remediation':_0x537ed8(0x1cc)});break;}}}}),_0x4aec41;}catch(_0x1ad7bf){return this['logger']?.[_0xb68071(0x1e8)](_0xb68071(0x21a),{'error':_0x1ad7bf['message']}),[];}}[a0_0x471c3c(0x1ce)](_0x34536b){const _0x54c6ca=a0_0x471c3c,_0xf01bdf=a0_0x1f0732[_0x54c6ca(0x1d8)](_0x34536b)[_0x54c6ca(0x205)](),_0x16074a=a0_0x1f0732[_0x54c6ca(0x221)](_0x34536b);if(_0xf01bdf===_0x54c6ca(0x1db))return'dockerfile';if(_0xf01bdf==='docker-compose.yml'||_0xf01bdf===_0x54c6ca(0x1fe))return'docker-compose';if(_0xf01bdf==='package.json')return _0x54c6ca(0x238);if(_0xf01bdf==='tsconfig.json')return _0x54c6ca(0x217);if(_0xf01bdf===_0x54c6ca(0x214)||_0xf01bdf[_0x54c6ca(0x1d2)]('.env'))return _0x54c6ca(0x223);if(_0x16074a[_0x54c6ca(0x1c3)](_0x54c6ca(0x218)))return'github-actions';if(_0x16074a['includes'](_0x54c6ca(0x209))||_0x16074a['includes']('k8s'))return'kubernetes';const _0x47ff5d=a0_0x1f0732['extname'](_0x34536b)['toLowerCase']();if(_0x47ff5d==='.tf'||_0x47ff5d==='.tfvars')return'terraform';if(_0x47ff5d==='.yml'||_0x47ff5d==='.yaml')return _0x54c6ca(0x1f3);if(_0x47ff5d===_0x54c6ca(0x21e))return _0x54c6ca(0x1c6);return'unknown';}['normalizeResults'](_0x377836){const _0x474e04=a0_0x471c3c;return _0x377836[_0x474e04(0x1c8)](_0x962202=>({'file':_0x962202[_0x474e04(0x202)],'line':_0x962202[_0x474e04(0x20a)]||0x1,'column':_0x962202[_0x474e04(0x1fc)]||0x1,'severity':_0x962202['severity']||STATIC_ANALYSIS['SEVERITY'][_0x474e04(0x1f0)],'rule':_0x962202['rule']||_0x474e04(0x1dc),'message':_0x962202['message']||'Validation\x20issue\x20detected','category':_0x962202['category']||_0x474e04(0x233),'validator':_0x962202[_0x474e04(0x1f6)],'cwe':_0x962202[_0x474e04(0x1f2)]||null,'remediation':_0x962202['remediation']||null,'references':_0x962202[_0x474e04(0x211)]||[]}));}[a0_0x471c3c(0x22a)](_0x4e5c44){const _0xc964cb=a0_0x471c3c,_0x476459={'error':STATIC_ANALYSIS[_0xc964cb(0x21d)][_0xc964cb(0x1cf)],'warning':STATIC_ANALYSIS[_0xc964cb(0x21d)][_0xc964cb(0x1f0)],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS['SEVERITY']['INFO']};return _0x476459[_0x4e5c44?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY'][_0xc964cb(0x1f0)];}['mapYamllintSeverity'](_0x2a6227){const _0x20d51a=a0_0x471c3c,_0x2f5c60={'error':STATIC_ANALYSIS['SEVERITY'][_0x20d51a(0x1cf)],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING']};return _0x2f5c60[_0x2a6227?.[_0x20d51a(0x205)]()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapCheckovSeverity'](_0x30a423){const _0x4d4c2d=a0_0x471c3c;return STATIC_ANALYSIS[_0x4d4c2d(0x21d)]['ERROR'];}async['getValidatorStatus'](){const _0x4faf97=await this['detectAvailableValidators']();return{'validators':_0x4faf97,'recommendations':this['getInstallRecommendations'](_0x4faf97)};}['getInstallRecommendations'](_0x2ff9b6){const _0x5344ac=a0_0x471c3c,_0x299d4a=[];return!_0x2ff9b6['checkov']&&_0x299d4a['push']({'validator':'checkov','reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':_0x5344ac(0x225),'priority':_0x5344ac(0x1c2)}),!_0x2ff9b6['hadolint']&&_0x299d4a[_0x5344ac(0x229)]({'validator':'hadolint','reason':_0x5344ac(0x210),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':_0x5344ac(0x1c2)}),!_0x2ff9b6['yamllint']&&_0x299d4a['push']({'validator':'yamllint','reason':_0x5344ac(0x1ca),'install':_0x5344ac(0x1ea),'priority':_0x5344ac(0x20d)}),!_0x2ff9b6[_0x5344ac(0x1e2)]&&_0x299d4a[_0x5344ac(0x229)]({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x299d4a;}}export default ConfigValidator;
|