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

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/bin/cli.js +1 -1
  2. package/bin/loxia-terminal-v2.js +1 -1
  3. package/bin/loxia-terminal.js +1 -1
  4. package/bin/start-with-terminal.js +1 -1
  5. package/package.json +1 -2
  6. package/scripts/install-scanners.js +1 -1
  7. package/src/analyzers/CSSAnalyzer.js +1 -1
  8. package/src/analyzers/ConfigValidator.js +1 -1
  9. package/src/analyzers/ESLintAnalyzer.js +1 -1
  10. package/src/analyzers/JavaScriptAnalyzer.js +1 -1
  11. package/src/analyzers/PrettierFormatter.js +1 -1
  12. package/src/analyzers/PythonAnalyzer.js +1 -1
  13. package/src/analyzers/SecurityAnalyzer.js +1 -1
  14. package/src/analyzers/TypeScriptAnalyzer.js +1 -1
  15. package/src/analyzers/codeCloneDetector/analyzer.js +1 -1
  16. package/src/analyzers/codeCloneDetector/detector.js +1 -1
  17. package/src/analyzers/codeCloneDetector/index.js +1 -1
  18. package/src/analyzers/codeCloneDetector/parser.js +1 -1
  19. package/src/analyzers/codeCloneDetector/reporter.js +1 -1
  20. package/src/analyzers/codeCloneDetector/scanner.js +1 -1
  21. package/src/core/agentPool.js +1 -1
  22. package/src/core/agentScheduler.js +1 -1
  23. package/src/core/contextManager.js +1 -1
  24. package/src/core/messageProcessor.js +1 -1
  25. package/src/core/orchestrator.js +1 -1
  26. package/src/core/stateManager.js +1 -1
  27. package/src/index.js +1 -1
  28. package/src/interfaces/cli.js +1 -1
  29. package/src/interfaces/terminal/__tests__/smoke/advancedFeatures.test.js +1 -1
  30. package/src/interfaces/terminal/__tests__/smoke/agentControl.test.js +1 -1
  31. package/src/interfaces/terminal/__tests__/smoke/agents.test.js +1 -1
  32. package/src/interfaces/terminal/__tests__/smoke/components.test.js +1 -1
  33. package/src/interfaces/terminal/__tests__/smoke/connection.test.js +1 -1
  34. package/src/interfaces/terminal/__tests__/smoke/enhancements.test.js +1 -1
  35. package/src/interfaces/terminal/__tests__/smoke/imports.test.js +1 -1
  36. package/src/interfaces/terminal/__tests__/smoke/messages.test.js +1 -1
  37. package/src/interfaces/terminal/__tests__/smoke/tools.test.js +1 -1
  38. package/src/interfaces/terminal/api/apiClient.js +1 -1
  39. package/src/interfaces/terminal/api/messageRouter.js +1 -1
  40. package/src/interfaces/terminal/api/session.js +1 -1
  41. package/src/interfaces/terminal/api/websocket.js +1 -1
  42. package/src/interfaces/terminal/components/AgentCreator.js +1 -1
  43. package/src/interfaces/terminal/components/AgentEditor.js +1 -1
  44. package/src/interfaces/terminal/components/AgentSwitcher.js +1 -1
  45. package/src/interfaces/terminal/components/ErrorBoundary.js +1 -1
  46. package/src/interfaces/terminal/components/ErrorPanel.js +1 -1
  47. package/src/interfaces/terminal/components/Header.js +1 -1
  48. package/src/interfaces/terminal/components/HelpPanel.js +1 -1
  49. package/src/interfaces/terminal/components/InputBox.js +1 -1
  50. package/src/interfaces/terminal/components/Layout.js +1 -1
  51. package/src/interfaces/terminal/components/LoadingSpinner.js +1 -1
  52. package/src/interfaces/terminal/components/MessageList.js +1 -1
  53. package/src/interfaces/terminal/components/MultilineTextInput.js +1 -1
  54. package/src/interfaces/terminal/components/SearchPanel.js +1 -1
  55. package/src/interfaces/terminal/components/SettingsPanel.js +1 -1
  56. package/src/interfaces/terminal/components/StatusBar.js +1 -1
  57. package/src/interfaces/terminal/components/TextInput.js +1 -1
  58. package/src/interfaces/terminal/config/agentEditorConstants.js +1 -1
  59. package/src/interfaces/terminal/config/constants.js +1 -1
  60. package/src/interfaces/terminal/index.js +1 -1
  61. package/src/interfaces/terminal/state/useAgentControl.js +1 -1
  62. package/src/interfaces/terminal/state/useAgents.js +1 -1
  63. package/src/interfaces/terminal/state/useConnection.js +1 -1
  64. package/src/interfaces/terminal/state/useMessages.js +1 -1
  65. package/src/interfaces/terminal/state/useTools.js +1 -1
  66. package/src/interfaces/terminal/utils/debugLogger.js +1 -1
  67. package/src/interfaces/terminal/utils/settingsStorage.js +1 -1
  68. package/src/interfaces/terminal/utils/theme.js +1 -1
  69. package/src/interfaces/webServer.js +1 -1
  70. package/src/modules/fileExplorer/controller.js +1 -1
  71. package/src/modules/fileExplorer/index.js +1 -1
  72. package/src/modules/fileExplorer/middleware.js +1 -1
  73. package/src/modules/fileExplorer/routes.js +1 -1
  74. package/src/services/aiService.js +1 -1
  75. package/src/services/apiKeyManager.js +1 -1
  76. package/src/services/benchmarkService.js +1 -1
  77. package/src/services/budgetService.js +1 -1
  78. package/src/services/contextInjectionService.js +1 -1
  79. package/src/services/conversationCompactionService.js +1 -1
  80. package/src/services/errorHandler.js +1 -1
  81. package/src/services/fileAttachmentService.js +1 -1
  82. package/src/services/modelRouterService.js +1 -1
  83. package/src/services/modelsService.js +1 -1
  84. package/src/services/qualityInspector.js +1 -1
  85. package/src/services/tokenCountingService.js +1 -1
  86. package/src/tools/agentCommunicationTool.js +1 -1
  87. package/src/tools/agentDelayTool.js +1 -1
  88. package/src/tools/asyncToolManager.js +1 -1
  89. package/src/tools/baseTool.js +1 -1
  90. package/src/tools/browserTool.js +1 -1
  91. package/src/tools/cloneDetectionTool.js +1 -1
  92. package/src/tools/dependencyResolverTool.js +1 -1
  93. package/src/tools/fileContentReplaceTool.js +1 -1
  94. package/src/tools/fileSystemTool.js +1 -1
  95. package/src/tools/fileTreeTool.js +1 -1
  96. package/src/tools/imageTool.js +1 -1
  97. package/src/tools/importAnalyzerTool.js +1 -1
  98. package/src/tools/jobDoneTool.js +1 -1
  99. package/src/tools/seekTool.js +1 -1
  100. package/src/tools/staticAnalysisTool.js +1 -1
  101. package/src/tools/taskManagerTool.js +1 -1
  102. package/src/tools/terminalTool.js +1 -1
  103. package/src/tools/webTool.js +1 -1
  104. package/src/types/agent.js +1 -1
  105. package/src/types/contextReference.js +1 -1
  106. package/src/types/conversation.js +1 -1
  107. package/src/types/toolCommand.js +1 -1
  108. package/src/utilities/attachmentValidator.js +1 -1
  109. package/src/utilities/configManager.js +1 -1
  110. package/src/utilities/constants.js +1 -1
  111. package/src/utilities/directoryAccessManager.js +1 -1
  112. package/src/utilities/fileProcessor.js +1 -1
  113. package/src/utilities/logger.js +1 -1
  114. package/src/utilities/tagParser.js +1 -1
  115. package/src/utilities/toolConstants.js +1 -1
  116. package/src/utilities/userDataDir.js +1 -0
  117. package/web-ui/build/index.html +2 -2
  118. package/web-ui/build/static/{index-C5X7qBNF.js → index-DXN850Y2.js} +69 -65
  119. package/web-ui/build/static/index-an-YRzUX.css +1 -0
  120. package/web-ui/build/static/index-g2UFuTwG.css +0 -1
