devicely 2.3.3 → 2.3.5

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 (106) hide show
  1. package/README.md +168 -249
  2. package/bin/devicely.js +1 -1
  3. package/config/apps_presets.conf +19 -0
  4. package/lib/actionSchema.js +1 -0
  5. package/lib/advanced-logger.js +1 -1
  6. package/lib/aiProviders.js +1 -1
  7. package/lib/aiProvidersConfig.js +1 -1
  8. package/lib/androidDeviceDetection.js +1 -1
  9. package/lib/api/v1/auth.js +1 -0
  10. package/lib/api/v1/deviceResolver.js +1 -0
  11. package/lib/api/v1/index.js +1 -0
  12. package/lib/api/v1/operations.js +1 -0
  13. package/lib/api/v1/passcode.js +1 -0
  14. package/lib/api/v1/resultNormalizer.js +1 -0
  15. package/lib/api/v1/screenCapture.js +1 -0
  16. package/lib/api/v1/uiTree.js +1 -0
  17. package/lib/appListing.js +1 -0
  18. package/lib/appMappings.js +1 -1
  19. package/lib/cognitiveLocator.js +1 -1
  20. package/lib/commanderService.js +1 -1
  21. package/lib/deviceContextProvider.js +1 -0
  22. package/lib/deviceDetection.js +1 -1
  23. package/lib/deviceDriver.js +1 -0
  24. package/lib/deviceHealthMonitor.js +1 -0
  25. package/lib/devices.js +1 -1
  26. package/lib/doctor.js +1 -1
  27. package/lib/encryption.js +1 -1
  28. package/lib/executor.js +1 -1
  29. package/lib/frontend/asset-manifest.json +5 -7
  30. package/lib/frontend/index.html +1 -1
  31. package/lib/frontend/static/js/main.bd89f5ef.js +2 -0
  32. package/lib/hybridAI.js +1 -1
  33. package/lib/intelligentLocatorService.js +1 -1
  34. package/lib/lightweightAI.js +1 -1
  35. package/lib/localBuiltInAI.js +1 -1
  36. package/lib/localBuiltInAI_backup.js +1 -1
  37. package/lib/localBuiltInAI_simple.js +1 -1
  38. package/lib/locatorStrategy.js +1 -1
  39. package/lib/logger.js +1 -1
  40. package/lib/mcp/audit.js +1 -0
  41. package/lib/mcp/client.js +1 -0
  42. package/lib/mcp/clientConfigs.js +1 -0
  43. package/lib/mcp/format.js +1 -0
  44. package/lib/mcp/http.js +1 -0
  45. package/lib/mcp/index.js +1 -0
  46. package/lib/mcp/policy.js +1 -0
  47. package/lib/mcp/prompts.js +1 -0
  48. package/lib/mcp/resources.js +1 -0
  49. package/lib/mcp/schemas.js +1 -0
  50. package/lib/mcp/stdio.js +3 -0
  51. package/lib/mcp/tools/act.js +1 -0
  52. package/lib/mcp/tools/apps.js +1 -0
  53. package/lib/mcp/tools/devices.js +1 -0
  54. package/lib/mcp/tools/diagnostics.js +1 -0
  55. package/lib/mcp/tools/flow.js +1 -0
  56. package/lib/mcp/tools/multi.js +1 -0
  57. package/lib/mcp/tools/observe.js +1 -0
  58. package/lib/mcp/tools/recordings.js +1 -0
  59. package/lib/mjpegStream.js +1 -0
  60. package/lib/package.json +9 -1
  61. package/lib/quick-start-logger.js +1 -1
  62. package/lib/recordingSteps.js +1 -0
  63. package/lib/recordingStore.js +1 -0
  64. package/lib/replayEngine.js +1 -0
  65. package/lib/scriptLoader.js +1 -1
  66. package/lib/server.js +1 -1
  67. package/lib/tensorflowAI.js +1 -1
  68. package/lib/tinyAI.js +1 -1
  69. package/lib/universalSessionManager.js +1 -1
  70. package/lib/virtualDevices/androidEmulatorProvider.js +1 -0
  71. package/lib/virtualDevices/index.js +1 -0
  72. package/lib/virtualDevices/iosSimulatorCommands.js +1 -0
  73. package/lib/virtualDevices/iosSimulatorProvider.js +1 -0
  74. package/lib/virtualDevices/parsers.js +1 -0
  75. package/lib/virtualDevices/ports.js +1 -0
  76. package/lib/virtualDevices/toolchain.js +1 -0
  77. package/lib/virtualDevices/wdaSimulator.js +1 -0
  78. package/package.json +8 -14
  79. package/scripts/shell/android_device_control.enc +1 -1
  80. package/scripts/shell/connect_android_usb_multi_final.enc +1 -1
  81. package/scripts/shell/connect_ios_usb_multi_final.enc +1 -1
  82. package/scripts/shell/connect_ios_wireless_multi_final.enc +1 -1
  83. package/lib/.env.example +0 -20
  84. package/lib/aiProviders.js.strategic-backup +0 -657
  85. package/lib/devices.js.strategic-backup +0 -57
  86. package/lib/encryption.js.strategic-backup +0 -61
  87. package/lib/eslint.config.js +0 -1
  88. package/lib/executor.js.strategic-backup +0 -107
  89. package/lib/frontend/static/css/main.ed39ba12.css +0 -2
  90. package/lib/frontend/static/js/main.bb9425de.js +0 -3
  91. package/lib/jest.config.js +0 -1
  92. package/lib/logger-demo.js +0 -2
  93. package/lib/logger-integration-examples.js +0 -102
  94. package/lib/public/asset-manifest.json +0 -13
  95. package/lib/public/index.html +0 -1
  96. package/lib/public/static/css/main.ed39ba12.css +0 -2
  97. package/lib/public/voice-test.html +0 -156
  98. package/lib/server.js.strategic-backup +0 -6298
  99. package/lib/tensorflowAI.js.strategic-backup +0 -717
  100. package/lib/tests/__mocks__/logger.js +0 -12
  101. package/lib/tests/integration/deviceSync.test.js +0 -74
  102. package/lib/tests/setup/testSetup.js +0 -1
  103. package/lib/tests/unit/commanderService.test.js +0 -70
  104. package/lib/tsconfig.json +0 -18
  105. /package/lib/{public → frontend}/static/css/main.1bbcfef2.css +0 -0
  106. /package/lib/frontend/static/js/{main.bb9425de.js.LICENSE.txt → main.bd89f5ef.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- function _0x1fbf(_0x5b9cbe,_0x237b54){_0x5b9cbe=_0x5b9cbe-0x112;var _0x303b82=_0x303b();var _0x1fbf31=_0x303b82[_0x5b9cbe];if(_0x1fbf['bHPldg']===undefined){var _0x3458d5=function(_0x6c242b){var _0x2a1a85='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5e816f='',_0x1946fd='';for(var _0x49b97d=0x0,_0x1dd1f8,_0x32025b,_0x3054da=0x0;_0x32025b=_0x6c242b['charAt'](_0x3054da++);~_0x32025b&&(_0x1dd1f8=_0x49b97d%0x4?_0x1dd1f8*0x40+_0x32025b:_0x32025b,_0x49b97d++%0x4)?_0x5e816f+=String['fromCharCode'](0xff&_0x1dd1f8>>(-0x2*_0x49b97d&0x6)):0x0){_0x32025b=_0x2a1a85['indexOf'](_0x32025b);}for(var _0x1effa4=0x0,_0x2b43f8=_0x5e816f['length'];_0x1effa4<_0x2b43f8;_0x1effa4++){_0x1946fd+='%'+('00'+_0x5e816f['charCodeAt'](_0x1effa4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1946fd);};_0x1fbf['gyHUKU']=_0x3458d5,_0x1fbf['nGVMgi']={},_0x1fbf['bHPldg']=!![];}var _0x1a1c5a=_0x303b82[0x0],_0xae699d=_0x5b9cbe+_0x1a1c5a,_0x51849b=_0x1fbf['nGVMgi'][_0xae699d];return!_0x51849b?(_0x1fbf31=_0x1fbf['gyHUKU'](_0x1fbf31),_0x1fbf['nGVMgi'][_0xae699d]=_0x1fbf31):_0x1fbf31=_0x51849b,_0x1fbf31;}var _0x56394d=_0x1fbf;(function(_0x1c23c6,_0x974fe9){var _0xa6e323=_0x1fbf,_0x5636b4=_0x1c23c6();while(!![]){try{var _0x53e0a2=-parseInt(_0xa6e323(0x113))/0x1*(parseInt(_0xa6e323(0x129))/0x2)+-parseInt(_0xa6e323(0x127))/0x3*(-parseInt(_0xa6e323(0x124))/0x4)+parseInt(_0xa6e323(0x117))/0x5*(parseInt(_0xa6e323(0x128))/0x6)+-parseInt(_0xa6e323(0x115))/0x7+parseInt(_0xa6e323(0x11f))/0x8*(-parseInt(_0xa6e323(0x122))/0x9)+parseInt(_0xa6e323(0x121))/0xa*(parseInt(_0xa6e323(0x116))/0xb)+-parseInt(_0xa6e323(0x123))/0xc*(-parseInt(_0xa6e323(0x11c))/0xd);if(_0x53e0a2===_0x974fe9)break;else _0x5636b4['push'](_0x5636b4['shift']());}catch(_0x2dffce){_0x5636b4['push'](_0x5636b4['shift']());}}}(_0x303b,0xc2454));var _0x5e816f={};_0x5e816f[_0x56394d(0x12a)]=_0x56394d(0x114);var _0x1946fd={};_0x1946fd[_0x56394d(0x11e)]=_0x56394d(0x114),_0x1946fd[_0x56394d(0x11b)]='node',_0x1946fd[_0x56394d(0x11a)]=['<rootDir>/tests',_0x56394d(0x120)],_0x1946fd[_0x56394d(0x119)]=[_0x56394d(0x11d),_0x56394d(0x118)],_0x1946fd['transform']=_0x5e816f,_0x1946fd['coverageDirectory']=_0x56394d(0x126),_0x1946fd[_0x56394d(0x125)]=['src/**/*.{js,ts}','!src/**/*.d.ts'],module[_0x56394d(0x112)]=_0x1946fd;function _0x303b(){var _0x4c4dc5=['ntjsAMzbEgy','kIOVx190zxn0C19FlYOQlYOUkYH0C3X0C3H8ANmP','ChjLC2v0','mZKZnJG4ue1NCwL6','phjVB3reAxi+l3nYyW','mtbTBK9nEgi','mJDuwfvosLm','mtGWmZG3nM9JC1PQzq','mtyZmdH6v0XsuvG','y29SBgvJDenVDMvYywDLrNjVBq','y292zxjHz2u','ntDtzLLjvwG','odGYv0T3tgfk','mtmYntm4AxnkAffT','xI4Rxc4ODhn8Dhn4ksq','zxHWB3j0CW','ovjtyxnbDq','DhmTAMvZDa','mZG5otyXnNfYyvbqsW','mtuZnJmYmJDxCNPozMm','nZmWyuLdEwjg','kIOVpYGQlIKRkhnWzwn8DgvZDcKUkYH0C3X0C3H8ANmP','DgvZDe1HDgnO','CM9VDhm','DgvZDevUDMLYB25Tzw50'];_0x303b=function(){return _0x4c4dc5;};return _0x303b();}
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- const _0x3cbc46=_0x2ec6;(function(_0x103fc1,_0x4830fd){const _0x1414f3=_0x2ec6,_0x1d3639=_0x103fc1();while(!![]){try{const _0x159cc7=parseInt(_0x1414f3(0x1ee))/0x1*(parseInt(_0x1414f3(0x1fd))/0x2)+parseInt(_0x1414f3(0x201))/0x3+-parseInt(_0x1414f3(0x207))/0x4*(-parseInt(_0x1414f3(0x1af))/0x5)+parseInt(_0x1414f3(0x1cc))/0x6*(-parseInt(_0x1414f3(0x1bc))/0x7)+parseInt(_0x1414f3(0x19f))/0x8*(-parseInt(_0x1414f3(0x1d9))/0x9)+parseInt(_0x1414f3(0x1a5))/0xa+parseInt(_0x1414f3(0x1c5))/0xb;if(_0x159cc7===_0x4830fd)break;else _0x1d3639['push'](_0x1d3639['shift']());}catch(_0x3a3899){_0x1d3639['push'](_0x1d3639['shift']());}}}(_0x56ea,0xd9f60));const {DevicelyLogger}=require('./advanced-logger');function _0x56ea(){const _0x17e16c=['s3nbvhi','sMLnvfy','sKPhy0K','mJa2otK4qvf2AfrN','BwvTB3j5','rgv2AwnLignVBM5Ly3rPB24GDgLTzw91DcbHzNrLCIaZmcbZzwnVBMrZ','qMvHCMvYihnLy3jLDf90B2TLBL8XmJm0nq','yxrdALm','DgHYzxnOB2XK','cVcFLkCGpt09iensrufut1iGreLbr05pu1rjqYbnt0rfid09pq','mtu1nZm2nKL6vfvXEq','sMXZq0S','cVcFLi0Gpt09ierfvKvmt1bfuIberujvrYbjtKzpuK1bveLptIa9pt0','wffoz0S','yxv0Ag9YAxPHDgLVBG','AgTJrvq','DuX0t0O','Dg9ju09tDhjPBMC','cVcFK4OGpt09ifnfu1njt04Gu1rbveLtveLduYa9pt0','whvHuwq','y29TBwfUza','y29Uy3vYCMvUDf9KzxzPy2vZ','wwXAvMS','mteYntq4nKX1rfbZBG','vKH2Bgi','DM5UueG','mtCUnc4X','u2nHBM5PBMCGzM9YigrLDMLJzxmUlI4','Dxb0Aw1L','AgvHCfvZzwq','qMvHCMvYigv5sMHIr2nPt2Lksvv6stfoAuLZsw5snwndstzjA3byvKnkos4UlG','C2nYzwvUC2HVDf9Jyxb0DxjL','ywn0Aw9U','zgvIDwC','rNvSBcbZExn0zw0GC3rHDgu','y29TBwfUzf9SyxrLBMn5','mdaWmdGWmZaTmdaXodi0qtGYrtKWodaYrq','AvbOB25LideYifbYBW','s1Pozva','DgfWig9UigXVz2LUigj1DhrVBG','DMvYC2LVBG','C3DPCgu','rfzZD2K','C2vJDxjPDhK','mJq2CNfzCKrT','Cfj6CuO','txbirLy','C2j1qMW','q29TBwfUzhmGzxHLy3v0zwqGC3vJy2vZC2z1BgX5','CgvYzM9YBwfUy2u','Au9t','EhHjDKG','y291BNq','DgfW','zgv2AwnL','yxzNq29TBwfUzfrPBwu','tfjiAhC','Aw5MBW','D2fYBG','mtyYA2HgyujO','tePNq0q','u2vYDMvY','BMv0D29YAW','ndCYmti4s1fcD3nx','CM91BMq','sgLNAcbTzw1VCNKGDxnHz2uGzgv0zwn0zwq','zgv2AwnLq291BNq','rvffzue','C3fgtM0','mteXntuYogHJs2PKwG','zhvYyxrPB24','y3vYCMvUDfvZywDL','v3fIwhu','mJaZlJq1lJy3lJG5','Dg90ywXdB21Tyw5KCW','CgLK','cUkDJca9pt0Grvjst1iGseforeXjtKCGpt09','rgv2AwnLBhKGC2vYDMvYihn0yxj0zwqGB24GCg9YDcaZmdaW','z1P0weS','CgXHDgzVCM0','ww5VA0u','y29UBMvJDa','tw96AwXSys81lJaUlI4','C3rHCNruAw1LCG','z2v0u2vZC2LVBLn0yxrZ','v0z0v0i','BufwCxq','y2XPzw50x3H5EJC4oq','mJrtCgvjD0y','zNjVBq','A05NB2m','C3vJy2vZCW','C2vZC19HyMmXmJm0nty3odK','cVcFJQ8Gu3rHCNrPBMCGrgv2AwnLBhKGtg9Nz2vYierLBw8UlI4k','ndu2mdGZmhvusMHTrW','Ahr0CdOVlZeYnY4WlJaUmtO4mtaW','v2vIu29JA2v0ignVBM5Ly3rPB24Gzxn0ywjSAxnOzwq','Bg9N','mJaWtui','D3fAv2q','8j+tSsa9pt0GufvcteLdifvtrviGrvHqrvjjru5drsa9pt0','ue9tva','uhjVy2vZC2LUzYb2B2LJzsbJB21Tyw5K','DxnLCL8XmJm0nq','mJvpD2n2qMi','rJjmv1eYuJvqnJGZ','rMfPBgvKihrVignVBM5Ly3qGDg8Gzgv2AwnL','Cg9VBf8X','u1nSEwW','v0Liwuy','mJq1tui','wLfKC0K','Du1prva','q2rAD2q','zxjYB3i','D2rHug9YDa','Dwfly0e','mJfTBxLOwuO','CfPtqKe','z2fYyMfNzv9JB2XSzwn0Aw9Ux3rYAwDNzxjLza','BM93','BMfTzq','l2fWAs9LEgvJDxrL'];_0x56ea=function(){return _0x17e16c;};return _0x56ea();}async function runDemo(){const _0x7e5ac5=_0x2ec6,_0x50a067={};_0x50a067[_0x7e5ac5(0x210)]=_0x7e5ac5(0x1a4),_0x50a067[_0x7e5ac5(0x1b8)]=_0x7e5ac5(0x1ff),_0x50a067[_0x7e5ac5(0x1b7)]='DeviceManager',_0x50a067[_0x7e5ac5(0x1bb)]=_0x7e5ac5(0x1ab),_0x50a067[_0x7e5ac5(0x1b6)]=_0x7e5ac5(0x1dd),_0x50a067[_0x7e5ac5(0x19c)]=_0x7e5ac5(0x1e6),_0x50a067[_0x7e5ac5(0x1c4)]=_0x7e5ac5(0x1f4),_0x50a067[_0x7e5ac5(0x1b3)]=_0x7e5ac5(0x1e7),_0x50a067[_0x7e5ac5(0x1d1)]=_0x7e5ac5(0x1f7),_0x50a067['xptBb']=_0x7e5ac5(0x1a3),_0x50a067['wqZWd']=_0x7e5ac5(0x1eb),_0x50a067['KZNeP']=_0x7e5ac5(0x1f2),_0x50a067[_0x7e5ac5(0x205)]=_0x7e5ac5(0x1a7),_0x50a067['xxIvH']='Devicely/1.0.0',_0x50a067[_0x7e5ac5(0x1d2)]=_0x7e5ac5(0x1ac),_0x50a067[_0x7e5ac5(0x1db)]='screenshot',_0x50a067[_0x7e5ac5(0x20a)]=_0x7e5ac5(0x1ad),_0x50a067[_0x7e5ac5(0x1ef)]=_0x7e5ac5(0x1e9),_0x50a067[_0x7e5ac5(0x1a1)]='devicely-ai-v2.1',_0x50a067[_0x7e5ac5(0x1c3)]='screenshot_capture',_0x50a067[_0x7e5ac5(0x1c9)]=_0x7e5ac5(0x1cb),_0x50a067[_0x7e5ac5(0x206)]=_0x7e5ac5(0x1e4),_0x50a067[_0x7e5ac5(0x1f1)]='Authentication\x20attempt',_0x50a067[_0x7e5ac5(0x212)]=_0x7e5ac5(0x1ae),_0x50a067[_0x7e5ac5(0x1d5)]=_0x7e5ac5(0x20b),_0x50a067['pZSBA']=_0x7e5ac5(0x1e5),_0x50a067[_0x7e5ac5(0x1ec)]='ai_accuracy',_0x50a067[_0x7e5ac5(0x19d)]=_0x7e5ac5(0x1b0),_0x50a067[_0x7e5ac5(0x1da)]=_0x7e5ac5(0x1dc),_0x50a067[_0x7e5ac5(0x1f0)]='XCUITest',_0x50a067[_0x7e5ac5(0x1cf)]=_0x7e5ac5(0x1b2),_0x50a067['JlsCK']=_0x7e5ac5(0x20e),_0x50a067[_0x7e5ac5(0x1fa)]=_0x7e5ac5(0x1b5),_0x50a067[_0x7e5ac5(0x1fe)]=_0x7e5ac5(0x1a9),_0x50a067['YlZVk']=_0x7e5ac5(0x1be),_0x50a067[_0x7e5ac5(0x1c2)]=_0x7e5ac5(0x1d4),_0x50a067['WIHYF']='\x0a✅\x20Demo\x20completed!\x20Check\x20logs/\x20directory\x20for\x20file\x20outputs.';const _0x353765=_0x50a067;console[_0x7e5ac5(0x1a8)](_0x353765[_0x7e5ac5(0x210)]);const _0x41d78c=new DevicelyLogger(_0x353765[_0x7e5ac5(0x1b8)]),_0x52049e=new DevicelyLogger(_0x353765['uMOEP']),_0x4aa922=new DevicelyLogger('AI');console[_0x7e5ac5(0x1a8)](_0x353765['uaKcA']),_0x41d78c[_0x7e5ac5(0x1a2)](_0x7e5ac5(0x20f)),_0x41d78c[_0x7e5ac5(0x1fb)](_0x353765[_0x7e5ac5(0x1b6)]);const _0x5bf12f=_0x52049e[_0x7e5ac5(0x1f8)](_0x353765[_0x7e5ac5(0x19c)]),_0x12f0b9={};_0x12f0b9[_0x7e5ac5(0x211)]=_0x353765[_0x7e5ac5(0x1c4)],_0x12f0b9[_0x7e5ac5(0x1c0)]=_0x353765['SSlyl'],_0x12f0b9[_0x7e5ac5(0x1ea)]='17.4.1',_0x12f0b9[_0x7e5ac5(0x1ba)]=0x1fa4,_0x5bf12f[_0x7e5ac5(0x198)](_0x12f0b9),_0x52049e['command'](_0x353765[_0x7e5ac5(0x19c)],_0x353765[_0x7e5ac5(0x1d1)],{'x':0x96,'y':0x12c,'sessionId':_0x353765['xptBb'],'token':_0x7e5ac5(0x1e0)},0x78);const _0x220d5f={};_0x220d5f['x']=0x64,_0x220d5f['y']=0xc8;const _0x25d2f0={};_0x25d2f0['x']=0x190,_0x25d2f0['y']=0xc8;const _0x5e4424={};_0x5e4424[_0x7e5ac5(0x1a0)]=_0x220d5f,_0x5e4424['to']=_0x25d2f0,_0x5e4424[_0x7e5ac5(0x208)]=0x1f4,_0x52049e[_0x7e5ac5(0x1d6)](_0x353765[_0x7e5ac5(0x19c)],_0x353765[_0x7e5ac5(0x1aa)],_0x5e4424,0x15e),_0x41d78c[_0x7e5ac5(0x1a2)](_0x353765[_0x7e5ac5(0x1e8)]),console[_0x7e5ac5(0x1a8)](_0x7e5ac5(0x1ce)),_0x41d78c['debug'](_0x353765['EQEeA'],{'clientId':_0x7e5ac5(0x19e),'userAgent':_0x353765[_0x7e5ac5(0x1f5)],'remoteAddress':'192.168.1.100'});const _0x1d3b9c={};_0x1d3b9c[_0x7e5ac5(0x1d0)]=_0x7e5ac5(0x1c8),_0x41d78c[_0x7e5ac5(0x200)](_0x353765[_0x7e5ac5(0x1d2)],_0x7e5ac5(0x1c1),0xc8,{'command':_0x353765['vnnPH'],'deviceId':_0x353765[_0x7e5ac5(0x19c)],'headers':_0x1d3b9c},0x55),_0x4aa922[_0x7e5ac5(0x1e3)](_0x353765[_0x7e5ac5(0x20a)],{'input':_0x353765[_0x7e5ac5(0x1ef)],'confidence':0.92,'processingTime':0x2d,'model':_0x353765[_0x7e5ac5(0x1a1)]}),_0x41d78c[_0x7e5ac5(0x19a)](_0x353765['JiMTV']),await new Promise(_0x4750cb=>setTimeout(_0x4750cb,0x96));const _0x518e4c=_0x41d78c['endTimer'](_0x7e5ac5(0x1e1));console['log'](_0x353765[_0x7e5ac5(0x1c9)]),_0x41d78c['trace'](_0x353765[_0x7e5ac5(0x206)],{'processId':process[_0x7e5ac5(0x20d)],'nodeVersion':process['version'],'platform':process[_0x7e5ac5(0x211)],'memory':process['memoryUsage'](),'uptime':process[_0x7e5ac5(0x1de)]()}),_0x41d78c[_0x7e5ac5(0x1ed)](_0x353765[_0x7e5ac5(0x1f1)],{'userId':_0x353765['YnokE'],'ipAddress':_0x353765[_0x7e5ac5(0x1d5)],'userAgent':_0x7e5ac5(0x199),'timestamp':new Date()[_0x7e5ac5(0x1d3)](),'success':!![]}),_0x41d78c[_0x7e5ac5(0x1c6)](),_0x41d78c['performance'](_0x353765[_0x7e5ac5(0x1bd)],0x4b,'ms'),_0x41d78c[_0x7e5ac5(0x1f3)](_0x353765[_0x7e5ac5(0x1ec)],94.5,'%'),_0x41d78c['performance'](_0x7e5ac5(0x1d7),0x3,_0x7e5ac5(0x1f6));const _0x2cad7f=_0x52049e[_0x7e5ac5(0x1f8)](_0x7e5ac5(0x1e6));_0x2cad7f['connect']({'udid':_0x353765[_0x7e5ac5(0x19c)],'serialNumber':_0x353765[_0x7e5ac5(0x19d)],'wdaUrl':_0x7e5ac5(0x1a6),'capabilities':{'platformName':_0x353765['JJGcI'],'platformVersion':_0x353765[_0x7e5ac5(0x1da)],'deviceName':_0x353765['SSlyl'],'automationName':_0x353765[_0x7e5ac5(0x1f0)]},'internalState':{'connectionPool':_0x353765['XQNgK'],'lastHeartbeat':Date[_0x7e5ac5(0x1bf)](),'commandQueue':0x5}}),console[_0x7e5ac5(0x1a8)](_0x353765[_0x7e5ac5(0x1cd)]);try{throw new Error(_0x7e5ac5(0x1c7));}catch(_0x3747a9){_0x52049e[_0x7e5ac5(0x1b9)](_0x7e5ac5(0x1b1),_0x3747a9,{'deviceId':_0x7e5ac5(0x1e6),'attemptCount':0x3,'lastError':_0x3747a9['message']});}const _0x155ca0={};_0x155ca0[_0x7e5ac5(0x209)]=_0x353765[_0x7e5ac5(0x1fa)],_0x155ca0[_0x7e5ac5(0x1ca)]=_0x353765[_0x7e5ac5(0x1fe)],_0x155ca0[_0x7e5ac5(0x1e2)]=_0x353765[_0x7e5ac5(0x1d8)],_0x41d78c[_0x7e5ac5(0x1fc)](_0x7e5ac5(0x203),_0x155ca0),console['log'](_0x353765['KsATr']);const _0x4675f2=_0x41d78c[_0x7e5ac5(0x19b)]();console[_0x7e5ac5(0x1a8)]('Session\x20Stats:',{'sessionId':_0x4675f2['sessionId'],'uptime':Math[_0x7e5ac5(0x202)](_0x4675f2[_0x7e5ac5(0x1de)]/0x3e8)+'s','devices':_0x4675f2[_0x7e5ac5(0x204)],'commands':_0x4675f2[_0x7e5ac5(0x20c)],'avgCommandTime':Math[_0x7e5ac5(0x202)](_0x4675f2[_0x7e5ac5(0x1f9)])+'ms','memory':_0x4675f2['currentMemory'][_0x7e5ac5(0x1df)]+'MB'}),console[_0x7e5ac5(0x1a8)](_0x353765[_0x7e5ac5(0x1b4)]);}function _0x2ec6(_0x24221a,_0x14afd3){_0x24221a=_0x24221a-0x198;const _0x56ea53=_0x56ea();let _0x2ec68b=_0x56ea53[_0x24221a];if(_0x2ec6['qgQpfe']===undefined){var _0x4441ab=function(_0x17323a){const _0x131fc7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb501b1='',_0x2b2062='';for(let _0x116c37=0x0,_0x5ed7a4,_0xf7e464,_0x350233=0x0;_0xf7e464=_0x17323a['charAt'](_0x350233++);~_0xf7e464&&(_0x5ed7a4=_0x116c37%0x4?_0x5ed7a4*0x40+_0xf7e464:_0xf7e464,_0x116c37++%0x4)?_0xb501b1+=String['fromCharCode'](0xff&_0x5ed7a4>>(-0x2*_0x116c37&0x6)):0x0){_0xf7e464=_0x131fc7['indexOf'](_0xf7e464);}for(let _0x539681=0x0,_0xd3eed0=_0xb501b1['length'];_0x539681<_0xd3eed0;_0x539681++){_0x2b2062+='%'+('00'+_0xb501b1['charCodeAt'](_0x539681)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2b2062);};_0x2ec6['EpOxDR']=_0x4441ab,_0x2ec6['DDgWoo']={},_0x2ec6['qgQpfe']=!![];}const _0x20aa63=_0x56ea53[0x0],_0x28756c=_0x24221a+_0x20aa63,_0x1c3d27=_0x2ec6['DDgWoo'][_0x28756c];return!_0x1c3d27?(_0x2ec68b=_0x2ec6['EpOxDR'](_0x2ec68b),_0x2ec6['DDgWoo'][_0x28756c]=_0x2ec68b):_0x2ec68b=_0x1c3d27,_0x2ec68b;}runDemo()['catch'](console[_0x3cbc46(0x1b9)]);
@@ -1,102 +0,0 @@
1
- /**
2
- * Integration Example: How to use Devicely Advanced Logger in your existing code
3
- * This shows migration from console.log to the new logging system
4
- */
5
-
6
- // ============================================================================
7
- // BEFORE: Basic console logging
8
- // ============================================================================
9
-
10
- console.log('Starting device connection...');
11
- console.log('Device connected:', deviceId);
12
- console.error('Error occurred:', error);
13
-
14
- // ============================================================================
15
- // AFTER: Advanced Devicely Logging
16
- // ============================================================================
17
-
18
- const { DevicelyLogger } = require('./advanced-logger');
19
- const logger = new DevicelyLogger('DeviceManager');
20
-
21
- // Public user sees: "✅ Device connected"
22
- // Developer sees: "✅ Device connected to 00008030...802E" with device info
23
- // Creator sees: Full device info + internal diagnostics
24
- logger.success('Device connected');
25
-
26
- // Specific device logging with context
27
- const device = logger.device('00008030-001824A82E90802E');
28
- device.connect({
29
- platform: 'iOS',
30
- name: 'iPhone 12 Pro',
31
- version: '17.4.1'
32
- });
33
-
34
- // Command logging with performance tracking
35
- logger.startTimer('screenshot');
36
- logger.command('00008030-001824A82E90802E', 'screenshot', {
37
- format: 'png',
38
- quality: 0.8
39
- }, 150);
40
- logger.endTimer('screenshot');
41
-
42
- // Network request logging with automatic redaction
43
- logger.network('POST', '/wda/screenshot', 200, {
44
- sessionId: 'secret_session_123',
45
- authToken: 'Bearer xyz...'
46
- }, 150);
47
-
48
- // Error handling with context preservation
49
- try {
50
- // Some device operation
51
- } catch (error) {
52
- logger.error('Screenshot capture failed', error, {
53
- deviceId: '00008030-001824A82E90802E',
54
- attemptCount: 3,
55
- lastKnownState: 'connected'
56
- });
57
- }
58
-
59
- // ============================================================================
60
- // INTEGRATION WITH EXISTING SERVER.JS
61
- // ============================================================================
62
-
63
- // Replace existing logger import
64
- // OLD: const Logger = require('./logger');
65
- // NEW: const { DevicelyLogger } = require('./advanced-logger');
66
-
67
- // Your existing code will work with zero changes!
68
- const logger = new DevicelyLogger('Server');
69
-
70
- // All your existing methods work:
71
- logger.startup('Server started on port 3000'); // Now shows as ✅ success
72
- logger.debug('WebSocket connected'); // Respects debug levels
73
- logger.result('Command executed successfully'); // Now shows as 📱 info
74
-
75
- // ============================================================================
76
- // PERFORMANCE & SECURITY EXAMPLES
77
- // ============================================================================
78
-
79
- // Automatic memory tracking (Creator mode only)
80
- logger.memory();
81
-
82
- // Security event logging (Creator mode only)
83
- logger.security('Failed authentication attempt', {
84
- ipAddress: '192.168.1.100',
85
- userAgent: 'AttackBot/1.0',
86
- attemptCount: 5
87
- });
88
-
89
- // Performance metrics
90
- logger.performance('command_latency', 75, 'ms');
91
- logger.performance('device_count', 3, 'devices');
92
-
93
- // Session statistics
94
- const stats = logger.getSessionStats();
95
- console.log('Session Info:', {
96
- id: stats.sessionId,
97
- uptime: `${Math.round(stats.uptime / 1000)}s`,
98
- commands: stats.totalCommands,
99
- avgTime: `${Math.round(stats.avgCommandTime)}ms`
100
- });
101
-
102
- module.exports = logger;
@@ -1,13 +0,0 @@
1
- {
2
- "files": {
3
- "main.css": "/static/css/main.ed39ba12.css",
4
- "main.js": "/static/js/main.57cde2ff.js",
5
- "index.html": "/index.html",
6
- "main.ed39ba12.css.map": "/static/css/main.ed39ba12.css.map",
7
- "main.57cde2ff.js.map": "/static/js/main.57cde2ff.js.map"
8
- },
9
- "entrypoints": [
10
- "static/css/main.ed39ba12.css",
11
- "static/js/main.57cde2ff.js"
12
- ]
13
- }
@@ -1 +0,0 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Devicely - AI-Powered Device Pool Management - Control your iOS device pool with intelligent automation"/><title>Devicely - AI-Powered Device Pool</title><style>@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}</style><script defer="defer" src="/static/js/main.57cde2ff.js"></script><link href="/static/css/main.ed39ba12.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -1,2 +0,0 @@
1
- .commander-mode-container{margin-bottom:10px}.stop-btn-compact{background:linear-gradient(135deg,#f093fb,#f5576c);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:6px 16px;transition:all .2s}.stop-btn-compact:hover{box-shadow:0 3px 8px #f5576c66;transform:translateY(-1px)}.swap-btn-compact{height:auto!important;min-height:28px!important}.element-box{cursor:pointer;transition:all .2s ease-in-out}.element-box:hover rect{stroke-width:4;filter:brightness(1.3)}.screen-canvas{transition:transform .2s ease-in-out}.screen-canvas:active{transform:scale(.98)}.commander-canvas{position:relative}@media (prefers-color-scheme:dark){input[type=search],input[type=text]{background-color:#2d3748!important;color:#fff!important}input[type=search]::placeholder,input[type=text]::placeholder{color:#a0aec0!important}}@media (max-width:1200px){.screen-canvas-wrapper{max-width:400px}}@media (max-width:768px){.screen-canvas-wrapper{max-width:100%}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow{0%,to{box-shadow:0 0 5px #1890ff80}50%{box-shadow:0 0 20px #1890ffcc,0 0 30px #1890ff99}}.fade-in{animation:fadeIn .5s ease-out}.slide-in-right{animation:slideInRight .5s ease-out}.slide-in-left{animation:slideInLeft .5s ease-out}.scale-in{animation:scaleIn .4s cubic-bezier(.34,1.56,.64,1)}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.ping{animation:ping 2s cubic-bezier(0,0,.2,1) infinite}.bounce{animation:bounce 1s ease-in-out infinite}.float{animation:float 3s ease-in-out infinite}.shimmer{animation:shimmer 2s infinite;background:linear-gradient(90deg,#fff0 0,#ffffff4d 50%,#fff0);background-size:1000px 100%}.rotate{animation:rotate 1s linear}.glow{animation:glow 2s ease-in-out infinite}*{-webkit-tap-highlight-color:transparent}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}.smooth-hover:hover{box-shadow:0 10px 25px #00000026;transform:translateY(-2px)}.glass{background:#ffffff1a;border:1px solid #fff3}.glass,.glass-dark{backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%)}.glass-dark{background:#0003;border:1px solid #ffffff1a}.card-hover{transition:all .3s cubic-bezier(.4,0,.2,1)}.card-hover:hover{box-shadow:0 20px 40px #0003;transform:translateY(-4px) scale(1.02)}.ripple{overflow:hidden;position:relative}.ripple:after{background:#ffffff80;border-radius:50%;content:"";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.ripple:active:after{height:300px;width:300px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#0000000d;border-radius:10px}::-webkit-scrollbar-thumb{background:#0000004d;border-radius:10px;-webkit-transition:all .3s ease;transition:all .3s ease}::-webkit-scrollbar-thumb:hover{background:#00000080}.skeleton{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,#c8c8c84d 25%,#c8c8c880 50%,#c8c8c84d 75%);background-size:200% 100%;border-radius:8px}:focus-visible{border-radius:4px;outline:2px solid #1890ff99;outline-offset:2px}.no-select{-webkit-user-select:none;user-select:none}.gradient-text{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1890ff,#9254de);-webkit-background-clip:text;background-clip:text}.shadow-soft{box-shadow:0 2px 8px #00000014,0 4px 16px #00000014}.shadow-medium{box-shadow:0 4px 12px #0000001a,0 8px 24px #0000001a}.shadow-strong{box-shadow:0 8px 24px #00000026,0 16px 48px #00000026}.stagger-item{animation:fadeIn .5s ease-out forwards;opacity:0}.stagger-item:first-child{animation-delay:.05s}.stagger-item:nth-child(2){animation-delay:.1s}.stagger-item:nth-child(3){animation-delay:.15s}.stagger-item:nth-child(4){animation-delay:.2s}.stagger-item:nth-child(5){animation-delay:.25s}.stagger-item:nth-child(6){animation-delay:.3s}.stagger-item:nth-child(7){animation-delay:.35s}.stagger-item:nth-child(8){animation-delay:.4s}.micro-bounce:hover{animation:bounce .5s ease}.micro-rotate:hover{animation:rotate .5s ease}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
2
- /*# sourceMappingURL=main.ed39ba12.css.map*/
@@ -1,156 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Voice Input Test</title>
7
- <style>
8
- body {
9
- font-family: Arial, sans-serif;
10
- max-width: 800px;
11
- margin: 50px auto;
12
- padding: 20px;
13
- }
14
- button {
15
- padding: 15px 30px;
16
- font-size: 18px;
17
- margin: 10px;
18
- cursor: pointer;
19
- }
20
- #status {
21
- padding: 20px;
22
- margin: 20px 0;
23
- border: 2px solid #ddd;
24
- border-radius: 8px;
25
- min-height: 100px;
26
- }
27
- .listening { background: #ffe6e6; border-color: #ff0000; }
28
- .processing { background: #e6f3ff; border-color: #0066ff; }
29
- .result { background: #e6ffe6; border-color: #00ff00; }
30
- #logs {
31
- background: #f5f5f5;
32
- padding: 15px;
33
- border-radius: 8px;
34
- max-height: 300px;
35
- overflow-y: auto;
36
- font-family: monospace;
37
- font-size: 12px;
38
- }
39
- </style>
40
- </head>
41
- <body>
42
- <h1>🎤 Voice Input Test</h1>
43
-
44
- <button id="startBtn">Start Listening</button>
45
- <button id="stopBtn" disabled>Stop</button>
46
-
47
- <div id="status">
48
- <h3>Status: <span id="statusText">Ready</span></h3>
49
- <p><strong>Transcript:</strong> <span id="transcript">...</span></p>
50
- <p><strong>Is Final:</strong> <span id="isFinal">-</span></p>
51
- </div>
52
-
53
- <h3>Console Logs:</h3>
54
- <div id="logs"></div>
55
-
56
- <script>
57
- const startBtn = document.getElementById('startBtn');
58
- const stopBtn = document.getElementById('stopBtn');
59
- const statusDiv = document.getElementById('status');
60
- const statusText = document.getElementById('statusText');
61
- const transcriptSpan = document.getElementById('transcript');
62
- const isFinalSpan = document.getElementById('isFinal');
63
- const logsDiv = document.getElementById('logs');
64
-
65
- function log(msg, ...args) {
66
- console.log(msg, ...args);
67
- const time = new Date().toLocaleTimeString();
68
- logsDiv.innerHTML += `[${time}] ${msg} ${args.join(' ')}<br>`;
69
- logsDiv.scrollTop = logsDiv.scrollHeight;
70
- }
71
-
72
- log('🔧 Initializing...');
73
-
74
- const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
75
-
76
- if (!SpeechRecognition) {
77
- log('❌ Speech Recognition NOT SUPPORTED');
78
- statusText.textContent = 'Not Supported';
79
- startBtn.disabled = true;
80
- } else {
81
- log('✅ Speech Recognition API available');
82
-
83
- const recognition = new SpeechRecognition();
84
- recognition.continuous = false;
85
- recognition.interimResults = true;
86
- recognition.lang = 'en-US';
87
-
88
- log('âš™ī¸ Settings configured');
89
-
90
- recognition.onstart = () => {
91
- log('🎤 STARTED - Listening...');
92
- statusText.textContent = 'Listening...';
93
- statusDiv.className = 'listening';
94
- startBtn.disabled = true;
95
- stopBtn.disabled = false;
96
- };
97
-
98
- recognition.onresult = (event) => {
99
- log('📝 RESULT received');
100
- const result = event.results[event.results.length - 1];
101
- const transcript = result[0].transcript;
102
- const confidence = result[0].confidence;
103
-
104
- transcriptSpan.textContent = transcript;
105
- isFinalSpan.textContent = result.isFinal ? 'Yes' : 'No';
106
-
107
- if (result.isFinal) {
108
- log('✅ FINAL:', transcript, 'Confidence:', confidence);
109
- statusText.textContent = 'Got Result!';
110
- statusDiv.className = 'result';
111
- } else {
112
- log('âŗ Interim:', transcript);
113
- }
114
- };
115
-
116
- recognition.onerror = (event) => {
117
- log('❌ ERROR:', event.error);
118
- statusText.textContent = 'Error: ' + event.error;
119
- statusDiv.className = '';
120
- startBtn.disabled = false;
121
- stopBtn.disabled = true;
122
- };
123
-
124
- recognition.onend = () => {
125
- log('🏁 ENDED');
126
- statusText.textContent = 'Stopped';
127
- statusDiv.className = '';
128
- startBtn.disabled = false;
129
- stopBtn.disabled = true;
130
- };
131
-
132
- startBtn.onclick = () => {
133
- log('â–ļī¸ Start button clicked');
134
- try {
135
- recognition.start();
136
- log('✅ recognition.start() called');
137
- } catch (e) {
138
- log('❌ Failed to start:', e.message);
139
- }
140
- };
141
-
142
- stopBtn.onclick = () => {
143
- log('âšī¸ Stop button clicked');
144
- try {
145
- recognition.stop();
146
- log('✅ recognition.stop() called');
147
- } catch (e) {
148
- log('❌ Failed to stop:', e.message);
149
- }
150
- };
151
-
152
- log('✅ Ready to test!');
153
- }
154
- </script>
155
- </body>
156
- </html>