@loxia-labs/loxia-autopilot-one 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/serviceRegistry.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/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/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/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/visualEditorTool.js +1 -1
- package/src/tools/webTool.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 +1 -1
- package/web-ui/build/static/{index-B5f---1N.js → index-BoJVEi2s.js} +78 -78
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x55b6c9=a0_0x5411;(function(_0x2a9365,_0xdd6ac8){const _0x6a1dcb=a0_0x5411,_0x3ef263=_0x2a9365();while(!![]){try{const _0x2c4f46=-parseInt(_0x6a1dcb(0x78))/0x1+parseInt(_0x6a1dcb(0xb0))/0x2+-parseInt(_0x6a1dcb(0x70))/0x3+-parseInt(_0x6a1dcb(0xbb))/0x4*(-parseInt(_0x6a1dcb(0x6e))/0x5)+parseInt(_0x6a1dcb(0xc1))/0x6*(-parseInt(_0x6a1dcb(0x83))/0x7)+parseInt(_0x6a1dcb(0x9b))/0x8+-parseInt(_0x6a1dcb(0xc0))/0x9*(-parseInt(_0x6a1dcb(0xb4))/0xa);if(_0x2c4f46===_0xdd6ac8)break;else _0x3ef263['push'](_0x3ef263['shift']());}catch(_0x1b7d52){_0x3ef263['push'](_0x3ef263['shift']());}}}(a0_0x584a,0x4a177));function a0_0x5411(_0xad9da5,_0x3b09c2){_0xad9da5=_0xad9da5-0x6d;const _0x584a48=a0_0x584a();let _0x5411f8=_0x584a48[_0xad9da5];return _0x5411f8;}import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x79ae3 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x55b6c9(0x94),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x55b6c9(0x72)][a0_0x55b6c9(0x97)](0x2),command=args[0x0]&&!args[0x0][a0_0x55b6c9(0xa9)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args['includes'](a0_0x55b6c9(0xb1))||args[a0_0x55b6c9(0xa5)]('-h'),'version':args[a0_0x55b6c9(0xa5)]('--version')||args['includes']('-v')};for(let i=0x0;i<args['length'];i++){args[i]===a0_0x55b6c9(0xbd)&&args[i+0x1]&&(flags[a0_0x55b6c9(0x82)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x55b6c9(0x8a)&&args[i+0x1]&&(flags[a0_0x55b6c9(0xc5)]=args[i+0x1]);}const explicitPort=flags[a0_0x55b6c9(0x82)],host=flags[a0_0x55b6c9(0xc5)]||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..',a0_0x55b6c9(0xc3)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x55b6c9(0xc6)));console[a0_0x55b6c9(0xa0)](a0_0x55b6c9(0x9f)+pkg['version']),process[a0_0x55b6c9(0xa2)](0x0);}if(flags[a0_0x55b6c9(0x6d)]||!command){const pkgPath=join(__dirname,'..',a0_0x55b6c9(0xc3)),pkg=JSON[a0_0x55b6c9(0x8c)](readFileSync(pkgPath,a0_0x55b6c9(0xc6)));console[a0_0x55b6c9(0xa0)](a0_0x55b6c9(0xa6)+pkg[a0_0x55b6c9(0xc7)]+a0_0x55b6c9(0xbf)+DEFAULT_PORT+a0_0x55b6c9(0xba)+DEFAULT_HOST+a0_0x55b6c9(0x7f)),process[a0_0x55b6c9(0xa2)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x179478}=await import('../src/services/portRegistry.js');return _0x179478();}async function discoverBackend(){const _0x3ad5d8=a0_0x55b6c9;try{const _0x439112=await getPortRegistry();await _0x439112[_0x3ad5d8(0x7b)]();const _0xa5bda8=await _0x439112[_0x3ad5d8(0x77)](_0x3ad5d8(0xa8));if(_0xa5bda8)return{'host':_0xa5bda8['host']||_0x3ad5d8(0x7c),'port':_0xa5bda8[_0x3ad5d8(0x82)],'pid':_0xa5bda8[_0x3ad5d8(0x7e)]};return null;}catch(_0x4978f9){return null;}}function a0_0x584a(){const _0x4b93ab=['PORT','slice','kill','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','unref','1045104KqxHsQ','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','\x0aPlease\x20start\x20the\x20server\x20first:','Loxia\x20Autopilot\x20One\x20v','log','index.js','exit','Waiting\x20for\x20server\x20to\x20start...','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','includes','\x0aLoxia\x20Autopilot\x20One\x20v','win32','backend','startsWith','\x20\x20API\x20Health:\x20\x20\x20','\x0aOpening\x20Web\x20UI\x20at\x20','Server\x20running\x20at\x20http://','ignore','/api/health\x0a','start','619560qpfFiz','--help','\x0aShutting\x20down\x20server...','SIGINT','581680tDCJIp','inherit','ceil','\x0aServer\x20registered\x20at\x20','SIGTERM','Starting\x20Loxia\x20server...\x0a',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','1268116rHAFeq','now','--port','darwin','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','36vEsUsv','564024jfKJOR','\x0a✓\x20Server\x20running\x20at\x20','package.json','Could\x20not\x20open\x20browser\x20automatically.','host','utf8','version','help','5crkzmp','src','1369986PCVGQo','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','argv','web','get','error','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','getService','135974uPwoyK','node','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','cleanupStaleEntries','localhost','Please\x20open\x20manually:\x20','pid',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','setTimeout','Starting\x20Terminal\x20UI...\x0a','port','7ivurAE','toString','Unknown\x20command:\x20','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','catch','LOXIA_HOST','LOXIA_PORT','--host','statusCode','parse','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','Looking\x20for\x20running\x20server...','Starting\x20Loxia\x20server\x20in\x20background...','open','platform','http://','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20','127.0.0.1','cmd'];a0_0x584a=function(){return _0x4b93ab;};return a0_0x584a();}async function checkServerRunning(_0x3e3c8b,_0x12123b,_0x14f45b=0x1){for(let _0x24debd=0x0;_0x24debd<_0x14f45b;_0x24debd++){const _0x128419=await new Promise(_0xe8bedc=>{const _0x2cf8f8=a0_0x5411,_0x10f895=a0_0x79ae3[_0x2cf8f8(0x74)](_0x2cf8f8(0x92)+_0x3e3c8b+':'+_0x12123b+'/api/health',_0x2ec930=>{const _0x2cbac2=_0x2cf8f8;_0xe8bedc(_0x2ec930[_0x2cbac2(0x8b)]===0xc8);});_0x10f895['on'](_0x2cf8f8(0x75),()=>_0xe8bedc(![])),_0x10f895[_0x2cf8f8(0x80)](0x7d0,()=>{_0x10f895['destroy'](),_0xe8bedc(![]);});});if(_0x128419)return!![];_0x24debd<_0x14f45b-0x1&&await new Promise(_0x16cef8=>setTimeout(_0x16cef8,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x2fe2fd=SERVER_STARTUP_TIMEOUT){const _0x4b6eba=a0_0x55b6c9,_0x15410d=Date[_0x4b6eba(0xbc)]();while(Date[_0x4b6eba(0xbc)]()-_0x15410d<_0x2fe2fd){const _0x2b016d=await discoverBackend();if(_0x2b016d){const _0xfa731b=await checkServerRunning(_0x2b016d['host'],_0x2b016d[_0x4b6eba(0x82)]);if(_0xfa731b)return _0x2b016d;}await new Promise(_0x251782=>setTimeout(_0x251782,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x4c2343,_0x57e8f1,_0x5f1fbc=SERVER_STARTUP_TIMEOUT){const _0x2ee7ff=a0_0x55b6c9,_0x56b383=Math[_0x2ee7ff(0xb6)](_0x5f1fbc/SERVER_CHECK_INTERVAL),_0x4ab25f=await checkServerRunning(_0x4c2343,_0x57e8f1,_0x56b383);return _0x4ab25f?{'host':_0x4c2343,'port':_0x57e8f1}:null;}function openBrowser(_0x223849){const _0x27a7fb=a0_0x55b6c9;let _0x34af75,_0x391c4e;if(process[_0x27a7fb(0x91)]===_0x27a7fb(0xbe))_0x34af75=_0x27a7fb(0x90),_0x391c4e=[_0x223849];else process[_0x27a7fb(0x91)]===_0x27a7fb(0xa7)?(_0x34af75=_0x27a7fb(0x95),_0x391c4e=['/c',_0x27a7fb(0xaf),'\x22\x22',_0x223849]):(_0x34af75='xdg-open',_0x391c4e=[_0x223849]);const _0x95d74d=spawn(_0x34af75,_0x391c4e,{'detached':!![],'stdio':_0x27a7fb(0xad)});_0x95d74d[_0x27a7fb(0x9a)](),_0x95d74d['on'](_0x27a7fb(0x75),()=>{const _0x13e2ef=_0x27a7fb;console[_0x13e2ef(0xa0)](_0x13e2ef(0xc4)),console[_0x13e2ef(0xa0)](_0x13e2ef(0x7d)+_0x223849);});}function startServer(_0x28fad2=![]){const _0xf22ae6=a0_0x55b6c9,_0x44e254={...process.env};explicitPort&&(_0x44e254[_0xf22ae6(0x89)]=explicitPort[_0xf22ae6(0x84)](),_0x44e254[_0xf22ae6(0x96)]=explicitPort[_0xf22ae6(0x84)]());flags[_0xf22ae6(0xc5)]&&(_0x44e254[_0xf22ae6(0x88)]=flags[_0xf22ae6(0xc5)]);const _0x265ad6=join(__dirname,'..',_0xf22ae6(0x6f),_0xf22ae6(0xa1)),_0x56fafa=spawn(_0xf22ae6(0x79),[_0x265ad6],{'cwd':join(__dirname,'..'),'env':_0x44e254,'stdio':_0x28fad2?[_0xf22ae6(0xad),_0xf22ae6(0xad),_0xf22ae6(0xad)]:'inherit','detached':_0x28fad2});return _0x28fad2&&_0x56fafa[_0xf22ae6(0x9a)](),_0x56fafa;}function startTerminalUIProcess(_0x346682,_0x3448e1){const _0x1c6a35=a0_0x55b6c9,_0xf01db=join(__dirname,'loxia-terminal.js'),_0x354a6e={...process.env,'LOXIA_PORT':_0x3448e1[_0x1c6a35(0x84)](),'LOXIA_HOST':_0x346682},_0x3b7085=spawn(_0x1c6a35(0x79),[_0xf01db],{'cwd':join(__dirname,'..'),'env':_0x354a6e,'stdio':_0x1c6a35(0xb5)});return _0x3b7085;}const commands={'web':async()=>{const _0x5cfa3b=a0_0x55b6c9;console[_0x5cfa3b(0xa0)]('Starting\x20Loxia\x20server...\x0a');const _0x489527=startServer(![]);console[_0x5cfa3b(0xa0)](_0x5cfa3b(0xa3));let _0xf668dc;explicitPort?_0xf668dc=await waitForServerAtPort(host,explicitPort):_0xf668dc=await waitForServerWithDiscovery();if(_0xf668dc){const _0x2179ab=_0x5cfa3b(0x92)+_0xf668dc[_0x5cfa3b(0xc5)]+':'+_0xf668dc['port'];console['log'](_0x5cfa3b(0xab)+_0x2179ab),openBrowser(_0x2179ab);}else console['log'](_0x5cfa3b(0x76));process['on'](_0x5cfa3b(0xb3),()=>_0x489527[_0x5cfa3b(0x98)](_0x5cfa3b(0xb3))),process['on'](_0x5cfa3b(0xb8),()=>_0x489527['kill']('SIGTERM')),_0x489527['on']('exit',_0x20f8eb=>process['exit'](_0x20f8eb||0x0));},'plus-web':async()=>{const _0x38c781=a0_0x55b6c9;await commands[_0x38c781(0x73)]();},'serve':async()=>{const _0x6f6341=a0_0x55b6c9;console[_0x6f6341(0xa0)](_0x6f6341(0xb9));const _0x4ba47a=startServer(![]);console['log'](_0x6f6341(0xa3));let _0x5d439e;explicitPort?_0x5d439e=await waitForServerAtPort(host,explicitPort):_0x5d439e=await waitForServerWithDiscovery();if(_0x5d439e){const _0x37241a=_0x6f6341(0x92)+_0x5d439e[_0x6f6341(0xc5)]+':'+_0x5d439e['port'];console[_0x6f6341(0xa0)](_0x6f6341(0xc2)+_0x37241a),console['log'](_0x6f6341(0x93)+_0x37241a),console[_0x6f6341(0xa0)](_0x6f6341(0x71)),console[_0x6f6341(0xa0)](_0x6f6341(0xaa)+_0x37241a+_0x6f6341(0xae));}else console['log'](_0x6f6341(0x9c)),console['log'](_0x6f6341(0x9d));process['on'](_0x6f6341(0xb3),()=>_0x4ba47a[_0x6f6341(0x98)](_0x6f6341(0xb3))),process['on'](_0x6f6341(0xb8),()=>_0x4ba47a[_0x6f6341(0x98)](_0x6f6341(0xb8))),_0x4ba47a['on'](_0x6f6341(0xa2),_0x2f7abe=>process[_0x6f6341(0xa2)](_0x2f7abe||0x0));},'terminal':async()=>{const _0x420081=a0_0x55b6c9;console[_0x420081(0xa0)](_0x420081(0x8e));let _0x9d75b9=await discoverBackend();explicitPort&&(_0x9d75b9={'host':host,'port':explicitPort});!_0x9d75b9&&(console[_0x420081(0x75)]('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x420081(0x75)](_0x420081(0x9e)),console['error'](_0x420081(0x7a)),console[_0x420081(0x75)](_0x420081(0x8d)),console[_0x420081(0x75)](_0x420081(0x86)),process[_0x420081(0xa2)](0x1));const _0x2602fe=await checkServerRunning(_0x9d75b9[_0x420081(0xc5)],_0x9d75b9[_0x420081(0x82)]);!_0x2602fe&&(console[_0x420081(0x75)](_0x420081(0xb7)+_0x9d75b9['host']+':'+_0x9d75b9[_0x420081(0x82)]+'\x20but\x20not\x20responding.'),console[_0x420081(0x75)](_0x420081(0x99)),process[_0x420081(0xa2)](0x1));console[_0x420081(0xa0)]('Server\x20discovered\x20at\x20'+_0x9d75b9[_0x420081(0xc5)]+':'+_0x9d75b9[_0x420081(0x82)]),console[_0x420081(0xa0)](_0x420081(0x81));const _0x347374=startTerminalUIProcess(_0x9d75b9[_0x420081(0xc5)],_0x9d75b9[_0x420081(0x82)]);process['on'](_0x420081(0xb3),()=>_0x347374[_0x420081(0x98)]('SIGINT')),process['on'](_0x420081(0xb8),()=>_0x347374[_0x420081(0x98)](_0x420081(0xb8))),_0x347374['on'](_0x420081(0xa2),_0x4b9879=>process['exit'](_0x4b9879||0x0));},'plus-terminal':async()=>{const _0x304cc5=a0_0x55b6c9;console[_0x304cc5(0xa0)](_0x304cc5(0x8f));const _0x489177=startServer(!![]);let _0x55942e;explicitPort?_0x55942e=await waitForServerAtPort(host,explicitPort):_0x55942e=await waitForServerWithDiscovery();!_0x55942e&&(console[_0x304cc5(0x75)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process['exit'](0x1));console['log'](_0x304cc5(0xac)+_0x55942e[_0x304cc5(0xc5)]+':'+_0x55942e[_0x304cc5(0x82)]),console[_0x304cc5(0xa0)](_0x304cc5(0x81));const _0x4ace15=startTerminalUIProcess(_0x55942e[_0x304cc5(0xc5)],_0x55942e[_0x304cc5(0x82)]);_0x4ace15['on']('exit',_0x4fa176=>{const _0x2ff6d5=_0x304cc5;console['log'](_0x2ff6d5(0xb2));try{process[_0x2ff6d5(0x98)](_0x489177[_0x2ff6d5(0x7e)],'SIGTERM');}catch(_0x33deeb){}process[_0x2ff6d5(0xa2)](_0x4fa176||0x0);}),process['on'](_0x304cc5(0xb3),()=>{const _0x542e94=_0x304cc5;_0x4ace15['kill'](_0x542e94(0xb3));}),process['on'](_0x304cc5(0xb8),()=>{const _0x49508f=_0x304cc5;_0x4ace15[_0x49508f(0x98)](_0x49508f(0xb8));});}};commands[command]?commands[command]()[a0_0x55b6c9(0x87)](_0x456520=>{const _0x4076a6=a0_0x55b6c9;console['error']('Error:',_0x456520['message']),process[_0x4076a6(0xa2)](0x1);}):(console[a0_0x55b6c9(0x75)](a0_0x55b6c9(0x85)+command),console[a0_0x55b6c9(0x75)](a0_0x55b6c9(0xa4)),process['exit'](0x1));
|
|
3
|
+
const a0_0x28fff5=a0_0x121f;(function(_0x1ba806,_0x4fc59d){const _0x5b2c14=a0_0x121f,_0x494198=_0x1ba806();while(!![]){try{const _0x535985=parseInt(_0x5b2c14(0xff))/0x1+parseInt(_0x5b2c14(0xfb))/0x2+-parseInt(_0x5b2c14(0xdc))/0x3+-parseInt(_0x5b2c14(0xeb))/0x4+parseInt(_0x5b2c14(0xf5))/0x5*(parseInt(_0x5b2c14(0x100))/0x6)+parseInt(_0x5b2c14(0xcc))/0x7+-parseInt(_0x5b2c14(0xd6))/0x8*(parseInt(_0x5b2c14(0xe2))/0x9);if(_0x535985===_0x4fc59d)break;else _0x494198['push'](_0x494198['shift']());}catch(_0x55d31e){_0x494198['push'](_0x494198['shift']());}}}(a0_0xeed5,0x64621));import{fileURLToPath}from'url';function a0_0x121f(_0x4e925c,_0x5c0f9e){_0x4e925c=_0x4e925c-0xc2;const _0xeed5a2=a0_0xeed5();let _0x121f46=_0xeed5a2[_0x4e925c];return _0x121f46;}function a0_0xeed5(){const _0x496e54=['package.json','unref','src','LOXIA_HOST',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','\x0a✓\x20Server\x20running\x20at\x20','Unknown\x20command:\x20','loxia-terminal.js','statusCode','length','includes','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','web','kill','index.js',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','Error:','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','4165665DUQVsh','Server\x20discovered\x20at\x20','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','argv','destroy','log','ignore','\x20but\x20not\x20responding.','\x0aLoxia\x20Autopilot\x20One\x20v','127.0.0.1','16fIcKTc','inherit','\x0aServer\x20registered\x20at\x20','darwin','\x0aPlease\x20start\x20the\x20server\x20first:','node','494469DRsRbP','SIGINT','now','startsWith','cmd','http://','3597138CHaqMo','SIGTERM','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','ceil','platform','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','--version','get','Server\x20running\x20at\x20http://','240308HHLpJY','version','PORT','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','Loxia\x20Autopilot\x20One\x20v','error','win32','exit','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','host','1128995UghUIh','start','xdg-open','utf8','localhost','/api/health','47788ctVtDc','\x0aShutting\x20down\x20server...','backend','port','590645YOLQak','6WOnrvZ','Waiting\x20for\x20server\x20to\x20start...','cleanupStaleEntries','--help','message','\x20\x20API\x20Health:\x20\x20\x20','--port','toString','slice','Looking\x20for\x20running\x20server...','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Starting\x20Loxia\x20server...\x0a','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','Starting\x20Terminal\x20UI...\x0a','getService','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','pid'];a0_0xeed5=function(){return _0x496e54;};return a0_0xeed5();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x398be7 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x28fff5(0xd5),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x28fff5(0xcf)][a0_0x28fff5(0x108)](0x2),command=args[0x0]&&!args[0x0][a0_0x28fff5(0xdf)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x28fff5(0xc4)](a0_0x28fff5(0x103))||args['includes']('-h'),'version':args['includes'](a0_0x28fff5(0xe8))||args[a0_0x28fff5(0xc4)]('-v')};for(let i=0x0;i<args[a0_0x28fff5(0xc3)];i++){args[i]===a0_0x28fff5(0x106)&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x28fff5(0xf4)]=args[i+0x1]);}const explicitPort=flags[a0_0x28fff5(0xfe)],host=flags[a0_0x28fff5(0xf4)]||DEFAULT_HOST;if(flags[a0_0x28fff5(0xec)]){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x28fff5(0xf8)));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xef)+pkg[a0_0x28fff5(0xec)]),process['exit'](0x0);}if(flags['help']||!command){const pkgPath=join(__dirname,'..',a0_0x28fff5(0x111)),pkg=JSON['parse'](readFileSync(pkgPath,'utf8'));console[a0_0x28fff5(0xd1)](a0_0x28fff5(0xd4)+pkg[a0_0x28fff5(0xec)]+a0_0x28fff5(0xcb)+DEFAULT_PORT+a0_0x28fff5(0xc9)+DEFAULT_HOST+a0_0x28fff5(0x115)),process[a0_0x28fff5(0xf2)](0x0);}async function getPortRegistry(){const {getPortRegistry:_0x314863}=await import('../src/services/portRegistry.js');return _0x314863();}async function discoverBackend(){const _0x3921f9=a0_0x28fff5;try{const _0x34391d=await getPortRegistry();await _0x34391d[_0x3921f9(0x102)]();const _0x51a924=await _0x34391d[_0x3921f9(0x10e)](_0x3921f9(0xfd));if(_0x51a924)return{'host':_0x51a924[_0x3921f9(0xf4)]||_0x3921f9(0xf9),'port':_0x51a924[_0x3921f9(0xfe)],'pid':_0x51a924[_0x3921f9(0x110)]};return null;}catch(_0x2b0cc4){return null;}}async function checkServerRunning(_0x58eb84,_0x41c8cc,_0x1273c4=0x1){for(let _0x4935a4=0x0;_0x4935a4<_0x1273c4;_0x4935a4++){const _0x39587d=await new Promise(_0x53de52=>{const _0x43fd84=a0_0x121f,_0x37ac1b=a0_0x398be7[_0x43fd84(0xe9)]('http://'+_0x58eb84+':'+_0x41c8cc+_0x43fd84(0xfa),_0x48d178=>{const _0x49313c=_0x43fd84;_0x53de52(_0x48d178[_0x49313c(0xc2)]===0xc8);});_0x37ac1b['on'](_0x43fd84(0xf0),()=>_0x53de52(![])),_0x37ac1b['setTimeout'](0x7d0,()=>{const _0x7fd836=_0x43fd84;_0x37ac1b[_0x7fd836(0xd0)](),_0x53de52(![]);});});if(_0x39587d)return!![];_0x4935a4<_0x1273c4-0x1&&await new Promise(_0x5a91b4=>setTimeout(_0x5a91b4,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x19f1a1=SERVER_STARTUP_TIMEOUT){const _0x2bb70e=a0_0x28fff5,_0x262682=Date['now']();while(Date[_0x2bb70e(0xde)]()-_0x262682<_0x19f1a1){const _0x51f540=await discoverBackend();if(_0x51f540){const _0x17a27b=await checkServerRunning(_0x51f540[_0x2bb70e(0xf4)],_0x51f540[_0x2bb70e(0xfe)]);if(_0x17a27b)return _0x51f540;}await new Promise(_0x5592f9=>setTimeout(_0x5592f9,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x21134e,_0x2a5f75,_0x384ae4=SERVER_STARTUP_TIMEOUT){const _0x2737a3=a0_0x28fff5,_0x41191f=Math[_0x2737a3(0xe5)](_0x384ae4/SERVER_CHECK_INTERVAL),_0x2a4221=await checkServerRunning(_0x21134e,_0x2a5f75,_0x41191f);return _0x2a4221?{'host':_0x21134e,'port':_0x2a5f75}:null;}function openBrowser(_0x193cb2){const _0x4d12a4=a0_0x28fff5;let _0x5eab38,_0x1db5e0;if(process['platform']===_0x4d12a4(0xd9))_0x5eab38='open',_0x1db5e0=[_0x193cb2];else process[_0x4d12a4(0xe6)]===_0x4d12a4(0xf1)?(_0x5eab38=_0x4d12a4(0xe0),_0x1db5e0=['/c',_0x4d12a4(0xf6),'\x22\x22',_0x193cb2]):(_0x5eab38=_0x4d12a4(0xf7),_0x1db5e0=[_0x193cb2]);const _0x574471=spawn(_0x5eab38,_0x1db5e0,{'detached':!![],'stdio':'ignore'});_0x574471[_0x4d12a4(0x112)](),_0x574471['on'](_0x4d12a4(0xf0),()=>{const _0x4cd4ac=_0x4d12a4;console[_0x4cd4ac(0xd1)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x4cd4ac(0xd1)]('Please\x20open\x20manually:\x20'+_0x193cb2);});}function startServer(_0x13fbde=![]){const _0x1a1f2c=a0_0x28fff5,_0x24ec26={...process.env};explicitPort&&(_0x24ec26['LOXIA_PORT']=explicitPort[_0x1a1f2c(0x107)](),_0x24ec26[_0x1a1f2c(0xed)]=explicitPort['toString']());flags['host']&&(_0x24ec26[_0x1a1f2c(0x114)]=flags[_0x1a1f2c(0xf4)]);const _0x471a07=join(__dirname,'..',_0x1a1f2c(0x113),_0x1a1f2c(0xc8)),_0x4866fa=spawn(_0x1a1f2c(0xdb),[_0x471a07],{'cwd':join(__dirname,'..'),'env':_0x24ec26,'stdio':_0x13fbde?[_0x1a1f2c(0xd2),'ignore',_0x1a1f2c(0xd2)]:_0x1a1f2c(0xd7),'detached':_0x13fbde});return _0x13fbde&&_0x4866fa[_0x1a1f2c(0x112)](),_0x4866fa;}function startTerminalUIProcess(_0x22a3c2,_0x3510c9){const _0x37277a=a0_0x28fff5,_0x5ea08b=join(__dirname,_0x37277a(0x118)),_0x4887f3={...process.env,'LOXIA_PORT':_0x3510c9[_0x37277a(0x107)](),'LOXIA_HOST':_0x22a3c2},_0x914ce=spawn(_0x37277a(0xdb),[_0x5ea08b],{'cwd':join(__dirname,'..'),'env':_0x4887f3,'stdio':_0x37277a(0xd7)});return _0x914ce;}const commands={'web':async()=>{const _0x5003d2=a0_0x28fff5;console[_0x5003d2(0xd1)](_0x5003d2(0x10b));const _0x18b385=startServer(![]);console[_0x5003d2(0xd1)]('Waiting\x20for\x20server\x20to\x20start...');let _0x9b3df4;explicitPort?_0x9b3df4=await waitForServerAtPort(host,explicitPort):_0x9b3df4=await waitForServerWithDiscovery();if(_0x9b3df4){const _0x36622c=_0x5003d2(0xe1)+_0x9b3df4[_0x5003d2(0xf4)]+':'+_0x9b3df4[_0x5003d2(0xfe)];console['log']('\x0aOpening\x20Web\x20UI\x20at\x20'+_0x36622c),openBrowser(_0x36622c);}else console['log']('\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.');process['on'](_0x5003d2(0xdd),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xdd))),process['on'](_0x5003d2(0xe3),()=>_0x18b385[_0x5003d2(0xc7)](_0x5003d2(0xe3))),_0x18b385['on'](_0x5003d2(0xf2),_0x55b532=>process[_0x5003d2(0xf2)](_0x55b532||0x0));},'plus-web':async()=>{const _0x5d9982=a0_0x28fff5;await commands[_0x5d9982(0xc6)]();},'serve':async()=>{const _0x435396=a0_0x28fff5;console[_0x435396(0xd1)](_0x435396(0x10b));const _0x15b9f7=startServer(![]);console[_0x435396(0xd1)](_0x435396(0x101));let _0x504923;explicitPort?_0x504923=await waitForServerAtPort(host,explicitPort):_0x504923=await waitForServerWithDiscovery();if(_0x504923){const _0x30d4a0='http://'+_0x504923['host']+':'+_0x504923[_0x435396(0xfe)];console[_0x435396(0xd1)](_0x435396(0x116)+_0x30d4a0),console['log']('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x30d4a0),console[_0x435396(0xd1)](_0x435396(0x10f)),console['log'](_0x435396(0x105)+_0x30d4a0+'/api/health\x0a');}else console['log'](_0x435396(0xe4)),console[_0x435396(0xd1)]('Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.');process['on']('SIGINT',()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xdd))),process['on'](_0x435396(0xe3),()=>_0x15b9f7[_0x435396(0xc7)](_0x435396(0xe3))),_0x15b9f7['on'](_0x435396(0xf2),_0x564667=>process['exit'](_0x564667||0x0));},'terminal':async()=>{const _0xd18747=a0_0x28fff5;console[_0xd18747(0xd1)](_0xd18747(0x109));let _0x36b9eb=await discoverBackend();explicitPort&&(_0x36b9eb={'host':host,'port':explicitPort});!_0x36b9eb&&(console['error'](_0xd18747(0xc5)),console['error'](_0xd18747(0xda)),console['error'](_0xd18747(0xee)),console[_0xd18747(0xf0)](_0xd18747(0xe7)),console['error'](_0xd18747(0x10a)),process[_0xd18747(0xf2)](0x1));const _0x2fdc3d=await checkServerRunning(_0x36b9eb[_0xd18747(0xf4)],_0x36b9eb[_0xd18747(0xfe)]);!_0x2fdc3d&&(console[_0xd18747(0xf0)](_0xd18747(0xd8)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]+_0xd18747(0xd3)),console['error'](_0xd18747(0x10c)),process['exit'](0x1));console['log'](_0xd18747(0xcd)+_0x36b9eb[_0xd18747(0xf4)]+':'+_0x36b9eb[_0xd18747(0xfe)]),console[_0xd18747(0xd1)](_0xd18747(0x10d));const _0x39b13d=startTerminalUIProcess(_0x36b9eb['host'],_0x36b9eb[_0xd18747(0xfe)]);process['on'](_0xd18747(0xdd),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xdd))),process['on'](_0xd18747(0xe3),()=>_0x39b13d[_0xd18747(0xc7)](_0xd18747(0xe3))),_0x39b13d['on'](_0xd18747(0xf2),_0x561973=>process[_0xd18747(0xf2)](_0x561973||0x0));},'plus-terminal':async()=>{const _0x56481a=a0_0x28fff5;console[_0x56481a(0xd1)]('Starting\x20Loxia\x20server\x20in\x20background...');const _0x5358c4=startServer(!![]);let _0x35b7fc;explicitPort?_0x35b7fc=await waitForServerAtPort(host,explicitPort):_0x35b7fc=await waitForServerWithDiscovery();!_0x35b7fc&&(console['error'](_0x56481a(0xf3)),process['exit'](0x1));console[_0x56481a(0xd1)](_0x56481a(0xea)+_0x35b7fc[_0x56481a(0xf4)]+':'+_0x35b7fc[_0x56481a(0xfe)]),console['log'](_0x56481a(0x10d));const _0xb5c835=startTerminalUIProcess(_0x35b7fc[_0x56481a(0xf4)],_0x35b7fc[_0x56481a(0xfe)]);_0xb5c835['on'](_0x56481a(0xf2),_0x5f4024=>{const _0x3c9d4a=_0x56481a;console[_0x3c9d4a(0xd1)](_0x3c9d4a(0xfc));try{process[_0x3c9d4a(0xc7)](_0x5358c4[_0x3c9d4a(0x110)],'SIGTERM');}catch(_0x2a1e59){}process[_0x3c9d4a(0xf2)](_0x5f4024||0x0);}),process['on'](_0x56481a(0xdd),()=>{const _0x26b80e=_0x56481a;_0xb5c835[_0x26b80e(0xc7)](_0x26b80e(0xdd));}),process['on'](_0x56481a(0xe3),()=>{const _0x3b32d6=_0x56481a;_0xb5c835['kill'](_0x3b32d6(0xe3));});}};commands[command]?commands[command]()['catch'](_0x1becdf=>{const _0x59ddc1=a0_0x28fff5;console[_0x59ddc1(0xf0)](_0x59ddc1(0xca),_0x1becdf[_0x59ddc1(0x104)]),process[_0x59ddc1(0xf2)](0x1);}):(console[a0_0x28fff5(0xf0)](a0_0x28fff5(0x117)+command),console[a0_0x28fff5(0xf0)](a0_0x28fff5(0xce)),process['exit'](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x1a6b25=a0_0x3173;(function(_0x591e48,_0x284758){const _0x256fdf=a0_0x3173,_0x5f4a48=_0x591e48();while(!![]){try{const _0x117042=parseInt(_0x256fdf(0x13c))/0x1*(parseInt(_0x256fdf(0x14b))/0x2)+-parseInt(_0x256fdf(0x133))/0x3*(parseInt(_0x256fdf(0x11e))/0x4)+-parseInt(_0x256fdf(0x147))/0x5*(-parseInt(_0x256fdf(0x143))/0x6)+parseInt(_0x256fdf(0x13f))/0x7+parseInt(_0x256fdf(0x127))/0x8+-parseInt(_0x256fdf(0x12b))/0x9+parseInt(_0x256fdf(0x134))/0xa;if(_0x117042===_0x284758)break;else _0x5f4a48['push'](_0x5f4a48['shift']());}catch(_0x246b04){_0x5f4a48['push'](_0x5f4a48['shift']());}}}(a0_0x2221,0xb1e09));import{spawn}from'child_process';import a0_0x2109d2 from'net';import a0_0x504f9e from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x504f9e[a0_0x1a6b25(0x144)](__filename),projectRoot=a0_0x504f9e[a0_0x1a6b25(0x144)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x1a6b25(0x135),SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x377176,_0x2edda6){return new Promise(_0x15fbd1=>{const _0xcd5da3=a0_0x3173,_0x406a18=new a0_0x2109d2[(_0xcd5da3(0x140))]();_0x406a18[_0xcd5da3(0x124)](0x7d0),_0x406a18['on']('connect',()=>{const _0x5a09dd=_0xcd5da3;_0x406a18[_0x5a09dd(0x11f)](),_0x15fbd1(!![]);}),_0x406a18['on'](_0xcd5da3(0x121),()=>{const _0x42a371=_0xcd5da3;_0x406a18[_0x42a371(0x11f)](),_0x15fbd1(![]);}),_0x406a18['on']('error',()=>{_0x406a18['destroy'](),_0x15fbd1(![]);}),_0x406a18[_0xcd5da3(0x139)](_0x2edda6,_0x377176);});}function a0_0x3173(_0x1621d7,_0x2a5bd4){_0x1621d7=_0x1621d7-0x11e;const _0x222119=a0_0x2221();let _0x317397=_0x222119[_0x1621d7];return _0x317397;}async function startServer(_0x5dcdac,_0x4d2374){const _0x13823a=a0_0x1a6b25;return console[_0x13823a(0x145)](_0x13823a(0x13b)),new Promise((_0x42e717,_0x3e4fff)=>{const _0x34caab=_0x13823a,_0x5c1b27=spawn('node',[a0_0x504f9e[_0x34caab(0x128)](projectRoot,'bin/cli.js'),_0x34caab(0x14a),_0x34caab(0x146),_0x34caab(0x129),_0x5dcdac,_0x34caab(0x126),_0x4d2374[_0x34caab(0x13e)]()],{'detached':![],'stdio':['ignore',_0x34caab(0x149),_0x34caab(0x149)]});_0x5c1b27[_0x34caab(0x142)]['on'](_0x34caab(0x137),()=>{}),_0x5c1b27['stderr']['on']('data',()=>{}),_0x5c1b27['on'](_0x34caab(0x131),_0x24cf85=>{const _0x3b3214=_0x34caab;console[_0x3b3214(0x131)](_0x3b3214(0x136),_0x24cf85[_0x3b3214(0x130)]),_0x3e4fff(_0x24cf85);});const _0x37d05d=Date[_0x34caab(0x132)](),_0x3670a0=setInterval(async()=>{const _0x25bf83=_0x34caab,_0x3b392d=await isServerRunning(_0x5dcdac,_0x4d2374);if(_0x3b392d)clearInterval(_0x3670a0),console[_0x25bf83(0x145)](_0x25bf83(0x12c)+_0x5dcdac+':'+_0x4d2374),_0x42e717();else Date[_0x25bf83(0x132)]()-_0x37d05d>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x3670a0),_0x5c1b27[_0x25bf83(0x12e)](),_0x3e4fff(new Error(_0x25bf83(0x122))));},0x1f4);});}async function main(){const _0x4f581f=a0_0x1a6b25;try{console['log'](_0x4f581f(0x125)),console[_0x4f581f(0x145)](_0x4f581f(0x12a)),console[_0x4f581f(0x145)](_0x4f581f(0x125)),console[_0x4f581f(0x145)]('');const _0x306891=process['argv'][_0x4f581f(0x13a)](0x2);let _0x49701d=DEFAULT_HOST,_0x6554c=DEFAULT_PORT;for(let _0xec5cf0=0x0;_0xec5cf0<_0x306891[_0x4f581f(0x138)];_0xec5cf0++){if(_0x306891[_0xec5cf0]===_0x4f581f(0x129)&&_0x306891[_0xec5cf0+0x1])_0x49701d=_0x306891[_0xec5cf0+0x1],_0xec5cf0++;else _0x306891[_0xec5cf0]===_0x4f581f(0x126)&&_0x306891[_0xec5cf0+0x1]&&(_0x6554c=parseInt(_0x306891[_0xec5cf0+0x1],0xa),_0xec5cf0++);}console[_0x4f581f(0x145)](_0x4f581f(0x14d)+_0x49701d+':'+_0x6554c+_0x4f581f(0x123));const _0x4d79f6=await isServerRunning(_0x49701d,_0x6554c);!_0x4d79f6?(console[_0x4f581f(0x145)](_0x4f581f(0x120)),await startServer(_0x49701d,_0x6554c)):console[_0x4f581f(0x145)](_0x4f581f(0x14c)+_0x49701d+':'+_0x6554c),console[_0x4f581f(0x145)](''),console['log'](_0x4f581f(0x141)),console[_0x4f581f(0x145)](''),await new Promise(_0x1b87d5=>setTimeout(_0x1b87d5,0x1f4)),process.env.LOXIA_HOST=_0x49701d,process.env.LOXIA_PORT=_0x6554c['toString'](),await import(_0x4f581f(0x148));}catch(_0xedc848){console[_0x4f581f(0x131)](''),console[_0x4f581f(0x131)]('❌\x20Failed\x20to\x20start\x20Terminal\x20UI:'),console['error']('\x20\x20',_0xedc848[_0x4f581f(0x130)]),console['error'](''),console[_0x4f581f(0x131)](_0x4f581f(0x12d)),console['error'](_0x4f581f(0x12f)),console['error'](_0x4f581f(0x13d)),console[_0x4f581f(0x131)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x4f581f(0x131)](''),process[_0x4f581f(0x14e)](0x1);}}main();function a0_0x2221(){const _0x86a2e2=['slice','🚀\x20Starting\x20Loxia\x20server...','1331961apwmIZ','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','toString','2431030ONnzyw','Socket','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','stdout','71892lGfkbp','dirname','log','web','5WajJDk','../src/interfaces/terminal/index.js','pipe','--ui','2YwnJti','✓\x20Server\x20is\x20already\x20running\x20at\x20','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','exit','4064OSBmpq','destroy','✗\x20Server\x20is\x20not\x20running','timeout','Server\x20startup\x20timeout','...','setTimeout','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','--port','4579920cPTKSZ','join','--host','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','6326721kxbFpR','✓\x20Server\x20started\x20at\x20','💡\x20Troubleshooting:','kill','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','message','error','now','2820cMiHRN','1228710aHhxhm','localhost','Failed\x20to\x20start\x20server:','data','length','connect'];a0_0x2221=function(){return _0x86a2e2;};return a0_0x2221();}
|
package/bin/loxia-terminal.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
function a0_0x1cde(_0x16908c,_0x4af050){_0x16908c=_0x16908c-0x174;const _0x260e45=a0_0x260e();let _0x1cde70=_0x260e45[_0x16908c];return _0x1cde70;}const a0_0x23204e=a0_0x1cde;(function(_0x17e14e,_0x313578){const _0x1f772c=a0_0x1cde,_0x2c39e7=_0x17e14e();while(!![]){try{const _0x2b105a=-parseInt(_0x1f772c(0x192))/0x1+-parseInt(_0x1f772c(0x18d))/0x2*(-parseInt(_0x1f772c(0x193))/0x3)+parseInt(_0x1f772c(0x185))/0x4*(-parseInt(_0x1f772c(0x18a))/0x5)+parseInt(_0x1f772c(0x198))/0x6+parseInt(_0x1f772c(0x17a))/0x7*(parseInt(_0x1f772c(0x178))/0x8)+-parseInt(_0x1f772c(0x177))/0x9+parseInt(_0x1f772c(0x174))/0xa;if(_0x2b105a===_0x313578)break;else _0x2c39e7['push'](_0x2c39e7['shift']());}catch(_0x5b9a2b){_0x2c39e7['push'](_0x2c39e7['shift']());}}}(a0_0x260e,0xb4e04));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x23204e(0x176)]['slice'](0x2),options={'host':a0_0x23204e(0x189),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x23204e(0x18e)||arg==='-h')options[a0_0x23204e(0x17b)]=args[++i];else{if(arg===a0_0x23204e(0x17f)||arg==='-p')options[a0_0x23204e(0x17e)]=parseInt(args[++i],0xa);else arg===a0_0x23204e(0x18b)&&(console[a0_0x23204e(0x179)](a0_0x23204e(0x195)),process[a0_0x23204e(0x183)](0x0));}}process.env.LOXIA_HOST&&(options[a0_0x23204e(0x17b)]=process.env.LOXIA_HOST);process.env.LOXIA_PORT&&(options[a0_0x23204e(0x17e)]=parseInt(process.env.LOXIA_PORT,0xa));!process['stdin']['isTTY']&&(console[a0_0x23204e(0x180)](a0_0x23204e(0x186)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x190)),console[a0_0x23204e(0x180)](a0_0x23204e(0x187)),console[a0_0x23204e(0x180)](a0_0x23204e(0x17c)),console['error'](a0_0x23204e(0x197)),console['error'](a0_0x23204e(0x184)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x196)),console['error'](a0_0x23204e(0x175)),console[a0_0x23204e(0x180)](''),console[a0_0x23204e(0x180)](a0_0x23204e(0x181)),console[a0_0x23204e(0x180)](a0_0x23204e(0x18c)),process['exit'](0x1));console[a0_0x23204e(0x179)](a0_0x23204e(0x188)),console[a0_0x23204e(0x179)](a0_0x23204e(0x194)+options['host']+':'+options['port']),console[a0_0x23204e(0x179)]('Press\x20Ctrl+C\x20to\x20exit\x0a');const instance=startTerminalUI(options);instance['waitUntilExit']()[a0_0x23204e(0x17d)](()=>{const _0x56f5dc=a0_0x23204e;console[_0x56f5dc(0x179)](_0x56f5dc(0x182)),process['exit'](0x0);})[a0_0x23204e(0x191)](_0x209bca=>{const _0x103f8a=a0_0x23204e;console[_0x103f8a(0x180)](_0x103f8a(0x18f),_0x209bca),process['exit'](0x1);});function a0_0x260e(){const _0x29d714=['\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','Starting\x20Loxia\x20Terminal\x20UI...','localhost','600205vCrKde','--help','\x20\x20npm\x20start','64qmiUCV','--host','\x0aTerminal\x20UI\x20error:','The\x20terminal\x20UI\x20cannot\x20run\x20in:','catch','867333prmiDx','16392KeMDIG','Connecting\x20to:\x20','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','5509554xmFsHr','8598190rzgLFB','\x20\x20npm\x20run\x20terminal-ui','argv','13179969UbmfBk','528YijLeF','log','144221YEHJoy','host','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','then','port','--port','error','Or\x20use\x20the\x20web\x20UI\x20instead:','\x0aTerminal\x20UI\x20exited','exit','\x20\x20-\x20Some\x20CI/CD\x20environments','8HEpDfm','ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'];a0_0x260e=function(){return _0x29d714;};return a0_0x260e();}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
function a0_0x852a(_0x3a0236,_0xd88c98){_0x3a0236=_0x3a0236-0x9e;const _0x5155ef=a0_0x5155();let _0x852ad9=_0x5155ef[_0x3a0236];return _0x852ad9;}const a0_0x5f449d=a0_0x852a;(function(_0x29fb10,_0x393420){const _0x19932f=a0_0x852a,_0x59d028=_0x29fb10();while(!![]){try{const _0x4b7d1b=parseInt(_0x19932f(0xc8))/0x1*(-parseInt(_0x19932f(0xc5))/0x2)+-parseInt(_0x19932f(0xbf))/0x3*(parseInt(_0x19932f(0xcf))/0x4)+-parseInt(_0x19932f(0xb8))/0x5*(-parseInt(_0x19932f(0xd1))/0x6)+-parseInt(_0x19932f(0xba))/0x7*(-parseInt(_0x19932f(0xaa))/0x8)+-parseInt(_0x19932f(0xad))/0x9*(parseInt(_0x19932f(0xa3))/0xa)+-parseInt(_0x19932f(0xc2))/0xb+parseInt(_0x19932f(0xb3))/0xc;if(_0x4b7d1b===_0x393420)break;else _0x59d028['push'](_0x59d028['shift']());}catch(_0x1bad5d){_0x59d028['push'](_0x59d028['shift']());}}}(a0_0x5155,0xc0878));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x5459b9 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;function a0_0x5155(){const _0x4e7bd7=['message','784BbDjpD','inherit','killed','1654reGYpL','http://localhost:','data','get','╔════════════════════════════════════════════════╗','includes','bin','1889468saHayO','error','29982mrgGbV','Error\x20during\x20startup:','SIGINT','[SERVER\x20ERROR]\x20','destroy','loxia-terminal.js','50MpsWyN','Server\x20exited\x20with\x20code\x20','trim','Server\x20returned\x20','SIGTERM','\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','8NzOssS','SIGKILL','log','1918827Dkgrtv','✅\x20Server\x20is\x20ready!','Timeout','ignore','pipe','Failed\x20to\x20start\x20Terminal\x20UI:','35144052mjAjkW','statusCode','toString','ExperimentalWarning','\x0a👋\x20Terminal\x20UI\x20closed.','1220gainny','stderr','7232981gtSdxd','index.js','/health','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','exit','9FKJpLJ','node','kill','13872518jkWzhE','src'];a0_0x5155=function(){return _0x4e7bd7;};return a0_0x5155();}async function checkServerReady(_0x276a40=0xa,_0x1fc259=0x1f4){const _0x2ebf42=a0_0x852a;for(let _0x12f2ad=0x0;_0x12f2ad<_0x276a40;_0x12f2ad++){try{return await new Promise((_0x263b4f,_0x387e68)=>{const _0x38a6b7=a0_0x852a,_0x40f342=a0_0x5459b9[_0x38a6b7(0xcb)](_0x38a6b7(0xc9)+SERVER_PORT+_0x38a6b7(0xbc),_0x2e5beb=>{const _0x5917cf=_0x38a6b7;_0x2e5beb[_0x5917cf(0xb4)]===0xc8?_0x263b4f():_0x387e68(new Error(_0x5917cf(0xa6)+_0x2e5beb[_0x5917cf(0xb4)]));});_0x40f342['on'](_0x38a6b7(0xd0),_0x387e68),_0x40f342['setTimeout'](0x3e8,()=>{const _0x3a13d7=_0x38a6b7;_0x40f342[_0x3a13d7(0xa1)](),_0x387e68(new Error(_0x3a13d7(0xaf)));});}),console[_0x2ebf42(0xac)](_0x2ebf42(0xae)),!![];}catch(_0x39af5a){_0x12f2ad<_0x276a40-0x1&&await new Promise(_0x424557=>setTimeout(_0x424557,_0x1fc259));}}return console['log'](_0x2ebf42(0xa9)),![];}async function startServer(){return new Promise(_0x1612b2=>{const _0x1effb2=a0_0x852a;console[_0x1effb2(0xac)]('🚀\x20Starting\x20Loxia\x20server...');const _0x4988dc=join(rootDir,_0x1effb2(0xc3),_0x1effb2(0xbb));serverProcess=spawn(_0x1effb2(0xc0),[_0x4988dc],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x1effb2(0xb0),'pipe',_0x1effb2(0xb1)],'detached':![]}),serverProcess['stdout']['on']('data',_0x3c6f71=>{const _0x5ab783=_0x1effb2,_0x460560=_0x3c6f71['toString']()[_0x5ab783(0xa5)]();_0x460560&&console[_0x5ab783(0xac)]('[SERVER]\x20'+_0x460560);}),serverProcess[_0x1effb2(0xb9)]['on'](_0x1effb2(0xca),_0x5df387=>{const _0x1f5055=_0x1effb2,_0x11a45a=_0x5df387[_0x1f5055(0xb5)]()['trim']();_0x11a45a&&!_0x11a45a[_0x1f5055(0xcd)](_0x1f5055(0xb6))&&console[_0x1f5055(0xd0)](_0x1f5055(0xa0)+_0x11a45a);}),serverProcess['on'](_0x1effb2(0xd0),_0x2986ae=>{const _0x25530d=_0x1effb2;console[_0x25530d(0xd0)]('Failed\x20to\x20start\x20server:',_0x2986ae['message']),process[_0x25530d(0xbe)](0x1);}),serverProcess['on'](_0x1effb2(0xbe),(_0x577276,_0x3451df)=>{const _0x14bec0=_0x1effb2;_0x577276!==null&&_0x577276!==0x0&&(console[_0x14bec0(0xd0)](_0x14bec0(0xa4)+_0x577276),process[_0x14bec0(0xbe)](_0x577276));}),setTimeout(_0x1612b2,STARTUP_WAIT);});}async function startTerminalUI(){const _0x34f704=a0_0x852a;console[_0x34f704(0xac)]('🖥️\x20\x20Starting\x20Terminal\x20UI...'),console[_0x34f704(0xac)]('');const _0x3630fa=join(rootDir,_0x34f704(0xce),_0x34f704(0xa2)),_0x34804a=spawn(_0x34f704(0xc0),[_0x3630fa],{'cwd':rootDir,'env':{...process.env},'stdio':_0x34f704(0xc6)});return _0x34804a['on']('error',_0x4e7d55=>{const _0x1e0c83=_0x34f704;console[_0x1e0c83(0xd0)](_0x1e0c83(0xb2),_0x4e7d55[_0x1e0c83(0xc4)]),cleanup(),process[_0x1e0c83(0xbe)](0x1);}),_0x34804a['on'](_0x34f704(0xbe),_0x106c77=>{const _0x11909c=_0x34f704;console[_0x11909c(0xac)](_0x11909c(0xb7)),cleanup(),process[_0x11909c(0xbe)](_0x106c77||0x0);}),_0x34804a;}function cleanup(){const _0x3e677e=a0_0x852a;serverProcess&&!serverProcess[_0x3e677e(0xc7)]&&(console[_0x3e677e(0xac)]('🛑\x20Stopping\x20server...'),serverProcess[_0x3e677e(0xc1)](_0x3e677e(0xa7)),setTimeout(()=>{const _0x476a47=_0x3e677e;!serverProcess['killed']&&serverProcess[_0x476a47(0xc1)](_0x476a47(0xab));},0x1388));}process['on'](a0_0x5f449d(0x9f),()=>{const _0x2dfd7f=a0_0x5f449d;console['log'](_0x2dfd7f(0xbd)),cleanup(),process['exit'](0x0);}),process['on']('SIGTERM',()=>{const _0x53cc10=a0_0x5f449d;console[_0x53cc10(0xac)](_0x53cc10(0xa8)),cleanup(),process['exit'](0x0);}),process['on'](a0_0x5f449d(0xbe),()=>{cleanup();});async function main(){const _0x460e3c=a0_0x5f449d;console[_0x460e3c(0xac)](_0x460e3c(0xcc)),console[_0x460e3c(0xac)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x460e3c(0xac)]('╚════════════════════════════════════════════════╝'),console[_0x460e3c(0xac)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x25bba2){console['error'](_0x460e3c(0x9e),_0x25bba2[_0x460e3c(0xc4)]),cleanup(),process[_0x460e3c(0xbe)](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0xe1d980=a0_0xdba0;(function(_0x1776c8,_0x505671){const _0x54df35=a0_0xdba0,_0x4e1f0e=_0x1776c8();while(!![]){try{const _0x553b11=-parseInt(_0x54df35(0x1f9))/0x1+-parseInt(_0x54df35(0x216))/0x2+-parseInt(_0x54df35(0x215))/0x3+parseInt(_0x54df35(0x22a))/0x4+parseInt(_0x54df35(0x1f1))/0x5+-parseInt(_0x54df35(0x220))/0x6*(-parseInt(_0x54df35(0x219))/0x7)+parseInt(_0x54df35(0x1fa))/0x8*(parseInt(_0x54df35(0x229))/0x9);if(_0x553b11===_0x505671)break;else _0x4e1f0e['push'](_0x4e1f0e['shift']());}catch(_0x4227c2){_0x4e1f0e['push'](_0x4e1f0e['shift']());}}}(a0_0x18e4,0x35ad2));import{exec}from'child_process';function a0_0x18e4(){const _0x9c1b7a=['═══════════════════════════════════════════════════════════','includes','--user','platform','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','headers','\x0a═══════════════════════════════════════════════════════════','44073IwDdyL','265248gJiBoc','pipe','dirname','\x0aYou\x20can\x20manually\x20install\x20scanners:','message','url','═══════════════════════════════════════════════════════════\x0a','semgrep\x20--version','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','/opt/homebrew','\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a','log','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','statusCode','\x20\x20Platform:\x20','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','pip-audit','yamllint','\x20already\x20installed','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','72275mQwLhP','stdout','join','checkov','trim','python3\x20--version','promises','location','197634ufHSjj','968aBCGWJ','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','https','\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','semgrep','python3','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','❌\x20Installation\x20failed:','startsWith','\x20\x20\x20Downloading\x20from\x20','🐍\x20Checking\x20Python\x20scanners...','bandit','error','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','\x20\x20\x20pip\x20install\x20semgrep\x0a','exit','get','\x20\x20Installation\x20Complete','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','Failed\x20to\x20download:\x20HTTP\x20','node_modules','arch','eslint-plugin-security','967302dpogzK','231964PZKLZO','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','\x20\x20\x20✅\x20Python\x20found:\x20','319557fRHCDy','chmod','\x20installed\x20successfully','then','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','\x20\x20Installing\x20Security\x20Scanners','/usr/local/Cellar','24hSkzQl'];a0_0x18e4=function(){return _0x9c1b7a;};return a0_0x18e4();}import{promisify}from'util';function a0_0xdba0(_0x1c19d9,_0x549514){_0x1c19d9=_0x1c19d9-0x1ec;const _0x18e432=a0_0x18e4();let _0xdba04d=_0x18e432[_0x1c19d9];return _0xdba04d;}import a0_0x560669 from'https';import a0_0x54ea6f from'http';import a0_0x66471f from'fs';import a0_0x4cc32a from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x4cc32a[a0_0xe1d980(0x22c)](__filename),SCANNER_DIR=a0_0x4cc32a[a0_0xe1d980(0x1f3)](__dirname,'..',a0_0xe1d980(0x212),'.scanners'),SEMGREP_VERSION=a0_0xe1d980(0x236);console['log'](a0_0xe1d980(0x221)),console[a0_0xe1d980(0x235)](a0_0xe1d980(0x21e)),console['log'](a0_0xe1d980(0x239)+process[a0_0xe1d980(0x224)]+'\x20('+process['arch']+')'),console['log'](a0_0xe1d980(0x230));async function installScanners(){const _0x265b08=a0_0xe1d980;await a0_0x66471f[_0x265b08(0x1f7)]['mkdir'](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x265b08(0x228)),console[_0x265b08(0x235)](_0x265b08(0x20e)),console[_0x265b08(0x235)](_0x265b08(0x230));}async function checkESLintSecurity(){const _0x2dc05d=a0_0xe1d980;console[_0x2dc05d(0x235)](_0x2dc05d(0x20f));try{await import(_0x2dc05d(0x214)),console[_0x2dc05d(0x235)](_0x2dc05d(0x202));}catch(_0x3bdbeb){console[_0x2dc05d(0x235)]('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x2dc05d(0x235)](_0x2dc05d(0x234));}}async function installSemgrep(){const _0x32e63d=a0_0xe1d980;console['log']('🔍\x20Installing\x20Semgrep...');const _0x1ec99a=process['platform'],_0x29a018=process[_0x32e63d(0x213)];try{const _0x28b576=await execAsync(_0x32e63d(0x231),{'timeout':0x1388});console[_0x32e63d(0x235)](_0x32e63d(0x217)+_0x28b576[_0x32e63d(0x1f2)][_0x32e63d(0x1f5)]()),console[_0x32e63d(0x235)](_0x32e63d(0x1ec));return;}catch(_0x3ba3fd){console[_0x32e63d(0x235)]('\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...');}const _0x1dea9f=getSemgrepBinaryInfo(_0x1ec99a,_0x29a018);if(!_0x1dea9f){console[_0x32e63d(0x235)](_0x32e63d(0x1ff)+_0x1ec99a+'-'+_0x29a018),console[_0x32e63d(0x235)](_0x32e63d(0x21d));return;}try{const _0x543e7c=a0_0x4cc32a['join'](SCANNER_DIR,'semgrep');console[_0x32e63d(0x235)](_0x32e63d(0x205)+_0x1dea9f[_0x32e63d(0x22f)]+'...'),await downloadFile(_0x1dea9f[_0x32e63d(0x22f)],_0x543e7c),await a0_0x66471f[_0x32e63d(0x1f7)][_0x32e63d(0x21a)](_0x543e7c,0x1ed),console[_0x32e63d(0x235)](_0x32e63d(0x209)),console['log']('\x20\x20\x20Location:\x20'+_0x543e7c+'\x0a'),console['log'](_0x32e63d(0x1fd)),console[_0x32e63d(0x235)](_0x32e63d(0x20b));}catch(_0x406ecb){console[_0x32e63d(0x235)](_0x32e63d(0x237)+_0x406ecb[_0x32e63d(0x22e)]),console[_0x32e63d(0x235)]('\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a');}}function getSemgrepBinaryInfo(_0x274213,_0x38aacc){return null;}async function installPythonScanners(){const _0x1cec4a=a0_0xe1d980;console[_0x1cec4a(0x235)](_0x1cec4a(0x206));let _0x28941c=null;try{await execAsync(_0x1cec4a(0x1f6),{'timeout':0x1388}),_0x28941c=_0x1cec4a(0x201);}catch(_0x391a45){try{await execAsync('python\x20--version',{'timeout':0x1388}),_0x28941c='python';}catch(_0x3b5452){console[_0x1cec4a(0x235)](_0x1cec4a(0x232)),console[_0x1cec4a(0x235)](_0x1cec4a(0x1fe)),console['log'](_0x1cec4a(0x226));return;}}console[_0x1cec4a(0x235)](_0x1cec4a(0x218)+_0x28941c),await installViaPip(_0x1cec4a(0x200),_0x28941c),await installViaPip(_0x1cec4a(0x207),_0x28941c),await installViaPip(_0x1cec4a(0x1ed),_0x28941c),await installViaPip(_0x1cec4a(0x1f4),_0x28941c),await installViaPip(_0x1cec4a(0x1ee),_0x28941c),console[_0x1cec4a(0x235)]('');}async function isHomebrewPython(_0x213cda){const _0x2495f3=a0_0xe1d980;try{const {stdout:_0x28e832}=await execAsync(_0x213cda+_0x2495f3(0x225),{'timeout':0x1388});return _0x28e832[_0x2495f3(0x222)](_0x2495f3(0x233))||_0x28e832[_0x2495f3(0x222)](_0x2495f3(0x21f));}catch{return![];}}async function installViaPip(_0x47bd87,_0x5214ce){const _0x85f596=a0_0xe1d980;try{const _0x2eb2cb=await execAsync(_0x5214ce+'\x20-m\x20pip\x20show\x20'+_0x47bd87,{'timeout':0x1388});return console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x1ef)),!![];}catch(_0x543ed3){console['log']('\x20\x20\x20Installing\x20'+_0x47bd87+'...');try{const _0x58b653=await isHomebrewPython(_0x5214ce),_0x23ec66=_0x58b653?'':_0x85f596(0x223),_0x2af1b9=(_0x5214ce+'\x20-m\x20pip\x20install\x20'+_0x23ec66+'\x20'+_0x47bd87)['replace'](/\s+/g,'\x20')[_0x85f596(0x1f5)]();return await execAsync(_0x2af1b9,{'timeout':0xea60}),console[_0x85f596(0x235)]('\x20\x20\x20✅\x20'+_0x47bd87+_0x85f596(0x21b)),!![];}catch(_0x2ea39f){return console[_0x85f596(0x235)](_0x85f596(0x1fb)+_0x47bd87+':\x20'+_0x2ea39f[_0x85f596(0x22e)]),console[_0x85f596(0x235)](_0x85f596(0x1f0)+_0x47bd87),![];}}}async function downloadFile(_0x5effd4,_0x4d3db8){return new Promise((_0xe061c4,_0x7120a2)=>{const _0x1bee71=a0_0xdba0,_0x316da5=_0x5effd4[_0x1bee71(0x204)](_0x1bee71(0x1fc))?a0_0x560669:a0_0x54ea6f;_0x316da5[_0x1bee71(0x20d)](_0x5effd4,_0x4b4c2c=>{const _0x3d509b=_0x1bee71;if(_0x4b4c2c[_0x3d509b(0x238)]===0x12e||_0x4b4c2c['statusCode']===0x12d){downloadFile(_0x4b4c2c[_0x3d509b(0x227)][_0x3d509b(0x1f8)],_0x4d3db8)[_0x3d509b(0x21c)](_0xe061c4)['catch'](_0x7120a2);return;}if(_0x4b4c2c[_0x3d509b(0x238)]!==0xc8){_0x7120a2(new Error(_0x3d509b(0x211)+_0x4b4c2c[_0x3d509b(0x238)]));return;}const _0x52e180=createWriteStream(_0x4d3db8);_0x4b4c2c[_0x3d509b(0x22b)](_0x52e180),_0x52e180['on']('finish',()=>{_0x52e180['close'](),_0xe061c4();}),_0x52e180['on'](_0x3d509b(0x208),_0x5bd715=>{a0_0x66471f['unlink'](_0x4d3db8,()=>{}),_0x7120a2(_0x5bd715);});})['on'](_0x1bee71(0x208),_0x7120a2);});}installScanners()['catch'](_0x1ad224=>{const _0x3074c5=a0_0xe1d980;console[_0x3074c5(0x208)](_0x3074c5(0x203),_0x1ad224[_0x3074c5(0x22e)]),console[_0x3074c5(0x208)](_0x3074c5(0x22d)),console[_0x3074c5(0x208)](_0x3074c5(0x210)),console[_0x3074c5(0x208)](_0x3074c5(0x20a)),process[_0x3074c5(0x20c)](0x0);});
|
package/scripts/watchdog.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
function a0_0x5e3b(){const _0x428527=['slice','win32','argv','147bYDwij','63SDFpiB','path','unref','toISOString','ms\x20before\x20restart...','message','--pid','\x20still\x20running\x20after\x20','join','ignore','5762580ZdMcLL','[Watchdog]\x20Parent\x20process\x20','command','pid','split','[Watchdog]\x20Error:\x20','963804tGoLCl','ms,\x20proceeding\x20anyway','\x20has\x20terminated','6198GaVMow','delay','334072FmTrLe','exit','948084djVikT','[Watchdog]\x20Executing:\x20','[Watchdog]\x20Started\x20with\x20options:','141293IsbGdZ','[Watchdog]\x20Waiting\x20','appendFileSync','4854510JYLlci','loxia\x20web','log','\x20to\x20exit...','catch','now','10opzgbQ','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','platform','--command'];a0_0x5e3b=function(){return _0x428527;};return a0_0x5e3b();}const a0_0x16a350=a0_0xfbf3;(function(_0x408048,_0x3fe22c){const _0x33746a=a0_0xfbf3,_0x3d6ae6=_0x408048();while(!![]){try{const _0x3839be=parseInt(_0x33746a(0xb8))/0x1+parseInt(_0x33746a(0xb1))/0x2*(parseInt(_0x33746a(0x9d))/0x3)+-parseInt(_0x33746a(0xae))/0x4*(-parseInt(_0x33746a(0xc1))/0x5)+-parseInt(_0x33746a(0xb5))/0x6+parseInt(_0x33746a(0x9e))/0x7*(-parseInt(_0x33746a(0xb3))/0x8)+-parseInt(_0x33746a(0xbb))/0x9+parseInt(_0x33746a(0xa8))/0xa;if(_0x3839be===_0x3fe22c)break;else _0x3d6ae6['push'](_0x3d6ae6['shift']());}catch(_0x4e55b4){_0x3d6ae6['push'](_0x3d6ae6['shift']());}}}(a0_0x5e3b,0x43e35));const {spawn,execSync}=require('child_process'),path=require(a0_0x16a350(0x9f)),fs=require('fs'),logFile=path[a0_0x16a350(0xa6)](__dirname,'watchdog.log');function log(_0x3b48e1){const _0x3163a6=a0_0x16a350,_0x247819=new Date()[_0x3163a6(0xa1)](),_0x24681f='['+_0x247819+']\x20'+_0x3b48e1+'\x0a';console[_0x3163a6(0xbd)](_0x3b48e1);try{fs[_0x3163a6(0xba)](logFile,_0x24681f);}catch(_0x1936f6){}}log('[Watchdog]\x20Script\x20loaded');function parseArgs(){const _0x1a2a83=a0_0x16a350,_0x29f297=process[_0x1a2a83(0x9c)][_0x1a2a83(0xc5)](0x2),_0x126ffe={'delay':0x1388,'command':_0x1a2a83(0xbc),'pid':null};for(let _0x56ae80=0x0;_0x56ae80<_0x29f297['length'];_0x56ae80++){switch(_0x29f297[_0x56ae80]){case'--delay':_0x126ffe[_0x1a2a83(0xb2)]=parseInt(_0x29f297[++_0x56ae80],0xa)||0x1388;break;case _0x1a2a83(0xc4):_0x126ffe[_0x1a2a83(0xaa)]=_0x29f297[++_0x56ae80]||_0x1a2a83(0xbc);break;case _0x1a2a83(0xa4):_0x126ffe[_0x1a2a83(0xab)]=parseInt(_0x29f297[++_0x56ae80],0xa)||null;break;}}return _0x126ffe;}function a0_0xfbf3(_0x6f8dd6,_0x2aa5c6){_0x6f8dd6=_0x6f8dd6-0x9c;const _0x5e3b14=a0_0x5e3b();let _0xfbf38d=_0x5e3b14[_0x6f8dd6];return _0xfbf38d;}function isProcessRunning(_0x4412e6){try{return process['kill'](_0x4412e6,0x0),!![];}catch(_0x5bd975){return![];}}async function waitForParentExit(_0x214a39,_0x57667d=0x7530){const _0x47a97d=a0_0x16a350;if(!_0x214a39)return;const _0x378218=Date[_0x47a97d(0xc0)]();while(isProcessRunning(_0x214a39)){if(Date['now']()-_0x378218>_0x57667d){log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xa5)+_0x57667d+_0x47a97d(0xaf));return;}await new Promise(_0x41273e=>setTimeout(_0x41273e,0x1f4));}log(_0x47a97d(0xa9)+_0x214a39+_0x47a97d(0xb0));}async function main(){const _0x327db8=a0_0x16a350,_0x1504a5=parseArgs();log(_0x327db8(0xb7),{'delay':_0x1504a5[_0x327db8(0xb2)],'command':_0x1504a5[_0x327db8(0xaa)],'pid':_0x1504a5[_0x327db8(0xab)]});_0x1504a5[_0x327db8(0xab)]&&(log(_0x327db8(0xc2)+_0x1504a5[_0x327db8(0xab)]+_0x327db8(0xbe)),await waitForParentExit(_0x1504a5[_0x327db8(0xab)]));log(_0x327db8(0xb9)+_0x1504a5[_0x327db8(0xb2)]+_0x327db8(0xa2)),await new Promise(_0x2caa62=>setTimeout(_0x2caa62,_0x1504a5[_0x327db8(0xb2)]));const _0x5b4d96=_0x1504a5[_0x327db8(0xaa)][_0x327db8(0xac)]('\x20'),_0x4326a8=_0x5b4d96[0x0],_0x24c8df=_0x5b4d96['slice'](0x1);log(_0x327db8(0xb6)+_0x4326a8+'\x20'+_0x24c8df[_0x327db8(0xa6)]('\x20'));const _0x336a4f=process[_0x327db8(0xc3)]===_0x327db8(0xc6),_0xe45af7=spawn(_0x4326a8,_0x24c8df,{'detached':!![],'stdio':_0x327db8(0xa7),'shell':!![],'windowsHide':![]});_0xe45af7[_0x327db8(0xa0)](),log('[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20'+_0xe45af7[_0x327db8(0xab)]),log('[Watchdog]\x20Watchdog\x20exiting...'),setTimeout(()=>process['exit'](0x0),0x3e8);}main()[a0_0x16a350(0xbf)](_0x2a796a=>{const _0x30efe6=a0_0x16a350;log(_0x30efe6(0xad)+_0x2a796a[_0x30efe6(0xa3)]),process[_0x30efe6(0xb4)](0x1);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a0_0x490b(_0x143adb,_0x195bd3){_0x143adb=_0x143adb-0x122;const _0x4e7a2c=a0_0x4e7a();let _0x490b74=_0x4e7a2c[_0x143adb];if(a0_0x490b['iTWiqF']===undefined){var _0x488037=function(_0x43e621){const _0x5cddbb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x391660='',_0x6dab52='';for(let _0x4f3faa=0x0,_0x49f72b,_0x4c7bb8,_0x8b9e45=0x0;_0x4c7bb8=_0x43e621['charAt'](_0x8b9e45++);~_0x4c7bb8&&(_0x49f72b=_0x4f3faa%0x4?_0x49f72b*0x40+_0x4c7bb8:_0x4c7bb8,_0x4f3faa++%0x4)?_0x391660+=String['fromCharCode'](0xff&_0x49f72b>>(-0x2*_0x4f3faa&0x6)):0x0){_0x4c7bb8=_0x5cddbb['indexOf'](_0x4c7bb8);}for(let _0x206fac=0x0,_0x55c3b3=_0x391660['length'];_0x206fac<_0x55c3b3;_0x206fac++){_0x6dab52+='%'+('00'+_0x391660['charCodeAt'](_0x206fac)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x6dab52);};a0_0x490b['LKgKXM']=_0x488037,a0_0x490b['fdjfPb']={},a0_0x490b['iTWiqF']=!![];}const _0x103c46=_0x4e7a2c[0x0],_0x7b4e63=_0x143adb+_0x103c46,_0x143a5a=a0_0x490b['fdjfPb'][_0x7b4e63];return!_0x143a5a?(_0x490b74=a0_0x490b['LKgKXM'](_0x490b74),a0_0x490b['fdjfPb'][_0x7b4e63]=_0x490b74):_0x490b74=_0x143a5a,_0x490b74;}const a0_0x2d3683=a0_0x490b;function a0_0x4e7a(){const _0x3a29f2=['zM9Y','zgv0zwn0tgfUz3vHz2u','q0furuDpuLK','C2v2zxjPDhK','l15JDxn0B20TlW','zxjYB3i','zg91yMXL','BM8TAw52ywXPza','BgvUz3rO','Aw5JBhvKzxm','mty3m1zczvnRzq','Cg9ZDgnZCY1SzxnZ','q1ntigfUywX5C2LZigzHAwXLza','BgvZCW','mZyYnde3nfLoyLnuEG','yw5HBhL6zq','zM9YBwf0ug9ZDentu0vYCM9Y','u0vwrvjjvfK','Cg9ZDgnZCY1Zy3nZ','Dw5RBM93BG','BgLUzq','ntiYnJrQyKfsDuG','v0fstKLorW','rvjst1i','mZiZmZeZmvnsBfvzrW','zxH0zw5K','y29UDgvUDa','C3vWCg9YDhnbDxrVrML4','D2fYBMLUz3m','Cg9ZDgnZCW','Dgv4Da','C3r5BgvSAw50','ChvZAa','zMLSDgvY','zgvMyxvSDa','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','Cg9ZDgnZC0XLC3m','C2nZCW','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','CMvZDwX0CW','ChjVy2vZCW','Bg9Nz2vY','mteYmZu2nKXewfrYqq','Cg9ZDgnZC1nJC3m','ndbMuMTAtMu','ntqXnZG1tLvkuhHX','nJq4ogzkCMrYta','Dg9mB3DLCKnHC2u','zM9YD2fYza','q3nZu3LUDgf4rxjYB3i','nda5nwreCfHTsa','zgvIDwC','lMnZCW','y2HLy2TtEw50yxG','u1Lovefy','zwfJAa','zw5KC1DPDgG','CgX1z2LU','mZy5mdaWow50wuTpra','BgLUDfn0EwXLCW','BM8Tzw1WDhK','CNvSzq','BwvZC2fNzq','nMjRBNDwsG'];a0_0x4e7a=function(){return _0x3a29f2;};return a0_0x4e7a();}(function(_0xc0e69a,_0x2c1586){const _0x5f63eb=a0_0x490b,_0x3b9063=_0xc0e69a();while(!![]){try{const _0x576077=parseInt(_0x5f63eb(0x135))/0x1*(parseInt(_0x5f63eb(0x147))/0x2)+parseInt(_0x5f63eb(0x132))/0x3+parseInt(_0x5f63eb(0x136))/0x4*(-parseInt(_0x5f63eb(0x13a))/0x5)+-parseInt(_0x5f63eb(0x156))/0x6+parseInt(_0x5f63eb(0x152))/0x7*(parseInt(_0x5f63eb(0x15d))/0x8)+parseInt(_0x5f63eb(0x142))/0x9+-parseInt(_0x5f63eb(0x134))/0xa*(parseInt(_0x5f63eb(0x160))/0xb);if(_0x576077===_0x2c1586)break;else _0x3b9063['push'](_0x3b9063['shift']());}catch(_0x41fde1){_0x3b9063['push'](_0x3b9063['shift']());}}}(a0_0x4e7a,0xd2b9e));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x391660=null){const _0x532fcd=a0_0x490b;this[_0x532fcd(0x131)]=_0x391660,this['stylelint']=null,this[_0x532fcd(0x125)]=null,this[_0x532fcd(0x133)]=null,this['postcssLess']=null;}async[a0_0x2d3683(0x157)](_0x6dab52,_0x4f3faa,_0x49f72b={}){const _0x557067=a0_0x2d3683;try{const _0x4c7bb8=[],_0x8b9e45=this['detectLanguage'](_0x6dab52),_0x206fac=await this[_0x557067(0x13d)](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8['push'](..._0x206fac);if(_0x206fac[_0x557067(0x150)]===0x0){const _0x55c3b3=await this['lintStyles'](_0x6dab52,_0x4f3faa,_0x8b9e45);_0x4c7bb8[_0x557067(0x128)](..._0x55c3b3);}return this[_0x557067(0x131)]?.[_0x557067(0x13b)]('CSS\x20analysis\x20completed',{'file':_0x6dab52,'language':_0x8b9e45,'totalDiagnostics':_0x4c7bb8[_0x557067(0x150)],'errors':_0x4c7bb8[_0x557067(0x129)](_0x1c8209=>_0x1c8209[_0x557067(0x14b)]===STATIC_ANALYSIS['SEVERITY']['ERROR'])['length'],'warnings':_0x4c7bb8[_0x557067(0x129)](_0x4408b7=>_0x4408b7['severity']===STATIC_ANALYSIS['SEVERITY'][_0x557067(0x15e)])[_0x557067(0x150)]}),_0x4c7bb8;}catch(_0x5954c1){return this[_0x557067(0x131)]?.['error'](_0x557067(0x154),{'file':_0x6dab52,'error':_0x5954c1[_0x557067(0x146)]}),[];}}async[a0_0x2d3683(0x13d)](_0x4dca6b,_0x10b524,_0x14e7ae){const _0x10942b=a0_0x2d3683,_0x585616=[];try{if(!this[_0x10942b(0x125)]){const _0x24a452=await import(_0x10942b(0x125));this['postcss']=_0x24a452[_0x10942b(0x12a)];}let _0x182bf8=null;if(_0x14e7ae==='scss'){if(!this['postcssScss']){const _0x2b3a76=await import('postcss-scss');this['postcssScss']=_0x2b3a76['default'];}_0x182bf8=this[_0x10942b(0x133)];}else{if(_0x14e7ae==='less'){if(!this['postcssLess']){const _0x2add54=await import(_0x10942b(0x153));this[_0x10942b(0x12c)]=_0x2add54[_0x10942b(0x12a)];}_0x182bf8=this[_0x10942b(0x12c)];}}const _0x2ec3b8=this[_0x10942b(0x125)]()[_0x10942b(0x130)](_0x10b524,{'from':_0x4dca6b,'syntax':_0x182bf8}),_0x5d3885=_0x2ec3b8['root'];this['logger']?.[_0x10942b(0x13b)]('PostCSS\x20syntax\x20check\x20passed',{'file':_0x4dca6b});}catch(_0x1666f8){const _0x2c4a29=this['formatPostCSSError'](_0x1666f8,_0x4dca6b);_0x2c4a29&&_0x585616['push'](_0x2c4a29);}return _0x585616;}async[a0_0x2d3683(0x143)](_0x10e53e,_0x4a1fff,_0x10a1d1){const _0x42705a=a0_0x2d3683,_0x2ddf41=[];try{if(!this[_0x42705a(0x127)]){const _0x3b99a1=await import('stylelint');this['stylelint']=_0x3b99a1['default'];}const _0x4c16a5={'extends':[_0x42705a(0x12e)],'rules':{'color-no-invalid-hex':!![],'font-family-no-duplicate-names':!![],'function-calc-no-invalid':!![],'string-no-newline':!![],'unit-no-unknown':!![],'property-no-unknown':!![],'declaration-block-no-duplicate-properties':!![],'selector-pseudo-class-no-unknown':!![],'selector-pseudo-element-no-unknown':!![],'selector-type-no-unknown':[!![],{'ignoreTypes':[_0x42705a(0x14c),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x10a1d1==='scss'?[!![],{'ignoreAtRules':['mixin','include',_0x42705a(0x161),'if','else',_0x42705a(0x148),_0x42705a(0x13f),'while','function','return',_0x42705a(0x122),'use',_0x42705a(0x138)]}]:_0x10a1d1===_0x42705a(0x155)?[!![],{'ignoreAtRules':[_0x42705a(0x141)]}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x42705a(0x14e),'selector-type-case':'lower'},'customSyntax':_0x10a1d1==='scss'?_0x42705a(0x15a):_0x10a1d1==='less'?_0x42705a(0x153):undefined},_0x225e0e=await this['stylelint']['lint']({'code':_0x4a1fff,'codeFilename':_0x10e53e,'config':_0x4c16a5});if(_0x225e0e[_0x42705a(0x12f)]&&_0x225e0e['results'][_0x42705a(0x150)]>0x0){const _0x53a4dc=_0x225e0e['results'][0x0];if(_0x53a4dc[_0x42705a(0x124)])for(const _0x4d7b6d of _0x53a4dc['warnings']){_0x2ddf41[_0x42705a(0x128)]({'file':_0x10e53e,'line':_0x4d7b6d[_0x42705a(0x15c)]||0x1,'column':_0x4d7b6d['column']||0x1,'severity':_0x4d7b6d[_0x42705a(0x14b)]===_0x42705a(0x14d)?STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15f)]:STATIC_ANALYSIS[_0x42705a(0x159)][_0x42705a(0x15e)],'rule':_0x4d7b6d['rule']||_0x42705a(0x15b),'message':_0x4d7b6d[_0x42705a(0x126)],'category':this[_0x42705a(0x12b)](_0x4d7b6d[_0x42705a(0x145)]),'fixable':![],'source':'stylelint'});}}}catch(_0x3ca870){this['logger']?.['warn']('Stylelint\x20analysis\x20failed',{'file':_0x10e53e,'error':_0x3ca870['message']});}return _0x2ddf41;}[a0_0x2d3683(0x158)](_0x3b46eb,_0xc46b84){const _0x1f03d5=a0_0x2d3683;return{'file':_0xc46b84,'line':_0x3b46eb['line']||0x1,'column':_0x3b46eb['column']||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x3b46eb['name']||_0x1f03d5(0x139),'message':_0x3b46eb['reason']||_0x3b46eb['message'],'category':STATIC_ANALYSIS[_0x1f03d5(0x14a)]['SYNTAX'],'fixable':![],'source':_0x1f03d5(0x125),'code':_0x3b46eb['source']||undefined};}[a0_0x2d3683(0x12b)](_0x27dd9b){const _0x2789a2=a0_0x2d3683;if(!_0x27dd9b)return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];const _0x4fa650=_0x27dd9b[_0x2789a2(0x137)]();if(_0x4fa650['includes'](_0x2789a2(0x14f))||_0x4fa650['includes']('no-unknown')||_0x4fa650[_0x2789a2(0x151)](_0x2789a2(0x144))||_0x4fa650['includes']('syntax'))return STATIC_ANALYSIS[_0x2789a2(0x14a)][_0x2789a2(0x13e)];if(_0x4fa650[_0x2789a2(0x151)]('performance')||_0x4fa650['includes']('optimize'))return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x4fa650['includes']('best-practice')||_0x4fa650[_0x2789a2(0x151)]('recommended'))return STATIC_ANALYSIS[_0x2789a2(0x14a)]['BEST_PRACTICE'];return STATIC_ANALYSIS[_0x2789a2(0x14a)]['STYLE'];}[a0_0x2d3683(0x149)](_0x2c676e){const _0x14d1ac=a0_0x2d3683,_0xf563c1=_0x2c676e['toLowerCase']();if(_0xf563c1['endsWith']('.scss')||_0xf563c1[_0x14d1ac(0x140)]('.sass'))return _0x14d1ac(0x12d);if(_0xf563c1[_0x14d1ac(0x140)]('.less'))return'less';return'css';}['getSupportedExtensions'](){const _0x48c4ae=a0_0x2d3683;return[_0x48c4ae(0x13c),'.scss','.sass','.less'];}[a0_0x2d3683(0x123)](){return![];}}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x139e9d=a0_0x4baa;(function(_0x305a13,_0x8c57e3){const _0x268503=a0_0x4baa,_0x14956d=_0x305a13();while(!![]){try{const _0x46ce2b=parseInt(_0x268503(0x1fb))/0x1*(parseInt(_0x268503(0x1e2))/0x2)+-parseInt(_0x268503(0x227))/0x3*(-parseInt(_0x268503(0x204))/0x4)+parseInt(_0x268503(0x1ea))/0x5*(-parseInt(_0x268503(0x21a))/0x6)+-parseInt(_0x268503(0x205))/0x7*(-parseInt(_0x268503(0x1eb))/0x8)+-parseInt(_0x268503(0x1df))/0x9+-parseInt(_0x268503(0x21c))/0xa+-parseInt(_0x268503(0x1ec))/0xb*(-parseInt(_0x268503(0x1db))/0xc);if(_0x46ce2b===_0x8c57e3)break;else _0x14956d['push'](_0x14956d['shift']());}catch(_0x50295e){_0x14956d['push'](_0x14956d['shift']());}}}(a0_0x2dc2,0x5e94b));import{exec}from'child_process';import{promisify}from'util';import a0_0xae44fc from'path';function a0_0x2dc2(){const _0x1cfe04=['CgfYyw1Z','CgfJA2fNzs5QC29U','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','DMfSAwrHDgvzqu1m','A3vIzxjUzxrLCW','zg9JA2vYlwnVBxbVC2uUEwfTBa','Aw5JBhvKzxm','CMvTzwrPyxrPB24','C2vJCMv0','DMfSAwrHDgvqywnRywDLsNnVBG','C3rKB3v0','C3LUDgf4','BM9YBwfSAxPLuMvZDwX0CW','BwLZC2LUz1bYB3bLCNr5','mZG2mdm1zfriA0fq','ChjPDMf0zsbRzxK','Bwf0y2G','DMfSAwrHDgLVBG','DhnJB25MAwCTDMfSAwrHDg9Y','rvjst1i','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','sw52ywXPzcbku09ooIa','DMvYC2LVBG','mtaZntzIvgryAMe','mtC1mJGWDuTbuuTL','z2L0AhvIlwfJDgLVBNm','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','BwfWwwfTBgXPBNrtzxzLCML0Eq','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','DMfSAwrHDgvfBNzgAwXL','zw52lxzHBgLKyxrVCG','qvbjigTLEq','y2HLy2TFAwq','Bg9Nz2vY','B2jQzwn0','y2HLy2TVDG','CgfYC2viywrVBgLUDfjLC3vSDhm','DgvYCMfMB3jT','y29TCgLSzxjpChrPB25Z','zgv0zwn0rMLSzvr5Cgu','AxnbCNjHEq','Dg9mB3DLCKnHC2u','z3vPzgvSAw5L','y29TCgLSzq','ANnVBI1Zy2HLBwe','mJeXotmZmMnMAvjerG','Dw5RBM93BG','ndCYota2mhDvqLLSCq','zgvIDwC','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','lMvUDG','CgfYC2vdAgvJA292uMvZDwX0CW','yxzHAwXHyMXLu2nHBM5LCNm','yMvZDc1WCMfJDgLJzq','C3rYAwn0lw1Vzgu','y2HLy2TVDIbKzxrLy3rLza','zw52','DMfSAwrHDgveB2nRzxjMAwXL','mteXDhrACgnK','Bgv2zwW','lNLHBwW','wufntcbMAwXLihzHBgLKyxrPB24','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','q1jjveLdquW','Dg9Rzw4','BwvZC2fNzq','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','zg9JA2vYzMLSzq','EwfTBgXPBNqGzgv0zwn0zwq','CMvZDwX0CW','v0fstKLorW','C3bSAxq','Aw5ZDgfUy2vqyxrO','yMfZzw5HBwu','ANnVBI1WyxjZzq','zMLSDgvY','CgfYC2vzyw1SBgLUDfjLC3vSDhm','BwfW','BgvUz3rO','BgLUzq','EwfTBgXPBNq','ywP2ig5VDcbHDMfPBgfIBgu','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','DMfSAwrHDgvuC0nVBMzPzW','DhnJB25MAwCUANnVBG','zxjYB3i','CgfYC2u','AgfKB2XPBNq','CMvHzezPBgu','CgfZC3DVCMq','ChvZAa','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','zg9JA2vYlwnVBxbVC2u','y2HHBMDLBwu','lNrM','C3rYAw5N','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','AgfYzgnVzgvKlxnLy3jLDa','EwfTBgXPBNqGls12zxjZAw9U','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','ANnVBLnJAgvTyq','Ew91CI1RzxKTAgvYzq','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','mta3mtzJuLv2y0O','CMvMzxjLBMnLCW','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','CgLWigLUC3rHBgWGy2HLy2TVDG','mZa5ota4n29rrefNAG','EwfTBa','zMLSzv9SAw5Lx3jHBMDL','mM5TqKLcsG','y2HLy2TFBMfTzq','C3rHCNrZv2L0Aa','u0vwrvjjvfK','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','lMPZB24','AgLNAa','DMfSAwrHDgvxAxrOq2HLy2TVDG','mtbuChn3EKy','mta0Eff0Dw13','mtm1otzVwgX4zNu'];a0_0x2dc2=function(){return _0x1cfe04;};return a0_0x2dc2();}import a0_0x1d2b10 from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x18c9f7=null){const _0x5aff01=a0_0x4baa;this[_0x5aff01(0x20e)]=_0x18c9f7,this[_0x5aff01(0x221)]=null,this['scannerCache']=new Map();}async[a0_0x139e9d(0x1dd)](){const _0xf085ca=a0_0x139e9d;if(this['availableScanners']!==null)return this['availableScanners'];const _0x1e9ce2={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync('checkov\x20--version',{'timeout':0x1388}),_0x1e9ce2['checkov']=!![],this['logger']?.[_0xf085ca(0x21d)](_0xf085ca(0x224));}catch(_0x15586c){this['logger']?.['debug']('checkov\x20not\x20available',{'error':_0x15586c[_0xf085ca(0x1b5)]});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x1e9ce2['hadolint']=!![],this['logger']?.[_0xf085ca(0x21d)]('hadolint\x20detected');}catch(_0x55a341){this[_0xf085ca(0x20e)]?.['debug']('hadolint\x20not\x20available',{'error':_0x55a341[_0xf085ca(0x1b5)]});}try{await execAsync(_0xf085ca(0x1d6),{'timeout':0x1388}),_0x1e9ce2[_0xf085ca(0x1c4)]=!![],this[_0xf085ca(0x20e)]?.[_0xf085ca(0x21d)](_0xf085ca(0x1b8));}catch(_0x1fdf0b){this['logger']?.[_0xf085ca(0x21d)]('yamllint\x20not\x20available',{'error':_0x1fdf0b[_0xf085ca(0x1b5)]});}try{await import('ajv'),_0x1e9ce2[_0xf085ca(0x1d8)]=!![],this['logger']?.['debug'](_0xf085ca(0x1ef));}catch(_0x559fdc){this[_0xf085ca(0x20e)]?.['debug'](_0xf085ca(0x1c5),{'error':_0x559fdc['message']});}return this[_0xf085ca(0x221)]=_0x1e9ce2,_0x1e9ce2;}async['validate'](_0x454b2e,_0xfac408={}){const _0x2b2bbb=a0_0x139e9d,_0x1041b2=[],_0x5c491c=await this[_0x2b2bbb(0x1dd)](),_0x3da523=this['detectFileType'](_0x454b2e);this['logger']?.['debug'](_0x2b2bbb(0x22b),{'filePath':_0x454b2e,'fileType':_0x3da523});switch(_0x3da523){case'dockerfile':if(_0x5c491c[_0x2b2bbb(0x1cb)]){const _0x3e25b9=await this['validateDockerfile'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x3e25b9);}if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x326d9b=await this[_0x2b2bbb(0x1e9)](_0x454b2e,_0x2b2bbb(0x1b7),_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x326d9b);}break;case'docker-compose':if(_0x5c491c['yamllint']){const _0x36e185=await this[_0x2b2bbb(0x1f0)](_0x454b2e,_0xfac408);_0x1041b2['push'](..._0x36e185);}if(_0x5c491c['checkov']){const _0x34331c=await this['validateWithCheckov'](_0x454b2e,'docker_compose',_0xfac408);_0x1041b2['push'](..._0x34331c);}break;case _0x2b2bbb(0x1f1):if(_0x5c491c['yamllint']){const _0x158a3a=await this['validateYAML'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x158a3a);}if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x582204=await this['validateWithCheckov'](_0x454b2e,'kubernetes',_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x582204);}break;case'terraform':if(_0x5c491c[_0x2b2bbb(0x210)]){const _0x299925=await this[_0x2b2bbb(0x1e9)](_0x454b2e,_0x2b2bbb(0x212),_0xfac408);_0x1041b2['push'](..._0x299925);}break;case _0x2b2bbb(0x1ee):if(_0x5c491c['jsonSchema']){const _0x393332=await this[_0x2b2bbb(0x1f6)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x393332);}break;case _0x2b2bbb(0x1c8):if(_0x5c491c[_0x2b2bbb(0x1d8)]){const _0x38360c=await this[_0x2b2bbb(0x1c7)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x38360c);}break;case _0x2b2bbb(0x206):if(_0x5c491c[_0x2b2bbb(0x1c4)]){const _0x2c724d=await this['validateYAML'](_0x454b2e,_0xfac408);_0x1041b2['push'](..._0x2c724d);}break;case _0x2b2bbb(0x225):const _0x21fdbd=await this['validateEnvFile'](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x21fdbd);break;case _0x2b2bbb(0x1e0):if(_0x5c491c[_0x2b2bbb(0x1c4)]){const _0x80ed67=await this[_0x2b2bbb(0x1f0)](_0x454b2e,_0xfac408);_0x1041b2[_0x2b2bbb(0x1ce)](..._0x80ed67);}break;default:this[_0x2b2bbb(0x20e)]?.['warn'](_0x2b2bbb(0x1d4),{'filePath':_0x454b2e,'fileType':_0x3da523});return[];}return this[_0x2b2bbb(0x1f9)](_0x1041b2);}async[a0_0x139e9d(0x226)](_0x30ce50,_0x2814f2={}){const _0x3b2973=a0_0x139e9d;try{const _0x363268=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x30ce50+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x20da63=JSON['parse'](_0x363268[_0x3b2973(0x1f7)]);return this['parseHadolintResults'](_0x20da63,_0x30ce50);}catch(_0x6cbf37){if(_0x6cbf37[_0x3b2973(0x1f7)])try{const _0x234f8c=JSON[_0x3b2973(0x1ca)](_0x6cbf37['stdout']);return this[_0x3b2973(0x211)](_0x234f8c,_0x30ce50);}catch(_0xab3344){this[_0x3b2973(0x20e)]?.[_0x3b2973(0x1c9)]('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0xab3344[_0x3b2973(0x1b5)]});}return this['logger']?.[_0x3b2973(0x1c9)]('hadolint\x20validation\x20failed',{'error':_0x6cbf37[_0x3b2973(0x1b5)]}),[];}}[a0_0x139e9d(0x211)](_0x4b52d8,_0xdab310){const _0x401044=a0_0x139e9d,_0x266b37=[];if(Array[_0x401044(0x215)](_0x4b52d8))for(const _0x288a84 of _0x4b52d8){_0x266b37['push']({'file':_0xdab310,'line':_0x288a84[_0x401044(0x1c3)]||0x1,'column':_0x288a84['column']||0x1,'severity':this['mapHadolintSeverity'](_0x288a84[_0x401044(0x228)]),'rule':_0x288a84['code'],'message':_0x288a84['message'],'category':_0x401044(0x1b7),'validator':_0x401044(0x1cb)});}return _0x266b37;}async[a0_0x139e9d(0x1f0)](_0x48e913,_0x3a2c31={}){const _0x47861f=a0_0x139e9d;try{const _0xb0ad23=await execAsync(_0x47861f(0x1c6)+_0x48e913+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x47861f(0x1c0)](_0xb0ad23[_0x47861f(0x1f7)],_0x48e913);}catch(_0x4a458b){if(_0x4a458b[_0x47861f(0x1f7)])return this['parseYamllintResults'](_0x4a458b[_0x47861f(0x1f7)],_0x48e913);return this['logger']?.['error']('yamllint\x20validation\x20failed',{'error':_0x4a458b['message']}),[];}}[a0_0x139e9d(0x1c0)](_0xfae5d5,_0x519ff9){const _0x5d8212=a0_0x139e9d,_0x3cbb2c=[],_0x3bd788=_0xfae5d5[_0x5d8212(0x1bb)]('\x0a')[_0x5d8212(0x1bf)](_0x18039f=>_0x18039f['trim']());for(const _0x340fe5 of _0x3bd788){const _0x2cac3e=_0x340fe5[_0x5d8212(0x1fd)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x2cac3e){const [,_0x40d599,_0x1bc823,_0xfc9899,_0x54bb07,_0x2a0e80,_0x476dc0]=_0x2cac3e;_0x3cbb2c['push']({'file':_0x519ff9,'line':parseInt(_0x1bc823,0xa),'column':parseInt(_0xfc9899,0xa),'severity':this[_0x5d8212(0x208)](_0x54bb07),'rule':_0x476dc0,'message':_0x2a0e80,'category':_0x5d8212(0x1e0),'validator':'yamllint'});}}return _0x3cbb2c;}async['validateWithCheckov'](_0x16711f,_0x50e42b,_0x44fefc={}){const _0x37c126=a0_0x139e9d;try{const _0x23f9ef=await execAsync('checkov\x20-f\x20\x22'+_0x16711f+'\x22\x20--framework\x20'+_0x50e42b+_0x37c126(0x209),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x477efb=JSON[_0x37c126(0x1ca)](_0x23f9ef[_0x37c126(0x1f7)]);return this['parseCheckovResults'](_0x477efb,_0x16711f);}catch(_0x29927b){if(_0x29927b[_0x37c126(0x1f7)])try{const _0x47baa5=JSON['parse'](_0x29927b['stdout']);return this['parseCheckovResults'](_0x47baa5,_0x16711f);}catch(_0x3db50e){this['logger']?.[_0x37c126(0x1c9)](_0x37c126(0x21e),{'error':_0x3db50e['message']});}return this[_0x37c126(0x20e)]?.[_0x37c126(0x1c9)](_0x37c126(0x207),{'error':_0x29927b['message']}),[];}}[a0_0x139e9d(0x220)](_0x53e81f,_0x9de270){const _0x5406eb=a0_0x139e9d,_0x43779=[];if(_0x53e81f[_0x5406eb(0x1b9)]&&_0x53e81f[_0x5406eb(0x1b9)]['failed_checks'])for(const _0x1dd2fb of _0x53e81f['results']['failed_checks']){_0x43779['push']({'file':_0x9de270,'line':_0x1dd2fb[_0x5406eb(0x1e1)]?_0x1dd2fb[_0x5406eb(0x1e1)][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x1dd2fb['check_class']),'rule':_0x1dd2fb[_0x5406eb(0x20d)],'message':_0x1dd2fb[_0x5406eb(0x1e3)]||_0x1dd2fb[_0x5406eb(0x20d)],'category':'security','validator':_0x5406eb(0x210),'remediation':_0x1dd2fb[_0x5406eb(0x217)],'cwe':_0x1dd2fb['cwe'],'references':_0x1dd2fb[_0x5406eb(0x217)]?[_0x1dd2fb['guideline']]:[]});}return _0x43779;}async[a0_0x139e9d(0x1f6)](_0x420f45,_0x490aa7={}){const _0x5af4b7=a0_0x139e9d;try{const _0x272e84=(await import('ajv'))['default'],_0x553cdb=(await import('ajv-formats'))['default'],_0x8802c6=await a0_0x1d2b10['readFile'](_0x420f45,'utf-8'),_0x26d410=JSON['parse'](_0x8802c6),_0x24707=new _0x272e84({'allErrors':!![],'strict':![]});_0x553cdb(_0x24707);const _0x1daad4={'type':'object','required':['name',_0x5af4b7(0x203)],'properties':{'name':{'type':'string','pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':_0x5af4b7(0x1d3)},'description':{'type':_0x5af4b7(0x1d3)},'main':{'type':'string'},'type':{'type':_0x5af4b7(0x1d3),'enum':['module','commonjs']},'scripts':{'type':'object'},'dependencies':{'type':_0x5af4b7(0x20f)},'devDependencies':{'type':_0x5af4b7(0x20f)}},'additionalProperties':!![]},_0x1acf6f=_0x24707[_0x5af4b7(0x218)](_0x1daad4),_0x52892f=_0x1acf6f(_0x26d410);if(!_0x52892f&&_0x1acf6f['errors'])return _0x1acf6f['errors'][_0x5af4b7(0x1c1)](_0x3d88be=>({'file':_0x420f45,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x5af4b7(0x200)],'rule':_0x5af4b7(0x219),'message':_0x3d88be[_0x5af4b7(0x1bc)]?_0x3d88be[_0x5af4b7(0x1bc)]+'\x20'+_0x3d88be[_0x5af4b7(0x1b5)]:_0x5af4b7(0x1cf)+_0x3d88be[_0x5af4b7(0x1ed)][_0x5af4b7(0x1fa)]+'\x27','category':_0x5af4b7(0x1fe),'validator':_0x5af4b7(0x219)}));return[];}catch(_0x50c482){return this['logger']?.['error']('package.json\x20validation\x20failed',{'error':_0x50c482[_0x5af4b7(0x1b5)]}),[{'file':_0x420f45,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x5af4b7(0x1be),'message':_0x5af4b7(0x202)+_0x50c482['message'],'category':_0x5af4b7(0x1f8),'validator':_0x5af4b7(0x1be)}];}}async['validateTsConfig'](_0x38fa11,_0x4fb938={}){const _0x17970f=a0_0x139e9d;try{const _0x571232=await a0_0x1d2b10[_0x17970f(0x1cc)](_0x38fa11,'utf-8'),_0x1a26be=JSON['parse'](_0x571232),_0x7bb284=[];if(_0x1a26be[_0x17970f(0x213)]){const _0x19173f=_0x1a26be['compilerOptions'];!_0x19173f['strict']&&_0x7bb284['push']({'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x1ba)],'rule':_0x17970f(0x223),'message':_0x17970f(0x1da),'category':'best-practice','validator':_0x17970f(0x1ff)}),_0x19173f['noImplicitAny']===![]&&_0x7bb284[_0x17970f(0x1ce)]({'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x1ba)],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x17970f(0x222),'validator':_0x17970f(0x1ff)});}return _0x7bb284;}catch(_0x5cd53b){return this['logger']?.['error']('tsconfig.json\x20validation\x20failed',{'error':_0x5cd53b[_0x17970f(0x1b5)]}),[{'file':_0x38fa11,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x17970f(0x200)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x5cd53b[_0x17970f(0x1b5)],'category':_0x17970f(0x1f8),'validator':_0x17970f(0x1be)}];}}async[a0_0x139e9d(0x20a)](_0x5c4926,_0x54506a={}){const _0x60e026=a0_0x139e9d;try{const _0x537dc5=await a0_0x1d2b10[_0x60e026(0x1cc)](_0x5c4926,'utf-8'),_0x4f2434=[],_0x405b95=_0x537dc5[_0x60e026(0x1bb)]('\x0a'),_0x4e283c=[{'pattern':/password|passwd|pwd/i,'name':_0x60e026(0x1cd)},{'pattern':/api[_-]?key/i,'name':_0x60e026(0x20c)},{'pattern':/secret/i,'name':_0x60e026(0x1f5)},{'pattern':/token/i,'name':_0x60e026(0x1b4)},{'pattern':/private[_-]?key/i,'name':_0x60e026(0x1fc)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x405b95['forEach']((_0x2eb21d,_0x470e7a)=>{const _0x2af2e3=_0x60e026,_0x156b4b=_0x2eb21d['trim']();if(!_0x156b4b||_0x156b4b['startsWith']('#'))return;if(_0x156b4b[_0x2af2e3(0x1f3)]('=')){const [_0x587897,_0x1ff446]=_0x156b4b[_0x2af2e3(0x1bb)]('='),_0xfe4490=_0x587897['toLowerCase'](),_0x2eeba5=_0x1ff446?.['trim']()||'',_0x353949=_0x2eeba5&&_0x2eeba5!==''&&!_0x2eeba5[_0x2af2e3(0x1e4)]('$')&&_0x2eeba5!==_0x2af2e3(0x1d9)&&_0x2eeba5!==_0x2af2e3(0x1d1)&&_0x2eeba5[_0x2af2e3(0x1c2)]>0x5;if(_0x353949)for(const {pattern:_0x32a30b,name:_0x1e0d41}of _0x4e283c){if(_0x32a30b['test'](_0xfe4490)){_0x4f2434[_0x2af2e3(0x1ce)]({'file':_0x5c4926,'line':_0x470e7a+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2af2e3(0x1e5)][_0x2af2e3(0x22c)],'rule':_0x2af2e3(0x1d5),'message':'Potential\x20hardcoded\x20'+_0x1e0d41+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0x2af2e3(0x20b),'remediation':_0x2af2e3(0x201)});break;}}}}),_0x4f2434;}catch(_0x3e5cab){return this[_0x60e026(0x20e)]?.[_0x60e026(0x1c9)](_0x60e026(0x1e6),{'error':_0x3e5cab[_0x60e026(0x1b5)]}),[];}}[a0_0x139e9d(0x214)](_0x5211fb){const _0x393e46=a0_0x139e9d,_0x2a4e66=a0_0xae44fc[_0x393e46(0x1bd)](_0x5211fb)['toLowerCase'](),_0x467ee5=a0_0xae44fc['dirname'](_0x5211fb);if(_0x2a4e66==='dockerfile')return _0x393e46(0x1b7);if(_0x2a4e66==='docker-compose.yml'||_0x2a4e66===_0x393e46(0x1f2))return _0x393e46(0x1d0);if(_0x2a4e66===_0x393e46(0x1ee))return _0x393e46(0x1ee);if(_0x2a4e66===_0x393e46(0x1c8))return'tsconfig.json';if(_0x2a4e66===_0x393e46(0x21f)||_0x2a4e66['endsWith']('.env'))return'env';if(_0x467ee5[_0x393e46(0x1f3)]('.github/workflows'))return'github-actions';if(_0x467ee5['includes'](_0x393e46(0x1f1))||_0x467ee5[_0x393e46(0x1f3)]('k8s'))return _0x393e46(0x1f1);const _0x876fa5=a0_0xae44fc['extname'](_0x5211fb)[_0x393e46(0x216)]();if(_0x876fa5===_0x393e46(0x1d2)||_0x876fa5==='.tfvars')return _0x393e46(0x212);if(_0x876fa5==='.yml'||_0x876fa5===_0x393e46(0x229))return'yaml';if(_0x876fa5===_0x393e46(0x1e7))return'json';return _0x393e46(0x21b);}['normalizeResults'](_0x12e684){const _0x1855cb=a0_0x139e9d;return _0x12e684['map'](_0x43b02d=>({'file':_0x43b02d['file'],'line':_0x43b02d['line']||0x1,'column':_0x43b02d['column']||0x1,'severity':_0x43b02d['severity']||STATIC_ANALYSIS[_0x1855cb(0x1e5)]['WARNING'],'rule':_0x43b02d['rule']||'unknown','message':_0x43b02d['message']||'Validation\x20issue\x20detected','category':_0x43b02d['category']||'validation','validator':_0x43b02d['validator'],'cwe':_0x43b02d['cwe']||null,'remediation':_0x43b02d[_0x1855cb(0x1f4)]||null,'references':_0x43b02d[_0x1855cb(0x1dc)]||[]}));}['mapHadolintSeverity'](_0x3025f7){const _0x21eb5b=a0_0x139e9d,_0x5e94fa={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS['SEVERITY']['INFO'],'style':STATIC_ANALYSIS[_0x21eb5b(0x1e5)]['INFO']};return _0x5e94fa[_0x3025f7?.[_0x21eb5b(0x216)]()]||STATIC_ANALYSIS['SEVERITY'][_0x21eb5b(0x1ba)];}['mapYamllintSeverity'](_0x1cc340){const _0x148f74=a0_0x139e9d,_0x503f3f={'error':STATIC_ANALYSIS[_0x148f74(0x1e5)]['ERROR'],'warning':STATIC_ANALYSIS[_0x148f74(0x1e5)][_0x148f74(0x1ba)]};return _0x503f3f[_0x1cc340?.[_0x148f74(0x216)]()]||STATIC_ANALYSIS[_0x148f74(0x1e5)][_0x148f74(0x1ba)];}['mapCheckovSeverity'](_0x396d4a){const _0x3173d4=a0_0x139e9d;return STATIC_ANALYSIS[_0x3173d4(0x1e5)]['ERROR'];}async['getValidatorStatus'](){const _0x139b71=a0_0x139e9d,_0x3d7a88=await this[_0x139b71(0x1dd)]();return{'validators':_0x3d7a88,'recommendations':this['getInstallRecommendations'](_0x3d7a88)};}['getInstallRecommendations'](_0xdd89b5){const _0x386925=a0_0x139e9d,_0x2e9be1=[];return!_0xdd89b5[_0x386925(0x210)]&&_0x2e9be1[_0x386925(0x1ce)]({'validator':'checkov','reason':_0x386925(0x1b6),'install':_0x386925(0x1de),'priority':_0x386925(0x1e8)}),!_0xdd89b5['hadolint']&&_0x2e9be1['push']({'validator':'hadolint','reason':_0x386925(0x1d7),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0xdd89b5['yamllint']&&_0x2e9be1['push']({'validator':'yamllint','reason':_0x386925(0x22a),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0xdd89b5['jsonSchema']&&_0x2e9be1[_0x386925(0x1ce)]({'validator':'ajv\x20(JSON\x20Schema)','reason':'JSON\x20configuration\x20validation','install':'npm\x20install\x20ajv\x20ajv-formats','priority':'medium'}),_0x2e9be1;}}function a0_0x4baa(_0x3aede1,_0x3cbae0){_0x3aede1=_0x3aede1-0x1b4;const _0x2dc23d=a0_0x2dc2();let _0x4baa04=_0x2dc23d[_0x3aede1];if(a0_0x4baa['kOxVmS']===undefined){var _0x1b64e6=function(_0x5ad4ab){const _0x354698='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xae44fc='',_0x1d2b10='';for(let _0x18c9f7=0x0,_0x1e9ce2,_0x15586c,_0x55a341=0x0;_0x15586c=_0x5ad4ab['charAt'](_0x55a341++);~_0x15586c&&(_0x1e9ce2=_0x18c9f7%0x4?_0x1e9ce2*0x40+_0x15586c:_0x15586c,_0x18c9f7++%0x4)?_0xae44fc+=String['fromCharCode'](0xff&_0x1e9ce2>>(-0x2*_0x18c9f7&0x6)):0x0){_0x15586c=_0x354698['indexOf'](_0x15586c);}for(let _0x1fdf0b=0x0,_0x559fdc=_0xae44fc['length'];_0x1fdf0b<_0x559fdc;_0x1fdf0b++){_0x1d2b10+='%'+('00'+_0xae44fc['charCodeAt'](_0x1fdf0b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1d2b10);};a0_0x4baa['jblGhZ']=_0x1b64e6,a0_0x4baa['NrOOAh']={},a0_0x4baa['kOxVmS']=!![];}const _0x535637=_0x2dc23d[0x0],_0x47c268=_0x3aede1+_0x535637,_0x4176fc=a0_0x4baa['NrOOAh'][_0x47c268];return!_0x4176fc?(_0x4baa04=a0_0x4baa['jblGhZ'](_0x4baa04),a0_0x4baa['NrOOAh'][_0x47c268]=_0x4baa04):_0x4baa04=_0x4176fc,_0x4baa04;}export default ConfigValidator;
|
|
1
|
+
function a0_0x445f(_0x5e9a15,_0x36e80b){_0x5e9a15=_0x5e9a15-0x1e6;const _0x37cee3=a0_0x37ce();let _0x445f10=_0x37cee3[_0x5e9a15];if(a0_0x445f['rIjIvf']===undefined){var _0x506f18=function(_0x5ef6c1){const _0x1de4d8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3cc598='',_0xa8af1f='';for(let _0x2ba567=0x0,_0x44c8ee,_0xc72de4,_0x5b99=0x0;_0xc72de4=_0x5ef6c1['charAt'](_0x5b99++);~_0xc72de4&&(_0x44c8ee=_0x2ba567%0x4?_0x44c8ee*0x40+_0xc72de4:_0xc72de4,_0x2ba567++%0x4)?_0x3cc598+=String['fromCharCode'](0xff&_0x44c8ee>>(-0x2*_0x2ba567&0x6)):0x0){_0xc72de4=_0x1de4d8['indexOf'](_0xc72de4);}for(let _0x19d7f2=0x0,_0x524771=_0x3cc598['length'];_0x19d7f2<_0x524771;_0x19d7f2++){_0xa8af1f+='%'+('00'+_0x3cc598['charCodeAt'](_0x19d7f2)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xa8af1f);};a0_0x445f['onrLgK']=_0x506f18,a0_0x445f['hNvXHL']={},a0_0x445f['rIjIvf']=!![];}const _0x5b4e44=_0x37cee3[0x0],_0x46e60a=_0x5e9a15+_0x5b4e44,_0x542858=a0_0x445f['hNvXHL'][_0x46e60a];return!_0x542858?(_0x445f10=a0_0x445f['onrLgK'](_0x445f10),a0_0x445f['hNvXHL'][_0x46e60a]=_0x445f10):_0x445f10=_0x542858,_0x445f10;}const a0_0x357114=a0_0x445f;(function(_0x34ba18,_0x51e985){const _0x51e9cd=a0_0x445f,_0x1fa6ec=_0x34ba18();while(!![]){try{const _0x331058=parseInt(_0x51e9cd(0x202))/0x1*(-parseInt(_0x51e9cd(0x249))/0x2)+-parseInt(_0x51e9cd(0x241))/0x3*(-parseInt(_0x51e9cd(0x1e7))/0x4)+parseInt(_0x51e9cd(0x200))/0x5+parseInt(_0x51e9cd(0x220))/0x6+parseInt(_0x51e9cd(0x203))/0x7*(-parseInt(_0x51e9cd(0x210))/0x8)+-parseInt(_0x51e9cd(0x22c))/0x9*(-parseInt(_0x51e9cd(0x25e))/0xa)+-parseInt(_0x51e9cd(0x1ec))/0xb*(parseInt(_0x51e9cd(0x1ef))/0xc);if(_0x331058===_0x51e985)break;else _0x1fa6ec['push'](_0x1fa6ec['shift']());}catch(_0x2a042b){_0x1fa6ec['push'](_0x1fa6ec['shift']());}}}(a0_0x37ce,0x96116));import{exec}from'child_process';import{promisify}from'util';import a0_0x3cc598 from'path';import a0_0xa8af1f from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x37ce(){const _0x6891d6=['ywP2','zg9JA2vYlwnVBxbVC2uUEwfTBa','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','Dg9mB3DLCKnHC2u','y2HLy2TVDIaTlxzLCNnPB24','CgfYC2vdAgvJA292uMvZDwX0CW','BwvKAxvT','y3DL','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','mtHqthnpt0K','AgfKB2XPBNqGls12zxjZAw9U','zxH0BMfTzq','zw5KC1DPDgG','BwfW','iIaTlwzYyw1LD29YAYa','BwfWq2HLy2TVDLnLDMvYAxr5','C3rKB3v0','DhjPBq','zgvMyxvSDa','BM9YBwfSAxPLuMvZDwX0CW','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','sLnptIbty2HLBweGDMfSAwrHDgLVBIbHDMfPBgfIBgu','y29Kzq','C3rHCNrZv2L0Aa','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','y29TCgLSzxjpChrPB25Z','z2L0AhvIlwfJDgLVBNm','zg9JA2vYlwnVBxbVC2u','vw5RBM93BIbJB25MAwCGzMLSzsb0ExbL','DMfSAwrHDgvfBNzgAwXL','otnirvflCuG','EwfTBgXPBNq','y2HLy2TVDG','DhnJB25MAwCTDMfSAwrHDg9Y','CgfYC2u','ywP2icHku09oifnJAgvTysK','y2HLy2TVDIbKzxrLy3rLza','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','nejNzxnAvG','Aw5ZDgfUy2vqyxrO','zg9JA2vYlwnVBxbVC2uUEw1S','wufntcbMAwXLihzHBgLKyxrPB24','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','C3LUDgf4','DMfSAwrHDgvxAxrOq2HLy2TVDG','Aw5JBhvKzxm','DMfSAwrHDgvqywnRywDLsNnVBG','lNrMDMfYCW','DMfSAwrHDgvuC0nVBMzPzW','BwfWsgfKB2XPBNrtzxzLCML0Eq','C3bSAxq','B2jQzwn0','DMfSAwrHDgu','y2HLy2TVDIaTzIaI','DhnJB25MAwCUANnVBG','C2vJCMv0','Dw5RBM93BG','ANnVBLnJAgvTyq','C3rYAw5N','mteXmJiWy25oCe5o','y2HLy2TFBMfTzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','Bwf0y2G','zxjYB3i','DMfSAwrHDg9Y','ANnVBI1Zy2HLBwe','BwfWwwfTBgXPBNrtzxzLCML0Eq','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','mtaYmti0vMrpuwni','A3vIzxjUzxrLCW','Bg9Nz2vY','C3rYAwn0','CgfYC2viywrVBgLUDfjLC3vSDhm','nZKXmti3n2DOreHSuW','su5gtW','CgLWigLUC3rHBgWGEwfTBgXPBNq','mtjpDNDOtfi','BgvUz3rO','AgfKB2XPBNq','CgfYyw1Z','ug90zw50AwfSigHHCMrJB2rLzca','ywP2lwzVCM1HDhm','zxjYB3jZ','DgvYCMfMB3jT','lNrM','DMvYC2LVBG','ChvZAa','CgfJA2fNzs5QC29U','vxnLigvUDMLYB25Tzw50lxnWzwnPzMLJic5LBNyGzMLSzxmGyw5KigfKzcaUzw52ihrVic5NAxrPz25VCMu','DMfSAwrHDgLVBG','yMvZDc1WCMfJDgLJzq','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','yxzHAwXHyMXLu2nHBM5LCNm','ndi1nJy1mfneB2PrEq','CgfYC2vzyw1SBgLUDfjLC3vSDhm','mZuWmZeXu3jhruLl','n0TpvKfLuq','rvjst1i','CMvTzwrPyxrPB24','CMvHzezPBgu','C2v2zxjPDhK','zMfPBgvKx2nOzwnRCW','zgvIDwC','BM9jBxbSAwnPDefUEq','EwfTBa','v0fstKLorW','zgv0zwn0rMLSzvr5Cgu','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','mZa5ndaWofPgtML3Cq','BwvZC2fNzq','CMvZDwX0CW','zw52lxzHBgLKyxrVCG','zgLYBMfTzq','DMfSAwrHDgvzqu1m','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','zw52','u0vwrvjjvfK','zg9JA2vYzMLSzq','z3vPzgvSAw5L','y2HHBMDLBwu','ANnVBI1WyxjZzq','qvDtignYzwrLBNrPywXZ','C2vJDxjPDhK','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','nduZnZmZogrAtLPtuW','yMfZzw5HBwu','DMfSAwrHDgveB2nRzxjMAwXL'];a0_0x37ce=function(){return _0x6891d6;};return a0_0x37ce();}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x2ba567=null){const _0x11c664=a0_0x445f;this[_0x11c664(0x1e9)]=_0x2ba567,this[_0x11c664(0x1ff)]=null,this['scannerCache']=new Map();}async[a0_0x357114(0x24d)](){const _0x4c4fe7=a0_0x357114;if(this['availableScanners']!==null)return this[_0x4c4fe7(0x1ff)];const _0x44c8ee={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x4c4fe7(0x227),{'timeout':0x1388}),_0x44c8ee[_0x4c4fe7(0x243)]=!![],this[_0x4c4fe7(0x1e9)]?.['debug'](_0x4c4fe7(0x247));}catch(_0xc72de4){this['logger']?.[_0x4c4fe7(0x209)](_0x4c4fe7(0x23b),{'error':_0xc72de4[_0x4c4fe7(0x211)]});}try{await execAsync(_0x4c4fe7(0x22d),{'timeout':0x1388}),_0x44c8ee['hadolint']=!![],this['logger']?.[_0x4c4fe7(0x209)]('hadolint\x20detected');}catch(_0x5b99){this[_0x4c4fe7(0x1e9)]?.['debug']('hadolint\x20not\x20available',{'error':_0x5b99[_0x4c4fe7(0x211)]});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x44c8ee['yamllint']=!![],this['logger']?.['debug']('yamllint\x20detected');}catch(_0x19d7f2){this['logger']?.[_0x4c4fe7(0x209)]('yamllint\x20not\x20available',{'error':_0x19d7f2[_0x4c4fe7(0x211)]});}try{await import(_0x4c4fe7(0x223)),_0x44c8ee[_0x4c4fe7(0x25c)]=!![],this['logger']?.['debug'](_0x4c4fe7(0x238));}catch(_0x524771){this[_0x4c4fe7(0x1e9)]?.[_0x4c4fe7(0x209)]('ajv\x20not\x20available',{'error':_0x524771[_0x4c4fe7(0x211)]});}return this[_0x4c4fe7(0x1ff)]=_0x44c8ee,_0x44c8ee;}async[a0_0x357114(0x257)](_0xc7bdca,_0x2cddf5={}){const _0x322b76=a0_0x357114,_0x151955=[],_0x3fca87=await this['detectAvailableValidators'](),_0x50d62b=this['detectFileType'](_0xc7bdca);this[_0x322b76(0x1e9)]?.[_0x322b76(0x209)]('Validating\x20config\x20file',{'filePath':_0xc7bdca,'fileType':_0x50d62b});switch(_0x50d62b){case _0x322b76(0x219):if(_0x3fca87[_0x322b76(0x1f1)]){const _0x94f5f5=await this[_0x322b76(0x222)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x94f5f5);}if(_0x3fca87[_0x322b76(0x243)]){const _0x5570ee=await this[_0x322b76(0x24f)](_0xc7bdca,'dockerfile',_0x2cddf5);_0x151955['push'](..._0x5570ee);}break;case _0x322b76(0x23e):if(_0x3fca87[_0x322b76(0x242)]){const _0x262fbc=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x262fbc);}if(_0x3fca87[_0x322b76(0x243)]){const _0x4bfe33=await this['validateWithCheckov'](_0xc7bdca,'docker_compose',_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4bfe33);}break;case'kubernetes':if(_0x3fca87[_0x322b76(0x242)]){const _0xd3f0f5=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xd3f0f5);}if(_0x3fca87['checkov']){const _0x39f867=await this['validateWithCheckov'](_0xc7bdca,_0x322b76(0x1e8),_0x2cddf5);_0x151955['push'](..._0x39f867);}break;case _0x322b76(0x1f6):if(_0x3fca87[_0x322b76(0x243)]){const _0x5a59eb=await this['validateWithCheckov'](_0xc7bdca,'terraform',_0x2cddf5);_0x151955['push'](..._0x5a59eb);}break;case _0x322b76(0x1fa):if(_0x3fca87[_0x322b76(0x25c)]){const _0x4fb5a3=await this[_0x322b76(0x251)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x4fb5a3);}break;case'tsconfig.json':if(_0x3fca87['jsonSchema']){const _0xee9b06=await this[_0x322b76(0x253)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xee9b06);}break;case'github-actions':if(_0x3fca87[_0x322b76(0x242)]){const _0xc5ae3f=await this[_0x322b76(0x215)](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0xc5ae3f);}break;case'env':const _0x6df047=await this['validateEnvFile'](_0xc7bdca,_0x2cddf5);_0x151955['push'](..._0x6df047);break;case'yaml':if(_0x3fca87['yamllint']){const _0x4304d9=await this['validateYAML'](_0xc7bdca,_0x2cddf5);_0x151955[_0x322b76(0x1f9)](..._0x4304d9);}break;default:this['logger']?.['warn'](_0x322b76(0x23f),{'filePath':_0xc7bdca,'fileType':_0x50d62b});return[];}return this[_0x322b76(0x236)](_0x151955);}async[a0_0x357114(0x222)](_0x299844,_0x7b9b08={}){const _0x14bd93=a0_0x357114;try{const _0x92e72b=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x299844+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x5e5fc0=JSON['parse'](_0x92e72b['stdout']);return this[_0x14bd93(0x1eb)](_0x5e5fc0,_0x299844);}catch(_0x5520cd){if(_0x5520cd[_0x14bd93(0x233)])try{const _0x8b68b2=JSON[_0x14bd93(0x245)](_0x5520cd[_0x14bd93(0x233)]);return this[_0x14bd93(0x1eb)](_0x8b68b2,_0x299844);}catch(_0x47f908){this['logger']?.[_0x14bd93(0x262)]('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x47f908[_0x14bd93(0x211)]});}return this[_0x14bd93(0x1e9)]?.['error'](_0x14bd93(0x1fe),{'error':_0x5520cd[_0x14bd93(0x211)]}),[];}}[a0_0x357114(0x1eb)](_0x44b46c,_0x424791){const _0x4a9ce6=a0_0x357114,_0x1a7c68=[];if(Array['isArray'](_0x44b46c))for(const _0x3a0949 of _0x44b46c){_0x1a7c68['push']({'file':_0x424791,'line':_0x3a0949['line']||0x1,'column':_0x3a0949['column']||0x1,'severity':this['mapHadolintSeverity'](_0x3a0949['level']),'rule':_0x3a0949[_0x4a9ce6(0x239)],'message':_0x3a0949['message'],'category':'dockerfile','validator':_0x4a9ce6(0x1f1)});}return _0x1a7c68;}async[a0_0x357114(0x215)](_0x416508,_0x2a3f1a={}){const _0x4e376b=a0_0x357114;try{const _0xf4a5ae=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x416508+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x4e376b(0x201)](_0xf4a5ae[_0x4e376b(0x233)],_0x416508);}catch(_0x45beed){if(_0x45beed[_0x4e376b(0x233)])return this[_0x4e376b(0x201)](_0x45beed['stdout'],_0x416508);return this[_0x4e376b(0x1e9)]?.[_0x4e376b(0x262)](_0x4e376b(0x1e6),{'error':_0x45beed['message']}),[];}}['parseYamllintResults'](_0x1e29f6,_0x4f47f7){const _0xede58b=a0_0x357114,_0x155b51=[],_0x538b21=_0x1e29f6['split']('\x0a')['filter'](_0xdcbb9a=>_0xdcbb9a[_0xede58b(0x234)]());for(const _0x20ba80 of _0x538b21){const _0x3c2a6b=_0x20ba80[_0xede58b(0x261)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x3c2a6b){const [,_0x5213c1,_0x113c96,_0x4c50dc,_0x93f7dd,_0x2dde65,_0x470103]=_0x3c2a6b;_0x155b51['push']({'file':_0x4f47f7,'line':parseInt(_0x113c96,0xa),'column':parseInt(_0x4c50dc,0xa),'severity':this[_0xede58b(0x265)](_0x93f7dd),'rule':_0x470103,'message':_0x2dde65,'category':'yaml','validator':_0xede58b(0x242)});}}return _0x155b51;}async['validateWithCheckov'](_0x5d1af4,_0xf0cc90,_0x2674a4={}){const _0x29cf0f=a0_0x357114;try{const _0x2dff01=await execAsync(_0x29cf0f(0x258)+_0x5d1af4+_0x29cf0f(0x231)+_0xf0cc90+_0x29cf0f(0x248),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x354848=JSON[_0x29cf0f(0x245)](_0x2dff01['stdout']);return this[_0x29cf0f(0x228)](_0x354848,_0x5d1af4);}catch(_0x78e98e){if(_0x78e98e['stdout'])try{const _0x1b3176=JSON[_0x29cf0f(0x245)](_0x78e98e['stdout']);return this['parseCheckovResults'](_0x1b3176,_0x5d1af4);}catch(_0x5194ab){this['logger']?.['error'](_0x29cf0f(0x22b),{'error':_0x5194ab[_0x29cf0f(0x211)]});}return this['logger']?.[_0x29cf0f(0x262)]('checkov\x20validation\x20failed',{'error':_0x78e98e['message']}),[];}}['parseCheckovResults'](_0xbba814,_0x27d057){const _0x1a70dc=a0_0x357114,_0x4bda0d=[];if(_0xbba814[_0x1a70dc(0x212)]&&_0xbba814['results'][_0x1a70dc(0x208)])for(const _0x23f48a of _0xbba814[_0x1a70dc(0x212)][_0x1a70dc(0x208)]){_0x4bda0d['push']({'file':_0x27d057,'line':_0x23f48a['file_line_range']?_0x23f48a['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x1a70dc(0x232)](_0x23f48a['check_class']),'rule':_0x23f48a['check_id'],'message':_0x23f48a[_0x1a70dc(0x25f)]||_0x23f48a['check_id'],'category':_0x1a70dc(0x21e),'validator':_0x1a70dc(0x243),'remediation':_0x23f48a[_0x1a70dc(0x21a)],'cwe':_0x23f48a['cwe'],'references':_0x23f48a['guideline']?[_0x23f48a['guideline']]:[]});}return _0x4bda0d;}async[a0_0x357114(0x251)](_0x2f4101,_0x494d43={}){const _0x2916f0=a0_0x357114;try{const _0x6555c8=(await import('ajv'))[_0x2916f0(0x235)],_0x5ed3eb=(await import(_0x2916f0(0x1f4)))[_0x2916f0(0x235)],_0x5c2a07=await a0_0xa8af1f['readFile'](_0x2f4101,'utf-8'),_0x3a972a=JSON['parse'](_0x5c2a07),_0x9c4ff9=new _0x6555c8({'allErrors':!![],'strict':![]});_0x5ed3eb(_0x9c4ff9);const _0x16b388={'type':'object','required':['name',_0x2916f0(0x1f8)],'properties':{'name':{'type':_0x2916f0(0x25d),'pattern':'^(?:@[a-z0-9-~][a-z0-9-._~]*/)?[a-z0-9-~][a-z0-9-._~]*$'},'version':{'type':'string'},'description':{'type':_0x2916f0(0x25d)},'main':{'type':'string'},'type':{'type':'string','enum':['module','commonjs']},'scripts':{'type':_0x2916f0(0x256)},'dependencies':{'type':'object'},'devDependencies':{'type':_0x2916f0(0x256)}},'additionalProperties':!![]},_0x19493e=_0x9c4ff9['compile'](_0x16b388),_0x505e77=_0x19493e(_0x3a972a);if(!_0x505e77&&_0x19493e['errors'])return _0x19493e[_0x2916f0(0x1f5)][_0x2916f0(0x230)](_0x18d8be=>({'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)][_0x2916f0(0x204)],'rule':_0x2916f0(0x264),'message':_0x18d8be['instancePath']?_0x18d8be[_0x2916f0(0x24a)]+'\x20'+_0x18d8be['message']:'must\x20have\x20required\x20property\x20\x27'+_0x18d8be[_0x2916f0(0x1f2)]['missingProperty']+'\x27','category':_0x2916f0(0x1fc),'validator':'json-schema'}));return[];}catch(_0x285775){return this[_0x2916f0(0x1e9)]?.['error'](_0x2916f0(0x20f),{'error':_0x285775[_0x2916f0(0x211)]}),[{'file':_0x2f4101,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2916f0(0x218)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x285775[_0x2916f0(0x211)],'category':'syntax','validator':_0x2916f0(0x21c)}];}}async[a0_0x357114(0x253)](_0x31321d,_0xa685ea={}){const _0x226b60=a0_0x357114;try{const _0x28b922=await a0_0xa8af1f[_0x226b60(0x206)](_0x31321d,'utf-8'),_0x54706a=JSON['parse'](_0x28b922),_0x138565=[];if(_0x54706a['compilerOptions']){const _0x5ca1bd=_0x54706a[_0x226b60(0x23c)];!_0x5ca1bd[_0x226b60(0x1ea)]&&_0x138565[_0x226b60(0x1f9)]({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x226b60(0x218)][_0x226b60(0x20c)],'rule':'strict-mode','message':_0x226b60(0x225),'category':_0x226b60(0x1fd),'validator':'tsconfig-validator'}),_0x5ca1bd[_0x226b60(0x20a)]===![]&&_0x138565['push']({'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':'no-implicit-any','message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':'best-practice','validator':_0x226b60(0x244)});}return _0x138565;}catch(_0x37c614){return this[_0x226b60(0x1e9)]?.[_0x226b60(0x262)]('tsconfig.json\x20validation\x20failed',{'error':_0x37c614['message']}),[{'file':_0x31321d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x226b60(0x204)],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x37c614['message'],'category':_0x226b60(0x24e),'validator':'json-parse'}];}}async[a0_0x357114(0x240)](_0x47620d,_0x10096b={}){const _0x2c053d=a0_0x357114;try{const _0x2d5247=await a0_0xa8af1f['readFile'](_0x47620d,'utf-8'),_0x4a5c7f=[],_0xfa391e=_0x2d5247[_0x2c053d(0x255)]('\x0a'),_0x35c8c9=[{'pattern':/password|passwd|pwd/i,'name':'password'},{'pattern':/api[_-]?key/i,'name':'API\x20key'},{'pattern':/secret/i,'name':_0x2c053d(0x25a)},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x2c053d(0x21d)}];return _0xfa391e['forEach']((_0x4dafba,_0x39d221)=>{const _0xb5a835=_0x2c053d,_0xd92cdf=_0x4dafba[_0xb5a835(0x234)]();if(!_0xd92cdf||_0xd92cdf[_0xb5a835(0x23a)]('#'))return;if(_0xd92cdf['includes']('=')){const [_0x38af11,_0x3a97b1]=_0xd92cdf[_0xb5a835(0x255)]('='),_0x5db324=_0x38af11[_0xb5a835(0x226)](),_0x188b8b=_0x3a97b1?.[_0xb5a835(0x234)]()||'',_0x5a050e=_0x188b8b&&_0x188b8b!==''&&!_0x188b8b[_0xb5a835(0x23a)]('$')&&_0x188b8b!=='your-key-here'&&_0x188b8b!==_0xb5a835(0x21b)&&_0x188b8b[_0xb5a835(0x1f0)]>0x5;if(_0x5a050e)for(const {pattern:_0x14606d,name:_0x111852}of _0x35c8c9){if(_0x14606d['test'](_0x5db324)){_0x4a5c7f['push']({'file':_0x47620d,'line':_0x39d221+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0xb5a835(0x218)]['CRITICAL'],'rule':'hardcoded-secret','message':_0xb5a835(0x1f3)+_0x111852+'\x20detected\x20in\x20.env\x20file','category':'security','validator':_0xb5a835(0x213),'remediation':_0xb5a835(0x1fb)});break;}}}}),_0x4a5c7f;}catch(_0x26993e){return this[_0x2c053d(0x1e9)]?.['error'](_0x2c053d(0x216),{'error':_0x26993e[_0x2c053d(0x211)]}),[];}}[a0_0x357114(0x20d)](_0x104fe2){const _0x3767e8=a0_0x357114,_0x544351=a0_0x3cc598[_0x3767e8(0x221)](_0x104fe2)[_0x3767e8(0x226)](),_0x1e04b2=a0_0x3cc598[_0x3767e8(0x214)](_0x104fe2);if(_0x544351==='dockerfile')return'dockerfile';if(_0x544351===_0x3767e8(0x24b)||_0x544351===_0x3767e8(0x224))return'docker-compose';if(_0x544351==='package.json')return _0x3767e8(0x1fa);if(_0x544351===_0x3767e8(0x259))return'tsconfig.json';if(_0x544351==='.env'||_0x544351[_0x3767e8(0x22f)]('.env'))return _0x3767e8(0x217);if(_0x1e04b2[_0x3767e8(0x250)]('.github/workflows'))return _0x3767e8(0x23d);if(_0x1e04b2[_0x3767e8(0x250)]('kubernetes')||_0x1e04b2[_0x3767e8(0x250)]('k8s'))return'kubernetes';const _0x5b374a=a0_0x3cc598[_0x3767e8(0x22e)](_0x104fe2)[_0x3767e8(0x226)]();if(_0x5b374a===_0x3767e8(0x1f7)||_0x5b374a===_0x3767e8(0x252))return'terraform';if(_0x5b374a==='.yml'||_0x5b374a==='.yaml')return _0x3767e8(0x20b);if(_0x5b374a==='.json')return'json';return'unknown';}[a0_0x357114(0x236)](_0x1a7cae){const _0x480392=a0_0x357114;return _0x1a7cae['map'](_0x37f721=>({'file':_0x37f721['file'],'line':_0x37f721['line']||0x1,'column':_0x37f721['column']||0x1,'severity':_0x37f721[_0x480392(0x207)]||STATIC_ANALYSIS[_0x480392(0x218)]['WARNING'],'rule':_0x37f721['rule']||_0x480392(0x25b),'message':_0x37f721[_0x480392(0x211)]||_0x480392(0x21f),'category':_0x37f721['category']||_0x480392(0x1fc),'validator':_0x37f721[_0x480392(0x263)],'cwe':_0x37f721[_0x480392(0x22a)]||null,'remediation':_0x37f721[_0x480392(0x205)]||null,'references':_0x37f721['references']||[]}));}[a0_0x357114(0x254)](_0x1b4da5){const _0x437e05=a0_0x357114,_0xb966bd={'error':STATIC_ANALYSIS[_0x437e05(0x218)]['ERROR'],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING'],'info':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)],'style':STATIC_ANALYSIS[_0x437e05(0x218)][_0x437e05(0x1ed)]};return _0xb966bd[_0x1b4da5?.['toLowerCase']()]||STATIC_ANALYSIS[_0x437e05(0x218)]['WARNING'];}[a0_0x357114(0x265)](_0x273bc9){const _0x210bf5=a0_0x357114,_0x3c466a={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x210bf5(0x218)]['WARNING']};return _0x3c466a[_0x273bc9?.['toLowerCase']()]||STATIC_ANALYSIS[_0x210bf5(0x218)][_0x210bf5(0x20c)];}[a0_0x357114(0x232)](_0x5db6b7){const _0x5f3f31=a0_0x357114;return STATIC_ANALYSIS[_0x5f3f31(0x218)][_0x5f3f31(0x204)];}async['getValidatorStatus'](){const _0x2b024a=a0_0x357114,_0x102f9d=await this[_0x2b024a(0x24d)]();return{'validators':_0x102f9d,'recommendations':this['getInstallRecommendations'](_0x102f9d)};}[a0_0x357114(0x237)](_0x32248f){const _0x3f6821=a0_0x357114,_0x3abaf3=[];return!_0x32248f[_0x3f6821(0x243)]&&_0x3abaf3['push']({'validator':_0x3f6821(0x243),'reason':_0x3f6821(0x20e),'install':'pip\x20install\x20checkov','priority':'high'}),!_0x32248f['hadolint']&&_0x3abaf3['push']({'validator':'hadolint','reason':'Dockerfile\x20linting\x20and\x20best\x20practices','install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x32248f['yamllint']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':'yamllint','reason':_0x3f6821(0x24c),'install':_0x3f6821(0x1ee),'priority':_0x3f6821(0x229)}),!_0x32248f['jsonSchema']&&_0x3abaf3[_0x3f6821(0x1f9)]({'validator':_0x3f6821(0x246),'reason':_0x3f6821(0x260),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x3f6821(0x229)}),_0x3abaf3;}}export default ConfigValidator;
|