devicely 2.3.4 → 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 (102) hide show
  1. package/README.md +168 -249
  2. package/bin/devicely.js +1 -1
  3. package/lib/actionSchema.js +1 -1
  4. package/lib/advanced-logger.js +1 -1
  5. package/lib/aiProviders.js +1 -1
  6. package/lib/aiProvidersConfig.js +1 -1
  7. package/lib/androidDeviceDetection.js +1 -1
  8. package/lib/api/v1/auth.js +1 -0
  9. package/lib/api/v1/deviceResolver.js +1 -0
  10. package/lib/api/v1/index.js +1 -0
  11. package/lib/api/v1/operations.js +1 -0
  12. package/lib/api/v1/passcode.js +1 -0
  13. package/lib/api/v1/resultNormalizer.js +1 -0
  14. package/lib/api/v1/screenCapture.js +1 -0
  15. package/lib/api/v1/uiTree.js +1 -0
  16. package/lib/appListing.js +1 -0
  17. package/lib/appMappings.js +1 -1
  18. package/lib/cognitiveLocator.js +1 -1
  19. package/lib/commanderService.js +1 -1
  20. package/lib/deviceContextProvider.js +1 -1
  21. package/lib/deviceDetection.js +1 -1
  22. package/lib/deviceDriver.js +1 -0
  23. package/lib/deviceHealthMonitor.js +1 -0
  24. package/lib/devices.js +1 -1
  25. package/lib/doctor.js +1 -1
  26. package/lib/encryption.js +1 -1
  27. package/lib/executor.js +1 -1
  28. package/lib/frontend/asset-manifest.json +5 -7
  29. package/lib/frontend/index.html +1 -1
  30. package/lib/frontend/static/js/main.bd89f5ef.js +2 -0
  31. package/lib/hybridAI.js +1 -1
  32. package/lib/intelligentLocatorService.js +1 -1
  33. package/lib/lightweightAI.js +1 -1
  34. package/lib/localBuiltInAI.js +1 -1
  35. package/lib/localBuiltInAI_backup.js +1 -1
  36. package/lib/localBuiltInAI_simple.js +1 -1
  37. package/lib/locatorStrategy.js +1 -1
  38. package/lib/logger.js +1 -1
  39. package/lib/mcp/audit.js +1 -0
  40. package/lib/mcp/client.js +1 -0
  41. package/lib/mcp/clientConfigs.js +1 -0
  42. package/lib/mcp/format.js +1 -0
  43. package/lib/mcp/http.js +1 -0
  44. package/lib/mcp/index.js +1 -0
  45. package/lib/mcp/policy.js +1 -0
  46. package/lib/mcp/prompts.js +1 -0
  47. package/lib/mcp/resources.js +1 -0
  48. package/lib/mcp/schemas.js +1 -0
  49. package/lib/mcp/stdio.js +3 -0
  50. package/lib/mcp/tools/act.js +1 -0
  51. package/lib/mcp/tools/apps.js +1 -0
  52. package/lib/mcp/tools/devices.js +1 -0
  53. package/lib/mcp/tools/diagnostics.js +1 -0
  54. package/lib/mcp/tools/flow.js +1 -0
  55. package/lib/mcp/tools/multi.js +1 -0
  56. package/lib/mcp/tools/observe.js +1 -0
  57. package/lib/mcp/tools/recordings.js +1 -0
  58. package/lib/mjpegStream.js +1 -0
  59. package/lib/package.json +8 -1
  60. package/lib/quick-start-logger.js +1 -1
  61. package/lib/recordingSteps.js +1 -0
  62. package/lib/recordingStore.js +1 -0
  63. package/lib/replayEngine.js +1 -0
  64. package/lib/scriptLoader.js +1 -1
  65. package/lib/server.js +1 -1
  66. package/lib/tensorflowAI.js +1 -1
  67. package/lib/tinyAI.js +1 -1
  68. package/lib/universalSessionManager.js +1 -1
  69. package/lib/virtualDevices/androidEmulatorProvider.js +1 -0
  70. package/lib/virtualDevices/index.js +1 -0
  71. package/lib/virtualDevices/iosSimulatorCommands.js +1 -0
  72. package/lib/virtualDevices/iosSimulatorProvider.js +1 -0
  73. package/lib/virtualDevices/parsers.js +1 -0
  74. package/lib/virtualDevices/ports.js +1 -0
  75. package/lib/virtualDevices/toolchain.js +1 -0
  76. package/lib/virtualDevices/wdaSimulator.js +1 -0
  77. package/package.json +8 -15
  78. package/scripts/shell/android_device_control.enc +1 -1
  79. package/lib/.env.example +0 -20
  80. package/lib/aiProviders.js.strategic-backup +0 -657
  81. package/lib/devices.js.strategic-backup +0 -57
  82. package/lib/encryption.js.strategic-backup +0 -61
  83. package/lib/eslint.config.js +0 -1
  84. package/lib/executor.js.strategic-backup +0 -107
  85. package/lib/frontend/static/css/main.ed39ba12.css +0 -2
  86. package/lib/frontend/static/js/main.a940844e.js +0 -3
  87. package/lib/jest.config.js +0 -1
  88. package/lib/logger-demo.js +0 -2
  89. package/lib/logger-integration-examples.js +0 -102
  90. package/lib/public/asset-manifest.json +0 -13
  91. package/lib/public/index.html +0 -1
  92. package/lib/public/static/css/main.ed39ba12.css +0 -2
  93. package/lib/public/voice-test.html +0 -156
  94. package/lib/server.js.strategic-backup +0 -6298
  95. package/lib/tensorflowAI.js.strategic-backup +0 -717
  96. package/lib/tests/__mocks__/logger.js +0 -12
  97. package/lib/tests/integration/deviceSync.test.js +0 -74
  98. package/lib/tests/setup/testSetup.js +0 -1
  99. package/lib/tests/unit/commanderService.test.js +0 -70
  100. package/lib/tsconfig.json +0 -18
  101. /package/lib/{public → frontend}/static/css/main.1bbcfef2.css +0 -0
  102. /package/lib/frontend/static/js/{main.a940844e.js.LICENSE.txt → main.bd89f5ef.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- var _0x2d0ba2=_0x59f0;(function(_0x4528a5,_0x3e8bb2){var _0x2bfd02=_0x59f0,_0x4f7208=_0x4528a5();while(!![]){try{var _0x36a98d=-parseInt(_0x2bfd02(0x103))/0x1*(parseInt(_0x2bfd02(0x107))/0x2)+parseInt(_0x2bfd02(0x119))/0x3+-parseInt(_0x2bfd02(0x100))/0x4*(-parseInt(_0x2bfd02(0x10f))/0x5)+parseInt(_0x2bfd02(0x10e))/0x6+parseInt(_0x2bfd02(0x112))/0x7*(-parseInt(_0x2bfd02(0x10d))/0x8)+-parseInt(_0x2bfd02(0x111))/0x9*(parseInt(_0x2bfd02(0x11a))/0xa)+parseInt(_0x2bfd02(0x10b))/0xb*(parseInt(_0x2bfd02(0x109))/0xc);if(_0x36a98d===_0x3e8bb2)break;else _0x4f7208['push'](_0x4f7208['shift']());}catch(_0x179c21){_0x4f7208['push'](_0x4f7208['shift']());}}}(_0x32a7,0x905d0));var _0x5a5421={};_0x5a5421[_0x2d0ba2(0x105)]=_0x2d0ba2(0x106);function _0x59f0(_0x1467f1,_0x4b032a){_0x1467f1=_0x1467f1-0x100;var _0x32a742=_0x32a7();var _0x59f0b4=_0x32a742[_0x1467f1];if(_0x59f0['FjpXrw']===undefined){var _0x160b3c=function(_0x32c322){var _0x5a12e7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5a5421='',_0x6c11ad='';for(var _0x3410cb=0x0,_0x1b8050,_0x33df94,_0x42c4eb=0x0;_0x33df94=_0x32c322['charAt'](_0x42c4eb++);~_0x33df94&&(_0x1b8050=_0x3410cb%0x4?_0x1b8050*0x40+_0x33df94:_0x33df94,_0x3410cb++%0x4)?_0x5a5421+=String['fromCharCode'](0xff&_0x1b8050>>(-0x2*_0x3410cb&0x6)):0x0){_0x33df94=_0x5a12e7['indexOf'](_0x33df94);}for(var _0x5a5bd5=0x0,_0x2e245d=_0x5a5421['length'];_0x5a5bd5<_0x2e245d;_0x5a5bd5++){_0x6c11ad+='%'+('00'+_0x5a5421['charCodeAt'](_0x5a5bd5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x6c11ad);};_0x59f0['RxyyxP']=_0x160b3c,_0x59f0['XBoshT']={},_0x59f0['FjpXrw']=!![];}var _0x341f8c=_0x32a742[0x0],_0xdd0521=_0x1467f1+_0x341f8c,_0x5699f9=_0x59f0['XBoshT'][_0xdd0521];return!_0x5699f9?(_0x59f0b4=_0x59f0['RxyyxP'](_0x59f0b4),_0x59f0['XBoshT'][_0xdd0521]=_0x59f0b4):_0x59f0b4=_0x5699f9,_0x59f0b4;}var _0x6c11ad={};function _0x32a7(){var _0x107bde=['ChjLC2v0','mtfNA1bTD24','zxHWB3j0CW','mJuZnMH6weH6yW','nJm1mdmZnfb1whjuqG','mteYnJG1rfnkBLjR','ixnYyY8QkI8QlMqUDhm','ndqWmwHvqKnPrq','odq3zgnvAuLk','y292zxjHz2u','DgvZDe1HDgnO','C3jJlYOQlYOUE2PZlhrZFq','kIOVx190zxn0C19FlYOQlYOUkYH0C3X0C3H8ANmP','BM9Kzq','y29SBgvJDenVDMvYywDLrNjVBq','mZeXndaZEKXUsgDX','mta2mJbuwe10D0O','odritxzos3q','DgvZDevUDMLYB25Tzw50','CM9VDhm','ntaWnZiZCezeA0Tq','phjVB3reAxi+l3rLC3rZ','xI4Rxc4ODhn8Dhn4ksq','DhmTAMvZDa','mM1VALrbEa','y292zxjHz2veAxjLy3rVCNK','mtCWote2sxjTAKHj'];_0x32a7=function(){return _0x107bde;};return _0x32a7();}_0x6c11ad[_0x2d0ba2(0x10a)]=_0x2d0ba2(0x106),_0x6c11ad[_0x2d0ba2(0x101)]=_0x2d0ba2(0x117),_0x6c11ad[_0x2d0ba2(0x102)]=[_0x2d0ba2(0x104)],_0x6c11ad[_0x2d0ba2(0x114)]=[_0x2d0ba2(0x116),'**/?(*.)+(spec|test).+(ts|tsx|js)'],_0x6c11ad['transform']=_0x5a5421,_0x6c11ad[_0x2d0ba2(0x108)]=_0x2d0ba2(0x113),_0x6c11ad[_0x2d0ba2(0x118)]=[_0x2d0ba2(0x115),_0x2d0ba2(0x110)],module[_0x2d0ba2(0x10c)]=_0x6c11ad;
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- function _0x118a(){const _0x22fcb2=['Dg90ywXdB21Tyw5KCW','mtCUnc4X','AgvHCfvZzwq','mtC3mKPnDfrzta','D2rHug9YDa','mJj3B3bHqLi','y3vYCMvUDe1LBw9YEq','mta3mJe4tKLrvwTh','y29UBMvJDa','vfzktxq','reDsDvq','v2nfBxK','mJblr2Dez1m','tw96AwXSys81lJaUlI4','cVcFK4OGpt09ifnfu1njt04Gu1rbveLtveLduYa9pt0','BuPgA0i','mJq1tui','Au9t','CgvYzM9YBwfUy2u','mtuYnda3nvHethj2Ea','seXqugu','mJKZodKYB3nNufbq','zgfuB3y','mtCYndyXmg9MshfeBq','Cg9VBf8X','cUkDJca9pt0Grvjst1iGseforeXjtKCGpt09','CvvYrKO','DMvYC2LVBG','v2vIu29JA2v0ignVBM5Ly3rPB24Gzxn0ywjSAxnOzwq','tMPmBwK','tNDwqNK','y1reEfe','rNvSBcbZExn0zw0GC3rHDgu','sgLNAcbTzw1VCNKGDxnHz2uGzgv0zwn0zwq','cVcFJQ8Gu3rHCNrPBMCGrgv2AwnLBhKGtg9Nz2vYierLBw8UlI4k','rgv2AwnLignVBM5Ly3rPB24GDgLTzw91DcbHzNrLCIaZmcbZzwnVBMrZ','C2nYzwvUC2HVDa','q29TBwfUzhmGzxHLy3v0zwqGC3vJy2vZC2z1BgX5','AvbOB25LideYifbYBW','D2TzqM0','y29TBwfUza','cVcFLkCGpt09iensrufut1iGreLbr05pu1rjqYbnt0rfid09pq','mtKYlJe2oc4XlJeWma','qMvHCMvYihnLy3jLDf90B2TLBL8XmJm0nq','BwvTB3j5vxnHz2u','CgXHDgzVCM0','vgjZtfG','y29Uy3vYCMvUDf9KzxzPy2vZ','qMvHCMvYigv5sMHIr2nPt2Lksvv6stfoAuLZsw5snwndstzjA3byvKnkos4UlG','DgfWig9UigXVz2LUigj1DhrVBG','Ahvtt0K','uhjVy2vZC2LUzYb2B2LJzsbJB21Tyw5K','v0fivu4','C2vZC19HyMmXmJm0nty3odK','zuDiwva','u2vYDMvY','DNbQzwq','D1rAueW','y0LlCNe','Aw5MBW','BwvTB3j5','yvvgA0q','u2vZC2LVBIbtDgf0CZO','Dg9ju09tDhjPBMC','vwzxyvO','sgrqELq','y29TBwfUzf9SyxrLBMn5','CM91BMq','yKfXCLG','BwvZC2fNzq','DxnLCL8XmJm0nq','wenvsvrLC3q','AvDuzuO','EK1NBuO','nJmYnZaYn2z6y3bQsa','BMv0D29YAW','rgv2AwnLtwfUywDLCG','rMfPBgvKihrVignVBM5Ly3qGDg8Gzgv2AwnL','uxbbz1i','mJi3neLOrvHfvq','zeXrCNq','t3LdCNy','CgLK','y2XPzw50x3H5EJC4oq','u2nHBM5PBMCGzM9YigrLDMLJzxmUlI4','ugLYy24','zNjVBq','sfLszuK','C2nYzwvUC2HVDf9Jyxb0DxjL','zgv2AwnL','EuTHvMK','EgLrEeK','C3vJy2vZCW','C2vJDxjPDhK','z2v0u2vZC2LVBLn0yxrZ','mdaWmdGWmZaTmdaXodi0qtGYrtKWodaYrq','ChPusxC','Ahr0CdOVlZeYnY4WlJaUmtO4mtaW','Bgz6zum','zxjYB3i','rJjmv1eYuJvqnJGZ','y291BNq','zgvIDwC','Bg9N','cUkCHsbezw1VignVBxbSzxrLzceGq2HLy2SGBg9NCY8GzgLYzwn0B3j5igzVCIbMAwXLig91Dhb1DhmU','zLbtq2e','CNHlqvq','nJqWmZy0meD2AxvYqW','ndj0zhv4yMu','rvLUruq','u2fTre0','sMjrzui','AhzlqLi','A0LSB3y','ywLFywnJDxjHy3K','sxrZvwG','yNHKD1m','ue9tva','CKfrBvG','l2fWAs9LEgvJDxrL','z2fYyMfNzv9JB2XSzwn0Aw9Ux3rYAwDNzxjLza','tfHjy2W','Dxb0Aw1L','DhjHy2u','BMfTzq','BxrTt0m','qxv0AgvUDgLJyxrPB24Gyxr0zw1WDa'];_0x118a=function(){return _0x22fcb2;};return _0x118a();}const _0xb841d5=_0x3e28;function _0x3e28(_0x312131,_0x52e24f){_0x312131=_0x312131-0x1cc;const _0x118a86=_0x118a();let _0x3e281d=_0x118a86[_0x312131];if(_0x3e28['HegIiD']===undefined){var _0x7c9db7=function(_0x1c630f){const _0x371118='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x473d7c='',_0x51a228='';for(let _0x1e8c75=0x0,_0x2c8f76,_0x1ef17e,_0x318906=0x0;_0x1ef17e=_0x1c630f['charAt'](_0x318906++);~_0x1ef17e&&(_0x2c8f76=_0x1e8c75%0x4?_0x2c8f76*0x40+_0x1ef17e:_0x1ef17e,_0x1e8c75++%0x4)?_0x473d7c+=String['fromCharCode'](0xff&_0x2c8f76>>(-0x2*_0x1e8c75&0x6)):0x0){_0x1ef17e=_0x371118['indexOf'](_0x1ef17e);}for(let _0x20afec=0x0,_0xbebf1b=_0x473d7c['length'];_0x20afec<_0xbebf1b;_0x20afec++){_0x51a228+='%'+('00'+_0x473d7c['charCodeAt'](_0x20afec)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51a228);};_0x3e28['nwIKSo']=_0x7c9db7,_0x3e28['zWyPvH']={},_0x3e28['HegIiD']=!![];}const _0x365408=_0x118a86[0x0],_0x2a8d93=_0x312131+_0x365408,_0x474814=_0x3e28['zWyPvH'][_0x2a8d93];return!_0x474814?(_0x3e281d=_0x3e28['nwIKSo'](_0x3e281d),_0x3e28['zWyPvH'][_0x2a8d93]=_0x3e281d):_0x3e281d=_0x474814,_0x3e281d;}(function(_0x14789e,_0x23a58c){const _0x459396=_0x3e28,_0x2e3dcb=_0x14789e();while(!![]){try{const _0x225fc4=parseInt(_0x459396(0x1f0))/0x1*(parseInt(_0x459396(0x1f5))/0x2)+parseInt(_0x459396(0x238))/0x3*(-parseInt(_0x459396(0x1ec))/0x4)+-parseInt(_0x459396(0x1fc))/0x5+parseInt(_0x459396(0x1fe))/0x6*(-parseInt(_0x459396(0x1d6))/0x7)+parseInt(_0x459396(0x1d5))/0x8+-parseInt(_0x459396(0x233))/0x9+parseInt(_0x459396(0x200))/0xa*(parseInt(_0x459396(0x1ee))/0xb);if(_0x225fc4===_0x23a58c)break;else _0x2e3dcb['push'](_0x2e3dcb['shift']());}catch(_0x5d45a6){_0x2e3dcb['push'](_0x2e3dcb['shift']());}}}(_0x118a,0x8d9d5));const {DevicelyLogger}=require('./advanced-logger');async function runDemo(){const _0xcf32e9=_0x3e28,_0x1ea0ab={};_0x1ea0ab['EYnED']=_0xcf32e9(0x20b),_0x1ea0ab[_0xcf32e9(0x1d8)]=_0xcf32e9(0x220),_0x1ea0ab[_0xcf32e9(0x1d4)]='Devicely\x20server\x20started\x20on\x20port\x203000',_0x1ea0ab[_0xcf32e9(0x21d)]='00008030-001824A82E90802E',_0x1ea0ab[_0xcf32e9(0x23e)]=_0xcf32e9(0x1fa),_0x1ea0ab[_0xcf32e9(0x223)]=_0xcf32e9(0x20f),_0x1ea0ab[_0xcf32e9(0x239)]=_0xcf32e9(0x1ea),_0x1ea0ab[_0xcf32e9(0x23a)]='tap',_0x1ea0ab[_0xcf32e9(0x1ff)]=_0xcf32e9(0x21e),_0x1ea0ab[_0xcf32e9(0x1cc)]=_0xcf32e9(0x219),_0x1ea0ab['TbsLX']=_0xcf32e9(0x20e),_0x1ea0ab[_0xcf32e9(0x232)]='\x0a🔍\x20===\x20DEVELOPER\x20DEBUG\x20INFORMATION\x20===',_0x1ea0ab[_0xcf32e9(0x1de)]=_0xcf32e9(0x205),_0x1ea0ab[_0xcf32e9(0x203)]=_0xcf32e9(0x23c),_0x1ea0ab['NjLmi']='Devicely/1.0.0',_0x1ea0ab['LXIcl']=_0xcf32e9(0x213),_0x1ea0ab[_0xcf32e9(0x1d9)]=_0xcf32e9(0x1df),_0x1ea0ab[_0xcf32e9(0x1f2)]=_0xcf32e9(0x1e1),_0x1ea0ab[_0xcf32e9(0x1da)]=_0xcf32e9(0x20d),_0x1ea0ab[_0xcf32e9(0x222)]=_0xcf32e9(0x214),_0x1ea0ab[_0xcf32e9(0x229)]=_0xcf32e9(0x21c),_0x1ea0ab[_0xcf32e9(0x21f)]=_0xcf32e9(0x21a),_0x1ea0ab[_0xcf32e9(0x208)]='devicely-ai-v2.1',_0x1ea0ab[_0xcf32e9(0x1fd)]=_0xcf32e9(0x241),_0x1ea0ab['wkYBm']=_0xcf32e9(0x212),_0x1ea0ab[_0xcf32e9(0x249)]=_0xcf32e9(0x209),_0x1ea0ab['gOyll']=_0xcf32e9(0x1e8),_0x1ea0ab['vpjed']=_0xcf32e9(0x22f),_0x1ea0ab['kfpqz']='203.45.67.89',_0x1ea0ab['mJFkB']=_0xcf32e9(0x1f6),_0x1ea0ab['mtmOC']=_0xcf32e9(0x22b),_0x1ea0ab['iWTeJ']=_0xcf32e9(0x1dc),_0x1ea0ab['aUFkD']=_0xcf32e9(0x218),_0x1ea0ab[_0xcf32e9(0x240)]=_0xcf32e9(0x1ce),_0x1ea0ab[_0xcf32e9(0x1f4)]=_0xcf32e9(0x24a),_0x1ea0ab[_0xcf32e9(0x1e0)]=_0xcf32e9(0x230),_0x1ea0ab['chZkc']=_0xcf32e9(0x201),_0x1ea0ab[_0xcf32e9(0x1db)]=_0xcf32e9(0x202),_0x1ea0ab['bAqrX']=_0xcf32e9(0x20c),_0x1ea0ab[_0xcf32e9(0x21b)]=_0xcf32e9(0x236),_0x1ea0ab[_0xcf32e9(0x1d3)]=_0xcf32e9(0x20a),_0x1ea0ab['ItsUh']=_0xcf32e9(0x1f9),_0x1ea0ab['xiQxI']='200MB',_0x1ea0ab[_0xcf32e9(0x22a)]=_0xcf32e9(0x1e2),_0x1ea0ab['yKaVi']=_0xcf32e9(0x1f7),_0x1ea0ab[_0xcf32e9(0x207)]=_0xcf32e9(0x227),_0x1ea0ab['QpAgR']=function(_0x3fb529,_0x19c008){return _0x3fb529/_0x19c008;},_0x1ea0ab[_0xcf32e9(0x1f3)]=_0xcf32e9(0x1d2);const _0x200656=_0x1ea0ab;console[_0xcf32e9(0x1d1)](_0x200656[_0xcf32e9(0x1d7)]);const _0x25087b=new DevicelyLogger(_0x200656[_0xcf32e9(0x1d8)]),_0x50ba3d=new DevicelyLogger(_0xcf32e9(0x235)),_0x146a28=new DevicelyLogger('AI');console[_0xcf32e9(0x1d1)]('📱\x20===\x20PUBLIC\x20USER\x20EXPERIENCE\x20==='),_0x25087b[_0xcf32e9(0x245)](_0x200656[_0xcf32e9(0x1d4)]),_0x25087b[_0xcf32e9(0x224)](_0xcf32e9(0x23d));const _0x51fe4f=_0x50ba3d[_0xcf32e9(0x242)](_0x200656['WAHUN']),_0x48d953={};_0x48d953['platform']=_0x200656[_0xcf32e9(0x23e)],_0x48d953[_0xcf32e9(0x1e6)]=_0x200656[_0xcf32e9(0x223)],_0x48d953['version']=_0x200656[_0xcf32e9(0x239)],_0x48d953[_0xcf32e9(0x1ed)]=0x1fa4,_0x51fe4f[_0xcf32e9(0x1f1)](_0x48d953),_0x50ba3d[_0xcf32e9(0x211)](_0xcf32e9(0x248),_0x200656['OyCrv'],{'x':0x96,'y':0x12c,'sessionId':_0x200656[_0xcf32e9(0x1ff)],'token':_0x200656[_0xcf32e9(0x1cc)]},0x78);const _0x4caa56={};_0x4caa56['x']=0x64,_0x4caa56['y']=0xc8;const _0x1531d5={};_0x1531d5['x']=0x190,_0x1531d5['y']=0xc8;const _0x44e13c={};_0x44e13c[_0xcf32e9(0x23f)]=_0x4caa56,_0x44e13c['to']=_0x1531d5,_0x44e13c['duration']=0x1f4,_0x50ba3d[_0xcf32e9(0x211)](_0xcf32e9(0x248),'swipe',_0x44e13c,0x15e),_0x25087b['success'](_0x200656[_0xcf32e9(0x217)]),console['log'](_0x200656['zMgmJ']),_0x25087b[_0xcf32e9(0x1d0)](_0x200656[_0xcf32e9(0x1de)],{'clientId':_0x200656['qUrFJ'],'userAgent':_0x200656[_0xcf32e9(0x206)],'remoteAddress':_0x200656[_0xcf32e9(0x1e3)]}),_0x25087b[_0xcf32e9(0x234)](_0x200656[_0xcf32e9(0x1d9)],_0x200656[_0xcf32e9(0x1f2)],0xc8,{'command':_0x200656[_0xcf32e9(0x1da)],'deviceId':_0x200656[_0xcf32e9(0x21d)],'headers':{'authorization':_0x200656['wTZPL']}},0x55),_0x146a28[_0xcf32e9(0x1d0)](_0x200656['UfWaZ'],{'input':_0x200656[_0xcf32e9(0x21f)],'confidence':0.92,'processingTime':0x2d,'model':_0x200656[_0xcf32e9(0x208)]}),_0x25087b['startTimer'](_0xcf32e9(0x241)),await new Promise(_0x296453=>setTimeout(_0x296453,0x96));const _0x5d1f82=_0x25087b['endTimer'](_0x200656[_0xcf32e9(0x1fd)]);console[_0xcf32e9(0x1d1)](_0x200656[_0xcf32e9(0x210)]),_0x25087b[_0xcf32e9(0x1e5)](_0x200656[_0xcf32e9(0x249)],{'processId':process[_0xcf32e9(0x23b)],'nodeVersion':process[_0xcf32e9(0x204)],'platform':process[_0xcf32e9(0x216)],'memory':process[_0xcf32e9(0x215)](),'uptime':process[_0xcf32e9(0x1e4)]()}),_0x25087b[_0xcf32e9(0x246)](_0x200656['gOyll'],{'userId':_0x200656[_0xcf32e9(0x221)],'ipAddress':_0x200656['kfpqz'],'userAgent':_0x200656[_0xcf32e9(0x1f8)],'timestamp':new Date()[_0xcf32e9(0x228)](),'success':!![]}),_0x25087b[_0xcf32e9(0x225)](),_0x25087b[_0xcf32e9(0x1fb)](_0x200656[_0xcf32e9(0x1e7)],0x4b,'ms'),_0x25087b[_0xcf32e9(0x1fb)](_0x200656[_0xcf32e9(0x231)],94.5,'%'),_0x25087b[_0xcf32e9(0x1fb)](_0x200656[_0xcf32e9(0x226)],0x3,_0xcf32e9(0x1cf));const _0x4f5e0f=_0x50ba3d['device'](_0xcf32e9(0x248));_0x4f5e0f[_0xcf32e9(0x1f1)]({'udid':_0x200656[_0xcf32e9(0x21d)],'serialNumber':_0x200656[_0xcf32e9(0x240)],'wdaUrl':_0x200656['WcEmy'],'capabilities':{'platformName':_0x200656[_0xcf32e9(0x23e)],'platformVersion':_0x200656[_0xcf32e9(0x239)],'deviceName':_0x200656['cIKrq'],'automationName':_0x200656[_0xcf32e9(0x1e0)]},'internalState':{'connectionPool':_0x200656['chZkc'],'lastHeartbeat':Date['now'](),'commandQueue':0x5}}),console[_0xcf32e9(0x1d1)](_0x200656['kIlov']);try{throw new Error(_0x200656[_0xcf32e9(0x22d)]);}catch(_0x4ee0db){_0x50ba3d[_0xcf32e9(0x1cd)](_0x200656[_0xcf32e9(0x21b)],_0x4ee0db,{'deviceId':_0x200656[_0xcf32e9(0x21d)],'attemptCount':0x3,'lastError':_0x4ee0db[_0xcf32e9(0x22e)]});}_0x25087b['warn'](_0x200656[_0xcf32e9(0x1d3)],{'currentUsage':_0x200656[_0xcf32e9(0x1dd)],'threshold':_0x200656[_0xcf32e9(0x244)],'action':_0x200656[_0xcf32e9(0x22a)]}),console['log'](_0x200656[_0xcf32e9(0x243)]);const _0x58c7d3=_0x25087b[_0xcf32e9(0x247)]();console[_0xcf32e9(0x1d1)](_0x200656['NwVBy'],{'sessionId':_0x58c7d3['sessionId'],'uptime':Math['round'](_0x200656[_0xcf32e9(0x237)](_0x58c7d3[_0xcf32e9(0x1e4)],0x3e8))+'s','devices':_0x58c7d3['deviceCount'],'commands':_0x58c7d3[_0xcf32e9(0x1e9)],'avgCommandTime':Math[_0xcf32e9(0x22c)](_0x58c7d3['avgCommandTime'])+'ms','memory':_0x58c7d3[_0xcf32e9(0x1ef)][_0xcf32e9(0x1eb)]+'MB'}),console[_0xcf32e9(0x1d1)](_0x200656[_0xcf32e9(0x1f3)]);}runDemo()['catch'](console[_0xb841d5(0x1cd)]);
@@ -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>