@loxia-labs/loxia-autopilot-one 1.2.2 → 1.2.3
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/README.md +2 -2
- 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/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/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/errorHandler.js +1 -1
- package/src/services/fileAttachmentService.js +1 -1
- package/src/services/modelRouterService.js +1 -1
- package/src/services/modelsService.js +1 -1
- package/src/services/qualityInspector.js +1 -1
- package/src/services/tokenCountingService.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/fileContentReplaceTool.js +1 -1
- package/src/tools/fileSystemTool.js +1 -1
- package/src/tools/fileTreeTool.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/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/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/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/logger.js +1 -1
- package/src/utilities/platformUtils.js +1 -1
- package/src/utilities/platformUtils.test.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-zjK91IDI.js → index-C_dPgZzH.js} +77 -77
package/README.md
CHANGED
|
@@ -99,7 +99,7 @@ npm install -g @loxia-labs/loxia-autopilot-one
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
loxia --version
|
|
102
|
-
# Should display: Loxia Autopilot One v1.2.
|
|
102
|
+
# Should display: Loxia Autopilot One v1.2.3
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
### 4. Create an API Key
|
|
@@ -371,7 +371,7 @@ Loxia automatically compacts long conversations to stay within token limits:
|
|
|
371
371
|
|
|
372
372
|
## 🛣️ Roadmap
|
|
373
373
|
|
|
374
|
-
### Current Version (1.2.
|
|
374
|
+
### Current Version (1.2.3)
|
|
375
375
|
|
|
376
376
|
- ✅ Multi-agent orchestration
|
|
377
377
|
- ✅ 18+ specialized tools
|
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x210c35=a0_0x40cb;(function(_0x3cc8a6,_0x25aab9){const _0x3aa1fb=a0_0x40cb,_0x13a935=_0x3cc8a6();while(!![]){try{const _0x9b283b=-parseInt(_0x3aa1fb(0x18d))/0x1*(parseInt(_0x3aa1fb(0x186))/0x2)+-parseInt(_0x3aa1fb(0x182))/0x3*(parseInt(_0x3aa1fb(0x18f))/0x4)+parseInt(_0x3aa1fb(0x1a3))/0x5*(parseInt(_0x3aa1fb(0x17e))/0x6)+parseInt(_0x3aa1fb(0x1ad))/0x7*(-parseInt(_0x3aa1fb(0x187))/0x8)+parseInt(_0x3aa1fb(0x17f))/0x9+-parseInt(_0x3aa1fb(0x192))/0xa+-parseInt(_0x3aa1fb(0x179))/0xb*(-parseInt(_0x3aa1fb(0x19a))/0xc);if(_0x9b283b===_0x25aab9)break;else _0x13a935['push'](_0x13a935['shift']());}catch(_0x3d723f){_0x13a935['push'](_0x13a935['shift']());}}}(a0_0x57ec,0x88856));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';function a0_0x57ec(){const _0x267065=['http://','ignore','startsWith','pid','SIGINT','help','parse','35GaDaGY','env','statusCode','\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI','port','\x0aServer\x20is\x20not\x20running\x20at\x20','\x0aPlease\x20start\x20the\x20server\x20first:','toString','win32','setTimeout','3124231TNtecX','version','includes','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aShutting\x20down\x20server...','1596aujplf','3157326SsgGDA','Starting\x20Loxia\x20server...\x0a','\x20manually.','12pRgruV','xdg-open','utf8','src','10YvLNid','887584UXOrTd','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\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:\x20','node','Starting\x20Loxia\x20server\x20in\x20background...','\x0aOpening\x20Web\x20UI\x20at\x20','96226mfvIeV','kill','990352ASRznl','host','exit','6983810xNGqGw','index.js','unref','Server\x20is\x20running\x20at\x20','web','error','log','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','84mGBHVm','SIGTERM','package.json','Loxia\x20Autopilot\x20One\x20v','\x0aLoxia\x20Autopilot\x20One\x20v','--help','catch','slice','Please\x20open\x20manually:\x20','17760MbXUEC','Starting\x20Terminal\x20UI...\x0a','--version'];a0_0x57ec=function(){return _0x267065;};return a0_0x57ec();}import a0_0x302ac4 from'http';function a0_0x40cb(_0x465f7f,_0x2870bb){_0x465f7f=_0x465f7f-0x171;const _0x57ec74=a0_0x57ec();let _0x40cb65=_0x57ec74[_0x465f7f];return _0x40cb65;}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process['argv'][a0_0x210c35(0x1a1)](0x2),command=args[0x0]&&!args[0x0][a0_0x210c35(0x1a8)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x210c35(0x17b)](a0_0x210c35(0x19f))||args[a0_0x210c35(0x17b)]('-h'),'version':args['includes'](a0_0x210c35(0x1a5))||args[a0_0x210c35(0x17b)]('-v')};for(let i=0x0;i<args['length'];i++){args[i]==='--port'&&args[i+0x1]&&(flags[a0_0x210c35(0x173)]=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x210c35(0x190)]=args[i+0x1]);}const port=flags['port']||DEFAULT_PORT,host=flags[a0_0x210c35(0x190)]||DEFAULT_HOST,serverUrl='http://'+host+':'+port;if(flags[a0_0x210c35(0x17a)]){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x210c35(0x1ac)](readFileSync(pkgPath,a0_0x210c35(0x184)));console['log'](a0_0x210c35(0x19d)+pkg[a0_0x210c35(0x17a)]),process[a0_0x210c35(0x191)](0x0);}if(flags[a0_0x210c35(0x1ab)]||!command){const pkgPath=join(__dirname,'..',a0_0x210c35(0x19c)),pkg=JSON['parse'](readFileSync(pkgPath,a0_0x210c35(0x184)));console[a0_0x210c35(0x198)](a0_0x210c35(0x19e)+pkg['version']+a0_0x210c35(0x189)+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\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\x20custom\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\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a'),process[a0_0x210c35(0x191)](0x0);}async function checkServerRunning(_0x48ffcb,_0x8105e7,_0x2163a6=0x1){for(let _0x2d0ffc=0x0;_0x2d0ffc<_0x2163a6;_0x2d0ffc++){const _0x398f5f=await new Promise(_0x42295f=>{const _0x30ed84=a0_0x40cb,_0x1d4497=a0_0x302ac4['get'](_0x30ed84(0x1a6)+_0x48ffcb+':'+_0x8105e7+'/api/health',_0x577a4b=>{const _0x5b3590=_0x30ed84;_0x42295f(_0x577a4b[_0x5b3590(0x171)]===0xc8);});_0x1d4497['on'](_0x30ed84(0x197),()=>_0x42295f(![])),_0x1d4497[_0x30ed84(0x178)](0x7d0,()=>{_0x1d4497['destroy'](),_0x42295f(![]);});});if(_0x398f5f)return!![];_0x2d0ffc<_0x2163a6-0x1&&await new Promise(_0x1e8958=>setTimeout(_0x1e8958,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x4bab3e,_0x5847ef,_0x234e9a=SERVER_STARTUP_TIMEOUT){const _0x990d9b=Math['ceil'](_0x234e9a/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x4bab3e,_0x5847ef,_0x990d9b);}function openBrowser(_0x4f6f23){const _0x3b1989=a0_0x210c35;let _0xa2d0c6,_0x36130c;if(process['platform']===_0x3b1989(0x188))_0xa2d0c6='open',_0x36130c=[_0x4f6f23];else process['platform']===_0x3b1989(0x177)?(_0xa2d0c6='cmd',_0x36130c=['/c','start','\x22\x22',_0x4f6f23]):(_0xa2d0c6=_0x3b1989(0x183),_0x36130c=[_0x4f6f23]);const _0x3f9f65=spawn(_0xa2d0c6,_0x36130c,{'detached':!![],'stdio':_0x3b1989(0x1a7)});_0x3f9f65[_0x3b1989(0x194)](),_0x3f9f65['on'](_0x3b1989(0x197),()=>{const _0x132af3=_0x3b1989;console[_0x132af3(0x198)]('Could\x20not\x20open\x20browser\x20automatically.'),console[_0x132af3(0x198)](_0x132af3(0x1a2)+_0x4f6f23);});}function startServer(_0x2becb8=![]){const _0x5bc8dd=a0_0x210c35,_0x14c652={...process[_0x5bc8dd(0x1ae)],'LOXIA_PORT':port[_0x5bc8dd(0x176)](),'PORT':port['toString']()};flags[_0x5bc8dd(0x190)]&&(_0x14c652['LOXIA_HOST']=flags[_0x5bc8dd(0x190)]);const _0x1b80b4=join(__dirname,'..',_0x5bc8dd(0x185),_0x5bc8dd(0x193)),_0x22aed2=spawn(_0x5bc8dd(0x18a),[_0x1b80b4],{'cwd':join(__dirname,'..'),'env':_0x14c652,'stdio':_0x2becb8?[_0x5bc8dd(0x1a7),_0x5bc8dd(0x1a7),_0x5bc8dd(0x1a7)]:'inherit','detached':_0x2becb8});return _0x2becb8&&_0x22aed2[_0x5bc8dd(0x194)](),_0x22aed2;}function startTerminalUI(){const _0x184959=a0_0x210c35,_0x277ec9=join(__dirname,'loxia-terminal.js'),_0x28e4cc={...process['env'],'LOXIA_PORT':port[_0x184959(0x176)](),'LOXIA_HOST':host},_0xb4fe4b=spawn('node',[_0x277ec9],{'cwd':join(__dirname,'..'),'env':_0x28e4cc,'stdio':'inherit'});return _0xb4fe4b;}const commands={'web':async()=>{const _0x5a41b6=a0_0x210c35;console['log'](_0x5a41b6(0x180));const _0x2563cf=startServer(![]);console[_0x5a41b6(0x198)]('Waiting\x20for\x20server\x20to\x20start...');const _0x14f455=await waitForServer(host,port);_0x14f455?(console[_0x5a41b6(0x198)](_0x5a41b6(0x18c)+serverUrl),openBrowser(serverUrl)):console['log']('\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20'+serverUrl+_0x5a41b6(0x181)),process['on']('SIGINT',()=>_0x2563cf[_0x5a41b6(0x18e)]('SIGINT')),process['on'](_0x5a41b6(0x19b),()=>_0x2563cf['kill']('SIGTERM')),_0x2563cf['on'](_0x5a41b6(0x191),_0x3b2dba=>process[_0x5a41b6(0x191)](_0x3b2dba||0x0));},'plus-web':async()=>{const _0x2af484=a0_0x210c35;await commands[_0x2af484(0x196)]();},'terminal':async()=>{const _0x5280f1=a0_0x210c35;console['log']('Checking\x20if\x20server\x20is\x20running...');const _0x2ac358=await checkServerRunning(host,port);!_0x2ac358&&(console['error'](_0x5280f1(0x174)+serverUrl),console[_0x5280f1(0x197)](_0x5280f1(0x175)),console[_0x5280f1(0x197)](_0x5280f1(0x172)),console[_0x5280f1(0x197)](_0x5280f1(0x17c)),process[_0x5280f1(0x191)](0x1));console[_0x5280f1(0x198)](_0x5280f1(0x195)+serverUrl),console[_0x5280f1(0x198)](_0x5280f1(0x1a4));const _0x53c88a=startTerminalUI();process['on'](_0x5280f1(0x1aa),()=>_0x53c88a['kill']('SIGINT')),process['on'](_0x5280f1(0x19b),()=>_0x53c88a[_0x5280f1(0x18e)](_0x5280f1(0x19b))),_0x53c88a['on']('exit',_0x263339=>process[_0x5280f1(0x191)](_0x263339||0x0));},'plus-terminal':async()=>{const _0x26f1c0=a0_0x210c35;console['log'](_0x26f1c0(0x18b));const _0x1ef33c=startServer(!![]),_0x57fae0=await waitForServer(host,port);!_0x57fae0&&(console[_0x26f1c0(0x197)](_0x26f1c0(0x199)),process[_0x26f1c0(0x191)](0x1));console[_0x26f1c0(0x198)]('Server\x20running\x20at\x20'+serverUrl),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x4778d0=startTerminalUI();_0x4778d0['on'](_0x26f1c0(0x191),_0x8ad77f=>{const _0x5b07f0=_0x26f1c0;console[_0x5b07f0(0x198)](_0x5b07f0(0x17d));try{process[_0x5b07f0(0x18e)](_0x1ef33c[_0x5b07f0(0x1a9)],_0x5b07f0(0x19b));}catch(_0x5c264f){}process[_0x5b07f0(0x191)](_0x8ad77f||0x0);}),process['on'](_0x26f1c0(0x1aa),()=>{const _0x268d88=_0x26f1c0;_0x4778d0[_0x268d88(0x18e)](_0x268d88(0x1aa));}),process['on'](_0x26f1c0(0x19b),()=>{const _0x960493=_0x26f1c0;_0x4778d0['kill'](_0x960493(0x19b));});}};commands[command]?commands[command]()[a0_0x210c35(0x1a0)](_0x460ddc=>{const _0x544ac2=a0_0x210c35;console[_0x544ac2(0x197)]('Error:',_0x460ddc['message']),process[_0x544ac2(0x191)](0x1);}):(console[a0_0x210c35(0x197)]('Unknown\x20command:\x20'+command),console[a0_0x210c35(0x197)]('Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.'),process[a0_0x210c35(0x191)](0x1));
|
|
3
|
+
const a0_0x35877a=a0_0x2faf;(function(_0x169fd6,_0x48618d){const _0x4bc2d3=a0_0x2faf,_0x29c7fc=_0x169fd6();while(!![]){try{const _0x3b9293=parseInt(_0x4bc2d3(0x184))/0x1*(parseInt(_0x4bc2d3(0x158))/0x2)+parseInt(_0x4bc2d3(0x16c))/0x3*(-parseInt(_0x4bc2d3(0x13c))/0x4)+-parseInt(_0x4bc2d3(0x146))/0x5*(-parseInt(_0x4bc2d3(0x13a))/0x6)+-parseInt(_0x4bc2d3(0x163))/0x7*(parseInt(_0x4bc2d3(0x16d))/0x8)+-parseInt(_0x4bc2d3(0x14c))/0x9+-parseInt(_0x4bc2d3(0x17b))/0xa+parseInt(_0x4bc2d3(0x14d))/0xb*(parseInt(_0x4bc2d3(0x169))/0xc);if(_0x3b9293===_0x48618d)break;else _0x29c7fc['push'](_0x29c7fc['shift']());}catch(_0x151d2){_0x29c7fc['push'](_0x29c7fc['shift']());}}}(a0_0x42bb,0xb6e59));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x526aa8 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x35877a(0x14a),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x35877a(0x174)][a0_0x35877a(0x17f)](0x2),command=args[0x0]&&!args[0x0][a0_0x35877a(0x183)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x35877a(0x147)]('--help')||args[a0_0x35877a(0x147)]('-h'),'version':args[a0_0x35877a(0x147)]('--version')||args[a0_0x35877a(0x147)]('-v')};for(let i=0x0;i<args[a0_0x35877a(0x15d)];i++){args[i]===a0_0x35877a(0x153)&&args[i+0x1]&&(flags[a0_0x35877a(0x143)]=parseInt(args[i+0x1],0xa)),args[i]===a0_0x35877a(0x166)&&args[i+0x1]&&(flags[a0_0x35877a(0x140)]=args[i+0x1]);}const port=flags[a0_0x35877a(0x143)]||DEFAULT_PORT,host=flags[a0_0x35877a(0x140)]||DEFAULT_HOST,serverUrl=a0_0x35877a(0x141)+host+':'+port;if(flags[a0_0x35877a(0x15e)]){const pkgPath=join(__dirname,'..',a0_0x35877a(0x17c)),pkg=JSON[a0_0x35877a(0x151)](readFileSync(pkgPath,a0_0x35877a(0x144)));console['log'](a0_0x35877a(0x13d)+pkg[a0_0x35877a(0x15e)]),process[a0_0x35877a(0x16b)](0x0);}if(flags[a0_0x35877a(0x15c)]||!command){const pkgPath=join(__dirname,'..',a0_0x35877a(0x17c)),pkg=JSON[a0_0x35877a(0x151)](readFileSync(pkgPath,'utf8'));console[a0_0x35877a(0x167)](a0_0x35877a(0x16e)+pkg[a0_0x35877a(0x15e)]+a0_0x35877a(0x17d)+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+a0_0x35877a(0x13e)),process['exit'](0x0);}async function checkServerRunning(_0x32d91c,_0x265ad9,_0x176323=0x1){for(let _0x28cfc8=0x0;_0x28cfc8<_0x176323;_0x28cfc8++){const _0x100376=await new Promise(_0x2724d4=>{const _0x193bbf=a0_0x2faf,_0x3de881=a0_0x526aa8['get'](_0x193bbf(0x141)+_0x32d91c+':'+_0x265ad9+_0x193bbf(0x142),_0x227a83=>{_0x2724d4(_0x227a83['statusCode']===0xc8);});_0x3de881['on'](_0x193bbf(0x164),()=>_0x2724d4(![])),_0x3de881[_0x193bbf(0x162)](0x7d0,()=>{const _0x609ded=_0x193bbf;_0x3de881[_0x609ded(0x156)](),_0x2724d4(![]);});});if(_0x100376)return!![];_0x28cfc8<_0x176323-0x1&&await new Promise(_0x2d5095=>setTimeout(_0x2d5095,SERVER_CHECK_INTERVAL));}return![];}async function waitForServer(_0x869f5f,_0x2c2a3f,_0x4374d4=SERVER_STARTUP_TIMEOUT){const _0x3a4759=a0_0x35877a,_0x3cf708=Math[_0x3a4759(0x165)](_0x4374d4/SERVER_CHECK_INTERVAL);return checkServerRunning(_0x869f5f,_0x2c2a3f,_0x3cf708);}function a0_0x42bb(){const _0x4b5fd6=['Starting\x20Loxia\x20server...\x0a','\x0aServer\x20is\x20not\x20running\x20at\x20','Please\x20open\x20manually:\x20','startsWith','5492NvafTN','start','18ScPlHx','Unknown\x20command:\x20','12SOFviH','Loxia\x20Autopilot\x20One\x20v',')\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\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\x20custom\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\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','Starting\x20Terminal\x20UI...\x0a','host','http://','/api/health','port','utf8','node','1492175FybJtv','includes','index.js','ignore','localhost','Error:','5612076eAAlzm','209MzVXIg','web','\x0aServer\x20may\x20still\x20be\x20starting.\x20Open\x20','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','parse','kill','--port','SIGTERM','Server\x20is\x20running\x20at\x20','destroy','Waiting\x20for\x20server\x20to\x20start...','282MRDzHY','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','loxia-terminal.js','env','help','length','version','catch','cmd','Starting\x20Loxia\x20server\x20in\x20background...','setTimeout','161ZDCEbJ','error','ceil','--host','log','\x0aOpening\x20Web\x20UI\x20at\x20','1087608Caoyjh','\x0aShutting\x20down\x20server...','exit','465489kILlre','351752PXwjAA','\x0aLoxia\x20Autopilot\x20One\x20v','inherit','LOXIA_HOST','message','Checking\x20if\x20server\x20is\x20running...','open','argv','SIGINT','platform','toString','darwin','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','xdg-open','5422380isWjnb','package.json','\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\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:\x20','pid','slice'];a0_0x42bb=function(){return _0x4b5fd6;};return a0_0x42bb();}function openBrowser(_0x5c41ca){const _0x3a156e=a0_0x35877a;let _0xea780c,_0x207851;if(process[_0x3a156e(0x176)]===_0x3a156e(0x178))_0xea780c=_0x3a156e(0x173),_0x207851=[_0x5c41ca];else process[_0x3a156e(0x176)]==='win32'?(_0xea780c=_0x3a156e(0x160),_0x207851=['/c',_0x3a156e(0x139),'\x22\x22',_0x5c41ca]):(_0xea780c=_0x3a156e(0x17a),_0x207851=[_0x5c41ca]);const _0x165b04=spawn(_0xea780c,_0x207851,{'detached':!![],'stdio':'ignore'});_0x165b04['unref'](),_0x165b04['on'](_0x3a156e(0x164),()=>{const _0x2b4264=_0x3a156e;console['log']('Could\x20not\x20open\x20browser\x20automatically.'),console['log'](_0x2b4264(0x182)+_0x5c41ca);});}function startServer(_0x34edfd=![]){const _0x39f83b=a0_0x35877a,_0x43b23a={...process[_0x39f83b(0x15b)],'LOXIA_PORT':port['toString'](),'PORT':port[_0x39f83b(0x177)]()};flags[_0x39f83b(0x140)]&&(_0x43b23a[_0x39f83b(0x170)]=flags[_0x39f83b(0x140)]);const _0x4a4acb=join(__dirname,'..','src',_0x39f83b(0x148)),_0x3a45a3=spawn(_0x39f83b(0x145),[_0x4a4acb],{'cwd':join(__dirname,'..'),'env':_0x43b23a,'stdio':_0x34edfd?[_0x39f83b(0x149),_0x39f83b(0x149),_0x39f83b(0x149)]:'inherit','detached':_0x34edfd});return _0x34edfd&&_0x3a45a3['unref'](),_0x3a45a3;}function startTerminalUI(){const _0xe25e53=a0_0x35877a,_0x5a888e=join(__dirname,_0xe25e53(0x15a)),_0x2a33e7={...process['env'],'LOXIA_PORT':port['toString'](),'LOXIA_HOST':host},_0x5510ba=spawn('node',[_0x5a888e],{'cwd':join(__dirname,'..'),'env':_0x2a33e7,'stdio':_0xe25e53(0x16f)});return _0x5510ba;}const commands={'web':async()=>{const _0x45836d=a0_0x35877a;console['log'](_0x45836d(0x180));const _0x32e421=startServer(![]);console[_0x45836d(0x167)](_0x45836d(0x157));const _0xf9e2da=await waitForServer(host,port);_0xf9e2da?(console[_0x45836d(0x167)](_0x45836d(0x168)+serverUrl),openBrowser(serverUrl)):console[_0x45836d(0x167)](_0x45836d(0x14f)+serverUrl+'\x20manually.'),process['on'](_0x45836d(0x175),()=>_0x32e421[_0x45836d(0x152)]('SIGINT')),process['on']('SIGTERM',()=>_0x32e421[_0x45836d(0x152)]('SIGTERM')),_0x32e421['on'](_0x45836d(0x16b),_0x1cf528=>process[_0x45836d(0x16b)](_0x1cf528||0x0));},'plus-web':async()=>{const _0x45f914=a0_0x35877a;await commands[_0x45f914(0x14e)]();},'terminal':async()=>{const _0x4aa99a=a0_0x35877a;console[_0x4aa99a(0x167)](_0x4aa99a(0x172));const _0x5cf2f9=await checkServerRunning(host,port);!_0x5cf2f9&&(console[_0x4aa99a(0x164)](_0x4aa99a(0x181)+serverUrl),console[_0x4aa99a(0x164)]('\x0aPlease\x20start\x20the\x20server\x20first:'),console[_0x4aa99a(0x164)]('\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI'),console[_0x4aa99a(0x164)](_0x4aa99a(0x179)),process['exit'](0x1));console[_0x4aa99a(0x167)](_0x4aa99a(0x155)+serverUrl),console[_0x4aa99a(0x167)](_0x4aa99a(0x13f));const _0x532f80=startTerminalUI();process['on'](_0x4aa99a(0x175),()=>_0x532f80[_0x4aa99a(0x152)]('SIGINT')),process['on'](_0x4aa99a(0x154),()=>_0x532f80[_0x4aa99a(0x152)]('SIGTERM')),_0x532f80['on']('exit',_0x1f2e48=>process[_0x4aa99a(0x16b)](_0x1f2e48||0x0));},'plus-terminal':async()=>{const _0x2c04e2=a0_0x35877a;console['log'](_0x2c04e2(0x161));const _0x4c8757=startServer(!![]),_0xdb646f=await waitForServer(host,port);!_0xdb646f&&(console['error'](_0x2c04e2(0x150)),process[_0x2c04e2(0x16b)](0x1));console[_0x2c04e2(0x167)]('Server\x20running\x20at\x20'+serverUrl),console[_0x2c04e2(0x167)](_0x2c04e2(0x13f));const _0x4ea758=startTerminalUI();_0x4ea758['on'](_0x2c04e2(0x16b),_0x199bf1=>{const _0x2d24d1=_0x2c04e2;console[_0x2d24d1(0x167)](_0x2d24d1(0x16a));try{process[_0x2d24d1(0x152)](_0x4c8757[_0x2d24d1(0x17e)],_0x2d24d1(0x154));}catch(_0x54dfaf){}process[_0x2d24d1(0x16b)](_0x199bf1||0x0);}),process['on'](_0x2c04e2(0x175),()=>{const _0x4bad0f=_0x2c04e2;_0x4ea758[_0x4bad0f(0x152)](_0x4bad0f(0x175));}),process['on'](_0x2c04e2(0x154),()=>{const _0x3408f8=_0x2c04e2;_0x4ea758[_0x3408f8(0x152)](_0x3408f8(0x154));});}};function a0_0x2faf(_0x5153de,_0x2d33e0){_0x5153de=_0x5153de-0x139;const _0x42bb30=a0_0x42bb();let _0x2faf74=_0x42bb30[_0x5153de];return _0x2faf74;}commands[command]?commands[command]()[a0_0x35877a(0x15f)](_0x2ede12=>{const _0x37a388=a0_0x35877a;console[_0x37a388(0x164)](_0x37a388(0x14b),_0x2ede12[_0x37a388(0x171)]),process['exit'](0x1);}):(console['error'](a0_0x35877a(0x13b)+command),console[a0_0x35877a(0x164)](a0_0x35877a(0x159)),process[a0_0x35877a(0x16b)](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
function a0_0x1631(_0x5d740f,_0x42b771){_0x5d740f=_0x5d740f-0x163;const _0x25e6db=a0_0x25e6();let _0x163130=_0x25e6db[_0x5d740f];return _0x163130;}const a0_0x32aa26=a0_0x1631;(function(_0x40621a,_0x250e5b){const _0x21f00c=a0_0x1631,_0x319a39=_0x40621a();while(!![]){try{const _0xa4101b=parseInt(_0x21f00c(0x16d))/0x1*(-parseInt(_0x21f00c(0x168))/0x2)+parseInt(_0x21f00c(0x170))/0x3+parseInt(_0x21f00c(0x18f))/0x4*(parseInt(_0x21f00c(0x181))/0x5)+-parseInt(_0x21f00c(0x166))/0x6*(-parseInt(_0x21f00c(0x175))/0x7)+-parseInt(_0x21f00c(0x17a))/0x8*(-parseInt(_0x21f00c(0x176))/0x9)+-parseInt(_0x21f00c(0x186))/0xa+parseInt(_0x21f00c(0x18c))/0xb*(-parseInt(_0x21f00c(0x16b))/0xc);if(_0xa4101b===_0x250e5b)break;else _0x319a39['push'](_0x319a39['shift']());}catch(_0x24402c){_0x319a39['push'](_0x319a39['shift']());}}}(a0_0x25e6,0xadc47));import{spawn}from'child_process';import a0_0x2c6683 from'net';import a0_0x3a8e70 from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x3a8e70[a0_0x32aa26(0x17b)](__filename),projectRoot=a0_0x3a8e70[a0_0x32aa26(0x17b)](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x446a52,_0x5b2146){return new Promise(_0x2886ba=>{const _0x265971=a0_0x1631,_0x184803=new a0_0x2c6683[(_0x265971(0x184))]();_0x184803[_0x265971(0x188)](0x7d0),_0x184803['on']('connect',()=>{const _0x48336e=_0x265971;_0x184803[_0x48336e(0x172)](),_0x2886ba(!![]);}),_0x184803['on'](_0x265971(0x185),()=>{const _0x1a2504=_0x265971;_0x184803[_0x1a2504(0x172)](),_0x2886ba(![]);}),_0x184803['on'](_0x265971(0x169),()=>{const _0x1880d4=_0x265971;_0x184803[_0x1880d4(0x172)](),_0x2886ba(![]);}),_0x184803['connect'](_0x5b2146,_0x446a52);});}async function startServer(_0x58034e,_0x6797b9){const _0x380e96=a0_0x32aa26;return console[_0x380e96(0x18d)](_0x380e96(0x164)),new Promise((_0x1360ac,_0x5017d8)=>{const _0x1228a9=_0x380e96,_0x5e73c4=spawn(_0x1228a9(0x191),[a0_0x3a8e70['join'](projectRoot,_0x1228a9(0x173)),_0x1228a9(0x163),'web',_0x1228a9(0x18e),_0x58034e,_0x1228a9(0x18b),_0x6797b9[_0x1228a9(0x17c)]()],{'detached':![],'stdio':['ignore',_0x1228a9(0x187),_0x1228a9(0x187)]});_0x5e73c4[_0x1228a9(0x174)]['on'](_0x1228a9(0x183),()=>{}),_0x5e73c4[_0x1228a9(0x171)]['on'](_0x1228a9(0x183),()=>{}),_0x5e73c4['on'](_0x1228a9(0x169),_0x26db10=>{const _0x4208cf=_0x1228a9;console[_0x4208cf(0x169)](_0x4208cf(0x192),_0x26db10[_0x4208cf(0x179)]),_0x5017d8(_0x26db10);});const _0x55ad32=Date[_0x1228a9(0x16a)](),_0x383a91=setInterval(async()=>{const _0x6f214a=_0x1228a9,_0x24cb59=await isServerRunning(_0x58034e,_0x6797b9);if(_0x24cb59)clearInterval(_0x383a91),console['log'](_0x6f214a(0x178)+_0x58034e+':'+_0x6797b9),_0x1360ac();else Date[_0x6f214a(0x16a)]()-_0x55ad32>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x383a91),_0x5e73c4[_0x6f214a(0x180)](),_0x5017d8(new Error(_0x6f214a(0x17e))));},0x1f4);});}async function main(){const _0x36fb5f=a0_0x32aa26;try{console[_0x36fb5f(0x18d)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console['log']('\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI'),console[_0x36fb5f(0x18d)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0x36fb5f(0x18d)]('');const _0x146da2=process[_0x36fb5f(0x17f)][_0x36fb5f(0x167)](0x2);let _0x482289=DEFAULT_HOST,_0x58a547=DEFAULT_PORT;for(let _0x10ca19=0x0;_0x10ca19<_0x146da2['length'];_0x10ca19++){if(_0x146da2[_0x10ca19]===_0x36fb5f(0x18e)&&_0x146da2[_0x10ca19+0x1])_0x482289=_0x146da2[_0x10ca19+0x1],_0x10ca19++;else _0x146da2[_0x10ca19]==='--port'&&_0x146da2[_0x10ca19+0x1]&&(_0x58a547=parseInt(_0x146da2[_0x10ca19+0x1],0xa),_0x10ca19++);}console['log']('🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20'+_0x482289+':'+_0x58a547+_0x36fb5f(0x165));const _0x355bf4=await isServerRunning(_0x482289,_0x58a547);!_0x355bf4?(console[_0x36fb5f(0x18d)](_0x36fb5f(0x17d)),await startServer(_0x482289,_0x58a547)):console['log']('✓\x20Server\x20is\x20already\x20running\x20at\x20'+_0x482289+':'+_0x58a547),console[_0x36fb5f(0x18d)](''),console[_0x36fb5f(0x18d)](_0x36fb5f(0x16c)),console['log'](''),await new Promise(_0x4e7aa3=>setTimeout(_0x4e7aa3,0x1f4)),process['env'][_0x36fb5f(0x16e)]=_0x482289,process[_0x36fb5f(0x177)][_0x36fb5f(0x18a)]=_0x58a547['toString'](),await import(_0x36fb5f(0x182));}catch(_0x423020){console[_0x36fb5f(0x169)](''),console[_0x36fb5f(0x169)](_0x36fb5f(0x16f)),console[_0x36fb5f(0x169)]('\x20\x20',_0x423020[_0x36fb5f(0x179)]),console[_0x36fb5f(0x169)](''),console[_0x36fb5f(0x169)](_0x36fb5f(0x190)),console['error']('\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080'),console['error']('\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js'),console[_0x36fb5f(0x169)]('\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details'),console[_0x36fb5f(0x169)](''),process[_0x36fb5f(0x189)](0x1);}}function a0_0x25e6(){const _0x391750=['timeout','4491680LxRNEX','pipe','setTimeout','exit','LOXIA_PORT','--port','11qMPREQ','log','--host','4FvBrif','💡\x20Troubleshooting:','node','Failed\x20to\x20start\x20server:','--ui','🚀\x20Starting\x20Loxia\x20server...','...','18xOldiQ','slice','1317386eMJLMr','error','now','18409008FxdiOn','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','1PBtfea','LOXIA_HOST','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','983196FBfLUo','stderr','destroy','bin/cli.js','stdout','3013668tckkaD','675rzkpvP','env','✓\x20Server\x20started\x20at\x20','message','49256DiARtD','dirname','toString','✗\x20Server\x20is\x20not\x20running','Server\x20startup\x20timeout','argv','kill','6363085ncEJlY','../src/interfaces/terminal/index.js','data','Socket'];a0_0x25e6=function(){return _0x391750;};return a0_0x25e6();}main();
|
package/bin/loxia-terminal.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x5209cb=a0_0x7fe3;function a0_0x7fe3(_0x3a5d57,_0x2642ca){_0x3a5d57=_0x3a5d57-0x8c;const _0x23a2d3=a0_0x23a2();let _0x7fe37f=_0x23a2d3[_0x3a5d57];return _0x7fe37f;}(function(_0x184e2b,_0x189c22){const _0x5164fe=a0_0x7fe3,_0x41b919=_0x184e2b();while(!![]){try{const _0x458d2f=parseInt(_0x5164fe(0xaa))/0x1*(parseInt(_0x5164fe(0xae))/0x2)+-parseInt(_0x5164fe(0x97))/0x3+-parseInt(_0x5164fe(0x98))/0x4*(parseInt(_0x5164fe(0xa1))/0x5)+-parseInt(_0x5164fe(0xad))/0x6+parseInt(_0x5164fe(0xa4))/0x7+-parseInt(_0x5164fe(0xaf))/0x8*(parseInt(_0x5164fe(0x9d))/0x9)+parseInt(_0x5164fe(0xa6))/0xa*(parseInt(_0x5164fe(0x91))/0xb);if(_0x458d2f===_0x189c22)break;else _0x41b919['push'](_0x41b919['shift']());}catch(_0x18dccd){_0x41b919['push'](_0x41b919['shift']());}}}(a0_0x23a2,0x196cf));function a0_0x23a2(){const _0x4d6deb=['--port','isTTY','exit','99gikbMR','log','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','--host','5FSnvHV','Connecting\x20to:\x20','env','229425pEpAsV','\x0aTerminal\x20UI\x20error:','3474260iGcOCc','Press\x20Ctrl+C\x20to\x20exit\x0a','error','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)','3dQpnTN','LOXIA_PORT','localhost','967734rRlqfY','108346jYgSGu','46856MFrpDN','LOXIA_HOST','\x0aLoxia\x20Terminal\x20UI\x0a\x0aUsage:\x0a\x20\x20loxia-terminal\x20[options]\x0a\x0aOptions:\x0a\x20\x20--host,\x20-h\x20<host>\x20\x20\x20\x20Backend\x20host\x20(default:\x20localhost)\x0a\x20\x20--port,\x20-p\x20<port>\x20\x20\x20\x20Backend\x20port\x20(default:\x208080)\x0a\x20\x20--help\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x0aEnvironment\x20Variables:\x0a\x20\x20LOXIA_HOST\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20host\x0a\x20\x20LOXIA_PORT\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Backend\x20port\x0a\x0aExamples:\x0a\x20\x20loxia-terminal\x0a\x20\x20loxia-terminal\x20--host\x20192.168.1.100\x20--port\x203000\x0a\x20\x20LOXIA_HOST=api.example.com\x20LOXIA_PORT=443\x20loxia-terminal\x0a','\x20\x20npm\x20run\x20terminal-ui','stdin','Or\x20use\x20the\x20web\x20UI\x20instead:','\x0aTerminal\x20UI\x20exited','length','11PchMka','host','waitUntilExit','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','slice','then','378252hAtYGl','347108EVmxhR','port'];a0_0x23a2=function(){return _0x4d6deb;};return a0_0x23a2();}import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process['argv'][a0_0x5209cb(0x95)](0x2),options={'host':a0_0x5209cb(0xac),'port':0x1f90};for(let i=0x0;i<args[a0_0x5209cb(0x90)];i++){const arg=args[i];if(arg===a0_0x5209cb(0xa0)||arg==='-h')options['host']=args[++i];else{if(arg===a0_0x5209cb(0x9a)||arg==='-p')options[a0_0x5209cb(0x99)]=parseInt(args[++i],0xa);else arg==='--help'&&(console[a0_0x5209cb(0x9e)](a0_0x5209cb(0xb1)),process['exit'](0x0));}}process[a0_0x5209cb(0xa3)][a0_0x5209cb(0xb0)]&&(options[a0_0x5209cb(0x92)]=process['env'][a0_0x5209cb(0xb0)]);process[a0_0x5209cb(0xa3)][a0_0x5209cb(0xab)]&&(options[a0_0x5209cb(0x99)]=parseInt(process[a0_0x5209cb(0xa3)]['LOXIA_PORT'],0xa));!process[a0_0x5209cb(0x8d)][a0_0x5209cb(0x9b)]&&(console[a0_0x5209cb(0xa8)]('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x5209cb(0xa8)](''),console[a0_0x5209cb(0xa8)]('The\x20terminal\x20UI\x20cannot\x20run\x20in:'),console['error'](a0_0x5209cb(0xa9)),console[a0_0x5209cb(0xa8)](a0_0x5209cb(0x9f)),console[a0_0x5209cb(0xa8)](a0_0x5209cb(0x94)),console[a0_0x5209cb(0xa8)]('\x20\x20-\x20Some\x20CI/CD\x20environments'),console[a0_0x5209cb(0xa8)](''),console[a0_0x5209cb(0xa8)]('Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:'),console[a0_0x5209cb(0xa8)](a0_0x5209cb(0x8c)),console[a0_0x5209cb(0xa8)](''),console[a0_0x5209cb(0xa8)](a0_0x5209cb(0x8e)),console[a0_0x5209cb(0xa8)]('\x20\x20npm\x20start'),process[a0_0x5209cb(0x9c)](0x1));console['log']('Starting\x20Loxia\x20Terminal\x20UI...'),console[a0_0x5209cb(0x9e)](a0_0x5209cb(0xa2)+options['host']+':'+options[a0_0x5209cb(0x99)]),console[a0_0x5209cb(0x9e)](a0_0x5209cb(0xa7));const instance=startTerminalUI(options);instance[a0_0x5209cb(0x93)]()[a0_0x5209cb(0x96)](()=>{const _0x13a0ea=a0_0x5209cb;console[_0x13a0ea(0x9e)](_0x13a0ea(0x8f)),process[_0x13a0ea(0x9c)](0x0);})['catch'](_0xec4de0=>{const _0x5c96b4=a0_0x5209cb;console[_0x5c96b4(0xa8)](_0x5c96b4(0xa5),_0xec4de0),process[_0x5c96b4(0x9c)](0x1);});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x1d7e4b=a0_0x14f4;(function(_0x11fbbc,_0x4e212e){const _0x357418=a0_0x14f4,_0x165bd1=_0x11fbbc();while(!![]){try{const _0xad5b8f=-parseInt(_0x357418(0xbc))/0x1*(parseInt(_0x357418(0xde))/0x2)+-parseInt(_0x357418(0xc6))/0x3*(-parseInt(_0x357418(0xdd))/0x4)+-parseInt(_0x357418(0xbb))/0x5*(-parseInt(_0x357418(0xc3))/0x6)+-parseInt(_0x357418(0xbf))/0x7+-parseInt(_0x357418(0xd8))/0x8+-parseInt(_0x357418(0xe9))/0x9*(parseInt(_0x357418(0xc8))/0xa)+parseInt(_0x357418(0xc2))/0xb;if(_0xad5b8f===_0x4e212e)break;else _0x165bd1['push'](_0x165bd1['shift']());}catch(_0x41861a){_0x165bd1['push'](_0x165bd1['shift']());}}}(a0_0x1209,0xbf426));import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x49cce0 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process[a0_0x1d7e4b(0xdc)][a0_0x1d7e4b(0xd2)]||0x1f90,STARTUP_WAIT=0x7d0;function a0_0x14f4(_0x1e8c5c,_0x54c4b6){_0x1e8c5c=_0x1e8c5c-0xb6;const _0x120936=a0_0x1209();let _0x14f487=_0x120936[_0x1e8c5c];return _0x14f487;}function a0_0x1209(){const _0x174fe5=['destroy','/health','36939CEPLno','╔════════════════════════════════════════════════╗','6370NwNPcK','[SERVER]\x20','src','✅\x20Server\x20is\x20ready!','pipe','🛑\x20Stopping\x20server...','setTimeout','kill','Timeout','get','PORT','stdout','║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║','Failed\x20to\x20start\x20server:','\x0a👋\x20Terminal\x20UI\x20closed.','inherit','4974576jCnoia','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','error','http://localhost:','env','484ZXLZbz','10rmSZLs','[SERVER\x20ERROR]\x20','statusCode','data','message','toString','ExperimentalWarning','🖥️\x20\x20Starting\x20Terminal\x20UI...','SIGTERM','trim','Server\x20returned\x20','8703sWOcuj','╚════════════════════════════════════════════════╝','exit','Server\x20exited\x20with\x20code\x20','includes','node','5pVpoqh','47651Befpvg','killed','log','3811241zxQiSX','Failed\x20to\x20start\x20Terminal\x20UI:','loxia-terminal.js','13037288hyzPVO','773016enxYnr'];a0_0x1209=function(){return _0x174fe5;};return a0_0x1209();}let serverProcess=null;async function checkServerReady(_0x4df60f=0xa,_0x523025=0x1f4){const _0x449d65=a0_0x1d7e4b;for(let _0x58d9cd=0x0;_0x58d9cd<_0x4df60f;_0x58d9cd++){try{return await new Promise((_0x563e98,_0x40a3e7)=>{const _0x5520cf=a0_0x14f4,_0x2c4cb5=a0_0x49cce0[_0x5520cf(0xd1)](_0x5520cf(0xdb)+SERVER_PORT+_0x5520cf(0xc5),_0x131f77=>{const _0x414ea9=_0x5520cf;_0x131f77['statusCode']===0xc8?_0x563e98():_0x40a3e7(new Error(_0x414ea9(0xe8)+_0x131f77[_0x414ea9(0xe0)]));});_0x2c4cb5['on'](_0x5520cf(0xda),_0x40a3e7),_0x2c4cb5[_0x5520cf(0xce)](0x3e8,()=>{const _0x3ce42c=_0x5520cf;_0x2c4cb5[_0x3ce42c(0xc4)](),_0x40a3e7(new Error(_0x3ce42c(0xd0)));});}),console[_0x449d65(0xbe)](_0x449d65(0xcb)),!![];}catch(_0x31b3ad){_0x58d9cd<_0x4df60f-0x1&&await new Promise(_0x1f919b=>setTimeout(_0x1f919b,_0x523025));}}return console[_0x449d65(0xbe)](_0x449d65(0xd9)),![];}async function startServer(){return new Promise(_0x419314=>{const _0x300c95=a0_0x14f4;console[_0x300c95(0xbe)]('🚀\x20Starting\x20Loxia\x20server...');const _0x17b0c6=join(rootDir,_0x300c95(0xca),'index.js');serverProcess=spawn(_0x300c95(0xba),[_0x17b0c6],{'cwd':rootDir,'env':{...process[_0x300c95(0xdc)]},'stdio':['ignore',_0x300c95(0xcc),_0x300c95(0xcc)],'detached':![]}),serverProcess[_0x300c95(0xd3)]['on'](_0x300c95(0xe1),_0x3a16d4=>{const _0x3818a2=_0x300c95,_0x8b2681=_0x3a16d4[_0x3818a2(0xe3)]()[_0x3818a2(0xe7)]();_0x8b2681&&console['log'](_0x3818a2(0xc9)+_0x8b2681);}),serverProcess['stderr']['on']('data',_0x47da0b=>{const _0x312421=_0x300c95,_0x2c406c=_0x47da0b[_0x312421(0xe3)]()['trim']();_0x2c406c&&!_0x2c406c[_0x312421(0xb9)](_0x312421(0xe4))&&console[_0x312421(0xda)](_0x312421(0xdf)+_0x2c406c);}),serverProcess['on']('error',_0x2f1d48=>{const _0x17f437=_0x300c95;console[_0x17f437(0xda)](_0x17f437(0xd5),_0x2f1d48['message']),process[_0x17f437(0xb7)](0x1);}),serverProcess['on'](_0x300c95(0xb7),(_0x2ec36d,_0x82bd3a)=>{const _0x53a106=_0x300c95;_0x2ec36d!==null&&_0x2ec36d!==0x0&&(console['error'](_0x53a106(0xb8)+_0x2ec36d),process[_0x53a106(0xb7)](_0x2ec36d));}),setTimeout(_0x419314,STARTUP_WAIT);});}async function startTerminalUI(){const _0x10e8af=a0_0x1d7e4b;console['log'](_0x10e8af(0xe5)),console[_0x10e8af(0xbe)]('');const _0x19dc43=join(rootDir,'bin',_0x10e8af(0xc1)),_0x2e0bbe=spawn(_0x10e8af(0xba),[_0x19dc43],{'cwd':rootDir,'env':{...process[_0x10e8af(0xdc)]},'stdio':_0x10e8af(0xd7)});return _0x2e0bbe['on'](_0x10e8af(0xda),_0x900024=>{const _0x4de7e4=_0x10e8af;console[_0x4de7e4(0xda)](_0x4de7e4(0xc0),_0x900024[_0x4de7e4(0xe2)]),cleanup(),process['exit'](0x1);}),_0x2e0bbe['on'](_0x10e8af(0xb7),_0x40b7ba=>{const _0x554526=_0x10e8af;console[_0x554526(0xbe)](_0x554526(0xd6)),cleanup(),process[_0x554526(0xb7)](_0x40b7ba||0x0);}),_0x2e0bbe;}function cleanup(){const _0x28ead2=a0_0x1d7e4b;serverProcess&&!serverProcess[_0x28ead2(0xbd)]&&(console[_0x28ead2(0xbe)](_0x28ead2(0xcd)),serverProcess[_0x28ead2(0xcf)](_0x28ead2(0xe6)),setTimeout(()=>{const _0x30c0a4=_0x28ead2;!serverProcess['killed']&&serverProcess[_0x30c0a4(0xcf)]('SIGKILL');},0x1388));}process['on']('SIGINT',()=>{const _0x350800=a0_0x1d7e4b;console['log']('\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...'),cleanup(),process[_0x350800(0xb7)](0x0);}),process['on']('SIGTERM',()=>{const _0x13264c=a0_0x1d7e4b;console[_0x13264c(0xbe)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process[_0x13264c(0xb7)](0x0);}),process['on'](a0_0x1d7e4b(0xb7),()=>{cleanup();});async function main(){const _0xdabaa7=a0_0x1d7e4b;console[_0xdabaa7(0xbe)](_0xdabaa7(0xc7)),console[_0xdabaa7(0xbe)](_0xdabaa7(0xd4)),console[_0xdabaa7(0xbe)](_0xdabaa7(0xb6)),console[_0xdabaa7(0xbe)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x163e19){console[_0xdabaa7(0xda)]('Error\x20during\x20startup:',_0x163e19[_0xdabaa7(0xe2)]),cleanup(),process['exit'](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x48e1a0=a0_0x321e;(function(_0x4a31a8,_0x261c9e){const _0x58e8b5=a0_0x321e,_0x2804e6=_0x4a31a8();while(!![]){try{const _0x5aa701=-parseInt(_0x58e8b5(0x16b))/0x1*(parseInt(_0x58e8b5(0x187))/0x2)+parseInt(_0x58e8b5(0x18b))/0x3+parseInt(_0x58e8b5(0x18c))/0x4+-parseInt(_0x58e8b5(0x199))/0x5*(-parseInt(_0x58e8b5(0x18d))/0x6)+-parseInt(_0x58e8b5(0x17a))/0x7+-parseInt(_0x58e8b5(0x179))/0x8+parseInt(_0x58e8b5(0x176))/0x9*(parseInt(_0x58e8b5(0x15f))/0xa);if(_0x5aa701===_0x261c9e)break;else _0x2804e6['push'](_0x2804e6['shift']());}catch(_0x5e75b7){_0x2804e6['push'](_0x2804e6['shift']());}}}(a0_0x349e,0x9d966));import{exec}from'child_process';import{promisify}from'util';import a0_0x3aaa7f from'https';import a0_0x3a27c4 from'http';import a0_0x5ad0e8 from'fs';import a0_0x93854e from'path';import{fileURLToPath}from'url';function a0_0x349e(){const _0x1a1e1c=['6058752SBACEy','\x20-m\x20pip\x20show\x20','🔍\x20Installing\x20Semgrep...','\x20\x20\x20Location:\x20','\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a','semgrep\x20--version','\x20\x20\x20✅\x20','pip-audit','platform','python3','\x0aYou\x20can\x20manually\x20install\x20scanners:','error','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','10JkjjBm','python3\x20--version','\x20\x20\x20pip\x20install\x20semgrep\x0a','statusCode','2032632AFLFAq','3647432wkDWTP','31668sUnfmd','python\x20--version','trim','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','mkdir','message','\x20\x20\x20✅\x20Python\x20found:\x20','eslint-plugin-security','yamllint','url','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','═══════════════════════════════════════════════════════════','825tOLeNG','v1.55.0','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','═══════════════════════════════════════════════════════════\x0a','--user','exit','catch','\x20\x20Installation\x20Complete','🐍\x20Checking\x20Python\x20scanners...','chmod','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','node_modules','join','includes','finish','promises','Failed\x20to\x20download:\x20HTTP\x20','\x20-m\x20pip\x20install\x20','2887430PXYFAN','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','python','\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','checkov','https','\x20\x20Installing\x20Security\x20Scanners','semgrep','location','120514oorNdw','get','\x0a═══════════════════════════════════════════════════════════','\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners','❌\x20Installation\x20failed:','dirname','\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a','\x20installed\x20successfully','.scanners','headers','bandit','9nlAima','arch','log','5083448YqUkhc'];a0_0x349e=function(){return _0x1a1e1c;};return a0_0x349e();}import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x93854e[a0_0x48e1a0(0x170)](__filename),SCANNER_DIR=a0_0x93854e[a0_0x48e1a0(0x159)](__dirname,'..',a0_0x48e1a0(0x158),a0_0x48e1a0(0x173)),SEMGREP_VERSION=a0_0x48e1a0(0x19a);function a0_0x321e(_0x2c225d,_0x4edf66){_0x2c225d=_0x2c225d-0x152;const _0x349eeb=a0_0x349e();let _0x321e0c=_0x349eeb[_0x2c225d];return _0x321e0c;}console[a0_0x48e1a0(0x178)](a0_0x48e1a0(0x198)),console[a0_0x48e1a0(0x178)](a0_0x48e1a0(0x168)),console[a0_0x48e1a0(0x178)]('\x20\x20Platform:\x20'+process[a0_0x48e1a0(0x182)]+'\x20('+process[a0_0x48e1a0(0x177)]+')'),console['log'](a0_0x48e1a0(0x19c));async function installScanners(){const _0x317a85=a0_0x48e1a0;await a0_0x5ad0e8[_0x317a85(0x15c)][_0x317a85(0x191)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console['log'](_0x317a85(0x16d)),console[_0x317a85(0x178)](_0x317a85(0x154)),console[_0x317a85(0x178)](_0x317a85(0x19c));}async function checkESLintSecurity(){const _0x29d1bf=a0_0x48e1a0;console['log'](_0x29d1bf(0x165));try{await import(_0x29d1bf(0x194)),console[_0x29d1bf(0x178)](_0x29d1bf(0x17e));}catch(_0x307dbf){console[_0x29d1bf(0x178)]('\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found'),console[_0x29d1bf(0x178)]('\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a');}}async function installSemgrep(){const _0x58deb7=a0_0x48e1a0;console[_0x58deb7(0x178)](_0x58deb7(0x17c));const _0x3b22df=process[_0x58deb7(0x182)],_0x2d6366=process['arch'];try{const _0x100715=await execAsync(_0x58deb7(0x17f),{'timeout':0x1388});console[_0x58deb7(0x178)]('\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20'+_0x100715['stdout'][_0x58deb7(0x18f)]()),console['log']('\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a');return;}catch(_0x200fb4){console[_0x58deb7(0x178)](_0x58deb7(0x161));}const _0x485af4=getSemgrepBinaryInfo(_0x3b22df,_0x2d6366);if(!_0x485af4){console['log']('\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20'+_0x3b22df+'-'+_0x2d6366),console[_0x58deb7(0x178)](_0x58deb7(0x164));return;}try{const _0x3a8134=a0_0x93854e[_0x58deb7(0x159)](SCANNER_DIR,_0x58deb7(0x169));console[_0x58deb7(0x178)]('\x20\x20\x20Downloading\x20from\x20'+_0x485af4[_0x58deb7(0x196)]+'...'),await downloadFile(_0x485af4[_0x58deb7(0x196)],_0x3a8134),await a0_0x5ad0e8[_0x58deb7(0x15c)][_0x58deb7(0x156)](_0x3a8134,0x1ed),console[_0x58deb7(0x178)](_0x58deb7(0x163)),console[_0x58deb7(0x178)](_0x58deb7(0x17d)+_0x3a8134+'\x0a'),console[_0x58deb7(0x178)]('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console['log'](_0x58deb7(0x189));}catch(_0x538a40){console['log'](_0x58deb7(0x186)+_0x538a40[_0x58deb7(0x192)]),console[_0x58deb7(0x178)](_0x58deb7(0x160));}}function getSemgrepBinaryInfo(_0x2a220a,_0x22f412){return null;}async function installPythonScanners(){const _0x58defc=a0_0x48e1a0;console[_0x58defc(0x178)](_0x58defc(0x155));let _0x6fcada=null;try{await execAsync(_0x58defc(0x188),{'timeout':0x1388}),_0x6fcada=_0x58defc(0x183);}catch(_0x13a118){try{await execAsync(_0x58defc(0x18e),{'timeout':0x1388}),_0x6fcada=_0x58defc(0x162);}catch(_0x391c5a){console['log'](_0x58defc(0x16e)),console[_0x58defc(0x178)]('\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:'),console[_0x58defc(0x178)](_0x58defc(0x171));return;}}console[_0x58defc(0x178)](_0x58defc(0x193)+_0x6fcada),await installViaPip(_0x58defc(0x169),_0x6fcada),await installViaPip(_0x58defc(0x175),_0x6fcada),await installViaPip(_0x58defc(0x181),_0x6fcada),await installViaPip(_0x58defc(0x166),_0x6fcada),await installViaPip(_0x58defc(0x195),_0x6fcada),console[_0x58defc(0x178)]('');}async function isHomebrewPython(_0x16ab68){const _0x39833e=a0_0x48e1a0;try{const {stdout:_0x24b020}=await execAsync(_0x16ab68+_0x39833e(0x197),{'timeout':0x1388});return _0x24b020[_0x39833e(0x15a)]('/opt/homebrew')||_0x24b020['includes']('/usr/local/Cellar');}catch{return![];}}async function installViaPip(_0xf2c1a1,_0x26851c){const _0x13be45=a0_0x48e1a0;try{const _0x14a75e=await execAsync(_0x26851c+_0x13be45(0x17b)+_0xf2c1a1,{'timeout':0x1388});return console[_0x13be45(0x178)](_0x13be45(0x180)+_0xf2c1a1+'\x20already\x20installed'),!![];}catch(_0x3e59b1){console['log']('\x20\x20\x20Installing\x20'+_0xf2c1a1+'...');try{const _0xd314f9=await isHomebrewPython(_0x26851c),_0x35acbb=_0xd314f9?'':_0x13be45(0x19d),_0x26105f=(_0x26851c+_0x13be45(0x15e)+_0x35acbb+'\x20'+_0xf2c1a1)['replace'](/\s+/g,'\x20')[_0x13be45(0x18f)]();return await execAsync(_0x26105f,{'timeout':0xea60}),console['log'](_0x13be45(0x180)+_0xf2c1a1+_0x13be45(0x172)),!![];}catch(_0xd7df7b){return console[_0x13be45(0x178)](_0x13be45(0x19b)+_0xf2c1a1+':\x20'+_0xd7df7b[_0x13be45(0x192)]),console[_0x13be45(0x178)](_0x13be45(0x157)+_0xf2c1a1),![];}}}async function downloadFile(_0x5a3f02,_0x4a9761){return new Promise((_0x8febf4,_0x58b8e4)=>{const _0x254520=a0_0x321e,_0x4d6cfc=_0x5a3f02['startsWith'](_0x254520(0x167))?a0_0x3aaa7f:a0_0x3a27c4;_0x4d6cfc[_0x254520(0x16c)](_0x5a3f02,_0x4c87b1=>{const _0x1d1de0=_0x254520;if(_0x4c87b1[_0x1d1de0(0x18a)]===0x12e||_0x4c87b1[_0x1d1de0(0x18a)]===0x12d){downloadFile(_0x4c87b1[_0x1d1de0(0x174)][_0x1d1de0(0x16a)],_0x4a9761)['then'](_0x8febf4)[_0x1d1de0(0x153)](_0x58b8e4);return;}if(_0x4c87b1[_0x1d1de0(0x18a)]!==0xc8){_0x58b8e4(new Error(_0x1d1de0(0x15d)+_0x4c87b1['statusCode']));return;}const _0x49cbe7=createWriteStream(_0x4a9761);_0x4c87b1['pipe'](_0x49cbe7),_0x49cbe7['on'](_0x1d1de0(0x15b),()=>{_0x49cbe7['close'](),_0x8febf4();}),_0x49cbe7['on'](_0x1d1de0(0x185),_0x27cdf9=>{a0_0x5ad0e8['unlink'](_0x4a9761,()=>{}),_0x58b8e4(_0x27cdf9);});})['on'](_0x254520(0x185),_0x58b8e4);});}installScanners()[a0_0x48e1a0(0x153)](_0x43a133=>{const _0x172c1d=a0_0x48e1a0;console[_0x172c1d(0x185)](_0x172c1d(0x16f),_0x43a133[_0x172c1d(0x192)]),console['error'](_0x172c1d(0x184)),console['error'](_0x172c1d(0x190)),console[_0x172c1d(0x185)]('\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit'),process[_0x172c1d(0x152)](0x0);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a0_0x432ee8=a0_0x30fc;(function(_0x477604,_0x5a5eb4){const _0x205c0d=a0_0x30fc,_0x3eea7f=_0x477604();while(!![]){try{const _0x252785=parseInt(_0x205c0d(0x19c))/0x1+parseInt(_0x205c0d(0x195))/0x2*(parseInt(_0x205c0d(0x1a7))/0x3)+parseInt(_0x205c0d(0x1b4))/0x4*(-parseInt(_0x205c0d(0x1ae))/0x5)+-parseInt(_0x205c0d(0x1b0))/0x6*(parseInt(_0x205c0d(0x1b8))/0x7)+parseInt(_0x205c0d(0x1be))/0x8*(parseInt(_0x205c0d(0x18f))/0x9)+parseInt(_0x205c0d(0x1c0))/0xa*(parseInt(_0x205c0d(0x18b))/0xb)+parseInt(_0x205c0d(0x1ab))/0xc;if(_0x252785===_0x5a5eb4)break;else _0x3eea7f['push'](_0x3eea7f['shift']());}catch(_0x583967){_0x3eea7f['push'](_0x3eea7f['shift']());}}}(a0_0x911d,0x3fcf1));import{STATIC_ANALYSIS}from'../utilities/constants.js';class CSSAnalyzer{constructor(_0x547813=null){this['logger']=_0x547813,this['stylelint']=null,this['postcss']=null,this['postcssScss']=null,this['postcssLess']=null;}async['analyze'](_0x1d51b6,_0x3ada08,_0x5cdacb={}){const _0x1587e1=a0_0x30fc;try{const _0x5acaf4=[],_0x562779=this['detectLanguage'](_0x1d51b6),_0x499de1=await this['checkSyntax'](_0x1d51b6,_0x3ada08,_0x562779);_0x5acaf4[_0x1587e1(0x1b2)](..._0x499de1);if(_0x499de1[_0x1587e1(0x186)]===0x0){const _0x3fcbc8=await this[_0x1587e1(0x1a6)](_0x1d51b6,_0x3ada08,_0x562779);_0x5acaf4[_0x1587e1(0x1b2)](..._0x3fcbc8);}return this['logger']?.[_0x1587e1(0x18a)](_0x1587e1(0x19a),{'file':_0x1d51b6,'language':_0x562779,'totalDiagnostics':_0x5acaf4[_0x1587e1(0x186)],'errors':_0x5acaf4[_0x1587e1(0x197)](_0x671414=>_0x671414['severity']===STATIC_ANALYSIS['SEVERITY']['ERROR'])[_0x1587e1(0x186)],'warnings':_0x5acaf4[_0x1587e1(0x197)](_0x57be11=>_0x57be11['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x5acaf4;}catch(_0x209032){return this[_0x1587e1(0x199)]?.[_0x1587e1(0x191)]('CSS\x20analysis\x20failed',{'file':_0x1d51b6,'error':_0x209032['message']}),[];}}async['checkSyntax'](_0x30df56,_0x29f1ef,_0x5bce77){const _0x1fc74a=a0_0x30fc,_0x4a8ca3=[];try{if(!this['postcss']){const _0x441d53=await import(_0x1fc74a(0x187));this['postcss']=_0x441d53['default'];}let _0x4a325a=null;if(_0x5bce77===_0x1fc74a(0x1b7)){if(!this['postcssScss']){const _0x222509=await import(_0x1fc74a(0x1a3));this['postcssScss']=_0x222509['default'];}_0x4a325a=this['postcssScss'];}else{if(_0x5bce77===_0x1fc74a(0x190)){if(!this[_0x1fc74a(0x18c)]){const _0x51ebeb=await import(_0x1fc74a(0x19b));this[_0x1fc74a(0x18c)]=_0x51ebeb['default'];}_0x4a325a=this['postcssLess'];}}const _0x4f62e6=this[_0x1fc74a(0x187)]()[_0x1fc74a(0x185)](_0x29f1ef,{'from':_0x30df56,'syntax':_0x4a325a}),_0x2ba07f=_0x4f62e6[_0x1fc74a(0x1b1)];this[_0x1fc74a(0x199)]?.['debug'](_0x1fc74a(0x1b3),{'file':_0x30df56});}catch(_0x2655ed){const _0x14d877=this['formatPostCSSError'](_0x2655ed,_0x30df56);_0x14d877&&_0x4a8ca3['push'](_0x14d877);}return _0x4a8ca3;}async['lintStyles'](_0x37850a,_0x18f459,_0x3b49cb){const _0x8c04b2=a0_0x30fc,_0x2f573e=[];try{if(!this[_0x8c04b2(0x1a2)]){const _0x5a333b=await import('stylelint');this[_0x8c04b2(0x1a2)]=_0x5a333b[_0x8c04b2(0x1a9)];}const _0x148d54={'extends':[_0x8c04b2(0x194)],'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':[_0x8c04b2(0x196),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x3b49cb===_0x8c04b2(0x1b7)?[!![],{'ignoreAtRules':['mixin','include','extend','if','else','for',_0x8c04b2(0x183),_0x8c04b2(0x1bf),'function','return',_0x8c04b2(0x198),_0x8c04b2(0x184),'forward']}]:_0x3b49cb===_0x8c04b2(0x190)?[!![],{'ignoreAtRules':['plugin']}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':'double','selector-type-case':_0x8c04b2(0x1bd)},'customSyntax':_0x3b49cb==='scss'?'postcss-scss':_0x3b49cb===_0x8c04b2(0x190)?_0x8c04b2(0x19b):undefined},_0x5978ac=await this['stylelint']['lint']({'code':_0x18f459,'codeFilename':_0x37850a,'config':_0x148d54});if(_0x5978ac['results']&&_0x5978ac['results'][_0x8c04b2(0x186)]>0x0){const _0x528112=_0x5978ac['results'][0x0];if(_0x528112[_0x8c04b2(0x1ac)])for(const _0x2b19a8 of _0x528112['warnings']){_0x2f573e[_0x8c04b2(0x1b2)]({'file':_0x37850a,'line':_0x2b19a8['line']||0x1,'column':_0x2b19a8['column']||0x1,'severity':_0x2b19a8['severity']==='error'?STATIC_ANALYSIS[_0x8c04b2(0x1a0)]['ERROR']:STATIC_ANALYSIS[_0x8c04b2(0x1a0)]['WARNING'],'rule':_0x2b19a8[_0x8c04b2(0x1aa)]||'unknown','message':_0x2b19a8[_0x8c04b2(0x1a4)],'category':this['categorizeStylelintRule'](_0x2b19a8['rule']),'fixable':![],'source':_0x8c04b2(0x1a2)});}}}catch(_0x3f4452){this['logger']?.[_0x8c04b2(0x1ad)](_0x8c04b2(0x18d),{'file':_0x37850a,'error':_0x3f4452['message']});}return _0x2f573e;}['formatPostCSSError'](_0xb75311,_0x5f446d){const _0x32de98=a0_0x30fc;return{'file':_0x5f446d,'line':_0xb75311['line']||0x1,'column':_0xb75311[_0x32de98(0x188)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0xb75311[_0x32de98(0x1a1)]||'CssSyntaxError','message':_0xb75311['reason']||_0xb75311[_0x32de98(0x192)],'category':STATIC_ANALYSIS['CATEGORY']['SYNTAX'],'fixable':![],'source':'postcss','code':_0xb75311[_0x32de98(0x1b9)]||undefined};}[a0_0x432ee8(0x18e)](_0xfa90f8){const _0x151087=a0_0x432ee8;if(!_0xfa90f8)return STATIC_ANALYSIS['CATEGORY'][_0x151087(0x19f)];const _0x1c0306=_0xfa90f8['toLowerCase']();if(_0x1c0306['includes']('no-invalid')||_0x1c0306['includes'](_0x151087(0x189))||_0x1c0306['includes'](_0x151087(0x193))||_0x1c0306['includes'](_0x151087(0x1a8)))return STATIC_ANALYSIS['CATEGORY'][_0x151087(0x1bc)];if(_0x1c0306['includes']('performance')||_0x1c0306[_0x151087(0x1ba)]('optimize'))return STATIC_ANALYSIS[_0x151087(0x1b5)][_0x151087(0x1bb)];if(_0x1c0306['includes']('best-practice')||_0x1c0306[_0x151087(0x1ba)]('recommended'))return STATIC_ANALYSIS[_0x151087(0x1b5)]['BEST_PRACTICE'];return STATIC_ANALYSIS[_0x151087(0x1b5)]['STYLE'];}['detectLanguage'](_0x2d3ba0){const _0x543712=a0_0x432ee8,_0x36d413=_0x2d3ba0['toLowerCase']();if(_0x36d413[_0x543712(0x19e)]('.scss')||_0x36d413['endsWith']('.sass'))return'scss';if(_0x36d413['endsWith'](_0x543712(0x1a5)))return _0x543712(0x190);return _0x543712(0x1b6);}['getSupportedExtensions'](){const _0x148e1e=a0_0x432ee8;return['.css',_0x148e1e(0x1af),_0x148e1e(0x19d),_0x148e1e(0x1a5)];}['supportsAutoFix'](){return![];}}function a0_0x911d(){const _0x5a64f7=['zwfJAa','DxnL','ChjVy2vZCW','BgvUz3rO','Cg9ZDgnZCW','y29SDw1U','BM8TDw5RBM93BG','zgvIDwC','mtmYr2zbDfPJ','Cg9ZDgnZC0XLC3m','u3r5BgvSAw50igfUywX5C2LZigzHAwXLza','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','ntrsB05nvMG','BgvZCW','zxjYB3i','BwvZC2fNzq','BM8Tzw1WDhK','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','mti1mJC2vuLqEfbp','l15JDxn0B20TlW','zMLSDgvY','y29UDgvUDa','Bg9Nz2vY','q1ntigfUywX5C2LZignVBxbSzxrLza','Cg9ZDgnZCY1SzxnZ','mtuZmZu2qK1gr1ng','lNnHC3m','zw5KC1DPDgG','u1rzteu','u0vwrvjjvfK','BMfTzq','C3r5BgvSAw50','Cg9ZDgnZCY1Zy3nZ','Dgv4Da','lMXLC3m','BgLUDfn0EwXLCW','m2DqufPzAG','C3LUDgf4','zgvMyxvSDa','CNvSzq','ndu5mda5nLfWrwPSBa','D2fYBMLUz3m','D2fYBG','mJeYndi1wwDtDuXJ','lNnJC3m','ndq1mZjIAgHmrei','CM9VDa','ChvZAa','ug9ZDentuYbZEw50yxGGy2HLy2SGCgfZC2vK','ndrMvfPMB1G','q0furuDpuLK','y3nZ','C2nZCW','mZi5Bgrsue1P','C291CMnL','Aw5JBhvKzxm','uevsrK9stufoq0u','u1Lovefy','Bg93zxi','ntq0nJa4r3jSANrZ','D2HPBgu','ntG4mtbeC1vvAhO'];a0_0x911d=function(){return _0x5a64f7;};return a0_0x911d();}function a0_0x30fc(_0x551bc5,_0x31b836){_0x551bc5=_0x551bc5-0x183;const _0x911d0b=a0_0x911d();let _0x30fc4d=_0x911d0b[_0x551bc5];if(a0_0x30fc['kySKnh']===undefined){var _0x394878=function(_0x23aef1){const _0x251b70='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x547813='',_0x1d51b6='';for(let _0x3ada08=0x0,_0x5cdacb,_0x5acaf4,_0x562779=0x0;_0x5acaf4=_0x23aef1['charAt'](_0x562779++);~_0x5acaf4&&(_0x5cdacb=_0x3ada08%0x4?_0x5cdacb*0x40+_0x5acaf4:_0x5acaf4,_0x3ada08++%0x4)?_0x547813+=String['fromCharCode'](0xff&_0x5cdacb>>(-0x2*_0x3ada08&0x6)):0x0){_0x5acaf4=_0x251b70['indexOf'](_0x5acaf4);}for(let _0x499de1=0x0,_0x3fcbc8=_0x547813['length'];_0x499de1<_0x3fcbc8;_0x499de1++){_0x1d51b6+='%'+('00'+_0x547813['charCodeAt'](_0x499de1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1d51b6);};a0_0x30fc['HZRSTd']=_0x394878,a0_0x30fc['yHMlvA']={},a0_0x30fc['kySKnh']=!![];}const _0x3c02ba=_0x911d0b[0x0],_0x525538=_0x551bc5+_0x3c02ba,_0xc35a65=a0_0x30fc['yHMlvA'][_0x525538];return!_0xc35a65?(_0x30fc4d=a0_0x30fc['HZRSTd'](_0x30fc4d),a0_0x30fc['yHMlvA'][_0x525538]=_0x30fc4d):_0x30fc4d=_0xc35a65,_0x30fc4d;}export default CSSAnalyzer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a0_0x3c84af=a0_0x2200;(function(_0x59aba5,_0x559bc2){const _0x3de198=a0_0x2200,_0x43a17d=_0x59aba5();while(!![]){try{const _0xf3fea0=parseInt(_0x3de198(0x179))/0x1+parseInt(_0x3de198(0x1a3))/0x2+parseInt(_0x3de198(0x1b0))/0x3*(parseInt(_0x3de198(0x187))/0x4)+-parseInt(_0x3de198(0x1b3))/0x5+parseInt(_0x3de198(0x192))/0x6+-parseInt(_0x3de198(0x198))/0x7+-parseInt(_0x3de198(0x15d))/0x8*(-parseInt(_0x3de198(0x1ba))/0x9);if(_0xf3fea0===_0x559bc2)break;else _0x43a17d['push'](_0x43a17d['shift']());}catch(_0x62f7e9){_0x43a17d['push'](_0x43a17d['shift']());}}}(a0_0x435f,0x4e37f));import{exec}from'child_process';import{promisify}from'util';import a0_0x5447be from'path';import a0_0x55542b from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x2200(_0x541e47,_0x2bf0f3){_0x541e47=_0x541e47-0x143;const _0x435f46=a0_0x435f();let _0x220045=_0x435f46[_0x541e47];if(a0_0x2200['GvLOCa']===undefined){var _0x3553b=function(_0x6abeeb){const _0x205180='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5447be='',_0x55542b='';for(let _0x79d56f=0x0,_0x48330c,_0x13dac0,_0x3e3fcd=0x0;_0x13dac0=_0x6abeeb['charAt'](_0x3e3fcd++);~_0x13dac0&&(_0x48330c=_0x79d56f%0x4?_0x48330c*0x40+_0x13dac0:_0x13dac0,_0x79d56f++%0x4)?_0x5447be+=String['fromCharCode'](0xff&_0x48330c>>(-0x2*_0x79d56f&0x6)):0x0){_0x13dac0=_0x205180['indexOf'](_0x13dac0);}for(let _0x168b7a=0x0,_0x4bdf44=_0x5447be['length'];_0x168b7a<_0x4bdf44;_0x168b7a++){_0x55542b+='%'+('00'+_0x5447be['charCodeAt'](_0x168b7a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55542b);};a0_0x2200['yUmegO']=_0x3553b,a0_0x2200['xvadle']={},a0_0x2200['GvLOCa']=!![];}const _0xa99154=_0x435f46[0x0],_0x20a236=_0x541e47+_0xa99154,_0x3490a6=a0_0x2200['xvadle'][_0x20a236];return!_0x3490a6?(_0x220045=a0_0x2200['yUmegO'](_0x220045),a0_0x2200['xvadle'][_0x20a236]=_0x220045):_0x220045=_0x3490a6,_0x220045;}const execAsync=promisify(exec);class ConfigValidator{constructor(_0x79d56f=null){this['logger']=_0x79d56f,this['availableScanners']=null,this['scannerCache']=new Map();}async[a0_0x3c84af(0x1a2)](){const _0x10fea8=a0_0x3c84af;if(this[_0x10fea8(0x170)]!==null)return this['availableScanners'];const _0x48330c={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0x10fea8(0x18c),{'timeout':0x1388}),_0x48330c['checkov']=!![],this['logger']?.['debug'](_0x10fea8(0x185));}catch(_0x13dac0){this[_0x10fea8(0x166)]?.[_0x10fea8(0x17b)](_0x10fea8(0x1a8),{'error':_0x13dac0['message']});}try{await execAsync('hadolint\x20--version',{'timeout':0x1388}),_0x48330c['hadolint']=!![],this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x1a9));}catch(_0x3e3fcd){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x19b),{'error':_0x3e3fcd['message']});}try{await execAsync(_0x10fea8(0x180),{'timeout':0x1388}),_0x48330c[_0x10fea8(0x176)]=!![],this['logger']?.['debug'](_0x10fea8(0x174));}catch(_0x168b7a){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x1bc),{'error':_0x168b7a['message']});}try{await import('ajv'),_0x48330c[_0x10fea8(0x143)]=!![],this['logger']?.['debug']('JSON\x20Schema\x20validation\x20available');}catch(_0x4bdf44){this['logger']?.[_0x10fea8(0x17b)](_0x10fea8(0x152),{'error':_0x4bdf44['message']});}return this['availableScanners']=_0x48330c,_0x48330c;}async[a0_0x3c84af(0x17a)](_0x1e9dd4,_0x70e3de={}){const _0x51b385=a0_0x3c84af,_0x380384=[],_0x27e403=await this[_0x51b385(0x1a2)](),_0x79793e=this[_0x51b385(0x14d)](_0x1e9dd4);this['logger']?.['debug']('Validating\x20config\x20file',{'filePath':_0x1e9dd4,'fileType':_0x79793e});switch(_0x79793e){case'dockerfile':if(_0x27e403[_0x51b385(0x148)]){const _0x4d0960=await this['validateDockerfile'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x4d0960);}if(_0x27e403[_0x51b385(0x146)]){const _0x11a165=await this['validateWithCheckov'](_0x1e9dd4,'dockerfile',_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x11a165);}break;case'docker-compose':if(_0x27e403['yamllint']){const _0x5d4d64=await this[_0x51b385(0x19d)](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x5d4d64);}if(_0x27e403[_0x51b385(0x146)]){const _0x17cab0=await this['validateWithCheckov'](_0x1e9dd4,_0x51b385(0x1a1),_0x70e3de);_0x380384['push'](..._0x17cab0);}break;case _0x51b385(0x19e):if(_0x27e403['yamllint']){const _0x162c0f=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x162c0f);}if(_0x27e403[_0x51b385(0x146)]){const _0x5904c7=await this['validateWithCheckov'](_0x1e9dd4,'kubernetes',_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x5904c7);}break;case _0x51b385(0x16d):if(_0x27e403[_0x51b385(0x146)]){const _0x298d87=await this[_0x51b385(0x188)](_0x1e9dd4,_0x51b385(0x16d),_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x298d87);}break;case _0x51b385(0x157):if(_0x27e403['jsonSchema']){const _0x39de1b=await this[_0x51b385(0x145)](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x39de1b);}break;case'tsconfig.json':if(_0x27e403['jsonSchema']){const _0x3f6e79=await this[_0x51b385(0x183)](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x3f6e79);}break;case _0x51b385(0x14b):if(_0x27e403['yamllint']){const _0x56586a=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x56586a);}break;case'env':const _0x364252=await this['validateEnvFile'](_0x1e9dd4,_0x70e3de);_0x380384[_0x51b385(0x1ae)](..._0x364252);break;case _0x51b385(0x1a4):if(_0x27e403[_0x51b385(0x176)]){const _0x53e482=await this['validateYAML'](_0x1e9dd4,_0x70e3de);_0x380384['push'](..._0x53e482);}break;default:this['logger']?.[_0x51b385(0x156)]('Unknown\x20config\x20file\x20type',{'filePath':_0x1e9dd4,'fileType':_0x79793e});return[];}return this['normalizeResults'](_0x380384);}async[a0_0x3c84af(0x159)](_0x40e3eb,_0x118e21={}){const _0x30023f=a0_0x3c84af;try{const _0x2fd4cf=await execAsync('hadolint\x20--format\x20json\x20\x22'+_0x40e3eb+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x354f3e=JSON['parse'](_0x2fd4cf[_0x30023f(0x16a)]);return this[_0x30023f(0x168)](_0x354f3e,_0x40e3eb);}catch(_0x1806d4){if(_0x1806d4[_0x30023f(0x16a)])try{const _0x5dfd60=JSON[_0x30023f(0x167)](_0x1806d4[_0x30023f(0x16a)]);return this[_0x30023f(0x168)](_0x5dfd60,_0x40e3eb);}catch(_0x8a51a2){this['logger']?.['error']('Failed\x20to\x20parse\x20hadolint\x20output',{'error':_0x8a51a2['message']});}return this[_0x30023f(0x166)]?.[_0x30023f(0x16c)](_0x30023f(0x194),{'error':_0x1806d4[_0x30023f(0x1a6)]}),[];}}['parseHadolintResults'](_0x1abb4a,_0x39099c){const _0x24e5a1=a0_0x3c84af,_0x292e46=[];if(Array[_0x24e5a1(0x1ab)](_0x1abb4a))for(const _0x2f7e15 of _0x1abb4a){_0x292e46['push']({'file':_0x39099c,'line':_0x2f7e15['line']||0x1,'column':_0x2f7e15['column']||0x1,'severity':this['mapHadolintSeverity'](_0x2f7e15[_0x24e5a1(0x162)]),'rule':_0x2f7e15[_0x24e5a1(0x169)],'message':_0x2f7e15[_0x24e5a1(0x1a6)],'category':'dockerfile','validator':_0x24e5a1(0x148)});}return _0x292e46;}async['validateYAML'](_0x473e5b,_0x581a56={}){const _0x36e605=a0_0x3c84af;try{const _0x5bf0b=await execAsync('yamllint\x20-f\x20parsable\x20\x22'+_0x473e5b+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x36e605(0x173)](_0x5bf0b['stdout'],_0x473e5b);}catch(_0x509c34){if(_0x509c34['stdout'])return this[_0x36e605(0x173)](_0x509c34['stdout'],_0x473e5b);return this['logger']?.[_0x36e605(0x16c)](_0x36e605(0x186),{'error':_0x509c34['message']}),[];}}['parseYamllintResults'](_0x238f9e,_0x4ea895){const _0x2ef929=a0_0x3c84af,_0x508979=[],_0x12c7c2=_0x238f9e[_0x2ef929(0x1b5)]('\x0a')['filter'](_0x29b96a=>_0x29b96a[_0x2ef929(0x165)]());for(const _0x384254 of _0x12c7c2){const _0x3f95ef=_0x384254['match'](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x3f95ef){const [,_0x418b05,_0x78c366,_0x4e45e0,_0x2012c3,_0x10730b,_0x12c646]=_0x3f95ef;_0x508979[_0x2ef929(0x1ae)]({'file':_0x4ea895,'line':parseInt(_0x78c366,0xa),'column':parseInt(_0x4e45e0,0xa),'severity':this['mapYamllintSeverity'](_0x2012c3),'rule':_0x12c646,'message':_0x10730b,'category':'yaml','validator':'yamllint'});}}return _0x508979;}async[a0_0x3c84af(0x188)](_0x5c40de,_0x391110,_0x5ddeb6={}){const _0x2810ef=a0_0x3c84af;try{const _0x5e1996=await execAsync('checkov\x20-f\x20\x22'+_0x5c40de+'\x22\x20--framework\x20'+_0x391110+_0x2810ef(0x1b7),{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x1f042b=JSON['parse'](_0x5e1996['stdout']);return this['parseCheckovResults'](_0x1f042b,_0x5c40de);}catch(_0x1b5200){if(_0x1b5200['stdout'])try{const _0x1c956f=JSON['parse'](_0x1b5200[_0x2810ef(0x16a)]);return this['parseCheckovResults'](_0x1c956f,_0x5c40de);}catch(_0x26c10f){this['logger']?.['error']('Failed\x20to\x20parse\x20checkov\x20output',{'error':_0x26c10f['message']});}return this[_0x2810ef(0x166)]?.['error']('checkov\x20validation\x20failed',{'error':_0x1b5200['message']}),[];}}['parseCheckovResults'](_0x1aecc2,_0x17d1f4){const _0x28dd77=a0_0x3c84af,_0xd80139=[];if(_0x1aecc2[_0x28dd77(0x1b2)]&&_0x1aecc2[_0x28dd77(0x1b2)][_0x28dd77(0x18b)])for(const _0x19ef14 of _0x1aecc2['results'][_0x28dd77(0x18b)]){_0xd80139['push']({'file':_0x17d1f4,'line':_0x19ef14[_0x28dd77(0x196)]?_0x19ef14['file_line_range'][0x0]:0x1,'column':0x1,'severity':this['mapCheckovSeverity'](_0x19ef14['check_class']),'rule':_0x19ef14[_0x28dd77(0x15a)],'message':_0x19ef14[_0x28dd77(0x190)]||_0x19ef14['check_id'],'category':_0x28dd77(0x150),'validator':'checkov','remediation':_0x19ef14[_0x28dd77(0x1aa)],'cwe':_0x19ef14[_0x28dd77(0x163)],'references':_0x19ef14[_0x28dd77(0x1aa)]?[_0x19ef14[_0x28dd77(0x1aa)]]:[]});}return _0xd80139;}async[a0_0x3c84af(0x145)](_0x22e79d,_0x2d3576={}){const _0x2e1867=a0_0x3c84af;try{const _0x38b004=(await import('ajv'))['default'],_0x57f1cb=(await import(_0x2e1867(0x1b4)))['default'],_0x1a6738=await a0_0x55542b['readFile'](_0x22e79d,'utf-8'),_0x1c331e=JSON['parse'](_0x1a6738),_0x1de4df=new _0x38b004({'allErrors':!![],'strict':![]});_0x57f1cb(_0x1de4df);const _0x2cbca1={'type':_0x2e1867(0x147),'required':['name',_0x2e1867(0x15c)],'properties':{'name':{'type':_0x2e1867(0x17c),'pattern':_0x2e1867(0x181)},'version':{'type':'string'},'description':{'type':'string'},'main':{'type':_0x2e1867(0x17c)},'type':{'type':'string','enum':[_0x2e1867(0x14f),_0x2e1867(0x175)]},'scripts':{'type':'object'},'dependencies':{'type':_0x2e1867(0x147)},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x2a06bc=_0x1de4df['compile'](_0x2cbca1),_0x3ff39e=_0x2a06bc(_0x1c331e);if(!_0x3ff39e&&_0x2a06bc['errors'])return _0x2a06bc[_0x2e1867(0x1b1)][_0x2e1867(0x177)](_0xb1fc05=>({'file':_0x22e79d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2e1867(0x1b9),'message':_0xb1fc05['instancePath']?_0xb1fc05[_0x2e1867(0x14e)]+'\x20'+_0xb1fc05['message']:_0x2e1867(0x184)+_0xb1fc05[_0x2e1867(0x1a7)]['missingProperty']+'\x27','category':_0x2e1867(0x191),'validator':_0x2e1867(0x1b9)}));return[];}catch(_0x1c032c){return this[_0x2e1867(0x166)]?.['error']('package.json\x20validation\x20failed',{'error':_0x1c032c['message']}),[{'file':_0x22e79d,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2e1867(0x19c)]['ERROR'],'rule':'json-parse','message':'Invalid\x20JSON:\x20'+_0x1c032c[_0x2e1867(0x1a6)],'category':'syntax','validator':_0x2e1867(0x153)}];}}async[a0_0x3c84af(0x183)](_0x13c986,_0x2bfbaf={}){const _0x2746c0=a0_0x3c84af;try{const _0x337ee3=await a0_0x55542b[_0x2746c0(0x14a)](_0x13c986,_0x2746c0(0x15b)),_0x41c837=JSON[_0x2746c0(0x167)](_0x337ee3),_0x53eda8=[];if(_0x41c837['compilerOptions']){const _0x567dff=_0x41c837['compilerOptions'];!_0x567dff['strict']&&_0x53eda8['push']({'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2746c0(0x19c)]['WARNING'],'rule':'strict-mode','message':_0x2746c0(0x17e),'category':'best-practice','validator':'tsconfig-validator'}),_0x567dff['noImplicitAny']===![]&&_0x53eda8['push']({'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2746c0(0x19c)][_0x2746c0(0x171)],'rule':_0x2746c0(0x1bd),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x2746c0(0x160),'validator':_0x2746c0(0x1a0)});}return _0x53eda8;}catch(_0x2380ed){return this[_0x2746c0(0x166)]?.[_0x2746c0(0x16c)](_0x2746c0(0x1bf),{'error':_0x2380ed[_0x2746c0(0x1a6)]}),[{'file':_0x13c986,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2746c0(0x153),'message':'Invalid\x20JSON:\x20'+_0x2380ed[_0x2746c0(0x1a6)],'category':'syntax','validator':_0x2746c0(0x153)}];}}async[a0_0x3c84af(0x18d)](_0x4405b2,_0x2bf6d8={}){const _0x5f47bd=a0_0x3c84af;try{const _0x3d3c21=await a0_0x55542b['readFile'](_0x4405b2,'utf-8'),_0x3a6b1c=[],_0x4b3aac=_0x3d3c21['split']('\x0a'),_0x482129=[{'pattern':/password|passwd|pwd/i,'name':_0x5f47bd(0x155)},{'pattern':/api[_-]?key/i,'name':_0x5f47bd(0x178)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':_0x5f47bd(0x15e)},{'pattern':/aws[_-]?access/i,'name':'AWS\x20credentials'}];return _0x4b3aac['forEach']((_0x54dd3d,_0x357f85)=>{const _0x2d5866=_0x5f47bd,_0x21f294=_0x54dd3d['trim']();if(!_0x21f294||_0x21f294['startsWith']('#'))return;if(_0x21f294[_0x2d5866(0x15f)]('=')){const [_0x1eebae,_0xfe302f]=_0x21f294['split']('='),_0x2510da=_0x1eebae[_0x2d5866(0x18a)](),_0x292627=_0xfe302f?.['trim']()||'',_0x4a1f14=_0x292627&&_0x292627!==''&&!_0x292627['startsWith']('$')&&_0x292627!=='your-key-here'&&_0x292627!=='changeme'&&_0x292627['length']>0x5;if(_0x4a1f14)for(const {pattern:_0x3532f4,name:_0x2ef598}of _0x482129){if(_0x3532f4['test'](_0x2510da)){_0x3a6b1c['push']({'file':_0x4405b2,'line':_0x357f85+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x2d5866(0x19c)]['CRITICAL'],'rule':'hardcoded-secret','message':_0x2d5866(0x172)+_0x2ef598+'\x20detected\x20in\x20.env\x20file','category':_0x2d5866(0x150),'validator':'env-validator','remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x3a6b1c;}catch(_0x3b2572){return this[_0x5f47bd(0x166)]?.['error'](_0x5f47bd(0x19f),{'error':_0x3b2572['message']}),[];}}['detectFileType'](_0x26feed){const _0x2624a6=a0_0x3c84af,_0x4e4c7c=a0_0x5447be[_0x2624a6(0x19a)](_0x26feed)[_0x2624a6(0x18a)](),_0x5c269f=a0_0x5447be['dirname'](_0x26feed);if(_0x4e4c7c===_0x2624a6(0x17d))return'dockerfile';if(_0x4e4c7c===_0x2624a6(0x14c)||_0x4e4c7c===_0x2624a6(0x1a5))return'docker-compose';if(_0x4e4c7c===_0x2624a6(0x157))return _0x2624a6(0x157);if(_0x4e4c7c==='tsconfig.json')return'tsconfig.json';if(_0x4e4c7c==='.env'||_0x4e4c7c['endsWith']('.env'))return'env';if(_0x5c269f['includes']('.github/workflows'))return'github-actions';if(_0x5c269f[_0x2624a6(0x15f)]('kubernetes')||_0x5c269f['includes']('k8s'))return _0x2624a6(0x19e);const _0x2ad843=a0_0x5447be[_0x2624a6(0x164)](_0x26feed)[_0x2624a6(0x18a)]();if(_0x2ad843===_0x2624a6(0x195)||_0x2ad843===_0x2624a6(0x1b8))return'terraform';if(_0x2ad843==='.yml'||_0x2ad843===_0x2624a6(0x16f))return'yaml';if(_0x2ad843===_0x2624a6(0x154))return _0x2624a6(0x1af);return _0x2624a6(0x1ac);}[a0_0x3c84af(0x17f)](_0x1c35d6){const _0x38e8bb=a0_0x3c84af;return _0x1c35d6[_0x38e8bb(0x177)](_0x3f1837=>({'file':_0x3f1837[_0x38e8bb(0x149)],'line':_0x3f1837[_0x38e8bb(0x189)]||0x1,'column':_0x3f1837['column']||0x1,'severity':_0x3f1837[_0x38e8bb(0x1be)]||STATIC_ANALYSIS['SEVERITY']['WARNING'],'rule':_0x3f1837[_0x38e8bb(0x18e)]||_0x38e8bb(0x1ac),'message':_0x3f1837[_0x38e8bb(0x1a6)]||_0x38e8bb(0x144),'category':_0x3f1837['category']||'validation','validator':_0x3f1837['validator'],'cwe':_0x3f1837[_0x38e8bb(0x163)]||null,'remediation':_0x3f1837['remediation']||null,'references':_0x3f1837['references']||[]}));}[a0_0x3c84af(0x16e)](_0x461dcb){const _0x472459=a0_0x3c84af,_0x46c52e={'error':STATIC_ANALYSIS['SEVERITY'][_0x472459(0x1bb)],'warning':STATIC_ANALYSIS[_0x472459(0x19c)]['WARNING'],'info':STATIC_ANALYSIS[_0x472459(0x19c)][_0x472459(0x193)],'style':STATIC_ANALYSIS['SEVERITY'][_0x472459(0x193)]};return _0x46c52e[_0x461dcb?.['toLowerCase']()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}[a0_0x3c84af(0x16b)](_0x2db023){const _0x15d14b=a0_0x3c84af,_0x4eba55={'error':STATIC_ANALYSIS[_0x15d14b(0x19c)]['ERROR'],'warning':STATIC_ANALYSIS[_0x15d14b(0x19c)][_0x15d14b(0x171)]};return _0x4eba55[_0x2db023?.[_0x15d14b(0x18a)]()]||STATIC_ANALYSIS['SEVERITY'][_0x15d14b(0x171)];}['mapCheckovSeverity'](_0x44a41b){const _0x8e14fa=a0_0x3c84af;return STATIC_ANALYSIS[_0x8e14fa(0x19c)]['ERROR'];}async[a0_0x3c84af(0x1b6)](){const _0x41947b=a0_0x3c84af,_0x4100de=await this[_0x41947b(0x1a2)]();return{'validators':_0x4100de,'recommendations':this['getInstallRecommendations'](_0x4100de)};}['getInstallRecommendations'](_0x58ba2a){const _0x3ac4b5=a0_0x3c84af,_0x1c354a=[];return!_0x58ba2a[_0x3ac4b5(0x146)]&&_0x1c354a['push']({'validator':'checkov','reason':_0x3ac4b5(0x151),'install':'pip\x20install\x20checkov','priority':_0x3ac4b5(0x161)}),!_0x58ba2a[_0x3ac4b5(0x148)]&&_0x1c354a['push']({'validator':_0x3ac4b5(0x148),'reason':_0x3ac4b5(0x158),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':'high'}),!_0x58ba2a[_0x3ac4b5(0x176)]&&_0x1c354a[_0x3ac4b5(0x1ae)]({'validator':'yamllint','reason':_0x3ac4b5(0x182),'install':_0x3ac4b5(0x1ad),'priority':'medium'}),!_0x58ba2a[_0x3ac4b5(0x143)]&&_0x1c354a['push']({'validator':_0x3ac4b5(0x199),'reason':_0x3ac4b5(0x18f),'install':_0x3ac4b5(0x197),'priority':'medium'}),_0x1c354a;}}function a0_0x435f(){const _0x1aac95=['z2L0AhvIlwfJDgLVBNm','zg9JA2vYlwnVBxbVC2uUEw1S','zgv0zwn0rMLSzvr5Cgu','Aw5ZDgfUy2vqyxrO','Bw9KDwXL','C2vJDxjPDhK','sw5MCMfZDhj1y3r1CMuGyxmGq29KzsbZzwn1CML0EsbZy2fUBMLUzYaOrg9JA2vYlcblDwjLCM5LDgvZlcbuzxjYywzVCM0P','ywP2ig5VDcbHDMfPBgfIBgu','ANnVBI1WyxjZzq','lMPZB24','CgfZC3DVCMq','D2fYBG','CgfJA2fNzs5QC29U','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','DMfSAwrHDgveB2nRzxjMAwXL','y2HLy2TFAwq','DxrMltG','DMvYC2LVBG','ofLKrvburG','ChjPDMf0zsbRzxK','Aw5JBhvKzxm','yMvZDc1WCMfJDgLJzq','AgLNAa','Bgv2zwW','y3DL','zxH0BMfTzq','DhjPBq','Bg9Nz2vY','CgfYC2u','CgfYC2viywrVBgLUDfjLC3vSDhm','y29Kzq','C3rKB3v0','BwfWwwfTBgXPBNrtzxzLCML0Eq','zxjYB3i','DgvYCMfMB3jT','BwfWsgfKB2XPBNrtzxzLCML0Eq','lNLHBwW','yxzHAwXHyMXLu2nHBM5LCNm','v0fstKLorW','ug90zw50AwfSigHHCMrJB2rLzca','CgfYC2vzyw1SBgLUDfjLC3vSDhm','EwfTBgXPBNqGzgv0zwn0zwq','y29TBw9UANm','EwfTBgXPBNq','BwfW','qvbjigTLEq','mtaWmdq1q1buvvvh','DMfSAwrHDgu','zgvIDwC','C3rYAw5N','zg9JA2vYzMLSzq','q29UC2LKzxiGzw5HyMXPBMCGiNn0CMLJDciGBw9KzsbMB3iGyMv0DgvYihr5CguGC2fMzxr5','BM9YBwfSAxPLuMvZDwX0CW','EwfTBgXPBNqGls12zxjZAw9U','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','wufntcbMAwXLihzHBgLKyxrPB24','DMfSAwrHDgvuC0nVBMzPzW','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','y2HLy2TVDIbKzxrLy3rLza','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','mta4zfr1uxnP','DMfSAwrHDgvxAxrOq2HLy2TVDG','BgLUzq','Dg9mB3DLCKnHC2u','zMfPBgvKx2nOzwnRCW','y2HLy2TVDIaTlxzLCNnPB24','DMfSAwrHDgvfBNzgAwXL','CNvSzq','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','y2HLy2TFBMfTzq','DMfSAwrHDgLVBG','mtyYnJKXohDguwr0va','su5gtW','AgfKB2XPBNqGDMfSAwrHDgLVBIbMywLSzwq','lNrM','zMLSzv9SAw5Lx3jHBMDL','BNbTigLUC3rHBgWGywP2igfQDI1MB3jTyxrZ','mJC0mZK1ogD5ANHZtG','ywP2icHku09oifnJAgvTysK','yMfZzw5HBwu','AgfKB2XPBNqGBM90igf2ywLSywjSzq','u0vwrvjjvfK','DMfSAwrHDgvzqu1m','A3vIzxjUzxrLCW','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','DhnJB25MAwCTDMfSAwrHDg9Y','zg9JA2vYx2nVBxbVC2u','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','mZK1mJm0yvjHv2rY','EwfTBa','zg9JA2vYlwnVBxbVC2uUEwfTBa','BwvZC2fNzq','CgfYyw1Z','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','AgfKB2XPBNqGzgv0zwn0zwq','z3vPzgvSAw5L','AxnbCNjHEq','Dw5RBM93BG','CgLWigLUC3rHBgWGEwfTBgXPBNq','ChvZAa','ANnVBG','mte3ntf4A1Dds3C','zxjYB3jZ','CMvZDwX0CW','mJG4mZm5nxDYrvvIrG','ywP2lwzVCM1HDhm','C3bSAxq','z2v0vMfSAwrHDg9Yu3rHDhvZ','ic0TB3v0Chv0igPZB24Gls1JB21Wywn0','lNrMDMfYCW','ANnVBI1Zy2HLBwe','ntuZmdmZogXWEKjAAa','rvjst1i','EwfTBgXPBNqGBM90igf2ywLSywjSzq','BM8TAw1WBgLJAxqTyw55','C2v2zxjPDhK','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','ANnVBLnJAgvTyq','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','DMfSAwrHDgvqywnRywDLsNnVBG','y2HLy2TVDG','B2jQzwn0','AgfKB2XPBNq','zMLSzq','CMvHzezPBgu'];a0_0x435f=function(){return _0x1aac95;};return a0_0x435f();}export default ConfigValidator;
|
|
1
|
+
const a0_0x39853d=a0_0x1bdc;(function(_0x505ccd,_0xe0dc68){const _0x36c399=a0_0x1bdc,_0x130da3=_0x505ccd();while(!![]){try{const _0x2fc861=parseInt(_0x36c399(0x12d))/0x1*(parseInt(_0x36c399(0xe0))/0x2)+parseInt(_0x36c399(0x127))/0x3*(parseInt(_0x36c399(0x10f))/0x4)+-parseInt(_0x36c399(0x134))/0x5+parseInt(_0x36c399(0xfe))/0x6+-parseInt(_0x36c399(0x121))/0x7+parseInt(_0x36c399(0x13a))/0x8+-parseInt(_0x36c399(0xe5))/0x9*(parseInt(_0x36c399(0xd9))/0xa);if(_0x2fc861===_0xe0dc68)break;else _0x130da3['push'](_0x130da3['shift']());}catch(_0x152427){_0x130da3['push'](_0x130da3['shift']());}}}(a0_0x2f8c,0x73dfd));import{exec}from'child_process';function a0_0x2f8c(){const _0x14a25d=['zg9JA2vYlwnVBxbVC2uUEwfTBa','EwfTBgXPBNqGzgv0zwn0zwq','B2jQzwn0','yMvZDc1WCMfJDgLJzq','C3bSAxq','zMLSzv9SAw5Lx3jHBMDL','y29SDw1U','rvjst1i','qvDtignYzwrLBNrPywXZ','C3rKB3v0','CMvZDwX0CW','DMfSAwrHDg9Y','C2nHBM5LCKnHy2HL','DMfSAwrHDgvxAxrOq2HLy2TVDG','DgvYCMfMB3jT','CMvMzxjLBMnLCW','CgfZC3DVCMq','lMvUDIb2ywXPzgf0Aw9UigzHAwXLza','Aw5JBhvKzxm','mtbZugnmtve','EwfTBa','Dg9mB3DLCKnHC2u','DhjPBq','Bw9KDwXL','zg9JA2vYlwnVBxbVC2u','DhnJB25MAwCTDMfSAwrHDg9Y','nZuYmZrOCeTitfm','xIG/oKbBys16mc05lx5Dw2eTEJaTos0Ux35DkI8Pp1THlxOWltKTFL1Bys16mc05ls5FFL0Qja','EwfTBgXPBNqGBM90igf2ywLSywjSzq','BwvKAxvT','lNrMDMfYCW','ntG2otG2m2fkEK1NBa','DMfSAwrHDgvfBNzgAwXL','CgfYC2vzyw1SBgLUDfjLC3vSDhm','zw52','A3vIzxjUzxrLCW','zgv0zwn0qxzHAwXHyMXLvMfSAwrHDg9YCW','rg9JA2vYzMLSzsbSAw50Aw5NigfUzcbIzxn0ihbYywn0AwnLCW','igrLDgvJDgvKigLUic5LBNyGzMLSzq','wufntcbMAwXLihzHBgLKyxrPB24','ANnVBI1WyxjZzq','Bwf0y2G','zg9JA2vYx2nVBxbVC2u','y2HLy2TVDG','ANnVBLnJAgvTyq','rMfPBgvKihrVihbHCNnLignOzwnRB3yGB3v0Chv0','AgfKB2XPBNqGls1MB3jTyxqGANnVBIaI','CgfJA2fNzs5QC29U','AZHZ','vMfSAwrHDgLUzYbJB25MAwCGzMLSzq','ywP2','zgvIDwC','y2HLy2TFy2XHC3m','CgfYyw1Z','y2HLy2TFBMfTzq','BMfTzq','mZe5mZi4nhrdseLltG','EwfTBgXPBNqGlwyGCgfYC2fIBguGiG','CNvSzq','z3vPzgvSAw5L','BgLUzq','y2HLy2TVDIaTlxzLCNnPB24','C3rYAwn0','BwfWsgfKB2XPBNrtzxzLCML0Eq','BgvUz3rO','AgLNAa','ANnVBI1Zy2HLBwe','C2vJDxjPDhK','ywP2icHku09oifnJAgvTysK','y29TCgLSzxjpChrPB25Z','CgfYC2viywrVBgLUDfjLC3vSDhm','EwfTBgXPBNq','BwfWq2HLy2TVDLnLDMvYAxr5','mtuXody4zNjHuKHZ','zxjYB3jZ','u0vwrvjjvfK','BM9jBxbSAwnPDefUEq','y2HLy2TVDIaTzIaI','sw52ywXPzcbku09ooIa','C2v2zxjPDhK','CgfJA2fNzs5QC29UihzHBgLKyxrPB24GzMfPBgvK','sLnptIbJB25MAwD1CMf0Aw9UihzHBgLKyxrPB24','AgfKB2XPBNq','zxjYB3i','ANnVBG','qvbjigTLEq','DMfSAwrHDgvqywnRywDLsNnVBG','zg9JA2vYzMLSzq','zMfPBgvKx2nOzwnRCW','EwfTBgXPBNqGDMfSAwrHDgLVBIbMywLSzwq','Aw5ZDgfUy2vqyxrO','mJK2mJa1n3Ltq0rNCW','CMvHzezPBgu','C3rYAwn0lw1Vzgu','v0fstKLorW','z2L0AhvIlwfJDgLVBNm','lMvUDG','mZL1zLfTwfq','DMfSAwrHDgvzqu1m','BwvZC2fNzq','DhnJB25MAwCUANnVBIb2ywXPzgf0Aw9UigzHAwXLza','Ew91CI1RzxKTAgvYzq','BwfW','mtnovgnqz3G','CgfYC2u','zw52lxzHBgLKyxrVCG','BM8TAw1WBgLJAxqTyw55','C3rYAw5N','Bg9Nz2vY','DhnJB25MAwCUANnVBG','mZu4ndyZnxrQExfwAa','iIaTlwzYyw1LD29YAYa','y2HLy2TVDIb2ywXPzgf0Aw9UigzHAwXLza','BxvZDcbOyxzLihjLCxvPCMvKihbYB3bLCNr5icC','y2HHBMDLBwu','AgfKB2XPBNqGls12zxjZAw9U','nJaXnJGWmgL4zhDWEq','ChvZAa','zgv0zwn0rMLSzvr5Cgu','DMvYC2LVBG','BwLZC2LUz1bYB3bLCNr5','z2v0sw5ZDgfSBfjLy29TBwvUzgf0Aw9UCW','Dw5RBM93BG','CgfYC2vdAgvJA292uMvZDwX0CW','lMPZB24','yxzHAwXHyMXLu2nHBM5LCNm','y29TBw9UANm','DMfSAwrHDgLVBG','DxrMltG','vMfSAwrHDgLVBIbPC3n1zsbKzxrLy3rLza','y2HLy2TVDIbUB3qGyxzHAwXHyMXL','ug90zw50AwfSigHHCMrJB2rLzca','zM9YrwfJAa','D2fYBG','rMfPBgvKihrVihbHCNnLigHHzg9SAw50ig91Dhb1Da','y2HLy2TVDIbKzxrLy3rLza','C3LUDgf4'];a0_0x2f8c=function(){return _0x14a25d;};return a0_0x2f8c();}import{promisify}from'util';import a0_0xa27771 from'path';import a0_0x44df1d from'fs/promises';function a0_0x1bdc(_0x248f07,_0x2fd2b4){_0x248f07=_0x248f07-0xbc;const _0x2f8c39=a0_0x2f8c();let _0x1bdc0f=_0x2f8c39[_0x248f07];if(a0_0x1bdc['dGjqmP']===undefined){var _0x43bfb8=function(_0xd7f239){const _0x3c6cd1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xa27771='',_0x44df1d='';for(let _0x5d62f2=0x0,_0x4954a5,_0x1c170f,_0x318b28=0x0;_0x1c170f=_0xd7f239['charAt'](_0x318b28++);~_0x1c170f&&(_0x4954a5=_0x5d62f2%0x4?_0x4954a5*0x40+_0x1c170f:_0x1c170f,_0x5d62f2++%0x4)?_0xa27771+=String['fromCharCode'](0xff&_0x4954a5>>(-0x2*_0x5d62f2&0x6)):0x0){_0x1c170f=_0x3c6cd1['indexOf'](_0x1c170f);}for(let _0xb48428=0x0,_0x592bec=_0xa27771['length'];_0xb48428<_0x592bec;_0xb48428++){_0x44df1d+='%'+('00'+_0xa27771['charCodeAt'](_0xb48428)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x44df1d);};a0_0x1bdc['DCKPjf']=_0x43bfb8,a0_0x1bdc['bxUVSZ']={},a0_0x1bdc['dGjqmP']=!![];}const _0x59e668=_0x2f8c39[0x0],_0x11db98=_0x248f07+_0x59e668,_0x587689=a0_0x1bdc['bxUVSZ'][_0x11db98];return!_0x587689?(_0x1bdc0f=a0_0x1bdc['DCKPjf'](_0x1bdc0f),a0_0x1bdc['bxUVSZ'][_0x11db98]=_0x1bdc0f):_0x1bdc0f=_0x587689,_0x1bdc0f;}import{STATIC_ANALYSIS}from'../utilities/constants.js';const execAsync=promisify(exec);class ConfigValidator{constructor(_0x5d62f2=null){const _0x5b2595=a0_0x1bdc;this[_0x5b2595(0x132)]=_0x5d62f2,this[_0x5b2595(0x143)]=null,this[_0x5b2595(0xd2)]=new Map();}async[a0_0x39853d(0xea)](){const _0xe2e1d8=a0_0x39853d;if(this['availableScanners']!==null)return this['availableScanners'];const _0x4954a5={'checkov':![],'hadolint':![],'yamllint':![],'jsonSchema':![]};try{await execAsync(_0xe2e1d8(0x103),{'timeout':0x1388}),_0x4954a5['checkov']=!![],this['logger']?.['debug'](_0xe2e1d8(0xc4));}catch(_0x1c170f){this['logger']?.[_0xe2e1d8(0xf9)](_0xe2e1d8(0xbf),{'error':_0x1c170f['message']});}try{await execAsync(_0xe2e1d8(0x139),{'timeout':0x1388}),_0x4954a5[_0xe2e1d8(0x118)]=!![],this['logger']?.[_0xe2e1d8(0xf9)]('hadolint\x20detected');}catch(_0x318b28){this['logger']?.[_0xe2e1d8(0xf9)]('hadolint\x20not\x20available',{'error':_0x318b28['message']});}try{await execAsync('yamllint\x20--version',{'timeout':0x1388}),_0x4954a5['yamllint']=!![],this[_0xe2e1d8(0x132)]?.['debug'](_0xe2e1d8(0xc7));}catch(_0xb48428){this[_0xe2e1d8(0x132)]?.['debug'](_0xe2e1d8(0xe2),{'error':_0xb48428[_0xe2e1d8(0x129)]});}try{await import(_0xe2e1d8(0xf8)),_0x4954a5[_0xe2e1d8(0xf2)]=!![],this['logger']?.['debug']('JSON\x20Schema\x20validation\x20available');}catch(_0x592bec){this['logger']?.['debug']('ajv\x20not\x20available',{'error':_0x592bec['message']});}return this[_0xe2e1d8(0x143)]=_0x4954a5,_0x4954a5;}async['validate'](_0x3ab63c,_0x2ae2a4={}){const _0x400878=a0_0x39853d,_0x4cca2a=[],_0x1c5b03=await this[_0x400878(0xea)](),_0x1de7f0=this[_0x400878(0x13c)](_0x3ab63c);this[_0x400878(0x132)]?.['debug'](_0x400878(0xf7),{'filePath':_0x3ab63c,'fileType':_0x1de7f0});switch(_0x1de7f0){case'dockerfile':if(_0x1c5b03[_0x400878(0x118)]){const _0x29c46b=await this['validateDockerfile'](_0x3ab63c,_0x2ae2a4);_0x4cca2a['push'](..._0x29c46b);}if(_0x1c5b03[_0x400878(0xf1)]){const _0x2fc9d0=await this['validateWithCheckov'](_0x3ab63c,'dockerfile',_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x2fc9d0);}break;case _0x400878(0xde):if(_0x1c5b03[_0x400878(0x10d)]){const _0xc14dfd=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0xc14dfd);}if(_0x1c5b03['checkov']){const _0x3f21b7=await this[_0x400878(0xd3)](_0x3ab63c,_0x400878(0xf0),_0x2ae2a4);_0x4cca2a['push'](..._0x3f21b7);}break;case _0x400878(0xe9):if(_0x1c5b03['yamllint']){const _0x2c970f=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x2c970f);}if(_0x1c5b03['checkov']){const _0x376269=await this[_0x400878(0xd3)](_0x3ab63c,'kubernetes',_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x376269);}break;case'terraform':if(_0x1c5b03['checkov']){const _0x32f72e=await this[_0x400878(0xd3)](_0x3ab63c,'terraform',_0x2ae2a4);_0x4cca2a['push'](..._0x32f72e);}break;case _0x400878(0xf5):if(_0x1c5b03['jsonSchema']){const _0x30d811=await this[_0x400878(0x11c)](_0x3ab63c,_0x2ae2a4);_0x4cca2a['push'](..._0x30d811);}break;case'tsconfig.json':if(_0x1c5b03['jsonSchema']){const _0x1fa817=await this['validateTsConfig'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x1fa817);}break;case _0x400878(0x125):if(_0x1c5b03['yamllint']){const _0x334d93=await this['validateYAML'](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x334d93);}break;case _0x400878(0xe8):const _0x591ed7=await this[_0x400878(0xe6)](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x591ed7);break;case _0x400878(0xda):if(_0x1c5b03['yamllint']){const _0x61fb33=await this[_0x400878(0x128)](_0x3ab63c,_0x2ae2a4);_0x4cca2a[_0x400878(0x13b)](..._0x61fb33);}break;default:this[_0x400878(0x132)]?.[_0x400878(0xc2)]('Unknown\x20config\x20file\x20type',{'filePath':_0x3ab63c,'fileType':_0x1de7f0});return[];}return this['normalizeResults'](_0x4cca2a);}async['validateDockerfile'](_0x1cb937,_0x519d54={}){const _0x1d4d8e=a0_0x39853d;try{const _0x2c32d8=await execAsync(_0x1d4d8e(0xf4)+_0x1cb937+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530}),_0x125b18=JSON['parse'](_0x2c32d8[_0x1d4d8e(0xcf)]);return this['parseHadolintResults'](_0x125b18,_0x1cb937);}catch(_0x1f0fd4){if(_0x1f0fd4[_0x1d4d8e(0xcf)])try{const _0x1adcb2=JSON[_0x1d4d8e(0x12e)](_0x1f0fd4['stdout']);return this['parseHadolintResults'](_0x1adcb2,_0x1cb937);}catch(_0x4f1c68){this[_0x1d4d8e(0x132)]?.[_0x1d4d8e(0x119)](_0x1d4d8e(0xc3),{'error':_0x4f1c68[_0x1d4d8e(0x129)]});}return this['logger']?.['error']('hadolint\x20validation\x20failed',{'error':_0x1f0fd4[_0x1d4d8e(0x129)]}),[];}}[a0_0x39853d(0x10c)](_0x433bbb,_0x191c45){const _0x2437ee=a0_0x39853d,_0x20f8a2=[];if(Array['isArray'](_0x433bbb))for(const _0x3ffca9 of _0x433bbb){_0x20f8a2['push']({'file':_0x191c45,'line':_0x3ffca9[_0x2437ee(0x102)]||0x1,'column':_0x3ffca9[_0x2437ee(0xcc)]||0x1,'severity':this[_0x2437ee(0x105)](_0x3ffca9['level']),'rule':_0x3ffca9['code'],'message':_0x3ffca9[_0x2437ee(0x129)],'category':_0x2437ee(0x11d),'validator':_0x2437ee(0x118)});}return _0x20f8a2;}async['validateYAML'](_0x5f0f81,_0x1f2308={}){const _0x456b12=a0_0x39853d;try{const _0x4f2383=await execAsync(_0x456b12(0xff)+_0x5f0f81+'\x22',{'maxBuffer':0xa*0x400*0x400,'timeout':0x7530});return this[_0x456b12(0xe7)](_0x4f2383[_0x456b12(0xcf)],_0x5f0f81);}catch(_0x3d9c04){if(_0x3d9c04['stdout'])return this[_0x456b12(0xe7)](_0x3d9c04['stdout'],_0x5f0f81);return this[_0x456b12(0x132)]?.['error'](_0x456b12(0x11f),{'error':_0x3d9c04['message']}),[];}}[a0_0x39853d(0xe7)](_0x5a3254,_0x37a766){const _0x39335a=a0_0x39853d,_0x3868cb=[],_0x3fe5f8=_0x5a3254[_0x39335a(0xca)]('\x0a')['filter'](_0x5a001c=>_0x5a001c[_0x39335a(0xdc)]());for(const _0x280ce7 of _0x3fe5f8){const _0x1780f4=_0x280ce7[_0x39335a(0xef)](/^(.+?):(\d+):(\d+):\s*\[(\w+)\]\s*(.+?)\s*\((.+?)\)/);if(_0x1780f4){const [,_0x5b94f8,_0x3d9608,_0x4145ed,_0x24d11d,_0xd53a99,_0x38a074]=_0x1780f4;_0x3868cb[_0x39335a(0x13b)]({'file':_0x37a766,'line':parseInt(_0x3d9608,0xa),'column':parseInt(_0x4145ed,0xa),'severity':this['mapYamllintSeverity'](_0x24d11d),'rule':_0x38a074,'message':_0xd53a99,'category':_0x39335a(0xda),'validator':_0x39335a(0x10d)});}}return _0x3868cb;}async[a0_0x39853d(0xd3)](_0x5ad059,_0x2c1002,_0x5c64ff={}){const _0x5eace0=a0_0x39853d;try{const _0x5377cf=await execAsync(_0x5eace0(0x113)+_0x5ad059+_0x5eace0(0x135)+_0x2c1002+'\x20--output\x20json\x20--compact',{'maxBuffer':0xa*0x400*0x400,'timeout':0xea60}),_0x5dd31c=JSON[_0x5eace0(0x12e)](_0x5377cf['stdout']);return this[_0x5eace0(0x141)](_0x5dd31c,_0x5ad059);}catch(_0x138ede){if(_0x138ede['stdout'])try{const _0x23e0d7=JSON['parse'](_0x138ede['stdout']);return this[_0x5eace0(0x141)](_0x23e0d7,_0x5ad059);}catch(_0x9b7f38){this[_0x5eace0(0x132)]?.['error'](_0x5eace0(0xf3),{'error':_0x9b7f38['message']});}return this['logger']?.['error'](_0x5eace0(0x136),{'error':_0x138ede[_0x5eace0(0x129)]}),[];}}['parseCheckovResults'](_0x4e09e7,_0xf4ba35){const _0x47a05f=a0_0x39853d,_0x1f0aeb=[];if(_0x4e09e7['results']&&_0x4e09e7[_0x47a05f(0xd0)]['failed_checks'])for(const _0x2e0ffa of _0x4e09e7[_0x47a05f(0xd0)][_0x47a05f(0x11e)]){_0x1f0aeb['push']({'file':_0xf4ba35,'line':_0x2e0ffa[_0x47a05f(0xcb)]?_0x2e0ffa['file_line_range'][0x0]:0x1,'column':0x1,'severity':this[_0x47a05f(0x10e)](_0x2e0ffa[_0x47a05f(0xfa)]),'rule':_0x2e0ffa['check_id'],'message':_0x2e0ffa[_0x47a05f(0xfc)]||_0x2e0ffa['check_id'],'category':'security','validator':_0x47a05f(0xf1),'remediation':_0x2e0ffa[_0x47a05f(0x101)],'cwe':_0x2e0ffa['cwe'],'references':_0x2e0ffa[_0x47a05f(0x101)]?[_0x2e0ffa['guideline']]:[]});}return _0x1f0aeb;}async['validatePackageJson'](_0x1a1cef,_0x51a8ae={}){const _0x25727a=a0_0x39853d;try{const _0x3f3f34=(await import(_0x25727a(0xf8)))['default'],_0xd0836=(await import('ajv-formats'))['default'],_0x2edb1d=await a0_0x44df1d['readFile'](_0x1a1cef,_0x25727a(0xbd)),_0x1aa9a5=JSON[_0x25727a(0x12e)](_0x2edb1d),_0x239ac5=new _0x3f3f34({'allErrors':!![],'strict':![]});_0xd0836(_0x239ac5);const _0x200236={'type':_0x25727a(0xc8),'required':[_0x25727a(0xfd),_0x25727a(0x13d)],'properties':{'name':{'type':_0x25727a(0x131),'pattern':_0x25727a(0xe1)},'version':{'type':'string'},'description':{'type':_0x25727a(0x131)},'main':{'type':_0x25727a(0x131)},'type':{'type':'string','enum':[_0x25727a(0xdd),_0x25727a(0x144)]},'scripts':{'type':'object'},'dependencies':{'type':'object'},'devDependencies':{'type':'object'}},'additionalProperties':!![]},_0x34d21d=_0x239ac5['compile'](_0x200236),_0x3ea7f1=_0x34d21d(_0x1aa9a5);if(!_0x3ea7f1&&_0x34d21d['errors'])return _0x34d21d[_0x25727a(0x110)][_0x25727a(0x12c)](_0x47ec41=>({'file':_0x1a1cef,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x25727a(0xcd)],'rule':_0x25727a(0x108),'message':_0x47ec41[_0x25727a(0x120)]?_0x47ec41['instancePath']+'\x20'+_0x47ec41[_0x25727a(0x129)]:_0x25727a(0x137)+_0x47ec41[_0x25727a(0xfb)][_0x25727a(0x13e)]+'\x27','category':_0x25727a(0xbc),'validator':'json-schema'}));return[];}catch(_0x4ce307){return this['logger']?.[_0x25727a(0x119)](_0x25727a(0x116),{'error':_0x4ce307['message']}),[{'file':_0x1a1cef,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x25727a(0x111)][_0x25727a(0xcd)],'rule':_0x25727a(0xee),'message':'Invalid\x20JSON:\x20'+_0x4ce307[_0x25727a(0x129)],'category':_0x25727a(0xc5),'validator':'json-parse'}];}}async['validateTsConfig'](_0x4eb17e,_0x358904={}){const _0x221c14=a0_0x39853d;try{const _0x2ba509=await a0_0x44df1d[_0x221c14(0x122)](_0x4eb17e,'utf-8'),_0x458fdd=JSON['parse'](_0x2ba509),_0x5d0cd7=[];if(_0x458fdd['compilerOptions']){const _0x369ac6=_0x458fdd[_0x221c14(0x10b)];!_0x369ac6[_0x221c14(0x104)]&&_0x5d0cd7['push']({'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x221c14(0x111)][_0x221c14(0x124)],'rule':_0x221c14(0x123),'message':'Consider\x20enabling\x20\x22strict\x22\x20mode\x20for\x20better\x20type\x20safety','category':_0x221c14(0xc9),'validator':'tsconfig-validator'}),_0x369ac6[_0x221c14(0x112)]===![]&&_0x5d0cd7[_0x221c14(0x13b)]({'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS['SEVERITY'][_0x221c14(0x124)],'rule':_0x221c14(0x130),'message':'Disabling\x20noImplicitAny\x20reduces\x20type\x20safety','category':_0x221c14(0xc9),'validator':_0x221c14(0xdf)});}return _0x5d0cd7;}catch(_0x1e72ec){return this[_0x221c14(0x132)]?.['error'](_0x221c14(0x12a),{'error':_0x1e72ec[_0x221c14(0x129)]}),[{'file':_0x4eb17e,'line':0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x221c14(0x111)]['ERROR'],'rule':_0x221c14(0xee),'message':_0x221c14(0x114)+_0x1e72ec['message'],'category':'syntax','validator':'json-parse'}];}}async['validateEnvFile'](_0x39b401,_0xa7cb1={}){const _0x5ab95e=a0_0x39853d;try{const _0x1b0afd=await a0_0x44df1d[_0x5ab95e(0x122)](_0x39b401,_0x5ab95e(0xbd)),_0x4baea7=[],_0x6525cf=_0x1b0afd['split']('\x0a'),_0x22fb6f=[{'pattern':/password|passwd|pwd/i,'name':_0x5ab95e(0xd6)},{'pattern':/api[_-]?key/i,'name':_0x5ab95e(0x11b)},{'pattern':/secret/i,'name':'secret'},{'pattern':/token/i,'name':'token'},{'pattern':/private[_-]?key/i,'name':'private\x20key'},{'pattern':/aws[_-]?access/i,'name':_0x5ab95e(0xce)}];return _0x6525cf[_0x5ab95e(0xc1)]((_0x33b8f3,_0x4b8dbf)=>{const _0x513495=_0x5ab95e,_0x23106e=_0x33b8f3[_0x513495(0xdc)]();if(!_0x23106e||_0x23106e['startsWith']('#'))return;if(_0x23106e['includes']('=')){const [_0xcdad84,_0x29b85b]=_0x23106e['split']('='),_0x365d5f=_0xcdad84[_0x513495(0xdb)](),_0x40ba44=_0x29b85b?.['trim']()||'',_0x9fcdea=_0x40ba44&&_0x40ba44!==''&&!_0x40ba44['startsWith']('$')&&_0x40ba44!==_0x513495(0x12b)&&_0x40ba44!==_0x513495(0x138)&&_0x40ba44[_0x513495(0x106)]>0x5;if(_0x9fcdea)for(const {pattern:_0x2e51ef,name:_0x21fc00}of _0x22fb6f){if(_0x2e51ef['test'](_0x365d5f)){_0x4baea7['push']({'file':_0x39b401,'line':_0x4b8dbf+0x1,'column':0x1,'severity':STATIC_ANALYSIS[_0x513495(0x111)]['CRITICAL'],'rule':'hardcoded-secret','message':_0x513495(0xc0)+_0x21fc00+_0x513495(0xec),'category':_0x513495(0x109),'validator':_0x513495(0x12f),'remediation':'Use\x20environment-specific\x20.env\x20files\x20and\x20add\x20.env\x20to\x20.gitignore'});break;}}}}),_0x4baea7;}catch(_0x399a2d){return this[_0x5ab95e(0x132)]?.['error'](_0x5ab95e(0xd7),{'error':_0x399a2d[_0x5ab95e(0x129)]}),[];}}['detectFileType'](_0x9f81a4){const _0x8e0c35=a0_0x39853d,_0x6cdfa0=a0_0xa27771['basename'](_0x9f81a4)[_0x8e0c35(0xdb)](),_0x4e79d3=a0_0xa27771['dirname'](_0x9f81a4);if(_0x6cdfa0==='dockerfile')return _0x8e0c35(0x11d);if(_0x6cdfa0==='docker-compose.yml'||_0x6cdfa0===_0x8e0c35(0xc6))return _0x8e0c35(0xde);if(_0x6cdfa0===_0x8e0c35(0xf5))return _0x8e0c35(0xf5);if(_0x6cdfa0===_0x8e0c35(0x133))return _0x8e0c35(0x133);if(_0x6cdfa0==='.env'||_0x6cdfa0['endsWith'](_0x8e0c35(0x126)))return _0x8e0c35(0xe8);if(_0x4e79d3['includes']('.github/workflows'))return _0x8e0c35(0x125);if(_0x4e79d3['includes']('kubernetes')||_0x4e79d3[_0x8e0c35(0xd8)](_0x8e0c35(0xf6)))return _0x8e0c35(0xe9);const _0x5cc345=a0_0xa27771['extname'](_0x9f81a4)['toLowerCase']();if(_0x5cc345==='.tf'||_0x5cc345===_0x8e0c35(0xe4))return _0x8e0c35(0xd4);if(_0x5cc345==='.yml'||_0x5cc345==='.yaml')return _0x8e0c35(0xda);if(_0x5cc345===_0x8e0c35(0x142))return _0x8e0c35(0x11a);return _0x8e0c35(0x140);}['normalizeResults'](_0x15c40b){const _0x4b6ec6=a0_0x39853d;return _0x15c40b['map'](_0x568e7b=>({'file':_0x568e7b['file'],'line':_0x568e7b['line']||0x1,'column':_0x568e7b['column']||0x1,'severity':_0x568e7b[_0x4b6ec6(0x115)]||STATIC_ANALYSIS['SEVERITY'][_0x4b6ec6(0x124)],'rule':_0x568e7b[_0x4b6ec6(0x100)]||_0x4b6ec6(0x140),'message':_0x568e7b['message']||_0x4b6ec6(0xbe),'category':_0x568e7b['category']||_0x4b6ec6(0xbc),'validator':_0x568e7b[_0x4b6ec6(0xd1)],'cwe':_0x568e7b['cwe']||null,'remediation':_0x568e7b['remediation']||null,'references':_0x568e7b[_0x4b6ec6(0xd5)]||[]}));}['mapHadolintSeverity'](_0x588996){const _0x1cf4c0=a0_0x39853d,_0x2c486f={'error':STATIC_ANALYSIS['SEVERITY']['ERROR'],'warning':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['WARNING'],'info':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['INFO'],'style':STATIC_ANALYSIS[_0x1cf4c0(0x111)]['INFO']};return _0x2c486f[_0x588996?.[_0x1cf4c0(0xdb)]()]||STATIC_ANALYSIS['SEVERITY'][_0x1cf4c0(0x124)];}['mapYamllintSeverity'](_0x52e625){const _0x196a0e=a0_0x39853d,_0x38becf={'error':STATIC_ANALYSIS[_0x196a0e(0x111)][_0x196a0e(0xcd)],'warning':STATIC_ANALYSIS['SEVERITY']['WARNING']};return _0x38becf[_0x52e625?.[_0x196a0e(0xdb)]()]||STATIC_ANALYSIS['SEVERITY']['WARNING'];}['mapCheckovSeverity'](_0x31e4b1){const _0x22aa56=a0_0x39853d;return STATIC_ANALYSIS[_0x22aa56(0x111)]['ERROR'];}async['getValidatorStatus'](){const _0x5a0d90=a0_0x39853d,_0x36f2a3=await this[_0x5a0d90(0xea)]();return{'validators':_0x36f2a3,'recommendations':this[_0x5a0d90(0x13f)](_0x36f2a3)};}[a0_0x39853d(0x13f)](_0x1c25b7){const _0x174679=a0_0x39853d,_0x3d949d=[];return!_0x1c25b7['checkov']&&_0x3d949d['push']({'validator':_0x174679(0xf1),'reason':'Infrastructure\x20as\x20Code\x20security\x20scanning\x20(Docker,\x20Kubernetes,\x20Terraform)','install':'pip\x20install\x20checkov','priority':_0x174679(0x107)}),!_0x1c25b7['hadolint']&&_0x3d949d[_0x174679(0x13b)]({'validator':_0x174679(0x118),'reason':_0x174679(0xeb),'install':'Download from https://github.com/hadolint/hadolint/releases','priority':_0x174679(0x107)}),!_0x1c25b7[_0x174679(0x10d)]&&_0x3d949d[_0x174679(0x13b)]({'validator':'yamllint','reason':_0x174679(0xed),'install':'pip\x20install\x20yamllint','priority':'medium'}),!_0x1c25b7[_0x174679(0xf2)]&&_0x3d949d[_0x174679(0x13b)]({'validator':_0x174679(0x10a),'reason':_0x174679(0x117),'install':'npm\x20install\x20ajv\x20ajv-formats','priority':_0x174679(0xe3)}),_0x3d949d;}}export default ConfigValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a0_0x6982(_0x394368,_0x26e8d3){_0x394368=_0x394368-0x8d;const _0x5ebf8d=a0_0x5ebf();let _0x698209=_0x5ebf8d[_0x394368];if(a0_0x6982['YPnrGn']===undefined){var _0x4fa2b5=function(_0x4ee91e){const _0x31ff56='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5c3d49='',_0x5c15eb='';for(let _0x84c088=0x0,_0x416f21,_0x5c0a02,_0x3e77e5=0x0;_0x5c0a02=_0x4ee91e['charAt'](_0x3e77e5++);~_0x5c0a02&&(_0x416f21=_0x84c088%0x4?_0x416f21*0x40+_0x5c0a02:_0x5c0a02,_0x84c088++%0x4)?_0x5c3d49+=String['fromCharCode'](0xff&_0x416f21>>(-0x2*_0x84c088&0x6)):0x0){_0x5c0a02=_0x31ff56['indexOf'](_0x5c0a02);}for(let _0x131aaa=0x0,_0x1e7583=_0x5c3d49['length'];_0x131aaa<_0x1e7583;_0x131aaa++){_0x5c15eb+='%'+('00'+_0x5c3d49['charCodeAt'](_0x131aaa)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5c15eb);};a0_0x6982['ZADooZ']=_0x4fa2b5,a0_0x6982['sVigVA']={},a0_0x6982['YPnrGn']=!![];}const _0x444a3f=_0x5ebf8d[0x0],_0x260e2d=_0x394368+_0x444a3f,_0x149cc6=a0_0x6982['sVigVA'][_0x260e2d];return!_0x149cc6?(_0x698209=a0_0x6982['ZADooZ'](_0x698209),a0_0x6982['sVigVA'][_0x260e2d]=_0x698209):_0x698209=_0x149cc6,_0x698209;}function a0_0x5ebf(){const _0x1603da=['nM1tvLHlqW','zM9YBwf0twvZC2fNzq','su1qt1ju','nda4nZe0D09ps2ny','u1rzteu','C2vJDxjPDhK','lMPZEa','C3vWCg9YDhnbDxrVrML4','BM8TDMfY','ndaZnZuZmhz5r3PjDG','ovPkzxrwAa','q0furuDpuLK','zxjYB3i','CNvSzuLK','B2zM','rM91BMqGrvnmAw50ignVBMzPzW','otG5mJKYt2vSsgX3','rvnmAw50igfUywX5C2LZignVBxbSzxrLza','D2fYBMLUz0nVDw50','zxnSAw50q2fJAgu','y2f0zwDVCML6zvj1Bgu','CgfYC2vYt3b0Aw9UCW','Bg9Nz2vY','Aw5JBhvKzxm','mtu5ntK1nM1sy2r5ta','v0fstKLorW','Bgf0zxn0','D2fYBG','zML4ywjSzvDHCM5PBMDdB3vUDa','u0vdvvjjvfK','zxnSAw50','rvjst1i','zML4ywjSzuvYCM9Yq291BNq','qKvtvf9quKfdveLdrq','rvnmAw50igfUywX5C2LZigzHAwXLza','ywX3yxLZ','mJiYmJK3nMzPvhLhqG','uevsrK9stufoq0u','zxjYB3jdB3vUDa','zxnSAw50lMnVBMzPzY5QCW','zgvIDwC','BgLUDfrLEhq','lMnQCW','zxH0zw5KCW','BM8TDw51C2vKlxzHCNm','CgvYzM9YBwfUy2u','zxnSAw50oNjLy29TBwvUzgvK','zgvZy3jPyMvdAgfUz2vZ','mtztu2HsrLq','Bwf4','BwvZC2fNzxm','C2v2zxjPDhK','zwnTyuzLyxr1CMvZ','BwvZC2fNzq','z2v0rvnmAw50q29UzMLN','z2v0u3vWCg9YDgvKrxH0zw5ZAw9UCW','lM1QCW','BgLUzq','y29SDw1U','u0vwrvjjvfK','mte4odm2nLvMz3DLDa','Bw9KDwXL','yMvZDc1WCMfJDgLJzxm','BgvUz3rO','lMvZBgLUDhjJlMPZ','ChvZAa','Bw9KAwzPzwq','mtq2odqZmgTwzxvcrG','z2v0rvnmAw50sw5ZDgfUy2u','B3v0Chv0','C3bSAxq'];a0_0x5ebf=function(){return _0x1603da;};return a0_0x5ebf();}const a0_0x33902e=a0_0x6982;(function(_0x38478d,_0x10ec11){const _0x2885c8=a0_0x6982,_0x15cb8c=_0x38478d();while(!![]){try{const _0x5e9c5=-parseInt(_0x2885c8(0x93))/0x1+-parseInt(_0x2885c8(0xa0))/0x2+parseInt(_0x2885c8(0xcc))/0x3+parseInt(_0x2885c8(0xa8))/0x4+-parseInt(_0x2885c8(0xd3))/0x5*(parseInt(_0x2885c8(0x90))/0x6)+-parseInt(_0x2885c8(0xb4))/0x7*(-parseInt(_0x2885c8(0xc0))/0x8)+-parseInt(_0x2885c8(0x9a))/0x9*(-parseInt(_0x2885c8(0x99))/0xa);if(_0x5e9c5===_0x10ec11)break;else _0x15cb8c['push'](_0x15cb8c['shift']());}catch(_0x3c2354){_0x15cb8c['push'](_0x15cb8c['shift']());}}}(a0_0x5ebf,0x9b81a));import{ESLint}from'eslint';import a0_0x5c3d49 from'path';import a0_0x5c15eb from'fs/promises';import{STATIC_ANALYSIS}from'../utilities/constants.js';class ESLintAnalyzer{constructor(_0x84c088=null){const _0x4533ee=a0_0x6982;this[_0x4533ee(0xa6)]=_0x84c088,this[_0x4533ee(0xa3)]=new Map();}async['analyze'](_0x416f21,_0x5c0a02,_0x3e77e5={}){const _0x59cbae=a0_0x6982;try{const _0x131aaa=await this[_0x59cbae(0x8d)](_0x3e77e5),_0x1e7583=await _0x131aaa['lintText'](_0x5c0a02,{'filePath':_0x416f21,'warnIgnored':![]}),_0x3be070=[];if(_0x1e7583&&_0x1e7583[_0x59cbae(0xcf)]>0x0){const _0x6098a1=_0x1e7583[0x0];for(const _0x5521cc of _0x6098a1[_0x59cbae(0xc2)]){_0x3be070[_0x59cbae(0xd1)](this['formatMessage'](_0x5521cc,_0x416f21));}}return this[_0x59cbae(0xa6)]?.['debug'](_0x59cbae(0xa1),{'file':_0x416f21,'totalDiagnostics':_0x3be070['length'],'errors':_0x3be070['filter'](_0x4057ee=>_0x4057ee[_0x59cbae(0xc3)]===STATIC_ANALYSIS[_0x59cbae(0xcb)]['ERROR'])['length'],'warnings':_0x3be070['filter'](_0x36f5ea=>_0x36f5ea['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x3be070;}catch(_0x1fe3be){return this[_0x59cbae(0xa6)]?.[_0x59cbae(0x9c)](_0x59cbae(0xb2),{'file':_0x416f21,'error':_0x1fe3be['message']}),[];}}async['fix'](_0x481e9b,_0x19c8a7,_0xe22627={}){const _0x1f8234=a0_0x6982;try{const _0x290d6b=await this[_0x1f8234(0x8d)]({..._0xe22627,'fix':!![]}),_0xb8a1d6=await _0x290d6b[_0x1f8234(0xb9)](_0x19c8a7,{'filePath':_0x481e9b,'warnIgnored':![]});if(_0xb8a1d6&&_0xb8a1d6['length']>0x0){const _0x14ad0f=_0xb8a1d6[0x0];return{'fixed':_0x14ad0f['output']!==undefined,'content':_0x14ad0f[_0x1f8234(0x8e)]||_0x19c8a7,'fixedCount':_0x14ad0f['fixableErrorCount']+_0x14ad0f[_0x1f8234(0xac)],'remainingErrors':_0x14ad0f[_0x1f8234(0xb6)]-_0x14ad0f[_0x1f8234(0xb0)],'remainingWarnings':_0x14ad0f[_0x1f8234(0xa2)]-_0x14ad0f['fixableWarningCount'],'changes':_0x14ad0f[_0x1f8234(0x8e)]?this[_0x1f8234(0xbf)](_0x19c8a7,_0x14ad0f[_0x1f8234(0x8e)]):[]};}return{'fixed':![],'content':_0x19c8a7,'fixedCount':0x0,'remainingErrors':0x0,'remainingWarnings':0x0,'changes':[]};}catch(_0x1dcba4){this['logger']?.[_0x1f8234(0x9c)]('ESLint\x20fix\x20failed',{'file':_0x481e9b,'error':_0x1dcba4[_0x1f8234(0xc5)]});throw new Error('ESLint\x20fix\x20failed:\x20'+_0x1dcba4['message']);}}async['getESLintInstance'](_0x53bf82={}){const {workingDir:_0x3fb552,fix:fix=![],framework:_0x4dd3bf}=_0x53bf82,_0x2d150f=await this['getESLintConfig'](_0x3fb552,_0x4dd3bf),_0x10dbe3=new ESLint({'fix':fix,'useEslintrc':!![],'overrideConfig':_0x2d150f,'errorOnUnmatchedPattern':![]});return _0x10dbe3;}async[a0_0x33902e(0xc6)](_0x4e1c2e,_0x4d8727){const _0x32b21a=a0_0x33902e,_0x4406bf={'env':{'browser':!![],'es2021':!![],'node':!![]},'parserOptions':{'ecmaVersion':_0x32b21a(0xaa),'sourceType':_0x32b21a(0xcd)},'rules':{'no-unused-vars':_0x32b21a(0xab),'no-undef':'error','no-console':_0x32b21a(0x9e),'semi':['warn',_0x32b21a(0xb3)],'quotes':[_0x32b21a(0xab),'single',{'avoidEscape':!![]}]}};if(_0x4d8727==='react')_0x4406bf[_0x32b21a(0xbb)]=['eslint:recommended'],_0x4406bf[_0x32b21a(0xa5)][_0x32b21a(0xc4)]={'jsx':!![]},_0x4406bf['settings']={'react':{'version':'detect'}};else _0x4d8727==='vue'?_0x4406bf[_0x32b21a(0xbb)]=['eslint:recommended']:_0x4406bf[_0x32b21a(0xbb)]=[_0x32b21a(0xbe)];if(_0x4e1c2e){const _0xa260eb=[_0x32b21a(0xd0),'.eslintrc.cjs','.eslintrc.json',_0x32b21a(0xb7)];for(const _0x4d5362 of _0xa260eb){try{const _0x4d8ebc=a0_0x5c3d49['join'](_0x4e1c2e,_0x4d5362);return await a0_0x5c15eb['access'](_0x4d8ebc),this['logger']?.[_0x32b21a(0xb8)](_0x32b21a(0x9f),{'configFile':_0x4d5362}),{};}catch{}}}return _0x4406bf;}[a0_0x33902e(0x91)](_0x4f4b7e,_0x5705d7){const _0x4772ba=a0_0x33902e;return{'file':_0x5705d7,'line':_0x4f4b7e[_0x4772ba(0xc9)]||0x1,'column':_0x4f4b7e[_0x4772ba(0xca)]||0x1,'endLine':_0x4f4b7e['endLine'],'endColumn':_0x4f4b7e['endColumn'],'severity':_0x4f4b7e['severity']===0x2?STATIC_ANALYSIS['SEVERITY'][_0x4772ba(0xaf)]:STATIC_ANALYSIS[_0x4772ba(0xcb)][_0x4772ba(0xa9)],'rule':_0x4f4b7e['ruleId']||'eslint','message':_0x4f4b7e[_0x4772ba(0xc5)],'category':this[_0x4772ba(0xa4)](_0x4f4b7e[_0x4772ba(0x9d)]),'fixable':_0x4f4b7e['fix']!==undefined,'source':_0x4772ba(0xae)};}['categorizeRule'](_0x2256d3){const _0x203c02=a0_0x33902e;if(!_0x2256d3)return STATIC_ANALYSIS[_0x203c02(0x9b)][_0x203c02(0x94)];if(_0x2256d3['includes'](_0x203c02(0x95))||_0x2256d3['includes']('xss')||_0x2256d3==='no-eval'||_0x2256d3==='no-implied-eval')return STATIC_ANALYSIS[_0x203c02(0x9b)][_0x203c02(0xad)];if(_0x2256d3[_0x203c02(0xa7)](_0x203c02(0xbd))||_0x2256d3==='no-await-in-loop'||_0x2256d3==='prefer-promise-reject-errors')return STATIC_ANALYSIS['CATEGORY'][_0x203c02(0xb5)];if(_0x2256d3['includes']('import')||_0x2256d3==='no-undef')return STATIC_ANALYSIS[_0x203c02(0x9b)][_0x203c02(0x92)];if(_0x2256d3['includes'](_0x203c02(0xce))||_0x2256d3===_0x203c02(0xbc)||_0x2256d3==='no-unreachable'||_0x2256d3===_0x203c02(0x98))return STATIC_ANALYSIS[_0x203c02(0x9b)][_0x203c02(0xb1)];return STATIC_ANALYSIS['CATEGORY']['STYLE'];}[a0_0x33902e(0xbf)](_0x22baa3,_0x298a2c){const _0x382b61=a0_0x33902e,_0x4cf255=[],_0xd75c96=_0x22baa3['split']('\x0a'),_0x177977=_0x298a2c[_0x382b61(0x8f)]('\x0a'),_0x1cdfab=Math[_0x382b61(0xc1)](_0xd75c96['length'],_0x177977['length']);for(let _0x365754=0x0;_0x365754<_0x1cdfab;_0x365754++){const _0x1b9c62=_0xd75c96[_0x365754]||'',_0xd13fb1=_0x177977[_0x365754]||'';_0x1b9c62!==_0xd13fb1&&_0x4cf255['push']({'line':_0x365754+0x1,'type':_0x1b9c62&&_0xd13fb1?_0x382b61(0xd2):_0x1b9c62?'removed':'added','original':_0x1b9c62,'fixed':_0xd13fb1});}return _0x4cf255;}[a0_0x33902e(0xc7)](){const _0x3146e7=a0_0x33902e;return['.js',_0x3146e7(0x96),_0x3146e7(0xc8),_0x3146e7(0xba)];}[a0_0x33902e(0x97)](){return!![];}}export default ESLintAnalyzer;
|