@@ -1 +1 @@
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
+ const a0_0x2dbea4=a0_0x8ca0;(function(_0x30fb83,_0x8abe3a){const _0x2c2baf=a0_0x8ca0,_0x29522a=_0x30fb83();while(!![]){try{const _0x254da6=parseInt(_0x2c2baf(0xa1))/0x1*(parseInt(_0x2c2baf(0xcf))/0x2)+parseInt(_0x2c2baf(0xb7))/0x3+parseInt(_0x2c2baf(0xd0))/0x4+-parseInt(_0x2c2baf(0xaf))/0x5*(-parseInt(_0x2c2baf(0x90))/0x6)+-parseInt(_0x2c2baf(0xc0))/0x7+-parseInt(_0x2c2baf(0xb1))/0x8+-parseInt(_0x2c2baf(0xcc))/0x9;if(_0x254da6===_0x8abe3a)break;else _0x29522a['push'](_0x29522a['shift']());}catch(_0x5c6c21){_0x29522a['push'](_0x29522a['shift']());}}}(a0_0xd12e,0x4c7e1));import{describe,test,expect}from'@jest/globals';function a0_0xd12e(){const _0x3c5ca4=['q09ntuforfm','mtmXoti0mxvouNvprG','veLnsu5h','v2vIu29JA2v0twfUywDLCIbPBML0AwfSAxPLCYb3AxrOignVCNjLy3qGC3rHDgu','Bg94AwfbCgLlzxK','Dg9czq','u2vZC2LVBK1HBMfNzxiGAw5PDgLHBgL6zxmGD2L0AcbJB3jYzwn0ihn0yxrL','C3rHDgu','v2vIu29JA2v0twfUywDLCIbNzw5LCMf0zxmGDw5PCxvLihjLCxvLC3qGsurZ','u2vZC2LVBK1HBMfNzxiGy2XLyxiOksbYzxnLDhmGywXSihn0yxrL','vgvYBwLUywWGvuKGsw5MCMfZDhj1y3r1CMuGlsbfCNjVCIbiyw5KBgLUzW','reLtq09otKvdveve','sfruuf9usu1ft1vu','ntu5ndGWnvHWrfvjyG','CMvJB25Uzwn0qxr0zw1WDhm','twvZC2fNzvjVDxrLCIbTAwrKBgv3yxjLignHBIbIzsbHzgrLzcbHBMqGCMvTB3zLza','nfHAqNPpva','nZq4mZa4uMDbsg9d','AxndB25Uzwn0zwq','z2v0u2vZC2LVBKLK','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','twvZC2fNzvjVDxrLCIbTAwrKBgv3yxjLigHLBhbLCNmGy3jLyxrLihzHBgLKig1PzgrSzxDHCMu','z2v0uhjVAMvJDerPCG','u0LerujbuL9xsurusa','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','C2HVDwXKuMvJB25Uzwn0','mtq5nZuZneDOB0zNqq','uefhsu5bveLptG','DxnL','C2vZC2LVBKLK','tuvtu0fhrv9msvnux0HfsuDiva','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','DgvZDa','twvZC2fNzvjVDxrLCIb0AhjVD3mGB24GAw52ywXPzcbTAwrKBgv3yxjL','revgqvvmvf9it1nu','tKvuv09ssW','BwvZC2fNzvf1zxvL','Cg9YDa','Dg9iyxzLuhjVCgvYDhK','CMvNAxn0zxjiyw5KBgvY','Dg9fCxvHBa','AxnwywXPza','quDftLrFtu9erq','mtu2ndu0uMPSC2rO','z2vUzxjHDgvszxf1zxn0swq','Dg9uAhjVDW','ywXSB3DLzc10ExbL','DgvZDc1OB3n0','lI4VlI4VyxbPl3nLC3nPB24UANm','twvZC2fNzvjVDxrLCIb0AhjVD3mGB24GAw52ywXPzcbOyw5KBgvY','z2v0u2vZC2LVBKLUzM8','zNvUy3rPB24','v0vcu09ds0vux1jfq09otKvdvf9eruXbwq','z2v0u3rHDhm','Bg9JywXOB3n0','Dw5YzwDPC3rLCKHHBMrSzxi','Dg9nyxrJAa','nxvkCLrYuq','BM90lweTzNvUy3rPB24','mtyYndmWnhfqDvLSvq','DgvZDc1TzxnZywDL','AgfZsgfUzgXLCG','vuLFreLnru5tsu9ouW','BNvTyMvY','ChjVAMvJDerPCG','mtCZmdy1nvvSCNvQBG','tuvtu0fhrv9brerfra','u2vZC2LVBK1HBMfNzxiGAgvSCgvYig1LDgHVzhmGD29YAW','A2v5','Dg9czurLzMLUzwq','BgvUz3rO','DgvZDc1RzxK','yMfZzvvYBa'];a0_0xd12e=function(){return _0x3c5ca4;};return a0_0xd12e();}import{fileURLToPath}from'url';import{dirname,join}from'path';const __filename=fileURLToPath(import.meta.url),__dirname=dirname(__filename);function a0_0x8ca0(_0x3b4588,_0x59f666){_0x3b4588=_0x3b4588-0x8f;const _0xd12ed5=a0_0xd12e();let _0x8ca0aa=_0xd12ed5[_0x3b4588];if(a0_0x8ca0['ZPdoSA']===undefined){var _0x121c4b=function(_0x412d88){const _0x403854='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xf63be5='',_0x5d5325='';for(let _0x5670d1=0x0,_0x3bebaf,_0x5c306d,_0x44c31e=0x0;_0x5c306d=_0x412d88['charAt'](_0x44c31e++);~_0x5c306d&&(_0x3bebaf=_0x5670d1%0x4?_0x3bebaf*0x40+_0x5c306d:_0x5c306d,_0x5670d1++%0x4)?_0xf63be5+=String['fromCharCode'](0xff&_0x3bebaf>>(-0x2*_0x5670d1&0x6)):0x0){_0x5c306d=_0x403854['indexOf'](_0x5c306d);}for(let _0xa73c2b=0x0,_0x411c8d=_0xf63be5['length'];_0xa73c2b<_0x411c8d;_0xa73c2b++){_0x5d5325+='%'+('00'+_0xf63be5['charCodeAt'](_0xa73c2b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5d5325);};a0_0x8ca0['BLtKVn']=_0x121c4b,a0_0x8ca0['lmYBWB']={},a0_0x8ca0['ZPdoSA']=!![];}const _0x13f14c=_0xd12ed5[0x0],_0x1d3e4e=_0x3b4588+_0x13f14c,_0x5eff33=a0_0x8ca0['lmYBWB'][_0x1d3e4e];return!_0x5eff33?(_0x8ca0aa=a0_0x8ca0['BLtKVn'](_0x8ca0aa),a0_0x8ca0['lmYBWB'][_0x1d3e4e]=_0x8ca0aa):_0x8ca0aa=_0x5eff33,_0x8ca0aa;}describe('Terminal\x20UI\x20Infrastructure\x20-\x20Imports',()=>{test('constants module exports all required constants',async()=>{const _0x22ab59=a0_0x8ca0,_0xf63be5=await import('../../config/constants.js');expect(_0xf63be5['UI_DIMENSIONS'])['toBeDefined'](),expect(_0xf63be5['MESSAGE_CONFIG'])[_0x22ab59(0xbb)](),expect(_0xf63be5[_0x22ab59(0x91)])['toBeDefined'](),expect(_0xf63be5[_0x22ab59(0xc1)])['toBeDefined'](),expect(_0xf63be5['NETWORK'])['toBeDefined'](),expect(_0xf63be5['CONNECTION_STATE'])['toBeDefined'](),expect(_0xf63be5[_0x22ab59(0xa0)])[_0x22ab59(0xbb)](),expect(_0xf63be5['WS_MESSAGE_TYPE'])[_0x22ab59(0xbb)](),expect(_0xf63be5['API_ENDPOINTS'])[_0x22ab59(0xbb)](),expect(_0xf63be5[_0x22ab59(0xbf)])[_0x22ab59(0xbb)](),expect(_0xf63be5[_0x22ab59(0x99)][_0x22ab59(0x98)])[_0x22ab59(0xc4)]('localhost'),expect(_0xf63be5[_0x22ab59(0x99)]['DEFAULT_PORT'])['toBe'](0x1f90),expect(_0xf63be5['CONNECTION_STATE']['DISCONNECTED'])['toBe']('disconnected'),expect(_0xf63be5['CONNECTION_STATE']['CONNECTED'])[_0x22ab59(0xc4)]('connected');}),test('WebSocketManager class can be imported',async()=>{const _0x2ff192=a0_0x8ca0,{WebSocketManager:_0x5d5325}=await import('../../api/websocket.js');expect(_0x5d5325)[_0x2ff192(0xbb)](),expect(typeof _0x5d5325)[_0x2ff192(0xc4)](_0x2ff192(0xa9));const _0x5670d1=new _0x5d5325(_0x2ff192(0xac),0x1f90);expect(_0x5670d1)['toBeDefined'](),expect(_0x5670d1['host'])[_0x2ff192(0xc4)]('localhost'),expect(_0x5670d1[_0x2ff192(0x9b)])[_0x2ff192(0xc4)](0x1f90),expect(_0x5670d1['url'])['toBe']('ws://localhost:8080');}),test('SessionManager class can be imported',async()=>{const _0x55ff3c=a0_0x8ca0,{SessionManager:_0x3bebaf}=await import(_0x55ff3c(0xa6));expect(_0x3bebaf)[_0x55ff3c(0xbb)](),expect(typeof _0x3bebaf)[_0x55ff3c(0xc4)](_0x55ff3c(0xa9));const _0x5c306d=new _0x3bebaf('localhost',0x1f90);expect(_0x5c306d)[_0x55ff3c(0xbb)](),expect(_0x5c306d['host'])['toBe']('localhost'),expect(_0x5c306d[_0x55ff3c(0x9b)])[_0x55ff3c(0xc4)](0x1f90),expect(_0x5c306d[_0x55ff3c(0xbe)])[_0x55ff3c(0xc4)]('http://localhost:8080');}),test('MessageRouter class can be imported',async()=>{const _0x285116=a0_0x8ca0,{MessageRouter:_0x44c31e}=await import(_0x285116(0xd3)),{WebSocketManager:_0xa73c2b}=await import('../../api/websocket.js');expect(_0x44c31e)[_0x285116(0xbb)](),expect(typeof _0x44c31e)[_0x285116(0xc4)]('function');const _0x411c8d=new _0xa73c2b('localhost',0x1f90),_0x2668b4=new _0x44c31e(_0x411c8d);expect(_0x2668b4)['toBeDefined'](),expect(_0x2668b4['ws'])['toBe'](_0x411c8d);}),test('MessageRouter middleware helpers can be imported',async()=>{const _0x12f4b4=a0_0x8ca0,{loggingMiddleware:_0x21b44d,filterMiddleware:_0x1df31f,transformMiddleware:_0x15421e,timestampMiddleware:_0x384b40,validationMiddleware:_0x2af480}=await import('../../api/messageRouter.js');expect(typeof _0x21b44d)['toBe']('function'),expect(typeof _0x1df31f)[_0x12f4b4(0xc4)](_0x12f4b4(0xa9)),expect(typeof _0x15421e)['toBe']('function'),expect(typeof _0x384b40)['toBe']('function'),expect(typeof _0x2af480)[_0x12f4b4(0xc4)]('function');}),test('useConnection hook can be imported',async()=>{const _0x42b7a6=a0_0x8ca0,{useConnection:_0x1742c8,useConnectionStatus:_0x523ba1}=await import('../../state/useConnection.js');expect(_0x1742c8)['toBeDefined'](),expect(typeof _0x1742c8)['toBe'](_0x42b7a6(0xa9)),expect(_0x523ba1)['toBeDefined'](),expect(typeof _0x523ba1)['toBe'](_0x42b7a6(0xa9));});}),describe('Terminal\x20UI\x20Infrastructure\x20-\x20Basic\x20Functionality',()=>{const _0x47f417=a0_0x8ca0;test(_0x47f417(0xc2),async()=>{const _0x4a2bed=_0x47f417,{WebSocketManager:_0x5f4b18}=await import('../../api/websocket.js'),{CONNECTION_STATE:_0x6003ac}=await import(_0x4a2bed(0x95)),_0xd5c59e=new _0x5f4b18(_0x4a2bed(0xa5),0x2382);expect(_0xd5c59e['state'])['toBe'](_0x6003ac[_0x4a2bed(0xca)]),expect(_0xd5c59e['sessionId'])['toBe'](null),expect(_0xd5c59e[_0x4a2bed(0x9a)])[_0x4a2bed(0x9e)]([]),expect(_0xd5c59e['reconnectAttempts'])['toBe'](0x0),expect(_0xd5c59e[_0x4a2bed(0x8f)])['toBe'](!![]);}),test(_0x47f417(0xc5),async()=>{const _0x468561=_0x47f417,{SessionManager:_0x2053de}=await import(_0x468561(0xa6)),_0x19afdb=new _0x2053de('test-host',0x2382);expect(_0x19afdb[_0x468561(0x93)])[_0x468561(0xc4)](null),expect(_0x19afdb['projectDir'])['toBe'](null),expect(_0x19afdb[_0x468561(0xc3)])['toBe'](null),expect(_0x19afdb['vendorKeys'])[_0x468561(0x9e)]({}),expect(_0x19afdb['isValid']())['toBe'](![]);}),test('MessageRouter initializes with default handlers',async()=>{const _0x35ffb3=_0x47f417,{MessageRouter:_0x50f671}=await import(_0x35ffb3(0xd3)),{WebSocketManager:_0x4a9588}=await import(_0x35ffb3(0xd7)),{WS_MESSAGE_TYPE:_0x105c6e}=await import(_0x35ffb3(0x95)),_0x2ae882=new _0x4a9588(_0x35ffb3(0xac),0x1f90),_0xa57b2b=new _0x50f671(_0x2ae882);expect(_0xa57b2b[_0x35ffb3(0xb3)](_0x105c6e[_0x35ffb3(0xb8)]))['toBe'](!![]),expect(_0xa57b2b[_0x35ffb3(0xb3)](_0x105c6e['AGENT_MODE_CHANGED']))[_0x35ffb3(0xc4)](!![]),expect(_0xa57b2b['hasHandler'](_0x105c6e['EXECUTION_STOPPED']))['toBe'](!![]),expect(_0xa57b2b['hasHandler'](_0x105c6e['COMPACTION_EVENT']))[_0x35ffb3(0xc4)](!![]),expect(_0xa57b2b['hasHandler'](_0x105c6e['IMAGE_RESULT']))['toBe'](!![]);}),test(_0x47f417(0xce),async()=>{const _0x3abf92=_0x47f417,{MessageRouter:_0x15282e}=await import(_0x3abf92(0xd3)),{WebSocketManager:_0x53e568}=await import(_0x3abf92(0xd7)),_0x2cfdd7=new _0x53e568('localhost',0x1f90),_0x5f57a5=new _0x15282e(_0x2cfdd7),_0x1a3261=_0x26c448=>_0x26c448;expect(_0x5f57a5['middleware']['length'])['toBeGreaterThanOrEqual'](0x0),_0x5f57a5[_0x3abf92(0x92)](_0x1a3261);const _0x9036fd=_0x5f57a5['middleware'][_0x3abf92(0xbc)];expect(_0x9036fd)['toBeGreaterThan'](0x0),_0x5f57a5['removeMiddleware'](_0x1a3261),expect(_0x5f57a5['middleware'][_0x3abf92(0xbc)])[_0x3abf92(0xc4)](_0x9036fd-0x1);}),test(_0x47f417(0xb9),async()=>{const _0x3a7aac=_0x47f417,{SessionManager:_0x3305c2}=await import(_0x3a7aac(0xa6)),_0x5e9516=new _0x3305c2(_0x3a7aac(0xac),0x1f90);expect(_0x5e9516[_0x3a7aac(0xd2)]())[_0x3a7aac(0xc4)](null),expect(_0x5e9516[_0x3a7aac(0xd5)]())[_0x3a7aac(0xc4)](null),expect(_0x5e9516['isValid']())['toBe'](![]);const _0x5ed445=_0x5e9516[_0x3a7aac(0xa8)]();expect(_0x5ed445)['toHaveProperty']('sessionId'),expect(_0x5ed445)['toHaveProperty']('projectDir'),expect(_0x5ed445)[_0x3a7aac(0x9c)]('hasLoxiaKey'),expect(_0x5ed445)[_0x3a7aac(0x9c)]('vendorKeysCount');}),test('WebSocketManager\x20helper\x20methods\x20work',async()=>{const _0x209c7a=_0x47f417,{WebSocketManager:_0x24c86f}=await import(_0x209c7a(0xd7)),{CONNECTION_STATE:_0x421cc0}=await import('../../config/constants.js'),_0x296b46=new _0x24c86f(_0x209c7a(0xac),0x1f90);expect(_0x296b46['getState']())['toBe'](_0x421cc0[_0x209c7a(0xca)]),expect(_0x296b46[_0x209c7a(0xd1)]())[_0x209c7a(0xc4)](![]),expect(_0x296b46[_0x209c7a(0xd2)]())[_0x209c7a(0xc4)](null);const _0x5698ae=_0x296b46[_0x209c7a(0xab)]();expect(_0x5698ae)['toHaveProperty'](_0x209c7a(0xc6)),expect(_0x5698ae)[_0x209c7a(0x9c)](_0x209c7a(0x93)),expect(_0x5698ae)['toHaveProperty'](_0x209c7a(0xcd)),expect(_0x5698ae)['toHaveProperty']('queuedMessages'),expect(_0x5698ae)['toHaveProperty']('pendingRequests');}),test('MessageRouter\x20can\x20register\x20and\x20unregister\x20handlers',async()=>{const _0xd1d667=_0x47f417,{MessageRouter:_0x1d45c1}=await import(_0xd1d667(0xd3)),{WebSocketManager:_0xd91313}=await import('../../api/websocket.js'),_0x549e8c=new _0xd91313(_0xd1d667(0xac),0x1f90),_0x5aaf4a=new _0x1d45c1(_0x549e8c),_0x590954=()=>{};expect(_0x5aaf4a['hasHandler']('test-message'))[_0xd1d667(0xc4)](![]),_0x5aaf4a[_0xd1d667(0x9d)](_0xd1d667(0xb2),_0x590954),expect(_0x5aaf4a['hasHandler'](_0xd1d667(0xb2)))[_0xd1d667(0xc4)](!![]),_0x5aaf4a[_0xd1d667(0xad)](_0xd1d667(0xb2)),expect(_0x5aaf4a[_0xd1d667(0xb3)]('test-message'))[_0xd1d667(0xc4)](![]);}),test(_0x47f417(0xd4),async()=>{const _0x2eb030=_0x47f417,{loggingMiddleware:_0xf82c02,timestampMiddleware:_0x26fe48,filterMiddleware:_0x15ba5e}=await import('../../api/messageRouter.js'),_0x21b140=_0xf82c02();expect(typeof _0x21b140)['toBe']('function');const _0x46dd2e=_0x26fe48();expect(typeof _0x46dd2e)['toBe']('function');const _0x1a644a={'type':'test'},_0x4ed7c6=_0x46dd2e(_0x1a644a);expect(_0x4ed7c6)['toHaveProperty']('receivedAt'),expect(_0x4ed7c6['type'])[_0x2eb030(0xc4)]('test');const _0x102509=_0x15ba5e([_0x2eb030(0xa4)]);expect(typeof _0x102509)['toBe']('function'),expect(_0x102509({'type':'allowed-type'}))['toBeTruthy'](),expect(_0x102509({'type':'blocked-type'}))[_0x2eb030(0xc4)](null);}),test('Constants\x20have\x20no\x20magic\x20numbers',async()=>{const _0x1e4103=_0x47f417,_0x3a7bbe=await import('../../config/constants.js');expect(typeof _0x3a7bbe[_0x1e4103(0xc1)][_0x1e4103(0xaa)])[_0x1e4103(0xc4)](_0x1e4103(0xb5)),expect(typeof _0x3a7bbe['TIMING']['WEBSOCKET_PING_INTERVAL'])[_0x1e4103(0xc4)]('number'),expect(typeof _0x3a7bbe['NETWORK']['DEFAULT_PORT'])['toBe']('number'),expect(typeof _0x3a7bbe['NETWORK']['MAX_RETRIES'])['toBe'](_0x1e4103(0xb5)),expect(typeof _0x3a7bbe['NETWORK'][_0x1e4103(0xcb)])['toBe'](_0x1e4103(0xb5)),expect(typeof _0x3a7bbe[_0x1e4103(0xb4)][_0x1e4103(0x94)])[_0x1e4103(0xc4)](_0x1e4103(0xb5)),expect(typeof _0x3a7bbe['UI_DIMENSIONS'][_0x1e4103(0xd6)])['toBe']('number');});}),describe(a0_0x2dbea4(0xc9),()=>{const _0x47d954=a0_0x2dbea4;test(_0x47d954(0xa7),async()=>{const _0x14f11b=_0x47d954,{MessageRouter:_0x12be9a}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x46de22}=await import(_0x14f11b(0xd7)),_0x410fb9=new _0x46de22(_0x14f11b(0xac),0x1f90),_0x433f86=new _0x12be9a(_0x410fb9);expect(()=>{const _0x366c7d=_0x14f11b;_0x433f86[_0x366c7d(0x9d)](_0x366c7d(0x96),_0x366c7d(0xb0));})['toThrow']('Handler\x20must\x20be\x20a\x20function');}),test(_0x47d954(0x97),async()=>{const _0x505325=_0x47d954,{MessageRouter:_0x5d9715}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x430cb0}=await import(_0x505325(0xd7)),_0x28a6e5=new _0x430cb0('localhost',0x1f90),_0x2f368f=new _0x5d9715(_0x28a6e5);expect(()=>{const _0x350d3d=_0x505325;_0x2f368f[_0x350d3d(0x92)](_0x350d3d(0xb0));})[_0x505325(0xa3)]('Middleware\x20must\x20be\x20a\x20function');}),test(_0x47d954(0xc8),async()=>{const _0x402b85=_0x47d954,{SessionManager:_0x5ba4f9}=await import(_0x402b85(0xa6)),_0x3dcbf8=new _0x5ba4f9(_0x402b85(0xac),0x1f90);_0x3dcbf8['sessionId']='test-123',_0x3dcbf8['projectDir']='/test/dir',_0x3dcbf8[_0x402b85(0xc3)]=_0x402b85(0xbd),_0x3dcbf8['vendorKeys']={'openai':_0x402b85(0xba)},expect(_0x3dcbf8['isValid']())['toBe'](!![]),_0x3dcbf8['clear'](),expect(_0x3dcbf8['sessionId'])['toBe'](null),expect(_0x3dcbf8[_0x402b85(0xb6)])[_0x402b85(0xc4)](null),expect(_0x3dcbf8['loxiaApiKey'])['toBe'](null),expect(_0x3dcbf8['vendorKeys'])[_0x402b85(0x9e)]({}),expect(_0x3dcbf8[_0x402b85(0x9f)]())['toBe'](![]);}),test(_0x47d954(0xc7),async()=>{const _0x284b6e=_0x47d954,{WebSocketManager:_0x14307c}=await import(_0x284b6e(0xd7)),_0x50c3ba=new _0x14307c('localhost',0x1f90),_0x1bd68b=_0x50c3ba[_0x284b6e(0xa2)](),_0x167a77=_0x50c3ba[_0x284b6e(0xa2)](),_0x10ea16=_0x50c3ba[_0x284b6e(0xa2)]();expect(_0x1bd68b)['not'][_0x284b6e(0xc4)](_0x167a77),expect(_0x167a77)['not']['toBe'](_0x10ea16),expect(_0x1bd68b)['not'][_0x284b6e(0xc4)](_0x10ea16),expect(_0x1bd68b)['toMatch'](/^req-\d+-\d+$/),expect(_0x167a77)['toMatch'](/^req-\d+-\d+$/),expect(_0x10ea16)[_0x284b6e(0xae)](/^req-\d+-\d+$/);});});
@@ -1 +1 @@
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
+ const a0_0x35d151=a0_0x4879;function a0_0x5c88(){const _0x5ad14e=['qvntsvnuqu5u','tuvtu0fhrv9dt05gsuCGy29UC3rHBNrZigfYzsbKzwzPBMvK','tufyx1bbr0vFu0LArq','t1jdsevtvfjbve9s','zNvUy3rPB24','BgvUz3rO','twvZC2fNzvjVDxrLCIbOyxmGBwvZC2fNzsbLDMvUDcbOyw5KBgvYCYbYzwDPC3rLCMvK','zxHLy3v0Aw9Ux3n0B3bWzwq','quDftLrFuKvtue9ou0u','Dg9mB3DLCKnHC2u','twvZC2fNzsbbueKGzw5KCg9PBNrZigzVBgXVDYbsrvnuzNvSihbHDhrLCM4','uefhsu5bveLptIbJB25ZDgfUDhmGyxjLigrLzMLUzwq','DxnLCG','tuvtu0fhrv9uwvbfignVBNn0yw50CYbHCMuGzgvMAw5Lza','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','uefhrv9tsvPf','DxnLtwvZC2fNzxmGAg9VAYbPBNrLz3jHDgvZihDPDgGGu2vZC2LVBIbHBMqGtwvZC2fNzvjVDxrLCG','yxnZAxn0yw50','twvZC2fNzsbnyw5Hz2vTzw50ic0Gq29UC3rHBNrZ','vvnfuG','tufyx01fu1nbr0vFtevor1ri','quDftLrFtu9erv9dsefor0ve','mtyXotmYmtbYzgXWq3O','DxnLCI1TzxnZywDL','Dg9czq','ndGYnJG5mMfVDNvrBq','C3LZDgvTlw5VDgLMAwnHDgLVBG','twvZC2fNzsbnyw5Hz2vTzw50ic0Gsw1WB3j0CW','vvnfuL9nrvntquDf','mZnOsKLAte0','Dg9czuXLC3nuAgfUt3jfCxvHBa','mJK0mJG3y1zWCxPi','Dg9czurLzMLUzwq','twvZC2fNzsbnyw5Hz2vTzw50ic0GugfNAw5HDgLVBIbmB2DPyW','twvZC2fNzvjVDxrLCG','Dg9nyxrJAa','mNfgCvDtvq','mZb4u0frq2u','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','Bg9JywXOB3n0','tuvtu0fhrv9brerfra','t3jJAgvZDhjHDg9YigvUzhbVAw50ignHBIbIzsb1C2vKigzVCIbTzxnZywDLig9WzxjHDgLVBNm','uefhsu5bveLptIbZDxbWB3j0CYbVzMzZzxqTyMfZzwqGCgfNAw5HDgLVBG','ndm5mdq1y093t2Lz','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','tuvtu0fhrv9st0Xf','lI4VlI4VyxbPl3nLC3nPB24UANm','BNvTyMvY','u1Ltvevn','Dg9czuDYzwf0zxjuAgfU','twvZC2fNzsbnyw5Hz2vTzw50ic0GqvbjievUzhbVAw50CYbwywXPzgf0Aw9U','tuvtu0fhrv9dt05gsuC','l2fWAs9VCMnOzxn0CMf0B3i','mta1ntq5ndHkyMHbCMK','zgvMyxvSDa','tuvtu0fhrv9uwvbf','mtiWotyZr0PmveTU','C3LZDgvT','tufyx01fu1nbr0vtx0rju1bmqvK','u1Ltvevnx05pveLgsunbveLptG','BwvZC2fNzv9HzgrLza','mtmYotC0nwfUtM1nwa','mJy0t01Rq2Pm','lI4VlI4VC3rHDguVDxnLtwvZC2fNzxmUANm'];a0_0x5c88=function(){return _0x5ad14e;};return a0_0x5c88();}(function(_0x2b7519,_0x404e09){const _0x2e52bd=a0_0x4879,_0x1e6dab=_0x2b7519();while(!![]){try{const _0x3b4045=parseInt(_0x2e52bd(0x1d8))/0x1+-parseInt(_0x2e52bd(0x1d1))/0x2*(-parseInt(_0x2e52bd(0x1e5))/0x3)+parseInt(_0x2e52bd(0x1c6))/0x4+-parseInt(_0x2e52bd(0x1ea))/0x5*(-parseInt(_0x2e52bd(0x1d2))/0x6)+-parseInt(_0x2e52bd(0x1cc))/0x7*(-parseInt(_0x2e52bd(0x1eb))/0x8)+parseInt(_0x2e52bd(0x1e2))/0x9+-parseInt(_0x2e52bd(0x1c3))/0xa*(parseInt(_0x2e52bd(0x1ca))/0xb);if(_0x3b4045===_0x404e09)break;else _0x1e6dab['push'](_0x1e6dab['shift']());}catch(_0x372282){_0x1e6dab['push'](_0x1e6dab['shift']());}}}(a0_0x5c88,0xaf4ac));import{describe,test,expect}from'@jest/globals';function a0_0x4879(_0x14ea5b,_0x15bed9){_0x14ea5b=_0x14ea5b-0x1ad;const _0x5c88fe=a0_0x5c88();let _0x4879a4=_0x5c88fe[_0x14ea5b];if(a0_0x4879['dLlhBc']===undefined){var _0x5316c9=function(_0x406e67){const _0x4ea551='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x38995c='',_0x4a90a8='';for(let _0x31d02e=0x0,_0x32868e,_0x2979ff,_0x5c05ae=0x0;_0x2979ff=_0x406e67['charAt'](_0x5c05ae++);~_0x2979ff&&(_0x32868e=_0x31d02e%0x4?_0x32868e*0x40+_0x2979ff:_0x2979ff,_0x31d02e++%0x4)?_0x38995c+=String['fromCharCode'](0xff&_0x32868e>>(-0x2*_0x31d02e&0x6)):0x0){_0x2979ff=_0x4ea551['indexOf'](_0x2979ff);}for(let _0x337acd=0x0,_0x8ee0c9=_0x38995c['length'];_0x337acd<_0x8ee0c9;_0x337acd++){_0x4a90a8+='%'+('00'+_0x38995c['charCodeAt'](_0x337acd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a90a8);};a0_0x4879['gmTXhf']=_0x5316c9,a0_0x4879['imxVXl']={},a0_0x4879['dLlhBc']=!![];}const _0x34febc=_0x5c88fe[0x0],_0x304134=_0x14ea5b+_0x34febc,_0x413d71=a0_0x4879['imxVXl'][_0x304134];return!_0x413d71?(_0x4879a4=a0_0x4879['gmTXhf'](_0x4879a4),a0_0x4879['imxVXl'][_0x304134]=_0x4879a4):_0x4879a4=_0x413d71,_0x4879a4;}describe(a0_0x35d151(0x1c8),()=>{test('useMessages hook can be imported',async()=>{const _0x5a691d=a0_0x4879,{useMessages:_0x38995c}=await import('../../state/useMessages.js');expect(_0x38995c)['toBeDefined'](),expect(typeof _0x38995c)['toBe'](_0x5a691d(0x1b1));}),test('useMessages is default export',async()=>{const _0x40c808=a0_0x4879,module=await import('../../state/useMessages.js');expect(module[_0x40c808(0x1e3)])['toBeDefined'](),expect(typeof module[_0x40c808(0x1e3)])[_0x40c808(0x1c5)](_0x40c808(0x1b1)),expect(module[_0x40c808(0x1e3)])[_0x40c808(0x1c5)](module['useMessages']);}),test('useMessageCount helper hook can be imported',async()=>{const _0x153921=a0_0x4879,{useMessageCount:_0x4a90a8}=await import('../../state/useMessages.js');expect(_0x4a90a8)['toBeDefined'](),expect(typeof _0x4a90a8)[_0x153921(0x1c5)]('function');});}),describe(a0_0x35d151(0x1bf),()=>{const _0x5e54ed=a0_0x35d151;test('MESSAGE_ROLE\x20constants\x20are\x20defined',async()=>{const _0x25bf13=a0_0x4879,{MESSAGE_ROLE:_0x31d02e}=await import(_0x25bf13(0x1d3));expect(_0x31d02e)['toBeDefined'](),expect(_0x31d02e['USER'])[_0x25bf13(0x1c5)](_0x25bf13(0x1b9)),expect(_0x31d02e['ASSISTANT'])[_0x25bf13(0x1c5)](_0x25bf13(0x1be)),expect(_0x31d02e['SYSTEM'])[_0x25bf13(0x1c5)](_0x25bf13(0x1e6));}),test(_0x5e54ed(0x1ba),async()=>{const _0x2867ee=_0x5e54ed,{MESSAGE_TYPE:_0x32868e}=await import(_0x2867ee(0x1d3));expect(_0x32868e)['toBeDefined'](),expect(_0x32868e[_0x2867ee(0x1c9)])['toBe'](_0x2867ee(0x1c4)),expect(_0x32868e[_0x2867ee(0x1b5)])[_0x2867ee(0x1c5)]('agent-response'),expect(_0x32868e[_0x2867ee(0x1e8)])['toBe'](_0x2867ee(0x1c7));}),test(_0x5e54ed(0x1ae),async()=>{const _0x4e568b=_0x5e54ed,{MESSAGE_CONFIG:_0x2979ff}=await import(_0x4e568b(0x1d3));expect(_0x2979ff)[_0x4e568b(0x1cd)](),expect(_0x2979ff['MAX_MESSAGE_LENGTH'])['toBeDefined'](),expect(_0x2979ff[_0x4e568b(0x1e7)])[_0x4e568b(0x1cd)](),expect(typeof _0x2979ff[_0x4e568b(0x1c1)])[_0x4e568b(0x1c5)](_0x4e568b(0x1dc)),expect(typeof _0x2979ff['MAX_MESSAGES_DISPLAY'])[_0x4e568b(0x1c5)]('number');}),test(_0x5e54ed(0x1b8),async()=>{const _0x2790ef=_0x5e54ed,{PAGINATION:_0x5c05ae}=await import(_0x2790ef(0x1d3));expect(_0x5c05ae)[_0x2790ef(0x1cd)](),expect(_0x5c05ae['PAGE_SIZE'])['toBeDefined'](),expect(_0x5c05ae[_0x2790ef(0x1af)])[_0x2790ef(0x1cd)](),expect(typeof _0x5c05ae['PAGE_SIZE'])[_0x2790ef(0x1c5)](_0x2790ef(0x1dc)),expect(typeof _0x5c05ae[_0x2790ef(0x1af)])[_0x2790ef(0x1c5)](_0x2790ef(0x1dc));}),test('WS_MESSAGE_TYPE\x20includes\x20message\x20events',async()=>{const _0x419bfd=_0x5e54ed,{WS_MESSAGE_TYPE:_0x337acd}=await import('../../config/constants.js');expect(_0x337acd)['toBeDefined'](),expect(_0x337acd[_0x419bfd(0x1d5)])[_0x419bfd(0x1c5)](_0x419bfd(0x1e9)),expect(_0x337acd[_0x419bfd(0x1c2)])['toBe']('agent_mode_changed'),expect(_0x337acd['EXECUTION_STOPPED'])[_0x419bfd(0x1c5)](_0x419bfd(0x1b4));});}),describe('Message\x20Management\x20-\x20Integration',()=>{const _0x322149=a0_0x35d151;test(_0x322149(0x1bd),async()=>{const _0x3a01bd=_0x322149,{useMessages:_0x8ee0c9}=await import('../../state/useMessages.js'),{SessionManager:_0x3f99ce}=await import('../../api/session.js'),{MessageRouter:_0x2f76b0}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x273eb3}=await import('../../api/websocket.js'),_0x5dcce0=new _0x3f99ce('localhost',0x1f90),_0xc175d3=new _0x273eb3('localhost',0x1f90),_0x31e502=new _0x2f76b0(_0xc175d3);expect(_0x5dcce0)['toBeDefined'](),expect(_0x31e502)[_0x3a01bd(0x1cd)](),expect(typeof _0x8ee0c9)[_0x3a01bd(0x1c5)](_0x3a01bd(0x1b1));}),test('Full message management stack can be imported together',async()=>{const _0x151751=_0x322149,[_0x2ae9eb,_0x18c95c,_0x3eb0f2,_0x231424,_0x216c9c]=await Promise['all']([import(_0x151751(0x1d3)),import(_0x151751(0x1db)),import(_0x151751(0x1bb)),import(_0x151751(0x1d9)),import('../../state/useMessages.js')]);expect(_0x2ae9eb[_0x151751(0x1da)])['toBeDefined'](),expect(_0x2ae9eb[_0x151751(0x1e4)])[_0x151751(0x1cd)](),expect(_0x2ae9eb[_0x151751(0x1e0)])['toBeDefined'](),expect(_0x18c95c['SessionManager'])[_0x151751(0x1cd)](),expect(_0x3eb0f2['WebSocketManager'])[_0x151751(0x1cd)](),expect(_0x231424[_0x151751(0x1cf)])['toBeDefined'](),expect(_0x216c9c['useMessages'])['toBeDefined']();});}),describe(a0_0x35d151(0x1df),()=>{const _0x4cf324=a0_0x35d151;test(_0x4cf324(0x1d6),async()=>{const _0x3e6067=_0x4cf324,{API_ENDPOINTS:_0x48a856}=await import(_0x3e6067(0x1d3));expect(_0x48a856[_0x3e6067(0x1b0)])[_0x3e6067(0x1cd)](),expect(_0x48a856[_0x3e6067(0x1b0)])['toBe'](_0x3e6067(0x1e1));}),test(_0x4cf324(0x1b7),async()=>{const _0x7e835=_0x4cf324,{API_ENDPOINTS:_0x482444}=await import('../../config/constants.js');expect(_0x482444[_0x7e835(0x1b0)])[_0x7e835(0x1d0)](/^\/api\//);});}),describe('Message\x20Management\x20-\x20Hook\x20Interface\x20Verification',()=>{test('useMessages\x20returns\x20expected\x20interface\x20shape',async()=>{const _0x5bfea8=a0_0x4879,{useMessages:_0x5292ce}=await import(_0x5bfea8(0x1ec));expect(_0x5292ce[_0x5bfea8(0x1b2)])[_0x5bfea8(0x1c5)](0x3);}),test('useMessageCount\x20returns\x20expected\x20interface\x20shape',async()=>{const _0x5692e3=a0_0x4879,{useMessageCount:_0x417b3d}=await import('../../state/useMessages.js');expect(_0x417b3d[_0x5692e3(0x1b2)])[_0x5692e3(0x1c5)](0x1);});}),describe('Message\x20Management\x20-\x20Constants\x20Validation',()=>{test('MESSAGE_CONFIG has sensible defaults',async()=>{const _0x38ae50=a0_0x4879,{MESSAGE_CONFIG:_0x219510}=await import(_0x38ae50(0x1d3));expect(_0x219510['MAX_MESSAGE_LENGTH'])['toBeGreaterThan'](0x0),expect(_0x219510['MAX_MESSAGE_LENGTH'])[_0x38ae50(0x1cb)](0x186a0),expect(_0x219510[_0x38ae50(0x1e7)])[_0x38ae50(0x1de)](0x0),expect(_0x219510['MAX_MESSAGES_DISPLAY'])['toBeLessThanOrEqual'](0x2710);}),test('PAGINATION has sensible defaults',async()=>{const _0x2c5bb6=a0_0x4879,{PAGINATION:_0x1a8b73}=await import('../../config/constants.js');expect(_0x1a8b73['PAGE_SIZE'])[_0x2c5bb6(0x1de)](0x0),expect(_0x1a8b73['PAGE_SIZE'])['toBeLessThanOrEqual'](0x3e8),expect(_0x1a8b73[_0x2c5bb6(0x1af)])['toBeGreaterThanOrEqual'](_0x1a8b73['PAGE_SIZE']);}),test('MESSAGE_ROLE\x20values\x20are\x20lowercase',async()=>{const _0x4a381e=a0_0x4879,{MESSAGE_ROLE:_0x32000e}=await import(_0x4a381e(0x1d3));expect(_0x32000e['USER'])['toBe'](_0x32000e[_0x4a381e(0x1c0)][_0x4a381e(0x1b6)]()),expect(_0x32000e[_0x4a381e(0x1ad)])['toBe'](_0x32000e['ASSISTANT'][_0x4a381e(0x1b6)]()),expect(_0x32000e['SYSTEM'])[_0x4a381e(0x1c5)](_0x32000e[_0x4a381e(0x1dd)]['toLowerCase']());});}),describe('Message\x20Management\x20-\x20WebSocket\x20Event\x20Handlers',()=>{const _0x4cf016=a0_0x35d151;test(_0x4cf016(0x1b3),async()=>{const _0x451f1f=_0x4cf016,{MessageRouter:_0x2fc6fb}=await import(_0x451f1f(0x1d9)),{WebSocketManager:_0xf15a54}=await import(_0x451f1f(0x1bb)),{WS_MESSAGE_TYPE:_0xa2d45b}=await import('../../config/constants.js'),_0x28fe5b=new _0xf15a54(_0x451f1f(0x1d4),0x1f90),_0xa74c5e=new _0x2fc6fb(_0x28fe5b);expect(_0xa74c5e['hasHandler'](_0xa2d45b[_0x451f1f(0x1d5)]))[_0x451f1f(0x1c5)](!![]),expect(_0xa74c5e['hasHandler'](_0xa2d45b['AGENT_MODE_CHANGED']))['toBe'](!![]);});}),describe('Message\x20Management\x20-\x20Error\x20Handling',()=>{test('MESSAGE_CONFIG\x20enforces\x20maximum\x20message\x20length',async()=>{const _0x545b19=a0_0x4879,{MESSAGE_CONFIG:_0x2ad4d1}=await import('../../config/constants.js');expect(_0x2ad4d1['MAX_MESSAGE_LENGTH'])['toBeDefined'](),expect(typeof _0x2ad4d1['MAX_MESSAGE_LENGTH'])[_0x545b19(0x1c5)](_0x545b19(0x1dc));const _0x2271cb='a'['repeat'](_0x2ad4d1[_0x545b19(0x1c1)]+0x1);expect(_0x2271cb['length'])['toBeGreaterThan'](_0x2ad4d1[_0x545b19(0x1c1)]);}),test('MESSAGE_CONFIG\x20enforces\x20maximum\x20display\x20messages',async()=>{const _0x5509ca=a0_0x4879,{MESSAGE_CONFIG:_0x452af9}=await import(_0x5509ca(0x1d3));expect(_0x452af9['MAX_MESSAGES_DISPLAY'])['toBeDefined'](),expect(typeof _0x452af9['MAX_MESSAGES_DISPLAY'])['toBe']('number'),expect(_0x452af9['MAX_MESSAGES_DISPLAY'])[_0x5509ca(0x1de)](0x0);});}),describe(a0_0x35d151(0x1ce),()=>{const _0x2c7911=a0_0x35d151;test(_0x2c7911(0x1d7),async()=>{const _0x5434b3=_0x2c7911,{PAGINATION:_0x1217b5}=await import(_0x5434b3(0x1d3)),_0x29cb14=0x0,_0x19c5e1=_0x29cb14*_0x1217b5[_0x5434b3(0x1bc)];expect(_0x19c5e1)[_0x5434b3(0x1c5)](0x0);const _0xe42031=0x1,_0x1c9896=_0xe42031*_0x1217b5[_0x5434b3(0x1bc)];expect(_0x1c9896)[_0x5434b3(0x1c5)](_0x1217b5['PAGE_SIZE']);}),test('PAGINATION\x20limit\x20does\x20not\x20exceed\x20MAX_PAGE_SIZE',async()=>{const _0xdb3ee2=_0x2c7911,{PAGINATION:_0x57bae4}=await import('../../config/constants.js'),_0x59baab=0x3e8,_0x2dc865=Math['min'](_0x59baab,_0x57bae4['MAX_PAGE_SIZE']);expect(_0x2dc865)[_0xdb3ee2(0x1cb)](_0x57bae4['MAX_PAGE_SIZE']);});});
@@ -1 +1 @@
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
+ function a0_0x2327(_0x5b5d62,_0x1922b7){_0x5b5d62=_0x5b5d62-0x1d1;const _0x46eb15=a0_0x46eb();let _0x2327c3=_0x46eb15[_0x5b5d62];if(a0_0x2327['OHzWoJ']===undefined){var _0x4b7139=function(_0x43cabe){const _0x1c3d0f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2f9aed='',_0x195e40='';for(let _0x383d10=0x0,_0x35bf26,_0x340e51,_0x3108cd=0x0;_0x340e51=_0x43cabe['charAt'](_0x3108cd++);~_0x340e51&&(_0x35bf26=_0x383d10%0x4?_0x35bf26*0x40+_0x340e51:_0x340e51,_0x383d10++%0x4)?_0x2f9aed+=String['fromCharCode'](0xff&_0x35bf26>>(-0x2*_0x383d10&0x6)):0x0){_0x340e51=_0x1c3d0f['indexOf'](_0x340e51);}for(let _0x13e248=0x0,_0x7d6d9=_0x2f9aed['length'];_0x13e248<_0x7d6d9;_0x13e248++){_0x195e40+='%'+('00'+_0x2f9aed['charCodeAt'](_0x13e248)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x195e40);};a0_0x2327['uNWdRY']=_0x4b7139,a0_0x2327['PxhuYV']={},a0_0x2327['OHzWoJ']=!![];}const _0x24043d=_0x46eb15[0x0],_0x2e6990=_0x5b5d62+_0x24043d,_0x1d3a6d=a0_0x2327['PxhuYV'][_0x2e6990];return!_0x1d3a6d?(_0x2327c3=a0_0x2327['uNWdRY'](_0x2327c3),a0_0x2327['PxhuYV'][_0x2e6990]=_0x2327c3):_0x2327c3=_0x1d3a6d,_0x2327c3;}function a0_0x46eb(){const _0x2a11c0=['C3vJy2vZCW','l2fWAs90B29SCW','mJu3nZuXnKffrKXkqG','Dg9czq','yw5HBhL6zv9JB2rL','BgvUz3rO','vg9VBcbYzxn1BhrZignHBIbIzsbZDg9YzwqGyNKGzxHLy3v0Aw9UieLe','y2f0zwDVCNK','lI4VlI4VC3rHDguVDxnLvg9VBhmUANm','vg9VBhmGtwfUywDLBwvUDcaTifDLyLnVy2TLDcbfDMvUDcbiyw5KBgvYCW','Dg9nyxrJAa','DxnLvg9VBhmGCMv0DxjUCYbLEhbLy3rLzcbPBNrLCMzHy2uGC2HHCgu','vg9VBhmGtwfUywDLBwvUDcaTieLTCg9YDhm','ugvYzM9YBsbZDgf0AwmGy29KzsbHBMfSExnPCW','D3jPDgvFzMLSzq','AgfZ','u2vZC2LVBK1HBMfNzxi','zMLSzsbJB250zw50CW','otGZmJeZAKPzv3bP','v3jPDguGzgf0ysb0BYbHigzPBgu','ve9ptf9dqvrfr09swsb2ywX1zxmGBwf0y2GGzxHWzwn0zwqGzM9YBwf0','A2v5CW','Dg9czurLzMLUzwq','rxHLy3v0Aw9Uihn0yxrLignHBIb0CMfJAYbTDwX0AxbSzsb0B29SCW','yw5HBhL6zq','zw5HyMXLza','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGq2f0zwDVCML6yxrPB24','ve9ptfm','D2vIx3nLyxjJAa','Dg9dB250ywLU','zxHLyY0Y','BwfW','mJeYmdu2nunhA1v0Aq','z2v0','BM93','qvvut01bveLptG','ndqWmJuWmffzzLHPBa','lI4VlI4VyxbPl21LC3nHz2vsB3v0zxiUANm','vvrjteLuwq','vg9VBhmGtwfUywDLBwvUDcaTienHDgvNB3j5ienVDw50CW','DxnLvg9VBhmGAg9VAYbPBNrLz3jHDgvZihDPDgGGu2vZC2LVBIbHBMqGtwvZC2fNzvjVDxrLCG','zxHLy3v0zv9JB21Tyw5K','lI4VlI4Vy29UzMLNl2nVBNn0yw50CY5QCW','zgvZy3jPChrPB24','lI4VlI4VyxbPl3DLyNnVy2TLDc5QCW','zNvUy3rPB24','BMfTzq','C2v0','odaZodGYnevvAxPxrG','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGu2vHCMnO','l2fWAs9VCMnOzxn0CMf0B3i','t3jJAgvZDhjHDg9YigvUzhbVAw50igLZihvZzwqGzM9YihrVB2WGB3bLCMf0Aw9UCW','vg9VBhmGtwfUywDLBwvUDcaTieHVB2SGsw50zxjMywnLifzLCMLMAwnHDgLVBG','vg9VBhmGtwfUywDLBwvUDcaTiefqssbfBMrWB2LUDhmGvMfSAwrHDgLVBG','mZy4ntmWofnIDuL1Eq','zMLSDgvY','DxnLvg9VBhm','ve9ptf9dqvrfr09swsb2ywX1zxmGyxjLigXVD2vYy2fZzq','Bg9JywXOB3n0','AxnZDwvZ','vg9VBhmGtwfUywDLBwvUDcaTifrVB2WGq2fJAgLUzW','DgvYBwLUywW','C2L6zq','Dg9mB3DLCKnHC2u','u1Ltvevn','zxHLyY0X','lI4VlI4VyxbPl3nLC3nPB24UANm','twvZC2fNzvjVDxrLCG','vg9VBhmGtwfUywDLBwvUDcaTienVBNn0yw50CW','t1jdsevtvfjbve9s','mta2mdq4Dxr0EvPt','AgfZsgfUzgXLCG','DMfSDwvZ','zgf0yq','ve9ptf9dqvrfr09swsbJyw4GyMuGDxnLzcb0BYbMAwX0zxiGDg9VBhmGyNKGy2f0zwDVCNK','qu5btfLtsvm','Dg9fCxvHBa','CMvHzf9MAwXL','ywrK','q09mtefct1jbveLptG'];a0_0x46eb=function(){return _0x2a11c0;};return a0_0x46eb();}const a0_0x4bfcb8=a0_0x2327;(function(_0x5ea545,_0x2fece2){const _0x3b712d=a0_0x2327,_0x3c9bcb=_0x5ea545();while(!![]){try{const _0x3452ed=parseInt(_0x3b712d(0x1ec))/0x1+parseInt(_0x3b712d(0x1dc))/0x2+parseInt(_0x3b712d(0x1f8))/0x3+-parseInt(_0x3b712d(0x21a))/0x4+parseInt(_0x3b712d(0x216))/0x5+-parseInt(_0x3b712d(0x1d6))/0x6+parseInt(_0x3b712d(0x208))/0x7;if(_0x3452ed===_0x2fece2)break;else _0x3c9bcb['push'](_0x3c9bcb['shift']());}catch(_0x187282){_0x3c9bcb['push'](_0x3c9bcb['shift']());}}}(a0_0x46eb,0xe38b1));import{describe,test,expect}from'@jest/globals';describe(a0_0x4bfcb8(0x202),()=>{test('useTools hook can be imported',async()=>{const _0x29b5ef=a0_0x2327,{useTools:_0x2f9aed}=await import('../../state/useTools.js');expect(_0x2f9aed)[_0x29b5ef(0x20c)](),expect(typeof _0x2f9aed)[_0x29b5ef(0x1f9)]('function');}),test('useTools is default export',async()=>{const _0x1c2290=a0_0x2327,module=await import(_0x1c2290(0x1fe));expect(module['default'])[_0x1c2290(0x20c)](),expect(typeof module['default'])['toBe'](_0x1c2290(0x1d3)),expect(module['default'])['toBe'](module['useTools']);});}),describe(a0_0x4bfcb8(0x1ea),()=>{const _0x43bf6e=a0_0x4bfcb8;test('TOOL_CATEGORY\x20constants\x20are\x20defined',async()=>{const _0x56fead=a0_0x2327,{TOOL_CATEGORY:_0x195e40}=await import('../../config/constants.js');expect(_0x195e40)['toBeDefined'](),expect(_0x195e40['SYSTEM'])['toBeDefined'](),expect(_0x195e40[_0x56fead(0x219)])['toBeDefined'](),expect(_0x195e40[_0x56fead(0x1f1)])[_0x56fead(0x20c)](),expect(_0x195e40['UTILITY'])[_0x56fead(0x20c)](),expect(_0x195e40[_0x56fead(0x1f5)])[_0x56fead(0x20c)](),expect(_0x195e40['AI'])[_0x56fead(0x20c)]();}),test(_0x43bf6e(0x1df),async()=>{const _0x5598ef=_0x43bf6e,{TOOL_CATEGORY:_0x383d10}=await import(_0x5598ef(0x220));expect(_0x383d10['SYSTEM'])[_0x5598ef(0x1f9)](_0x383d10[_0x5598ef(0x1e6)][_0x5598ef(0x1e5)]()),expect(_0x383d10[_0x5598ef(0x219)])['toBe'](_0x383d10[_0x5598ef(0x219)]['toLowerCase']()),expect(_0x383d10['ANALYSIS'])[_0x5598ef(0x1f9)](_0x383d10[_0x5598ef(0x1f1)]['toLowerCase']()),expect(_0x383d10[_0x5598ef(0x21c)])[_0x5598ef(0x1f9)](_0x383d10[_0x5598ef(0x21c)]['toLowerCase']());}),test('Tools\x20API\x20endpoint\x20is\x20defined',async()=>{const _0x47eacc=_0x43bf6e,{API_ENDPOINTS:_0x35bf26}=await import(_0x47eacc(0x220));expect(_0x35bf26['TOOLS'])['toBeDefined'](),expect(_0x35bf26['TOOLS'])['toBe']('/api/tools');}),test(_0x43bf6e(0x1d9),async()=>{const _0x224bc7=_0x43bf6e,{API_ENDPOINTS:_0x340e51}=await import('../../config/constants.js');expect(_0x340e51[_0x224bc7(0x1eb)])['toBeDefined'](),expect(_0x340e51[_0x224bc7(0x1eb)])[_0x224bc7(0x1f9)](_0x224bc7(0x1d8));});}),describe('Tools\x20Management\x20-\x20Integration',()=>{const _0x1485cb=a0_0x4bfcb8;test(_0x1485cb(0x21e),async()=>{const _0xd46c09=_0x1485cb,{useTools:_0x3108cd}=await import(_0xd46c09(0x1fe)),{SessionManager:_0x13e248}=await import(_0xd46c09(0x1e8)),{MessageRouter:_0x7d6d9}=await import(_0xd46c09(0x21b)),{WebSocketManager:_0x4bcc1f}=await import('../../api/websocket.js'),_0x29a83e=new _0x13e248(_0xd46c09(0x1e0),0x1f90),_0x2aa9fb=new _0x4bcc1f(_0xd46c09(0x1e0),0x1f90),_0x457ac6=new _0x7d6d9(_0x2aa9fb);expect(_0x29a83e)[_0xd46c09(0x20c)](),expect(_0x457ac6)[_0xd46c09(0x20c)](),expect(typeof _0x3108cd)[_0xd46c09(0x1f9)](_0xd46c09(0x1d3));}),test('Full tools management stack can be imported together',async()=>{const _0x3344a1=_0x1485cb,[_0x1343b4,_0x4d8dae,_0x146abc,_0x30616c,_0x341eb6]=await Promise['all']([import('../../config/constants.js'),import('../../api/session.js'),import('../../api/websocket.js'),import('../../api/messageRouter.js'),import(_0x3344a1(0x1fe))]);expect(_0x1343b4['TOOL_CATEGORY'])[_0x3344a1(0x20c)](),expect(_0x1343b4['API_ENDPOINTS'])[_0x3344a1(0x20c)](),expect(_0x4d8dae[_0x3344a1(0x206)])['toBeDefined'](),expect(_0x146abc['WebSocketManager'])['toBeDefined'](),expect(_0x30616c[_0x3344a1(0x1e9)])['toBeDefined'](),expect(_0x341eb6[_0x3344a1(0x1de)])[_0x3344a1(0x20c)]();});}),describe(a0_0x4bfcb8(0x1db),()=>{test('Tools\x20endpoint\x20follows\x20RESTful\x20pattern',async()=>{const _0x3d5533=a0_0x2327,{API_ENDPOINTS:_0x473fec}=await import(_0x3d5533(0x220));expect(_0x473fec[_0x3d5533(0x211)])['toMatch'](/^\/api\//),expect(_0x473fec['TOOLS'])['toBe'](_0x3d5533(0x1f7));}),test('Tool\x20operations\x20use\x20orchestrator\x20endpoint',async()=>{const _0x5e3b3d=a0_0x2327,{API_ENDPOINTS:_0x4556a0}=await import(_0x5e3b3d(0x220));expect(_0x4556a0['ORCHESTRATOR'])['toBeDefined'](),expect(_0x4556a0['ORCHESTRATOR'])[_0x5e3b3d(0x1f9)]('/api/orchestrator');});}),describe(a0_0x4bfcb8(0x1da),()=>{const _0x3003b2=a0_0x4bfcb8;test(_0x3003b2(0x201),async()=>{const _0x1561fc=_0x3003b2,{useTools:_0x5ebf3f}=await import('../../state/useTools.js');expect(_0x5ebf3f[_0x1561fc(0x1fb)])['toBe'](0x3);});}),describe('Tools\x20Management\x20-\x20Constants\x20Validation',()=>{const _0xc08f35=a0_0x4bfcb8;test('TOOL_CATEGORY\x20includes\x20all\x20major\x20categories',async()=>{const _0x3e5e61=a0_0x2327,{TOOL_CATEGORY:_0x44d08d}=await import(_0x3e5e61(0x220)),_0x5aada6=Object[_0x3e5e61(0x20b)](_0x44d08d);expect(_0x5aada6)['toContain'](_0x3e5e61(0x1e6)),expect(_0x5aada6)[_0x3e5e61(0x213)]('AUTOMATION'),expect(_0x5aada6)[_0x3e5e61(0x213)]('ANALYSIS'),expect(_0x5aada6)[_0x3e5e61(0x213)]('UTILITY'),expect(_0x5aada6)['toContain']('COLLABORATION'),expect(_0x5aada6)['toContain']('AI');}),test(_0xc08f35(0x20a),async()=>{const _0x65e8a3=_0xc08f35,{TOOL_CATEGORY:_0x1306cf}=await import(_0x65e8a3(0x220));expect(_0x1306cf[_0x65e8a3(0x1e6)])['toMatch'](/^[a-z_]+$/),expect(_0x1306cf[_0x65e8a3(0x219)])[_0x65e8a3(0x200)](/^[a-z_]+$/),expect(_0x1306cf[_0x65e8a3(0x1f1)])[_0x65e8a3(0x200)](/^[a-z_]+$/),expect(_0x1306cf['UTILITY'])[_0x65e8a3(0x200)](/^[a-z_]+$/);});}),describe(a0_0x4bfcb8(0x1ff),()=>{test('MessageRouter\x20has\x20tool\x20event\x20handlers\x20registered',async()=>{const _0x463099=a0_0x2327,{MessageRouter:_0x1ed6ae}=await import('../../api/messageRouter.js'),{WebSocketManager:_0x416748}=await import(_0x463099(0x1d2)),_0x1b5944=new _0x416748(_0x463099(0x1e0),0x1f90),_0xe2e6b4=new _0x1ed6ae(_0x1b5944);expect(_0xe2e6b4[_0x463099(0x1ed)])[_0x463099(0x20c)](),expect(typeof _0xe2e6b4['hasHandler'])['toBe']('function');});}),describe(a0_0x4bfcb8(0x210),()=>{const _0x5adf39=a0_0x4bfcb8;test(_0x5adf39(0x1f0),async()=>{const _0x29aad2=_0x5adf39,{TOOL_CATEGORY:_0x2980f8}=await import(_0x29aad2(0x220)),_0x39eccd=[{'name':_0x29aad2(0x21f),'category':_0x2980f8[_0x29aad2(0x1e6)]},{'name':'terminal','category':_0x2980f8[_0x29aad2(0x1e6)]},{'name':_0x29aad2(0x1fa),'category':_0x2980f8[_0x29aad2(0x1f1)]},{'name':_0x29aad2(0x212),'category':_0x2980f8['UTILITY']},{'name':'ai_assistant','category':_0x2980f8['AI']}],_0x38fffc=_0x39eccd['filter'](_0x5a7af0=>_0x5a7af0[_0x29aad2(0x1fd)]===_0x2980f8['SYSTEM']),_0x27550b=_0x39eccd[_0x29aad2(0x1dd)](_0x22795e=>_0x22795e[_0x29aad2(0x1fd)]===_0x2980f8['ANALYSIS']),_0xa72265=_0x39eccd[_0x29aad2(0x1dd)](_0x4ebdd3=>_0x4ebdd3['category']===_0x2980f8[_0x29aad2(0x21c)]),_0x248b10=_0x39eccd[_0x29aad2(0x1dd)](_0x5d453f=>_0x5d453f[_0x29aad2(0x1fd)]===_0x2980f8['AI']);expect(_0x38fffc['length'])[_0x29aad2(0x1f9)](0x2),expect(_0x27550b[_0x29aad2(0x1fb)])[_0x29aad2(0x1f9)](0x1),expect(_0xa72265[_0x29aad2(0x1fb)])['toBe'](0x1),expect(_0x248b10['length'])['toBe'](0x1),expect(_0x38fffc[0x0][_0x29aad2(0x1d4)])[_0x29aad2(0x1f9)]('execute_command'),expect(_0x27550b[0x0][_0x29aad2(0x1d4)])[_0x29aad2(0x1f9)]('analyze_code');});}),describe(a0_0x4bfcb8(0x1d7),()=>{test('Tool\x20search\x20should\x20work\x20with\x20name\x20and\x20description',async()=>{const _0x12cb97=a0_0x2327,_0x4bf43b=[{'name':_0x12cb97(0x1f3),'description':'Read\x20contents\x20of\x20a\x20file'},{'name':'write_file','description':_0x12cb97(0x209)},{'name':'analyze_code','description':_0x12cb97(0x203)}],_0x4f3af7=_0x4081c3=>{const _0x3efa75=_0x12cb97,_0x44ee0d=_0x4081c3[_0x3efa75(0x1e5)]();return _0x4bf43b['filter'](_0x5a36e8=>_0x5a36e8['name']?.['toLowerCase']()['includes'](_0x44ee0d)||_0x5a36e8[_0x3efa75(0x1d1)]?.['toLowerCase']()['includes'](_0x44ee0d));},_0x4900a5=_0x4f3af7('file');expect(_0x4900a5['length'])[_0x12cb97(0x1f9)](0x2),expect(_0x4900a5[_0x12cb97(0x215)](_0x586e6d=>_0x586e6d[_0x12cb97(0x1d4)]))['toContain']('read_file'),expect(_0x4900a5['map'](_0x5d79b1=>_0x5d79b1['name']))['toContain'](_0x12cb97(0x204));const _0x7226b4=_0x4f3af7(_0x12cb97(0x20e));expect(_0x7226b4[_0x12cb97(0x1fb)])['toBe'](0x1),expect(_0x7226b4[0x0][_0x12cb97(0x1d4)])[_0x12cb97(0x1f9)]('analyze_code');});}),describe('Tools\x20Management\x20-\x20Execution\x20State\x20Tracking',()=>{const _0x268eb1=a0_0x4bfcb8;test(_0x268eb1(0x20d),async()=>{const _0x2c4c65=_0x268eb1,_0xbace48=new Set();_0xbace48['add'](_0x2c4c65(0x1f3)),_0xbace48[_0x2c4c65(0x1f4)](_0x2c4c65(0x1fa)),expect(_0xbace48[_0x2c4c65(0x205)](_0x2c4c65(0x1f3)))['toBe'](!![]),expect(_0xbace48[_0x2c4c65(0x205)]('analyze_code'))[_0x2c4c65(0x1f9)](!![]),expect(_0xbace48[_0x2c4c65(0x1e4)])['toBe'](0x2),_0xbace48['delete']('read_file'),expect(_0xbace48[_0x2c4c65(0x205)]('read_file'))['toBe'](![]),expect(_0xbace48[_0x2c4c65(0x205)](_0x2c4c65(0x1fa)))['toBe'](!![]),expect(_0xbace48['size'])[_0x2c4c65(0x1f9)](0x1);}),test(_0x268eb1(0x1fc),async()=>{const _0x4b5edf=_0x268eb1,_0x2fe26f=new Map();_0x2fe26f[_0x4b5edf(0x1d5)]('exec-1',{'success':!![],'data':_0x4b5edf(0x207)}),_0x2fe26f[_0x4b5edf(0x1d5)](_0x4b5edf(0x214),{'success':!![],'data':{'issues':[]}}),expect(_0x2fe26f['get'](_0x4b5edf(0x1e7)))[_0x4b5edf(0x20c)](),expect(_0x2fe26f[_0x4b5edf(0x217)]('exec-1')[_0x4b5edf(0x1f6)])['toBe'](!![]),expect(_0x2fe26f['get'](_0x4b5edf(0x1e7))[_0x4b5edf(0x1ef)])[_0x4b5edf(0x1f9)]('file\x20contents'),expect(_0x2fe26f[_0x4b5edf(0x217)](_0x4b5edf(0x214)))['toBeDefined'](),expect(_0x2fe26f[_0x4b5edf(0x217)]('exec-2')[_0x4b5edf(0x1ef)][_0x4b5edf(0x1e1)])[_0x4b5edf(0x1f2)]([]),expect(_0x2fe26f['size'])['toBe'](0x2);});}),describe(a0_0x4bfcb8(0x1e2),()=>{test('Tool\x20cache\x20supports\x20TTL-based\x20caching',async()=>{const _0xb5254a=a0_0x2327,_0x1b774b=0x927c0;let _0x19e74c=null,_0x3e7cba=0x0;const _0x31971a=[{'name':_0xb5254a(0x1f3)}];_0x19e74c=_0x31971a,_0x3e7cba=Date[_0xb5254a(0x218)]();const _0x244152=Date['now'](),_0x267ae1=_0x244152-_0x3e7cba<_0x1b774b;expect(_0x267ae1)['toBe'](!![]),expect(_0x19e74c)['toBe'](_0x31971a);}),test('Tool\x20cache\x20expires\x20after\x20TTL',async()=>{const _0x12dd27=a0_0x2327,_0x55a1e7=0x64;let _0xc0ea18=null,_0x18c6de=0x0;const _0x37db77=[{'name':_0x12dd27(0x1f3)}];_0xc0ea18=_0x37db77,_0x18c6de=Date[_0x12dd27(0x218)](),await new Promise(_0x1ec44a=>setTimeout(_0x1ec44a,0x96));const _0x21ecd0=Date[_0x12dd27(0x218)](),_0x313f32=_0x21ecd0-_0x18c6de<_0x55a1e7;expect(_0x313f32)[_0x12dd27(0x1f9)](![]);});}),describe('Tools\x20Management\x20-\x20Tool\x20Filtering',()=>{test('Tools\x20can\x20be\x20filtered\x20by\x20multiple\x20criteria',async()=>{const _0xdbc048=a0_0x2327,{TOOL_CATEGORY:_0xef423f}=await import('../../config/constants.js'),_0x54b9a0=[{'name':'execute_command','category':_0xef423f['SYSTEM'],'enabled':!![]},{'name':_0xdbc048(0x1e3),'category':_0xef423f[_0xdbc048(0x1e6)],'enabled':![]},{'name':_0xdbc048(0x1fa),'category':_0xef423f[_0xdbc048(0x1f1)],'enabled':!![]}],_0x562e9e=_0x391a9a=>{const _0x5a9f0e=_0xdbc048;let _0x1b85b8=[..._0x54b9a0];return _0x391a9a[_0x5a9f0e(0x1fd)]&&(_0x1b85b8=_0x1b85b8[_0x5a9f0e(0x1dd)](_0x317142=>_0x317142['category']===_0x391a9a['category'])),_0x391a9a['enabled']!==undefined&&(_0x1b85b8=_0x1b85b8['filter'](_0x1a2166=>_0x1a2166[_0x5a9f0e(0x20f)]===_0x391a9a[_0x5a9f0e(0x20f)])),_0x1b85b8;},_0xdbec1=_0x562e9e({'category':_0xef423f[_0xdbc048(0x1e6)]});expect(_0xdbec1[_0xdbc048(0x1fb)])[_0xdbc048(0x1f9)](0x2);const _0x5e118c=_0x562e9e({'enabled':!![]});expect(_0x5e118c[_0xdbc048(0x1fb)])['toBe'](0x2);const _0x369875=_0x562e9e({'category':_0xef423f['SYSTEM'],'enabled':!![]});expect(_0x369875[_0xdbc048(0x1fb)])[_0xdbc048(0x1f9)](0x1),expect(_0x369875[0x0][_0xdbc048(0x1d4)])[_0xdbc048(0x1f9)](_0xdbc048(0x21f));});}),describe(a0_0x4bfcb8(0x21d),()=>{test('Category\x20counts\x20can\x20be\x20calculated',async()=>{const _0x15b3f3=a0_0x2327,{TOOL_CATEGORY:_0x346a3f}=await import(_0x15b3f3(0x220)),_0x589973=[{'name':'execute_command','category':_0x346a3f[_0x15b3f3(0x1e6)]},{'name':'terminal','category':_0x346a3f['SYSTEM']},{'name':'analyze_code','category':_0x346a3f['ANALYSIS']},{'name':'web_search','category':_0x346a3f['UTILITY']}],_0x4e1b2f=_0x1fc866=>{const _0x362b27=_0x15b3f3,_0x177ed6={};for(const _0x2380c8 of Object[_0x362b27(0x1ee)](_0x346a3f)){_0x177ed6[_0x2380c8]=_0x1fc866[_0x362b27(0x1dd)](_0x5048e1=>_0x5048e1['category']===_0x2380c8)['length'];}return _0x177ed6;},_0x22e45a=_0x4e1b2f(_0x589973);expect(_0x22e45a[_0x346a3f[_0x15b3f3(0x1e6)]])['toBe'](0x2),expect(_0x22e45a[_0x346a3f['ANALYSIS']])[_0x15b3f3(0x1f9)](0x1),expect(_0x22e45a[_0x346a3f[_0x15b3f3(0x21c)]])[_0x15b3f3(0x1f9)](0x1),expect(_0x22e45a[_0x346a3f[_0x15b3f3(0x219)]])['toBe'](0x0);});});
@@ -1 +1 @@
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
+ function a0_0x4901(){const _0x71c70=['yxbPs2v5','y2XLyxjbCgLlzxK','mJK5ndG0u1jjuNDJ','y2f0y2G','mti3mZyYqxrfvwPP','ANnVBG','BwvZC2fNzq','otaXmZu2DvHhww9K','z2v0qxbPs2v5','mtKZmJGWohvPDxzXCG','tKvuv09ss19fuLjpuG','C3rYAw5NAwz5','ue9tva','revmrvrf','CMvXDwvZDa','mJa1A1P6r0DQ','ndiZnJeYmeHjwMrwvq','Aw5JBhvKzxm','C3rHDhvZ','ufvu','ndjethvVAuO','nteWB1r1BwPj','mtq5ntqYmNDUthHiqW','mtiXotm3oxrPwwLcwq','Cgf0y2G'];a0_0x4901=function(){return _0x71c70;};return a0_0x4901();}function a0_0x88bd(_0x2129c4,_0x4ba210){_0x2129c4=_0x2129c4-0x158;const _0x490156=a0_0x4901();let _0x88bdc6=_0x490156[_0x2129c4];if(a0_0x88bd['PzfBSd']===undefined){var _0x410a99=function(_0x3ae0b2){const _0x3510ce='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2dce54='',_0x37e8ac='';for(let _0x2bfae4=0x0,_0x5c6580,_0xa8c451,_0x5036ed=0x0;_0xa8c451=_0x3ae0b2['charAt'](_0x5036ed++);~_0xa8c451&&(_0x5c6580=_0x2bfae4%0x4?_0x5c6580*0x40+_0xa8c451:_0xa8c451,_0x2bfae4++%0x4)?_0x2dce54+=String['fromCharCode'](0xff&_0x5c6580>>(-0x2*_0x2bfae4&0x6)):0x0){_0xa8c451=_0x3510ce['indexOf'](_0xa8c451);}for(let _0x5b1275=0x0,_0x9c56ed=_0x2dce54['length'];_0x5b1275<_0x9c56ed;_0x5b1275++){_0x37e8ac+='%'+('00'+_0x2dce54['charCodeAt'](_0x5b1275)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x37e8ac);};a0_0x88bd['zrckYe']=_0x410a99,a0_0x88bd['BhYugs']={},a0_0x88bd['PzfBSd']=!![];}const _0x3d7d47=_0x490156[0x0],_0x4ff5de=_0x2129c4+_0x3d7d47,_0x21580e=a0_0x88bd['BhYugs'][_0x4ff5de];return!_0x21580e?(_0x88bdc6=a0_0x88bd['zrckYe'](_0x88bdc6),a0_0x88bd['BhYugs'][_0x4ff5de]=_0x88bdc6):_0x88bdc6=_0x21580e,_0x88bdc6;}const a0_0x3f3014=a0_0x88bd;(function(_0x429d48,_0x146c29){const _0x488f03=a0_0x88bd,_0x1293f3=_0x429d48();while(!![]){try{const _0x1f2efb=-parseInt(_0x488f03(0x165))/0x1+parseInt(_0x488f03(0x16e))/0x2+parseInt(_0x488f03(0x164))/0x3+-parseInt(_0x488f03(0x15e))/0x4+-parseInt(_0x488f03(0x15d))/0x5*(parseInt(_0x488f03(0x16b))/0x6)+-parseInt(_0x488f03(0x162))/0x7*(-parseInt(_0x488f03(0x170))/0x8)+parseInt(_0x488f03(0x169))/0x9*(parseInt(_0x488f03(0x163))/0xa);if(_0x1f2efb===_0x146c29)break;else _0x1293f3['push'](_0x1293f3['shift']());}catch(_0x14eb68){_0x1293f3['push'](_0x1293f3['shift']());}}}(a0_0x4901,0xe73ae));import{ERROR_MESSAGE}from'../config/constants.js';export class ApiClient{constructor(_0x2dce54,_0x37e8ac=null){const _0x5d6894=a0_0x88bd;this['baseUrl']=_0x2dce54,this[_0x5d6894(0x167)]=_0x37e8ac;}['setApiKey'](_0x2bfae4){const _0x35bbe1=a0_0x88bd;this[_0x35bbe1(0x167)]=_0x2bfae4;}[a0_0x3f3014(0x16f)](){const _0x46f169=a0_0x3f3014;return this[_0x46f169(0x167)];}[a0_0x3f3014(0x168)](){this['apiKey']=null;}['buildHeaders'](_0x5c6580={}){const _0x2da2b5=a0_0x3f3014,_0xa8c451={'Content-Type':'application/json',..._0x5c6580};return this[_0x2da2b5(0x167)]&&(_0xa8c451['Authorization']='Bearer\x20'+this[_0x2da2b5(0x167)]),_0xa8c451;}async['request'](_0x5036ed,_0x5b1275,_0x9c56ed={}){const _0x2abe48=a0_0x3f3014,{body:body=null,headers:headers={},query:query=null}=_0x9c56ed;let _0xbc099=''+this['baseUrl']+_0x5b1275;if(query){const _0x3c57f2=new URLSearchParams(query)['toString']();_0xbc099+='?'+_0x3c57f2;}const _0x7294b9={'method':_0x5036ed,'headers':this['buildHeaders'](headers)};body&&['POST',_0x2abe48(0x161),'PATCH'][_0x2abe48(0x15f)](_0x5036ed['toUpperCase']())&&(_0x7294b9['body']=JSON[_0x2abe48(0x159)](body));try{const _0x56615c=await fetch(_0xbc099,_0x7294b9),_0x44b753=await _0x56615c[_0x2abe48(0x16c)]()[_0x2abe48(0x16a)](()=>({}));if(!_0x56615c['ok']){const _0x7bb42e=new Error(_0x44b753['error']||'HTTP\x20'+_0x56615c['status']+':\x20'+_0x56615c['statusText']);_0x7bb42e[_0x2abe48(0x160)]=_0x56615c[_0x2abe48(0x160)],_0x7bb42e['response']=_0x44b753;throw _0x7bb42e;}return _0x44b753;}catch(_0x20856c){if(_0x20856c[_0x2abe48(0x16d)][_0x2abe48(0x15f)]('fetch')||_0x20856c['name']==='TypeError'){const _0x52676a=new Error(ERROR_MESSAGE[_0x2abe48(0x158)]+':\x20'+_0x20856c[_0x2abe48(0x16d)]);_0x52676a['originalError']=_0x20856c;throw _0x52676a;}throw _0x20856c;}}async['get'](_0x1f6929,_0x3d098a={}){const _0xdb6e12=a0_0x3f3014;return this[_0xdb6e12(0x15c)]('GET',_0x1f6929,_0x3d098a);}async['post'](_0x357dc5,_0x4aac48=null,_0xe6fb15={}){const _0x4c7f8a=a0_0x3f3014;return this['request'](_0x4c7f8a(0x15a),_0x357dc5,{..._0xe6fb15,'body':_0x4aac48});}async['put'](_0x31f4e4,_0x30cdf0=null,_0x348785={}){return this['request']('PUT',_0x31f4e4,{..._0x348785,'body':_0x30cdf0});}async[a0_0x3f3014(0x166)](_0x11a72c,_0x3c656e=null,_0x4684e7={}){return this['request']('PATCH',_0x11a72c,{..._0x4684e7,'body':_0x3c656e});}async['delete'](_0x11be9c,_0x5ed519={}){const _0x1620ca=a0_0x3f3014;return this[_0x1620ca(0x15c)](_0x1620ca(0x15b),_0x11be9c,_0x5ed519);}}export function createApiClient(_0x617c77='localhost',_0x5587e3=0x1f90,_0x218539=null){const _0x3a7f6d='http://'+_0x617c77+':'+_0x5587e3;return new ApiClient(_0x3a7f6d,_0x218539);}export default ApiClient;
@@ -1 +1 @@
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
+ const a0_0x5dcf52=a0_0x52d8;(function(_0x30fa58,_0x531901){const _0x15c317=a0_0x52d8,_0x356f46=_0x30fa58();while(!![]){try{const _0x49559f=parseInt(_0x15c317(0x1da))/0x1+-parseInt(_0x15c317(0x1bb))/0x2+-parseInt(_0x15c317(0x1c5))/0x3*(-parseInt(_0x15c317(0x1c9))/0x4)+parseInt(_0x15c317(0x1d2))/0x5+parseInt(_0x15c317(0x1cb))/0x6+parseInt(_0x15c317(0x1bc))/0x7*(-parseInt(_0x15c317(0x1cc))/0x8)+-parseInt(_0x15c317(0x1db))/0x9*(parseInt(_0x15c317(0x1ba))/0xa);if(_0x49559f===_0x531901)break;else _0x356f46['push'](_0x356f46['shift']());}catch(_0x369bdb){_0x356f46['push'](_0x356f46['shift']());}}}(a0_0x1622,0x5c308));function a0_0x52d8(_0x32b2ac,_0x482c1c){_0x32b2ac=_0x32b2ac-0x1ae;const _0x162254=a0_0x1622();let _0x52d88b=_0x162254[_0x32b2ac];if(a0_0x52d8['tKtTOq']===undefined){var _0x151aaf=function(_0x18b274){const _0x423c55='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x48e2a5='',_0x302388='';for(let _0x2d342f=0x0,_0x2b8ffa,_0x3950e8,_0x3047f6=0x0;_0x3950e8=_0x18b274['charAt'](_0x3047f6++);~_0x3950e8&&(_0x2b8ffa=_0x2d342f%0x4?_0x2b8ffa*0x40+_0x3950e8:_0x3950e8,_0x2d342f++%0x4)?_0x48e2a5+=String['fromCharCode'](0xff&_0x2b8ffa>>(-0x2*_0x2d342f&0x6)):0x0){_0x3950e8=_0x423c55['indexOf'](_0x3950e8);}for(let _0x3e2e3c=0x0,_0x7f7fe2=_0x48e2a5['length'];_0x3e2e3c<_0x7f7fe2;_0x3e2e3c++){_0x302388+='%'+('00'+_0x48e2a5['charCodeAt'](_0x3e2e3c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x302388);};a0_0x52d8['gqIZdQ']=_0x151aaf,a0_0x52d8['BwYlWD']={},a0_0x52d8['tKtTOq']=!![];}const _0x189d38=_0x162254[0x0],_0x4f8799=_0x32b2ac+_0x189d38,_0x2c72f0=a0_0x52d8['BwYlWD'][_0x4f8799];return!_0x2c72f0?(_0x52d88b=a0_0x52d8['gqIZdQ'](_0x52d88b),a0_0x52d8['BwYlWD'][_0x4f8799]=_0x52d88b):_0x52d88b=_0x2c72f0,_0x52d88b;}function a0_0x1622(){const _0x370bd5=['ndi4mwTeCg1Ouq','ywDLBNq6y29TBxvUAwnHDgLVBG','BwLKzgXLD2fYzq','rvHfq1vusu9ox1nut1bqruq','mtC1nLrIy3bSCW','zw1PDa','nJiZmJK4rhbWvLvO','mJK4ndm4nhbxref6BW','Dw5YzwDPC3rLCKHHBMrSzxi','DhLWzq','q09nuefdveLptL9fvKvova','y2XLyxi','CMvNAxn0zxjezwzHDwX0sgfUzgXLCNm','mtiYntyWnwnAzMnOCa','su1br0vFr0vorvjbveve','quDftLrFrvjst1i','Bg9N','zxjYB3i','quDftLrFv0fstKLorW','AgfZsgfUzgXLCG','zgf0yq','nZuXmJnKrK1ztLG','mtKZndfKtLfvtuq','y2XLyxjiyw5KBgvYCW','z2v0','twvZC2fNzsb2ywXPzgf0Aw9UigzHAwXLza','Aw5JBhvKzxm','zNvUy3rPB24','y29UDMvYC2f0Aw9UoMnVBxbHy3rPB24','z2v0uMvNAxn0zxjLzfr5CgvZ','AgfUzgXLCNm','AgfUzgXLCL9LCNjVCG','AgfZ','C3bSAwnL','quDftLrFtu9erv9dsefor0ve','mtm2meDfqxnODW','mtuZmJbTDuLorK8','n3DyzunKEa','DxnL','ywDLBNq6zxHLy3v0Aw9Ux3n0B3bWzwq','ChvZAa','sgfUzgXLCIbTDxn0igjLigeGzNvUy3rPB24','CMvNAxn0zxjiyw5KBgvY','y2XLyxjnAwrKBgv3yxjL','BwvZC2fNzq','quDftLrFsu1qt1juruq'];a0_0x1622=function(){return _0x370bd5;};return a0_0x1622();}import{EventEmitter}from'events';import{WS_MESSAGE_TYPE}from'../config/constants.js';export class MessageRouter extends EventEmitter{constructor(_0x48e2a5){const _0x10ccc4=a0_0x52d8;super(),this['ws']=_0x48e2a5,this['handlers']=new Map(),this['middleware']=[],this['ws']['on'](_0x10ccc4(0x1c3),_0x302388=>this['route'](_0x302388)),this['registerDefaultHandlers']();}[a0_0x5dcf52(0x1d1)](){const _0x46fe80=a0_0x5dcf52;this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE['MESSAGE_ADDED'],_0x2d342f=>{const _0x3e4cf4=_0x46fe80;this[_0x3e4cf4(0x1ca)]('agent:message_added',_0x2d342f[_0x3e4cf4(0x1d9)]);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46fe80(0x1b9)],_0x2b8ffa=>{const _0x154802=_0x46fe80;this[_0x154802(0x1ca)]('agent:mode_changed',_0x2b8ffa);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46fe80(0x1c8)],_0x3950e8=>{const _0x3e10e3=_0x46fe80;this[_0x3e10e3(0x1ca)](_0x3e10e3(0x1be),_0x3950e8['data']);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE[_0x46fe80(0x1d4)],_0x3047f6=>{this['emit']('agent:error',_0x3047f6);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE[_0x46fe80(0x1d7)],_0x3e2e3c=>{this['emit']('agent:warning',_0x3e2e3c);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE[_0x46fe80(0x1c4)],_0x7f7fe2=>{this['emit']('agent:imported',_0x7f7fe2['agent']);}),this['registerHandler'](WS_MESSAGE_TYPE['AGENT_COMMUNICATION'],_0x21d25a=>{const _0x1294cf=_0x46fe80;this['emit'](_0x1294cf(0x1c6),_0x21d25a['data']);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE[_0x46fe80(0x1cf)],_0x4ea850=>{const _0x23eb89=_0x46fe80;this['emit'](_0x23eb89(0x1b3),_0x4ea850[_0x23eb89(0x1d9)]);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE['IMAGE_RESULT'],_0xe6669b=>{const _0x2d08fd=_0x46fe80;this['emit']('image:result',_0xe6669b[_0x2d08fd(0x1d9)]);}),this['registerHandler'](WS_MESSAGE_TYPE[_0x46fe80(0x1d3)],_0x39b01b=>{const _0x1e48b4=_0x46fe80;this[_0x1e48b4(0x1ca)]('image:generated',_0x39b01b['data']);}),this[_0x46fe80(0x1c1)](WS_MESSAGE_TYPE['ERROR'],_0x14cc87=>{const _0x127733=_0x46fe80;this[_0x127733(0x1ca)](_0x127733(0x1d6),_0x14cc87);});}async['route'](_0x5b1a0e){const _0x3a811d=a0_0x5dcf52;let processedMessage=_0x5b1a0e;for(const _0x43f164 of this['middleware']){try{processedMessage=await _0x43f164(processedMessage);if(!processedMessage)return;}catch(_0x46c302){this[_0x3a811d(0x1ca)]('middleware_error',{'error':_0x46c302,'message':_0x5b1a0e});return;}}const _0x484303=processedMessage['type'];if(!_0x484303){this['emit']('invalid_message',processedMessage);return;}if(this[_0x3a811d(0x1b5)][_0x3a811d(0x1b7)](_0x484303)){const _0x4c6f3f=this['handlers'][_0x3a811d(0x1af)](_0x484303);try{await _0x4c6f3f(processedMessage);}catch(_0x32cfed){this[_0x3a811d(0x1ca)](_0x3a811d(0x1b6),{'error':_0x32cfed,'message':processedMessage,'messageType':_0x484303});}}this['emit']('message:'+_0x484303,processedMessage),this['emit']('message',processedMessage);}['registerHandler'](_0x132708,_0xb89ac8){const _0x33f65a=a0_0x5dcf52;if(typeof _0xb89ac8!==_0x33f65a(0x1b2))throw new Error(_0x33f65a(0x1c0));this['handlers']['set'](_0x132708,_0xb89ac8);}[a0_0x5dcf52(0x1cd)](_0x23438e){const _0x4f93a4=a0_0x5dcf52;this[_0x4f93a4(0x1b5)]['delete'](_0x23438e);}[a0_0x5dcf52(0x1bd)](_0x24707f){const _0x32236d=a0_0x5dcf52;if(typeof _0x24707f!==_0x32236d(0x1b2))throw new Error('Middleware\x20must\x20be\x20a\x20function');this[_0x32236d(0x1c7)][_0x32236d(0x1bf)](_0x24707f);}['removeMiddleware'](_0x53ec2b){const _0x3a9f22=a0_0x5dcf52,_0x9e006f=this['middleware']['indexOf'](_0x53ec2b);_0x9e006f>-0x1&&this['middleware'][_0x3a9f22(0x1b8)](_0x9e006f,0x1);}[a0_0x5dcf52(0x1c2)](){this['middleware']=[];}[a0_0x5dcf52(0x1b4)](){return Array['from'](this['handlers']['keys']());}[a0_0x5dcf52(0x1d8)](_0x4999ee){const _0x5625dc=a0_0x5dcf52;return this['handlers'][_0x5625dc(0x1b7)](_0x4999ee);}[a0_0x5dcf52(0x1ae)](){const _0x560f5c=a0_0x5dcf52;this['handlers'][_0x560f5c(0x1d0)]();}['reset'](){const _0x28e5ee=a0_0x5dcf52;this[_0x28e5ee(0x1ae)](),this[_0x28e5ee(0x1c2)](),this[_0x28e5ee(0x1d1)]();}}export function loggingMiddleware(_0x47605d=console[a0_0x5dcf52(0x1d5)]){return _0x23307f=>{const _0x39f728=a0_0x52d8;return _0x47605d('[MessageRouter]',_0x23307f[_0x39f728(0x1ce)],_0x23307f),_0x23307f;};}export function filterMiddleware(_0x5d23ac){return _0x5305b4=>{const _0xc6769d=a0_0x52d8;if(_0x5d23ac[_0xc6769d(0x1b1)](_0x5305b4[_0xc6769d(0x1ce)]))return _0x5305b4;return null;};}export function transformMiddleware(_0xc9e6ee){return async _0x21cbb3=>{return await _0xc9e6ee(_0x21cbb3);};}export function timestampMiddleware(){return _0x364666=>{return{..._0x364666,'receivedAt':new Date()['toISOString']()};};}export function validationMiddleware(_0x470199){return _0x278d83=>{const _0x581ef0=a0_0x52d8;if(_0x470199(_0x278d83))return _0x278d83;throw new Error(_0x581ef0(0x1b0));};}export default MessageRouter;
@@ -1 +1 @@
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
+ const a0_0x17f4e7=a0_0x8291;(function(_0x32c08c,_0x5c60d1){const _0x3e782a=a0_0x8291,_0x7518b5=_0x32c08c();while(!![]){try{const _0x5abc1a=parseInt(_0x3e782a(0x120))/0x1+parseInt(_0x3e782a(0x129))/0x2*(-parseInt(_0x3e782a(0x127))/0x3)+-parseInt(_0x3e782a(0xfc))/0x4*(parseInt(_0x3e782a(0x101))/0x5)+parseInt(_0x3e782a(0x10c))/0x6+-parseInt(_0x3e782a(0xf9))/0x7*(-parseInt(_0x3e782a(0x124))/0x8)+-parseInt(_0x3e782a(0x11a))/0x9*(-parseInt(_0x3e782a(0x11f))/0xa)+-parseInt(_0x3e782a(0xfd))/0xb;if(_0x5abc1a===_0x5c60d1)break;else _0x7518b5['push'](_0x7518b5['shift']());}catch(_0x2ecce0){_0x7518b5['push'](_0x7518b5['shift']());}}}(a0_0x4376,0xe09e1));import{NETWORK,API_ENDPOINTS,ERROR_MESSAGE,SUCCESS_MESSAGE}from'../config/constants.js';import{ApiClient}from'./apiClient.js';function a0_0x4376(){const _0x3d2261=['Ag9ZDa','u0vtu0LptL9duKvbveu','mte5mtG5me1sDLb2Aq','mtuWndu1oeD4BgngBG','DMvUzg9Ys2v5CW','oNnLC3nPB25jza','s0vzu19hrvq','ntzMDej1Ahi','C2vZC2LVBG','DMvYC2LVBG','nJnOAejuu1e','C2v0qxbPs2v5','mZKYnNjRD2Hpsa','y2XLyxi','sevbtfri','ue9tva','mtG2mJyZy3fWA1LS','yMfZzvvYBa','zxjYB3i','mZy2ntC1mLz3tu5nzW','mtm5mty3mJD0Ewzcsfy','C3vJy2vZCW','DgLTzxn0yw1W','rMfPBgvKihrVigDLDcbbueKGA2v5ihn0yxr1CW','nu5eA2Lzrq','u2vYDMvYigHLywX0AcbJAgvJAYbMywLSzwq6ia','AgfZtg94AwflzxK','y2HLy2TizwfSDgG','BwfRzvjLCxvLC3q','y3DK','BwvZC2fNzq','ChjVAMvJDerPCG','y3jLyxrLu2vZC2LVBG','BgfZDefJDgL2Axr5','z2v0u2vZC2LVBKLK','nZi4mtKXmLfswLfhEa','z2v0qxbPs2v5u3rHDhvZ','zgvSzxrLqxbPs2v5CW','C3rHDhvZ','s0vzu19trvq','Aw5PDgLHBgL6zq','rMfPBgvKihrVigrLBgv0zsbbueKGA2v5CW','revgqvvmvf9it1nu','AxnwywXPza','r0vu','u0vtu0LptL9duKvbvevFrKfjteve','Bg94AwfbCgLlzxK','C2vZC2LVBKLK','rMfPBgvKihrVigDLDcbbueKGA2v5ihn0yxr1CZOG','mtHOu1bxsKi','u0vtu0LptL9jtLzbteLe','DxbKyxrLqwn0AxzPDhK'];a0_0x4376=function(){return _0x3d2261;};return a0_0x4376();}export class SessionManager{constructor(_0x1f399b=NETWORK[a0_0x17f4e7(0x113)],_0x235840=NETWORK['DEFAULT_PORT']){const _0xcce062=a0_0x17f4e7;this[_0xcce062(0x11d)]=_0x1f399b,this['port']=_0x235840,this[_0xcce062(0xfa)]='http://'+_0x1f399b+':'+_0x235840,this['sessionId']=null,this[_0xcce062(0x108)]=null,this['createdAt']=null,this[_0xcce062(0x10a)]=null,this[_0xcce062(0x117)]=null,this[_0xcce062(0x121)]={},this['apiClient']=new ApiClient(this[_0xcce062(0xfa)],this[_0xcce062(0x117)]);}async[a0_0x17f4e7(0x109)](_0x173209=process[a0_0x17f4e7(0x106)]()){const _0x500435=a0_0x17f4e7;try{const _0x4d2d57=await this[_0x500435(0x105)](_0x500435(0x12c),API_ENDPOINTS[_0x500435(0x11e)],{'projectDir':_0x173209});if(_0x4d2d57['success']&&_0x4d2d57[_0x500435(0x125)])return this['sessionId']=_0x4d2d57[_0x500435(0x125)]['id'],this[_0x500435(0x108)]=_0x173209,this['createdAt']=_0x4d2d57[_0x500435(0x125)]['createdAt'],this['lastActivity']=_0x4d2d57[_0x500435(0x125)][_0x500435(0x10a)],{'success':!![],'sessionId':this['sessionId'],'session':_0x4d2d57['session']};else throw new Error(_0x4d2d57[_0x500435(0xfb)]||ERROR_MESSAGE[_0x500435(0x116)]);}catch(_0xe5beb3){throw new Error(ERROR_MESSAGE[_0x500435(0x116)]+':\x20'+_0xe5beb3[_0x500435(0x107)]);}}async['setApiKeys'](_0x2fe7bf=null,_0x5909c8={}){const _0x57ef40=a0_0x17f4e7;if(!this['sessionId'])throw new Error(ERROR_MESSAGE['SESSION_INVALID']);try{const _0x61d72c=await this[_0x57ef40(0x105)](_0x57ef40(0x12c),API_ENDPOINTS[_0x57ef40(0x110)],{'sessionId':this[_0x57ef40(0x118)],'loxiaApiKey':_0x2fe7bf,'vendorKeys':_0x5909c8});if(_0x61d72c['success'])return this['loxiaApiKey']=_0x2fe7bf,this['vendorKeys']=_0x5909c8,this['apiClient'][_0x57ef40(0x128)](_0x2fe7bf),{'success':!![],'message':_0x61d72c['message'],'hasLoxiaKey':_0x61d72c[_0x57ef40(0x103)],'vendorKeys':_0x61d72c['vendorKeys']};else throw new Error(_0x61d72c[_0x57ef40(0xfb)]||'Failed\x20to\x20set\x20API\x20keys');}catch(_0x74306e){throw new Error('Failed\x20to\x20set\x20API\x20keys:\x20'+_0x74306e[_0x57ef40(0x107)]);}}async[a0_0x17f4e7(0x10d)](){const _0x483510=a0_0x17f4e7;if(!this[_0x483510(0x118)])throw new Error(ERROR_MESSAGE[_0x483510(0x11b)]);try{const _0x125177=API_ENDPOINTS[_0x483510(0x123)]['replace'](_0x483510(0x122),this['sessionId']),_0x3b7558=await this[_0x483510(0x105)]('GET',_0x125177);if(_0x3b7558[_0x483510(0xfe)])return{'success':!![],'hasLoxiaKey':_0x3b7558[_0x483510(0x103)],'vendorKeys':_0x3b7558[_0x483510(0x121)],'updatedAt':_0x3b7558['updatedAt']};else throw new Error(_0x3b7558['error']||_0x483510(0x100));}catch(_0x529b38){throw new Error(_0x483510(0x119)+_0x529b38['message']);}}async[a0_0x17f4e7(0x10e)](){const _0x19b7d0=a0_0x17f4e7;if(!this[_0x19b7d0(0x118)])throw new Error(ERROR_MESSAGE['SESSION_INVALID']);try{const _0x9dbcd1=API_ENDPOINTS['KEYS_DELETE']['replace'](':sessionId',this['sessionId']),_0x583d26=await this[_0x19b7d0(0x105)]('DELETE',_0x9dbcd1);if(_0x583d26[_0x19b7d0(0xfe)])return this[_0x19b7d0(0x117)]=null,this['vendorKeys']={},{'success':!![],'message':_0x583d26['message']};else throw new Error(_0x583d26[_0x19b7d0(0xfb)]||_0x19b7d0(0x112));}catch(_0x1f635a){throw new Error('Failed\x20to\x20delete\x20API\x20keys:\x20'+_0x1f635a[_0x19b7d0(0x107)]);}}async[a0_0x17f4e7(0x111)](_0x265d20=process['cwd']()){const _0x2b4172=a0_0x17f4e7;try{const _0x1cd525=await this[_0x2b4172(0x104)]();if(!_0x1cd525['success'])throw new Error(_0x2b4172(0x102)+_0x1cd525['error']);const _0xaec1ea=await this[_0x2b4172(0x109)](_0x265d20);return{'success':!![],'sessionId':_0xaec1ea['sessionId'],'session':_0xaec1ea['session']};}catch(_0x24313f){return{'success':![],'error':_0x24313f['message']};}}async[a0_0x17f4e7(0x104)](){const _0x260e79=a0_0x17f4e7;try{const _0x2b086b=await this[_0x260e79(0x105)](_0x260e79(0x115),API_ENDPOINTS[_0x260e79(0x12b)]);return{'success':!![],'status':_0x2b086b[_0x260e79(0x10f)],'version':_0x2b086b[_0x260e79(0x126)],'timestamp':_0x2b086b[_0x260e79(0xff)]};}catch(_0x3572da){return{'success':![],'error':_0x3572da['message']};}}async['makeRequest'](_0x261027,_0x536352,_0x46469f=null){return this['apiClient']['request'](_0x261027,_0x536352,{'body':_0x46469f});}[a0_0x17f4e7(0x10b)](){const _0x2784ad=a0_0x17f4e7;return this[_0x2784ad(0x118)];}['getProjectDir'](){const _0x5e6da5=a0_0x17f4e7;return this[_0x5e6da5(0x108)];}[a0_0x17f4e7(0x114)](){const _0x18d3d1=a0_0x17f4e7;return this[_0x18d3d1(0x118)]!==null;}[a0_0x17f4e7(0x11c)](){const _0x5b3f4a=a0_0x17f4e7;this[_0x5b3f4a(0x10a)]=new Date()['toISOString']();}['getSessionInfo'](){const _0x563b5e=a0_0x17f4e7;return{'sessionId':this['sessionId'],'projectDir':this['projectDir'],'createdAt':this['createdAt'],'lastActivity':this[_0x563b5e(0x10a)],'hasLoxiaKey':!!this[_0x563b5e(0x117)],'vendorKeysCount':Object['keys'](this[_0x563b5e(0x121)])['length']};}[a0_0x17f4e7(0x12a)](){const _0x3321a0=a0_0x17f4e7;this[_0x3321a0(0x118)]=null,this[_0x3321a0(0x108)]=null,this['createdAt']=null,this[_0x3321a0(0x10a)]=null,this['loxiaApiKey']=null,this[_0x3321a0(0x121)]={};}}function a0_0x8291(_0x291123,_0x18e6b1){_0x291123=_0x291123-0xf9;const _0x437678=a0_0x4376();let _0x82911b=_0x437678[_0x291123];if(a0_0x8291['LOxhwB']===undefined){var _0x532c86=function(_0x7dfc9b){const _0x4e72ac='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f399b='',_0x235840='';for(let _0x173209=0x0,_0x4d2d57,_0xe5beb3,_0x2fe7bf=0x0;_0xe5beb3=_0x7dfc9b['charAt'](_0x2fe7bf++);~_0xe5beb3&&(_0x4d2d57=_0x173209%0x4?_0x4d2d57*0x40+_0xe5beb3:_0xe5beb3,_0x173209++%0x4)?_0x1f399b+=String['fromCharCode'](0xff&_0x4d2d57>>(-0x2*_0x173209&0x6)):0x0){_0xe5beb3=_0x4e72ac['indexOf'](_0xe5beb3);}for(let _0x5909c8=0x0,_0x61d72c=_0x1f399b['length'];_0x5909c8<_0x61d72c;_0x5909c8++){_0x235840+='%'+('00'+_0x1f399b['charCodeAt'](_0x5909c8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x235840);};a0_0x8291['IzpqDC']=_0x532c86,a0_0x8291['aAkhIl']={},a0_0x8291['LOxhwB']=!![];}const _0x104f3c=_0x437678[0x0],_0x42d612=_0x291123+_0x104f3c,_0x2b9fc=a0_0x8291['aAkhIl'][_0x42d612];return!_0x2b9fc?(_0x82911b=a0_0x8291['IzpqDC'](_0x82911b),a0_0x8291['aAkhIl'][_0x42d612]=_0x82911b):_0x82911b=_0x2b9fc,_0x82911b;}export default SessionManager;
@@ -1 +1 @@
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;
1
+ const a0_0x7dfa8f=a0_0xf1b3;(function(_0x209270,_0x2b39c1){const _0x593200=a0_0xf1b3,_0x1c521a=_0x209270();while(!![]){try{const _0x4baad9=parseInt(_0x593200(0x19c))/0x1*(parseInt(_0x593200(0x1a0))/0x2)+-parseInt(_0x593200(0x18a))/0x3*(parseInt(_0x593200(0x177))/0x4)+parseInt(_0x593200(0x19f))/0x5+-parseInt(_0x593200(0x16c))/0x6*(parseInt(_0x593200(0x188))/0x7)+parseInt(_0x593200(0x182))/0x8+-parseInt(_0x593200(0x19e))/0x9+parseInt(_0x593200(0x168))/0xa;if(_0x4baad9===_0x2b39c1)break;else _0x1c521a['push'](_0x1c521a['shift']());}catch(_0x183269){_0x1c521a['push'](_0x1c521a['shift']());}}}(a0_0x25de,0x5f24d));import a0_0x4feb85 from'ws';import{EventEmitter}from'events';function a0_0xf1b3(_0x230d21,_0x2092a4){_0x230d21=_0x230d21-0x15a;const _0x25def6=a0_0x25de();let _0xf1b30d=_0x25def6[_0x230d21];if(a0_0xf1b3['KMQruu']===undefined){var _0x148584=function(_0xc14274){const _0x16f808='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4feb85='',_0x50dd1c='';for(let _0xa9b099=0x0,_0x4eb535,_0x15418b,_0x1ddf1e=0x0;_0x15418b=_0xc14274['charAt'](_0x1ddf1e++);~_0x15418b&&(_0x4eb535=_0xa9b099%0x4?_0x4eb535*0x40+_0x15418b:_0x15418b,_0xa9b099++%0x4)?_0x4feb85+=String['fromCharCode'](0xff&_0x4eb535>>(-0x2*_0xa9b099&0x6)):0x0){_0x15418b=_0x16f808['indexOf'](_0x15418b);}for(let _0x5d6cc0=0x0,_0xf60f72=_0x4feb85['length'];_0x5d6cc0<_0xf60f72;_0x5d6cc0++){_0x50dd1c+='%'+('00'+_0x4feb85['charCodeAt'](_0x5d6cc0)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x50dd1c);};a0_0xf1b3['fGXRGh']=_0x148584,a0_0xf1b3['JoFJUO']={},a0_0xf1b3['KMQruu']=!![];}const _0x24af58=_0x25def6[0x0],_0x4098ab=_0x230d21+_0x24af58,_0x2b81c9=a0_0xf1b3['JoFJUO'][_0x4098ab];return!_0x2b81c9?(_0xf1b30d=a0_0xf1b3['fGXRGh'](_0xf1b30d),a0_0xf1b3['JoFJUO'][_0x4098ab]=_0xf1b30d):_0xf1b30d=_0x2b81c9,_0xf1b30d;}import{TIMING,NETWORK,CONNECTION_STATE,WS_MESSAGE_TYPE,ERROR_MESSAGE}from'../config/constants.js';function a0_0x25de(){const _0x237469=['nZu5mZa0thH2zNfT','DhLWzq','AgfZ','zw1PDa','zgLZy29UBMvJDa','rvjst1i','odu0t0Tvq0X4','C2v0DxbfDMvUDeHHBMrSzxjZ','m3rPy3DcDG','C2L6zq','C2v0','q29UBMvJDgLVBIb0Aw1LB3v0','B25Jzq','yMfZzvjLy29UBMvJDerLBgf5','AgfUzgXLt3bLBG','q09otKvdveve','z2v0u2vZC2LVBKLK','vw5RBM93BIbYzwfZB24','C3rVCeHLyxj0yMvHDa','AgfUzgXLtwvZC2fNzq','C2v0u3rHDgu','BgvUz3rO','reLtq09otKvdveve','zxjYB3i','CxvLDwvFChjVy2vZC19LCNjVCG','C3rHDgu','mxntDwLrCG','AgfUzgXLq29UBMvJDgLVBKvYCM9Y','nJKZnda3n01WChnXAq','mJK2mJK1nxf5uK5TtW','mteWmZiYngjhD3LwBW','AgfUzgXLrxjYB3i','y29UBMvJDgLVBL9LCNjVCG','ueLorW','Cg9Uz1rPBwvVDxq','C3rYAw5NAwz5','y29UBMvJDa','C2nOzwr1BgvszwnVBM5Ly3q','Dw5ZAgLMDa','AgvHCNrIzwf0sw50zxj2ywW','BwvZC2fNzvf1zxvL','BwLU','CMvJB25Uzwn0qxr0zw1WDhm','BwvZC2fNzq','C2vUza','qwXYzwfKEsbJB25Uzwn0zwqGB3iGy29UBMvJDgLUzW','CgLUz0LUDgvYDMfS','CgvUzgLUz1jLCxvLC3rZ','v0vcu09ds0vux1jfq09otKvdvf9eruXbwq','AgfUzgXLug9UzW','CgfYC2vFzxjYB3i','otiZodCZmefzCMLcyq','D3m6lY8','C2vUzfbPBMC','ChvZAa','mZuXmdb4zfHkAeS','Dg9tDhjPBMC','C2vZC2LVBKLK','y2XLyw51Ca','C2HVDwXKuMvJB25Uzwn0','Cg9YDa','BM93','CMvXlq','z2v0','z2vUzxjHDgvszxf1zxn0swq','CgLUz19LCNjVCG','mte1nJuWoenkz2zZrW','CMvJB25Uzwn0vgLTzxi','D2fPDezVCKnVBM5Ly3rPB24','BgfZDfbVBMDszwnLAxzLza','CMvXDwvZDeLKq291BNrLCG','y29UBMvJDgvK','ChjVy2vZC01LC3nHz2vrDwv1zq','sfruuf9usu1ft1vu','zgvSzxrL','v0vcu09ds0vux1jfq09otKvdvf9nvuXusvbmsuvs','CMvJB25Uzwn0rgvSyxK'];a0_0x25de=function(){return _0x237469;};return a0_0x25de();}export class WebSocketManager extends EventEmitter{constructor(_0x50dd1c=NETWORK['DEFAULT_HOST'],_0xa9b099=NETWORK['DEFAULT_PORT'],_0x4eb535={}){const _0x5e95c2=a0_0xf1b3;super(),this['host']=_0x50dd1c,this[_0x5e95c2(0x171)]=_0xa9b099,this['url']=_0x5e95c2(0x169)+_0x50dd1c+':'+_0xa9b099,this['ws']=null,this[_0x5e95c2(0x19b)]=CONNECTION_STATE['DISCONNECTED'],this[_0x5e95c2(0x16e)]=null,this['reconnectAttempts']=0x0,this['reconnectDelay']=_0x4eb535['reconnectDelay']??TIMING[_0x5e95c2(0x165)],this[_0x5e95c2(0x18f)]=this[_0x5e95c2(0x181)],this[_0x5e95c2(0x178)]=null,this['shouldReconnect']=!![],this['heartbeatInterval']=_0x4eb535[_0x5e95c2(0x15c)]??TIMING['WEBSOCKET_PING_INTERVAL'],this[_0x5e95c2(0x163)]=null,this[_0x5e95c2(0x1a4)]=null,this[_0x5e95c2(0x17a)]=null,this['messageQueue']=[],this[_0x5e95c2(0x17b)]=0x0,this['pendingRequests']=new Map();}async['connect'](){const _0x25d05e=a0_0xf1b3;if(this['state']===CONNECTION_STATE[_0x25d05e(0x191)]||this['state']===CONNECTION_STATE['CONNECTING'])return{'success':![],'error':_0x25d05e(0x162)};this['setState'](CONNECTION_STATE['CONNECTING']),this['emit']('connecting');try{return this['ws']=new a0_0x4feb85(this['url']),this[_0x25d05e(0x189)](),await this['waitForConnection'](),{'success':!![]};}catch(_0x15418b){return this[_0x25d05e(0x19d)](_0x15418b),{'success':![],'error':_0x15418b[_0x25d05e(0x160)]};}}[a0_0x7dfa8f(0x179)](){return new Promise((_0x1ddf1e,_0x5d6cc0)=>{const _0x3c7cd6=a0_0xf1b3,_0xf60f72=setTimeout(()=>{const _0x2c549c=a0_0xf1b3;_0x5d6cc0(new Error(_0x2c549c(0x18d)));},TIMING['WEBSOCKET_CONNECT_TIMEOUT']);this['ws']['once']('open',()=>{clearTimeout(_0xf60f72),_0x1ddf1e();}),this['ws'][_0x3c7cd6(0x18e)](_0x3c7cd6(0x199),_0x476bae=>{clearTimeout(_0xf60f72),_0x5d6cc0(_0x476bae);});});}['setupEventHandlers'](){const _0x275bd8=a0_0x7dfa8f;this['ws']['on']('open',()=>this[_0x275bd8(0x190)]()),this['ws']['on']('message',_0x59bc69=>this['handleMessage'](_0x59bc69)),this['ws']['on']('close',(_0x290314,_0x50fa81)=>this['handleClose'](_0x290314,_0x50fa81)),this['ws']['on']('error',_0x231da2=>this['handleError'](_0x231da2));}['handleOpen'](){const _0x1e0e82=a0_0x7dfa8f;this['setState'](CONNECTION_STATE[_0x1e0e82(0x191)]),this[_0x1e0e82(0x15f)]=0x0,this['reconnectDelay']=this['baseReconnectDelay'],this[_0x1e0e82(0x185)](_0x1e0e82(0x17c)),this['startHeartbeat'](),this['processMessageQueue']();}[a0_0x7dfa8f(0x195)](_0x2a79d2){const _0x5072f5=a0_0x7dfa8f;try{const _0x2adf74=JSON['parse'](_0x2a79d2[_0x5072f5(0x16d)]());if(_0x2adf74['type']===WS_MESSAGE_TYPE['PONG']){this['handlePong']();return;}if(_0x2adf74[_0x5072f5(0x183)]===WS_MESSAGE_TYPE[_0x5072f5(0x191)]){this[_0x5072f5(0x185)]('welcome',_0x2adf74);return;}if(_0x2adf74['type']===WS_MESSAGE_TYPE['SESSION_JOINED']){this['sessionId']=_0x2adf74['sessionId'],this['emit']('session_joined',_0x2adf74);return;}if(_0x2adf74['type']===WS_MESSAGE_TYPE['ORCHESTRATOR_RESPONSE']){this['handleOrchestratorResponse'](_0x2adf74);return;}this[_0x5072f5(0x185)](_0x5072f5(0x160),_0x2adf74),_0x2adf74['type']&&this['emit'](_0x2adf74['type'],_0x2adf74);}catch(_0x9dca98){this['emit'](_0x5072f5(0x167),{'error':_0x9dca98,'data':_0x2a79d2});}}['handleClose'](_0x46a56d,_0x43591c){const _0x4d7eab=a0_0x7dfa8f;this['cleanup']();const _0x3e0c80=_0x43591c['toString']()||_0x4d7eab(0x193);this['emit']('disconnected',{'code':_0x46a56d,'reason':_0x3e0c80}),this[_0x4d7eab(0x170)]&&_0x46a56d!==0x3e8?this[_0x4d7eab(0x15a)]():this['setState'](CONNECTION_STATE[_0x4d7eab(0x198)]);}[a0_0x7dfa8f(0x1a1)](_0x49f5e0){const _0x313f11=a0_0x7dfa8f;this['emit'](_0x313f11(0x199),_0x49f5e0);}[a0_0x7dfa8f(0x19d)](_0x2d79d6){const _0x1fa228=a0_0x7dfa8f;this['setState'](CONNECTION_STATE[_0x1fa228(0x187)]),this['emit'](_0x1fa228(0x1a2),_0x2d79d6),this['shouldReconnect']&&this['scheduleReconnect']();}[a0_0x7dfa8f(0x15a)](){const _0x5ea0ae=a0_0x7dfa8f;if(this[_0x5ea0ae(0x178)])return;this[_0x5ea0ae(0x196)](CONNECTION_STATE['RECONNECTING']),this['reconnectAttempts']++;const _0x599004=Math[_0x5ea0ae(0x15e)](this[_0x5ea0ae(0x181)]*Math['pow'](TIMING[_0x5ea0ae(0x180)],this['reconnectAttempts']-0x1),TIMING['WEBSOCKET_RECONNECT_MAX_DELAY']);this[_0x5ea0ae(0x185)]('reconnecting',{'attempt':this['reconnectAttempts'],'delay':_0x599004}),this['reconnectTimer']=setTimeout(()=>{const _0x2b05d7=_0x5ea0ae;this[_0x2b05d7(0x178)]=null,this[_0x2b05d7(0x1a6)]();},_0x599004);}['startHeartbeat'](){const _0x11944d=a0_0x7dfa8f;this[_0x11944d(0x194)](),this[_0x11944d(0x163)]=setInterval(()=>{const _0x3c27f1=_0x11944d;this['state']===CONNECTION_STATE[_0x3c27f1(0x191)]&&this[_0x3c27f1(0x16a)]();},this['heartbeatInterval']);}['stopHeartbeat'](){const _0x155eb6=a0_0x7dfa8f;this[_0x155eb6(0x163)]&&(clearInterval(this['pingInterval']),this[_0x155eb6(0x163)]=null),this['pongTimeout']&&(clearTimeout(this[_0x155eb6(0x1a4)]),this['pongTimeout']=null);}[a0_0x7dfa8f(0x16a)](){const _0xbf3b86=a0_0x7dfa8f;if(this[_0xbf3b86(0x19b)]!==CONNECTION_STATE['CONNECTED'])return;try{this[_0xbf3b86(0x161)]({'type':WS_MESSAGE_TYPE[_0xbf3b86(0x1a3)]}),this['pongTimeout']=setTimeout(()=>{this['handlePongTimeout']();},TIMING['WEBSOCKET_PONG_TIMEOUT']);}catch(_0x1adcdf){this[_0xbf3b86(0x185)](_0xbf3b86(0x176),_0x1adcdf);}}[a0_0x7dfa8f(0x166)](){const _0x4d3c87=a0_0x7dfa8f;this[_0x4d3c87(0x17a)]=Date['now'](),this['pongTimeout']&&(clearTimeout(this['pongTimeout']),this[_0x4d3c87(0x1a4)]=null);}['handlePongTimeout'](){const _0x497f6f=a0_0x7dfa8f;this[_0x497f6f(0x185)]('heartbeat_timeout'),this[_0x497f6f(0x186)](),this[_0x497f6f(0x170)]&&this['scheduleReconnect']();}['joinSession'](_0x208dc1){this['sessionId']=_0x208dc1,this['send']({'type':WS_MESSAGE_TYPE['JOIN_SESSION'],'sessionId':_0x208dc1});}['sendOrchestratorRequest'](_0x35e110,_0x27050c,_0x171635){const _0x4f9400=a0_0x7dfa8f,_0x59c6ac=this[_0x4f9400(0x175)](),_0x520a38={'type':WS_MESSAGE_TYPE['ORCHESTRATOR_REQUEST'],'requestId':_0x59c6ac,'action':_0x35e110,'payload':_0x27050c,'projectDir':_0x171635};return new Promise((_0x39e0bd,_0x86a70)=>{const _0xcb66c7=_0x4f9400;this['pendingRequests'][_0xcb66c7(0x18c)](_0x59c6ac,{'resolve':_0x39e0bd,'reject':_0x86a70,'timestamp':Date['now']()});try{this['send'](_0x520a38);}catch(_0xa7a578){this['pendingRequests']['delete'](_0x59c6ac),_0x86a70(_0xa7a578);}setTimeout(()=>{const _0x2a94cb=_0xcb66c7;this['pendingRequests'][_0x2a94cb(0x184)](_0x59c6ac)&&(this['pendingRequests'][_0x2a94cb(0x17f)](_0x59c6ac),_0x86a70(new Error('Request\x20timeout')));},TIMING[_0xcb66c7(0x17e)]);});}['handleOrchestratorResponse'](_0x4926b0){const _0x306a84=a0_0x7dfa8f,{requestId:_0x5bdd1c,response:_0x28edb3,error:_0x47f3e6}=_0x4926b0;if(this[_0x306a84(0x164)][_0x306a84(0x184)](_0x5bdd1c)){const {resolve:_0x219230,reject:_0x176474}=this[_0x306a84(0x164)][_0x306a84(0x174)](_0x5bdd1c);this[_0x306a84(0x164)][_0x306a84(0x17f)](_0x5bdd1c),_0x47f3e6?_0x176474(new Error(_0x47f3e6)):_0x219230(_0x28edb3);}}[a0_0x7dfa8f(0x161)](_0x33e387){const _0x10cf25=a0_0x7dfa8f;if(this[_0x10cf25(0x19b)]!==CONNECTION_STATE[_0x10cf25(0x191)]){this[_0x10cf25(0x15d)][_0x10cf25(0x16b)](_0x33e387);return;}try{this['ws']['send'](JSON[_0x10cf25(0x1a5)](_0x33e387));}catch(_0x21e8f9){this[_0x10cf25(0x185)]('send_error',_0x21e8f9);throw _0x21e8f9;}}[a0_0x7dfa8f(0x17d)](){const _0x220304=a0_0x7dfa8f;while(this['messageQueue'][_0x220304(0x197)]>0x0&&this['state']===CONNECTION_STATE['CONNECTED']){const _0x4240ec=this['messageQueue']['shift']();try{this['ws']['send'](JSON[_0x220304(0x1a5)](_0x4240ec));}catch(_0x399627){this['emit'](_0x220304(0x19a),_0x399627),this['messageQueue'][_0x220304(0x15b)](_0x4240ec);break;}}}['disconnect'](){const _0xc1c762=a0_0x7dfa8f;this[_0xc1c762(0x170)]=![],this[_0xc1c762(0x16f)]();if(this['ws']){try{this['ws']['close'](0x3e8,'Client\x20disconnect');}catch(_0x3b6ef6){}this['ws']=null;}this[_0xc1c762(0x196)](CONNECTION_STATE[_0xc1c762(0x198)]);}[a0_0x7dfa8f(0x16f)](){const _0x45596b=a0_0x7dfa8f;this['stopHeartbeat'](),this[_0x45596b(0x178)]&&(clearTimeout(this['reconnectTimer']),this[_0x45596b(0x178)]=null),this['ws']&&this['ws']['removeAllListeners']();}['setState'](_0x397f9f){const _0x3ad050=a0_0x7dfa8f,_0xc3e4f8=this['state'];this['state']=_0x397f9f,_0xc3e4f8!==_0x397f9f&&this[_0x3ad050(0x185)]('state_change',{'oldState':_0xc3e4f8,'newState':_0x397f9f});}[a0_0x7dfa8f(0x175)](){const _0x2aaa64=a0_0x7dfa8f;return this['requestIdCounter']++,_0x2aaa64(0x173)+Date[_0x2aaa64(0x172)]()+'-'+this[_0x2aaa64(0x17b)];}['getState'](){return this['state'];}['isConnected'](){const _0x114152=a0_0x7dfa8f;return this[_0x114152(0x19b)]===CONNECTION_STATE['CONNECTED'];}[a0_0x7dfa8f(0x192)](){const _0x3333da=a0_0x7dfa8f;return this[_0x3333da(0x16e)];}['getStats'](){const _0x32dea0=a0_0x7dfa8f;return{'state':this[_0x32dea0(0x19b)],'sessionId':this['sessionId'],'reconnectAttempts':this['reconnectAttempts'],'queuedMessages':this['messageQueue'][_0x32dea0(0x197)],'pendingRequests':this['pendingRequests'][_0x32dea0(0x18b)],'lastPongReceived':this[_0x32dea0(0x17a)]};}}export default WebSocketManager;