@loxia-labs/loxia-autopilot-one 1.9.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +6 -5
- package/scripts/install-scanners.js +1 -1
- package/scripts/watchdog.js +1 -1
- package/src/analyzers/CSSAnalyzer.js +1 -1
- package/src/analyzers/ConfigValidator.js +1 -1
- package/src/analyzers/ESLintAnalyzer.js +1 -1
- package/src/analyzers/JavaScriptAnalyzer.js +1 -1
- package/src/analyzers/PrettierFormatter.js +1 -1
- package/src/analyzers/PythonAnalyzer.js +1 -1
- package/src/analyzers/SecurityAnalyzer.js +1 -1
- package/src/analyzers/SparrowAnalyzer.js +1 -1
- package/src/analyzers/TypeScriptAnalyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
- package/src/analyzers/codeCloneDetector/detector.js +1 -1
- package/src/analyzers/codeCloneDetector/index.js +1 -1
- package/src/analyzers/codeCloneDetector/parser.js +1 -1
- package/src/analyzers/codeCloneDetector/reporter.js +1 -1
- package/src/analyzers/codeCloneDetector/scanner.js +1 -1
- package/src/core/agentPool.js +1 -1
- package/src/core/agentScheduler.js +1 -1
- package/src/core/contextManager.js +1 -1
- package/src/core/flowExecutor.js +1 -1
- package/src/core/messageProcessor.js +1 -1
- package/src/core/orchestrator.js +1 -1
- package/src/core/stateManager.js +1 -1
- package/src/index.js +1 -1
- package/src/interfaces/cli.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
- package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
- package/src/interfaces/terminal/api/apiClient.js +1 -1
- package/src/interfaces/terminal/api/messageRouter.js +1 -1
- package/src/interfaces/terminal/api/session.js +1 -1
- package/src/interfaces/terminal/api/websocket.js +1 -1
- package/src/interfaces/terminal/components/AgentCreator.js +1 -1
- package/src/interfaces/terminal/components/AgentEditor.js +1 -1
- package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
- package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
- package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
- package/src/interfaces/terminal/components/Header.js +1 -1
- package/src/interfaces/terminal/components/HelpPanel.js +1 -1
- package/src/interfaces/terminal/components/InputBox.js +1 -1
- package/src/interfaces/terminal/components/Layout.js +1 -1
- package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
- package/src/interfaces/terminal/components/MessageList.js +1 -1
- package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
- package/src/interfaces/terminal/components/SearchPanel.js +1 -1
- package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
- package/src/interfaces/terminal/components/StatusBar.js +1 -1
- package/src/interfaces/terminal/components/TextInput.js +1 -1
- package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
- package/src/interfaces/terminal/config/constants.js +1 -1
- package/src/interfaces/terminal/index.js +1 -1
- package/src/interfaces/terminal/state/useAgentControl.js +1 -1
- package/src/interfaces/terminal/state/useAgents.js +1 -1
- package/src/interfaces/terminal/state/useConnection.js +1 -1
- package/src/interfaces/terminal/state/useMessages.js +1 -1
- package/src/interfaces/terminal/state/useTools.js +1 -1
- package/src/interfaces/terminal/utils/debugLogger.js +1 -1
- package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
- package/src/interfaces/terminal/utils/theme.js +1 -1
- package/src/interfaces/webServer.js +1 -1
- package/src/modules/fileExplorer/controller.js +1 -1
- package/src/modules/fileExplorer/index.js +1 -1
- package/src/modules/fileExplorer/middleware.js +1 -1
- package/src/modules/fileExplorer/routes.js +1 -1
- package/src/services/agentActivityService.js +1 -1
- package/src/services/aiService.js +1 -1
- package/src/services/apiKeyManager.js +1 -1
- package/src/services/benchmarkService.js +1 -1
- package/src/services/budgetService.js +1 -1
- package/src/services/contextInjectionService.js +1 -1
- package/src/services/conversationCompactionService.js +1 -1
- package/src/services/credentialVault.js +1 -1
- package/src/services/errorHandler.js +1 -1
- package/src/services/fileAttachmentService.js +1 -1
- package/src/services/flowContextService.js +1 -1
- package/src/services/memoryService.js +1 -1
- package/src/services/modelRouterService.js +1 -1
- package/src/services/modelsService.js +1 -1
- package/src/services/portRegistry.js +1 -1
- package/src/services/portTracker.js +1 -1
- package/src/services/projectDetector.js +1 -1
- package/src/services/promptService.js +1 -1
- package/src/services/qualityInspector.js +1 -1
- package/src/services/serviceRegistry.js +1 -1
- package/src/services/tokenCountingService.js +1 -1
- package/src/services/visualEditorBridge.js +1 -1
- package/src/services/visualEditorServer.js +1 -1
- package/src/tools/agentCommunicationTool.js +1 -1
- package/src/tools/agentDelayTool.js +1 -1
- package/src/tools/asyncToolManager.js +1 -1
- package/src/tools/baseTool.js +1 -1
- package/src/tools/browserTool.js +1 -1
- package/src/tools/cloneDetectionTool.js +1 -1
- package/src/tools/dependencyResolverTool.js +1 -1
- package/src/tools/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/memoryTool.js +1 -1
- package/src/tools/pdfTool.js +1 -1
- package/src/tools/seekTool.js +1 -1
- package/src/tools/staticAnalysisTool.js +1 -1
- package/src/tools/taskManagerTool.js +1 -1
- package/src/tools/terminalTool.js +1 -1
- package/src/tools/userPromptTool.js +1 -1
- package/src/tools/videoTool.js +1 -1
- package/src/tools/visualEditorTool.js +1 -1
- package/src/tools/webTool.js +1 -1
- package/src/types/agent.js +1 -1
- package/src/types/contextReference.js +1 -1
- package/src/types/conversation.js +1 -1
- package/src/types/toolCommand.js +1 -1
- package/src/utilities/attachmentValidator.js +1 -1
- package/src/utilities/browserStealth.js +1 -1
- package/src/utilities/configManager.js +1 -1
- package/src/utilities/constants.js +1 -1
- package/src/utilities/directoryAccessManager.js +1 -1
- package/src/utilities/fileProcessor.js +1 -1
- package/src/utilities/humanBehavior.js +1 -1
- package/src/utilities/jsonRepair.js +1 -1
- package/src/utilities/logger.js +1 -1
- package/src/utilities/platformUtils.js +1 -1
- package/src/utilities/platformUtils.test.js +1 -1
- package/src/utilities/stealthConstants.js +1 -1
- package/src/utilities/structuredFileValidator.js +1 -1
- package/src/utilities/tagParser.js +1 -1
- package/src/utilities/toolConstants.js +1 -1
- package/src/utilities/userDataDir.js +1 -1
- package/web-ui/build/index.html +1 -1
- package/web-ui/build/static/{index-gjdnhEg2.js → index-CbQvXGHE.js} +3 -3
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
|
|
102
|
+
# Should display: Loxia Autopilot One v2.0.0
|
|
103
103
|
```
|
|
104
104
|
|
|
105
105
|
### 4. Create an API Key
|
|
@@ -372,7 +372,7 @@ Loxia automatically compacts long conversations to stay within token limits:
|
|
|
372
372
|
|
|
373
373
|
## 🛣️ Roadmap
|
|
374
374
|
|
|
375
|
-
### Current Version (
|
|
375
|
+
### Current Version (2.0.0)
|
|
376
376
|
|
|
377
377
|
- ✅ **Teams** - Organize agents into named teams with drag-and-drop
|
|
378
378
|
- ✅ **Agent duplication** - Clone agents with full configuration and optional conversation history
|
package/bin/cli.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const a0_0x23c4a1=a0_0x11b5;(function(_0x5c98f4,_0x4019bc){const _0x478f34=a0_0x11b5,_0x5091a7=_0x5c98f4();while(!![]){try{const _0x563123=parseInt(_0x478f34(0x1df))/0x1*(-parseInt(_0x478f34(0x1d4))/0x2)+parseInt(_0x478f34(0x1ff))/0x3+parseInt(_0x478f34(0x1b9))/0x4+parseInt(_0x478f34(0x1cb))/0x5*(parseInt(_0x478f34(0x1c9))/0x6)+parseInt(_0x478f34(0x1e6))/0x7*(-parseInt(_0x478f34(0x1d9))/0x8)+parseInt(_0x478f34(0x1d3))/0x9*(-parseInt(_0x478f34(0x1ca))/0xa)+parseInt(_0x478f34(0x1ec))/0xb;if(_0x563123===_0x4019bc)break;else _0x5091a7['push'](_0x5091a7['shift']());}catch(_0x2aefd4){_0x5091a7['push'](_0x5091a7['shift']());}}}(a0_0x42a7,0xcfa10));function a0_0x11b5(_0x1f5b88,_0x38bf50){_0x1f5b88=_0x1f5b88-0x1b8;const _0x42a7c4=a0_0x42a7();let _0x11b559=_0x42a7c4[_0x1f5b88];return _0x11b559;}import{fileURLToPath}from'url';function a0_0x42a7(){const _0x33c5d4=['\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','parse','\x0aServer\x20registered\x20at\x20','message','4767ENdqyX','Could\x20not\x20open\x20browser\x20automatically.','now','pid','ignore','Waiting\x20for\x20server\x20to\x20start...','34386715CvSZLy','LOXIA_PORT','host','utf8',')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a','log','\x20but\x20not\x20responding.','version','help','win32','\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','cmd','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','destroy','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','startsWith','inherit','src','1440558JRNuDe','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.','--help','setTimeout','package.json','platform','darwin','toString','Please\x20open\x20manually:\x20','web','Error:','\x20\x20API\x20Health:\x20\x20\x20','slice','Starting\x20Loxia\x20server\x20in\x20background...','Starting\x20Loxia\x20server...\x0a','getService','--version','5616220uDFfKI','includes','get','\x0a✓\x20Server\x20running\x20at\x20',')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20','ceil','exit','http://','SIGTERM','kill','backend','LOXIA_HOST','open','Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.','../src/services/portRegistry.js','\x0aPlease\x20start\x20the\x20server\x20first:','2364yUvfoc','1404860tulNiS','290GOypFt','\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.','unref','xdg-open','localhost','Server\x20discovered\x20at\x20','SIGINT','Loxia\x20Autopilot\x20One\x20v','99ZJAYTo','2cHhJHM','node','argv','/api/health\x0a','/api/health','19168MLrHhs','\x0aOpening\x20Web\x20UI\x20at\x20','error','--host','port','loxia-terminal.js','1005688ACEEUr','index.js','PORT'];a0_0x42a7=function(){return _0x33c5d4;};return a0_0x42a7();}import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x54ead5 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST='127.0.0.1',SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x23c4a1(0x1d6)][a0_0x23c4a1(0x20c)](0x2),command=args[0x0]&&!args[0x0][a0_0x23c4a1(0x1fc)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x23c4a1(0x1ba)](a0_0x23c4a1(0x202))||args[a0_0x23c4a1(0x1ba)]('-h'),'version':args['includes'](a0_0x23c4a1(0x1b8))||args['includes']('-v')};for(let i=0x0;i<args['length'];i++){args[i]==='--port'&&args[i+0x1]&&(flags['port']=parseInt(args[i+0x1],0xa)),args[i]===a0_0x23c4a1(0x1dc)&&args[i+0x1]&&(flags[a0_0x23c4a1(0x1ee)]=args[i+0x1]);}const explicitPort=flags[a0_0x23c4a1(0x1dd)],host=flags[a0_0x23c4a1(0x1ee)]||DEFAULT_HOST;if(flags['version']){const pkgPath=join(__dirname,'..','package.json'),pkg=JSON[a0_0x23c4a1(0x1e3)](readFileSync(pkgPath,a0_0x23c4a1(0x1ef)));console[a0_0x23c4a1(0x1f1)](a0_0x23c4a1(0x1d2)+pkg[a0_0x23c4a1(0x1f3)]),process['exit'](0x0);}if(flags[a0_0x23c4a1(0x1f4)]||!command){const pkgPath=join(__dirname,'..',a0_0x23c4a1(0x204)),pkg=JSON[a0_0x23c4a1(0x1e3)](readFileSync(pkgPath,a0_0x23c4a1(0x1ef)));console['log']('\x0aLoxia\x20Autopilot\x20One\x20v'+pkg['version']+a0_0x23c4a1(0x1f6)+DEFAULT_PORT+a0_0x23c4a1(0x1bd)+DEFAULT_HOST+a0_0x23c4a1(0x1f0)),process['exit'](0x0);}async function getPortRegistry(){const _0x132bb6=a0_0x23c4a1,{getPortRegistry:_0x2bd7e6}=await import(_0x132bb6(0x1c7));return _0x2bd7e6();}async function discoverBackend(){const _0x3ebcfa=a0_0x23c4a1;try{const _0x4f40e0=await getPortRegistry();await _0x4f40e0['cleanupStaleEntries']();const _0x53ad5d=await _0x4f40e0[_0x3ebcfa(0x20f)](_0x3ebcfa(0x1c3));if(_0x53ad5d)return{'host':_0x53ad5d[_0x3ebcfa(0x1ee)]||_0x3ebcfa(0x1cf),'port':_0x53ad5d[_0x3ebcfa(0x1dd)],'pid':_0x53ad5d[_0x3ebcfa(0x1e9)]};return null;}catch(_0x29472d){return null;}}async function checkServerRunning(_0x2e9f79,_0x261089,_0x2b197e=0x1){for(let _0x3aed68=0x0;_0x3aed68<_0x2b197e;_0x3aed68++){const _0x378920=await new Promise(_0x2c0bea=>{const _0x2026ab=a0_0x11b5,_0x18e9ed=a0_0x54ead5[_0x2026ab(0x1bb)](_0x2026ab(0x1c0)+_0x2e9f79+':'+_0x261089+_0x2026ab(0x1d8),_0x202f9a=>{_0x2c0bea(_0x202f9a['statusCode']===0xc8);});_0x18e9ed['on'](_0x2026ab(0x1db),()=>_0x2c0bea(![])),_0x18e9ed[_0x2026ab(0x203)](0x7d0,()=>{const _0x3d262b=_0x2026ab;_0x18e9ed[_0x3d262b(0x1fa)](),_0x2c0bea(![]);});});if(_0x378920)return!![];_0x3aed68<_0x2b197e-0x1&&await new Promise(_0x8fb1be=>setTimeout(_0x8fb1be,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0x296682=SERVER_STARTUP_TIMEOUT){const _0x443ac3=a0_0x23c4a1,_0x324f61=Date[_0x443ac3(0x1e8)]();while(Date[_0x443ac3(0x1e8)]()-_0x324f61<_0x296682){const _0x5aee42=await discoverBackend();if(_0x5aee42){const _0x46016e=await checkServerRunning(_0x5aee42[_0x443ac3(0x1ee)],_0x5aee42[_0x443ac3(0x1dd)]);if(_0x46016e)return _0x5aee42;}await new Promise(_0x40e1e4=>setTimeout(_0x40e1e4,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x5362a6,_0x212e10,_0x34f628=SERVER_STARTUP_TIMEOUT){const _0x587030=a0_0x23c4a1,_0x4c50c1=Math[_0x587030(0x1be)](_0x34f628/SERVER_CHECK_INTERVAL),_0x1ecefc=await checkServerRunning(_0x5362a6,_0x212e10,_0x4c50c1);return _0x1ecefc?{'host':_0x5362a6,'port':_0x212e10}:null;}function openBrowser(_0x3b6c43){const _0x19dc14=a0_0x23c4a1;let _0x3f5081,_0x34f161;if(process[_0x19dc14(0x205)]===_0x19dc14(0x206))_0x3f5081=_0x19dc14(0x1c5),_0x34f161=[_0x3b6c43];else process['platform']===_0x19dc14(0x1f5)?(_0x3f5081=_0x19dc14(0x1f8),_0x34f161=['/c','start','\x22\x22',_0x3b6c43]):(_0x3f5081=_0x19dc14(0x1ce),_0x34f161=[_0x3b6c43]);const _0xd042bb=spawn(_0x3f5081,_0x34f161,{'detached':!![],'stdio':_0x19dc14(0x1ea)});_0xd042bb[_0x19dc14(0x1cd)](),_0xd042bb['on'](_0x19dc14(0x1db),()=>{const _0x159511=_0x19dc14;console[_0x159511(0x1f1)](_0x159511(0x1e7)),console[_0x159511(0x1f1)](_0x159511(0x208)+_0x3b6c43);});}function startServer(_0x2c405d=![]){const _0x15b896=a0_0x23c4a1,_0xf8bef6={...process.env};explicitPort&&(_0xf8bef6[_0x15b896(0x1ed)]=explicitPort[_0x15b896(0x207)](),_0xf8bef6[_0x15b896(0x1e1)]=explicitPort[_0x15b896(0x207)]());flags[_0x15b896(0x1ee)]&&(_0xf8bef6[_0x15b896(0x1c4)]=flags[_0x15b896(0x1ee)]);const _0x9aa3d8=join(__dirname,'..',_0x15b896(0x1fe),_0x15b896(0x1e0)),_0x45f3e5=spawn(_0x15b896(0x1d5),[_0x9aa3d8],{'cwd':join(__dirname,'..'),'env':_0xf8bef6,'stdio':_0x2c405d?[_0x15b896(0x1ea),_0x15b896(0x1ea),_0x15b896(0x1ea)]:'inherit','detached':_0x2c405d});return _0x2c405d&&_0x45f3e5['unref'](),_0x45f3e5;}function startTerminalUIProcess(_0x810c5f,_0x19751f){const _0x160b9e=a0_0x23c4a1,_0x42df37=join(__dirname,_0x160b9e(0x1de)),_0xef34c0={...process.env,'LOXIA_PORT':_0x19751f[_0x160b9e(0x207)](),'LOXIA_HOST':_0x810c5f},_0x327ae1=spawn(_0x160b9e(0x1d5),[_0x42df37],{'cwd':join(__dirname,'..'),'env':_0xef34c0,'stdio':_0x160b9e(0x1fd)});return _0x327ae1;}const commands={'web':async()=>{const _0x953786=a0_0x23c4a1;console[_0x953786(0x1f1)]('Starting\x20Loxia\x20server...\x0a');const _0x44a8e6=startServer(![]);console[_0x953786(0x1f1)](_0x953786(0x1eb));let _0x214f90;explicitPort?_0x214f90=await waitForServerAtPort(host,explicitPort):_0x214f90=await waitForServerWithDiscovery();if(_0x214f90){const _0x4c945f=_0x953786(0x1c0)+_0x214f90[_0x953786(0x1ee)]+':'+_0x214f90[_0x953786(0x1dd)];console[_0x953786(0x1f1)](_0x953786(0x1da)+_0x4c945f),openBrowser(_0x4c945f);}else console[_0x953786(0x1f1)]('\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.');process['on']('SIGINT',()=>_0x44a8e6[_0x953786(0x1c2)](_0x953786(0x1d1))),process['on'](_0x953786(0x1c1),()=>_0x44a8e6['kill'](_0x953786(0x1c1))),_0x44a8e6['on'](_0x953786(0x1bf),_0xeb35f7=>process[_0x953786(0x1bf)](_0xeb35f7||0x0));},'plus-web':async()=>{const _0x54b1c0=a0_0x23c4a1;await commands[_0x54b1c0(0x209)]();},'serve':async()=>{const _0x516ad8=a0_0x23c4a1;console[_0x516ad8(0x1f1)](_0x516ad8(0x20e));const _0xfe1a42=startServer(![]);console[_0x516ad8(0x1f1)](_0x516ad8(0x1eb));let _0x4dca31;explicitPort?_0x4dca31=await waitForServerAtPort(host,explicitPort):_0x4dca31=await waitForServerWithDiscovery();if(_0x4dca31){const _0x108521=_0x516ad8(0x1c0)+_0x4dca31[_0x516ad8(0x1ee)]+':'+_0x4dca31['port'];console[_0x516ad8(0x1f1)](_0x516ad8(0x1bc)+_0x108521),console[_0x516ad8(0x1f1)]('\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'+_0x108521),console[_0x516ad8(0x1f1)](_0x516ad8(0x1f7)),console['log'](_0x516ad8(0x20b)+_0x108521+_0x516ad8(0x1d7));}else console[_0x516ad8(0x1f1)]('\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.'),console['log'](_0x516ad8(0x1f9));process['on']('SIGINT',()=>_0xfe1a42[_0x516ad8(0x1c2)](_0x516ad8(0x1d1))),process['on']('SIGTERM',()=>_0xfe1a42['kill']('SIGTERM')),_0xfe1a42['on']('exit',_0x3e6c5c=>process[_0x516ad8(0x1bf)](_0x3e6c5c||0x0));},'terminal':async()=>{const _0x5a400a=a0_0x23c4a1;console[_0x5a400a(0x1f1)]('Looking\x20for\x20running\x20server...');let _0x3a4e5a=await discoverBackend();explicitPort&&(_0x3a4e5a={'host':host,'port':explicitPort});!_0x3a4e5a&&(console[_0x5a400a(0x1db)](_0x5a400a(0x1cc)),console[_0x5a400a(0x1db)](_0x5a400a(0x1c8)),console['error']('\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI'),console[_0x5a400a(0x1db)](_0x5a400a(0x1e2)),console[_0x5a400a(0x1db)](_0x5a400a(0x200)),process[_0x5a400a(0x1bf)](0x1));const _0x201bd3=await checkServerRunning(_0x3a4e5a[_0x5a400a(0x1ee)],_0x3a4e5a[_0x5a400a(0x1dd)]);!_0x201bd3&&(console['error'](_0x5a400a(0x1e4)+_0x3a4e5a['host']+':'+_0x3a4e5a[_0x5a400a(0x1dd)]+_0x5a400a(0x1f2)),console['error'](_0x5a400a(0x1fb)),process[_0x5a400a(0x1bf)](0x1));console['log'](_0x5a400a(0x1d0)+_0x3a4e5a[_0x5a400a(0x1ee)]+':'+_0x3a4e5a[_0x5a400a(0x1dd)]),console[_0x5a400a(0x1f1)]('Starting\x20Terminal\x20UI...\x0a');const _0x501afe=startTerminalUIProcess(_0x3a4e5a[_0x5a400a(0x1ee)],_0x3a4e5a[_0x5a400a(0x1dd)]);process['on']('SIGINT',()=>_0x501afe['kill'](_0x5a400a(0x1d1))),process['on'](_0x5a400a(0x1c1),()=>_0x501afe['kill'](_0x5a400a(0x1c1))),_0x501afe['on'](_0x5a400a(0x1bf),_0x2039fe=>process[_0x5a400a(0x1bf)](_0x2039fe||0x0));},'plus-terminal':async()=>{const _0x125ceb=a0_0x23c4a1;console[_0x125ceb(0x1f1)](_0x125ceb(0x20d));const _0x4a3b00=startServer(!![]);let _0xaaf08f;explicitPort?_0xaaf08f=await waitForServerAtPort(host,explicitPort):_0xaaf08f=await waitForServerWithDiscovery();!_0xaaf08f&&(console[_0x125ceb(0x1db)](_0x125ceb(0x201)),process[_0x125ceb(0x1bf)](0x1));console['log']('Server\x20running\x20at\x20http://'+_0xaaf08f[_0x125ceb(0x1ee)]+':'+_0xaaf08f[_0x125ceb(0x1dd)]),console['log']('Starting\x20Terminal\x20UI...\x0a');const _0x4bb328=startTerminalUIProcess(_0xaaf08f['host'],_0xaaf08f[_0x125ceb(0x1dd)]);_0x4bb328['on']('exit',_0x41d2f1=>{const _0xed73b0=_0x125ceb;console[_0xed73b0(0x1f1)]('\x0aShutting\x20down\x20server...');try{process[_0xed73b0(0x1c2)](_0x4a3b00['pid'],'SIGTERM');}catch(_0x394161){}process[_0xed73b0(0x1bf)](_0x41d2f1||0x0);}),process['on'](_0x125ceb(0x1d1),()=>{const _0x259d04=_0x125ceb;_0x4bb328[_0x259d04(0x1c2)](_0x259d04(0x1d1));}),process['on'](_0x125ceb(0x1c1),()=>{const _0x1c634e=_0x125ceb;_0x4bb328[_0x1c634e(0x1c2)](_0x1c634e(0x1c1));});}};commands[command]?commands[command]()['catch'](_0x1967fe=>{const _0x5c6c44=a0_0x23c4a1;console[_0x5c6c44(0x1db)](_0x5c6c44(0x20a),_0x1967fe[_0x5c6c44(0x1e5)]),process[_0x5c6c44(0x1bf)](0x1);}):(console[a0_0x23c4a1(0x1db)]('Unknown\x20command:\x20'+command),console[a0_0x23c4a1(0x1db)](a0_0x23c4a1(0x1c6)),process[a0_0x23c4a1(0x1bf)](0x1));
|
|
3
|
+
const a0_0x35c427=a0_0x2379;(function(_0xff1a9e,_0x3dfeb2){const _0x434d81=a0_0x2379,_0x1f64fe=_0xff1a9e();while(!![]){try{const _0x5b696d=-parseInt(_0x434d81(0xb5))/0x1*(-parseInt(_0x434d81(0x7e))/0x2)+-parseInt(_0x434d81(0xb6))/0x3*(-parseInt(_0x434d81(0xc5))/0x4)+parseInt(_0x434d81(0xb2))/0x5*(-parseInt(_0x434d81(0xa7))/0x6)+-parseInt(_0x434d81(0x97))/0x7*(parseInt(_0x434d81(0x83))/0x8)+parseInt(_0x434d81(0xb4))/0x9*(parseInt(_0x434d81(0x9b))/0xa)+parseInt(_0x434d81(0xa9))/0xb+-parseInt(_0x434d81(0x95))/0xc;if(_0x5b696d===_0x3dfeb2)break;else _0x1f64fe['push'](_0x1f64fe['shift']());}catch(_0x253180){_0x1f64fe['push'](_0x1f64fe['shift']());}}}(a0_0x4df0,0xb7919));import{fileURLToPath}from'url';import{dirname,join}from'path';import{spawn}from'child_process';import{readFileSync}from'fs';import a0_0x8519d1 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),DEFAULT_PORT=0x1f90,DEFAULT_HOST=a0_0x35c427(0x84),SERVER_STARTUP_TIMEOUT=0x3a98,SERVER_CHECK_INTERVAL=0x1f4,args=process[a0_0x35c427(0xb1)][a0_0x35c427(0xba)](0x2),command=args[0x0]&&!args[0x0][a0_0x35c427(0xa4)]('--')?args[0x0]:null,flags={'port':null,'host':null,'help':args[a0_0x35c427(0xbc)]('--help')||args['includes']('-h'),'version':args['includes']('--version')||args[a0_0x35c427(0xbc)]('-v')};for(let i=0x0;i<args[a0_0x35c427(0xb9)];i++){args[i]==='--port'&&args[i+0x1]&&(flags[a0_0x35c427(0x7c)]=parseInt(args[i+0x1],0xa)),args[i]==='--host'&&args[i+0x1]&&(flags[a0_0x35c427(0x80)]=args[i+0x1]);}const explicitPort=flags[a0_0x35c427(0x7c)],host=flags[a0_0x35c427(0x80)]||DEFAULT_HOST;if(flags[a0_0x35c427(0x8f)]){const pkgPath=join(__dirname,'..',a0_0x35c427(0x7b)),pkg=JSON[a0_0x35c427(0xbf)](readFileSync(pkgPath,'utf8'));console['log'](a0_0x35c427(0x79)+pkg['version']),process[a0_0x35c427(0x99)](0x0);}if(flags[a0_0x35c427(0x8a)]||!command){const pkgPath=join(__dirname,'..',a0_0x35c427(0x7b)),pkg=JSON[a0_0x35c427(0xbf)](readFileSync(pkgPath,a0_0x35c427(0x82)));console[a0_0x35c427(0xa8)](a0_0x35c427(0x98)+pkg['version']+'\x20-\x20AI\x20Agent\x20System\x0a\x0aUsage:\x0a\x20\x20loxia\x20<command>\x20[options]\x0a\x0aCommands:\x0a\x20\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20+\x20open\x20Web\x20UI\x20in\x20browser\x0a\x20\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Start\x20server\x20only\x20(no\x20UI\x20opened)\x0a\x20\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20Start\x20Terminal\x20UI\x20(server\x20must\x20be\x20running)\x0a\x20\x20plus-web\x20\x20\x20\x20\x20\x20\x20\x20Alias\x20for\x20\x27web\x27\x0a\x20\x20plus-terminal\x20\x20\x20Start\x20server\x20+\x20Terminal\x20UI\x20together\x0a\x0aOptions:\x0a\x20\x20--port\x20<number>\x20\x20\x20Specify\x20port\x20(default:\x20auto-select\x20starting\x20from\x20'+DEFAULT_PORT+')\x0a\x20\x20--host\x20<host>\x20\x20\x20\x20\x20Specify\x20host\x20(default:\x20'+DEFAULT_HOST+')\x0a\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x0a\x20\x20-v,\x20--version\x20\x20\x20\x20\x20Show\x20version\x20number\x0a\x0aExamples:\x0a\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20open\x20browser\x0a\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only\x20(headless)\x0a\x20\x20loxia\x20terminal\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Connect\x20Terminal\x20UI\x20to\x20running\x20server\x0a\x20\x20loxia\x20plus-terminal\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a\x20\x20loxia\x20web\x20--port\x203000\x20\x20\x20\x20#\x20Use\x20specific\x20port\x0a\x0aQuick\x20Start:\x0a\x20\x201.\x20Run\x20\x27loxia\x20web\x27\x20to\x20start\x20with\x20Web\x20UI\x0a\x20\x202.\x20Or\x20run\x20\x27loxia\x20plus-terminal\x27\x20for\x20Terminal\x20UI\x20experience\x0a\x20\x203.\x20Or\x20run\x20\x27loxia\x20serve\x27\x20for\x20headless\x20server\x20(connect\x20remotely)\x0a\x0aNote:\x20If\x20no\x20port\x20is\x20specified,\x20the\x20server\x20will\x20automatically\x20find\x0aan\x20available\x20port.\x20The\x20Terminal\x20UI\x20will\x20discover\x20the\x20server\x20port\x0aautomatically\x20from\x20the\x20port\x20registry.\x0a\x0aDocumentation:\x0a\x20\x20https://autopilot.loxia.ai\x0a\x0a'),process[a0_0x35c427(0x99)](0x0);}async function getPortRegistry(){const _0x31aefb=a0_0x35c427,{getPortRegistry:_0x7a0c78}=await import(_0x31aefb(0x72));return _0x7a0c78();}async function discoverBackend(){const _0x1a6cc5=a0_0x35c427;try{const _0x204e52=await getPortRegistry();await _0x204e52['cleanupStaleEntries']();const _0x3c7b55=await _0x204e52[_0x1a6cc5(0x90)](_0x1a6cc5(0x81));if(_0x3c7b55)return{'host':_0x3c7b55['host']||_0x1a6cc5(0xb8),'port':_0x3c7b55[_0x1a6cc5(0x7c)],'pid':_0x3c7b55[_0x1a6cc5(0x9a)]};return null;}catch(_0xea7858){return null;}}async function checkServerRunning(_0x13f86e,_0xcc6be8,_0x3254fd=0x1){for(let _0x1743ec=0x0;_0x1743ec<_0x3254fd;_0x1743ec++){const _0x45129f=await new Promise(_0x183b87=>{const _0x327e42=a0_0x2379,_0x13030a=a0_0x8519d1[_0x327e42(0xab)](_0x327e42(0x96)+_0x13f86e+':'+_0xcc6be8+_0x327e42(0x75),_0x1f1278=>{_0x183b87(_0x1f1278['statusCode']===0xc8);});_0x13030a['on'](_0x327e42(0xb0),()=>_0x183b87(![])),_0x13030a[_0x327e42(0xaa)](0x7d0,()=>{const _0x242e2c=_0x327e42;_0x13030a[_0x242e2c(0x7a)](),_0x183b87(![]);});});if(_0x45129f)return!![];_0x1743ec<_0x3254fd-0x1&&await new Promise(_0x47e6c0=>setTimeout(_0x47e6c0,SERVER_CHECK_INTERVAL));}return![];}async function waitForServerWithDiscovery(_0xb0067=SERVER_STARTUP_TIMEOUT){const _0x31c970=a0_0x35c427,_0x2b7490=Date[_0x31c970(0x8c)]();while(Date[_0x31c970(0x8c)]()-_0x2b7490<_0xb0067){const _0x4162da=await discoverBackend();if(_0x4162da){const _0x555c79=await checkServerRunning(_0x4162da[_0x31c970(0x80)],_0x4162da[_0x31c970(0x7c)]);if(_0x555c79)return _0x4162da;}await new Promise(_0x57b72b=>setTimeout(_0x57b72b,SERVER_CHECK_INTERVAL));}return null;}async function waitForServerAtPort(_0x2d5aff,_0x3887af,_0x43ef9a=SERVER_STARTUP_TIMEOUT){const _0x36e80a=a0_0x35c427,_0x1ec869=Math[_0x36e80a(0x74)](_0x43ef9a/SERVER_CHECK_INTERVAL),_0x2e8dc8=await checkServerRunning(_0x2d5aff,_0x3887af,_0x1ec869);return _0x2e8dc8?{'host':_0x2d5aff,'port':_0x3887af}:null;}function a0_0x2379(_0x3bfea3,_0x13bc64){_0x3bfea3=_0x3bfea3-0x72;const _0x4df0aa=a0_0x4df0();let _0x23792d=_0x4df0aa[_0x3bfea3];return _0x23792d;}function a0_0x4df0(){const _0x2071fc=['Server\x20discovered\x20at\x20','\x20\x20loxia\x20serve\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20only','Please\x20open\x20manually:\x20','error','argv','70805JeopgY','SIGTERM','2164257okUiAh','298409yKEJYi','15lyfGSG','Waiting\x20for\x20server\x20to\x20start...','localhost','length','slice','Could\x20not\x20open\x20browser\x20automatically.','includes','ignore','Starting\x20Loxia\x20server\x20in\x20background...','parse','SIGINT','\x20\x20loxia\x20plus-terminal\x20\x20#\x20Start\x20server\x20+\x20Terminal\x20UI\x0a','Unknown\x20command:\x20','\x20\x20API\x20Health:\x20\x20\x20','loxia-terminal.js','1176236DInGGA','../src/services/portRegistry.js','platform','ceil','/api/health','LOXIA_PORT','PORT','Starting\x20Terminal\x20UI...\x0a','Loxia\x20Autopilot\x20One\x20v','destroy','package.json','port','It\x20may\x20have\x20crashed.\x20Please\x20restart\x20it.','6SoaCxo','src','host','backend','utf8','8VynPve','127.0.0.1','win32','\x20but\x20not\x20responding.','kill','LOXIA_HOST','\x0aShutting\x20down\x20server...','help','node','now','cmd','\x0aServer\x20started\x20but\x20may\x20still\x20be\x20initializing.','version','getService','\x0aPlease\x20start\x20the\x20server\x20first:','\x0a✓\x20Server\x20running\x20at\x20','\x0aServer\x20may\x20still\x20be\x20starting.\x20Check\x20the\x20port\x20registry\x20or\x20logs.','open','17177676hYuBeV','http://','2315551ObFzFF','\x0aLoxia\x20Autopilot\x20One\x20v','exit','pid','20tRTsMX','unref','inherit','web','catch','\x0aOpening\x20Web\x20UI\x20at\x20','\x20\x20Terminal\x20UI:\x20\x20loxia\x20terminal','Run\x20\x27loxia\x20terminal\x27\x20to\x20connect\x20when\x20ready.','message','startsWith','start','toString','144EyfqnH','log','83149xFIDUZ','setTimeout','get','\x0a\x20\x20Web\x20UI:\x20\x20\x20\x20\x20\x20\x20'];a0_0x4df0=function(){return _0x2071fc;};return a0_0x4df0();}function openBrowser(_0x589205){const _0x377d35=a0_0x35c427;let _0x1bfc40,_0x53acde;if(process[_0x377d35(0x73)]==='darwin')_0x1bfc40=_0x377d35(0x94),_0x53acde=[_0x589205];else process[_0x377d35(0x73)]===_0x377d35(0x85)?(_0x1bfc40=_0x377d35(0x8d),_0x53acde=['/c',_0x377d35(0xa5),'\x22\x22',_0x589205]):(_0x1bfc40='xdg-open',_0x53acde=[_0x589205]);const _0x515381=spawn(_0x1bfc40,_0x53acde,{'detached':!![],'stdio':_0x377d35(0xbd)});_0x515381['unref'](),_0x515381['on'](_0x377d35(0xb0),()=>{const _0x28160b=_0x377d35;console[_0x28160b(0xa8)](_0x28160b(0xbb)),console[_0x28160b(0xa8)](_0x28160b(0xaf)+_0x589205);});}function startServer(_0xe4a269=![]){const _0x874e8e=a0_0x35c427,_0x2a2472={...process.env};explicitPort&&(_0x2a2472[_0x874e8e(0x76)]=explicitPort[_0x874e8e(0xa6)](),_0x2a2472[_0x874e8e(0x77)]=explicitPort[_0x874e8e(0xa6)]());flags[_0x874e8e(0x80)]&&(_0x2a2472[_0x874e8e(0x88)]=flags[_0x874e8e(0x80)]);const _0x589e7c=join(__dirname,'..',_0x874e8e(0x7f),'index.js'),_0x52bfad=spawn(_0x874e8e(0x8b),[_0x589e7c],{'cwd':join(__dirname,'..'),'env':_0x2a2472,'stdio':_0xe4a269?['ignore',_0x874e8e(0xbd),_0x874e8e(0xbd)]:_0x874e8e(0x9d),'detached':_0xe4a269});return _0xe4a269&&_0x52bfad[_0x874e8e(0x9c)](),_0x52bfad;}function startTerminalUIProcess(_0x41af68,_0x3142d5){const _0x313a17=a0_0x35c427,_0xad3c6a=join(__dirname,_0x313a17(0xc4)),_0x368f6f={...process.env,'LOXIA_PORT':_0x3142d5[_0x313a17(0xa6)](),'LOXIA_HOST':_0x41af68},_0x2cd247=spawn('node',[_0xad3c6a],{'cwd':join(__dirname,'..'),'env':_0x368f6f,'stdio':'inherit'});return _0x2cd247;}const commands={'web':async()=>{const _0x3f51a2=a0_0x35c427;console['log']('Starting\x20Loxia\x20server...\x0a');const _0x4c3d0c=startServer(![]);console[_0x3f51a2(0xa8)]('Waiting\x20for\x20server\x20to\x20start...');let _0x53c347;explicitPort?_0x53c347=await waitForServerAtPort(host,explicitPort):_0x53c347=await waitForServerWithDiscovery();if(_0x53c347){const _0xbc090=_0x3f51a2(0x96)+_0x53c347[_0x3f51a2(0x80)]+':'+_0x53c347['port'];console['log'](_0x3f51a2(0xa0)+_0xbc090),openBrowser(_0xbc090);}else console['log'](_0x3f51a2(0x93));process['on'](_0x3f51a2(0xc0),()=>_0x4c3d0c[_0x3f51a2(0x87)](_0x3f51a2(0xc0))),process['on'](_0x3f51a2(0xb3),()=>_0x4c3d0c['kill']('SIGTERM')),_0x4c3d0c['on'](_0x3f51a2(0x99),_0x5bd82a=>process['exit'](_0x5bd82a||0x0));},'plus-web':async()=>{const _0x5146e2=a0_0x35c427;await commands[_0x5146e2(0x9e)]();},'serve':async()=>{const _0x54c01b=a0_0x35c427;console[_0x54c01b(0xa8)]('Starting\x20Loxia\x20server...\x0a');const _0x33ac17=startServer(![]);console[_0x54c01b(0xa8)](_0x54c01b(0xb7));let _0x45b070;explicitPort?_0x45b070=await waitForServerAtPort(host,explicitPort):_0x45b070=await waitForServerWithDiscovery();if(_0x45b070){const _0x2f4d24='http://'+_0x45b070[_0x54c01b(0x80)]+':'+_0x45b070[_0x54c01b(0x7c)];console[_0x54c01b(0xa8)](_0x54c01b(0x92)+_0x2f4d24),console[_0x54c01b(0xa8)](_0x54c01b(0xac)+_0x2f4d24),console[_0x54c01b(0xa8)](_0x54c01b(0xa1)),console[_0x54c01b(0xa8)](_0x54c01b(0xc3)+_0x2f4d24+'/api/health\x0a');}else console[_0x54c01b(0xa8)](_0x54c01b(0x8e)),console[_0x54c01b(0xa8)](_0x54c01b(0xa2));process['on']('SIGINT',()=>_0x33ac17[_0x54c01b(0x87)](_0x54c01b(0xc0))),process['on'](_0x54c01b(0xb3),()=>_0x33ac17[_0x54c01b(0x87)](_0x54c01b(0xb3))),_0x33ac17['on']('exit',_0x404ef9=>process[_0x54c01b(0x99)](_0x404ef9||0x0));},'terminal':async()=>{const _0x47ff6d=a0_0x35c427;console[_0x47ff6d(0xa8)]('Looking\x20for\x20running\x20server...');let _0xdc3226=await discoverBackend();explicitPort&&(_0xdc3226={'host':host,'port':explicitPort});!_0xdc3226&&(console['error']('\x0aNo\x20running\x20server\x20found\x20in\x20the\x20port\x20registry.'),console[_0x47ff6d(0xb0)](_0x47ff6d(0x91)),console[_0x47ff6d(0xb0)]('\x20\x20loxia\x20web\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20#\x20Start\x20server\x20+\x20Web\x20UI'),console[_0x47ff6d(0xb0)](_0x47ff6d(0xae)),console['error'](_0x47ff6d(0xc1)),process[_0x47ff6d(0x99)](0x1));const _0x487ca3=await checkServerRunning(_0xdc3226[_0x47ff6d(0x80)],_0xdc3226[_0x47ff6d(0x7c)]);!_0x487ca3&&(console[_0x47ff6d(0xb0)]('\x0aServer\x20registered\x20at\x20'+_0xdc3226[_0x47ff6d(0x80)]+':'+_0xdc3226[_0x47ff6d(0x7c)]+_0x47ff6d(0x86)),console['error'](_0x47ff6d(0x7d)),process[_0x47ff6d(0x99)](0x1));console[_0x47ff6d(0xa8)](_0x47ff6d(0xad)+_0xdc3226[_0x47ff6d(0x80)]+':'+_0xdc3226['port']),console[_0x47ff6d(0xa8)](_0x47ff6d(0x78));const _0x4a54ca=startTerminalUIProcess(_0xdc3226[_0x47ff6d(0x80)],_0xdc3226[_0x47ff6d(0x7c)]);process['on'](_0x47ff6d(0xc0),()=>_0x4a54ca[_0x47ff6d(0x87)](_0x47ff6d(0xc0))),process['on'](_0x47ff6d(0xb3),()=>_0x4a54ca['kill'](_0x47ff6d(0xb3))),_0x4a54ca['on'](_0x47ff6d(0x99),_0x32185a=>process[_0x47ff6d(0x99)](_0x32185a||0x0));},'plus-terminal':async()=>{const _0xf5c767=a0_0x35c427;console['log'](_0xf5c767(0xbe));const _0x163a17=startServer(!![]);let _0x3e6397;explicitPort?_0x3e6397=await waitForServerAtPort(host,explicitPort):_0x3e6397=await waitForServerWithDiscovery();!_0x3e6397&&(console[_0xf5c767(0xb0)]('\x0aServer\x20failed\x20to\x20start.\x20Please\x20check\x20logs.'),process[_0xf5c767(0x99)](0x1));console[_0xf5c767(0xa8)]('Server\x20running\x20at\x20http://'+_0x3e6397[_0xf5c767(0x80)]+':'+_0x3e6397[_0xf5c767(0x7c)]),console[_0xf5c767(0xa8)](_0xf5c767(0x78));const _0x6ac328=startTerminalUIProcess(_0x3e6397[_0xf5c767(0x80)],_0x3e6397[_0xf5c767(0x7c)]);_0x6ac328['on'](_0xf5c767(0x99),_0x1e40b6=>{const _0x219df4=_0xf5c767;console[_0x219df4(0xa8)](_0x219df4(0x89));try{process['kill'](_0x163a17[_0x219df4(0x9a)],_0x219df4(0xb3));}catch(_0x4c1273){}process[_0x219df4(0x99)](_0x1e40b6||0x0);}),process['on'](_0xf5c767(0xc0),()=>{const _0x2a8dbf=_0xf5c767;_0x6ac328[_0x2a8dbf(0x87)](_0x2a8dbf(0xc0));}),process['on']('SIGTERM',()=>{const _0x2b1a16=_0xf5c767;_0x6ac328[_0x2b1a16(0x87)](_0x2b1a16(0xb3));});}};commands[command]?commands[command]()[a0_0x35c427(0x9f)](_0xa40938=>{const _0x28b76d=a0_0x35c427;console[_0x28b76d(0xb0)]('Error:',_0xa40938[_0x28b76d(0xa3)]),process['exit'](0x1);}):(console['error'](a0_0x35c427(0xc2)+command),console[a0_0x35c427(0xb0)]('Run\x20\x22loxia\x20--help\x22\x20for\x20usage\x20information.'),process[a0_0x35c427(0x99)](0x1));
|
package/bin/loxia-terminal-v2.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x11345c=a0_0x27ee;(function(_0xf519d2,_0x2cbe79){const _0xd7974a=a0_0x27ee,_0x56fe7b=_0xf519d2();while(!![]){try{const _0x5a8bb9=parseInt(_0xd7974a(0x1c1))/0x1*(-parseInt(_0xd7974a(0x1cc))/0x2)+-parseInt(_0xd7974a(0x1bf))/0x3+-parseInt(_0xd7974a(0x1e2))/0x4+parseInt(_0xd7974a(0x1e0))/0x5*(-parseInt(_0xd7974a(0x1e8))/0x6)+parseInt(_0xd7974a(0x1c2))/0x7*(parseInt(_0xd7974a(0x1d5))/0x8)+-parseInt(_0xd7974a(0x1de))/0x9*(parseInt(_0xd7974a(0x1bc))/0xa)+-parseInt(_0xd7974a(0x1e5))/0xb*(-parseInt(_0xd7974a(0x1c6))/0xc);if(_0x5a8bb9===_0x2cbe79)break;else _0x56fe7b['push'](_0x56fe7b['shift']());}catch(_0x51dd26){_0x56fe7b['push'](_0x56fe7b['shift']());}}}(a0_0x587c,0x352ca));import{spawn}from'child_process';import a0_0x484ffa from'net';import a0_0x5b22bf from'path';import{fileURLToPath}from'url';const __filename=fileURLToPath(import.meta.url),__dirname=a0_0x5b22bf[a0_0x11345c(0x1cd)](__filename),projectRoot=a0_0x5b22bf['dirname'](__dirname),DEFAULT_PORT=0x1f90,DEFAULT_HOST='localhost',SERVER_STARTUP_TIMEOUT=0x2710;async function isServerRunning(_0x42f722,_0x63b877){return new Promise(_0x46fe2e=>{const _0x2c59cc=a0_0x27ee,_0x36f4b7=new a0_0x484ffa[(_0x2c59cc(0x1c3))]();_0x36f4b7[_0x2c59cc(0x1d2)](0x7d0),_0x36f4b7['on']('connect',()=>{const _0x2484ac=_0x2c59cc;_0x36f4b7[_0x2484ac(0x1d6)](),_0x46fe2e(!![]);}),_0x36f4b7['on'](_0x2c59cc(0x1d3),()=>{const _0x4239d2=_0x2c59cc;_0x36f4b7[_0x4239d2(0x1d6)](),_0x46fe2e(![]);}),_0x36f4b7['on']('error',()=>{_0x36f4b7['destroy'](),_0x46fe2e(![]);}),_0x36f4b7[_0x2c59cc(0x1d8)](_0x63b877,_0x42f722);});}function a0_0x587c(){const _0x1b0492=['\x20\x20\x203.\x20Check\x20logs\x20for\x20more\x20details','━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━','log','\x20\x20Loxia\x20Autopilot\x20One\x20-\x20Terminal\x20UI','toString','--port','20810PTUvUT','message','stdout','281157TdFwjH','join','1metdgx','2046401EFnGyU','Socket','now','🚀\x20Starting\x20Loxia\x20server...','9948fDyATl','web','🎨\x20Launching\x20Ink-based\x20Terminal\x20UI...','../src/interfaces/terminal/index.js','kill','data','538804LBdZPi','dirname','\x20\x20\x202.\x20Try\x20running\x20the\x20server\x20manually:\x20node\x20bin/cli.js','slice','node','✓\x20Server\x20is\x20already\x20running\x20at\x20','setTimeout','timeout','exit','8YTzAsR','destroy','stderr','connect','💡\x20Troubleshooting:','❌\x20Failed\x20to\x20start\x20Terminal\x20UI:','...','\x20\x20\x201.\x20Make\x20sure\x20no\x20other\x20process\x20is\x20using\x20port\x208080','ignore','1863tsUkvA','Failed\x20to\x20start\x20server:','1565YHabfL','🔍\x20Checking\x20if\x20server\x20is\x20running\x20at\x20','1548392sckDyE','Server\x20startup\x20timeout','bin/cli.js','17842NWIhPS','pipe','error','4566BSryDE'];a0_0x587c=function(){return _0x1b0492;};return a0_0x587c();}async function startServer(_0x47e6f9,_0x19941c){const _0x552490=a0_0x11345c;return console['log'](_0x552490(0x1c5)),new Promise((_0x3944ca,_0x88e0db)=>{const _0x3fe8cd=_0x552490,_0x1c6c9c=spawn(_0x3fe8cd(0x1d0),[a0_0x5b22bf[_0x3fe8cd(0x1c0)](projectRoot,_0x3fe8cd(0x1e4)),'--ui',_0x3fe8cd(0x1c7),'--host',_0x47e6f9,_0x3fe8cd(0x1bb),_0x19941c[_0x3fe8cd(0x1ba)]()],{'detached':![],'stdio':[_0x3fe8cd(0x1dd),_0x3fe8cd(0x1e6),_0x3fe8cd(0x1e6)]});_0x1c6c9c[_0x3fe8cd(0x1be)]['on'](_0x3fe8cd(0x1cb),()=>{}),_0x1c6c9c[_0x3fe8cd(0x1d7)]['on'](_0x3fe8cd(0x1cb),()=>{}),_0x1c6c9c['on']('error',_0x50f3bd=>{const _0x323c4e=_0x3fe8cd;console[_0x323c4e(0x1e7)](_0x323c4e(0x1df),_0x50f3bd[_0x323c4e(0x1bd)]),_0x88e0db(_0x50f3bd);});const _0x48064d=Date[_0x3fe8cd(0x1c4)](),_0x14a4e7=setInterval(async()=>{const _0x31b17f=_0x3fe8cd,_0x474133=await isServerRunning(_0x47e6f9,_0x19941c);if(_0x474133)clearInterval(_0x14a4e7),console['log']('✓\x20Server\x20started\x20at\x20'+_0x47e6f9+':'+_0x19941c),_0x3944ca();else Date[_0x31b17f(0x1c4)]()-_0x48064d>SERVER_STARTUP_TIMEOUT&&(clearInterval(_0x14a4e7),_0x1c6c9c[_0x31b17f(0x1ca)](),_0x88e0db(new Error(_0x31b17f(0x1e3))));},0x1f4);});}function a0_0x27ee(_0x688f3f,_0x242b51){_0x688f3f=_0x688f3f-0x1b6;const _0x587c31=a0_0x587c();let _0x27ee4d=_0x587c31[_0x688f3f];return _0x27ee4d;}async function main(){const _0xe2d6f5=a0_0x11345c;try{console[_0xe2d6f5(0x1b8)]('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'),console[_0xe2d6f5(0x1b8)](_0xe2d6f5(0x1b9)),console[_0xe2d6f5(0x1b8)](_0xe2d6f5(0x1b7)),console[_0xe2d6f5(0x1b8)]('');const _0x12cfdd=process['argv'][_0xe2d6f5(0x1cf)](0x2);let _0x560da0=DEFAULT_HOST,_0x5949d9=DEFAULT_PORT;for(let _0x59db81=0x0;_0x59db81<_0x12cfdd['length'];_0x59db81++){if(_0x12cfdd[_0x59db81]==='--host'&&_0x12cfdd[_0x59db81+0x1])_0x560da0=_0x12cfdd[_0x59db81+0x1],_0x59db81++;else _0x12cfdd[_0x59db81]===_0xe2d6f5(0x1bb)&&_0x12cfdd[_0x59db81+0x1]&&(_0x5949d9=parseInt(_0x12cfdd[_0x59db81+0x1],0xa),_0x59db81++);}console[_0xe2d6f5(0x1b8)](_0xe2d6f5(0x1e1)+_0x560da0+':'+_0x5949d9+_0xe2d6f5(0x1db));const _0x40fc64=await isServerRunning(_0x560da0,_0x5949d9);!_0x40fc64?(console[_0xe2d6f5(0x1b8)]('✗\x20Server\x20is\x20not\x20running'),await startServer(_0x560da0,_0x5949d9)):console[_0xe2d6f5(0x1b8)](_0xe2d6f5(0x1d1)+_0x560da0+':'+_0x5949d9),console[_0xe2d6f5(0x1b8)](''),console['log'](_0xe2d6f5(0x1c8)),console['log'](''),await new Promise(_0x33eb52=>setTimeout(_0x33eb52,0x1f4)),process.env.LOXIA_HOST=_0x560da0,process.env.LOXIA_PORT=_0x5949d9[_0xe2d6f5(0x1ba)](),await import(_0xe2d6f5(0x1c9));}catch(_0x3eb05b){console[_0xe2d6f5(0x1e7)](''),console[_0xe2d6f5(0x1e7)](_0xe2d6f5(0x1da)),console['error']('\x20\x20',_0x3eb05b[_0xe2d6f5(0x1bd)]),console[_0xe2d6f5(0x1e7)](''),console[_0xe2d6f5(0x1e7)](_0xe2d6f5(0x1d9)),console[_0xe2d6f5(0x1e7)](_0xe2d6f5(0x1dc)),console['error'](_0xe2d6f5(0x1ce)),console[_0xe2d6f5(0x1e7)](_0xe2d6f5(0x1b6)),console[_0xe2d6f5(0x1e7)](''),process[_0xe2d6f5(0x1d4)](0x1);}}main();
|
package/bin/loxia-terminal.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const a0_0x4a6f6d=a0_0x3954;(function(_0x1cc401,_0x1a3445){const _0x26c979=a0_0x3954,_0x3c09bd=_0x1cc401();while(!![]){try{const _0x1285d5=-parseInt(_0x26c979(0x1c0))/0x1+parseInt(_0x26c979(0x1ca))/0x2+parseInt(_0x26c979(0x1d2))/0x3*(-parseInt(_0x26c979(0x1c7))/0x4)+-parseInt(_0x26c979(0x1be))/0x5+-parseInt(_0x26c979(0x1c1))/0x6+-parseInt(_0x26c979(0x1c9))/0x7*(parseInt(_0x26c979(0x1c3))/0x8)+parseInt(_0x26c979(0x1d1))/0x9;if(_0x1285d5===_0x1a3445)break;else _0x3c09bd['push'](_0x3c09bd['shift']());}catch(_0x591163){_0x3c09bd['push'](_0x3c09bd['shift']());}}}(a0_0x1b0f,0xd92f9));import{startTerminalUI}from'../src/interfaces/terminal/index.js';const args=process[a0_0x4a6f6d(0x1d3)][a0_0x4a6f6d(0x1cd)](0x2),options={'host':a0_0x4a6f6d(0x1ba),'port':0x1f90};for(let i=0x0;i<args['length'];i++){const arg=args[i];if(arg===a0_0x4a6f6d(0x1d6)||arg==='-h')options['host']=args[++i];else{if(arg==='--port'||arg==='-p')options[a0_0x4a6f6d(0x1c4)]=parseInt(args[++i],0xa);else arg==='--help'&&(console[a0_0x4a6f6d(0x1c5)]('\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'),process[a0_0x4a6f6d(0x1d0)](0x0));}}function a0_0x1b0f(){const _0x3db259=['5024996WUnedx','The\x20terminal\x20UI\x20cannot\x20run\x20in:','209545akhywM','1222044ZJiptG','error','\x0aTerminal\x20UI\x20error:','slice','isTTY','\x20\x20-\x20Redirected\x20output\x20(e.g.,\x20>\x20file.txt,\x202>&1\x20|\x20...)','exit','22810383LPEqlt','3poYpEI','argv','\x20\x20-\x20Background\x20processes\x20(e.g.,\x20&\x20at\x20the\x20end)','Please\x20run\x20this\x20command\x20in\x20a\x20real\x20terminal\x20without\x20pipes\x20or\x20redirection:','--host','localhost','Press\x20Ctrl+C\x20to\x20exit\x0a','waitUntilExit','stdin','351835TEtVIw','host','282411vgwLKr','1905624EKnJmD','Or\x20use\x20the\x20web\x20UI\x20instead:','88mGeEhz','port','log','\x20\x20-\x20Piped\x20environments\x20(e.g.,\x20|\x20head,\x20|\x20grep)'];a0_0x1b0f=function(){return _0x3db259;};return a0_0x1b0f();}process.env.LOXIA_HOST&&(options['host']=process.env.LOXIA_HOST);function a0_0x3954(_0x12ca42,_0x550138){_0x12ca42=_0x12ca42-0x1ba;const _0x1b0f45=a0_0x1b0f();let _0x395493=_0x1b0f45[_0x12ca42];return _0x395493;}process.env.LOXIA_PORT&&(options[a0_0x4a6f6d(0x1c4)]=parseInt(process.env.LOXIA_PORT,0xa));!process[a0_0x4a6f6d(0x1bd)][a0_0x4a6f6d(0x1ce)]&&(console['error']('ERROR:\x20Terminal\x20UI\x20requires\x20an\x20interactive\x20terminal\x20(TTY).'),console[a0_0x4a6f6d(0x1cb)](''),console[a0_0x4a6f6d(0x1cb)](a0_0x4a6f6d(0x1c8)),console[a0_0x4a6f6d(0x1cb)](a0_0x4a6f6d(0x1c6)),console['error'](a0_0x4a6f6d(0x1cf)),console[a0_0x4a6f6d(0x1cb)](a0_0x4a6f6d(0x1d4)),console[a0_0x4a6f6d(0x1cb)]('\x20\x20-\x20Some\x20CI/CD\x20environments'),console['error'](''),console[a0_0x4a6f6d(0x1cb)](a0_0x4a6f6d(0x1d5)),console['error']('\x20\x20npm\x20run\x20terminal-ui'),console[a0_0x4a6f6d(0x1cb)](''),console[a0_0x4a6f6d(0x1cb)](a0_0x4a6f6d(0x1c2)),console[a0_0x4a6f6d(0x1cb)]('\x20\x20npm\x20start'),process[a0_0x4a6f6d(0x1d0)](0x1));console[a0_0x4a6f6d(0x1c5)]('Starting\x20Loxia\x20Terminal\x20UI...'),console['log']('Connecting\x20to:\x20'+options[a0_0x4a6f6d(0x1bf)]+':'+options[a0_0x4a6f6d(0x1c4)]),console[a0_0x4a6f6d(0x1c5)](a0_0x4a6f6d(0x1bb));const instance=startTerminalUI(options);instance[a0_0x4a6f6d(0x1bc)]()['then'](()=>{const _0x19421a=a0_0x4a6f6d;console['log']('\x0aTerminal\x20UI\x20exited'),process[_0x19421a(0x1d0)](0x0);})['catch'](_0x417792=>{const _0x4aa659=a0_0x4a6f6d;console['error'](_0x4aa659(0x1cc),_0x417792),process[_0x4aa659(0x1d0)](0x1);});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
(function(_0x5c4465,_0x1d1d1e){const _0x2cb9ae=a0_0x629b,_0x92be30=_0x5c4465();while(!![]){try{const _0x5f23b8=-parseInt(_0x2cb9ae(0x17d))/0x1*(-parseInt(_0x2cb9ae(0x16b))/0x2)+-parseInt(_0x2cb9ae(0x189))/0x3*(-parseInt(_0x2cb9ae(0x165))/0x4)+-parseInt(_0x2cb9ae(0x17b))/0x5+parseInt(_0x2cb9ae(0x18b))/0x6+parseInt(_0x2cb9ae(0x193))/0x7*(-parseInt(_0x2cb9ae(0x179))/0x8)+-parseInt(_0x2cb9ae(0x194))/0x9*(parseInt(_0x2cb9ae(0x188))/0xa)+parseInt(_0x2cb9ae(0x176))/0xb*(parseInt(_0x2cb9ae(0x172))/0xc);if(_0x5f23b8===_0x1d1d1e)break;else _0x92be30['push'](_0x92be30['shift']());}catch(_0xe1fb67){_0x92be30['push'](_0x92be30['shift']());}}}(a0_0x2e5a,0xb7ad0));function a0_0x2e5a(){const _0x32a180=['exit','/health','\x0a⚠️\x20\x20Received\x20SIGINT,\x20shutting\x20down...','518tLkPUd','47574iSUaOK','🛑\x20Stopping\x20server...','76TFMUwp','node','error','pipe','stderr','Error\x20during\x20startup:','326486DkziMI','bin','toString','🖥️\x20\x20Starting\x20Terminal\x20UI...','src','statusCode','╔════════════════════════════════════════════════╗','12265476MViWjD','SIGKILL','Failed\x20to\x20start\x20server:','index.js','22NytsLj','Server\x20exited\x20with\x20code\x20','trim','131056fWnuQA','data','2272685gShxFk','SIGTERM','3WVNqWS','inherit','setTimeout','Failed\x20to\x20start\x20Terminal\x20UI:','🚀\x20Starting\x20Loxia\x20server...','kill','Server\x20returned\x20','includes','log','stdout','✅\x20Server\x20is\x20ready!','2340ApBXwt','8253MhiPQs','destroy','6418926jjKPfa','ignore','message','⚠️\x20\x20Server\x20may\x20not\x20be\x20fully\x20ready,\x20but\x20continuing\x20anyway...','http://localhost:'];a0_0x2e5a=function(){return _0x32a180;};return a0_0x2e5a();}import{spawn}from'child_process';import{fileURLToPath}from'url';import{dirname,join}from'path';import a0_0x4c0d61 from'http';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename),rootDir=join(__dirname,'..'),SERVER_PORT=process.env.PORT||0x1f90,STARTUP_WAIT=0x7d0;let serverProcess=null;async function checkServerReady(_0x5203fc=0xa,_0x5e42a3=0x1f4){const _0x1e42cf=a0_0x629b;for(let _0x32fd77=0x0;_0x32fd77<_0x5203fc;_0x32fd77++){try{return await new Promise((_0x451d34,_0x1d7ee4)=>{const _0x35126b=a0_0x629b,_0x6038d4=a0_0x4c0d61['get'](_0x35126b(0x18f)+SERVER_PORT+_0x35126b(0x191),_0x4e2a20=>{const _0x2347dd=_0x35126b;_0x4e2a20[_0x2347dd(0x170)]===0xc8?_0x451d34():_0x1d7ee4(new Error(_0x2347dd(0x183)+_0x4e2a20[_0x2347dd(0x170)]));});_0x6038d4['on'](_0x35126b(0x167),_0x1d7ee4),_0x6038d4[_0x35126b(0x17f)](0x3e8,()=>{const _0x533e4f=_0x35126b;_0x6038d4[_0x533e4f(0x18a)](),_0x1d7ee4(new Error('Timeout'));});}),console['log'](_0x1e42cf(0x187)),!![];}catch(_0x49cd9d){_0x32fd77<_0x5203fc-0x1&&await new Promise(_0x57fc52=>setTimeout(_0x57fc52,_0x5e42a3));}}return console['log'](_0x1e42cf(0x18e)),![];}function a0_0x629b(_0x4068b5,_0x4ae764){_0x4068b5=_0x4068b5-0x165;const _0x2e5a94=a0_0x2e5a();let _0x629b53=_0x2e5a94[_0x4068b5];return _0x629b53;}async function startServer(){return new Promise(_0x1e3625=>{const _0x2e2c8f=a0_0x629b;console[_0x2e2c8f(0x185)](_0x2e2c8f(0x181));const _0x3bf89a=join(rootDir,_0x2e2c8f(0x16f),_0x2e2c8f(0x175));serverProcess=spawn(_0x2e2c8f(0x166),[_0x3bf89a],{'cwd':rootDir,'env':{...process.env},'stdio':[_0x2e2c8f(0x18c),_0x2e2c8f(0x168),_0x2e2c8f(0x168)],'detached':![]}),serverProcess[_0x2e2c8f(0x186)]['on'](_0x2e2c8f(0x17a),_0x2dbbf9=>{const _0x59e04c=_0x2e2c8f,_0x13b9dd=_0x2dbbf9[_0x59e04c(0x16d)]()[_0x59e04c(0x178)]();_0x13b9dd&&console[_0x59e04c(0x185)]('[SERVER]\x20'+_0x13b9dd);}),serverProcess[_0x2e2c8f(0x169)]['on']('data',_0x35e5d5=>{const _0x5730ac=_0x2e2c8f,_0x1c98ed=_0x35e5d5[_0x5730ac(0x16d)]()['trim']();_0x1c98ed&&!_0x1c98ed[_0x5730ac(0x184)]('ExperimentalWarning')&&console['error']('[SERVER\x20ERROR]\x20'+_0x1c98ed);}),serverProcess['on'](_0x2e2c8f(0x167),_0x1d9ae2=>{const _0xd935aa=_0x2e2c8f;console[_0xd935aa(0x167)](_0xd935aa(0x174),_0x1d9ae2[_0xd935aa(0x18d)]),process[_0xd935aa(0x190)](0x1);}),serverProcess['on'](_0x2e2c8f(0x190),(_0x78bdad,_0x5bf7c8)=>{const _0x443f5c=_0x2e2c8f;_0x78bdad!==null&&_0x78bdad!==0x0&&(console[_0x443f5c(0x167)](_0x443f5c(0x177)+_0x78bdad),process[_0x443f5c(0x190)](_0x78bdad));}),setTimeout(_0x1e3625,STARTUP_WAIT);});}async function startTerminalUI(){const _0x4c54a4=a0_0x629b;console[_0x4c54a4(0x185)](_0x4c54a4(0x16e)),console[_0x4c54a4(0x185)]('');const _0x535cd3=join(rootDir,_0x4c54a4(0x16c),'loxia-terminal.js'),_0x40d944=spawn(_0x4c54a4(0x166),[_0x535cd3],{'cwd':rootDir,'env':{...process.env},'stdio':_0x4c54a4(0x17e)});return _0x40d944['on'](_0x4c54a4(0x167),_0x58d1aa=>{const _0x5ad7ec=_0x4c54a4;console[_0x5ad7ec(0x167)](_0x5ad7ec(0x180),_0x58d1aa[_0x5ad7ec(0x18d)]),cleanup(),process[_0x5ad7ec(0x190)](0x1);}),_0x40d944['on']('exit',_0x52f1ae=>{const _0x388cee=_0x4c54a4;console[_0x388cee(0x185)]('\x0a👋\x20Terminal\x20UI\x20closed.'),cleanup(),process['exit'](_0x52f1ae||0x0);}),_0x40d944;}function cleanup(){const _0x26439f=a0_0x629b;serverProcess&&!serverProcess['killed']&&(console[_0x26439f(0x185)](_0x26439f(0x195)),serverProcess[_0x26439f(0x182)](_0x26439f(0x17c)),setTimeout(()=>{const _0x45df78=_0x26439f;!serverProcess['killed']&&serverProcess['kill'](_0x45df78(0x173));},0x1388));}process['on']('SIGINT',()=>{const _0xe585b9=a0_0x629b;console['log'](_0xe585b9(0x192)),cleanup(),process[_0xe585b9(0x190)](0x0);}),process['on']('SIGTERM',()=>{const _0x4a9609=a0_0x629b;console[_0x4a9609(0x185)]('\x0a⚠️\x20\x20Received\x20SIGTERM,\x20shutting\x20down...'),cleanup(),process['exit'](0x0);}),process['on']('exit',()=>{cleanup();});async function main(){const _0x5b787b=a0_0x629b;console[_0x5b787b(0x185)](_0x5b787b(0x171)),console[_0x5b787b(0x185)]('║\x20\x20\x20Loxia\x20AI\x20Agents\x20-\x20Server\x20+\x20Terminal\x20UI\x20\x20\x20\x20\x20\x20║'),console[_0x5b787b(0x185)]('╚════════════════════════════════════════════════╝'),console[_0x5b787b(0x185)]('');try{await startServer(),await checkServerReady(),await startTerminalUI(),await new Promise(()=>{});}catch(_0x275487){console[_0x5b787b(0x167)](_0x5b787b(0x16a),_0x275487[_0x5b787b(0x18d)]),cleanup(),process[_0x5b787b(0x190)](0x1);}}main();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loxia-labs/loxia-autopilot-one",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Loxia AI Agents System - No-code/vibe-code/companion-coder platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"README.md",
|
|
43
43
|
"LICENSE"
|
|
44
44
|
],
|
|
45
|
+
"bundledDependencies": [
|
|
46
|
+
"glob",
|
|
47
|
+
"rimraf"
|
|
48
|
+
],
|
|
45
49
|
"engines": {
|
|
46
50
|
"node": ">=20.0.0"
|
|
47
51
|
},
|
|
@@ -66,6 +70,7 @@
|
|
|
66
70
|
"puppeteer-extra": "^3.3.6",
|
|
67
71
|
"puppeteer-extra-plugin-stealth": "^2.11.2",
|
|
68
72
|
"react": "^18.3.1",
|
|
73
|
+
"rimraf": "^6.0.0",
|
|
69
74
|
"sparrow-sast": "^1.0.1",
|
|
70
75
|
"strip-ansi": "^7.1.2",
|
|
71
76
|
"stylelint": "^16.25.0",
|
|
@@ -93,10 +98,6 @@
|
|
|
93
98
|
],
|
|
94
99
|
"outputPath": "dist"
|
|
95
100
|
},
|
|
96
|
-
"overrides": {
|
|
97
|
-
"glob": "^13.0.0",
|
|
98
|
-
"rimraf": "^6.0.0"
|
|
99
|
-
},
|
|
100
101
|
"jest": {
|
|
101
102
|
"testEnvironment": "node",
|
|
102
103
|
"transform": {},
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const
|
|
2
|
+
const a0_0x49f75f=a0_0x2204;(function(_0x1847a4,_0x3c801d){const _0x9b768e=a0_0x2204,_0x11b0d9=_0x1847a4();while(!![]){try{const _0x140d00=-parseInt(_0x9b768e(0x103))/0x1*(parseInt(_0x9b768e(0xf8))/0x2)+-parseInt(_0x9b768e(0x11a))/0x3*(-parseInt(_0x9b768e(0x132))/0x4)+parseInt(_0x9b768e(0x11b))/0x5*(-parseInt(_0x9b768e(0x101))/0x6)+-parseInt(_0x9b768e(0x12a))/0x7+-parseInt(_0x9b768e(0x104))/0x8*(-parseInt(_0x9b768e(0x140))/0x9)+parseInt(_0x9b768e(0x11f))/0xa*(-parseInt(_0x9b768e(0x115))/0xb)+parseInt(_0x9b768e(0x10e))/0xc;if(_0x140d00===_0x3c801d)break;else _0x11b0d9['push'](_0x11b0d9['shift']());}catch(_0x527676){_0x11b0d9['push'](_0x11b0d9['shift']());}}}(a0_0x5707,0xe76f0));function a0_0x2204(_0x34c632,_0x111e12){_0x34c632=_0x34c632-0xf5;const _0x5707c=a0_0x5707();let _0x2204c3=_0x5707c[_0x34c632];return _0x2204c3;}import{exec}from'child_process';import{promisify}from'util';import a0_0x192bf2 from'https';import a0_0x1ba7dc from'http';import a0_0x3c53aa from'fs';import a0_0x2068c9 from'path';import{fileURLToPath}from'url';import{createWriteStream}from'fs';import{pipeline}from'stream/promises';const execAsync=promisify(exec),__filename=fileURLToPath(import.meta.url),__dirname=a0_0x2068c9[a0_0x49f75f(0x124)](__filename),SCANNER_DIR=a0_0x2068c9[a0_0x49f75f(0xfd)](__dirname,'..',a0_0x49f75f(0x128),a0_0x49f75f(0x13b)),SEMGREP_VERSION=a0_0x49f75f(0x111);function a0_0x5707(){const _0x4e2dd5=['pip-audit','semgrep\x20--version','\x20\x20Installing\x20Security\x20Scanners','═══════════════════════════════════════════════════════════','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20semgrep\x0a','.scanners','get','\x20\x20\x20✅\x20Python\x20found:\x20','startsWith','then','18DveWiG','═══════════════════════════════════════════════════════════\x0a','\x20\x20\x20Please\x20install\x20manually:\x20https://semgrep.dev/docs/getting-started/\x0a','unlink','\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit','mkdir','Failed\x20to\x20download:\x20HTTP\x20','statusCode','platform','📦\x20Checking\x20ESLint\x20Security\x20Plugin...','headers','\x20\x20\x20✅\x20Semgrep\x20already\x20installed:\x20','bandit','python3','6FKwJUM','\x20\x20\x20You\x20can\x20install\x20manually:\x20pip\x20install\x20','\x20\x20\x20pip\x20install\x20semgrep\x0a','\x20-m\x20pip\x20show\x20','\x0a═══════════════════════════════════════════════════════════','join','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20Semgrep:\x20','\x20\x20\x20⚠️\x20\x20No\x20Semgrep\x20binary\x20available\x20for\x20','yamllint','582ZRvEXX','\x20already\x20installed','470776nrETsk','1194376uUPTaJ','promises','\x20installed\x20successfully','/opt/homebrew','close','arch','checkov','\x20\x20\x20Using\x20system-installed\x20Semgrep\x0a','🐍\x20Checking\x20Python\x20scanners...','trim','39213960YgyOso','\x20\x20\x20Downloading\x20from\x20','catch','v1.55.0','chmod','\x20-c\x20\x22import\x20sys;\x20print(sys.prefix)\x22','exit','13662638wVrJMs','url','...','location','stdout','13347NjjqRJ','44155tZVGBu','\x20\x20\x20⚠️\x20\x20eslint-plugin-security\x20not\x20found','\x20\x20npm\x20install\x20--save-dev\x20eslint-plugin-security','\x20\x20\x20Semgrep\x20not\x20found\x20in\x20PATH,\x20installing\x20standalone\x20binary...','10hNwtFg','pipe','log','\x20\x20\x20To\x20enable\x20Python\x20scanning,\x20install\x20Python\x20and\x20run:','🔍\x20Installing\x20Semgrep...','dirname','eslint-plugin-security','/usr/local/Cellar','\x20\x20\x20✅\x20','node_modules','replace','4932690VljYzJ','python\x20--version','semgrep','error','message','\x20\x20\x20Installing\x20','includes','\x20\x20\x20⚠️\x20\x20Failed\x20to\x20install\x20','1436IXosMa','\x20\x20Platform:\x20','finish','\x20-m\x20pip\x20install\x20'];a0_0x5707=function(){return _0x4e2dd5;};return a0_0x5707();}console[a0_0x49f75f(0x121)](a0_0x49f75f(0x139)),console[a0_0x49f75f(0x121)](a0_0x49f75f(0x138)),console[a0_0x49f75f(0x121)](a0_0x49f75f(0x133)+process[a0_0x49f75f(0x148)]+'\x20('+process[a0_0x49f75f(0x109)]+')'),console['log'](a0_0x49f75f(0x141));async function installScanners(){const _0x371f09=a0_0x49f75f;await a0_0x3c53aa[_0x371f09(0x105)][_0x371f09(0x145)](SCANNER_DIR,{'recursive':!![]}),await checkESLintSecurity(),await installSemgrep(),await installPythonScanners(),console[_0x371f09(0x121)](_0x371f09(0xfc)),console[_0x371f09(0x121)]('\x20\x20Installation\x20Complete'),console[_0x371f09(0x121)](_0x371f09(0x141));}async function checkESLintSecurity(){const _0x15d629=a0_0x49f75f;console['log'](_0x15d629(0x149));try{await import(_0x15d629(0x125)),console[_0x15d629(0x121)]('\x20\x20\x20✅\x20eslint-plugin-security\x20is\x20installed\x0a');}catch(_0x5f3ec4){console[_0x15d629(0x121)](_0x15d629(0x11c)),console[_0x15d629(0x121)]('\x20\x20\x20Run:\x20npm\x20install\x20--save-dev\x20eslint-plugin-security\x0a');}}async function installSemgrep(){const _0x5089c0=a0_0x49f75f;console['log'](_0x5089c0(0x123));const _0x3c93ea=process[_0x5089c0(0x148)],_0x3e5d40=process[_0x5089c0(0x109)];try{const _0x56f680=await execAsync(_0x5089c0(0x137),{'timeout':0x1388});console[_0x5089c0(0x121)](_0x5089c0(0xf5)+_0x56f680[_0x5089c0(0x119)][_0x5089c0(0x10d)]()),console[_0x5089c0(0x121)](_0x5089c0(0x10b));return;}catch(_0x10423d){console[_0x5089c0(0x121)](_0x5089c0(0x11e));}const _0x20be2a=getSemgrepBinaryInfo(_0x3c93ea,_0x3e5d40);if(!_0x20be2a){console[_0x5089c0(0x121)](_0x5089c0(0xff)+_0x3c93ea+'-'+_0x3e5d40),console['log'](_0x5089c0(0x142));return;}try{const _0x52b584=a0_0x2068c9[_0x5089c0(0xfd)](SCANNER_DIR,_0x5089c0(0x12c));console[_0x5089c0(0x121)](_0x5089c0(0x10f)+_0x20be2a[_0x5089c0(0x116)]+_0x5089c0(0x117)),await downloadFile(_0x20be2a[_0x5089c0(0x116)],_0x52b584),await a0_0x3c53aa[_0x5089c0(0x105)][_0x5089c0(0x112)](_0x52b584,0x1ed),console[_0x5089c0(0x121)]('\x20\x20\x20✅\x20Semgrep\x20installed\x20successfully'),console[_0x5089c0(0x121)]('\x20\x20\x20Location:\x20'+_0x52b584+'\x0a'),console['log']('\x20\x20\x20Note:\x20To\x20use\x20system-wide,\x20add\x20to\x20PATH\x20or\x20install\x20globally:'),console['log'](_0x5089c0(0xfa));}catch(_0x408433){console[_0x5089c0(0x121)](_0x5089c0(0xfe)+_0x408433[_0x5089c0(0x12e)]),console[_0x5089c0(0x121)](_0x5089c0(0x13a));}}function getSemgrepBinaryInfo(_0x2ab8e9,_0x324abb){return null;}async function installPythonScanners(){const _0x4bcce6=a0_0x49f75f;console[_0x4bcce6(0x121)](_0x4bcce6(0x10c));let _0x4a6ffe=null;try{await execAsync('python3\x20--version',{'timeout':0x1388}),_0x4a6ffe=_0x4bcce6(0xf7);}catch(_0x45d4e1){try{await execAsync(_0x4bcce6(0x12b),{'timeout':0x1388}),_0x4a6ffe='python';}catch(_0x1d0861){console[_0x4bcce6(0x121)]('\x20\x20\x20⚠️\x20\x20Python\x20not\x20found\x20-\x20skipping\x20Python\x20scanners'),console[_0x4bcce6(0x121)](_0x4bcce6(0x122)),console[_0x4bcce6(0x121)]('\x20\x20\x20pip\x20install\x20semgrep\x20bandit\x20pip-audit\x20checkov\x20yamllint\x0a');return;}}console[_0x4bcce6(0x121)](_0x4bcce6(0x13d)+_0x4a6ffe),await installViaPip('semgrep',_0x4a6ffe),await installViaPip(_0x4bcce6(0xf6),_0x4a6ffe),await installViaPip(_0x4bcce6(0x136),_0x4a6ffe),await installViaPip(_0x4bcce6(0x10a),_0x4a6ffe),await installViaPip(_0x4bcce6(0x100),_0x4a6ffe),console['log']('');}async function isHomebrewPython(_0x2e195a){const _0xe7c520=a0_0x49f75f;try{const {stdout:_0x246dcd}=await execAsync(_0x2e195a+_0xe7c520(0x113),{'timeout':0x1388});return _0x246dcd[_0xe7c520(0x130)](_0xe7c520(0x107))||_0x246dcd[_0xe7c520(0x130)](_0xe7c520(0x126));}catch{return![];}}async function installViaPip(_0x4ae7af,_0xf36423){const _0x5a8453=a0_0x49f75f;try{const _0x50554b=await execAsync(_0xf36423+_0x5a8453(0xfb)+_0x4ae7af,{'timeout':0x1388});return console[_0x5a8453(0x121)](_0x5a8453(0x127)+_0x4ae7af+_0x5a8453(0x102)),!![];}catch(_0x56a5ea){console[_0x5a8453(0x121)](_0x5a8453(0x12f)+_0x4ae7af+'...');try{const _0x195083=await isHomebrewPython(_0xf36423),_0x55399d=_0x195083?'':'--user',_0x36977a=(_0xf36423+_0x5a8453(0x135)+_0x55399d+'\x20'+_0x4ae7af)[_0x5a8453(0x129)](/\s+/g,'\x20')[_0x5a8453(0x10d)]();return await execAsync(_0x36977a,{'timeout':0xea60}),console['log'](_0x5a8453(0x127)+_0x4ae7af+_0x5a8453(0x106)),!![];}catch(_0x133df9){return console[_0x5a8453(0x121)](_0x5a8453(0x131)+_0x4ae7af+':\x20'+_0x133df9[_0x5a8453(0x12e)]),console[_0x5a8453(0x121)](_0x5a8453(0xf9)+_0x4ae7af),![];}}}async function downloadFile(_0x459dab,_0x248c04){return new Promise((_0x237658,_0x6cbeb1)=>{const _0x5ca95b=a0_0x2204,_0x404729=_0x459dab[_0x5ca95b(0x13e)]('https')?a0_0x192bf2:a0_0x1ba7dc;_0x404729[_0x5ca95b(0x13c)](_0x459dab,_0x46c50=>{const _0x14006b=_0x5ca95b;if(_0x46c50[_0x14006b(0x147)]===0x12e||_0x46c50['statusCode']===0x12d){downloadFile(_0x46c50[_0x14006b(0x14a)][_0x14006b(0x118)],_0x248c04)[_0x14006b(0x13f)](_0x237658)['catch'](_0x6cbeb1);return;}if(_0x46c50['statusCode']!==0xc8){_0x6cbeb1(new Error(_0x14006b(0x146)+_0x46c50[_0x14006b(0x147)]));return;}const _0x446d71=createWriteStream(_0x248c04);_0x46c50[_0x14006b(0x120)](_0x446d71),_0x446d71['on'](_0x14006b(0x134),()=>{const _0x382c47=_0x14006b;_0x446d71[_0x382c47(0x108)](),_0x237658();}),_0x446d71['on'](_0x14006b(0x12d),_0x16d8b1=>{const _0x31fb1a=_0x14006b;a0_0x3c53aa[_0x31fb1a(0x143)](_0x248c04,()=>{}),_0x6cbeb1(_0x16d8b1);});})['on'](_0x5ca95b(0x12d),_0x6cbeb1);});}installScanners()[a0_0x49f75f(0x110)](_0x3951d5=>{const _0x360a15=a0_0x49f75f;console[_0x360a15(0x12d)]('❌\x20Installation\x20failed:',_0x3951d5['message']),console['error']('\x0aYou\x20can\x20manually\x20install\x20scanners:'),console[_0x360a15(0x12d)](_0x360a15(0x11d)),console[_0x360a15(0x12d)](_0x360a15(0x144)),process[_0x360a15(0x114)](0x0);});
|
package/scripts/watchdog.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
const a0_0x4907b3=a0_0x41a0;(function(_0x56013b,_0x40683f){const _0x4f1329=a0_0x41a0,_0x184325=_0x56013b();while(!![]){try{const _0x23b561=-parseInt(_0x4f1329(0x1b0))/0x1+parseInt(_0x4f1329(0x190))/0x2*(parseInt(_0x4f1329(0x19d))/0x3)+-parseInt(_0x4f1329(0x1a0))/0x4+-parseInt(_0x4f1329(0x19f))/0x5+-parseInt(_0x4f1329(0x1ae))/0x6*(parseInt(_0x4f1329(0x199))/0x7)+parseInt(_0x4f1329(0x1a8))/0x8+parseInt(_0x4f1329(0x1a6))/0x9;if(_0x23b561===_0x40683f)break;else _0x184325['push'](_0x184325['shift']());}catch(_0x3104a4){_0x184325['push'](_0x184325['shift']());}}}(a0_0x4469,0xca154));const {spawn,execSync}=require(a0_0x4907b3(0x1b1)),path=require('path'),fs=require('fs'),logFile=path[a0_0x4907b3(0x1ab)](__dirname,a0_0x4907b3(0x191));function a0_0x4469(){const _0x43f11d=['[Watchdog]\x20Waiting\x20','945oxHTHr','pid','7576275mdBFgZ','1349844UCPvAh','[Watchdog]\x20Loxia\x20restarted\x20with\x20PID\x20','delay','ignore','[Watchdog]\x20Waiting\x20for\x20parent\x20process\x20','[Watchdog]\x20Started\x20with\x20options:','18459927fpDbsC','command','5548912ujpwnV','--pid','\x20to\x20exit...','join','appendFileSync','exit','642FNUwoM','log','603752miAPDE','child_process','kill','[Watchdog]\x20Watchdog\x20exiting...','slice','--delay','toISOString','5960lCZsmi','watchdog.log','win32','\x20has\x20terminated','now','[Watchdog]\x20Error:\x20','message','[Watchdog]\x20Parent\x20process\x20','--command','26117HifoRL','ms\x20before\x20restart...','unref'];a0_0x4469=function(){return _0x43f11d;};return a0_0x4469();}function log(_0x418210){const _0x4c51e1=a0_0x4907b3,_0x3cf1cd=new Date()[_0x4c51e1(0x18f)](),_0x2abb91='['+_0x3cf1cd+']\x20'+_0x418210+'\x0a';console[_0x4c51e1(0x1af)](_0x418210);try{fs[_0x4c51e1(0x1ac)](logFile,_0x2abb91);}catch(_0x29f9a4){}}function a0_0x41a0(_0x51691a,_0x4def8a){_0x51691a=_0x51691a-0x18f;const _0x4469eb=a0_0x4469();let _0x41a0b7=_0x4469eb[_0x51691a];return _0x41a0b7;}log('[Watchdog]\x20Script\x20loaded');function parseArgs(){const _0x3608e6=a0_0x4907b3,_0x290742=process['argv'][_0x3608e6(0x1b4)](0x2),_0x272b08={'delay':0x1388,'command':'loxia\x20web','pid':null};for(let _0x56b0d1=0x0;_0x56b0d1<_0x290742['length'];_0x56b0d1++){switch(_0x290742[_0x56b0d1]){case _0x3608e6(0x1b5):_0x272b08[_0x3608e6(0x1a2)]=parseInt(_0x290742[++_0x56b0d1],0xa)||0x1388;break;case _0x3608e6(0x198):_0x272b08['command']=_0x290742[++_0x56b0d1]||'loxia\x20web';break;case _0x3608e6(0x1a9):_0x272b08[_0x3608e6(0x19e)]=parseInt(_0x290742[++_0x56b0d1],0xa)||null;break;}}return _0x272b08;}function isProcessRunning(_0xcb55d4){const _0x1e054d=a0_0x4907b3;try{return process[_0x1e054d(0x1b2)](_0xcb55d4,0x0),!![];}catch(_0x5d94c7){return![];}}async function waitForParentExit(_0x39f8b1,_0x23951d=0x7530){const _0xc993e7=a0_0x4907b3;if(!_0x39f8b1)return;const _0x9d9479=Date[_0xc993e7(0x194)]();while(isProcessRunning(_0x39f8b1)){if(Date['now']()-_0x9d9479>_0x23951d){log('[Watchdog]\x20Parent\x20process\x20'+_0x39f8b1+'\x20still\x20running\x20after\x20'+_0x23951d+'ms,\x20proceeding\x20anyway');return;}await new Promise(_0x2f8a38=>setTimeout(_0x2f8a38,0x1f4));}log(_0xc993e7(0x197)+_0x39f8b1+_0xc993e7(0x193));}async function main(){const _0x1dfaa6=a0_0x4907b3,_0x4da5d4=parseArgs();log(_0x1dfaa6(0x1a5),{'delay':_0x4da5d4['delay'],'command':_0x4da5d4[_0x1dfaa6(0x1a7)],'pid':_0x4da5d4[_0x1dfaa6(0x19e)]});_0x4da5d4[_0x1dfaa6(0x19e)]&&(log(_0x1dfaa6(0x1a4)+_0x4da5d4[_0x1dfaa6(0x19e)]+_0x1dfaa6(0x1aa)),await waitForParentExit(_0x4da5d4[_0x1dfaa6(0x19e)]));log(_0x1dfaa6(0x19c)+_0x4da5d4[_0x1dfaa6(0x1a2)]+_0x1dfaa6(0x19a)),await new Promise(_0x2650f8=>setTimeout(_0x2650f8,_0x4da5d4[_0x1dfaa6(0x1a2)]));const _0x25fe70=_0x4da5d4[_0x1dfaa6(0x1a7)]['split']('\x20'),_0x856187=_0x25fe70[0x0],_0x400275=_0x25fe70['slice'](0x1);log('[Watchdog]\x20Executing:\x20'+_0x856187+'\x20'+_0x400275[_0x1dfaa6(0x1ab)]('\x20'));const _0x1548cc=process['platform']===_0x1dfaa6(0x192),_0x5c8f8b=spawn(_0x856187,_0x400275,{'detached':!![],'stdio':_0x1dfaa6(0x1a3),'shell':!![],'windowsHide':![]});_0x5c8f8b[_0x1dfaa6(0x19b)](),log(_0x1dfaa6(0x1a1)+_0x5c8f8b['pid']),log(_0x1dfaa6(0x1b3)),setTimeout(()=>process[_0x1dfaa6(0x1ad)](0x0),0x3e8);}main()['catch'](_0x483034=>{const _0x25de51=a0_0x4907b3;log(_0x25de51(0x195)+_0x483034[_0x25de51(0x196)]),process['exit'](0x1);});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a0_0x4f5d3a=a0_0x686c;function a0_0x1d1e(){const _0x478946=['ntGZmta3m2juu2jezW','CM9VDa','zgv0zwn0tgfUz3vHz2u','y29SDw1U','C3r5BgvSAw50','C291CMnL','BgLUzq','y2HLy2TtEw50yxG','Bg9Nz2vY','CMvHC29U','mtjQyLnpy1C','BgvUz3rO','zgvIDwC','y3nZ','B3b0Aw1PEMu','mJm5nJeYohfbqvzgza','zMLSDgvY','zxjYB3i','lMXLC3m','BMfTzq','zgvMyxvSDa','zwXZzq','q0furuDpuLK','Cg9ZDgnZCY1SzxnZ','Cg9ZDgnZCY1Zy3nZ','Bg93zxi','C3r5BgvSAw50lwnVBMzPzY1ZDgfUzgfYza','q1ntigfUywX5C2LZigzHAwXLza','lNnHC3m','ofPLrwXpsa','BgLUDfn0EwXLCW','mJC5ndvMy1jktLm','u0vwrvjjvfK','mta5nda5odbtuKjcCvy','BwvZC2fNzq','nti0D3rzwuXr','mtu3mduYnhLSCMLtEq','nJzfrhnlz0K','y2f0zwDVCML6zvn0EwXLBgLUDfj1Bgu','Aw5JBhvKzxm','C3vWCg9YDhnbDxrVrML4','rvjst1i','zM9YD2fYza','l15JDxn0B20TlW','v0fstKLorW','u1Lovefy','mta5odGYnxrkr0HMzW','zg91yMXL','zw5KC1DPDgG','ChvZAa','Dg9mB3DLCKnHC2u','BgLUDa','u1rzteu','mty1ogjsB2Tyzq','C2nZCW','BM8TAw52ywXPza','oda0Ee1yBvjS','q1ntigfUywX5C2LZignVBxbSzxrLza','yMvZDc1WCMfJDgLJzq','lNnJC3m','C2v2zxjPDhK','Cg9ZDgnZCW','lMnZCW','D2fYBMLUz3m','CgvYzM9YBwfUy2u'];a0_0x1d1e=function(){return _0x478946;};return a0_0x1d1e();}(function(_0x360968,_0x1bf446){const _0x4b7387=a0_0x686c,_0x38e5de=_0x360968();while(!![]){try{const _0x53fef3=-parseInt(_0x4b7387(0x132))/0x1*(-parseInt(_0x4b7387(0x12f))/0x2)+parseInt(_0x4b7387(0x128))/0x3+parseInt(_0x4b7387(0x15e))/0x4*(-parseInt(_0x4b7387(0x15a))/0x5)+-parseInt(_0x4b7387(0x145))/0x6*(parseInt(_0x4b7387(0x14a))/0x7)+-parseInt(_0x4b7387(0x158))/0x8*(-parseInt(_0x4b7387(0x13b))/0x9)+parseInt(_0x4b7387(0x15c))/0xa+parseInt(_0x4b7387(0x160))/0xb*(-parseInt(_0x4b7387(0x15f))/0xc);if(_0x53fef3===_0x1bf446)break;else _0x38e5de['push'](_0x38e5de['shift']());}catch(_0x3200d1){_0x38e5de['push'](_0x38e5de['shift']());}}}(a0_0x1d1e,0x8bd55));import{STATIC_ANALYSIS}from'../utilities/constants.js';function a0_0x686c(_0xb73913,_0x461d03){_0xb73913=_0xb73913-0x123;const _0x1d1e18=a0_0x1d1e();let _0x686c6a=_0x1d1e18[_0xb73913];if(a0_0x686c['eQDtqf']===undefined){var _0x415d3d=function(_0x5bcf84){const _0x147cac='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x22bfea='',_0x3174a2='';for(let _0xe4d972=0x0,_0x1d27b2,_0x49e421,_0x3ce00c=0x0;_0x49e421=_0x5bcf84['charAt'](_0x3ce00c++);~_0x49e421&&(_0x1d27b2=_0xe4d972%0x4?_0x1d27b2*0x40+_0x49e421:_0x49e421,_0xe4d972++%0x4)?_0x22bfea+=String['fromCharCode'](0xff&_0x1d27b2>>(-0x2*_0xe4d972&0x6)):0x0){_0x49e421=_0x147cac['indexOf'](_0x49e421);}for(let _0x159c3e=0x0,_0x38089f=_0x22bfea['length'];_0x159c3e<_0x38089f;_0x159c3e++){_0x3174a2+='%'+('00'+_0x22bfea['charCodeAt'](_0x159c3e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3174a2);};a0_0x686c['zmgtEF']=_0x415d3d,a0_0x686c['yQysyp']={},a0_0x686c['eQDtqf']=!![];}const _0x30c985=_0x1d1e18[0x0],_0x22eb27=_0xb73913+_0x30c985,_0x50649a=a0_0x686c['yQysyp'][_0x22eb27];return!_0x50649a?(_0x686c6a=a0_0x686c['zmgtEF'](_0x686c6a),a0_0x686c['yQysyp'][_0x22eb27]=_0x686c6a):_0x686c6a=_0x50649a,_0x686c6a;}class CSSAnalyzer{constructor(_0x22bfea=null){const _0xc1c957=a0_0x686c;this['logger']=_0x22bfea,this['stylelint']=null,this[_0xc1c957(0x137)]=null,this['postcssScss']=null,this['postcssLess']=null;}async['analyze'](_0x3174a2,_0xe4d972,_0x1d27b2={}){const _0xf9ffd0=a0_0x686c;try{const _0x49e421=[],_0x3ce00c=this[_0xf9ffd0(0x13d)](_0x3174a2),_0x159c3e=await this[_0xf9ffd0(0x142)](_0x3174a2,_0xe4d972,_0x3ce00c);_0x49e421[_0xf9ffd0(0x12b)](..._0x159c3e);if(_0x159c3e['length']===0x0){const _0x38089f=await this['lintStyles'](_0x3174a2,_0xe4d972,_0x3ce00c);_0x49e421[_0xf9ffd0(0x12b)](..._0x38089f);}return this['logger']?.[_0xf9ffd0(0x147)](_0xf9ffd0(0x133),{'file':_0x3174a2,'language':_0x3ce00c,'totalDiagnostics':_0x49e421['length'],'errors':_0x49e421['filter'](_0x4d24b0=>_0x4d24b0[_0xf9ffd0(0x136)]===STATIC_ANALYSIS['SEVERITY'][_0xf9ffd0(0x123)])[_0xf9ffd0(0x146)],'warnings':_0x49e421[_0xf9ffd0(0x14b)](_0x2bc819=>_0x2bc819['severity']===STATIC_ANALYSIS['SEVERITY']['WARNING'])['length']}),_0x49e421;}catch(_0x5bc610){return this['logger']?.[_0xf9ffd0(0x14c)](_0xf9ffd0(0x156),{'file':_0x3174a2,'error':_0x5bc610['message']}),[];}}async['checkSyntax'](_0x5a9923,_0x19ee76,_0x143827){const _0x4ff1c1=a0_0x686c,_0x2ba9aa=[];try{if(!this[_0x4ff1c1(0x137)]){const _0x4f8078=await import('postcss');this['postcss']=_0x4f8078[_0x4ff1c1(0x14f)];}let _0x2413ea=null;if(_0x143827==='scss'){if(!this['postcssScss']){const _0x62c978=await import(_0x4ff1c1(0x153));this['postcssScss']=_0x62c978['default'];}_0x2413ea=this['postcssScss'];}else{if(_0x143827==='less'){if(!this['postcssLess']){const _0x2e3256=await import(_0x4ff1c1(0x152));this['postcssLess']=_0x2e3256[_0x4ff1c1(0x14f)];}_0x2413ea=this['postcssLess'];}}const _0x1c3b0f=this[_0x4ff1c1(0x137)]()['process'](_0x19ee76,{'from':_0x5a9923,'syntax':_0x2413ea}),_0x3d9654=_0x1c3b0f[_0x4ff1c1(0x13c)];this['logger']?.['debug']('PostCSS\x20syntax\x20check\x20passed',{'file':_0x5a9923});}catch(_0x23af03){const _0x6fbc5e=this['formatPostCSSError'](_0x23af03,_0x5a9923);_0x6fbc5e&&_0x2ba9aa['push'](_0x6fbc5e);}return _0x2ba9aa;}async[a0_0x4f5d3a(0x159)](_0x4aea89,_0x51ebf0,_0x341349){const _0x2d7b44=a0_0x4f5d3a,_0x1eb223=[];try{if(!this[_0x2d7b44(0x13f)]){const _0x393e4a=await import('stylelint');this['stylelint']=_0x393e4a[_0x2d7b44(0x14f)];}const _0x3d1f8e={'extends':[_0x2d7b44(0x155)],'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':[_0x2d7b44(0x125),'ng-deep']}],'media-feature-name-no-unknown':!![],'at-rule-no-unknown':_0x341349===_0x2d7b44(0x130)?[!![],{'ignoreAtRules':['mixin','include','extend','if',_0x2d7b44(0x150),'for','each','while','function','return','content','use',_0x2d7b44(0x124)]}]:_0x341349==='less'?[!![],{'ignoreAtRules':['plugin']}]:!![],'comment-no-empty':!![],'no-duplicate-selectors':!![],'no-empty-source':null,'block-no-empty':!![],'declaration-block-no-shorthand-property-overrides':!![],'font-family-no-missing-generic-family-keyword':!![],'function-linear-gradient-no-nonstandard-direction':!![],'no-descending-specificity':null,'no-duplicate-at-import-rules':!![],'no-extra-semicolons':!![],'no-invalid-double-slash-comments':!![],'selector-pseudo-element-colon-notation':_0x2d7b44(0x129),'selector-type-case':_0x2d7b44(0x154)},'customSyntax':_0x341349==='scss'?'postcss-scss':_0x341349==='less'?'postcss-less':undefined},_0x63f792=await this[_0x2d7b44(0x13f)][_0x2d7b44(0x12d)]({'code':_0x51ebf0,'codeFilename':_0x4aea89,'config':_0x3d1f8e});if(_0x63f792['results']&&_0x63f792['results']['length']>0x0){const _0x28d770=_0x63f792['results'][0x0];if(_0x28d770['warnings'])for(const _0x452086 of _0x28d770[_0x2d7b44(0x139)]){_0x1eb223['push']({'file':_0x4aea89,'line':_0x452086[_0x2d7b44(0x141)]||0x1,'column':_0x452086['column']||0x1,'severity':_0x452086[_0x2d7b44(0x136)]===_0x2d7b44(0x14c)?STATIC_ANALYSIS[_0x2d7b44(0x15b)]['ERROR']:STATIC_ANALYSIS[_0x2d7b44(0x15b)][_0x2d7b44(0x126)],'rule':_0x452086['rule']||'unknown','message':_0x452086['text'],'category':this[_0x2d7b44(0x161)](_0x452086['rule']),'fixable':![],'source':_0x2d7b44(0x13f)});}}}catch(_0x320008){this[_0x2d7b44(0x143)]?.['warn']('Stylelint\x20analysis\x20failed',{'file':_0x4aea89,'error':_0x320008[_0x2d7b44(0x15d)]});}return _0x1eb223;}['formatPostCSSError'](_0x2acd59,_0x576956){const _0x3b52cb=a0_0x4f5d3a;return{'file':_0x576956,'line':_0x2acd59[_0x3b52cb(0x141)]||0x1,'column':_0x2acd59[_0x3b52cb(0x13e)]||0x1,'severity':STATIC_ANALYSIS['SEVERITY']['ERROR'],'rule':_0x2acd59[_0x3b52cb(0x14e)]||'CssSyntaxError','message':_0x2acd59[_0x3b52cb(0x144)]||_0x2acd59['message'],'category':STATIC_ANALYSIS['CATEGORY'][_0x3b52cb(0x127)],'fixable':![],'source':'postcss','code':_0x2acd59[_0x3b52cb(0x140)]||undefined};}[a0_0x4f5d3a(0x161)](_0x3f9e14){const _0x359ddd=a0_0x4f5d3a;if(!_0x3f9e14)return STATIC_ANALYSIS[_0x359ddd(0x151)][_0x359ddd(0x12e)];const _0x5124f7=_0x3f9e14[_0x359ddd(0x12c)]();if(_0x5124f7['includes'](_0x359ddd(0x131))||_0x5124f7['includes']('no-unknown')||_0x5124f7[_0x359ddd(0x162)]('no-empty')||_0x5124f7[_0x359ddd(0x162)]('syntax'))return STATIC_ANALYSIS[_0x359ddd(0x151)][_0x359ddd(0x127)];if(_0x5124f7[_0x359ddd(0x162)](_0x359ddd(0x13a))||_0x5124f7['includes'](_0x359ddd(0x149)))return STATIC_ANALYSIS['CATEGORY']['PERFORMANCE'];if(_0x5124f7[_0x359ddd(0x162)](_0x359ddd(0x134))||_0x5124f7[_0x359ddd(0x162)]('recommended'))return STATIC_ANALYSIS['CATEGORY']['BEST_PRACTICE'];return STATIC_ANALYSIS['CATEGORY']['STYLE'];}['detectLanguage'](_0x1a8706){const _0xdf9f93=a0_0x4f5d3a,_0x5f54c5=_0x1a8706[_0xdf9f93(0x12c)]();if(_0x5f54c5['endsWith'](_0xdf9f93(0x135))||_0x5f54c5['endsWith'](_0xdf9f93(0x157)))return'scss';if(_0x5f54c5[_0xdf9f93(0x12a)]('.less'))return'less';return _0xdf9f93(0x148);}['getSupportedExtensions'](){const _0x2d4222=a0_0x4f5d3a;return[_0x2d4222(0x138),'.scss',_0x2d4222(0x157),_0x2d4222(0x14d)];}[a0_0x4f5d3a(0x163)](){return![];}}export default CSSAnalyzer;
|