@loxia-labs/loxia-autopilot-one 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.js +1 -1
  3. package/bin/loxia-terminal-v2.js +1 -1
  4. package/bin/loxia-terminal.js +1 -1
  5. package/bin/start-with-terminal.js +1 -1
  6. package/package.json +1 -1
  7. package/scripts/install-scanners.js +1 -1
  8. package/src/analyzers/CSSAnalyzer.js +1 -1
  9. package/src/analyzers/ConfigValidator.js +1 -1
  10. package/src/analyzers/ESLintAnalyzer.js +1 -1
  11. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  12. package/src/analyzers/PrettierFormatter.js +1 -1
  13. package/src/analyzers/PythonAnalyzer.js +1 -1
  14. package/src/analyzers/SecurityAnalyzer.js +1 -1
  15. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  16. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  17. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  18. package/src/analyzers/codeCloneDetector/index.js +1 -1
  19. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  20. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  21. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  22. package/src/core/agentPool.js +1 -1
  23. package/src/core/agentScheduler.js +1 -1
  24. package/src/core/contextManager.js +1 -1
  25. package/src/core/messageProcessor.js +1 -1
  26. package/src/core/orchestrator.js +1 -1
  27. package/src/core/stateManager.js +1 -1
  28. package/src/index.js +1 -1
  29. package/src/interfaces/cli.js +1 -1
  30. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  31. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  32. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  38. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  39. package/src/interfaces/terminal/api/apiClient.js +1 -1
  40. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  41. package/src/interfaces/terminal/api/session.js +1 -1
  42. package/src/interfaces/terminal/api/websocket.js +1 -1
  43. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  44. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  45. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  46. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  47. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  48. package/src/interfaces/terminal/components/Header.js +1 -1
  49. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  50. package/src/interfaces/terminal/components/InputBox.js +1 -1
  51. package/src/interfaces/terminal/components/Layout.js +1 -1
  52. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  53. package/src/interfaces/terminal/components/MessageList.js +1 -1
  54. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  55. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  56. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  57. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  58. package/src/interfaces/terminal/components/TextInput.js +1 -1
  59. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  60. package/src/interfaces/terminal/config/constants.js +1 -1
  61. package/src/interfaces/terminal/index.js +1 -1
  62. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  63. package/src/interfaces/terminal/state/useAgents.js +1 -1
  64. package/src/interfaces/terminal/state/useConnection.js +1 -1
  65. package/src/interfaces/terminal/state/useMessages.js +1 -1
  66. package/src/interfaces/terminal/state/useTools.js +1 -1
  67. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  68. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  69. package/src/interfaces/terminal/utils/theme.js +1 -1
  70. package/src/interfaces/webServer.js +1 -1
  71. package/src/modules/fileExplorer/controller.js +1 -1
  72. package/src/modules/fileExplorer/index.js +1 -1
  73. package/src/modules/fileExplorer/middleware.js +1 -1
  74. package/src/modules/fileExplorer/routes.js +1 -1
  75. package/src/services/aiService.js +1 -1
  76. package/src/services/apiKeyManager.js +1 -1
  77. package/src/services/benchmarkService.js +1 -1
  78. package/src/services/budgetService.js +1 -1
  79. package/src/services/contextInjectionService.js +1 -1
  80. package/src/services/conversationCompactionService.js +1 -1
  81. package/src/services/errorHandler.js +1 -1
  82. package/src/services/fileAttachmentService.js +1 -1
  83. package/src/services/modelRouterService.js +1 -1
  84. package/src/services/modelsService.js +1 -1
  85. package/src/services/qualityInspector.js +1 -1
  86. package/src/services/tokenCountingService.js +1 -1
  87. package/src/tools/agentCommunicationTool.js +1 -1
  88. package/src/tools/agentDelayTool.js +1 -1
  89. package/src/tools/asyncToolManager.js +1 -1
  90. package/src/tools/baseTool.js +1 -1
  91. package/src/tools/browserTool.js +1 -1
  92. package/src/tools/cloneDetectionTool.js +1 -1
  93. package/src/tools/dependencyResolverTool.js +1 -1
  94. package/src/tools/fileContentReplaceTool.js +1 -1
  95. package/src/tools/fileSystemTool.js +1 -1
  96. package/src/tools/fileTreeTool.js +1 -1
  97. package/src/tools/imageTool.js +1 -1
  98. package/src/tools/importAnalyzerTool.js +1 -1
  99. package/src/tools/jobDoneTool.js +1 -1
  100. package/src/tools/seekTool.js +1 -1
  101. package/src/tools/staticAnalysisTool.js +1 -1
  102. package/src/tools/taskManagerTool.js +1 -1
  103. package/src/tools/terminalTool.js +1 -1
  104. package/src/tools/webTool.js +1 -1
  105. package/src/types/agent.js +1 -1
  106. package/src/types/contextReference.js +1 -1
  107. package/src/types/conversation.js +1 -1
  108. package/src/types/toolCommand.js +1 -1
  109. package/src/utilities/attachmentValidator.js +1 -1
  110. package/src/utilities/configManager.js +1 -1
  111. package/src/utilities/constants.js +1 -1
  112. package/src/utilities/directoryAccessManager.js +1 -1
  113. package/src/utilities/fileProcessor.js +1 -1
  114. package/src/utilities/logger.js +1 -1
  115. package/src/utilities/tagParser.js +1 -1
  116. package/src/utilities/toolConstants.js +1 -1
  117. package/web-ui/build/index.html +2 -2
  118. package/web-ui/build/static/{index-BzXbDs8z.js → index-C5X7qBNF.js} +63 -63
  119. package/web-ui/build/static/index-g2UFuTwG.css +1 -0
  120. package/web-ui/build/static/index-BmKxmRe3.css +0 -1
@@ -1 +1 @@
1
- (function(_0x1e2f8e,_0x525a70){const _0x6b49e=a0_0x5d0b,_0x3b7756=_0x1e2f8e();while(!![]){try{const _0x10f28e=-parseInt(_0x6b49e(0xc8))/0x1+-parseInt(_0x6b49e(0xc3))/0x2+parseInt(_0x6b49e(0xc2))/0x3+parseInt(_0x6b49e(0xdb))/0x4*(parseInt(_0x6b49e(0xeb))/0x5)+-parseInt(_0x6b49e(0xb4))/0x6*(-parseInt(_0x6b49e(0xd1))/0x7)+-parseInt(_0x6b49e(0xcc))/0x8+-parseInt(_0x6b49e(0xdd))/0x9*(-parseInt(_0x6b49e(0xaa))/0xa);if(_0x10f28e===_0x525a70)break;else _0x3b7756['push'](_0x3b7756['shift']());}catch(_0x458ebb){_0x3b7756['push'](_0x3b7756['shift']());}}}(a0_0x1b24,0x78973));function a0_0x5d0b(_0x5a58bd,_0x16e04a){_0x5a58bd=_0x5a58bd-0xa8;const _0x1b24b6=a0_0x1b24();let _0x5d0b25=_0x1b24b6[_0x5a58bd];if(a0_0x5d0b['xnVynf']===undefined){var _0x11720e=function(_0x53b50b){const _0x5cdbcc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f8e5c='',_0x24ce3b='';for(let _0x18f9f6=0x0,_0x3fa602,_0x59fe01,_0x347d8f=0x0;_0x59fe01=_0x53b50b['charAt'](_0x347d8f++);~_0x59fe01&&(_0x3fa602=_0x18f9f6%0x4?_0x3fa602*0x40+_0x59fe01:_0x59fe01,_0x18f9f6++%0x4)?_0x1f8e5c+=String['fromCharCode'](0xff&_0x3fa602>>(-0x2*_0x18f9f6&0x6)):0x0){_0x59fe01=_0x5cdbcc['indexOf'](_0x59fe01);}for(let _0x1ebeab=0x0,_0x2ac042=_0x1f8e5c['length'];_0x1ebeab<_0x2ac042;_0x1ebeab++){_0x24ce3b+='%'+('00'+_0x1f8e5c['charCodeAt'](_0x1ebeab)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x24ce3b);};a0_0x5d0b['XTbrQf']=_0x11720e,a0_0x5d0b['FULsLC']={},a0_0x5d0b['xnVynf']=!![];}const _0x12757d=_0x1b24b6[0x0],_0xa8828=_0x5a58bd+_0x12757d,_0x4fbd98=a0_0x5d0b['FULsLC'][_0xa8828];return!_0x4fbd98?(_0x5d0b25=a0_0x5d0b['XTbrQf'](_0x5d0b25),a0_0x5d0b['FULsLC'][_0xa8828]=_0x5d0b25):_0x5d0b25=_0x4fbd98,_0x5d0b25;}import{describe,test,expect}from'@jest/globals';import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function a0_0x1b24(){const _0x4bf8c8=['BM90','tKvuv09ssW','Dg9iyxzLuhjVCgvYDhK','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','DxnL','ywXSB3DLzc10ExbL','Bg94AwfbCgLlzxK','BM90lweTzNvUy3rPB24','z2vUzxjHDgvszxf1zxn0swq','mtaYmZaWoxLJtLrbwG','mtqZmdeYohDuzK9ota','y29UBMvJDgvK','Dg9czuDYzwf0zxjuAgfUt3jfCxvHBa','q09otKvdveLptL9tvefurq','Dg9nyxrJAa','mJKYnJy2BgnMqLnb','lI4VlI4VyxbPl3nLC3nPB24UANm','BwLKzgXLD2fYzq','z2v0u3rHDgu','mJiZntC2oerkrw5oBW','Dg9czq','D3m6lY9SB2nHBgHVC3q6oda4ma','u2vZC2LVBK1HBMfNzxiGy2XLyxiOksbYzxnLDhmGywXSihn0yxrL','A2v5','mJHUz3HLyxa','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','zNvUy3rPB24','quDftLrFtu9erq','DgvZDa','BgvUz3rO','Ag9ZDa','u2vZC2LVBK1HBMfNzxiGAgvSCgvYig1LDgHVzhmGD29YAW','uefhsu5bveLptG','reLtq09otKvdveve','mtaYntzUrMXtyNK','z2v0u3rHDhm','nZqWn3jpzwz2qG','veLnsu5h','CMvJB25Uzwn0qxr0zw1WDhm','Bg9JywXOB3n0','AgfZsgfUzgXLCG','yMfZzvvYBa','BNvTyMvY','vuLFreLnru5tsu9ouW','DgvZDc1TzxnZywDL','tuvtu0fhrv9brerfra','Dg9czuDYzwf0zxjuAgfU','DgvZDc1RzxK','C3rHDgu','AgfZtg94AwflzxK','mtq5nxbKwef1CW','Cg9YDa','ChjVAMvJDerPCG','v0vcu09ds0vux1bjtKDFsu5urvjwquW','DMvUzg9Ys2v5C0nVDw50','u2vZC2LVBK1HBMfNzxiGAw5PDgLHBgL6zxmGD2L0AcbJB3jYzwn0ihn0yxrL','C2vZC2LVBKLK','mZC1mgPeqwHAua','DgvZDc1OB3n0','yMXVy2TLzc10ExbL','Ahr0CdOVl2XVy2fSAg9ZDdO4mdGW','AxnwywXPza','u0LerujbuL9xsurusa','z2v0u2vZC2LVBKLK','twvZC2fNzvjVDxrLCIb0AhjVD3mGB24GAw52ywXPzcbOyw5KBgvY','DxjS','y2XLyxi','ntq3mZe0z3DowgvW','q29UC3rHBNrZigHHDMuGBM8GBwfNAwmGBNvTyMvYCW','Dg9czurLzMLUzwq','quDftLrFtu9erv9dsefor0ve','z2v0u2vZC2LVBKLUzM8'];a0_0x1b24=function(){return _0x4bf8c8;};return a0_0x1b24();}describe('Terminal\x20UI\x20Infrastructure\x20-\x20Imports',()=>{test('constants module exports all required constants',async()=>{const _0x3f4030=a0_0x5d0b,_0x1f8e5c=await import('../../config/constants.js');expect(_0x1f8e5c['UI_DIMENSIONS'])[_0x3f4030(0xb6)](),expect(_0x1f8e5c['MESSAGE_CONFIG'])[_0x3f4030(0xb6)](),expect(_0x1f8e5c[_0x3f4030(0xd9)])[_0x3f4030(0xb6)](),expect(_0x1f8e5c['TIMING'])[_0x3f4030(0xb6)](),expect(_0x1f8e5c['NETWORK'])['toBeDefined'](),expect(_0x1f8e5c[_0x3f4030(0xc6)])['toBeDefined'](),expect(_0x1f8e5c[_0x3f4030(0xd4)])['toBeDefined'](),expect(_0x1f8e5c['WS_MESSAGE_TYPE'])[_0x3f4030(0xb6)](),expect(_0x1f8e5c['API_ENDPOINTS'])['toBeDefined'](),expect(_0x1f8e5c['COMMANDS'])['toBeDefined'](),expect(_0x1f8e5c[_0x3f4030(0xba)]['DEFAULT_HOST'])[_0x3f4030(0xcd)]('localhost'),expect(_0x1f8e5c[_0x3f4030(0xba)]['DEFAULT_PORT'])[_0x3f4030(0xcd)](0x1f90),expect(_0x1f8e5c[_0x3f4030(0xc6)]['DISCONNECTED'])['toBe']('disconnected'),expect(_0x1f8e5c[_0x3f4030(0xc6)]['CONNECTED'])[_0x3f4030(0xcd)](_0x3f4030(0xc4));}),test('WebSocketManager class can be imported',async()=>{const _0x1935af=a0_0x5d0b,{WebSocketManager:_0x24ce3b}=await import('../../api/websocket.js');expect(_0x24ce3b)['toBeDefined'](),expect(typeof _0x24ce3b)[_0x1935af(0xcd)]('function');const _0x18f9f6=new _0x24ce3b('localhost',0x1f90);expect(_0x18f9f6)['toBeDefined'](),expect(_0x18f9f6[_0x1935af(0xd7)])['toBe']('localhost'),expect(_0x18f9f6[_0x1935af(0xec)])[_0x1935af(0xcd)](0x1f90),expect(_0x18f9f6[_0x1935af(0xb2)])['toBe'](_0x1935af(0xce));}),test('SessionManager class can be imported',async()=>{const _0xeb34a=a0_0x5d0b,{SessionManager:_0x3fa602}=await import('../../api/session.js');expect(_0x3fa602)[_0xeb34a(0xb6)](),expect(typeof _0x3fa602)[_0xeb34a(0xcd)]('function');const _0x59fe01=new _0x3fa602('localhost',0x1f90);expect(_0x59fe01)['toBeDefined'](),expect(_0x59fe01['host'])['toBe'](_0xeb34a(0xe0)),expect(_0x59fe01[_0xeb34a(0xec)])[_0xeb34a(0xcd)](0x1f90),expect(_0x59fe01[_0xeb34a(0xe2)])[_0xeb34a(0xcd)](_0xeb34a(0xad));}),test('MessageRouter class can be imported',async()=>{const _0x1fe0eb=a0_0x5d0b,{MessageRouter:_0x347d8f}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x1ebeab}=await import(_0x1fe0eb(0xbc));expect(_0x347d8f)[_0x1fe0eb(0xb6)](),expect(typeof _0x347d8f)['toBe']('function');const _0x2ac042=new _0x1ebeab(_0x1fe0eb(0xe0),0x1f90),_0xec0f93=new _0x347d8f(_0x2ac042);expect(_0xec0f93)['toBeDefined'](),expect(_0xec0f93['ws'])['toBe'](_0x2ac042);}),test('MessageRouter middleware helpers can be imported',async()=>{const _0x245f54=a0_0x5d0b,{loggingMiddleware:_0x162b7c,filterMiddleware:_0x1b05c6,transformMiddleware:_0x431b37,timestampMiddleware:_0x3625e7,validationMiddleware:_0x5bc838}=await import('../../api/messageRouter.js');expect(typeof _0x162b7c)[_0x245f54(0xcd)]('function'),expect(typeof _0x1b05c6)[_0x245f54(0xcd)](_0x245f54(0xd3)),expect(typeof _0x431b37)[_0x245f54(0xcd)](_0x245f54(0xd3)),expect(typeof _0x3625e7)[_0x245f54(0xcd)](_0x245f54(0xd3)),expect(typeof _0x5bc838)[_0x245f54(0xcd)]('function');}),test('useConnection hook can be imported',async()=>{const _0x1ccf4a=a0_0x5d0b,{useConnection:_0x444599,useConnectionStatus:_0x5658e8}=await import('../../state/useConnection.js');expect(_0x444599)[_0x1ccf4a(0xb6)](),expect(typeof _0x444599)['toBe'](_0x1ccf4a(0xd3)),expect(_0x5658e8)['toBeDefined'](),expect(typeof _0x5658e8)['toBe'](_0x1ccf4a(0xd3));});}),describe('Terminal\x20UI\x20Infrastructure\x20-\x20Basic\x20Functionality',()=>{const _0xf0eba2=a0_0x5d0b;test('WebSocketManager\x20initializes\x20with\x20correct\x20state',async()=>{const _0x2a501c=a0_0x5d0b,{WebSocketManager:_0x34f14e}=await import('../../api/websocket.js'),{CONNECTION_STATE:_0x5a7744}=await import(_0x2a501c(0xd2)),_0x53d2b3=new _0x34f14e('test-host',0x2382);expect(_0x53d2b3[_0x2a501c(0xe9)])[_0x2a501c(0xcd)](_0x5a7744[_0x2a501c(0xda)]),expect(_0x53d2b3['sessionId'])[_0x2a501c(0xcd)](null),expect(_0x53d2b3['messageQueue'])['toEqual']([]),expect(_0x53d2b3[_0x2a501c(0xdf)])[_0x2a501c(0xcd)](0x0),expect(_0x53d2b3['shouldReconnect'])['toBe'](!![]);}),test(_0xf0eba2(0xa8),async()=>{const _0x14baf7=_0xf0eba2,{SessionManager:_0x492365}=await import(_0x14baf7(0xc9)),_0x317363=new _0x492365(_0x14baf7(0xab),0x2382);expect(_0x317363[_0x14baf7(0xa9)])[_0x14baf7(0xcd)](null),expect(_0x317363['projectDir'])[_0x14baf7(0xcd)](null),expect(_0x317363[_0x14baf7(0xbf)])[_0x14baf7(0xcd)](null),expect(_0x317363['vendorKeys'])['toEqual']({}),expect(_0x317363[_0x14baf7(0xae)]())['toBe'](![]);}),test('MessageRouter initializes with default handlers',async()=>{const _0x5eebb7=_0xf0eba2,{MessageRouter:_0x184d48}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x1073c1}=await import(_0x5eebb7(0xbc)),{WS_MESSAGE_TYPE:_0x116f69}=await import('../../config/constants.js'),_0x573b8f=new _0x1073c1(_0x5eebb7(0xe0),0x1f90),_0x2fd90f=new _0x184d48(_0x573b8f);expect(_0x2fd90f[_0x5eebb7(0xe1)](_0x116f69[_0x5eebb7(0xe6)]))[_0x5eebb7(0xcd)](!![]),expect(_0x2fd90f['hasHandler'](_0x116f69[_0x5eebb7(0xb7)]))['toBe'](!![]),expect(_0x2fd90f[_0x5eebb7(0xe1)](_0x116f69['EXECUTION_STOPPED']))['toBe'](!![]),expect(_0x2fd90f[_0x5eebb7(0xe1)](_0x116f69['COMPACTION_EVENT']))[_0x5eebb7(0xcd)](!![]),expect(_0x2fd90f[_0x5eebb7(0xe1)](_0x116f69['IMAGE_RESULT']))['toBe'](!![]);}),test('MessageRouter\x20middleware\x20can\x20be\x20added\x20and\x20removed',async()=>{const _0x140bb8=_0xf0eba2,{MessageRouter:_0x15b254}=await import('../../api/messageRouter.js'),{WebSocketManager:_0xa2dc2d}=await import(_0x140bb8(0xbc)),_0x43b183=new _0xa2dc2d('localhost',0x1f90),_0x3c309a=new _0x15b254(_0x43b183),_0x2967c5=_0x11e924=>_0x11e924;expect(_0x3c309a['middleware'][_0x140bb8(0xd6)])[_0x140bb8(0xc5)](0x0),_0x3c309a[_0x140bb8(0xbd)](_0x2967c5);const _0x41f1de=_0x3c309a[_0x140bb8(0xca)][_0x140bb8(0xd6)];expect(_0x41f1de)[_0x140bb8(0xe7)](0x0),_0x3c309a['removeMiddleware'](_0x2967c5),expect(_0x3c309a['middleware']['length'])['toBe'](_0x41f1de-0x1);}),test(_0xf0eba2(0xd8),async()=>{const _0x279061=_0xf0eba2,{SessionManager:_0x512eae}=await import('../../api/session.js'),_0x5f5474=new _0x512eae('localhost',0x1f90);expect(_0x5f5474[_0x279061(0xb0)]())[_0x279061(0xcd)](null),expect(_0x5f5474['getProjectDir']())[_0x279061(0xcd)](null),expect(_0x5f5474['isValid']())[_0x279061(0xcd)](![]);const _0x298904=_0x5f5474[_0x279061(0xb8)]();expect(_0x298904)['toHaveProperty']('sessionId'),expect(_0x298904)[_0x279061(0xbb)](_0x279061(0xed)),expect(_0x298904)['toHaveProperty'](_0x279061(0xea)),expect(_0x298904)['toHaveProperty'](_0x279061(0xef));}),test('WebSocketManager\x20helper\x20methods\x20work',async()=>{const _0x38ce5a=_0xf0eba2,{WebSocketManager:_0x394369}=await import(_0x38ce5a(0xbc)),{CONNECTION_STATE:_0xbecd28}=await import('../../config/constants.js'),_0x4b0445=new _0x394369('localhost',0x1f90);expect(_0x4b0445[_0x38ce5a(0xcb)]())['toBe'](_0xbecd28[_0x38ce5a(0xda)]),expect(_0x4b0445['isConnected']())['toBe'](![]),expect(_0x4b0445[_0x38ce5a(0xb0)]())[_0x38ce5a(0xcd)](null);const _0x1aa910=_0x4b0445[_0x38ce5a(0xdc)]();expect(_0x1aa910)['toHaveProperty']('state'),expect(_0x1aa910)['toHaveProperty'](_0x38ce5a(0xa9)),expect(_0x1aa910)[_0x38ce5a(0xbb)]('reconnectAttempts'),expect(_0x1aa910)[_0x38ce5a(0xbb)]('queuedMessages'),expect(_0x1aa910)['toHaveProperty']('pendingRequests');}),test('MessageRouter\x20can\x20register\x20and\x20unregister\x20handlers',async()=>{const _0x24d4f8=_0xf0eba2,{MessageRouter:_0xe558a0}=await import('../../api/messageRouter.js'),{WebSocketManager:_0xfc823b}=await import('../../api/websocket.js'),_0xeed70=new _0xfc823b('localhost',0x1f90),_0x588ca8=new _0xe558a0(_0xeed70),_0x258ff3=()=>{};expect(_0x588ca8['hasHandler']('test-message'))[_0x24d4f8(0xcd)](![]),_0x588ca8['registerHandler'](_0x24d4f8(0xe5),_0x258ff3),expect(_0x588ca8['hasHandler'](_0x24d4f8(0xe5)))[_0x24d4f8(0xcd)](!![]),_0x588ca8['unregisterHandler'](_0x24d4f8(0xe5)),expect(_0x588ca8[_0x24d4f8(0xe1)]('test-message'))['toBe'](![]);}),test('MessageRouter\x20middleware\x20helpers\x20create\x20valid\x20middleware',async()=>{const _0x476585=_0xf0eba2,{loggingMiddleware:_0x5c2092,timestampMiddleware:_0x45596a,filterMiddleware:_0x434c6f}=await import('../../api/messageRouter.js'),_0xae22c0=_0x5c2092();expect(typeof _0xae22c0)['toBe'](_0x476585(0xd3));const _0x1d8fee=_0x45596a();expect(typeof _0x1d8fee)['toBe'](_0x476585(0xd3));const _0x24d819={'type':_0x476585(0xd5)},_0x2a79a2=_0x1d8fee(_0x24d819);expect(_0x2a79a2)[_0x476585(0xbb)]('receivedAt'),expect(_0x2a79a2['type'])[_0x476585(0xcd)]('test');const _0x4b2b0d=_0x434c6f([_0x476585(0xbe)]);expect(typeof _0x4b2b0d)[_0x476585(0xcd)]('function'),expect(_0x4b2b0d({'type':_0x476585(0xbe)}))['toBeTruthy'](),expect(_0x4b2b0d({'type':_0x476585(0xac)}))['toBe'](null);}),test(_0xf0eba2(0xb5),async()=>{const _0x42274d=_0xf0eba2,_0x2ff8e6=await import('../../config/constants.js');expect(typeof _0x2ff8e6[_0x42274d(0xde)]['WEBSOCKET_RECONNECT_DELAY'])['toBe']('number'),expect(typeof _0x2ff8e6['TIMING'][_0x42274d(0xee)])['toBe'](_0x42274d(0xe3)),expect(typeof _0x2ff8e6['NETWORK']['DEFAULT_PORT'])[_0x42274d(0xcd)]('number'),expect(typeof _0x2ff8e6[_0x42274d(0xba)]['MAX_RETRIES'])['toBe']('number'),expect(typeof _0x2ff8e6['NETWORK']['HTTP_TIMEOUT'])[_0x42274d(0xcd)]('number'),expect(typeof _0x2ff8e6[_0x42274d(0xe4)]['MESSAGE_LIST_HEIGHT'])[_0x42274d(0xcd)](_0x42274d(0xe3)),expect(typeof _0x2ff8e6[_0x42274d(0xe4)][_0x42274d(0xaf)])['toBe'](_0x42274d(0xe3));});}),describe('Terminal\x20UI\x20Infrastructure\x20-\x20Error\x20Handling',()=>{const _0x3407c8=a0_0x5d0b;test(_0x3407c8(0xb1),async()=>{const _0x2aaf13=_0x3407c8,{MessageRouter:_0x13775b}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x4c1c8e}=await import('../../api/websocket.js'),_0x143600=new _0x4c1c8e(_0x2aaf13(0xe0),0x1f90),_0x32de49=new _0x13775b(_0x143600);expect(()=>{const _0x394de5=_0x2aaf13;_0x32de49['registerHandler'](_0x394de5(0xd5),_0x394de5(0xc0));})['toThrow']('Handler\x20must\x20be\x20a\x20function');}),test('MessageRouter\x20throws\x20on\x20invalid\x20middleware',async()=>{const _0x1110d4=_0x3407c8,{MessageRouter:_0x24c84d}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x4ce5c4}=await import(_0x1110d4(0xbc)),_0x2f1180=new _0x4ce5c4(_0x1110d4(0xe0),0x1f90),_0x30224b=new _0x24c84d(_0x2f1180);expect(()=>{_0x30224b['use']('not-a-function');})['toThrow']('Middleware\x20must\x20be\x20a\x20function');}),test(_0x3407c8(0xcf),async()=>{const _0x35132b=_0x3407c8,{SessionManager:_0x49e95f}=await import(_0x35132b(0xc9)),_0x14abd4=new _0x49e95f('localhost',0x1f90);_0x14abd4['sessionId']='test-123',_0x14abd4[_0x35132b(0xed)]='/test/dir',_0x14abd4[_0x35132b(0xbf)]=_0x35132b(0xe8),_0x14abd4['vendorKeys']={'openai':_0x35132b(0xd0)},expect(_0x14abd4[_0x35132b(0xae)]())['toBe'](!![]),_0x14abd4[_0x35132b(0xb3)](),expect(_0x14abd4[_0x35132b(0xa9)])[_0x35132b(0xcd)](null),expect(_0x14abd4['projectDir'])['toBe'](null),expect(_0x14abd4['loxiaApiKey'])[_0x35132b(0xcd)](null),expect(_0x14abd4['vendorKeys'])['toEqual']({}),expect(_0x14abd4[_0x35132b(0xae)]())[_0x35132b(0xcd)](![]);}),test('WebSocketManager\x20generates\x20unique\x20request\x20IDs',async()=>{const _0x2085b1=_0x3407c8,{WebSocketManager:_0x2cc7e9}=await import('../../api/websocket.js'),_0x4e2cbc=new _0x2cc7e9(_0x2085b1(0xe0),0x1f90),_0x5a9fd2=_0x4e2cbc['generateRequestId'](),_0x4d2cc0=_0x4e2cbc[_0x2085b1(0xc1)](),_0x3dc4af=_0x4e2cbc['generateRequestId']();expect(_0x5a9fd2)[_0x2085b1(0xb9)][_0x2085b1(0xcd)](_0x4d2cc0),expect(_0x4d2cc0)[_0x2085b1(0xb9)][_0x2085b1(0xcd)](_0x3dc4af),expect(_0x5a9fd2)[_0x2085b1(0xb9)][_0x2085b1(0xcd)](_0x3dc4af),expect(_0x5a9fd2)[_0x2085b1(0xc7)](/^req-\d+-\d+$/),expect(_0x4d2cc0)[_0x2085b1(0xc7)](/^req-\d+-\d+$/),expect(_0x3dc4af)['toMatch'](/^req-\d+-\d+$/);});});
1
+ const a0_0x5ec0a8=a0_0x2687;(function(_0x23165f,_0x1c9b52){const _0x40334a=a0_0x2687,_0x5c47a8=_0x23165f();while(!![]){try{const _0x2e9781=-parseInt(_0x40334a(0x103))/0x1*(parseInt(_0x40334a(0xe7))/0x2)+parseInt(_0x40334a(0xcd))/0x3*(-parseInt(_0x40334a(0xeb))/0x4)+-parseInt(_0x40334a(0xf1))/0x5*(parseInt(_0x40334a(0x106))/0x6)+-parseInt(_0x40334a(0xe2))/0x7*(parseInt(_0x40334a(0xea))/0x8)+parseInt(_0x40334a(0xd9))/0x9*(parseInt(_0x40334a(0xcb))/0xa)+parseInt(_0x40334a(0xf8))/0xb*(parseInt(_0x40334a(0x102))/0xc)+parseInt(_0x40334a(0xbd))/0xd;if(_0x2e9781===_0x1c9b52)break;else _0x5c47a8['push'](_0x5c47a8['shift']());}catch(_0x2dfa8a){_0x5c47a8['push'](_0x5c47a8['shift']());}}}(a0_0x1249,0x60755));function a0_0x2687(_0x1c1a3b,_0x2d6df5){_0x1c1a3b=_0x1c1a3b-0xbb;const _0x12492b=a0_0x1249();let _0x268703=_0x12492b[_0x1c1a3b];if(a0_0x2687['wJQJun']===undefined){var _0x5b05c5=function(_0x2f72d1){const _0x151fe3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x529120='',_0x59336d='';for(let _0x4951d4=0x0,_0x22e180,_0x169a48,_0x4a65b2=0x0;_0x169a48=_0x2f72d1['charAt'](_0x4a65b2++);~_0x169a48&&(_0x22e180=_0x4951d4%0x4?_0x22e180*0x40+_0x169a48:_0x169a48,_0x4951d4++%0x4)?_0x529120+=String['fromCharCode'](0xff&_0x22e180>>(-0x2*_0x4951d4&0x6)):0x0){_0x169a48=_0x151fe3['indexOf'](_0x169a48);}for(let _0x19d782=0x0,_0x2736dd=_0x529120['length'];_0x19d782<_0x2736dd;_0x19d782++){_0x59336d+='%'+('00'+_0x529120['charCodeAt'](_0x19d782)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x59336d);};a0_0x2687['VjvfaY']=_0x5b05c5,a0_0x2687['BDgzvb']={},a0_0x2687['wJQJun']=!![];}const _0x158c4f=_0x12492b[0x0],_0x1e7667=_0x1c1a3b+_0x158c4f,_0x272dd5=a0_0x2687['BDgzvb'][_0x1e7667];return!_0x272dd5?(_0x268703=a0_0x2687['VjvfaY'](_0x268703),a0_0x2687['BDgzvb'][_0x1e7667]=_0x268703):_0x268703=_0x272dd5,_0x268703;}import{describe,test,expect}from'@jest/globals';import{fileURLToPath}from'url';import{dirname,join}from'path';function a0_0x1249(){const _0x3e8ac6=['ndCZmZi2mu1VzKrUsW','C3rHDgu','DgvZDc1TzxnZywDL','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','u2vZC2LVBK1HBMfNzxiGAgvSCgvYig1LDgHVzhmGD29YAW','AgfZsgfUzgXLCG','Dg9nyxrJAa','Dg9czq','CxvLDwvKtwvZC2fNzxm','v0vcu09ds0vux1jfq09otKvdvf9eruXbwq','D3m6lY9SB2nHBgHVC3q6oda4ma','C2vZC2LVBKLK','Ag9ZDa','tuvtu0fhrv9dt05gsuC','mta4odGZmhnHCurWwa','tKvuv09ssW','nZm1meTysfzYBq','zNvUy3rPB24','q09otKvdveve','sfruuf9usu1ft1vu','BM90lweTzNvUy3rPB24','lI4VlI4VyxbPl3nLC3nPB24UANm','twvZC2fNzvjVDxrLCIbTAwrKBgv3yxjLignHBIbIzsbHzgrLzcbHBMqGCMvTB3zLza','CMvJB25Uzwn0qxr0zw1WDhm','Dg9iyxzLuhjVCgvYDhK','v2vIu29JA2v0twfUywDLCIbPBML0AwfSAxPLCYb3AxrOignVCNjLy3qGC3rHDgu','z2vUzxjHDgvszxf1zxn0swq','vgvYBwLUywWGvuKGsw5MCMfZDhj1y3r1CMuGlsbfCNjVCIbiyw5KBgLUzW','mtH3rfnusxK','zgLZy29UBMvJDgvK','DgvZDa','l3rLC3qVzgLY','DgvZDc1OB3n0','Dg9czurLzMLUzwq','BwvZC2fNzvf1zxvL','q09otKvdveLptL9tvefurq','BgvUz3rO','mZvNwMjlzuC','CMvNAxn0zxjiyw5KBgvY','y2XLyxi','Dg9fCxvHBa','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','mtq5mhfRDLPdra','DhLWzq','v2vIu29JA2v0twfUywDLCIbOzwXWzxiGBwv0Ag9KCYb3B3jR','mJC2odHNANnZs2C','mtuYzfvUAe1c','u0LerujbuL9xsurusa','C2HVDwXKuMvJB25Uzwn0','yMXVy2TLzc10ExbL','veLnsu5h','DxnL','oda1mZu1wuXvuhHm','quDftLrFtu9erq','tuvtu0fhrv9msvnux0HfsuDiva','reLtq09otKvdveve','rvHfq1vusu9ox1nut1bqruq','vuLFreLnru5tsu9ouW','ywXSB3DLzc10ExbL','mtfYr1rhsLu','v2vIu29JA2v0twfUywDLCIbNzw5LCMf0zxmGDw5PCxvLihjLCxvLC3qGsurZ','tuvtu0fhrv9brerfra','Bg94AwfbCgLlzxK','BwLKzgXLD2fYzq','BNvTyMvY','Bg9JywXOB3n0','DMvUzg9Ys2v5C0nVDw50','AxnwywXPza','uefhsu5bveLptG','ntqYnZuXnM9HtwXIEa','nJfYzKzVuuS','z2v0u2vZC2LVBKLK','yMfZzvvYBa','mtHjBM1SCui','twvZC2fNzvjVDxrLCIb0AhjVD3mGB24GAw52ywXPzcbOyw5KBgvY','DMvUzg9Ys2v5CW','ChjVAMvJDerPCG','AgfZtg94AwflzxK','vgvYBwLUywWGvuKGsw5MCMfZDhj1y3r1CMuGlsbcyxnPyYbgDw5JDgLVBMfSAxr5'];a0_0x1249=function(){return _0x3e8ac6;};return a0_0x1249();}const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);describe('Terminal\x20UI\x20Infrastructure\x20-\x20Imports',()=>{test('constants module exports all required constants',async()=>{const _0x158389=a0_0x2687,_0x529120=await import('../../config/constants.js');expect(_0x529120[_0x158389(0xf6)])[_0x158389(0xde)](),expect(_0x529120[_0x158389(0xca)])[_0x158389(0xde)](),expect(_0x529120[_0x158389(0x101)])['toBeDefined'](),expect(_0x529120[_0x158389(0xef)])['toBeDefined'](),expect(_0x529120['NETWORK'])[_0x158389(0xde)](),expect(_0x529120['CONNECTION_STATE'])['toBeDefined'](),expect(_0x529120[_0x158389(0xf2)])[_0x158389(0xde)](),expect(_0x529120['WS_MESSAGE_TYPE'])[_0x158389(0xde)](),expect(_0x529120['API_ENDPOINTS'])['toBeDefined'](),expect(_0x529120['COMMANDS'])['toBeDefined'](),expect(_0x529120['NETWORK']['DEFAULT_HOST'])['toBe'](_0x158389(0xfe)),expect(_0x529120['NETWORK']['DEFAULT_PORT'])['toBe'](0x1f90),expect(_0x529120['CONNECTION_STATE'][_0x158389(0xf4)])['toBe'](_0x158389(0xda)),expect(_0x529120[_0x158389(0xe0)][_0x158389(0xcf)])['toBe']('connected');}),test('WebSocketManager class can be imported',async()=>{const _0x2be7e8=a0_0x2687,{WebSocketManager:_0x59336d}=await import(_0x2be7e8(0xe6));expect(_0x59336d)['toBeDefined'](),expect(typeof _0x59336d)['toBe'](_0x2be7e8(0xce));const _0x4951d4=new _0x59336d('localhost',0x1f90);expect(_0x4951d4)['toBeDefined'](),expect(_0x4951d4[_0x2be7e8(0xc9)])['toBe']('localhost'),expect(_0x4951d4['port'])['toBe'](0x1f90),expect(_0x4951d4['url'])['toBe'](_0x2be7e8(0xc7));}),test('SessionManager class can be imported',async()=>{const _0x1b99d8=a0_0x2687,{SessionManager:_0x22e180}=await import('../../api/session.js');expect(_0x22e180)['toBeDefined'](),expect(typeof _0x22e180)[_0x1b99d8(0xc4)](_0x1b99d8(0xce));const _0x169a48=new _0x22e180(_0x1b99d8(0xfe),0x1f90);expect(_0x169a48)['toBeDefined'](),expect(_0x169a48['host'])[_0x1b99d8(0xc4)](_0x1b99d8(0xfe)),expect(_0x169a48['port'])[_0x1b99d8(0xc4)](0x1f90),expect(_0x169a48[_0x1b99d8(0x105)])[_0x1b99d8(0xc4)]('http://localhost:8080');}),test('MessageRouter class can be imported',async()=>{const _0x364f33=a0_0x2687,{MessageRouter:_0x4a65b2}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x19d782}=await import('../../api/websocket.js');expect(_0x4a65b2)[_0x364f33(0xde)](),expect(typeof _0x4a65b2)['toBe']('function');const _0x2736dd=new _0x19d782(_0x364f33(0xfe),0x1f90),_0x8fd7b9=new _0x4a65b2(_0x2736dd);expect(_0x8fd7b9)[_0x364f33(0xde)](),expect(_0x8fd7b9['ws'])[_0x364f33(0xc4)](_0x2736dd);}),test('MessageRouter middleware helpers can be imported',async()=>{const _0x2b32ef=a0_0x2687,{loggingMiddleware:_0x2ba8d1,filterMiddleware:_0x2f2f2e,transformMiddleware:_0x2181dd,timestampMiddleware:_0x2f32e3,validationMiddleware:_0x4404d6}=await import('../../api/messageRouter.js');expect(typeof _0x2ba8d1)[_0x2b32ef(0xc4)]('function'),expect(typeof _0x2f2f2e)['toBe'](_0x2b32ef(0xce)),expect(typeof _0x2181dd)['toBe'](_0x2b32ef(0xce)),expect(typeof _0x2f32e3)['toBe']('function'),expect(typeof _0x4404d6)['toBe']('function');}),test('useConnection hook can be imported',async()=>{const _0x57d623=a0_0x2687,{useConnection:_0x3d8cd1,useConnectionStatus:_0x2ceab8}=await import('../../state/useConnection.js');expect(_0x3d8cd1)['toBeDefined'](),expect(typeof _0x3d8cd1)[_0x57d623(0xc4)](_0x57d623(0xce)),expect(_0x2ceab8)['toBeDefined'](),expect(typeof _0x2ceab8)['toBe'](_0x57d623(0xce));});}),describe(a0_0x5ec0a8(0xbc),()=>{const _0x500519=a0_0x5ec0a8;test(_0x500519(0xd6),async()=>{const _0x65d4de=_0x500519,{WebSocketManager:_0x2e0b64}=await import(_0x65d4de(0xe6)),{CONNECTION_STATE:_0xdd35e8}=await import('../../config/constants.js'),_0x269eff=new _0x2e0b64(_0x65d4de(0xdd),0x2382);expect(_0x269eff['state'])[_0x65d4de(0xc4)](_0xdd35e8[_0x65d4de(0xf4)]),expect(_0x269eff[_0x65d4de(0xc8)])[_0x65d4de(0xc4)](null),expect(_0x269eff[_0x65d4de(0xdf)])['toEqual']([]),expect(_0x269eff['reconnectAttempts'])['toBe'](0x0),expect(_0x269eff[_0x65d4de(0xed)])['toBe'](!![]);}),test('SessionManager\x20initializes\x20with\x20correct\x20state',async()=>{const _0x11f807=_0x500519,{SessionManager:_0xfe331f}=await import(_0x11f807(0xd2)),_0x24473a=new _0xfe331f(_0x11f807(0xdd),0x2382);expect(_0x24473a[_0x11f807(0xc8)])[_0x11f807(0xc4)](null),expect(_0x24473a[_0x11f807(0x109)])[_0x11f807(0xc4)](null),expect(_0x24473a['loxiaApiKey'])['toBe'](null),expect(_0x24473a[_0x11f807(0x108)])[_0x11f807(0xe5)]({}),expect(_0x24473a[_0x11f807(0x100)]())['toBe'](![]);}),test('MessageRouter initializes with default handlers',async()=>{const _0x9e1847=_0x500519,{MessageRouter:_0x272748}=await import(_0x9e1847(0xc0)),{WebSocketManager:_0x5226e9}=await import('../../api/websocket.js'),{WS_MESSAGE_TYPE:_0xca9046}=await import('../../config/constants.js'),_0x379e5d=new _0x5226e9('localhost',0x1f90),_0x5c2739=new _0x272748(_0x379e5d);expect(_0x5c2739['hasHandler'](_0xca9046[_0x9e1847(0xfa)]))[_0x9e1847(0xc4)](!![]),expect(_0x5c2739['hasHandler'](_0xca9046['AGENT_MODE_CHANGED']))['toBe'](!![]),expect(_0x5c2739['hasHandler'](_0xca9046[_0x9e1847(0xf5)]))['toBe'](!![]),expect(_0x5c2739['hasHandler'](_0xca9046['COMPACTION_EVENT']))[_0x9e1847(0xc4)](!![]),expect(_0x5c2739['hasHandler'](_0xca9046['IMAGE_RESULT']))[_0x9e1847(0xc4)](!![]);}),test(_0x500519(0xd3),async()=>{const _0x286ac9=_0x500519,{MessageRouter:_0x466e5c}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x42ffd9}=await import(_0x286ac9(0xe6)),_0x53ac90=new _0x42ffd9(_0x286ac9(0xfe),0x1f90),_0x1c4621=new _0x466e5c(_0x53ac90),_0x44ccd7=_0x58720a=>_0x58720a;expect(_0x1c4621[_0x286ac9(0xfc)]['length'])['toBeGreaterThanOrEqual'](0x0),_0x1c4621[_0x286ac9(0xf0)](_0x44ccd7);const _0x5b3136=_0x1c4621['middleware'][_0x286ac9(0xe1)];expect(_0x5b3136)['toBeGreaterThan'](0x0),_0x1c4621['removeMiddleware'](_0x44ccd7),expect(_0x1c4621['middleware'][_0x286ac9(0xe1)])[_0x286ac9(0xc4)](_0x5b3136-0x1);}),test(_0x500519(0xc1),async()=>{const _0x3037b9=_0x500519,{SessionManager:_0x482180}=await import('../../api/session.js'),_0x3fd73c=new _0x482180('localhost',0x1f90);expect(_0x3fd73c[_0x3037b9(0x104)]())['toBe'](null),expect(_0x3fd73c['getProjectDir']())['toBe'](null),expect(_0x3fd73c[_0x3037b9(0x100)]())[_0x3037b9(0xc4)](![]);const _0x3788f6=_0x3fd73c['getSessionInfo']();expect(_0x3788f6)['toHaveProperty'](_0x3037b9(0xc8)),expect(_0x3788f6)[_0x3037b9(0xd5)]('projectDir'),expect(_0x3788f6)['toHaveProperty'](_0x3037b9(0xbb)),expect(_0x3788f6)[_0x3037b9(0xd5)](_0x3037b9(0xff));}),test(_0x500519(0xe9),async()=>{const _0x53ad88=_0x500519,{WebSocketManager:_0x417c38}=await import('../../api/websocket.js'),{CONNECTION_STATE:_0x1c91bf}=await import('../../config/constants.js'),_0x194ac9=new _0x417c38(_0x53ad88(0xfe),0x1f90);expect(_0x194ac9['getState']())['toBe'](_0x1c91bf[_0x53ad88(0xf4)]),expect(_0x194ac9['isConnected']())[_0x53ad88(0xc4)](![]),expect(_0x194ac9[_0x53ad88(0x104)]())['toBe'](null);const _0x1df248=_0x194ac9['getStats']();expect(_0x1df248)['toHaveProperty'](_0x53ad88(0xbe)),expect(_0x1df248)['toHaveProperty'](_0x53ad88(0xc8)),expect(_0x1df248)['toHaveProperty'](_0x53ad88(0xd4)),expect(_0x1df248)[_0x53ad88(0xd5)](_0x53ad88(0xc5)),expect(_0x1df248)[_0x53ad88(0xd5)]('pendingRequests');}),test('MessageRouter\x20can\x20register\x20and\x20unregister\x20handlers',async()=>{const _0x8b5ee7=_0x500519,{MessageRouter:_0x548b20}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x1fb075}=await import(_0x8b5ee7(0xe6)),_0x225ea0=new _0x1fb075('localhost',0x1f90),_0x35a78b=new _0x548b20(_0x225ea0),_0x4e4c1b=()=>{};expect(_0x35a78b[_0x8b5ee7(0xc2)]('test-message'))[_0x8b5ee7(0xc4)](![]),_0x35a78b[_0x8b5ee7(0xe3)]('test-message',_0x4e4c1b),expect(_0x35a78b[_0x8b5ee7(0xc2)]('test-message'))['toBe'](!![]),_0x35a78b['unregisterHandler']('test-message'),expect(_0x35a78b[_0x8b5ee7(0xc2)](_0x8b5ee7(0xbf)))[_0x8b5ee7(0xc4)](![]);}),test('MessageRouter\x20middleware\x20helpers\x20create\x20valid\x20middleware',async()=>{const _0x59764b=_0x500519,{loggingMiddleware:_0xbf1b46,timestampMiddleware:_0x14480b,filterMiddleware:_0x48620a}=await import(_0x59764b(0xc0)),_0x3e8955=_0xbf1b46();expect(typeof _0x3e8955)['toBe'](_0x59764b(0xce));const _0x24f9ba=_0x14480b();expect(typeof _0x24f9ba)[_0x59764b(0xc4)]('function');const _0x78378d={'type':_0x59764b(0xdb)},_0x1a42a4=_0x24f9ba(_0x78378d);expect(_0x1a42a4)[_0x59764b(0xd5)]('receivedAt'),expect(_0x1a42a4[_0x59764b(0xe8)])[_0x59764b(0xc4)]('test');const _0x210681=_0x48620a([_0x59764b(0xf7)]);expect(typeof _0x210681)[_0x59764b(0xc4)](_0x59764b(0xce)),expect(_0x210681({'type':'allowed-type'}))['toBeTruthy'](),expect(_0x210681({'type':_0x59764b(0xee)}))['toBe'](null);}),test('Constants\x20have\x20no\x20magic\x20numbers',async()=>{const _0x68081f=_0x500519,_0x25f0bc=await import('../../config/constants.js');expect(typeof _0x25f0bc[_0x68081f(0xef)][_0x68081f(0xc6)])['toBe']('number'),expect(typeof _0x25f0bc[_0x68081f(0xef)]['WEBSOCKET_PING_INTERVAL'])['toBe']('number'),expect(typeof _0x25f0bc[_0x68081f(0xcc)]['DEFAULT_PORT'])[_0x68081f(0xc4)](_0x68081f(0xfd)),expect(typeof _0x25f0bc[_0x68081f(0xcc)]['MAX_RETRIES'])['toBe'](_0x68081f(0xfd)),expect(typeof _0x25f0bc[_0x68081f(0xcc)][_0x68081f(0xd0)])['toBe'](_0x68081f(0xfd)),expect(typeof _0x25f0bc['UI_DIMENSIONS'][_0x68081f(0xf3)])['toBe']('number'),expect(typeof _0x25f0bc['UI_DIMENSIONS'][_0x68081f(0xec)])[_0x68081f(0xc4)](_0x68081f(0xfd));});}),describe(a0_0x5ec0a8(0xd8),()=>{const _0x4d9182=a0_0x5ec0a8;test(_0x4d9182(0x107),async()=>{const _0x1730cf=_0x4d9182,{MessageRouter:_0x5141b4}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x2c4739}=await import('../../api/websocket.js'),_0x2ffb48=new _0x2c4739(_0x1730cf(0xfe),0x1f90),_0x1bbbd8=new _0x5141b4(_0x2ffb48);expect(()=>{const _0x426c4a=_0x1730cf;_0x1bbbd8[_0x426c4a(0xe3)]('test',_0x426c4a(0xd1));})['toThrow']('Handler\x20must\x20be\x20a\x20function');}),test('MessageRouter\x20throws\x20on\x20invalid\x20middleware',async()=>{const _0x58f0b6=_0x4d9182,{MessageRouter:_0xaf36c2}=await import(_0x58f0b6(0xc0)),{WebSocketManager:_0x41ccfa}=await import(_0x58f0b6(0xe6)),_0x1971fa=new _0x41ccfa('localhost',0x1f90),_0x3c912c=new _0xaf36c2(_0x1971fa);expect(()=>{const _0x23f899=_0x58f0b6;_0x3c912c['use'](_0x23f899(0xd1));})['toThrow']('Middleware\x20must\x20be\x20a\x20function');}),test('SessionManager\x20clear()\x20resets\x20all\x20state',async()=>{const _0x9ba7ab=_0x4d9182,{SessionManager:_0x44d2ca}=await import('../../api/session.js'),_0x3ac14b=new _0x44d2ca('localhost',0x1f90);_0x3ac14b['sessionId']='test-123',_0x3ac14b[_0x9ba7ab(0x109)]=_0x9ba7ab(0xdc),_0x3ac14b[_0x9ba7ab(0xfb)]='test-key',_0x3ac14b[_0x9ba7ab(0x108)]={'openai':'key'},expect(_0x3ac14b['isValid']())['toBe'](!![]),_0x3ac14b[_0x9ba7ab(0xe4)](),expect(_0x3ac14b['sessionId'])['toBe'](null),expect(_0x3ac14b[_0x9ba7ab(0x109)])['toBe'](null),expect(_0x3ac14b['loxiaApiKey'])[_0x9ba7ab(0xc4)](null),expect(_0x3ac14b[_0x9ba7ab(0x108)])[_0x9ba7ab(0xe5)]({}),expect(_0x3ac14b['isValid']())['toBe'](![]);}),test(_0x4d9182(0xf9),async()=>{const _0x4475f2=_0x4d9182,{WebSocketManager:_0x4cd321}=await import('../../api/websocket.js'),_0x53419f=new _0x4cd321(_0x4475f2(0xfe),0x1f90),_0x16dad7=_0x53419f['generateRequestId'](),_0x1eb575=_0x53419f[_0x4475f2(0xd7)](),_0x2b7bbf=_0x53419f[_0x4475f2(0xd7)]();expect(_0x16dad7)['not']['toBe'](_0x1eb575),expect(_0x1eb575)['not'][_0x4475f2(0xc4)](_0x2b7bbf),expect(_0x16dad7)['not'][_0x4475f2(0xc4)](_0x2b7bbf),expect(_0x16dad7)['toMatch'](/^req-\d+-\d+$/),expect(_0x1eb575)[_0x4475f2(0xc3)](/^req-\d+-\d+$/),expect(_0x2b7bbf)[_0x4475f2(0xc3)](/^req-\d+-\d+$/);});});
@@ -1 +1 @@
1
- const a0_0x47b20f=a0_0x5a4c;function a0_0x5a4c(_0x173bc1,_0x2019b6){_0x173bc1=_0x173bc1-0x18e;const _0x13a13b=a0_0x13a1();let _0x5a4c99=_0x13a13b[_0x173bc1];if(a0_0x5a4c['ypiTLs']===undefined){var _0x5301d9=function(_0x5036f5){const _0x1c0883='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x559b0e='',_0x17b6f5='';for(let _0x46af30=0x0,_0x173d2e,_0x53a4ea,_0x169971=0x0;_0x53a4ea=_0x5036f5['charAt'](_0x169971++);~_0x53a4ea&&(_0x173d2e=_0x46af30%0x4?_0x173d2e*0x40+_0x53a4ea:_0x53a4ea,_0x46af30++%0x4)?_0x559b0e+=String['fromCharCode'](0xff&_0x173d2e>>(-0x2*_0x46af30&0x6)):0x0){_0x53a4ea=_0x1c0883['indexOf'](_0x53a4ea);}for(let _0x38eed8=0x0,_0x2af611=_0x559b0e['length'];_0x38eed8<_0x2af611;_0x38eed8++){_0x17b6f5+='%'+('00'+_0x559b0e['charCodeAt'](_0x38eed8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x17b6f5);};a0_0x5a4c['FyXXso']=_0x5301d9,a0_0x5a4c['JnQjBE']={},a0_0x5a4c['ypiTLs']=!![];}const _0x12f82f=_0x13a13b[0x0],_0x3f6c7a=_0x173bc1+_0x12f82f,_0x2fb250=a0_0x5a4c['JnQjBE'][_0x3f6c7a];return!_0x2fb250?(_0x5a4c99=a0_0x5a4c['FyXXso'](_0x5a4c99),a0_0x5a4c['JnQjBE'][_0x3f6c7a]=_0x5a4c99):_0x5a4c99=_0x2fb250,_0x5a4c99;}function a0_0x13a1(){const _0x4a29a0=['twvZC2fNzsbnyw5Hz2vTzw50ic0Gsw50zwDYyxrPB24','lI4VlI4VyxbPl3nLC3nPB24UANm','lI4VlI4VC3rHDguVDxnLtwvZC2fNzxmUANm','C3LZDgvT','tuvtu0fhrv9dt05gsuCGzw5MB3jJzxmGBwf4Aw11BsbTzxnZywDLigXLBMD0Aa','n0nHChfxtq','BNvTyMvY','Bg9JywXOB3n0','ywXS','quDftLrFtu9erv9dsefor0ve','ywDLBNrFBw9Kzv9JAgfUz2vK','DxnLCG','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','v1nFtuvtu0fhrv9uwvbfigLUy2X1zgvZig1LC3nHz2uGzxzLBNrZ','tufyx01fu1nbr0vtx0rju1bmqvK','twvZC2fNzsbnyw5Hz2vTzw50ic0GrxjYB3iGsgfUzgXPBMC','BgvUz3rO','BwvZC2fNzv9HzgrLza','quDftLrFuKvtue9ou0u','zgvMyxvSDa','DxnLtwvZC2fNzxmGAg9VAYbPBNrLz3jHDgvZihDPDgGGu2vZC2LVBIbHBMqGtwvZC2fNzvjVDxrLCG','t3jJAgvZDhjHDg9YigvUzhbVAw50ignHBIbIzsb1C2vKigzVCIbTzxnZywDLig9WzxjHDgLVBNm','tuvtu0fhrv9st0Xf','Dg9czurLzMLUzwq','mtiYmJi2n0LzBxruvq','u1Ltvevnx05pveLgsunbveLptG','mZa5mdy0yKTYAwz4','og52CvLeCW','tuvtu0fhrv9brerfra','rvHfq1vusu9ox1nut1bqruq','tuvtu0fhrv9uwvbfignVBNn0yw50CYbHCMuGzgvMAw5Lza','zNvUy3rPB24','Dg9czuDYzwf0zxjuAgfU','mtm1nZG3nwjYrg1fAW','twvZC2fNzvjVDxrLCIbOyxmGBwvZC2fNzsbLDMvUDcbOyw5KBgvYCYbYzwDPC3rLCMvK','mJmYode2oe1Wug9mrW','DxnLCI1TzxnZywDL','qvntsvnuqu5u','uefhrv9tsvPf','DxnLtwvZC2fNzunVDw50ihjLDhvYBNmGzxHWzwn0zwqGAw50zxjMywnLihnOyxbL','CMvWzwf0','tufyx1bbr0vFu0LArq','DxnLtwvZC2fNzxm','Dg9czq','u1Ltvevn','tufyx01fu1nbr0vFtevor1ri','oteZnJCXzvnAEvz1','t1jdsevtvfjbve9s','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','mtjuzwzPwuW','tuvtu0fhrv9uwvbf','Dg9mB3DLCKnHC2u','mtG2mdC1mfDiBgLABW','C3LZDgvTlw5VDgLMAwnHDgLVBG','Dg9czuXLC3nuAgfUt3jfCxvHBa','mJC0mJuYmgnns3bwva','vvnfuG','AgfZsgfUzgXLCG','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','tuvtu0fhrv9dt05gsuCGzw5MB3jJzxmGBwf4Aw11BsbKAxnWBgf5ig1LC3nHz2vZ'];a0_0x13a1=function(){return _0x4a29a0;};return a0_0x13a1();}(function(_0x1e7038,_0x3a25cc){const _0x4d7064=a0_0x5a4c,_0x3ef80c=_0x1e7038();while(!![]){try{const _0x4e66ca=parseInt(_0x4d7064(0x1a1))/0x1+-parseInt(_0x4d7064(0x1a4))/0x2*(parseInt(_0x4d7064(0x1b7))/0x3)+-parseInt(_0x4d7064(0x1a3))/0x4+parseInt(_0x4d7064(0x1c0))/0x5*(parseInt(_0x4d7064(0x1ba))/0x6)+-parseInt(_0x4d7064(0x18e))/0x7*(parseInt(_0x4d7064(0x1ac))/0x8)+parseInt(_0x4d7064(0x1aa))/0x9+-parseInt(_0x4d7064(0x1bd))/0xa;if(_0x4e66ca===_0x3a25cc)break;else _0x3ef80c['push'](_0x3ef80c['shift']());}catch(_0x334174){_0x3ef80c['push'](_0x3ef80c['shift']());}}}(a0_0x13a1,0xaa4d8));import{describe,test,expect}from'@jest/globals';describe('Message\x20Management\x20-\x20Imports',()=>{test('useMessages hook can be imported',async()=>{const _0x1bc7ba=a0_0x5a4c,{useMessages:_0x559b0e}=await import('../../state/useMessages.js');expect(_0x559b0e)[_0x1bc7ba(0x1a0)](),expect(typeof _0x559b0e)[_0x1bc7ba(0x1b4)](_0x1bc7ba(0x1a8));}),test('useMessages is default export',async()=>{const _0x4af64d=a0_0x5a4c,module=await import(_0x4af64d(0x1c7));expect(module[_0x4af64d(0x19c)])[_0x4af64d(0x1a0)](),expect(typeof module[_0x4af64d(0x19c)])['toBe'](_0x4af64d(0x1a8)),expect(module[_0x4af64d(0x19c)])[_0x4af64d(0x1b4)](module[_0x4af64d(0x1b3)]);}),test('useMessageCount helper hook can be imported',async()=>{const _0x294d19=a0_0x5a4c,{useMessageCount:_0x17b6f5}=await import('../../state/useMessages.js');expect(_0x17b6f5)[_0x294d19(0x1a0)](),expect(typeof _0x17b6f5)['toBe'](_0x294d19(0x1a8));});}),describe('Message\x20Management\x20-\x20Constants',()=>{const _0x3190b8=a0_0x5a4c;test('MESSAGE_ROLE\x20constants\x20are\x20defined',async()=>{const _0x497f20=a0_0x5a4c,{MESSAGE_ROLE:_0x46af30}=await import(_0x497f20(0x1c3));expect(_0x46af30)[_0x497f20(0x1a0)](),expect(_0x46af30['USER'])['toBe'](_0x497f20(0x194)),expect(_0x46af30['ASSISTANT'])[_0x497f20(0x1b4)]('assistant'),expect(_0x46af30['SYSTEM'])['toBe'](_0x497f20(0x1c8));}),test(_0x3190b8(0x1a7),async()=>{const _0x166c28=_0x3190b8,{MESSAGE_TYPE:_0x173d2e}=await import(_0x166c28(0x1c3));expect(_0x173d2e)['toBeDefined'](),expect(_0x173d2e['USER_MESSAGE'])['toBe'](_0x166c28(0x1ad)),expect(_0x173d2e[_0x166c28(0x19b)])['toBe']('agent-response'),expect(_0x173d2e[_0x166c28(0x1a2)])['toBe'](_0x166c28(0x1be));}),test('MESSAGE_CONFIG\x20constants\x20are\x20defined',async()=>{const _0xb3af6f=_0x3190b8,{MESSAGE_CONFIG:_0x53a4ea}=await import(_0xb3af6f(0x1c3));expect(_0x53a4ea)['toBeDefined'](),expect(_0x53a4ea[_0xb3af6f(0x1b6)])[_0xb3af6f(0x1a0)](),expect(_0x53a4ea[_0xb3af6f(0x197)])[_0xb3af6f(0x1a0)](),expect(typeof _0x53a4ea[_0xb3af6f(0x1b6)])['toBe'](_0xb3af6f(0x18f)),expect(typeof _0x53a4ea[_0xb3af6f(0x197)])[_0xb3af6f(0x1b4)]('number');}),test('PAGINATION\x20constants\x20are\x20defined',async()=>{const _0x2766c2=_0x3190b8,{PAGINATION:_0x169971}=await import('../../config/constants.js');expect(_0x169971)[_0x2766c2(0x1a0)](),expect(_0x169971[_0x2766c2(0x1af)])[_0x2766c2(0x1a0)](),expect(_0x169971['MAX_PAGE_SIZE'])[_0x2766c2(0x1a0)](),expect(typeof _0x169971['PAGE_SIZE'])[_0x2766c2(0x1b4)]('number'),expect(typeof _0x169971[_0x2766c2(0x1b2)])[_0x2766c2(0x1b4)]('number');}),test(_0x3190b8(0x196),async()=>{const _0xdaff51=_0x3190b8,{WS_MESSAGE_TYPE:_0x38eed8}=await import(_0xdaff51(0x1c3));expect(_0x38eed8)[_0xdaff51(0x1a0)](),expect(_0x38eed8['MESSAGE_ADDED'])['toBe'](_0xdaff51(0x19a)),expect(_0x38eed8[_0xdaff51(0x192)])['toBe'](_0xdaff51(0x193)),expect(_0x38eed8[_0xdaff51(0x1a6)])['toBe']('execution_stopped');});}),describe(a0_0x47b20f(0x1c5),()=>{const _0x14cf6f=a0_0x47b20f;test(_0x14cf6f(0x19d),async()=>{const _0x3e8d12=_0x14cf6f,{useMessages:_0x2af611}=await import('../../state/useMessages.js'),{SessionManager:_0x69ca30}=await import(_0x3e8d12(0x1c6)),{MessageRouter:_0x415fdb}=await import(_0x3e8d12(0x195)),{WebSocketManager:_0x5215d3}=await import('../../api/websocket.js'),_0x20c113=new _0x69ca30(_0x3e8d12(0x190),0x1f90),_0x4a4fa1=new _0x5215d3(_0x3e8d12(0x190),0x1f90),_0xb26690=new _0x415fdb(_0x4a4fa1);expect(_0x20c113)['toBeDefined'](),expect(_0xb26690)[_0x3e8d12(0x1a0)](),expect(typeof _0x2af611)[_0x3e8d12(0x1b4)](_0x3e8d12(0x1a8));}),test('Full message management stack can be imported together',async()=>{const _0x53d274=_0x14cf6f,[_0x1d9f15,_0x52612f,_0x48dbd9,_0x32417d,_0x3b2db2]=await Promise[_0x53d274(0x191)]([import(_0x53d274(0x1c3)),import(_0x53d274(0x1c6)),import('../../api/websocket.js'),import('../../api/messageRouter.js'),import(_0x53d274(0x1c7))]);expect(_0x1d9f15[_0x53d274(0x19f)])[_0x53d274(0x1a0)](),expect(_0x1d9f15[_0x53d274(0x1bb)])[_0x53d274(0x1a0)](),expect(_0x1d9f15['MESSAGE_CONFIG'])[_0x53d274(0x1a0)](),expect(_0x52612f['SessionManager'])[_0x53d274(0x1a0)](),expect(_0x48dbd9['WebSocketManager'])['toBeDefined'](),expect(_0x32417d['MessageRouter'])[_0x53d274(0x1a0)](),expect(_0x3b2db2[_0x53d274(0x1b3)])[_0x53d274(0x1a0)]();});}),describe('Message\x20Management\x20-\x20API\x20Endpoints\x20Validation',()=>{const _0x236c8c=a0_0x47b20f;test(_0x236c8c(0x19e),async()=>{const _0x4ae65d=_0x236c8c,{API_ENDPOINTS:_0x2bf0a7}=await import('../../config/constants.js');expect(_0x2bf0a7[_0x4ae65d(0x1b8)])[_0x4ae65d(0x1a0)](),expect(_0x2bf0a7[_0x4ae65d(0x1b8)])['toBe']('/api/orchestrator');}),test('Message\x20API\x20endpoints\x20follow\x20RESTful\x20pattern',async()=>{const _0x3a6a88=_0x236c8c,{API_ENDPOINTS:_0x47cc0e}=await import(_0x3a6a88(0x1c3));expect(_0x47cc0e[_0x3a6a88(0x1b8)])['toMatch'](/^\/api\//);});}),describe('Message\x20Management\x20-\x20Hook\x20Interface\x20Verification',()=>{const _0x33ff83=a0_0x47b20f;test('useMessages\x20returns\x20expected\x20interface\x20shape',async()=>{const _0x42e000=a0_0x5a4c,{useMessages:_0x4fc5cc}=await import(_0x42e000(0x1c7));expect(_0x4fc5cc[_0x42e000(0x199)])[_0x42e000(0x1b4)](0x3);}),test(_0x33ff83(0x1b0),async()=>{const _0x3a8020=_0x33ff83,{useMessageCount:_0x52ddb9}=await import('../../state/useMessages.js');expect(_0x52ddb9[_0x3a8020(0x199)])[_0x3a8020(0x1b4)](0x1);});}),describe('Message\x20Management\x20-\x20Constants\x20Validation',()=>{test('MESSAGE_CONFIG has sensible defaults',async()=>{const _0x471e01=a0_0x5a4c,{MESSAGE_CONFIG:_0xf9ad92}=await import('../../config/constants.js');expect(_0xf9ad92[_0x471e01(0x1b6)])[_0x471e01(0x1a9)](0x0),expect(_0xf9ad92[_0x471e01(0x1b6)])['toBeLessThanOrEqual'](0x186a0),expect(_0xf9ad92['MAX_MESSAGES_DISPLAY'])[_0x471e01(0x1a9)](0x0),expect(_0xf9ad92['MAX_MESSAGES_DISPLAY'])['toBeLessThanOrEqual'](0x2710);}),test('PAGINATION has sensible defaults',async()=>{const _0x2f0ec5=a0_0x5a4c,{PAGINATION:_0xbfd8d3}=await import(_0x2f0ec5(0x1c3));expect(_0xbfd8d3['PAGE_SIZE'])['toBeGreaterThan'](0x0),expect(_0xbfd8d3[_0x2f0ec5(0x1af)])[_0x2f0ec5(0x1bf)](0x3e8),expect(_0xbfd8d3[_0x2f0ec5(0x1b2)])['toBeGreaterThanOrEqual'](_0xbfd8d3['PAGE_SIZE']);}),test('MESSAGE_ROLE\x20values\x20are\x20lowercase',async()=>{const _0x265027=a0_0x5a4c,{MESSAGE_ROLE:_0x1842dc}=await import(_0x265027(0x1c3));expect(_0x1842dc[_0x265027(0x1c1)])['toBe'](_0x1842dc['USER'][_0x265027(0x1bc)]()),expect(_0x1842dc[_0x265027(0x1ae)])[_0x265027(0x1b4)](_0x1842dc[_0x265027(0x1ae)][_0x265027(0x1bc)]()),expect(_0x1842dc['SYSTEM'])[_0x265027(0x1b4)](_0x1842dc[_0x265027(0x1b5)]['toLowerCase']());});}),describe('Message\x20Management\x20-\x20WebSocket\x20Event\x20Handlers',()=>{const _0x3ea614=a0_0x47b20f;test(_0x3ea614(0x1ab),async()=>{const _0x4578d3=_0x3ea614,{MessageRouter:_0x4bd1b9}=await import(_0x4578d3(0x195)),{WebSocketManager:_0x2f56b2}=await import(_0x4578d3(0x1b9)),{WS_MESSAGE_TYPE:_0x282ba2}=await import(_0x4578d3(0x1c3)),_0x3108f5=new _0x2f56b2(_0x4578d3(0x190),0x1f90),_0x114d27=new _0x4bd1b9(_0x3108f5);expect(_0x114d27[_0x4578d3(0x1c2)](_0x282ba2[_0x4578d3(0x1a5)]))[_0x4578d3(0x1b4)](!![]),expect(_0x114d27['hasHandler'](_0x282ba2[_0x4578d3(0x192)]))['toBe'](!![]);});}),describe(a0_0x47b20f(0x198),()=>{const _0x2fa3c5=a0_0x47b20f;test(_0x2fa3c5(0x1c9),async()=>{const _0x49b494=_0x2fa3c5,{MESSAGE_CONFIG:_0x22079f}=await import('../../config/constants.js');expect(_0x22079f['MAX_MESSAGE_LENGTH'])['toBeDefined'](),expect(typeof _0x22079f['MAX_MESSAGE_LENGTH'])[_0x49b494(0x1b4)]('number');const _0x471160='a'[_0x49b494(0x1b1)](_0x22079f['MAX_MESSAGE_LENGTH']+0x1);expect(_0x471160[_0x49b494(0x199)])['toBeGreaterThan'](_0x22079f['MAX_MESSAGE_LENGTH']);}),test(_0x2fa3c5(0x1c4),async()=>{const _0x4a581a=_0x2fa3c5,{MESSAGE_CONFIG:_0x4441b8}=await import('../../config/constants.js');expect(_0x4441b8['MAX_MESSAGES_DISPLAY'])[_0x4a581a(0x1a0)](),expect(typeof _0x4441b8['MAX_MESSAGES_DISPLAY'])['toBe'](_0x4a581a(0x18f)),expect(_0x4441b8[_0x4a581a(0x197)])['toBeGreaterThan'](0x0);});}),describe('Message\x20Management\x20-\x20Pagination\x20Logic',()=>{test('PAGINATION\x20supports\x20offset-based\x20pagination',async()=>{const _0x555195=a0_0x5a4c,{PAGINATION:_0xb9cee0}=await import(_0x555195(0x1c3)),_0x1f6f01=0x0,_0x2b2562=_0x1f6f01*_0xb9cee0[_0x555195(0x1af)];expect(_0x2b2562)[_0x555195(0x1b4)](0x0);const _0x516c25=0x1,_0x12aa31=_0x516c25*_0xb9cee0['PAGE_SIZE'];expect(_0x12aa31)['toBe'](_0xb9cee0['PAGE_SIZE']);}),test('PAGINATION\x20limit\x20does\x20not\x20exceed\x20MAX_PAGE_SIZE',async()=>{const _0x12287c=a0_0x5a4c,{PAGINATION:_0x4d7e29}=await import(_0x12287c(0x1c3)),_0x469293=0x3e8,_0x17d8b7=Math['min'](_0x469293,_0x4d7e29['MAX_PAGE_SIZE']);expect(_0x17d8b7)[_0x12287c(0x1bf)](_0x4d7e29[_0x12287c(0x1b2)]);});});
1
+ const a0_0x453c78=a0_0x5550;(function(_0x3f3bc0,_0x6533d9){const _0x2fe892=a0_0x5550,_0x56c9a7=_0x3f3bc0();while(!![]){try{const _0x592b00=parseInt(_0x2fe892(0x83))/0x1+-parseInt(_0x2fe892(0xa0))/0x2+-parseInt(_0x2fe892(0x7c))/0x3*(-parseInt(_0x2fe892(0x8b))/0x4)+parseInt(_0x2fe892(0x75))/0x5+-parseInt(_0x2fe892(0xa1))/0x6*(parseInt(_0x2fe892(0x92))/0x7)+parseInt(_0x2fe892(0x80))/0x8+-parseInt(_0x2fe892(0xa9))/0x9;if(_0x592b00===_0x6533d9)break;else _0x56c9a7['push'](_0x56c9a7['shift']());}catch(_0x90dc10){_0x56c9a7['push'](_0x56c9a7['shift']());}}}(a0_0x4efe,0x75191));function a0_0x4efe(){const _0x4ac633=['quDftLrFuKvtue9ou0u','Bg9JywXOB3n0','v1nFtuvtu0fhrv9uwvbfigLUy2X1zgvZig1LC3nHz2uGzxzLBNrZ','Dg9czuDYzwf0zxjuAgfU','tufyx01fu1nbr0vtx0rju1bmqvK','Dg9czuDYzwf0zxjuAgfUt3jfCxvHBa','tuvtu0fhrv9st0Xf','quDftLrFtu9erv9dsefor0ve','twvZC2fNzsbnyw5Hz2vTzw50ic0GugfNAw5HDgLVBIbmB2DPyW','CMvWzwf0','oti0nJm2C2fYCw9H','mtu3mdu2nLf0tNrwyG','zNvUy3rPB24','tuvtu0fhrv9st0XfihzHBhvLCYbHCMuGBg93zxjJyxnL','zgvMyxvSDa','BNvTyMvY','uefhsu5bveLptIbJB25ZDgfUDhmGyxjLigrLzMLUzwq','twvZC2fNzsbnyw5Hz2vTzw50ic0Gsg9VAYbjBNrLCMzHy2uGvMvYAwzPy2f0Aw9U','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','odi2odm5EfrmCKPc','v2vIu29JA2v0twfUywDLCG','tufyx01fu1nbr0vFtevor1ri','mtC5mZm1nvD4BxbcEa','lI4VlI4VyxbPl3nLC3nPB24UANm','uefhsu5bveLptIbSAw1PDcbKB2vZig5VDcbLEgnLzwqGtufyx1bbr0vFu0LArq','tufyx1bbr0vFu0LArq','twvZC2fNzsbnyw5Hz2vTzw50ic0Gv2vIu29JA2v0iev2zw50ieHHBMrSzxjZ','BgvUz3rO','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','nZqWnZqYELDUrKPA','qvntsvnuqu5u','uefhrv9tsvPf','tuvtu0fhrv9uwvbf','mteZmdy2nfnbvM9zCG','u1Ltvevn','t1jdsevtvfjbve9s','ntyZnteYCePpAvri','lI4VlI4VC3rHDguVDxnLtwvZC2fNzxmUANm','Dg9mB3DLCKnHC2u','Dg9czq','Dg9czurLzMLUzwq','twvZC2fNzvjVDxrLCIbOyxmGBwvZC2fNzsbLDMvUDcbOyw5KBgvYCYbYzwDPC3rLCMvK','twvZC2fNzsbnyw5Hz2vTzw50ic0Gq29UC3rHBNrZ','AgfZsgfUzgXLCG','og1iDujfBW','DxnLtwvZC2fNzxm','C3LZDgvTlw5VDgLMAwnHDgLVBG','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','tuvtu0fhrv9dt05gsuCGzw5MB3jJzxmGBwf4Aw11BsbTzxnZywDLigXLBMD0Aa','Dg9czuXLC3nuAgfUt3jfCxvHBa','uefhsu5bveLptIbZDxbWB3j0CYbVzMzZzxqTyMfZzwqGCgfNAw5HDgLVBG','mtrPtwjQBvq','C3LZDgvT','vvnfuG','vvnfuL9nrvntquDf'];a0_0x4efe=function(){return _0x4ac633;};return a0_0x4efe();}import{describe,test,expect}from'@jest/globals';function a0_0x5550(_0x11ec20,_0x2278fa){_0x11ec20=_0x11ec20-0x75;const _0x4efed6=a0_0x4efe();let _0x555045=_0x4efed6[_0x11ec20];if(a0_0x5550['HBUSdY']===undefined){var _0x205be6=function(_0x48ac1b){const _0x38ae1f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x376ed4='',_0x1f42cb='';for(let _0x20a451=0x0,_0x2a92d1,_0x4ea32d,_0x5e1293=0x0;_0x4ea32d=_0x48ac1b['charAt'](_0x5e1293++);~_0x4ea32d&&(_0x2a92d1=_0x20a451%0x4?_0x2a92d1*0x40+_0x4ea32d:_0x4ea32d,_0x20a451++%0x4)?_0x376ed4+=String['fromCharCode'](0xff&_0x2a92d1>>(-0x2*_0x20a451&0x6)):0x0){_0x4ea32d=_0x38ae1f['indexOf'](_0x4ea32d);}for(let _0x6cc3bd=0x0,_0x4a34e0=_0x376ed4['length'];_0x6cc3bd<_0x4a34e0;_0x6cc3bd++){_0x1f42cb+='%'+('00'+_0x376ed4['charCodeAt'](_0x6cc3bd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1f42cb);};a0_0x5550['ZSbXwl']=_0x205be6,a0_0x5550['DCigsa']={},a0_0x5550['HBUSdY']=!![];}const _0x5b561a=_0x4efed6[0x0],_0x4d51fa=_0x11ec20+_0x5b561a,_0x4d8e73=a0_0x5550['DCigsa'][_0x4d51fa];return!_0x4d8e73?(_0x555045=a0_0x5550['ZSbXwl'](_0x555045),a0_0x5550['DCigsa'][_0x4d51fa]=_0x555045):_0x555045=_0x4d8e73,_0x555045;}describe('Message\x20Management\x20-\x20Imports',()=>{test('useMessages hook can be imported',async()=>{const {useMessages:_0x376ed4}=await import('../../state/useMessages.js');expect(_0x376ed4)['toBeDefined'](),expect(typeof _0x376ed4)['toBe']('function');}),test('useMessages is default export',async()=>{const _0x1b93ca=a0_0x5550,module=await import('../../state/useMessages.js');expect(module[_0x1b93ca(0xa4)])['toBeDefined'](),expect(typeof module['default'])['toBe'](_0x1b93ca(0xa2)),expect(module['default'])[_0x1b93ca(0x86)](module['useMessages']);}),test('useMessageCount helper hook can be imported',async()=>{const _0xe9dd71=a0_0x5550,{useMessageCount:_0x1f42cb}=await import('../../state/useMessages.js');expect(_0x1f42cb)[_0xe9dd71(0x87)](),expect(typeof _0x1f42cb)[_0xe9dd71(0x86)]('function');});}),describe(a0_0x453c78(0x89),()=>{const _0x5245ec=a0_0x453c78;test('MESSAGE_ROLE\x20constants\x20are\x20defined',async()=>{const _0x3058d0=a0_0x5550,{MESSAGE_ROLE:_0x20a451}=await import('../../config/constants.js');expect(_0x20a451)['toBeDefined'](),expect(_0x20a451[_0x3058d0(0x94)])['toBe']('user'),expect(_0x20a451[_0x3058d0(0x7d)])['toBe']('assistant'),expect(_0x20a451[_0x3058d0(0x81)])['toBe'](_0x3058d0(0x93));}),test('MESSAGE_TYPE\x20constants\x20are\x20defined',async()=>{const _0x245eeb=a0_0x5550,{MESSAGE_TYPE:_0x2a92d1}=await import(_0x245eeb(0x8e));expect(_0x2a92d1)[_0x245eeb(0x87)](),expect(_0x2a92d1[_0x245eeb(0x95)])[_0x245eeb(0x86)]('user-message'),expect(_0x2a92d1[_0x245eeb(0x96)])['toBe']('agent-response'),expect(_0x2a92d1['SYSTEM_NOTIFICATION'])['toBe'](_0x245eeb(0x8d));}),test('MESSAGE_CONFIG\x20constants\x20are\x20defined',async()=>{const _0x33d2d6=a0_0x5550,{MESSAGE_CONFIG:_0x4ea32d}=await import('../../config/constants.js');expect(_0x4ea32d)[_0x33d2d6(0x87)](),expect(_0x4ea32d['MAX_MESSAGE_LENGTH'])[_0x33d2d6(0x87)](),expect(_0x4ea32d['MAX_MESSAGES_DISPLAY'])[_0x33d2d6(0x87)](),expect(typeof _0x4ea32d['MAX_MESSAGE_LENGTH'])[_0x33d2d6(0x86)]('number'),expect(typeof _0x4ea32d[_0x33d2d6(0x9a)])['toBe']('number');}),test(_0x5245ec(0xa6),async()=>{const _0x4fd96d=_0x5245ec,{PAGINATION:_0x5e1293}=await import(_0x4fd96d(0x8e));expect(_0x5e1293)[_0x4fd96d(0x87)](),expect(_0x5e1293['PAGE_SIZE'])[_0x4fd96d(0x87)](),expect(_0x5e1293[_0x4fd96d(0x78)])['toBeDefined'](),expect(typeof _0x5e1293[_0x4fd96d(0x7e)])[_0x4fd96d(0x86)](_0x4fd96d(0xa5)),expect(typeof _0x5e1293['MAX_PAGE_SIZE'])[_0x4fd96d(0x86)](_0x4fd96d(0xa5));}),test(_0x5245ec(0x98),async()=>{const _0x161bf3=_0x5245ec,{WS_MESSAGE_TYPE:_0x6cc3bd}=await import(_0x161bf3(0x8e));expect(_0x6cc3bd)['toBeDefined'](),expect(_0x6cc3bd['MESSAGE_ADDED'])[_0x161bf3(0x86)]('message_added'),expect(_0x6cc3bd[_0x161bf3(0x9d)])[_0x161bf3(0x86)]('agent_mode_changed'),expect(_0x6cc3bd['EXECUTION_STOPPED'])['toBe']('execution_stopped');});}),describe('Message\x20Management\x20-\x20Integration',()=>{test('useMessages\x20hook\x20integrates\x20with\x20Session\x20and\x20MessageRouter',async()=>{const _0x201a87=a0_0x5550,{useMessages:_0x4a34e0}=await import('../../state/useMessages.js'),{SessionManager:_0x36fa07}=await import('../../api/session.js'),{MessageRouter:_0x39ded6}=await import(_0x201a87(0x7b)),{WebSocketManager:_0x38077e}=await import('../../api/websocket.js'),_0x53109d=new _0x36fa07(_0x201a87(0x97),0x1f90),_0x2ba859=new _0x38077e('localhost',0x1f90),_0x1c2448=new _0x39ded6(_0x2ba859);expect(_0x53109d)['toBeDefined'](),expect(_0x1c2448)['toBeDefined'](),expect(typeof _0x4a34e0)[_0x201a87(0x86)](_0x201a87(0xa2));}),test('Full message management stack can be imported together',async()=>{const _0x50175d=a0_0x5550,[_0x1d7f29,_0x171d4e,_0x108620,_0x35e9eb,_0x26fb12]=await Promise['all']([import(_0x50175d(0x8e)),import(_0x50175d(0x76)),import(_0x50175d(0xa8)),import('../../api/messageRouter.js'),import(_0x50175d(0x84))]);expect(_0x1d7f29[_0x50175d(0x9c)])['toBeDefined'](),expect(_0x1d7f29[_0x50175d(0x7f)])['toBeDefined'](),expect(_0x1d7f29['MESSAGE_CONFIG'])[_0x50175d(0x87)](),expect(_0x171d4e['SessionManager'])['toBeDefined'](),expect(_0x108620[_0x50175d(0xaa)])[_0x50175d(0x87)](),expect(_0x35e9eb['MessageRouter'])[_0x50175d(0x87)](),expect(_0x26fb12[_0x50175d(0x8c)])['toBeDefined']();});}),describe('Message\x20Management\x20-\x20API\x20Endpoints\x20Validation',()=>{test('Orchestrator\x20endpoint\x20can\x20be\x20used\x20for\x20message\x20operations',async()=>{const _0x25be99=a0_0x5550,{API_ENDPOINTS:_0x1fc3d8}=await import('../../config/constants.js');expect(_0x1fc3d8[_0x25be99(0x82)])['toBeDefined'](),expect(_0x1fc3d8[_0x25be99(0x82)])['toBe']('/api/orchestrator');}),test('Message\x20API\x20endpoints\x20follow\x20RESTful\x20pattern',async()=>{const _0x2d749d=a0_0x5550,{API_ENDPOINTS:_0x9ed451}=await import(_0x2d749d(0x8e));expect(_0x9ed451['ORCHESTRATOR'])['toMatch'](/^\/api\//);});}),describe(a0_0x453c78(0xa7),()=>{test('useMessages\x20returns\x20expected\x20interface\x20shape',async()=>{const {useMessages:_0x541897}=await import('../../state/useMessages.js');expect(_0x541897['length'])['toBe'](0x3);}),test('useMessageCount\x20returns\x20expected\x20interface\x20shape',async()=>{const {useMessageCount:_0x1ee58d}=await import('../../state/useMessages.js');expect(_0x1ee58d['length'])['toBe'](0x1);});}),describe('Message\x20Management\x20-\x20Constants\x20Validation',()=>{const _0x3e6b57=a0_0x453c78;test('MESSAGE_CONFIG has sensible defaults',async()=>{const _0x4a333f=a0_0x5550,{MESSAGE_CONFIG:_0x5d603b}=await import(_0x4a333f(0x8e));expect(_0x5d603b['MAX_MESSAGE_LENGTH'])[_0x4a333f(0x99)](0x0),expect(_0x5d603b['MAX_MESSAGE_LENGTH'])[_0x4a333f(0x90)](0x186a0),expect(_0x5d603b[_0x4a333f(0x9a)])['toBeGreaterThan'](0x0),expect(_0x5d603b['MAX_MESSAGES_DISPLAY'])['toBeLessThanOrEqual'](0x2710);}),test('PAGINATION has sensible defaults',async()=>{const _0x5a4d2b=a0_0x5550,{PAGINATION:_0x3663cb}=await import(_0x5a4d2b(0x8e));expect(_0x3663cb[_0x5a4d2b(0x7e)])['toBeGreaterThan'](0x0),expect(_0x3663cb[_0x5a4d2b(0x7e)])['toBeLessThanOrEqual'](0x3e8),expect(_0x3663cb[_0x5a4d2b(0x78)])[_0x5a4d2b(0x9b)](_0x3663cb[_0x5a4d2b(0x7e)]);}),test(_0x3e6b57(0xa3),async()=>{const _0x1d772d=_0x3e6b57,{MESSAGE_ROLE:_0x476ad6}=await import(_0x1d772d(0x8e));expect(_0x476ad6[_0x1d772d(0x94)])['toBe'](_0x476ad6[_0x1d772d(0x94)][_0x1d772d(0x85)]()),expect(_0x476ad6[_0x1d772d(0x7d)])['toBe'](_0x476ad6[_0x1d772d(0x7d)]['toLowerCase']()),expect(_0x476ad6['SYSTEM'])[_0x1d772d(0x86)](_0x476ad6[_0x1d772d(0x81)][_0x1d772d(0x85)]());});}),describe(a0_0x453c78(0x79),()=>{const _0x569ac7=a0_0x453c78;test(_0x569ac7(0x88),async()=>{const _0x513d01=_0x569ac7,{MessageRouter:_0xcbe0d4}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x1db165}=await import('../../api/websocket.js'),{WS_MESSAGE_TYPE:_0x12f8a8}=await import('../../config/constants.js'),_0x3f1df7=new _0x1db165('localhost',0x1f90),_0x29eba7=new _0xcbe0d4(_0x3f1df7);expect(_0x29eba7[_0x513d01(0x8a)](_0x12f8a8['MESSAGE_ADDED']))[_0x513d01(0x86)](!![]),expect(_0x29eba7['hasHandler'](_0x12f8a8['AGENT_MODE_CHANGED']))['toBe'](!![]);});}),describe('Message\x20Management\x20-\x20Error\x20Handling',()=>{const _0x1d5631=a0_0x453c78;test(_0x1d5631(0x8f),async()=>{const _0x229d44=_0x1d5631,{MESSAGE_CONFIG:_0x4cecf3}=await import('../../config/constants.js');expect(_0x4cecf3['MAX_MESSAGE_LENGTH'])['toBeDefined'](),expect(typeof _0x4cecf3['MAX_MESSAGE_LENGTH'])[_0x229d44(0x86)](_0x229d44(0xa5));const _0x1b7f03='a'[_0x229d44(0x9f)](_0x4cecf3[_0x229d44(0xab)]+0x1);expect(_0x1b7f03[_0x229d44(0x7a)])['toBeGreaterThan'](_0x4cecf3['MAX_MESSAGE_LENGTH']);}),test('MESSAGE_CONFIG\x20enforces\x20maximum\x20display\x20messages',async()=>{const _0x42a79c=_0x1d5631,{MESSAGE_CONFIG:_0x2772be}=await import(_0x42a79c(0x8e));expect(_0x2772be['MAX_MESSAGES_DISPLAY'])['toBeDefined'](),expect(typeof _0x2772be['MAX_MESSAGES_DISPLAY'])['toBe']('number'),expect(_0x2772be[_0x42a79c(0x9a)])[_0x42a79c(0x99)](0x0);});}),describe(a0_0x453c78(0x9e),()=>{const _0x4eb3cb=a0_0x453c78;test(_0x4eb3cb(0x91),async()=>{const _0x27c543=_0x4eb3cb,{PAGINATION:_0x5059d1}=await import('../../config/constants.js'),_0x2d92ab=0x0,_0x274b47=_0x2d92ab*_0x5059d1['PAGE_SIZE'];expect(_0x274b47)['toBe'](0x0);const _0xc01aa6=0x1,_0x2397b6=_0xc01aa6*_0x5059d1['PAGE_SIZE'];expect(_0x2397b6)[_0x27c543(0x86)](_0x5059d1[_0x27c543(0x7e)]);}),test(_0x4eb3cb(0x77),async()=>{const _0x16ff45=_0x4eb3cb,{PAGINATION:_0x446ea2}=await import(_0x16ff45(0x8e)),_0xc60876=0x3e8,_0x14bc94=Math['min'](_0xc60876,_0x446ea2[_0x16ff45(0x78)]);expect(_0x14bc94)[_0x16ff45(0x90)](_0x446ea2['MAX_PAGE_SIZE']);});});
@@ -1 +1 @@
1
- const a0_0x59e042=a0_0x46f3;function a0_0x46f3(_0x4c35ed,_0x2ba4e8){_0x4c35ed=_0x4c35ed-0x131;const _0x2e45f4=a0_0x2e45();let _0x46f31e=_0x2e45f4[_0x4c35ed];if(a0_0x46f3['Qqcdoe']===undefined){var _0x4a26b4=function(_0x4576ed){const _0x2fb4be='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b1028='',_0x1dddcd='';for(let _0x205a41=0x0,_0x4b3798,_0x1d4f72,_0x245f1c=0x0;_0x1d4f72=_0x4576ed['charAt'](_0x245f1c++);~_0x1d4f72&&(_0x4b3798=_0x205a41%0x4?_0x4b3798*0x40+_0x1d4f72:_0x1d4f72,_0x205a41++%0x4)?_0x3b1028+=String['fromCharCode'](0xff&_0x4b3798>>(-0x2*_0x205a41&0x6)):0x0){_0x1d4f72=_0x2fb4be['indexOf'](_0x1d4f72);}for(let _0x55856b=0x0,_0x49d222=_0x3b1028['length'];_0x55856b<_0x49d222;_0x55856b++){_0x1dddcd+='%'+('00'+_0x3b1028['charCodeAt'](_0x55856b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1dddcd);};a0_0x46f3['SRFBHx']=_0x4a26b4,a0_0x46f3['LYdCKz']={},a0_0x46f3['Qqcdoe']=!![];}const _0x5660b6=_0x2e45f4[0x0],_0x1fa5d2=_0x4c35ed+_0x5660b6,_0x5885b0=a0_0x46f3['LYdCKz'][_0x1fa5d2];return!_0x5885b0?(_0x46f31e=a0_0x46f3['SRFBHx'](_0x46f31e),a0_0x46f3['LYdCKz'][_0x1fa5d2]=_0x46f31e):_0x46f31e=_0x5885b0,_0x46f31e;}(function(_0x1726b8,_0x519c5c){const _0x3735c3=a0_0x46f3,_0x9a161b=_0x1726b8();while(!![]){try{const _0x23d4b9=-parseInt(_0x3735c3(0x17e))/0x1*(parseInt(_0x3735c3(0x168))/0x2)+parseInt(_0x3735c3(0x150))/0x3+parseInt(_0x3735c3(0x17a))/0x4+-parseInt(_0x3735c3(0x16e))/0x5+-parseInt(_0x3735c3(0x16c))/0x6+-parseInt(_0x3735c3(0x175))/0x7+parseInt(_0x3735c3(0x141))/0x8*(parseInt(_0x3735c3(0x15e))/0x9);if(_0x23d4b9===_0x519c5c)break;else _0x9a161b['push'](_0x9a161b['shift']());}catch(_0x12a753){_0x9a161b['push'](_0x9a161b['shift']());}}}(a0_0x2e45,0x6f298));import{describe,test,expect}from'@jest/globals';describe(a0_0x59e042(0x17f),()=>{test('useTools hook can be imported',async()=>{const _0x19a8d7=a0_0x46f3,{useTools:_0x3b1028}=await import('../../state/useTools.js');expect(_0x3b1028)[_0x19a8d7(0x138)](),expect(typeof _0x3b1028)['toBe'](_0x19a8d7(0x14b));}),test('useTools is default export',async()=>{const _0x484188=a0_0x46f3,module=await import(_0x484188(0x132));expect(module['default'])['toBeDefined'](),expect(typeof module[_0x484188(0x15c)])['toBe']('function'),expect(module['default'])[_0x484188(0x173)](module['useTools']);});}),describe(a0_0x59e042(0x179),()=>{const _0x3f2bb6=a0_0x59e042;test(_0x3f2bb6(0x13d),async()=>{const _0x1b28bb=_0x3f2bb6,{TOOL_CATEGORY:_0x1dddcd}=await import('../../config/constants.js');expect(_0x1dddcd)[_0x1b28bb(0x138)](),expect(_0x1dddcd['SYSTEM'])['toBeDefined'](),expect(_0x1dddcd[_0x1b28bb(0x14a)])[_0x1b28bb(0x138)](),expect(_0x1dddcd[_0x1b28bb(0x151)])['toBeDefined'](),expect(_0x1dddcd[_0x1b28bb(0x165)])[_0x1b28bb(0x138)](),expect(_0x1dddcd['COLLABORATION'])['toBeDefined'](),expect(_0x1dddcd['AI'])[_0x1b28bb(0x138)]();}),test('TOOL_CATEGORY\x20values\x20are\x20lowercase',async()=>{const _0x46b3ca=_0x3f2bb6,{TOOL_CATEGORY:_0x205a41}=await import(_0x46b3ca(0x154));expect(_0x205a41[_0x46b3ca(0x156)])[_0x46b3ca(0x173)](_0x205a41[_0x46b3ca(0x156)][_0x46b3ca(0x158)]()),expect(_0x205a41['AUTOMATION'])['toBe'](_0x205a41[_0x46b3ca(0x14a)]['toLowerCase']()),expect(_0x205a41['ANALYSIS'])['toBe'](_0x205a41['ANALYSIS'][_0x46b3ca(0x158)]()),expect(_0x205a41['UTILITY'])['toBe'](_0x205a41[_0x46b3ca(0x165)]['toLowerCase']());}),test('Tools\x20API\x20endpoint\x20is\x20defined',async()=>{const _0x427ce9=_0x3f2bb6,{API_ENDPOINTS:_0x4b3798}=await import('../../config/constants.js');expect(_0x4b3798['TOOLS'])[_0x427ce9(0x138)](),expect(_0x4b3798[_0x427ce9(0x139)])['toBe'](_0x427ce9(0x145));}),test(_0x3f2bb6(0x178),async()=>{const _0x2b0234=_0x3f2bb6,{API_ENDPOINTS:_0x1d4f72}=await import('../../config/constants.js');expect(_0x1d4f72['ORCHESTRATOR'])['toBeDefined'](),expect(_0x1d4f72[_0x2b0234(0x155)])[_0x2b0234(0x173)](_0x2b0234(0x143));});}),describe('Tools\x20Management\x20-\x20Integration',()=>{test('useTools\x20hook\x20integrates\x20with\x20Session\x20and\x20MessageRouter',async()=>{const _0x4c057c=a0_0x46f3,{useTools:_0x245f1c}=await import(_0x4c057c(0x132)),{SessionManager:_0x55856b}=await import(_0x4c057c(0x14d)),{MessageRouter:_0x49d222}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x3766de}=await import('../../api/websocket.js'),_0x4fefe9=new _0x55856b(_0x4c057c(0x164),0x1f90),_0x279b4d=new _0x3766de('localhost',0x1f90),_0x20a7f1=new _0x49d222(_0x279b4d);expect(_0x4fefe9)['toBeDefined'](),expect(_0x20a7f1)[_0x4c057c(0x138)](),expect(typeof _0x245f1c)['toBe'](_0x4c057c(0x14b));}),test('Full tools management stack can be imported together',async()=>{const _0x3e151c=a0_0x46f3,[_0x168e7a,_0x3075a9,_0x41492a,_0x436e19,_0x4b691a]=await Promise['all']([import(_0x3e151c(0x154)),import('../../api/session.js'),import(_0x3e151c(0x136)),import(_0x3e151c(0x140)),import(_0x3e151c(0x132))]);expect(_0x168e7a[_0x3e151c(0x135)])['toBeDefined'](),expect(_0x168e7a[_0x3e151c(0x16d)])['toBeDefined'](),expect(_0x3075a9['SessionManager'])['toBeDefined'](),expect(_0x41492a['WebSocketManager'])['toBeDefined'](),expect(_0x436e19['MessageRouter'])[_0x3e151c(0x138)](),expect(_0x4b691a[_0x3e151c(0x157)])['toBeDefined']();});}),describe('Tools\x20Management\x20-\x20API\x20Endpoints\x20Validation',()=>{const _0x317cd1=a0_0x59e042;test('Tools\x20endpoint\x20follows\x20RESTful\x20pattern',async()=>{const _0x2566ba=a0_0x46f3,{API_ENDPOINTS:_0x3f4e2c}=await import(_0x2566ba(0x154));expect(_0x3f4e2c['TOOLS'])[_0x2566ba(0x13b)](/^\/api\//),expect(_0x3f4e2c[_0x2566ba(0x139)])['toBe']('/api/tools');}),test(_0x317cd1(0x15a),async()=>{const _0x606bb2=_0x317cd1,{API_ENDPOINTS:_0x25df38}=await import(_0x606bb2(0x154));expect(_0x25df38[_0x606bb2(0x155)])[_0x606bb2(0x138)](),expect(_0x25df38[_0x606bb2(0x155)])['toBe'](_0x606bb2(0x143));});}),describe('Tools\x20Management\x20-\x20Hook\x20Interface\x20Verification',()=>{test('useTools\x20returns\x20expected\x20interface\x20shape',async()=>{const _0x56bae4=a0_0x46f3,{useTools:_0x5620cf}=await import(_0x56bae4(0x132));expect(_0x5620cf['length'])[_0x56bae4(0x173)](0x3);});}),describe(a0_0x59e042(0x163),()=>{const _0x37db4f=a0_0x59e042;test(_0x37db4f(0x14f),async()=>{const _0x1dfb65=_0x37db4f,{TOOL_CATEGORY:_0x3dd337}=await import(_0x1dfb65(0x154)),_0x353c0e=Object[_0x1dfb65(0x16f)](_0x3dd337);expect(_0x353c0e)[_0x1dfb65(0x174)](_0x1dfb65(0x156)),expect(_0x353c0e)['toContain']('AUTOMATION'),expect(_0x353c0e)['toContain'](_0x1dfb65(0x151)),expect(_0x353c0e)['toContain']('UTILITY'),expect(_0x353c0e)[_0x1dfb65(0x174)]('COLLABORATION'),expect(_0x353c0e)[_0x1dfb65(0x174)]('AI');}),test('TOOL_CATEGORY\x20values\x20match\x20expected\x20format',async()=>{const _0x11b7bb=_0x37db4f,{TOOL_CATEGORY:_0x1c31f8}=await import(_0x11b7bb(0x154));expect(_0x1c31f8['SYSTEM'])[_0x11b7bb(0x13b)](/^[a-z_]+$/),expect(_0x1c31f8[_0x11b7bb(0x14a)])['toMatch'](/^[a-z_]+$/),expect(_0x1c31f8[_0x11b7bb(0x151)])['toMatch'](/^[a-z_]+$/),expect(_0x1c31f8['UTILITY'])[_0x11b7bb(0x13b)](/^[a-z_]+$/);});}),describe('Tools\x20Management\x20-\x20WebSocket\x20Event\x20Handlers',()=>{const _0x3e8f80=a0_0x59e042;test(_0x3e8f80(0x152),async()=>{const _0x49221c=_0x3e8f80,{MessageRouter:_0x16b4ad}=await import(_0x49221c(0x140)),{WebSocketManager:_0x1b668e}=await import(_0x49221c(0x136)),_0x3f0361=new _0x1b668e('localhost',0x1f90),_0x211e4d=new _0x16b4ad(_0x3f0361);expect(_0x211e4d['hasHandler'])['toBeDefined'](),expect(typeof _0x211e4d['hasHandler'])[_0x49221c(0x173)]('function');});}),describe(a0_0x59e042(0x160),()=>{test('TOOL_CATEGORY\x20can\x20be\x20used\x20to\x20filter\x20tools\x20by\x20category',async()=>{const _0x9f823b=a0_0x46f3,{TOOL_CATEGORY:_0xa79b46}=await import(_0x9f823b(0x154)),_0x46f821=[{'name':_0x9f823b(0x14c),'category':_0xa79b46[_0x9f823b(0x156)]},{'name':'terminal','category':_0xa79b46['SYSTEM']},{'name':_0x9f823b(0x13a),'category':_0xa79b46[_0x9f823b(0x151)]},{'name':_0x9f823b(0x13c),'category':_0xa79b46['UTILITY']},{'name':'ai_assistant','category':_0xa79b46['AI']}],_0x239a3d=_0x46f821[_0x9f823b(0x171)](_0x5184ff=>_0x5184ff['category']===_0xa79b46['SYSTEM']),_0x16dfc9=_0x46f821[_0x9f823b(0x171)](_0x41c2df=>_0x41c2df[_0x9f823b(0x166)]===_0xa79b46[_0x9f823b(0x151)]),_0x456644=_0x46f821[_0x9f823b(0x171)](_0x434d00=>_0x434d00[_0x9f823b(0x166)]===_0xa79b46[_0x9f823b(0x165)]),_0x3c5c84=_0x46f821[_0x9f823b(0x171)](_0x174598=>_0x174598['category']===_0xa79b46['AI']);expect(_0x239a3d[_0x9f823b(0x14e)])[_0x9f823b(0x173)](0x2),expect(_0x16dfc9['length'])['toBe'](0x1),expect(_0x456644[_0x9f823b(0x14e)])[_0x9f823b(0x173)](0x1),expect(_0x3c5c84['length'])[_0x9f823b(0x173)](0x1),expect(_0x239a3d[0x0][_0x9f823b(0x169)])['toBe'](_0x9f823b(0x14c)),expect(_0x16dfc9[0x0]['name'])['toBe'](_0x9f823b(0x13a));});}),describe('Tools\x20Management\x20-\x20Tool\x20Search',()=>{test('Tool\x20search\x20should\x20work\x20with\x20name\x20and\x20description',async()=>{const _0x15239c=a0_0x46f3,_0x421abb=[{'name':_0x15239c(0x176),'description':'Read\x20contents\x20of\x20a\x20file'},{'name':_0x15239c(0x159),'description':_0x15239c(0x133)},{'name':'analyze_code','description':_0x15239c(0x16a)}],_0x229397=_0x4354f9=>{const _0x574148=_0x15239c,_0xc80b3e=_0x4354f9[_0x574148(0x158)]();return _0x421abb['filter'](_0x321de2=>_0x321de2['name']?.['toLowerCase']()[_0x574148(0x17b)](_0xc80b3e)||_0x321de2['description']?.[_0x574148(0x158)]()['includes'](_0xc80b3e));},_0x260b93=_0x229397(_0x15239c(0x149));expect(_0x260b93[_0x15239c(0x14e)])['toBe'](0x2),expect(_0x260b93[_0x15239c(0x144)](_0x13a51f=>_0x13a51f[_0x15239c(0x169)]))[_0x15239c(0x174)](_0x15239c(0x176)),expect(_0x260b93['map'](_0x47f929=>_0x47f929[_0x15239c(0x169)]))[_0x15239c(0x174)](_0x15239c(0x159));const _0x3b67e8=_0x229397('analyze');expect(_0x3b67e8['length'])[_0x15239c(0x173)](0x1),expect(_0x3b67e8[0x0]['name'])[_0x15239c(0x173)](_0x15239c(0x13a));});}),describe(a0_0x59e042(0x13e),()=>{const _0x16fca7=a0_0x59e042;test(_0x16fca7(0x17d),async()=>{const _0x4c665d=_0x16fca7,_0x56054c=new Set();_0x56054c[_0x4c665d(0x177)]('read_file'),_0x56054c[_0x4c665d(0x177)](_0x4c665d(0x13a)),expect(_0x56054c['has']('read_file'))[_0x4c665d(0x173)](!![]),expect(_0x56054c['has'](_0x4c665d(0x13a)))[_0x4c665d(0x173)](!![]),expect(_0x56054c['size'])[_0x4c665d(0x173)](0x2),_0x56054c[_0x4c665d(0x170)](_0x4c665d(0x176)),expect(_0x56054c[_0x4c665d(0x147)](_0x4c665d(0x176)))['toBe'](![]),expect(_0x56054c[_0x4c665d(0x147)](_0x4c665d(0x13a)))['toBe'](!![]),expect(_0x56054c[_0x4c665d(0x137)])['toBe'](0x1);}),test(_0x16fca7(0x15b),async()=>{const _0x34a79c=_0x16fca7,_0x22d2ae=new Map();_0x22d2ae[_0x34a79c(0x13f)]('exec-1',{'success':!![],'data':'file\x20contents'}),_0x22d2ae['set']('exec-2',{'success':!![],'data':{'issues':[]}}),expect(_0x22d2ae[_0x34a79c(0x162)](_0x34a79c(0x153)))['toBeDefined'](),expect(_0x22d2ae['get']('exec-1')[_0x34a79c(0x161)])['toBe'](!![]),expect(_0x22d2ae[_0x34a79c(0x162)]('exec-1')['data'])[_0x34a79c(0x173)](_0x34a79c(0x15d)),expect(_0x22d2ae[_0x34a79c(0x162)]('exec-2'))[_0x34a79c(0x138)](),expect(_0x22d2ae['get']('exec-2')[_0x34a79c(0x131)]['issues'])[_0x34a79c(0x16b)]([]),expect(_0x22d2ae['size'])[_0x34a79c(0x173)](0x2);});}),describe(a0_0x59e042(0x134),()=>{test('Tool\x20cache\x20supports\x20TTL-based\x20caching',async()=>{const _0x43ec25=0x927c0;let _0x5d6057=null,_0x20b132=0x0;const _0x265ba8=[{'name':'read_file'}];_0x5d6057=_0x265ba8,_0x20b132=Date['now']();const _0x39d49e=Date['now'](),_0x2f6041=_0x39d49e-_0x20b132<_0x43ec25;expect(_0x2f6041)['toBe'](!![]),expect(_0x5d6057)['toBe'](_0x265ba8);}),test('Tool\x20cache\x20expires\x20after\x20TTL',async()=>{const _0x3d75dd=a0_0x46f3,_0x4c271f=0x64;let _0x16f11a=null,_0x52ac5e=0x0;const _0x332ecb=[{'name':'read_file'}];_0x16f11a=_0x332ecb,_0x52ac5e=Date['now'](),await new Promise(_0x21d777=>setTimeout(_0x21d777,0x96));const _0x40d02e=Date[_0x3d75dd(0x17c)](),_0x3298e8=_0x40d02e-_0x52ac5e<_0x4c271f;expect(_0x3298e8)[_0x3d75dd(0x173)](![]);});}),describe('Tools\x20Management\x20-\x20Tool\x20Filtering',()=>{const _0x2617af=a0_0x59e042;test(_0x2617af(0x146),async()=>{const _0x106891=_0x2617af,{TOOL_CATEGORY:_0x273973}=await import(_0x106891(0x154)),_0x5cbe8f=[{'name':'execute_command','category':_0x273973['SYSTEM'],'enabled':!![]},{'name':'terminal','category':_0x273973['SYSTEM'],'enabled':![]},{'name':'analyze_code','category':_0x273973['ANALYSIS'],'enabled':!![]}],_0x13f5cf=_0x39384c=>{const _0xb07fce=_0x106891;let _0x46da28=[..._0x5cbe8f];return _0x39384c['category']&&(_0x46da28=_0x46da28['filter'](_0x2978e1=>_0x2978e1['category']===_0x39384c['category'])),_0x39384c['enabled']!==undefined&&(_0x46da28=_0x46da28['filter'](_0x33b971=>_0x33b971['enabled']===_0x39384c[_0xb07fce(0x172)])),_0x46da28;},_0x181b7e=_0x13f5cf({'category':_0x273973[_0x106891(0x156)]});expect(_0x181b7e['length'])[_0x106891(0x173)](0x2);const _0x70f141=_0x13f5cf({'enabled':!![]});expect(_0x70f141[_0x106891(0x14e)])['toBe'](0x2);const _0x577e94=_0x13f5cf({'category':_0x273973[_0x106891(0x156)],'enabled':!![]});expect(_0x577e94['length'])['toBe'](0x1),expect(_0x577e94[0x0][_0x106891(0x169)])['toBe'](_0x106891(0x14c));});}),describe(a0_0x59e042(0x15f),()=>{const _0x35c58a=a0_0x59e042;test(_0x35c58a(0x148),async()=>{const _0x4dec74=_0x35c58a,{TOOL_CATEGORY:_0x1c6fd6}=await import('../../config/constants.js'),_0x1a1d86=[{'name':_0x4dec74(0x14c),'category':_0x1c6fd6['SYSTEM']},{'name':_0x4dec74(0x142),'category':_0x1c6fd6['SYSTEM']},{'name':_0x4dec74(0x13a),'category':_0x1c6fd6[_0x4dec74(0x151)]},{'name':'web_search','category':_0x1c6fd6[_0x4dec74(0x165)]}],_0x237a80=_0x482170=>{const _0x31ae98=_0x4dec74,_0x125827={};for(const _0x4e40d8 of Object[_0x31ae98(0x167)](_0x1c6fd6)){_0x125827[_0x4e40d8]=_0x482170['filter'](_0x462b53=>_0x462b53[_0x31ae98(0x166)]===_0x4e40d8)[_0x31ae98(0x14e)];}return _0x125827;},_0x40e68d=_0x237a80(_0x1a1d86);expect(_0x40e68d[_0x1c6fd6[_0x4dec74(0x156)]])['toBe'](0x2),expect(_0x40e68d[_0x1c6fd6[_0x4dec74(0x151)]])['toBe'](0x1),expect(_0x40e68d[_0x1c6fd6['UTILITY']])[_0x4dec74(0x173)](0x1),expect(_0x40e68d[_0x1c6fd6[_0x4dec74(0x14a)]])['toBe'](0x0);});});function a0_0x2e45(){const _0xbec6f7=['ve9ptfm','yw5HBhL6zv9JB2rL','Dg9nyxrJAa','D2vIx3nLyxjJAa','ve9ptf9dqvrfr09swsbJB25ZDgfUDhmGyxjLigrLzMLUzwq','vg9VBhmGtwfUywDLBwvUDcaTiev4zwn1DgLVBIbtDgf0zsbuCMfJA2LUzW','C2v0','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','mJryCejIsM4','DgvYBwLUywW','l2fWAs9VCMnOzxn0CMf0B3i','BwfW','l2fWAs90B29SCW','vg9VBhmGy2fUigjLigzPBhrLCMvKigj5ig11BhrPCgXLignYAxrLCMLH','AgfZ','q2f0zwDVCNKGy291BNrZignHBIbIzsbJywXJDwXHDgvK','zMLSzq','qvvut01bveLptG','zNvUy3rPB24','zxHLy3v0zv9JB21Tyw5K','lI4VlI4VyxbPl3nLC3nPB24UANm','BgvUz3rO','ve9ptf9dqvrfr09swsbPBMnSDwrLCYbHBgWGBwfQB3iGy2f0zwDVCMLLCW','nJGZnZu0uwXNwNLN','qu5btfLtsvm','twvZC2fNzvjVDxrLCIbOyxmGDg9VBcbLDMvUDcbOyw5KBgvYCYbYzwDPC3rLCMvK','zxHLyY0X','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','t1jdsevtvfjbve9s','u1Ltvevn','DxnLvg9VBhm','Dg9mB3DLCKnHC2u','D3jPDgvFzMLSzq','vg9VBcbVCgvYyxrPB25ZihvZzsbVCMnOzxn0CMf0B3iGzw5KCg9PBNq','vg9VBcbYzxn1BhrZignHBIbIzsbZDg9YzwqGyNKGzxHLy3v0Aw9UieLe','zgvMyxvSDa','zMLSzsbJB250zw50CW','mZu3ntCYn0rQwvD4CW','vg9VBhmGtwfUywDLBwvUDcaTienHDgvNB3j5ienVDw50CW','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGq2f0zwDVCML6yxrPB24','C3vJy2vZCW','z2v0','vg9VBhmGtwfUywDLBwvUDcaTienVBNn0yw50CYbwywXPzgf0Aw9U','Bg9JywXOB3n0','vvrjteLuwq','y2f0zwDVCNK','DMfSDwvZ','mteZndGXoeXJtNbLuW','BMfTzq','ugvYzM9YBsbZDgf0AwmGy29KzsbHBMfSExnPCW','Dg9fCxvHBa','mZm0otC0EeDPwLnR','qvbjx0vorfbpsu5uuW','mZGYodG2meDIrwDSyW','A2v5CW','zgvSzxrL','zMLSDgvY','zw5HyMXLza','Dg9czq','Dg9dB250ywLU','ndK3mZKYEhnxEfDq','CMvHzf9MAwXL','ywrK','t3jJAgvZDhjHDg9YigvUzhbVAw50igLZihvZzwqGzM9YihrVB2WGB3bLCMf0Aw9UCW','vg9VBhmGtwfUywDLBwvUDcaTienVBNn0yw50CW','mtK4mJiZnM5Uue9iEG','Aw5JBhvKzxm','BM93','rxHLy3v0Aw9Uihn0yxrLignHBIb0CMfJAYbTDwX0AxbSzsb0B29SCW','murmuwnvAW','vg9VBhmGtwfUywDLBwvUDcaTieLTCg9YDhm','zgf0yq','lI4VlI4VC3rHDguVDxnLvg9VBhmUANm','v3jPDguGzgf0ysb0BYbHigzPBgu','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGq2fJAgLUzW','ve9ptf9dqvrfr09swq','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','C2L6zq','Dg9czurLzMLUzwq'];a0_0x2e45=function(){return _0xbec6f7;};return a0_0x2e45();}
1
+ const a0_0x3203ea=a0_0x30c0;(function(_0x40d6ee,_0x3320e0){const _0x4d1942=a0_0x30c0,_0x3e6acf=_0x40d6ee();while(!![]){try{const _0x513642=parseInt(_0x4d1942(0x92))/0x1*(parseInt(_0x4d1942(0x8a))/0x2)+parseInt(_0x4d1942(0xa6))/0x3+-parseInt(_0x4d1942(0x88))/0x4*(-parseInt(_0x4d1942(0x79))/0x5)+parseInt(_0x4d1942(0xbf))/0x6+parseInt(_0x4d1942(0x9e))/0x7+parseInt(_0x4d1942(0xb6))/0x8*(parseInt(_0x4d1942(0xad))/0x9)+-parseInt(_0x4d1942(0xac))/0xa;if(_0x513642===_0x3320e0)break;else _0x3e6acf['push'](_0x3e6acf['shift']());}catch(_0x12d74b){_0x3e6acf['push'](_0x3e6acf['shift']());}}}(a0_0x3ade,0x9c6a1));import{describe,test,expect}from'@jest/globals';function a0_0x30c0(_0x1b3de,_0x182470){_0x1b3de=_0x1b3de-0x76;const _0x3ade75=a0_0x3ade();let _0x30c0c4=_0x3ade75[_0x1b3de];if(a0_0x30c0['CkZVKq']===undefined){var _0x57ae2f=function(_0x15b726){const _0x472275='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2be362='',_0x522994='';for(let _0x1735e8=0x0,_0x403114,_0x19c79e,_0x2526b2=0x0;_0x19c79e=_0x15b726['charAt'](_0x2526b2++);~_0x19c79e&&(_0x403114=_0x1735e8%0x4?_0x403114*0x40+_0x19c79e:_0x19c79e,_0x1735e8++%0x4)?_0x2be362+=String['fromCharCode'](0xff&_0x403114>>(-0x2*_0x1735e8&0x6)):0x0){_0x19c79e=_0x472275['indexOf'](_0x19c79e);}for(let _0x17f8dc=0x0,_0x2a43b0=_0x2be362['length'];_0x17f8dc<_0x2a43b0;_0x17f8dc++){_0x522994+='%'+('00'+_0x2be362['charCodeAt'](_0x17f8dc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x522994);};a0_0x30c0['WNjrcY']=_0x57ae2f,a0_0x30c0['MLwXNr']={},a0_0x30c0['CkZVKq']=!![];}const _0x5197a7=_0x3ade75[0x0],_0x22387f=_0x1b3de+_0x5197a7,_0x3eb616=a0_0x30c0['MLwXNr'][_0x22387f];return!_0x3eb616?(_0x30c0c4=a0_0x30c0['WNjrcY'](_0x30c0c4),a0_0x30c0['MLwXNr'][_0x22387f]=_0x30c0c4):_0x30c0c4=_0x3eb616,_0x30c0c4;}function a0_0x3ade(){const _0xb2ce28=['qu5btfLtsvm','zxHLy3v0zv9JB21Tyw5K','C2L6zq','mtaWuuvwquPV','vg9VBcbVCgvYyxrPB25ZihvZzsbVCMnOzxn0CMf0B3iGzw5KCg9PBNq','vg9VBhmGtwfUywDLBwvUDcaTienHDgvNB3j5ienVDw50CW','vg9VBhmGtwfUywDLBwvUDcaTienVBNn0yw50CW','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','Dg9czurLzMLUzwq','AgfZsgfUzgXLCG','vg9VBcbZzwfYy2GGC2HVDwXKihDVCMSGD2L0AcbUyw1LigfUzcbKzxnJCMLWDgLVBG','zNvUy3rPB24','ve9ptf9dqvrfr09swsbJyw4GyMuGDxnLzcb0BYbMAwX0zxiGDg9VBhmGyNKGy2f0zwDVCNK','zgvMyxvSDa','vg9VBhmGtwfUywDLBwvUDcaTieLTCg9YDhm','mJy3mJC4mNzAzKnMua','lI4VlI4VyxbPl3nLC3nPB24UANm','zMLSDgvY','CMvHzf9MAwXL','vg9VBhmGtwfUywDLBwvUDcaTiev4zwn1DgLVBIbtDgf0zsbuCMfJA2LUzW','Dg9mB3DLCKnHC2u','ywrK','AxnZDwvZ','mJGWmtiYnMD5wvLZyW','zgf0yq','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGq2fJAgLUzW','ve9ptf9dqvrfr09swsb2ywX1zxmGyxjLigXVD2vYy2fZzq','vg9VBhmGtwfUywDLBwvUDcaTieHVB2SGsw50zxjMywnLifzLCMLMAwnHDgLVBG','qvbjx0vorfbpsu5uuW','mZG2ndi0mtbsBfzNAvy','oty1mduYDwjTwuTh','u1Ltvevn','DxnLvg9VBhmGCMv0DxjUCYbLEhbLy3rLzcbPBNrLCMzHy2uGC2HHCgu','z2v0','ve9ptf9dqvrfr09swsbPBMnSDwrLCYbHBgWGBwfQB3iGy2f0zwDVCMLLCW','ugvYzM9YBsbZDgf0AwmGy29KzsbHBMfSExnPCW','v3jPDguGzgf0ysb0BYbHigzPBgu','l2fWAs9VCMnOzxn0CMf0B3i','zMLSzq','mZjNuML5ELK','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','zxHLyY0Y','AgfZ','lI4VlI4VC3rHDguVDxnLvg9VBhmUANm','v2vIu29JA2v0twfUywDLCG','vg9VBhmGtwfUywDLBwvUDcaTienVBNn0yw50CYbwywXPzgf0Aw9U','y2f0zwDVCNK','ywXS','nZeZmdGWmK5xCvD5uq','Dg9nyxrJAa','D2vIx3nLyxjJAa','DgvYBwLUywW','t1jdsevtvfjbve9s','BMfTzq','nxjgEwTIvG','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','BgvUz3rO','vvrjteLuwq','zxHLyY0X','qvvut01bveLptG','BM93','D3jPDgvFzMLSzq','zw5HyMXLza','vg9VBhmGtwfUywDLBwvUDcaTieLUDgvNCMf0Aw9U','vg9VBcbJywnOzsbLEhbPCMvZigfMDgvYifruta','t3jJAgvZDhjHDg9YigvUzhbVAw50igLZihvZzwqGzM9YihrVB2WGB3bLCMf0Aw9UCW','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGrMLSDgvYAw5N','vg9VBhmGtwfUywDLBwvUDcaTiefqssbfBMrWB2LUDhmGvMfSAwrHDgLVBG','DxnLvg9VBhmGAg9VAYbPBNrLz3jHDgvZihDPDgGGu2vZC2LVBIbHBMqGtwvZC2fNzvjVDxrLCG','mZeWotq2oezhtgnHsG','Dg9czq','mtu4otjMzw5Utwu','ywLFyxnZAxn0yw50','vg9VBcbJywnOzsbZDxbWB3j0CYbuveWTyMfZzwqGy2fJAgLUzW','Dg9dB250ywLU','yw5HBhL6zv9JB2rL'];a0_0x3ade=function(){return _0xb2ce28;};return a0_0x3ade();}describe(a0_0x3203ea(0x9d),()=>{test('useTools hook can be imported',async()=>{const _0x2d281f=a0_0x30c0,{useTools:_0x2be362}=await import('../../state/useTools.js');expect(_0x2be362)[_0x2d281f(0x97)](),expect(typeof _0x2be362)['toBe']('function');}),test('useTools is default export',async()=>{const _0x65c913=a0_0x30c0,module=await import(_0x65c913(0xba));expect(module[_0x65c913(0x9c)])['toBeDefined'](),expect(typeof module[_0x65c913(0x9c)])['toBe']('function'),expect(module[_0x65c913(0x9c)])['toBe'](module['useTools']);});}),describe(a0_0x3203ea(0x95),()=>{const _0x1f6ae5=a0_0x3203ea;test('TOOL_CATEGORY\x20constants\x20are\x20defined',async()=>{const _0x417630=a0_0x30c0,{TOOL_CATEGORY:_0x522994}=await import('../../config/constants.js');expect(_0x522994)[_0x417630(0x97)](),expect(_0x522994['SYSTEM'])[_0x417630(0x97)](),expect(_0x522994[_0x417630(0x7e)])['toBeDefined'](),expect(_0x522994['ANALYSIS'])['toBeDefined'](),expect(_0x522994['UTILITY'])[_0x417630(0x97)](),expect(_0x522994['COLLABORATION'])[_0x417630(0x97)](),expect(_0x522994['AI'])['toBeDefined']();}),test(_0x1f6ae5(0xa9),async()=>{const _0x584e61=_0x1f6ae5,{TOOL_CATEGORY:_0x1735e8}=await import(_0x584e61(0x96));expect(_0x1735e8['SYSTEM'])[_0x584e61(0x89)](_0x1735e8[_0x584e61(0xae)][_0x584e61(0xa3)]()),expect(_0x1735e8['AUTOMATION'])[_0x584e61(0x89)](_0x1735e8[_0x584e61(0x7e)]['toLowerCase']()),expect(_0x1735e8[_0x584e61(0x8f)])['toBe'](_0x1735e8[_0x584e61(0x8f)]['toLowerCase']()),expect(_0x1735e8['UTILITY'])['toBe'](_0x1735e8['UTILITY']['toLowerCase']());}),test('Tools\x20API\x20endpoint\x20is\x20defined',async()=>{const _0x80d6cc=_0x1f6ae5,{API_ENDPOINTS:_0x403114}=await import(_0x80d6cc(0x96));expect(_0x403114['TOOLS'])[_0x80d6cc(0x97)](),expect(_0x403114['TOOLS'])[_0x80d6cc(0x89)]('/api/tools');}),test(_0x1f6ae5(0x84),async()=>{const _0x269dc5=_0x1f6ae5,{API_ENDPOINTS:_0x19c79e}=await import(_0x269dc5(0x96));expect(_0x19c79e[_0x269dc5(0x77)])[_0x269dc5(0x97)](),expect(_0x19c79e[_0x269dc5(0x77)])[_0x269dc5(0x89)]('/api/orchestrator');});}),describe(a0_0x3203ea(0x82),()=>{const _0x2903c8=a0_0x3203ea;test(_0x2903c8(0x87),async()=>{const _0x3a0a61=_0x2903c8,{useTools:_0x2526b2}=await import(_0x3a0a61(0xba)),{SessionManager:_0x17f8dc}=await import('../../api/session.js'),{MessageRouter:_0x2a43b0}=await import(_0x3a0a61(0xb7)),{WebSocketManager:_0x206470}=await import(_0x3a0a61(0x7a)),_0x5a1e8b=new _0x17f8dc('localhost',0x1f90),_0x7cbeab=new _0x206470('localhost',0x1f90),_0x270b3b=new _0x2a43b0(_0x7cbeab);expect(_0x5a1e8b)['toBeDefined'](),expect(_0x270b3b)['toBeDefined'](),expect(typeof _0x2526b2)['toBe']('function');}),test('Full tools management stack can be imported together',async()=>{const _0x5d81da=_0x2903c8,[_0x2f49c2,_0x2d52c0,_0x5ad407,_0x588713,_0x2e2fa0]=await Promise[_0x5d81da(0xbe)]([import('../../config/constants.js'),import(_0x5d81da(0x9f)),import('../../api/websocket.js'),import(_0x5d81da(0xb7)),import('../../state/useTools.js')]);expect(_0x2f49c2['TOOL_CATEGORY'])['toBeDefined'](),expect(_0x2f49c2[_0x5d81da(0xab)])['toBeDefined'](),expect(_0x2d52c0['SessionManager'])[_0x5d81da(0x97)](),expect(_0x5ad407[_0x5d81da(0xbb)])['toBeDefined'](),expect(_0x588713['MessageRouter'])[_0x5d81da(0x97)](),expect(_0x2e2fa0['useTools'])['toBeDefined']();});}),describe(a0_0x3203ea(0x86),()=>{const _0x1a7056=a0_0x3203ea;test('Tools\x20endpoint\x20follows\x20RESTful\x20pattern',async()=>{const _0x9827ad=a0_0x30c0,{API_ENDPOINTS:_0x22be17}=await import(_0x9827ad(0x96));expect(_0x22be17['TOOLS'])['toMatch'](/^\/api\//),expect(_0x22be17['TOOLS'])[_0x9827ad(0x89)]('/api/tools');}),test(_0x1a7056(0x93),async()=>{const _0x3e7c9a=_0x1a7056,{API_ENDPOINTS:_0x126764}=await import('../../config/constants.js');expect(_0x126764['ORCHESTRATOR'])['toBeDefined'](),expect(_0x126764[_0x3e7c9a(0x77)])['toBe'](_0x3e7c9a(0xb4));});}),describe(a0_0x3203ea(0xaa),()=>{const _0x3333a7=a0_0x3203ea;test(_0x3333a7(0xaf),async()=>{const _0x2cc9a5=_0x3333a7,{useTools:_0x2c0b6d}=await import('../../state/useTools.js');expect(_0x2c0b6d[_0x2cc9a5(0x7b)])[_0x2cc9a5(0x89)](0x3);});}),describe(a0_0x3203ea(0xbc),()=>{const _0x3334da=a0_0x3203ea;test(_0x3334da(0xb1),async()=>{const _0x5627a9=_0x3334da,{TOOL_CATEGORY:_0x58fc1b}=await import('../../config/constants.js'),_0x52fab5=Object['keys'](_0x58fc1b);expect(_0x52fab5)['toContain']('SYSTEM'),expect(_0x52fab5)[_0x5627a9(0x8d)]('AUTOMATION'),expect(_0x52fab5)[_0x5627a9(0x8d)]('ANALYSIS'),expect(_0x52fab5)['toContain']('UTILITY'),expect(_0x52fab5)[_0x5627a9(0x8d)]('COLLABORATION'),expect(_0x52fab5)[_0x5627a9(0x8d)]('AI');}),test('TOOL_CATEGORY\x20values\x20match\x20expected\x20format',async()=>{const _0x4c3a57=_0x3334da,{TOOL_CATEGORY:_0x1ee68e}=await import(_0x4c3a57(0x96));expect(_0x1ee68e[_0x4c3a57(0xae)])['toMatch'](/^[a-z_]+$/),expect(_0x1ee68e[_0x4c3a57(0x7e)])[_0x4c3a57(0xc0)](/^[a-z_]+$/),expect(_0x1ee68e[_0x4c3a57(0x8f)])['toMatch'](/^[a-z_]+$/),expect(_0x1ee68e[_0x4c3a57(0x7c)])[_0x4c3a57(0xc0)](/^[a-z_]+$/);});}),describe('Tools\x20Management\x20-\x20WebSocket\x20Event\x20Handlers',()=>{test('MessageRouter\x20has\x20tool\x20event\x20handlers\x20registered',async()=>{const _0xce6f49=a0_0x30c0,{MessageRouter:_0x4ac657}=await import(_0xce6f49(0xb7)),{WebSocketManager:_0x3c30ae}=await import(_0xce6f49(0x7a)),_0x2848d0=new _0x3c30ae('localhost',0x1f90),_0x15c1a1=new _0x4ac657(_0x2848d0);expect(_0x15c1a1['hasHandler'])['toBeDefined'](),expect(typeof _0x15c1a1[_0xce6f49(0x98)])['toBe'](_0xce6f49(0x9a));});}),describe('Tools\x20Management\x20-\x20Tool\x20Categorization',()=>{const _0x40f07a=a0_0x3203ea;test(_0x40f07a(0x9b),async()=>{const _0x478d92=_0x40f07a,{TOOL_CATEGORY:_0x275607}=await import(_0x478d92(0x96)),_0x4fede3=[{'name':'execute_command','category':_0x275607[_0x478d92(0xae)]},{'name':'terminal','category':_0x275607['SYSTEM']},{'name':'analyze_code','category':_0x275607['ANALYSIS']},{'name':'web_search','category':_0x275607['UTILITY']},{'name':_0x478d92(0x8b),'category':_0x275607['AI']}],_0x5050cd=_0x4fede3['filter'](_0x3f70bf=>_0x3f70bf[_0x478d92(0xbd)]===_0x275607['SYSTEM']),_0x6675c1=_0x4fede3['filter'](_0x4d241e=>_0x4d241e['category']===_0x275607['ANALYSIS']),_0x366103=_0x4fede3[_0x478d92(0xa0)](_0x2132dd=>_0x2132dd['category']===_0x275607['UTILITY']),_0xf37abd=_0x4fede3[_0x478d92(0xa0)](_0x1dbebd=>_0x1dbebd[_0x478d92(0xbd)]===_0x275607['AI']);expect(_0x5050cd[_0x478d92(0x7b)])['toBe'](0x2),expect(_0x6675c1[_0x478d92(0x7b)])[_0x478d92(0x89)](0x1),expect(_0x366103[_0x478d92(0x7b)])[_0x478d92(0x89)](0x1),expect(_0xf37abd[_0x478d92(0x7b)])[_0x478d92(0x89)](0x1),expect(_0x5050cd[0x0]['name'])[_0x478d92(0x89)]('execute_command'),expect(_0x6675c1[0x0][_0x478d92(0x78)])[_0x478d92(0x89)]('analyze_code');});}),describe('Tools\x20Management\x20-\x20Tool\x20Search',()=>{const _0x13305f=a0_0x3203ea;test(_0x13305f(0x99),async()=>{const _0x2bc563=_0x13305f,_0x307d31=[{'name':'read_file','description':'Read\x20contents\x20of\x20a\x20file'},{'name':'write_file','description':_0x2bc563(0xb3)},{'name':'analyze_code','description':_0x2bc563(0xb2)}],_0x5da390=_0x3486de=>{const _0x3734a2=_0x2bc563,_0x3010d7=_0x3486de['toLowerCase']();return _0x307d31[_0x3734a2(0xa0)](_0x347c90=>_0x347c90[_0x3734a2(0x78)]?.['toLowerCase']()['includes'](_0x3010d7)||_0x347c90['description']?.[_0x3734a2(0xa3)]()['includes'](_0x3010d7));},_0xe36539=_0x5da390(_0x2bc563(0xb5));expect(_0xe36539['length'])[_0x2bc563(0x89)](0x2),expect(_0xe36539['map'](_0x7dd4d3=>_0x7dd4d3[_0x2bc563(0x78)]))[_0x2bc563(0x8d)](_0x2bc563(0xa1)),expect(_0xe36539['map'](_0xa1ca70=>_0xa1ca70[_0x2bc563(0x78)]))[_0x2bc563(0x8d)](_0x2bc563(0x80));const _0x553f13=_0x5da390('analyze');expect(_0x553f13['length'])[_0x2bc563(0x89)](0x1),expect(_0x553f13[0x0][_0x2bc563(0x78)])[_0x2bc563(0x89)]('analyze_code');});}),describe(a0_0x3203ea(0xa2),()=>{test('Execution\x20state\x20can\x20track\x20multiple\x20tools',async()=>{const _0x37e9d=a0_0x30c0,_0x2d93ce=new Set();_0x2d93ce[_0x37e9d(0xa4)](_0x37e9d(0xa1)),_0x2d93ce[_0x37e9d(0xa4)](_0x37e9d(0x8e)),expect(_0x2d93ce['has']('read_file'))[_0x37e9d(0x89)](!![]),expect(_0x2d93ce['has'](_0x37e9d(0x8e)))['toBe'](!![]),expect(_0x2d93ce[_0x37e9d(0x91)])[_0x37e9d(0x89)](0x2),_0x2d93ce['delete']('read_file'),expect(_0x2d93ce['has'](_0x37e9d(0xa1)))['toBe'](![]),expect(_0x2d93ce[_0x37e9d(0xb9)]('analyze_code'))[_0x37e9d(0x89)](!![]),expect(_0x2d93ce[_0x37e9d(0x91)])['toBe'](0x1);}),test('Tool\x20results\x20can\x20be\x20stored\x20by\x20execution\x20ID',async()=>{const _0x250623=a0_0x30c0,_0x2cb466=new Map();_0x2cb466['set'](_0x250623(0x7d),{'success':!![],'data':'file\x20contents'}),_0x2cb466['set'](_0x250623(0xb8),{'success':!![],'data':{'issues':[]}}),expect(_0x2cb466['get']('exec-1'))['toBeDefined'](),expect(_0x2cb466['get'](_0x250623(0x7d))['success'])[_0x250623(0x89)](!![]),expect(_0x2cb466['get'](_0x250623(0x7d))['data'])[_0x250623(0x89)]('file\x20contents'),expect(_0x2cb466[_0x250623(0xb0)](_0x250623(0xb8)))['toBeDefined'](),expect(_0x2cb466[_0x250623(0xb0)]('exec-2')[_0x250623(0xa7)][_0x250623(0xa5)])['toEqual']([]),expect(_0x2cb466['size'])[_0x250623(0x89)](0x2);});}),describe(a0_0x3203ea(0xa8),()=>{const _0x1e2cd2=a0_0x3203ea;test(_0x1e2cd2(0x8c),async()=>{const _0x38a175=_0x1e2cd2,_0x8c7ca4=0x927c0;let _0x42d5fe=null,_0x2180ae=0x0;const _0x528ae3=[{'name':_0x38a175(0xa1)}];_0x42d5fe=_0x528ae3,_0x2180ae=Date['now']();const _0x4b70a1=Date[_0x38a175(0x7f)](),_0x4838e2=_0x4b70a1-_0x2180ae<_0x8c7ca4;expect(_0x4838e2)[_0x38a175(0x89)](!![]),expect(_0x42d5fe)['toBe'](_0x528ae3);}),test(_0x1e2cd2(0x83),async()=>{const _0x11b343=_0x1e2cd2,_0x7b719b=0x64;let _0x52a2c2=null,_0x57815e=0x0;const _0x141bb5=[{'name':_0x11b343(0xa1)}];_0x52a2c2=_0x141bb5,_0x57815e=Date['now'](),await new Promise(_0x183ffa=>setTimeout(_0x183ffa,0x96));const _0x1fe89c=Date[_0x11b343(0x7f)](),_0x50267e=_0x1fe89c-_0x57815e<_0x7b719b;expect(_0x50267e)['toBe'](![]);});}),describe(a0_0x3203ea(0x85),()=>{test('Tools\x20can\x20be\x20filtered\x20by\x20multiple\x20criteria',async()=>{const _0x2c9dfa=a0_0x30c0,{TOOL_CATEGORY:_0x2f99ce}=await import('../../config/constants.js'),_0x26b34d=[{'name':'execute_command','category':_0x2f99ce[_0x2c9dfa(0xae)],'enabled':!![]},{'name':_0x2c9dfa(0x76),'category':_0x2f99ce['SYSTEM'],'enabled':![]},{'name':_0x2c9dfa(0x8e),'category':_0x2f99ce[_0x2c9dfa(0x8f)],'enabled':!![]}],_0x26ed1d=_0x583383=>{const _0x5bacc4=_0x2c9dfa;let _0x613e3c=[..._0x26b34d];return _0x583383[_0x5bacc4(0xbd)]&&(_0x613e3c=_0x613e3c['filter'](_0x531e2d=>_0x531e2d['category']===_0x583383['category'])),_0x583383[_0x5bacc4(0x81)]!==undefined&&(_0x613e3c=_0x613e3c[_0x5bacc4(0xa0)](_0x255924=>_0x255924['enabled']===_0x583383['enabled'])),_0x613e3c;},_0x2c7d55=_0x26ed1d({'category':_0x2f99ce['SYSTEM']});expect(_0x2c7d55['length'])['toBe'](0x2);const _0x408c3f=_0x26ed1d({'enabled':!![]});expect(_0x408c3f[_0x2c9dfa(0x7b)])[_0x2c9dfa(0x89)](0x2);const _0x21993a=_0x26ed1d({'category':_0x2f99ce['SYSTEM'],'enabled':!![]});expect(_0x21993a[_0x2c9dfa(0x7b)])[_0x2c9dfa(0x89)](0x1),expect(_0x21993a[0x0][_0x2c9dfa(0x78)])['toBe'](_0x2c9dfa(0x90));});}),describe(a0_0x3203ea(0x94),()=>{test('Category\x20counts\x20can\x20be\x20calculated',async()=>{const _0x602cdd=a0_0x30c0,{TOOL_CATEGORY:_0x54f18b}=await import(_0x602cdd(0x96)),_0xc27309=[{'name':_0x602cdd(0x90),'category':_0x54f18b[_0x602cdd(0xae)]},{'name':_0x602cdd(0x76),'category':_0x54f18b[_0x602cdd(0xae)]},{'name':'analyze_code','category':_0x54f18b['ANALYSIS']},{'name':_0x602cdd(0xc1),'category':_0x54f18b['UTILITY']}],_0xced8ac=_0x22f72c=>{const _0x3c4dd6=_0x602cdd,_0x13de19={};for(const _0x39b651 of Object['values'](_0x54f18b)){_0x13de19[_0x39b651]=_0x22f72c['filter'](_0x182968=>_0x182968['category']===_0x39b651)[_0x3c4dd6(0x7b)];}return _0x13de19;},_0x3aa390=_0xced8ac(_0xc27309);expect(_0x3aa390[_0x54f18b[_0x602cdd(0xae)]])['toBe'](0x2),expect(_0x3aa390[_0x54f18b['ANALYSIS']])['toBe'](0x1),expect(_0x3aa390[_0x54f18b['UTILITY']])['toBe'](0x1),expect(_0x3aa390[_0x54f18b[_0x602cdd(0x7e)]])[_0x602cdd(0x89)](0x0);});});
@@ -1 +1 @@
1
- const a0_0x2c849a=a0_0x1e94;(function(_0x242c88,_0x156610){const _0x49784e=a0_0x1e94,_0x48ef8b=_0x242c88();while(!![]){try{const _0x5e6384=parseInt(_0x49784e(0x1fd))/0x1+parseInt(_0x49784e(0x202))/0x2*(parseInt(_0x49784e(0x1fe))/0x3)+-parseInt(_0x49784e(0x1f6))/0x4*(parseInt(_0x49784e(0x1fa))/0x5)+parseInt(_0x49784e(0x1ff))/0x6*(parseInt(_0x49784e(0x1ee))/0x7)+parseInt(_0x49784e(0x1e8))/0x8+-parseInt(_0x49784e(0x1ea))/0x9*(-parseInt(_0x49784e(0x1f0))/0xa)+-parseInt(_0x49784e(0x1e1))/0xb;if(_0x5e6384===_0x156610)break;else _0x48ef8b['push'](_0x48ef8b['shift']());}catch(_0x341283){_0x48ef8b['push'](_0x48ef8b['shift']());}}}(a0_0x1228,0xc5e4c));import{ERROR_MESSAGE}from'../config/constants.js';export class ApiClient{constructor(_0x40d04f,_0x5bd6ff=null){const _0x55188a=a0_0x1e94;this[_0x55188a(0x1e6)]=_0x40d04f,this['apiKey']=_0x5bd6ff;}[a0_0x2c849a(0x1e9)](_0x309ee7){const _0x2aaff9=a0_0x2c849a;this[_0x2aaff9(0x1df)]=_0x309ee7;}[a0_0x2c849a(0x1f4)](){const _0x1a00c7=a0_0x2c849a;return this[_0x1a00c7(0x1df)];}['clearApiKey'](){const _0xd10244=a0_0x2c849a;this[_0xd10244(0x1df)]=null;}[a0_0x2c849a(0x1fb)](_0x46dbe5={}){const _0x180361=a0_0x2c849a,_0x568622={'Content-Type':_0x180361(0x201),..._0x46dbe5};return this[_0x180361(0x1df)]&&(_0x568622['Authorization']='Bearer\x20'+this[_0x180361(0x1df)]),_0x568622;}async[a0_0x2c849a(0x1e5)](_0x5cdefc,_0x22d4e7,_0x5505b3={}){const _0xa5c5ac=a0_0x2c849a,{body:body=null,headers:headers={},query:query=null}=_0x5505b3;let _0x10ade9=''+this[_0xa5c5ac(0x1e6)]+_0x22d4e7;if(query){const _0x1e7121=new URLSearchParams(query)['toString']();_0x10ade9+='?'+_0x1e7121;}const _0x50b230={'method':_0x5cdefc,'headers':this['buildHeaders'](headers)};body&&[_0xa5c5ac(0x1eb),'PUT','PATCH'][_0xa5c5ac(0x1de)](_0x5cdefc[_0xa5c5ac(0x1f2)]())&&(_0x50b230['body']=JSON[_0xa5c5ac(0x1e2)](body));try{const _0x2555b2=await fetch(_0x10ade9,_0x50b230),_0x443268=await _0x2555b2[_0xa5c5ac(0x1f5)]()[_0xa5c5ac(0x1dd)](()=>({}));if(!_0x2555b2['ok']){const _0x36ff3d=new Error(_0x443268[_0xa5c5ac(0x1ec)]||'HTTP\x20'+_0x2555b2[_0xa5c5ac(0x200)]+':\x20'+_0x2555b2[_0xa5c5ac(0x1f1)]);_0x36ff3d['status']=_0x2555b2[_0xa5c5ac(0x200)],_0x36ff3d['response']=_0x443268;throw _0x36ff3d;}return _0x443268;}catch(_0x158bae){if(_0x158bae['message']['includes'](_0xa5c5ac(0x1f7))||_0x158bae[_0xa5c5ac(0x1fc)]==='TypeError'){const _0x60dfec=new Error(ERROR_MESSAGE[_0xa5c5ac(0x1f8)]+':\x20'+_0x158bae[_0xa5c5ac(0x1e4)]);_0x60dfec[_0xa5c5ac(0x1ef)]=_0x158bae;throw _0x60dfec;}throw _0x158bae;}}async[a0_0x2c849a(0x1e3)](_0x39aa2f,_0x4cc89d={}){return this['request']('GET',_0x39aa2f,_0x4cc89d);}async[a0_0x2c849a(0x1e7)](_0xb83526,_0x3255ea=null,_0x53ce42={}){const _0x5d9911=a0_0x2c849a;return this[_0x5d9911(0x1e5)](_0x5d9911(0x1eb),_0xb83526,{..._0x53ce42,'body':_0x3255ea});}async[a0_0x2c849a(0x1e0)](_0x2ffa03,_0x3a8007=null,_0x2c9b32={}){return this['request']('PUT',_0x2ffa03,{..._0x2c9b32,'body':_0x3a8007});}async[a0_0x2c849a(0x1ed)](_0x344171,_0x49bef8=null,_0x2c1981={}){return this['request']('PATCH',_0x344171,{..._0x2c1981,'body':_0x49bef8});}async[a0_0x2c849a(0x1f9)](_0x2bf9a5,_0x3f1371={}){const _0x36f8e6=a0_0x2c849a;return this[_0x36f8e6(0x1e5)]('DELETE',_0x2bf9a5,_0x3f1371);}}export function createApiClient(_0x4789fc=a0_0x2c849a(0x1f3),_0xfe0ad1=0x1f90,_0x4a2405=null){const _0xb9fb19='http://'+_0x4789fc+':'+_0xfe0ad1;return new ApiClient(_0xb9fb19,_0x4a2405);}function a0_0x1e94(_0x3fae8c,_0x5768ea){_0x3fae8c=_0x3fae8c-0x1dd;const _0x122876=a0_0x1228();let _0x1e94af=_0x122876[_0x3fae8c];if(a0_0x1e94['wZMQhg']===undefined){var _0x38d210=function(_0x1057b5){const _0x1d81de='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x40d04f='',_0x5bd6ff='';for(let _0x309ee7=0x0,_0x46dbe5,_0x568622,_0x5cdefc=0x0;_0x568622=_0x1057b5['charAt'](_0x5cdefc++);~_0x568622&&(_0x46dbe5=_0x309ee7%0x4?_0x46dbe5*0x40+_0x568622:_0x568622,_0x309ee7++%0x4)?_0x40d04f+=String['fromCharCode'](0xff&_0x46dbe5>>(-0x2*_0x309ee7&0x6)):0x0){_0x568622=_0x1d81de['indexOf'](_0x568622);}for(let _0x22d4e7=0x0,_0x5505b3=_0x40d04f['length'];_0x22d4e7<_0x5505b3;_0x22d4e7++){_0x5bd6ff+='%'+('00'+_0x40d04f['charCodeAt'](_0x22d4e7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5bd6ff);};a0_0x1e94['CAxlmu']=_0x38d210,a0_0x1e94['sVLqaB']={},a0_0x1e94['wZMQhg']=!![];}const _0x294b55=_0x122876[0x0],_0x36e1ca=_0x3fae8c+_0x294b55,_0xb7a4b6=a0_0x1e94['sVLqaB'][_0x36e1ca];return!_0xb7a4b6?(_0x1e94af=a0_0x1e94['CAxlmu'](_0x1e94af),a0_0x1e94['sVLqaB'][_0x36e1ca]=_0x1e94af):_0x1e94af=_0xb7a4b6,_0x1e94af;}function a0_0x1228(){const _0x309f73=['ntC4ntKWmLfnDK1PBW','ue9tva','zxjYB3i','Cgf0y2G','mtrSzvzdz2C','B3jPz2LUywXfCNjVCG','mtbfCKLIuhm','C3rHDhvZvgv4Da','Dg9vChbLCKnHC2u','Bg9JywXOB3n0','z2v0qxbPs2v5','ANnVBG','nJa3mZy0AhjHu0H4','zMv0y2G','tKvuv09ss19fuLjpuG','zgvSzxrL','ndbQzxHRCvm','yNvPBgrizwfKzxjZ','BMfTzq','mtq2oty0og5qDKvhCG','mtiWou5lCMToBG','mZu4mZG0mKvlB1buAG','C3rHDhvZ','yxbWBgLJyxrPB24VANnVBG','odaXmePgDNjqEq','y2f0y2G','Aw5JBhvKzxm','yxbPs2v5','Chv0','ndeZodiZndfUu3DZBeq','C3rYAw5NAwz5','z2v0','BwvZC2fNzq','CMvXDwvZDa','yMfZzvvYBa','Cg9ZDa','nJKYotqWoejYBK5wCq','C2v0qxbPs2v5'];a0_0x1228=function(){return _0x309f73;};return a0_0x1228();}export default ApiClient;
1
+ const a0_0x54393a=a0_0x4bdb;function a0_0x1e52(){const _0x34d9bd=['qxv0Ag9YAxPHDgLVBG','uefuq0G','tKvuv09ss19fuLjpuG','mtm3odmZnuf0CgPLra','mtG0nJmYEgfjre5Q','nda1odu2mfHus0Plvq','r0vu','yNvPBgrizwfKzxjZ','mtjTrunWuNG','Cg9ZDa','ue9tva','C3rHDhvZvgv4Da','yM9KEq','ngvpr2vpDG','BMfTzq','mZyWmZa1tKD6vwjd','ovj6tfbMBG','mte4mJyXnK9zre9Rra','BwvZC2fNzq','B3jPz2LUywXfCNjVCG','yMfZzvvYBa','Aw5JBhvKzxm','CMvXDwvZDa','yxbPs2v5','odq2otnbyMTKC0m','y2f0y2G','C3rHDhvZ','Ahr0CdOVlW','Chv0','mtqWndiXnM9NywzMqW','Cgf0y2G','ANnVBG','sfruuca'];a0_0x1e52=function(){return _0x34d9bd;};return a0_0x1e52();}(function(_0x2a4235,_0x45cb77){const _0x51e6af=a0_0x4bdb,_0x240449=_0x2a4235();while(!![]){try{const _0x550b0b=-parseInt(_0x51e6af(0x1cd))/0x1+-parseInt(_0x51e6af(0x1d6))/0x2*(parseInt(_0x51e6af(0x1e1))/0x3)+-parseInt(_0x51e6af(0x1d1))/0x4*(parseInt(_0x51e6af(0x1d8))/0x5)+parseInt(_0x51e6af(0x1e6))/0x6+-parseInt(_0x51e6af(0x1cc))/0x7+parseInt(_0x51e6af(0x1da))/0x8*(parseInt(_0x51e6af(0x1d9))/0x9)+parseInt(_0x51e6af(0x1ce))/0xa;if(_0x550b0b===_0x45cb77)break;else _0x240449['push'](_0x240449['shift']());}catch(_0x152baa){_0x240449['push'](_0x240449['shift']());}}}(a0_0x1e52,0x209a1));import{ERROR_MESSAGE}from'../config/constants.js';function a0_0x4bdb(_0x1f21f5,_0x4bf2b3){_0x1f21f5=_0x1f21f5-0x1cb;const _0x1e5222=a0_0x1e52();let _0x4bdb67=_0x1e5222[_0x1f21f5];if(a0_0x4bdb['mFtBYK']===undefined){var _0x3e5ba0=function(_0x3ccab4){const _0x45a369='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x102fdb='',_0x53dee2='';for(let _0x22320c=0x0,_0x336154,_0x1bf736,_0x196fc8=0x0;_0x1bf736=_0x3ccab4['charAt'](_0x196fc8++);~_0x1bf736&&(_0x336154=_0x22320c%0x4?_0x336154*0x40+_0x1bf736:_0x1bf736,_0x22320c++%0x4)?_0x102fdb+=String['fromCharCode'](0xff&_0x336154>>(-0x2*_0x22320c&0x6)):0x0){_0x1bf736=_0x45a369['indexOf'](_0x1bf736);}for(let _0x468f2b=0x0,_0x459715=_0x102fdb['length'];_0x468f2b<_0x459715;_0x468f2b++){_0x53dee2+='%'+('00'+_0x102fdb['charCodeAt'](_0x468f2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x53dee2);};a0_0x4bdb['EMiEDn']=_0x3e5ba0,a0_0x4bdb['RMTkfq']={},a0_0x4bdb['mFtBYK']=!![];}const _0x4d4cdc=_0x1e5222[0x0],_0x3fd691=_0x1f21f5+_0x4d4cdc,_0x2a002e=a0_0x4bdb['RMTkfq'][_0x3fd691];return!_0x2a002e?(_0x4bdb67=a0_0x4bdb['EMiEDn'](_0x4bdb67),a0_0x4bdb['RMTkfq'][_0x3fd691]=_0x4bdb67):_0x4bdb67=_0x2a002e,_0x4bdb67;}export class ApiClient{constructor(_0x102fdb,_0x53dee2=null){const _0x59da8c=a0_0x4bdb;this['baseUrl']=_0x102fdb,this[_0x59da8c(0x1e0)]=_0x53dee2;}['setApiKey'](_0x22320c){this['apiKey']=_0x22320c;}['getApiKey'](){return this['apiKey'];}['clearApiKey'](){this['apiKey']=null;}[a0_0x54393a(0x1d0)](_0x336154={}){const _0xed24f4=a0_0x54393a,_0x1bf736={'Content-Type':'application/json',..._0x336154};return this[_0xed24f4(0x1e0)]&&(_0x1bf736[_0xed24f4(0x1ea)]='Bearer\x20'+this[_0xed24f4(0x1e0)]),_0x1bf736;}async[a0_0x54393a(0x1df)](_0x196fc8,_0x468f2b,_0x459715={}){const _0xdffeb=a0_0x54393a,{body:body=null,headers:headers={},query:query=null}=_0x459715;let _0x90c983=''+this[_0xdffeb(0x1dd)]+_0x468f2b;if(query){const _0x20fe98=new URLSearchParams(query)['toString']();_0x90c983+='?'+_0x20fe98;}const _0x31752a={'method':_0x196fc8,'headers':this[_0xdffeb(0x1d0)](headers)};body&&[_0xdffeb(0x1d3),'PUT',_0xdffeb(0x1eb)][_0xdffeb(0x1de)](_0x196fc8['toUpperCase']())&&(_0x31752a[_0xdffeb(0x1d5)]=JSON['stringify'](body));try{const _0x1feaaa=await fetch(_0x90c983,_0x31752a),_0x433808=await _0x1feaaa[_0xdffeb(0x1e8)]()[_0xdffeb(0x1e2)](()=>({}));if(!_0x1feaaa['ok']){const _0x447e93=new Error(_0x433808['error']||_0xdffeb(0x1e9)+_0x1feaaa[_0xdffeb(0x1e3)]+':\x20'+_0x1feaaa[_0xdffeb(0x1d4)]);_0x447e93['status']=_0x1feaaa['status'],_0x447e93['response']=_0x433808;throw _0x447e93;}return _0x433808;}catch(_0x2a7a18){if(_0x2a7a18['message']['includes']('fetch')||_0x2a7a18[_0xdffeb(0x1d7)]==='TypeError'){const _0x177687=new Error(ERROR_MESSAGE[_0xdffeb(0x1cb)]+':\x20'+_0x2a7a18[_0xdffeb(0x1db)]);_0x177687[_0xdffeb(0x1dc)]=_0x2a7a18;throw _0x177687;}throw _0x2a7a18;}}async['get'](_0x40cab4,_0x1c89ea={}){const _0x39a21e=a0_0x54393a;return this[_0x39a21e(0x1df)](_0x39a21e(0x1cf),_0x40cab4,_0x1c89ea);}async[a0_0x54393a(0x1d2)](_0x2e1235,_0x22ff95=null,_0x299086={}){const _0x55e142=a0_0x54393a;return this[_0x55e142(0x1df)]('POST',_0x2e1235,{..._0x299086,'body':_0x22ff95});}async[a0_0x54393a(0x1e5)](_0x5d2b6d,_0x478ddc=null,_0x3a2bc1={}){const _0x5a012d=a0_0x54393a;return this[_0x5a012d(0x1df)]('PUT',_0x5d2b6d,{..._0x3a2bc1,'body':_0x478ddc});}async[a0_0x54393a(0x1e7)](_0x3aef60,_0x1f7144=null,_0x135a08={}){return this['request']('PATCH',_0x3aef60,{..._0x135a08,'body':_0x1f7144});}async['delete'](_0x12ffed,_0x5ee426={}){return this['request']('DELETE',_0x12ffed,_0x5ee426);}}export function createApiClient(_0x46a16a='localhost',_0x35dc4f=0x1f90,_0x20093e=null){const _0x35d7ae=a0_0x54393a,_0x25f066=_0x35d7ae(0x1e4)+_0x46a16a+':'+_0x35dc4f;return new ApiClient(_0x25f066,_0x20093e);}export default ApiClient;
@@ -1 +1 @@
1
- const a0_0xd5b808=a0_0x28d1;(function(_0x13163e,_0x361f49){const _0x38196a=a0_0x28d1,_0x1b8c47=_0x13163e();while(!![]){try{const _0x334749=-parseInt(_0x38196a(0x204))/0x1+parseInt(_0x38196a(0x20f))/0x2*(parseInt(_0x38196a(0x1f4))/0x3)+parseInt(_0x38196a(0x1f5))/0x4+-parseInt(_0x38196a(0x1ef))/0x5+parseInt(_0x38196a(0x1e9))/0x6+-parseInt(_0x38196a(0x1f6))/0x7*(parseInt(_0x38196a(0x1f9))/0x8)+parseInt(_0x38196a(0x206))/0x9*(parseInt(_0x38196a(0x1fa))/0xa);if(_0x334749===_0x361f49)break;else _0x1b8c47['push'](_0x1b8c47['shift']());}catch(_0x3c5e00){_0x1b8c47['push'](_0x1b8c47['shift']());}}}(a0_0x6e63,0xab7de));import{EventEmitter}from'events';import{WS_MESSAGE_TYPE}from'../config/constants.js';function a0_0x28d1(_0x1d11d9,_0x22dacd){_0x1d11d9=_0x1d11d9-0x1e9;const _0x6e63ae=a0_0x6e63();let _0x28d102=_0x6e63ae[_0x1d11d9];if(a0_0x28d1['StofBV']===undefined){var _0x3ddc82=function(_0x554176){const _0x352b0d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4b7666='',_0x5b7128='';for(let _0x2c00a9=0x0,_0x552eea,_0x121b17,_0x194bd2=0x0;_0x121b17=_0x554176['charAt'](_0x194bd2++);~_0x121b17&&(_0x552eea=_0x2c00a9%0x4?_0x552eea*0x40+_0x121b17:_0x121b17,_0x2c00a9++%0x4)?_0x4b7666+=String['fromCharCode'](0xff&_0x552eea>>(-0x2*_0x2c00a9&0x6)):0x0){_0x121b17=_0x352b0d['indexOf'](_0x121b17);}for(let _0x3e79cc=0x0,_0x4eed00=_0x4b7666['length'];_0x3e79cc<_0x4eed00;_0x3e79cc++){_0x5b7128+='%'+('00'+_0x4b7666['charCodeAt'](_0x3e79cc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b7128);};a0_0x28d1['sEfURq']=_0x3ddc82,a0_0x28d1['SnThaN']={},a0_0x28d1['StofBV']=!![];}const _0x1a52fd=_0x6e63ae[0x0],_0x56ec0a=_0x1d11d9+_0x1a52fd,_0xf41f91=a0_0x28d1['SnThaN'][_0x56ec0a];return!_0xf41f91?(_0x28d102=a0_0x28d1['sEfURq'](_0x28d102),a0_0x28d1['SnThaN'][_0x56ec0a]=_0x28d102):_0x28d102=_0xf41f91,_0x28d102;}export class MessageRouter extends EventEmitter{constructor(_0x4b7666){super(),this['ws']=_0x4b7666,this['handlers']=new Map(),this['middleware']=[],this['ws']['on']('message',_0x5b7128=>this['route'](_0x5b7128)),this['registerDefaultHandlers']();}[a0_0xd5b808(0x20c)](){const _0x2edcea=a0_0xd5b808;this['registerHandler'](WS_MESSAGE_TYPE[_0x2edcea(0x1ee)],_0x2c00a9=>{const _0x138b9b=_0x2edcea;this[_0x138b9b(0x207)](_0x138b9b(0x1fb),_0x2c00a9['data']);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_MODE_CHANGED'],_0x552eea=>{this['emit']('agent:mode_changed',_0x552eea);}),this['registerHandler'](WS_MESSAGE_TYPE['EXECUTION_STOPPED'],_0x121b17=>{const _0x45e55f=_0x2edcea;this[_0x45e55f(0x207)]('agent:execution_stopped',_0x121b17[_0x45e55f(0x20b)]);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_ERROR'],_0x194bd2=>{const _0x4eab2c=_0x2edcea;this[_0x4eab2c(0x207)]('agent:error',_0x194bd2);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_WARNING'],_0x3e79cc=>{const _0x41d06b=_0x2edcea;this[_0x41d06b(0x207)](_0x41d06b(0x1f7),_0x3e79cc);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x2edcea(0x20d)],_0x4eed00=>{this['emit']('agent:imported',_0x4eed00['agent']);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_COMMUNICATION'],_0x1716aa=>{this['emit']('agent:communication',_0x1716aa['data']);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x2edcea(0x208)],_0x2e57fd=>{const _0x429fb4=_0x2edcea;this[_0x429fb4(0x207)](_0x429fb4(0x1ec),_0x2e57fd[_0x429fb4(0x20b)]);}),this['registerHandler'](WS_MESSAGE_TYPE['IMAGE_RESULT'],_0x246281=>{const _0x575d5d=_0x2edcea;this[_0x575d5d(0x207)](_0x575d5d(0x1f2),_0x246281['data']);}),this['registerHandler'](WS_MESSAGE_TYPE['IMAGE_GENERATED'],_0x2b4437=>{const _0x3011aa=_0x2edcea;this[_0x3011aa(0x207)](_0x3011aa(0x209),_0x2b4437['data']);}),this['registerHandler'](WS_MESSAGE_TYPE['ERROR'],_0x5f105f=>{this['emit']('error',_0x5f105f);});}async['route'](_0x29f0fc){const _0x2479b4=a0_0xd5b808;let processedMessage=_0x29f0fc;for(const _0x53ec01 of this['middleware']){try{processedMessage=await _0x53ec01(processedMessage);if(!processedMessage)return;}catch(_0x58e4f3){this['emit']('middleware_error',{'error':_0x58e4f3,'message':_0x29f0fc});return;}}const _0xd05815=processedMessage['type'];if(!_0xd05815){this[_0x2479b4(0x207)]('invalid_message',processedMessage);return;}if(this[_0x2479b4(0x1ed)][_0x2479b4(0x200)](_0xd05815)){const _0x3b044e=this['handlers'][_0x2479b4(0x203)](_0xd05815);try{await _0x3b044e(processedMessage);}catch(_0x4b4220){this[_0x2479b4(0x207)]('handler_error',{'error':_0x4b4220,'message':processedMessage,'messageType':_0xd05815});}}this['emit']('message:'+_0xd05815,processedMessage),this['emit'](_0x2479b4(0x1fe),processedMessage);}[a0_0xd5b808(0x20a)](_0x2e260f,_0x50534a){const _0xfb4ad1=a0_0xd5b808;if(typeof _0x50534a!=='function')throw new Error(_0xfb4ad1(0x1ff));this[_0xfb4ad1(0x1ed)]['set'](_0x2e260f,_0x50534a);}['unregisterHandler'](_0x8a5e9b){this['handlers']['delete'](_0x8a5e9b);}[a0_0xd5b808(0x201)](_0x268ce0){const _0x6fc7b0=a0_0xd5b808;if(typeof _0x268ce0!=='function')throw new Error('Middleware\x20must\x20be\x20a\x20function');this[_0x6fc7b0(0x205)]['push'](_0x268ce0);}[a0_0xd5b808(0x1eb)](_0x1b5ba1){const _0x22f3fb=a0_0xd5b808,_0x2c86c9=this['middleware'][_0x22f3fb(0x202)](_0x1b5ba1);_0x2c86c9>-0x1&&this[_0x22f3fb(0x205)][_0x22f3fb(0x1fc)](_0x2c86c9,0x1);}[a0_0xd5b808(0x211)](){this['middleware']=[];}[a0_0xd5b808(0x1f0)](){const _0x167d6e=a0_0xd5b808;return Array[_0x167d6e(0x1f8)](this[_0x167d6e(0x1ed)]['keys']());}['hasHandler'](_0x5356dc){const _0xa50ff9=a0_0xd5b808;return this[_0xa50ff9(0x1ed)]['has'](_0x5356dc);}['clearHandlers'](){this['handlers']['clear']();}[a0_0xd5b808(0x1f3)](){this['clearHandlers'](),this['clearMiddleware'](),this['registerDefaultHandlers']();}}export function loggingMiddleware(_0x3a8015=console[a0_0xd5b808(0x1ea)]){return _0x3239c2=>{return _0x3a8015('[MessageRouter]',_0x3239c2['type'],_0x3239c2),_0x3239c2;};}function a0_0x6e63(){const _0x29892a=['q09nuefdveLptL9fvKvova','Aw1Hz2u6z2vUzxjHDgvK','CMvNAxn0zxjiyw5KBgvY','zgf0yq','CMvNAxn0zxjezwzHDwX0sgfUzgXLCNm','quDftLrFsu1qt1juruq','twvZC2fNzsb2ywXPzgf0Aw9UigzHAwXLza','mKTjCe9Mvq','Dg9ju09tDhjPBMC','y2XLyxjnAwrKBgv3yxjL','nZGXnJGWnNjoy3viuG','Bg9N','CMvTB3zLtwLKzgXLD2fYzq','y29UDMvYC2f0Aw9UoMnVBxbHy3rPB24','AgfUzgXLCNm','tuvtu0fhrv9brerfra','nta3mtq0mgTWv214AG','z2v0uMvNAxn0zxjLzfr5CgvZ','Aw5JBhvKzxm','Aw1Hz2u6CMvZDwX0','CMvZzxq','mte2mdC2m1Lds1jtra','nduWmJaYmhnjBxDpAW','mZvKA1bjrei','ywDLBNq6D2fYBMLUzW','zNjVBq','mtC4mJi1nK5pBxzuEG','nJqYodK4mg9fuezjra','ywDLBNq6BwvZC2fNzv9HzgrLza','C3bSAwnL','DhLWzq','BwvZC2fNzq','sgfUzgXLCIbTDxn0igjLigeGzNvUy3rPB24','AgfZ','DxnL','Aw5KzxHpzG','z2v0','mti3mdm5nvbZuKzvCq','BwLKzgXLD2fYzq','mtH4z0ndsMG','zw1PDa'];a0_0x6e63=function(){return _0x29892a;};return a0_0x6e63();}export function filterMiddleware(_0x339a2a){return _0x5b0c3e=>{const _0x5b031f=a0_0x28d1;if(_0x339a2a[_0x5b031f(0x1f1)](_0x5b0c3e[_0x5b031f(0x1fd)]))return _0x5b0c3e;return null;};}export function transformMiddleware(_0x1614ad){return async _0xdafa3b=>{return await _0x1614ad(_0xdafa3b);};}export function timestampMiddleware(){return _0x48f4e8=>{const _0x5878d9=a0_0x28d1;return{..._0x48f4e8,'receivedAt':new Date()[_0x5878d9(0x210)]()};};}export function validationMiddleware(_0xec8d6){return _0x47a108=>{const _0x1fb150=a0_0x28d1;if(_0xec8d6(_0x47a108))return _0x47a108;throw new Error(_0x1fb150(0x20e));};}export default MessageRouter;
1
+ const a0_0x3d6448=a0_0x178e;function a0_0x178e(_0x5dbe4e,_0x46b70f){_0x5dbe4e=_0x5dbe4e-0xe3;const _0x52bdd7=a0_0x52bd();let _0x178efc=_0x52bdd7[_0x5dbe4e];if(a0_0x178e['yUyVHs']===undefined){var _0x1ded3b=function(_0x4f9570){const _0x234caa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b6317='',_0x436497='';for(let _0x47d38a=0x0,_0x20921c,_0x3405bb,_0x28fff2=0x0;_0x3405bb=_0x4f9570['charAt'](_0x28fff2++);~_0x3405bb&&(_0x20921c=_0x47d38a%0x4?_0x20921c*0x40+_0x3405bb:_0x3405bb,_0x47d38a++%0x4)?_0x3b6317+=String['fromCharCode'](0xff&_0x20921c>>(-0x2*_0x47d38a&0x6)):0x0){_0x3405bb=_0x234caa['indexOf'](_0x3405bb);}for(let _0x31fc32=0x0,_0x5ef1f2=_0x3b6317['length'];_0x31fc32<_0x5ef1f2;_0x31fc32++){_0x436497+='%'+('00'+_0x3b6317['charCodeAt'](_0x31fc32)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x436497);};a0_0x178e['PMVByS']=_0x1ded3b,a0_0x178e['gYGMXJ']={},a0_0x178e['yUyVHs']=!![];}const _0x3b6da8=_0x52bdd7[0x0],_0x39ad30=_0x5dbe4e+_0x3b6da8,_0x41f43e=a0_0x178e['gYGMXJ'][_0x39ad30];return!_0x41f43e?(_0x178efc=a0_0x178e['PMVByS'](_0x178efc),a0_0x178e['gYGMXJ'][_0x39ad30]=_0x178efc):_0x178efc=_0x41f43e,_0x178efc;}(function(_0x4640a3,_0x5c8ff4){const _0x49a54f=a0_0x178e,_0x595a71=_0x4640a3();while(!![]){try{const _0x101003=-parseInt(_0x49a54f(0x10d))/0x1+parseInt(_0x49a54f(0xff))/0x2+-parseInt(_0x49a54f(0xe9))/0x3+-parseInt(_0x49a54f(0x104))/0x4+-parseInt(_0x49a54f(0xf3))/0x5+parseInt(_0x49a54f(0xf5))/0x6*(-parseInt(_0x49a54f(0x101))/0x7)+parseInt(_0x49a54f(0xf4))/0x8*(parseInt(_0x49a54f(0xfb))/0x9);if(_0x101003===_0x5c8ff4)break;else _0x595a71['push'](_0x595a71['shift']());}catch(_0x244b67){_0x595a71['push'](_0x595a71['shift']());}}}(a0_0x52bd,0x8e720));import{EventEmitter}from'events';function a0_0x52bd(){const _0x1e0418=['n0Xcyvjutq','y2XLyxjnAwrKBgv3yxjL','DxnL','mZK2otyXnNLYAxfSDW','q09nuefdveLptL9fvKvova','rvHfq1vusu9ox1nut1bqruq','CMvNAxn0zxjiyw5KBgvY','Aw1Hz2u6z2vUzxjHDgvK','ywDLBNq','zgf0yq','zw1PDa','Aw52ywXPzf9TzxnZywDL','mty2ndiXEu5SAufA','zNvUy3rPB24','twLKzgXLD2fYzsbTDxn0igjLigeGzNvUy3rPB24','BwvZC2fNztO','Dg9ju09tDhjPBMC','z2v0','zgvSzxrL','BwvZC2fNzq','AgfZ','y29UDMvYC2f0Aw9UoMnVBxbHy3rPB24','C3bSAwnL','mtqXnJK0oeXYruvQBW','CMvTB3zLtwLKzgXLD2fYzq','zNjVBq','BwLKzgXLD2fYzq','su1br0vFr0vorvjbveve','su1br0vFuKvtvuXu','rvjst1i','AgfZsgfUzgXLCG','DhLWzq','ywDLBNq6zxHLy3v0Aw9Ux3n0B3bWzwq','mtu0ntG0nxHQtMXcwG','ohjxu0jWDG','otmXmtuYCevtr09t','Aw5JBhvKzxm','CMvNAxn0zxjezwzHDwX0sgfUzgXLCNm','CM91Dgu','z2v0uMvNAxn0zxjLzfr5CgvZ','AgfUzgXLCNm','mJe5otK4ndn3EuHZweG','zxjYB3i','AgfUzgXLCL9LCNjVCG','quDftLrFtu9erv9dsefor0ve','ndy5mdyYCK9kuuzH','y2XLyxjiyw5KBgvYCW'];a0_0x52bd=function(){return _0x1e0418;};return a0_0x52bd();}import{WS_MESSAGE_TYPE}from'../config/constants.js';export class MessageRouter extends EventEmitter{constructor(_0x3b6317){const _0x180ff7=a0_0x178e;super(),this['ws']=_0x3b6317,this[_0x180ff7(0xfa)]=new Map(),this['middleware']=[],this['ws']['on'](_0x180ff7(0xe5),_0x436497=>this[_0x180ff7(0xf8)](_0x436497)),this[_0x180ff7(0xf7)]();}['registerDefaultHandlers'](){const _0x46737f=a0_0x178e;this['registerHandler'](WS_MESSAGE_TYPE['MESSAGE_ADDED'],_0x47d38a=>{const _0x28bf88=a0_0x178e;this[_0x28bf88(0x10b)]('agent:message_added',_0x47d38a[_0x28bf88(0x10a)]);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46737f(0xfe)],_0x20921c=>{this['emit']('agent:mode_changed',_0x20921c);}),this[_0x46737f(0x107)](WS_MESSAGE_TYPE[_0x46737f(0x106)],_0x3405bb=>{const _0x4e104d=_0x46737f;this['emit'](_0x4e104d(0xf2),_0x3405bb['data']);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_ERROR'],_0x28fff2=>{this['emit']('agent:error',_0x28fff2);}),this[_0x46737f(0x107)](WS_MESSAGE_TYPE['AGENT_WARNING'],_0x31fc32=>{this['emit']('agent:warning',_0x31fc32);}),this[_0x46737f(0x107)](WS_MESSAGE_TYPE['AGENT_IMPORTED'],_0x5ef1f2=>{const _0x1cedac=_0x46737f;this['emit']('agent:imported',_0x5ef1f2[_0x1cedac(0x109)]);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_COMMUNICATION'],_0xfcc00=>{const _0x307de6=_0x46737f;this[_0x307de6(0x10b)]('agent:communication',_0xfcc00['data']);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46737f(0x105)],_0x6e4140=>{const _0x5ddab7=_0x46737f;this[_0x5ddab7(0x10b)](_0x5ddab7(0xe7),_0x6e4140['data']);}),this[_0x46737f(0x107)](WS_MESSAGE_TYPE[_0x46737f(0xee)],_0x1ef88c=>{this['emit']('image:result',_0x1ef88c['data']);}),this[_0x46737f(0x107)](WS_MESSAGE_TYPE[_0x46737f(0xed)],_0x34afa3=>{const _0x42df86=_0x46737f;this[_0x42df86(0x10b)](_0x42df86(0x108),_0x34afa3['data']);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46737f(0xef)],_0x18dd36=>{const _0x1e5d71=_0x46737f;this['emit'](_0x1e5d71(0xfc),_0x18dd36);});}async['route'](_0x31971e){const _0x5bd59d=a0_0x178e;let processedMessage=_0x31971e;for(const _0x561b3f of this['middleware']){try{processedMessage=await _0x561b3f(processedMessage);if(!processedMessage)return;}catch(_0x273396){this['emit']('middleware_error',{'error':_0x273396,'message':_0x31971e});return;}}const _0x32e01f=processedMessage[_0x5bd59d(0xf1)];if(!_0x32e01f){this[_0x5bd59d(0x10b)](_0x5bd59d(0x10c),processedMessage);return;}if(this[_0x5bd59d(0xfa)][_0x5bd59d(0xe6)](_0x32e01f)){const _0x500656=this[_0x5bd59d(0xfa)][_0x5bd59d(0xe3)](_0x32e01f);try{await _0x500656(processedMessage);}catch(_0x51fc36){this[_0x5bd59d(0x10b)](_0x5bd59d(0xfd),{'error':_0x51fc36,'message':processedMessage,'messageType':_0x32e01f});}}this[_0x5bd59d(0x10b)](_0x5bd59d(0x110)+_0x32e01f,processedMessage),this['emit'](_0x5bd59d(0xe5),processedMessage);}['registerHandler'](_0x5b464c,_0x1f3659){const _0x5ad11d=a0_0x178e;if(typeof _0x1f3659!==_0x5ad11d(0x10e))throw new Error('Handler\x20must\x20be\x20a\x20function');this[_0x5ad11d(0xfa)]['set'](_0x5b464c,_0x1f3659);}['unregisterHandler'](_0x17ffc2){const _0x23a9e5=a0_0x178e;this[_0x23a9e5(0xfa)][_0x23a9e5(0xe4)](_0x17ffc2);}[a0_0x3d6448(0x103)](_0x567d7b){const _0x2ef495=a0_0x3d6448;if(typeof _0x567d7b!=='function')throw new Error(_0x2ef495(0x10f));this[_0x2ef495(0xec)]['push'](_0x567d7b);}[a0_0x3d6448(0xea)](_0x49e4fb){const _0x13e5ef=a0_0x3d6448,_0x2e374f=this['middleware']['indexOf'](_0x49e4fb);_0x2e374f>-0x1&&this[_0x13e5ef(0xec)][_0x13e5ef(0xe8)](_0x2e374f,0x1);}['clearMiddleware'](){this['middleware']=[];}[a0_0x3d6448(0xf9)](){const _0x5f453b=a0_0x3d6448;return Array[_0x5f453b(0xeb)](this['handlers']['keys']());}[a0_0x3d6448(0xf0)](_0x5be2c9){return this['handlers']['has'](_0x5be2c9);}['clearHandlers'](){this['handlers']['clear']();}['reset'](){const _0x2d64c8=a0_0x3d6448;this[_0x2d64c8(0x100)](),this[_0x2d64c8(0x102)](),this['registerDefaultHandlers']();}}export function loggingMiddleware(_0x2d7758=console['log']){return _0x3502af=>{return _0x2d7758('[MessageRouter]',_0x3502af['type'],_0x3502af),_0x3502af;};}export function filterMiddleware(_0x5bf005){return _0x2b7332=>{const _0x282d62=a0_0x178e;if(_0x5bf005[_0x282d62(0xf6)](_0x2b7332[_0x282d62(0xf1)]))return _0x2b7332;return null;};}export function transformMiddleware(_0x58cfb2){return async _0x36de04=>{return await _0x58cfb2(_0x36de04);};}export function timestampMiddleware(){return _0x2946f0=>{const _0x213fa7=a0_0x178e;return{..._0x2946f0,'receivedAt':new Date()[_0x213fa7(0x111)]()};};}export function validationMiddleware(_0x523ba5){return _0x1ccb46=>{if(_0x523ba5(_0x1ccb46))return _0x1ccb46;throw new Error('Message\x20validation\x20failed');};}export default MessageRouter;
@@ -1 +1 @@
1
- const a0_0x1aed56=a0_0x3b58;(function(_0x37f8f9,_0x4d2390){const _0x1d1630=a0_0x3b58,_0x29b66a=_0x37f8f9();while(!![]){try{const _0x2853b9=-parseInt(_0x1d1630(0x1a8))/0x1*(parseInt(_0x1d1630(0x1cb))/0x2)+parseInt(_0x1d1630(0x1ca))/0x3+-parseInt(_0x1d1630(0x1c7))/0x4+parseInt(_0x1d1630(0x1c6))/0x5+parseInt(_0x1d1630(0x1bf))/0x6+-parseInt(_0x1d1630(0x1ac))/0x7+parseInt(_0x1d1630(0x1a7))/0x8;if(_0x2853b9===_0x4d2390)break;else _0x29b66a['push'](_0x29b66a['shift']());}catch(_0x4c732f){_0x29b66a['push'](_0x29b66a['shift']());}}}(a0_0x4964,0x59c56));import{NETWORK,API_ENDPOINTS,ERROR_MESSAGE,SUCCESS_MESSAGE}from'../config/constants.js';function a0_0x3b58(_0x3f9778,_0x1fcc84){_0x3f9778=_0x3f9778-0x19d;const _0x4964e7=a0_0x4964();let _0x3b5853=_0x4964e7[_0x3f9778];if(a0_0x3b58['upDrtU']===undefined){var _0x2e3b58=function(_0x4f17a2){const _0x2e9341='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x144a18='',_0x4a49b4='';for(let _0x3dc347=0x0,_0xdf1a23,_0x119eee,_0x453338=0x0;_0x119eee=_0x4f17a2['charAt'](_0x453338++);~_0x119eee&&(_0xdf1a23=_0x3dc347%0x4?_0xdf1a23*0x40+_0x119eee:_0x119eee,_0x3dc347++%0x4)?_0x144a18+=String['fromCharCode'](0xff&_0xdf1a23>>(-0x2*_0x3dc347&0x6)):0x0){_0x119eee=_0x2e9341['indexOf'](_0x119eee);}for(let _0x5c7168=0x0,_0x51134d=_0x144a18['length'];_0x5c7168<_0x51134d;_0x5c7168++){_0x4a49b4+='%'+('00'+_0x144a18['charCodeAt'](_0x5c7168)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a49b4);};a0_0x3b58['auqAFZ']=_0x2e3b58,a0_0x3b58['OEwjWV']={},a0_0x3b58['upDrtU']=!![];}const _0x515a59=_0x4964e7[0x0],_0x14d6d8=_0x3f9778+_0x515a59,_0x3aa05f=a0_0x3b58['OEwjWV'][_0x14d6d8];return!_0x3aa05f?(_0x3b5853=a0_0x3b58['auqAFZ'](_0x3b5853),a0_0x3b58['OEwjWV'][_0x14d6d8]=_0x3b5853):_0x3b5853=_0x3aa05f,_0x3b5853;}function a0_0x4964(){const _0x4d9df5=['C2vZC2LVBG','BgfZDefJDgL2Axr5','ue9tva','BwvZC2fNzq','Bg94AwfbCgLlzxK','y3jLyxrLu2vZC2LVBG','z2v0uhjVAMvJDerPCG','DgLTzxn0yw1W','yMfZzvvYBa','BgvUz3rO','Aw5PDgLHBgL6zq','Ahr0CdOVlW','y2HLy2TizwfSDgG','zxjYB3i','oNnLC3nPB25jza','AxnwywXPza','ChjVAMvJDerPCG','BwfRzvjLCxvLC3q','mZKWmZC1nND1AK9Tza','z2v0u2vZC2LVBKLK','rMfPBgvKihrVigDLDcbbueKGA2v5ihn0yxr1CZOG','revgqvvmvf9qt1ju','rMfPBgvKihrVihnLDcbbueKGA2v5CZOG','z2v0u2vZC2LVBKLUzM8','u0vtu0LptL9jtLzbteLe','mtm3nJa0mhzxre56Aa','mty5mdKZnNDLqvj4uG','yxbPq2XPzw50','s0vzu19trvq','nde5nJa3yKHbqK5e','mJe0nJy2DeD6DgHI','C2v0qxbPs2v5','AgfZtg94AwflzxK','C3vJy2vZCW','s0vzu19hrvq','rMfPBgvKihrVigrLBgv0zsbbueKGA2v5CZOG','DMvUzg9Ys2v5CW','r0vu','revgqvvmvf9it1nu','y3DK','zgvSzxrLqxbPs2v5CW','y3jLyxrLzef0','mZG4mtC0ngz0EwveyW','mxzgq0zeEq','C2vZC2LVBKLK','Ag9ZDa','s0vzu19eruXfveu','ndu3mJa2neXPqMPmEq'];a0_0x4964=function(){return _0x4d9df5;};return a0_0x4964();}import{ApiClient}from'./apiClient.js';export class SessionManager{constructor(_0x144a18=NETWORK[a0_0x1aed56(0x1a3)],_0x4a49b4=NETWORK[a0_0x1aed56(0x1c2)]){const _0x30e7e2=a0_0x1aed56;this[_0x30e7e2(0x1aa)]=_0x144a18,this['port']=_0x4a49b4,this[_0x30e7e2(0x1b5)]=_0x30e7e2(0x1b8)+_0x144a18+':'+_0x4a49b4,this[_0x30e7e2(0x1a9)]=null,this['projectDir']=null,this[_0x30e7e2(0x1a6)]=null,this['lastActivity']=null,this['loxiaApiKey']=null,this['vendorKeys']={},this['apiClient']=new ApiClient(this['baseUrl'],this[_0x30e7e2(0x1b1)]);}async[a0_0x1aed56(0x1b2)](_0x3dc347=process['cwd']()){const _0x2636ca=a0_0x1aed56;try{const _0xdf1a23=await this['makeRequest'](_0x2636ca(0x1af),API_ENDPOINTS['SESSION_CREATE'],{'projectDir':_0x3dc347});if(_0xdf1a23['success']&&_0xdf1a23['session'])return this['sessionId']=_0xdf1a23['session']['id'],this[_0x2636ca(0x1bd)]=_0x3dc347,this[_0x2636ca(0x1a6)]=_0xdf1a23['session']['createdAt'],this['lastActivity']=_0xdf1a23[_0x2636ca(0x1ad)][_0x2636ca(0x1ae)],{'success':!![],'sessionId':this['sessionId'],'session':_0xdf1a23[_0x2636ca(0x1ad)]};else throw new Error(_0xdf1a23[_0x2636ca(0x1ba)]||ERROR_MESSAGE['SESSION_CREATE_FAILED']);}catch(_0x119eee){throw new Error(ERROR_MESSAGE['SESSION_CREATE_FAILED']+':\x20'+_0x119eee['message']);}}async['setApiKeys'](_0x453338=null,_0x5c7168={}){const _0x589715=a0_0x1aed56;if(!this[_0x589715(0x1a9)])throw new Error(ERROR_MESSAGE[_0x589715(0x1c5)]);try{const _0x51134d=await this[_0x589715(0x1be)]('POST',API_ENDPOINTS[_0x589715(0x1c9)],{'sessionId':this[_0x589715(0x1a9)],'loxiaApiKey':_0x453338,'vendorKeys':_0x5c7168});if(_0x51134d[_0x589715(0x19e)])return this[_0x589715(0x1b1)]=_0x453338,this[_0x589715(0x1a1)]=_0x5c7168,this[_0x589715(0x1c8)][_0x589715(0x1cc)](_0x453338),{'success':!![],'message':_0x51134d['message'],'hasLoxiaKey':_0x51134d['hasLoxiaKey'],'vendorKeys':_0x51134d['vendorKeys']};else throw new Error(_0x51134d[_0x589715(0x1ba)]||'Failed\x20to\x20set\x20API\x20keys');}catch(_0x21a9fc){throw new Error(_0x589715(0x1c3)+_0x21a9fc[_0x589715(0x1b0)]);}}async['getApiKeyStatus'](){const _0x3a3a70=a0_0x1aed56;if(!this['sessionId'])throw new Error(ERROR_MESSAGE[_0x3a3a70(0x1c5)]);try{const _0x3db21c=API_ENDPOINTS[_0x3a3a70(0x19f)]['replace'](_0x3a3a70(0x1bb),this['sessionId']),_0x803257=await this[_0x3a3a70(0x1be)](_0x3a3a70(0x1a2),_0x3db21c);if(_0x803257['success'])return{'success':!![],'hasLoxiaKey':_0x803257[_0x3a3a70(0x19d)],'vendorKeys':_0x803257[_0x3a3a70(0x1a1)],'updatedAt':_0x803257['updatedAt']};else throw new Error(_0x803257['error']||'Failed\x20to\x20get\x20API\x20key\x20status');}catch(_0x57f7cf){throw new Error(_0x3a3a70(0x1c1)+_0x57f7cf[_0x3a3a70(0x1b0)]);}}async[a0_0x1aed56(0x1a5)](){const _0x509129=a0_0x1aed56;if(!this[_0x509129(0x1a9)])throw new Error(ERROR_MESSAGE['SESSION_INVALID']);try{const _0x464197=API_ENDPOINTS[_0x509129(0x1ab)]['replace'](':sessionId',this['sessionId']),_0x5a1b80=await this['makeRequest']('DELETE',_0x464197);if(_0x5a1b80[_0x509129(0x19e)])return this[_0x509129(0x1b1)]=null,this[_0x509129(0x1a1)]={},{'success':!![],'message':_0x5a1b80[_0x509129(0x1b0)]};else throw new Error(_0x5a1b80[_0x509129(0x1ba)]||'Failed\x20to\x20delete\x20API\x20keys');}catch(_0x4baf1c){throw new Error(_0x509129(0x1a0)+_0x4baf1c[_0x509129(0x1b0)]);}}async[a0_0x1aed56(0x1b7)](_0xe7bdc8=process[a0_0x1aed56(0x1a4)]()){const _0x4b6170=a0_0x1aed56;try{const _0x174935=await this[_0x4b6170(0x1b9)]();if(!_0x174935[_0x4b6170(0x19e)])throw new Error('Server\x20health\x20check\x20failed:\x20'+_0x174935['error']);const _0x5ce7b6=await this['createSession'](_0xe7bdc8);return{'success':!![],'sessionId':_0x5ce7b6[_0x4b6170(0x1a9)],'session':_0x5ce7b6[_0x4b6170(0x1ad)]};}catch(_0x27c3fc){return{'success':![],'error':_0x27c3fc[_0x4b6170(0x1b0)]};}}async['checkHealth'](){const _0x4a9ea5=a0_0x1aed56;try{const _0x28ff41=await this[_0x4a9ea5(0x1be)]('GET',API_ENDPOINTS['HEALTH']);return{'success':!![],'status':_0x28ff41['status'],'version':_0x28ff41['version'],'timestamp':_0x28ff41[_0x4a9ea5(0x1b4)]};}catch(_0x148e60){return{'success':![],'error':_0x148e60['message']};}}async[a0_0x1aed56(0x1be)](_0x34666a,_0x172bb2,_0x7c6ee0=null){const _0x206a03=a0_0x1aed56;return this[_0x206a03(0x1c8)]['request'](_0x34666a,_0x172bb2,{'body':_0x7c6ee0});}[a0_0x1aed56(0x1c0)](){return this['sessionId'];}[a0_0x1aed56(0x1b3)](){return this['projectDir'];}[a0_0x1aed56(0x1bc)](){const _0x46a8cb=a0_0x1aed56;return this[_0x46a8cb(0x1a9)]!==null;}['updateActivity'](){const _0x150c74=a0_0x1aed56;this[_0x150c74(0x1ae)]=new Date()['toISOString']();}[a0_0x1aed56(0x1c4)](){const _0x122147=a0_0x1aed56;return{'sessionId':this['sessionId'],'projectDir':this[_0x122147(0x1bd)],'createdAt':this['createdAt'],'lastActivity':this['lastActivity'],'hasLoxiaKey':!!this[_0x122147(0x1b1)],'vendorKeysCount':Object['keys'](this['vendorKeys'])[_0x122147(0x1b6)]};}['clear'](){const _0x4f58e3=a0_0x1aed56;this['sessionId']=null,this[_0x4f58e3(0x1bd)]=null,this[_0x4f58e3(0x1a6)]=null,this['lastActivity']=null,this[_0x4f58e3(0x1b1)]=null,this['vendorKeys']={};}}export default SessionManager;
1
+ const a0_0x4fc2af=a0_0x5977;(function(_0x2919cc,_0x332954){const _0x27928a=a0_0x5977,_0x48fd45=_0x2919cc();while(!![]){try{const _0x36da17=-parseInt(_0x27928a(0xa8))/0x1+parseInt(_0x27928a(0x9b))/0x2*(-parseInt(_0x27928a(0xb7))/0x3)+-parseInt(_0x27928a(0xa9))/0x4+parseInt(_0x27928a(0x9c))/0x5+parseInt(_0x27928a(0xbb))/0x6*(parseInt(_0x27928a(0x9a))/0x7)+parseInt(_0x27928a(0xb4))/0x8+parseInt(_0x27928a(0xc1))/0x9*(parseInt(_0x27928a(0xa0))/0xa);if(_0x36da17===_0x332954)break;else _0x48fd45['push'](_0x48fd45['shift']());}catch(_0xf4ce71){_0x48fd45['push'](_0x48fd45['shift']());}}}(a0_0x9cb5,0x29ad6));import{NETWORK,API_ENDPOINTS,ERROR_MESSAGE,SUCCESS_MESSAGE}from'../config/constants.js';import{ApiClient}from'./apiClient.js';function a0_0x5977(_0x59c22d,_0x44ede1){_0x59c22d=_0x59c22d-0x9a;const _0x9cb5e0=a0_0x9cb5();let _0x597744=_0x9cb5e0[_0x59c22d];if(a0_0x5977['wDBSwL']===undefined){var _0x5d8c98=function(_0xcc72df){const _0x345ad1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x421f77='',_0x530228='';for(let _0x1e3596=0x0,_0x2a96cd,_0x58f7de,_0x2a62ea=0x0;_0x58f7de=_0xcc72df['charAt'](_0x2a62ea++);~_0x58f7de&&(_0x2a96cd=_0x1e3596%0x4?_0x2a96cd*0x40+_0x58f7de:_0x58f7de,_0x1e3596++%0x4)?_0x421f77+=String['fromCharCode'](0xff&_0x2a96cd>>(-0x2*_0x1e3596&0x6)):0x0){_0x58f7de=_0x345ad1['indexOf'](_0x58f7de);}for(let _0x3d9a57=0x0,_0xfdb6c8=_0x421f77['length'];_0x3d9a57<_0xfdb6c8;_0x3d9a57++){_0x530228+='%'+('00'+_0x421f77['charCodeAt'](_0x3d9a57)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x530228);};a0_0x5977['kHSWsy']=_0x5d8c98,a0_0x5977['FulQil']={},a0_0x5977['wDBSwL']=!![];}const _0x3a1ca2=_0x9cb5e0[0x0],_0x391d0d=_0x59c22d+_0x3a1ca2,_0x59854e=a0_0x5977['FulQil'][_0x391d0d];return!_0x59854e?(_0x597744=a0_0x5977['kHSWsy'](_0x597744),a0_0x5977['FulQil'][_0x391d0d]=_0x597744):_0x597744=_0x59854e,_0x597744;}export class SessionManager{constructor(_0x421f77=NETWORK['DEFAULT_HOST'],_0x530228=NETWORK[a0_0x4fc2af(0xae)]){const _0x5572f3=a0_0x4fc2af;this['host']=_0x421f77,this['port']=_0x530228,this[_0x5572f3(0xa3)]='http://'+_0x421f77+':'+_0x530228,this[_0x5572f3(0xa1)]=null,this[_0x5572f3(0x9e)]=null,this['createdAt']=null,this['lastActivity']=null,this['loxiaApiKey']=null,this[_0x5572f3(0xaf)]={},this[_0x5572f3(0xa6)]=new ApiClient(this['baseUrl'],this[_0x5572f3(0xc6)]);}async[a0_0x4fc2af(0xbe)](_0x1e3596=process[a0_0x4fc2af(0xa4)]()){const _0x4d2b0a=a0_0x4fc2af;try{const _0x2a96cd=await this[_0x4d2b0a(0xba)]('POST',API_ENDPOINTS['SESSION_CREATE'],{'projectDir':_0x1e3596});if(_0x2a96cd[_0x4d2b0a(0xb9)]&&_0x2a96cd['session'])return this['sessionId']=_0x2a96cd[_0x4d2b0a(0xb6)]['id'],this[_0x4d2b0a(0x9e)]=_0x1e3596,this[_0x4d2b0a(0xb3)]=_0x2a96cd['session'][_0x4d2b0a(0xb3)],this[_0x4d2b0a(0xbf)]=_0x2a96cd[_0x4d2b0a(0xb6)]['lastActivity'],{'success':!![],'sessionId':this['sessionId'],'session':_0x2a96cd['session']};else throw new Error(_0x2a96cd['error']||ERROR_MESSAGE['SESSION_CREATE_FAILED']);}catch(_0x58f7de){throw new Error(ERROR_MESSAGE['SESSION_CREATE_FAILED']+':\x20'+_0x58f7de['message']);}}async['setApiKeys'](_0x2a62ea=null,_0x3d9a57={}){const _0x14c612=a0_0x4fc2af;if(!this['sessionId'])throw new Error(ERROR_MESSAGE['SESSION_INVALID']);try{const _0xfdb6c8=await this['makeRequest'](_0x14c612(0xaa),API_ENDPOINTS[_0x14c612(0xab)],{'sessionId':this[_0x14c612(0xa1)],'loxiaApiKey':_0x2a62ea,'vendorKeys':_0x3d9a57});if(_0xfdb6c8['success'])return this['loxiaApiKey']=_0x2a62ea,this['vendorKeys']=_0x3d9a57,this['apiClient'][_0x14c612(0xc9)](_0x2a62ea),{'success':!![],'message':_0xfdb6c8[_0x14c612(0xad)],'hasLoxiaKey':_0xfdb6c8['hasLoxiaKey'],'vendorKeys':_0xfdb6c8['vendorKeys']};else throw new Error(_0xfdb6c8['error']||'Failed\x20to\x20set\x20API\x20keys');}catch(_0x4495ce){throw new Error('Failed\x20to\x20set\x20API\x20keys:\x20'+_0x4495ce['message']);}}async['getApiKeyStatus'](){const _0x575e6e=a0_0x4fc2af;if(!this['sessionId'])throw new Error(ERROR_MESSAGE[_0x575e6e(0xc0)]);try{const _0x37016b=API_ENDPOINTS['KEYS_GET'][_0x575e6e(0xb0)](':sessionId',this[_0x575e6e(0xa1)]),_0x2c9566=await this['makeRequest'](_0x575e6e(0xc3),_0x37016b);if(_0x2c9566['success'])return{'success':!![],'hasLoxiaKey':_0x2c9566['hasLoxiaKey'],'vendorKeys':_0x2c9566[_0x575e6e(0xaf)],'updatedAt':_0x2c9566['updatedAt']};else throw new Error(_0x2c9566['error']||_0x575e6e(0x9d));}catch(_0x2a514c){throw new Error('Failed\x20to\x20get\x20API\x20key\x20status:\x20'+_0x2a514c[_0x575e6e(0xad)]);}}async['deleteApiKeys'](){const _0x18ef1a=a0_0x4fc2af;if(!this['sessionId'])throw new Error(ERROR_MESSAGE[_0x18ef1a(0xc0)]);try{const _0x4f823f=API_ENDPOINTS['KEYS_DELETE'][_0x18ef1a(0xb0)](_0x18ef1a(0xbd),this['sessionId']),_0x28dab3=await this['makeRequest'](_0x18ef1a(0xbc),_0x4f823f);if(_0x28dab3['success'])return this['loxiaApiKey']=null,this['vendorKeys']={},{'success':!![],'message':_0x28dab3[_0x18ef1a(0xad)]};else throw new Error(_0x28dab3[_0x18ef1a(0xc4)]||_0x18ef1a(0xc8));}catch(_0x41ba33){throw new Error(_0x18ef1a(0xac)+_0x41ba33[_0x18ef1a(0xad)]);}}async[a0_0x4fc2af(0x9f)](_0x3c799e=process[a0_0x4fc2af(0xa4)]()){const _0xe0eb3c=a0_0x4fc2af;try{const _0xaacecc=await this['checkHealth']();if(!_0xaacecc['success'])throw new Error(_0xe0eb3c(0xa2)+_0xaacecc['error']);const _0x58de7d=await this['createSession'](_0x3c799e);return{'success':!![],'sessionId':_0x58de7d[_0xe0eb3c(0xa1)],'session':_0x58de7d[_0xe0eb3c(0xb6)]};}catch(_0x413fc3){return{'success':![],'error':_0x413fc3[_0xe0eb3c(0xad)]};}}async[a0_0x4fc2af(0xb8)](){const _0xd01824=a0_0x4fc2af;try{const _0x13f7ee=await this['makeRequest']('GET',API_ENDPOINTS[_0xd01824(0xa5)]);return{'success':!![],'status':_0x13f7ee[_0xd01824(0xa7)],'version':_0x13f7ee['version'],'timestamp':_0x13f7ee['timestamp']};}catch(_0xf4b7a0){return{'success':![],'error':_0xf4b7a0[_0xd01824(0xad)]};}}async[a0_0x4fc2af(0xba)](_0x2f4fc4,_0x4da8a3,_0x2cbf60=null){const _0x187bd4=a0_0x4fc2af;return this[_0x187bd4(0xa6)][_0x187bd4(0xb1)](_0x2f4fc4,_0x4da8a3,{'body':_0x2cbf60});}[a0_0x4fc2af(0xb2)](){const _0x4162f8=a0_0x4fc2af;return this[_0x4162f8(0xa1)];}[a0_0x4fc2af(0xca)](){const _0x53138e=a0_0x4fc2af;return this[_0x53138e(0x9e)];}[a0_0x4fc2af(0xcc)](){const _0x2f8e29=a0_0x4fc2af;return this[_0x2f8e29(0xa1)]!==null;}[a0_0x4fc2af(0xc2)](){const _0x25436b=a0_0x4fc2af;this['lastActivity']=new Date()[_0x25436b(0xc5)]();}[a0_0x4fc2af(0xcb)](){const _0x416b11=a0_0x4fc2af;return{'sessionId':this[_0x416b11(0xa1)],'projectDir':this['projectDir'],'createdAt':this[_0x416b11(0xb3)],'lastActivity':this[_0x416b11(0xbf)],'hasLoxiaKey':!!this['loxiaApiKey'],'vendorKeysCount':Object[_0x416b11(0xc7)](this['vendorKeys'])['length']};}[a0_0x4fc2af(0xb5)](){const _0x332c56=a0_0x4fc2af;this[_0x332c56(0xa1)]=null,this[_0x332c56(0x9e)]=null,this['createdAt']=null,this['lastActivity']=null,this[_0x332c56(0xc6)]=null,this[_0x332c56(0xaf)]={};}}export default SessionManager;function a0_0x9cb5(){const _0x3f25bb=['y3jLyxrLu2vZC2LVBG','BgfZDefJDgL2Axr5','u0vtu0LptL9jtLzbteLe','owXYzLDZsq','DxbKyxrLqwn0AxzPDhK','r0vu','zxjYB3i','Dg9ju09tDhjPBMC','Bg94AwfbCgLlzxK','A2v5CW','rMfPBgvKihrVigrLBgv0zsbbueKGA2v5CW','C2v0qxbPs2v5','z2v0uhjVAMvJDerPCG','z2v0u2vZC2LVBKLUzM8','AxnwywXPza','mZvxBMT5BxO','mM92vKTSAq','nda0otG1uM1nzfbO','rMfPBgvKihrVigDLDcbbueKGA2v5ihn0yxr1CW','ChjVAMvJDerPCG','Aw5PDgLHBgL6zq','mJm2nZaXmeXUzKndCq','C2vZC2LVBKLK','u2vYDMvYigHLywX0AcbJAgvJAYbMywLSzwq6ia','yMfZzvvYBa','y3DK','sevbtfri','yxbPq2XPzw50','C3rHDhvZ','mJuZnJu0t2jdBNfX','mta0ndq5mNb0tMDVra','ue9tva','s0vzu19trvq','rMfPBgvKihrVigrLBgv0zsbbueKGA2v5CZOG','BwvZC2fNzq','revgqvvmvf9qt1ju','DMvUzg9Ys2v5CW','CMvWBgfJzq','CMvXDwvZDa','z2v0u2vZC2LVBKLK','y3jLyxrLzef0','mJyWndG0ofnKwxnZzW','y2XLyxi','C2vZC2LVBG','nZe3otK2z0LTuefM','y2HLy2TizwfSDgG','C3vJy2vZCW','BwfRzvjLCxvLC3q','mZm3ode4vfDjDgD6','revmrvrf','oNnLC3nPB25jza'];a0_0x9cb5=function(){return _0x3f25bb;};return a0_0x9cb5();}
@@ -1 +1 @@
1
- const a0_0x345748=a0_0x188b;(function(_0x5e8ed4,_0xb84df1){const _0x4f90dd=a0_0x188b,_0x1e7021=_0x5e8ed4();while(!![]){try{const _0x22591e=parseInt(_0x4f90dd(0xe3))/0x1*(-parseInt(_0x4f90dd(0xe9))/0x2)+-parseInt(_0x4f90dd(0xd7))/0x3+-parseInt(_0x4f90dd(0xe1))/0x4+parseInt(_0x4f90dd(0xc5))/0x5+-parseInt(_0x4f90dd(0xbb))/0x6*(-parseInt(_0x4f90dd(0xec))/0x7)+parseInt(_0x4f90dd(0xb2))/0x8+parseInt(_0x4f90dd(0xd1))/0x9;if(_0x22591e===_0xb84df1)break;else _0x1e7021['push'](_0x1e7021['shift']());}catch(_0x5645dc){_0x1e7021['push'](_0x1e7021['shift']());}}}(a0_0x3c57,0xbbb2c));import a0_0x577c29 from'ws';function a0_0x3c57(){const _0x164bb8=['AgfUzgXLq2XVC2u','uMvXDwvZDcb0Aw1LB3v0','C3rHCNrizwfYDgjLyxq','ChjVy2vZC01LC3nHz2vrDwv1zq','zgvSzxrL','BwvZC2fNzq','v0vcu09ds0vux1jfq09otKvdvf9nvuXusvbmsuvs','z2vUzxjHDgvszxf1zxn0swq','C2HVDwXKuMvJB25Uzwn0','AgvHCNrIzwf0x3rPBwvVDxq','AgfUzgXLrxjYB3i','AgfUzgXLq29UBMvJDgLVBKvYCM9Y','AgfUzgXLt3bLBG','AgfZ','mti0nZi1nM1YsgL5zW','C2vUza','C2vZC2LVBKLK','B25Jzq','Cg9YDa','y2XLyw51Ca','BwvZC2fNzvf1zxvL','C3rYAw5NAwz5','C2v0DxbfDMvUDeHHBMrSzxjZ','odu3nZz3qNnxAeu','C2vUzf9LCNjVCG','DhLWzq','C3rHDgu','q09otKvdveve','CMvXlq','zw1PDa','CMvJB25Uzwn0qxr0zw1WDhm','AgvHCNrIzwf0sw50zxj2ywW','BgvUz3rO','mtq5mZe0nw54ChfdDq','C2nOzwr1BgvszwnVBM5Ly3q','y2XVC2u','zxjYB3i','CMvJB25Uzwn0vgLTzxi','BgfZDfbVBMDszwnLAxzLza','v0vcu09ds0vux1jfq09otKvdvf9nqvHFrevmqvK','C2vUzfbPBMC','C3rVCeHLyxj0yMvHDa','sfruuf9usu1ft1vu','BM93','AgfUzgXLtwvZC2fNzq','mJaWndm2nJznEuzZueO','C2v0u3rHDgu','ChvZAa','uKvdt05orunusu5h','v0vcu09ds0vux0nptK5fq1rFveLnru9vva','y29UBMvJDgvK','mZm5mtiZmg13D2zIBG','DxjS','y29UBMvJDa','Dg9tDhjPBMC','C3rHDgvFy2HHBMDL','z2v0u3rHDhm','y29UBMvJDgLUzW','CMvJB25Uzwn0rgvSyxK','y29UBMvJDgLVBL9LCNjVCG','CMvJB25Uzwn0Aw5N','ndG4ndK1mMPnv0nnCW','reLtq09otKvdveve','mLzAt2vPua','CgfYC2vFzxjYB3i','CgLUz0LUDgvYDMfS','CgfYC2u','C2vUze9Yy2HLC3rYyxrVCLjLCxvLC3q','Cg9Uz1rPBwvVDxq','mta5mdGYmMzmtLDkCq','revgqvvmvf9it1nu','B3bLBG','nZq5v3fMzhfr','v0vcu09ds0vux1bjtKDFsu5urvjwquW','CgLUz19LCNjVCG','q09otKvdveLorW','ue9orW','qwXYzwfKEsbJB25Uzwn0zwqGB3iGy29UBMvJDgLUzW','t1jdsevtvfjbve9sx1jfuvvfu1q','CgvUzgLUz1jLCxvLC3rZ'];a0_0x3c57=function(){return _0x164bb8;};return a0_0x3c57();}import{EventEmitter}from'events';import{TIMING,NETWORK,CONNECTION_STATE,WS_MESSAGE_TYPE,ERROR_MESSAGE}from'../config/constants.js';export class WebSocketManager extends EventEmitter{constructor(_0x27ec94=NETWORK[a0_0x345748(0xea)],_0x535b0e=NETWORK['DEFAULT_PORT'],_0x3d0eb3={}){const _0x352ef5=a0_0x345748;super(),this['host']=_0x27ec94,this[_0x352ef5(0xb6)]=_0x535b0e,this[_0x352ef5(0xd8)]='ws://'+_0x27ec94+':'+_0x535b0e,this['ws']=null,this['state']=CONNECTION_STATE[_0x352ef5(0xe2)],this['sessionId']=null,this[_0x352ef5(0xc2)]=0x0,this['reconnectDelay']=_0x3d0eb3['reconnectDelay']??TIMING['WEBSOCKET_RECONNECT_DELAY'],this['baseReconnectDelay']=this[_0x352ef5(0xde)],this['reconnectTimer']=null,this[_0x352ef5(0xac)]=!![],this['heartbeatInterval']=_0x3d0eb3['heartbeatInterval']??TIMING[_0x352ef5(0xed)],this[_0x352ef5(0xe5)]=null,this[_0x352ef5(0xe8)]=null,this[_0x352ef5(0xca)]=null,this[_0x352ef5(0xb8)]=[],this['requestIdCounter']=0x0,this['pendingRequests']=new Map();}async['connect'](){const _0x3eb713=a0_0x345748;if(this[_0x3eb713(0xbe)]===CONNECTION_STATE[_0x3eb713(0xbf)]||this['state']===CONNECTION_STATE[_0x3eb713(0xef)])return{'success':![],'error':_0x3eb713(0xf1)};this[_0x3eb713(0xd2)](CONNECTION_STATE[_0x3eb713(0xef)]),this['emit'](_0x3eb713(0xdd));try{return this['ws']=new a0_0x577c29(this['url']),this['setupEventHandlers'](),await this['waitForConnection'](),{'success':!![]};}catch(_0x3b20f1){return this['handleConnectionError'](_0x3b20f1),{'success':![],'error':_0x3b20f1[_0x3eb713(0xa9)]};}}['waitForConnection'](){return new Promise((_0x25efc9,_0xcb9c2d)=>{const _0x3d78c7=a0_0x188b,_0x490888=setTimeout(()=>{_0xcb9c2d(new Error('Connection\x20timeout'));},TIMING[_0x3d78c7(0xd5)]);this['ws']['once']('open',()=>{clearTimeout(_0x490888),_0x25efc9();}),this['ws'][_0x3d78c7(0xb5)](_0x3d78c7(0xc8),_0x3a3063=>{clearTimeout(_0x490888),_0xcb9c2d(_0x3a3063);});});}[a0_0x345748(0xba)](){const _0x1d6f89=a0_0x345748;this['ws']['on'](_0x1d6f89(0xeb),()=>this['handleOpen']()),this['ws']['on']('message',_0x349c40=>this['handleMessage'](_0x349c40)),this['ws']['on'](_0x1d6f89(0xc7),(_0x54651b,_0x141612)=>this['handleClose'](_0x54651b,_0x141612)),this['ws']['on']('error',_0x1f63f3=>this['handleError'](_0x1f63f3));}[a0_0x345748(0xb0)](){const _0x4c13f4=a0_0x345748;this[_0x4c13f4(0xd2)](CONNECTION_STATE[_0x4c13f4(0xbf)]),this['reconnectAttempts']=0x0,this['reconnectDelay']=this['baseReconnectDelay'],this[_0x4c13f4(0xc1)](_0x4c13f4(0xd6)),this[_0x4c13f4(0xf6)](),this[_0x4c13f4(0xf7)]();}[a0_0x345748(0xd0)](_0xbc7cba){const _0x379cba=a0_0x345748;try{const _0x3206a=JSON[_0x379cba(0xe6)](_0xbc7cba[_0x379cba(0xda)]());if(_0x3206a[_0x379cba(0xbd)]===WS_MESSAGE_TYPE[_0x379cba(0xf0)]){this['handlePong']();return;}if(_0x3206a['type']===WS_MESSAGE_TYPE['CONNECTED']){this[_0x379cba(0xc1)]('welcome',_0x3206a);return;}if(_0x3206a['type']===WS_MESSAGE_TYPE['SESSION_JOINED']){this[_0x379cba(0xb4)]=_0x3206a['sessionId'],this['emit']('session_joined',_0x3206a);return;}if(_0x3206a[_0x379cba(0xbd)]===WS_MESSAGE_TYPE['ORCHESTRATOR_RESPONSE']){this['handleOrchestratorResponse'](_0x3206a);return;}this['emit'](_0x379cba(0xa9),_0x3206a),_0x3206a['type']&&this['emit'](_0x3206a['type'],_0x3206a);}catch(_0x2b0ab5){this['emit'](_0x379cba(0xe4),{'error':_0x2b0ab5,'data':_0xbc7cba});}}[a0_0x345748(0xf4)](_0x22d8da,_0x45fd96){const _0x3bb9c8=a0_0x345748;this[_0x3bb9c8(0xb7)]();const _0x2fbf26=_0x45fd96[_0x3bb9c8(0xda)]()||'Unknown\x20reason';this[_0x3bb9c8(0xc1)]('disconnected',{'code':_0x22d8da,'reason':_0x2fbf26}),this[_0x3bb9c8(0xac)]&&_0x22d8da!==0x3e8?this[_0x3bb9c8(0xc6)]():this['setState'](CONNECTION_STATE['DISCONNECTED']);}[a0_0x345748(0xae)](_0x168c54){const _0x1ceb25=a0_0x345748;this[_0x1ceb25(0xc1)](_0x1ceb25(0xc8),_0x168c54);}[a0_0x345748(0xaf)](_0x55d8b5){const _0x30c209=a0_0x345748;this['setState'](CONNECTION_STATE['ERROR']),this[_0x30c209(0xc1)](_0x30c209(0xdf),_0x55d8b5),this[_0x30c209(0xac)]&&this['scheduleReconnect']();}[a0_0x345748(0xc6)](){const _0xdde4c5=a0_0x345748;if(this['reconnectTimer'])return;this['setState'](CONNECTION_STATE[_0xdde4c5(0xd4)]),this['reconnectAttempts']++;const _0x207811=Math['min'](this['reconnectDelay']*Math['pow'](TIMING[_0xdde4c5(0xaa)],this[_0xdde4c5(0xc2)]-0x1),TIMING[_0xdde4c5(0xcb)]);this['emit'](_0xdde4c5(0xe0),{'attempt':this['reconnectAttempts'],'delay':_0x207811}),this[_0xdde4c5(0xc9)]=setTimeout(()=>{const _0x402c2e=_0xdde4c5;this['reconnectTimer']=null,this[_0x402c2e(0xd9)]();},_0x207811);}[a0_0x345748(0xf6)](){const _0x4cceb5=a0_0x345748;this['stopHeartbeat'](),this['pingInterval']=setInterval(()=>{const _0x576c7f=a0_0x188b;this[_0x576c7f(0xbe)]===CONNECTION_STATE['CONNECTED']&&this[_0x576c7f(0xcc)]();},this[_0x4cceb5(0xc3)]);}['stopHeartbeat'](){const _0x5da1e5=a0_0x345748;this[_0x5da1e5(0xe5)]&&(clearInterval(this['pingInterval']),this[_0x5da1e5(0xe5)]=null),this['pongTimeout']&&(clearTimeout(this[_0x5da1e5(0xe8)]),this[_0x5da1e5(0xe8)]=null);}['sendPing'](){const _0x2ddb1d=a0_0x345748;if(this['state']!==CONNECTION_STATE['CONNECTED'])return;try{this['send']({'type':WS_MESSAGE_TYPE['PING']}),this[_0x2ddb1d(0xe8)]=setTimeout(()=>{this['handlePongTimeout']();},TIMING['WEBSOCKET_PONG_TIMEOUT']);}catch(_0x3452d4){this[_0x2ddb1d(0xc1)](_0x2ddb1d(0xee),_0x3452d4);}}['handlePong'](){const _0x545dd=a0_0x345748;this[_0x545dd(0xca)]=Date['now'](),this[_0x545dd(0xe8)]&&(clearTimeout(this[_0x545dd(0xe8)]),this['pongTimeout']=null);}['handlePongTimeout'](){const _0x38b9f8=a0_0x345748;this[_0x38b9f8(0xc1)](_0x38b9f8(0xad)),this['disconnect'](),this[_0x38b9f8(0xac)]&&this['scheduleReconnect']();}['joinSession'](_0x570682){this['sessionId']=_0x570682,this['send']({'type':WS_MESSAGE_TYPE['JOIN_SESSION'],'sessionId':_0x570682});}[a0_0x345748(0xe7)](_0x54f082,_0x3aa464,_0xebe1eb){const _0x24a3aa=a0_0x345748,_0x262e27=this[_0x24a3aa(0xab)](),_0x5c2bfc={'type':WS_MESSAGE_TYPE[_0x24a3aa(0xf2)],'requestId':_0x262e27,'action':_0x54f082,'payload':_0x3aa464,'projectDir':_0xebe1eb};return new Promise((_0x6a6b39,_0x3166cc)=>{const _0x3b8d2a=_0x24a3aa;this[_0x3b8d2a(0xf3)]['set'](_0x262e27,{'resolve':_0x6a6b39,'reject':_0x3166cc,'timestamp':Date[_0x3b8d2a(0xcf)]()});try{this['send'](_0x5c2bfc);}catch(_0x54c050){this['pendingRequests'][_0x3b8d2a(0xf8)](_0x262e27),_0x3166cc(_0x54c050);}setTimeout(()=>{const _0x37bc3f=_0x3b8d2a;this['pendingRequests'][_0x37bc3f(0xb1)](_0x262e27)&&(this['pendingRequests'][_0x37bc3f(0xf8)](_0x262e27),_0x3166cc(new Error(_0x37bc3f(0xf5))));},TIMING[_0x3b8d2a(0xce)]);});}['handleOrchestratorResponse'](_0x29327b){const _0x780c4=a0_0x345748,{requestId:_0x312e26,response:_0x5d2494,error:_0x3e78ae}=_0x29327b;if(this['pendingRequests']['has'](_0x312e26)){const {resolve:_0x58e135,reject:_0x285618}=this['pendingRequests']['get'](_0x312e26);this[_0x780c4(0xf3)][_0x780c4(0xf8)](_0x312e26),_0x3e78ae?_0x285618(new Error(_0x3e78ae)):_0x58e135(_0x5d2494);}}['send'](_0x19638c){const _0x33af45=a0_0x345748;if(this[_0x33af45(0xbe)]!==CONNECTION_STATE['CONNECTED']){this['messageQueue'][_0x33af45(0xd3)](_0x19638c);return;}try{this['ws']['send'](JSON['stringify'](_0x19638c));}catch(_0x2c5df4){this['emit'](_0x33af45(0xbc),_0x2c5df4);throw _0x2c5df4;}}[a0_0x345748(0xf7)](){const _0x5571af=a0_0x345748;while(this[_0x5571af(0xb8)][_0x5571af(0xc4)]>0x0&&this[_0x5571af(0xbe)]===CONNECTION_STATE[_0x5571af(0xbf)]){const _0x1974d3=this[_0x5571af(0xb8)]['shift']();try{this['ws'][_0x5571af(0xb3)](JSON[_0x5571af(0xb9)](_0x1974d3));}catch(_0x2b4ccc){this[_0x5571af(0xc1)]('queue_process_error',_0x2b4ccc),this[_0x5571af(0xb8)]['unshift'](_0x1974d3);break;}}}['disconnect'](){const _0x29c0f1=a0_0x345748;this['shouldReconnect']=![],this['cleanup']();if(this['ws']){try{this['ws']['close'](0x3e8,'Client\x20disconnect');}catch(_0x54c065){}this['ws']=null;}this[_0x29c0f1(0xd2)](CONNECTION_STATE['DISCONNECTED']);}[a0_0x345748(0xb7)](){const _0x153aa1=a0_0x345748;this[_0x153aa1(0xcd)](),this['reconnectTimer']&&(clearTimeout(this['reconnectTimer']),this[_0x153aa1(0xc9)]=null),this['ws']&&this['ws']['removeAllListeners']();}[a0_0x345748(0xd2)](_0x3c99d3){const _0x4e6186=a0_0x345748,_0x30ffa0=this['state'];this[_0x4e6186(0xbe)]=_0x3c99d3,_0x30ffa0!==_0x3c99d3&&this[_0x4e6186(0xc1)](_0x4e6186(0xdb),{'oldState':_0x30ffa0,'newState':_0x3c99d3});}[a0_0x345748(0xab)](){const _0x4dbea3=a0_0x345748;return this['requestIdCounter']++,_0x4dbea3(0xc0)+Date['now']()+'-'+this['requestIdCounter'];}['getState'](){return this['state'];}['isConnected'](){const _0x2276d1=a0_0x345748;return this['state']===CONNECTION_STATE[_0x2276d1(0xbf)];}['getSessionId'](){const _0x2f7985=a0_0x345748;return this[_0x2f7985(0xb4)];}[a0_0x345748(0xdc)](){const _0x1c5145=a0_0x345748;return{'state':this[_0x1c5145(0xbe)],'sessionId':this['sessionId'],'reconnectAttempts':this[_0x1c5145(0xc2)],'queuedMessages':this['messageQueue'][_0x1c5145(0xc4)],'pendingRequests':this['pendingRequests']['size'],'lastPongReceived':this[_0x1c5145(0xca)]};}}function a0_0x188b(_0x273537,_0x4bfdac){_0x273537=_0x273537-0xa9;const _0x3c574e=a0_0x3c57();let _0x188b34=_0x3c574e[_0x273537];if(a0_0x188b['PcyFGu']===undefined){var _0x478b31=function(_0x10a91c){const _0x4b9517='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x577c29='',_0x27ec94='';for(let _0x535b0e=0x0,_0x3d0eb3,_0x3b20f1,_0x25efc9=0x0;_0x3b20f1=_0x10a91c['charAt'](_0x25efc9++);~_0x3b20f1&&(_0x3d0eb3=_0x535b0e%0x4?_0x3d0eb3*0x40+_0x3b20f1:_0x3b20f1,_0x535b0e++%0x4)?_0x577c29+=String['fromCharCode'](0xff&_0x3d0eb3>>(-0x2*_0x535b0e&0x6)):0x0){_0x3b20f1=_0x4b9517['indexOf'](_0x3b20f1);}for(let _0xcb9c2d=0x0,_0x490888=_0x577c29['length'];_0xcb9c2d<_0x490888;_0xcb9c2d++){_0x27ec94+='%'+('00'+_0x577c29['charCodeAt'](_0xcb9c2d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x27ec94);};a0_0x188b['XlkFHr']=_0x478b31,a0_0x188b['hZyjpM']={},a0_0x188b['PcyFGu']=!![];}const _0x232909=_0x3c574e[0x0],_0x2ac427=_0x273537+_0x232909,_0x1a2a5b=a0_0x188b['hZyjpM'][_0x2ac427];return!_0x1a2a5b?(_0x188b34=a0_0x188b['XlkFHr'](_0x188b34),a0_0x188b['hZyjpM'][_0x2ac427]=_0x188b34):_0x188b34=_0x1a2a5b,_0x188b34;}export default WebSocketManager;
1
+ const a0_0x267a0c=a0_0x38aa;(function(_0x22a43f,_0x26bb33){const _0x441eb2=a0_0x38aa,_0x221624=_0x22a43f();while(!![]){try{const _0x391e8d=parseInt(_0x441eb2(0x1d8))/0x1*(parseInt(_0x441eb2(0x1e7))/0x2)+parseInt(_0x441eb2(0x212))/0x3+parseInt(_0x441eb2(0x1f5))/0x4*(-parseInt(_0x441eb2(0x21e))/0x5)+parseInt(_0x441eb2(0x20e))/0x6*(-parseInt(_0x441eb2(0x1e8))/0x7)+parseInt(_0x441eb2(0x206))/0x8+parseInt(_0x441eb2(0x1f1))/0x9*(-parseInt(_0x441eb2(0x1fd))/0xa)+parseInt(_0x441eb2(0x1db))/0xb*(parseInt(_0x441eb2(0x1fb))/0xc);if(_0x391e8d===_0x26bb33)break;else _0x221624['push'](_0x221624['shift']());}catch(_0x81d2bc){_0x221624['push'](_0x221624['shift']());}}}(a0_0x577c,0xe698a));import a0_0xb74380 from'ws';import{EventEmitter}from'events';import{TIMING,NETWORK,CONNECTION_STATE,WS_MESSAGE_TYPE,ERROR_MESSAGE}from'../config/constants.js';function a0_0x38aa(_0x41d388,_0x128b94){_0x41d388=_0x41d388-0x1cf;const _0x577c6c=a0_0x577c();let _0x38aacd=_0x577c6c[_0x41d388];if(a0_0x38aa['VPGsBm']===undefined){var _0x6b892a=function(_0x536bc2){const _0x246ad0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb74380='',_0x4f13a2='';for(let _0x1c9467=0x0,_0x33ae7b,_0x33e985,_0x4f0ffd=0x0;_0x33e985=_0x536bc2['charAt'](_0x4f0ffd++);~_0x33e985&&(_0x33ae7b=_0x1c9467%0x4?_0x33ae7b*0x40+_0x33e985:_0x33e985,_0x1c9467++%0x4)?_0xb74380+=String['fromCharCode'](0xff&_0x33ae7b>>(-0x2*_0x1c9467&0x6)):0x0){_0x33e985=_0x246ad0['indexOf'](_0x33e985);}for(let _0x28c029=0x0,_0x12825b=_0xb74380['length'];_0x28c029<_0x12825b;_0x28c029++){_0x4f13a2+='%'+('00'+_0xb74380['charCodeAt'](_0x28c029)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4f13a2);};a0_0x38aa['RcTcFv']=_0x6b892a,a0_0x38aa['FOjEan']={},a0_0x38aa['VPGsBm']=!![];}const _0x463121=_0x577c6c[0x0],_0x7f124=_0x41d388+_0x463121,_0x40bce2=a0_0x38aa['FOjEan'][_0x7f124];return!_0x40bce2?(_0x38aacd=a0_0x38aa['RcTcFv'](_0x38aacd),a0_0x38aa['FOjEan'][_0x7f124]=_0x38aacd):_0x38aacd=_0x40bce2,_0x38aacd;}function a0_0x577c(){const _0x12411a=['C2vUza','AgfZ','v0vcu09ds0vux1bptKDFveLnru9vva','vw5RBM93BIbYzwfZB24','B3bLBG','z2v0u2vZC2LVBKLK','mtDgD29jA3O','C2v0u3rHDgu','CMvJB25Uzwn0qxr0zw1WDhm','mZuZmxb0AxLdua','q2XPzw50igrPC2nVBM5Ly3q','B25Jzq','C2vUzfbPBMC','uMvXDwvZDcb0Aw1LB3v0','revgqvvmvf9qt1ju','DhLWzq','sK9jtL9trvntsu9o','AxndB25Uzwn0zwq','BgfZDfbVBMDszwnLAxzLza','Cg9Uz1rPBwvVDxq','C3rVCeHLyxj0yMvHDa','mtu5ntm4s25NquzT','n1nLwNzAqq','C2v0','CgfYC2vFzxjYB3i','yMfZzvjLy29UBMvJDerLBgf5','CMvJB25Uzwn0rgvSyxK','v0vcu09ds0vux1jfq09otKvdvf9eruXbwq','AgfUzgXLt3jJAgvZDhjHDg9YuMvZCg9UC2u','D2vSy29Tzq','D3m6lY8','oda4ntGWn253C05lDW','zw1PDa','rvjst1i','C2HVDwXKuMvJB25Uzwn0','nJy2mtu2Dw1jrvDu','zgvSzxrL','zgLZy29UBMvJDa','z2vUzxjHDgvszxf1zxn0swq','Cg93','v0vcu09ds0vux1jfq09otKvdvf9nqvHFrevmqvK','mJyZndbtq3zZENK','BM93','mJb2qwLKweW','C3rHDgu','AgfUzgXLq29UBMvJDgLVBKvYCM9Y','AgvHCNrIzwf0sw50zxj2ywW','BgvUz3rO','q09otKvdveve','BwLU','C2vZC2LVBKLK','C2vUzf9LCNjVCG','ntq5nJG0ofvltuztza','CMvXlq','CxvLDwvFChjVy2vZC19LCNjVCG','AgfUzgXLrxjYB3i','q09otKvdveLorW','CgLUz0LUDgvYDMfS','reLtq09otKvdveve','q29UBMvJDgLVBIb0Aw1LB3v0','mJeYnJGWmKPoCvf6rW','AgfUzgXLt3bLBG','CgvUzgLUz1jLCxvLC3rZ','C2v0DxbfDMvUDeHHBMrSzxjZ','mJa0mZqXn2vbt2PrCW','AgfUzgXLug9UzW','AgvHCNrIzwf0x3rPBwvVDxq','revgqvvmvf9it1nu','Dw5ZAgLMDa','Dg9tDhjPBMC','C2vZC2LVBL9QB2LUzwq','qwXYzwfKEsbJB25Uzwn0zwqGB3iGy29UBMvJDgLUzW','CMvJB25Uzwn0vgLTzxi','C3rHCNrizwfYDgjLyxq','y2XVC2u','AgfUzgXLq2XVC2u','mtbHwKzNB24','ChjVy2vZC01LC3nHz2vrDwv1zq','y29UBMvJDgvK','C2nOzwr1BgvszwnVBM5Ly3q','BwvZC2fNzvf1zxvL','zxjYB3i'];a0_0x577c=function(){return _0x12411a;};return a0_0x577c();}export class WebSocketManager extends EventEmitter{constructor(_0x4f13a2=NETWORK[a0_0x267a0c(0x215)],_0x1c9467=NETWORK[a0_0x267a0c(0x1e0)],_0x33ae7b={}){const _0x595e48=a0_0x267a0c;super(),this['host']=_0x4f13a2,this['port']=_0x1c9467,this['url']=_0x595e48(0x1f0)+_0x4f13a2+':'+_0x1c9467,this['ws']=null,this[_0x595e48(0x1fe)]=CONNECTION_STATE[_0x595e48(0x20c)],this[_0x595e48(0x204)]=null,this['reconnectAttempts']=0x0,this['reconnectDelay']=_0x33ae7b[_0x595e48(0x1ec)]??TIMING[_0x595e48(0x1ed)],this[_0x595e48(0x1eb)]=this['reconnectDelay'],this[_0x595e48(0x21a)]=null,this['shouldReconnect']=!![],this['heartbeatInterval']=_0x33ae7b[_0x595e48(0x200)]??TIMING['WEBSOCKET_PING_INTERVAL'],this['pingInterval']=null,this[_0x595e48(0x1e5)]=null,this['lastPongReceived']=null,this['messageQueue']=[],this['requestIdCounter']=0x0,this['pendingRequests']=new Map();}async['connect'](){const _0x95552c=a0_0x267a0c;if(this[_0x95552c(0x1fe)]===CONNECTION_STATE['CONNECTED']||this[_0x95552c(0x1fe)]===CONNECTION_STATE[_0x95552c(0x20a)])return{'success':![],'error':_0x95552c(0x219)};this[_0x95552c(0x1d9)](CONNECTION_STATE['CONNECTING']),this['emit']('connecting');try{return this['ws']=new a0_0xb74380(this['url']),this[_0x95552c(0x211)](),await this['waitForConnection'](),{'success':!![]};}catch(_0x33e985){return this[_0x95552c(0x1ff)](_0x33e985),{'success':![],'error':_0x33e985['message']};}}['waitForConnection'](){return new Promise((_0x4f0ffd,_0x28c029)=>{const _0x1c4193=a0_0x38aa,_0x12825b=setTimeout(()=>{const _0x229ea5=a0_0x38aa;_0x28c029(new Error(_0x229ea5(0x20d)));},TIMING['WEBSOCKET_CONNECT_TIMEOUT']);this['ws']['once'](_0x1c4193(0x1d6),()=>{clearTimeout(_0x12825b),_0x4f0ffd();}),this['ws'][_0x1c4193(0x1dd)](_0x1c4193(0x1d1),_0x18c0f4=>{clearTimeout(_0x12825b),_0x28c029(_0x18c0f4);});});}[a0_0x267a0c(0x211)](){const _0x9ed0b0=a0_0x267a0c;this['ws']['on'](_0x9ed0b0(0x1d6),()=>this['handleOpen']()),this['ws']['on']('message',_0x435395=>this['handleMessage'](_0x435395)),this['ws']['on']('close',(_0x177f0b,_0x4c6f35)=>this[_0x9ed0b0(0x21d)](_0x177f0b,_0x4c6f35)),this['ws']['on'](_0x9ed0b0(0x1d1),_0x2eab02=>this[_0x9ed0b0(0x209)](_0x2eab02));}[a0_0x267a0c(0x20f)](){const _0x33f464=a0_0x267a0c;this['setState'](CONNECTION_STATE['CONNECTED']),this['reconnectAttempts']=0x0,this[_0x33f464(0x1ec)]=this['baseReconnectDelay'],this[_0x33f464(0x1f2)](_0x33f464(0x220)),this['startHeartbeat'](),this[_0x33f464(0x21f)]();}['handleMessage'](_0x1f23a8){const _0x4818bc=a0_0x267a0c;try{const _0x5051b4=JSON['parse'](_0x1f23a8['toString']());if(_0x5051b4[_0x4818bc(0x1e1)]===WS_MESSAGE_TYPE['PONG']){this[_0x4818bc(0x213)]();return;}if(_0x5051b4['type']===WS_MESSAGE_TYPE['CONNECTED']){this[_0x4818bc(0x1f2)](_0x4818bc(0x1ef),_0x5051b4);return;}if(_0x5051b4['type']===WS_MESSAGE_TYPE['SESSION_JOINED']){this[_0x4818bc(0x204)]=_0x5051b4[_0x4818bc(0x204)],this[_0x4818bc(0x1f2)](_0x4818bc(0x218),_0x5051b4);return;}if(_0x5051b4['type']===WS_MESSAGE_TYPE['ORCHESTRATOR_RESPONSE']){this[_0x4818bc(0x1ee)](_0x5051b4);return;}this[_0x4818bc(0x1f2)]('message',_0x5051b4),_0x5051b4[_0x4818bc(0x1e1)]&&this['emit'](_0x5051b4['type'],_0x5051b4);}catch(_0x19e966){this[_0x4818bc(0x1f2)](_0x4818bc(0x1ea),{'error':_0x19e966,'data':_0x1f23a8});}}[a0_0x267a0c(0x21d)](_0x913ce7,_0x54ce19){const _0x1d866b=a0_0x267a0c;this['cleanup']();const _0x35e1d8=_0x54ce19[_0x1d866b(0x217)]()||_0x1d866b(0x1d5);this['emit']('disconnected',{'code':_0x913ce7,'reason':_0x35e1d8}),this[_0x1d866b(0x1f4)]&&_0x913ce7!==0x3e8?this['scheduleReconnect']():this['setState'](CONNECTION_STATE['DISCONNECTED']);}[a0_0x267a0c(0x209)](_0x3b0db4){const _0x24f064=a0_0x267a0c;this[_0x24f064(0x1f2)](_0x24f064(0x1d1),_0x3b0db4);}['handleConnectionError'](_0x2b7c8b){const _0x2bdd33=a0_0x267a0c;this['setState'](CONNECTION_STATE[_0x2bdd33(0x1f3)]),this['emit']('connection_error',_0x2b7c8b),this['shouldReconnect']&&this[_0x2bdd33(0x1cf)]();}[a0_0x267a0c(0x1cf)](){const _0x4ba91a=a0_0x267a0c;if(this[_0x4ba91a(0x21a)])return;this[_0x4ba91a(0x1d9)](CONNECTION_STATE['RECONNECTING']),this[_0x4ba91a(0x1da)]++;const _0x1f5e3f=Math[_0x4ba91a(0x203)](this['reconnectDelay']*Math[_0x4ba91a(0x1f9)](TIMING['WEBSOCKET_RECONNECT_MULTIPLIER'],this['reconnectAttempts']-0x1),TIMING[_0x4ba91a(0x1fa)]);this['emit']('reconnecting',{'attempt':this['reconnectAttempts'],'delay':_0x1f5e3f}),this['reconnectTimer']=setTimeout(()=>{this['reconnectTimer']=null,this['connect']();},_0x1f5e3f);}[a0_0x267a0c(0x21b)](){const _0x57d16c=a0_0x267a0c;this['stopHeartbeat'](),this[_0x57d16c(0x20b)]=setInterval(()=>{const _0x1f0daa=_0x57d16c;this[_0x1f0daa(0x1fe)]===CONNECTION_STATE[_0x1f0daa(0x202)]&&this[_0x1f0daa(0x1de)]();},this[_0x57d16c(0x200)]);}['stopHeartbeat'](){const _0x269944=a0_0x267a0c;this['pingInterval']&&(clearInterval(this[_0x269944(0x20b)]),this[_0x269944(0x20b)]=null),this['pongTimeout']&&(clearTimeout(this[_0x269944(0x1e5)]),this['pongTimeout']=null);}[a0_0x267a0c(0x1de)](){const _0x36ca26=a0_0x267a0c;if(this[_0x36ca26(0x1fe)]!==CONNECTION_STATE[_0x36ca26(0x202)])return;try{this[_0x36ca26(0x1d2)]({'type':WS_MESSAGE_TYPE['PING']}),this[_0x36ca26(0x1e5)]=setTimeout(()=>{this['handlePongTimeout']();},TIMING[_0x36ca26(0x1d4)]);}catch(_0x153d8e){this['emit']('ping_error',_0x153d8e);}}[a0_0x267a0c(0x213)](){const _0x146ddd=a0_0x267a0c;this[_0x146ddd(0x1e4)]=Date[_0x146ddd(0x1fc)](),this['pongTimeout']&&(clearTimeout(this['pongTimeout']),this[_0x146ddd(0x1e5)]=null);}['handlePongTimeout'](){const _0x51347a=a0_0x267a0c;this[_0x51347a(0x1f2)](_0x51347a(0x214)),this['disconnect'](),this[_0x51347a(0x1f4)]&&this['scheduleReconnect']();}['joinSession'](_0x2012ae){const _0x3b990a=a0_0x267a0c;this[_0x3b990a(0x204)]=_0x2012ae,this['send']({'type':WS_MESSAGE_TYPE[_0x3b990a(0x1e2)],'sessionId':_0x2012ae});}['sendOrchestratorRequest'](_0x29ae91,_0x3cad42,_0x53a29e){const _0x1f7196=a0_0x267a0c,_0x52d7b6=this[_0x1f7196(0x1f8)](),_0x180a33={'type':WS_MESSAGE_TYPE['ORCHESTRATOR_REQUEST'],'requestId':_0x52d7b6,'action':_0x29ae91,'payload':_0x3cad42,'projectDir':_0x53a29e};return new Promise((_0x4c34f0,_0x548c96)=>{const _0x5b000a=_0x1f7196;this['pendingRequests'][_0x5b000a(0x1e9)](_0x52d7b6,{'resolve':_0x4c34f0,'reject':_0x548c96,'timestamp':Date[_0x5b000a(0x1fc)]()});try{this[_0x5b000a(0x1d2)](_0x180a33);}catch(_0x5412d8){this[_0x5b000a(0x210)]['delete'](_0x52d7b6),_0x548c96(_0x5412d8);}setTimeout(()=>{const _0x468705=_0x5b000a;this['pendingRequests'][_0x468705(0x1d3)](_0x52d7b6)&&(this['pendingRequests']['delete'](_0x52d7b6),_0x548c96(new Error(_0x468705(0x1df))));},TIMING['HTTP_TIMEOUT']);});}[a0_0x267a0c(0x1ee)](_0x3c7c1e){const _0x5b7422=a0_0x267a0c,{requestId:_0x1c2864,response:_0x3def6a,error:_0x5b5f8d}=_0x3c7c1e;if(this['pendingRequests'][_0x5b7422(0x1d3)](_0x1c2864)){const {resolve:_0xde8c9e,reject:_0x33703a}=this['pendingRequests']['get'](_0x1c2864);this['pendingRequests'][_0x5b7422(0x1f6)](_0x1c2864),_0x5b5f8d?_0x33703a(new Error(_0x5b5f8d)):_0xde8c9e(_0x3def6a);}}['send'](_0x5148f8){const _0x1839f7=a0_0x267a0c;if(this['state']!==CONNECTION_STATE[_0x1839f7(0x202)]){this[_0x1839f7(0x1d0)]['push'](_0x5148f8);return;}try{this['ws'][_0x1839f7(0x1d2)](JSON['stringify'](_0x5148f8));}catch(_0x54ddd8){this[_0x1839f7(0x1f2)](_0x1839f7(0x205),_0x54ddd8);throw _0x54ddd8;}}['processMessageQueue'](){const _0x36288b=a0_0x267a0c;while(this['messageQueue']['length']>0x0&&this[_0x36288b(0x1fe)]===CONNECTION_STATE[_0x36288b(0x202)]){const _0x5af02e=this[_0x36288b(0x1d0)]['shift']();try{this['ws'][_0x36288b(0x1d2)](JSON['stringify'](_0x5af02e));}catch(_0x4f0ca0){this['emit'](_0x36288b(0x208),_0x4f0ca0),this[_0x36288b(0x1d0)][_0x36288b(0x216)](_0x5af02e);break;}}}[a0_0x267a0c(0x1f7)](){const _0x4c9051=a0_0x267a0c;this[_0x4c9051(0x1f4)]=![],this['cleanup']();if(this['ws']){try{this['ws'][_0x4c9051(0x21c)](0x3e8,_0x4c9051(0x1dc));}catch(_0x41dcdc){}this['ws']=null;}this['setState'](CONNECTION_STATE['DISCONNECTED']);}['cleanup'](){const _0x36a91d=a0_0x267a0c;this[_0x36a91d(0x1e6)](),this[_0x36a91d(0x21a)]&&(clearTimeout(this[_0x36a91d(0x21a)]),this[_0x36a91d(0x21a)]=null),this['ws']&&this['ws']['removeAllListeners']();}['setState'](_0x4de60b){const _0xdddef0=a0_0x267a0c,_0x2d36d3=this[_0xdddef0(0x1fe)];this[_0xdddef0(0x1fe)]=_0x4de60b,_0x2d36d3!==_0x4de60b&&this['emit']('state_change',{'oldState':_0x2d36d3,'newState':_0x4de60b});}['generateRequestId'](){const _0x44477b=a0_0x267a0c;return this['requestIdCounter']++,_0x44477b(0x207)+Date[_0x44477b(0x1fc)]()+'-'+this['requestIdCounter'];}['getState'](){return this['state'];}[a0_0x267a0c(0x1e3)](){const _0x572285=a0_0x267a0c;return this[_0x572285(0x1fe)]===CONNECTION_STATE[_0x572285(0x202)];}[a0_0x267a0c(0x1d7)](){const _0x4edba5=a0_0x267a0c;return this[_0x4edba5(0x204)];}['getStats'](){const _0x3353f2=a0_0x267a0c;return{'state':this['state'],'sessionId':this['sessionId'],'reconnectAttempts':this[_0x3353f2(0x1da)],'queuedMessages':this[_0x3353f2(0x1d0)][_0x3353f2(0x201)],'pendingRequests':this[_0x3353f2(0x210)]['size'],'lastPongReceived':this['lastPongReceived']};}}export default WebSocketManager;