cmdop 0.1.21__tar.gz → 0.1.23__tar.gz

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 (215) hide show
  1. {cmdop-0.1.21 → cmdop-0.1.23}/PKG-INFO +107 -59
  2. {cmdop-0.1.21 → cmdop-0.1.23}/README.md +106 -58
  3. {cmdop-0.1.21 → cmdop-0.1.23}/pyproject.toml +1 -1
  4. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/__init__.py +1 -1
  5. cmdop-0.1.23/src/cmdop/_generated/rpc_messages/browser_pb2.py +183 -0
  6. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/browser_pb2.pyi +270 -2
  7. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages_pb2.pyi +25 -0
  8. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/service_pb2.py +2 -2
  9. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/service_pb2_grpc.py +345 -0
  10. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/client.py +2 -8
  11. cmdop-0.1.23/src/cmdop/services/browser/__init__.py +59 -0
  12. cmdop-0.1.23/src/cmdop/services/browser/capabilities/__init__.py +17 -0
  13. cmdop-0.1.23/src/cmdop/services/browser/capabilities/_base.py +28 -0
  14. cmdop-0.1.23/src/cmdop/services/browser/capabilities/_helpers.py +16 -0
  15. cmdop-0.1.23/src/cmdop/services/browser/capabilities/dom.py +76 -0
  16. cmdop-0.1.23/src/cmdop/services/browser/capabilities/fetch.py +45 -0
  17. cmdop-0.1.23/src/cmdop/services/browser/capabilities/input.py +49 -0
  18. cmdop-0.1.23/src/cmdop/services/browser/capabilities/network.py +245 -0
  19. cmdop-0.1.23/src/cmdop/services/browser/capabilities/scroll.py +147 -0
  20. cmdop-0.1.23/src/cmdop/services/browser/capabilities/timing.py +66 -0
  21. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/js/__init__.py +6 -4
  22. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/js/interaction.py +34 -0
  23. cmdop-0.1.23/src/cmdop/services/browser/models.py +220 -0
  24. cmdop-0.1.23/src/cmdop/services/browser/service/__init__.py +5 -0
  25. cmdop-0.1.23/src/cmdop/services/browser/service/aio.py +30 -0
  26. cmdop-0.1.21/src/cmdop/services/browser/sync/service.py → cmdop-0.1.23/src/cmdop/services/browser/service/sync.py +206 -6
  27. cmdop-0.1.23/src/cmdop/services/browser/session.py +194 -0
  28. cmdop-0.1.21/src/cmdop/_generated/rpc_messages/browser_pb2.py +0 -133
  29. cmdop-0.1.21/src/cmdop/services/browser/__init__.py +0 -46
  30. cmdop-0.1.21/src/cmdop/services/browser/aio/__init__.py +0 -6
  31. cmdop-0.1.21/src/cmdop/services/browser/aio/service.py +0 -420
  32. cmdop-0.1.21/src/cmdop/services/browser/aio/session.py +0 -407
  33. cmdop-0.1.21/src/cmdop/services/browser/base/__init__.py +0 -6
  34. cmdop-0.1.21/src/cmdop/services/browser/base/session.py +0 -124
  35. cmdop-0.1.21/src/cmdop/services/browser/models.py +0 -117
  36. cmdop-0.1.21/src/cmdop/services/browser/sync/__init__.py +0 -6
  37. cmdop-0.1.21/src/cmdop/services/browser/sync/session.py +0 -644
  38. {cmdop-0.1.21 → cmdop-0.1.23}/.gitignore +0 -0
  39. {cmdop-0.1.21 → cmdop-0.1.23}/LICENSE +0 -0
  40. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/__init__.py +0 -0
  41. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/agent_messages_pb2.py +0 -0
  42. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/agent_messages_pb2.pyi +0 -0
  43. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/agent_messages_pb2_grpc.py +0 -0
  44. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/common_types_pb2.py +0 -0
  45. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/common_types_pb2.pyi +0 -0
  46. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/common_types_pb2_grpc.py +0 -0
  47. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/control_messages_pb2.py +0 -0
  48. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/control_messages_pb2.pyi +0 -0
  49. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/control_messages_pb2_grpc.py +0 -0
  50. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/__init__.py +0 -0
  51. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/archive_pb2.py +0 -0
  52. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/archive_pb2.pyi +0 -0
  53. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/archive_pb2_grpc.py +0 -0
  54. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/changes_pb2.py +0 -0
  55. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/changes_pb2.pyi +0 -0
  56. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/changes_pb2_grpc.py +0 -0
  57. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/common_pb2.py +0 -0
  58. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/common_pb2.pyi +0 -0
  59. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/common_pb2_grpc.py +0 -0
  60. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/directory_pb2.py +0 -0
  61. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/directory_pb2.pyi +0 -0
  62. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/directory_pb2_grpc.py +0 -0
  63. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/file_crud_pb2.py +0 -0
  64. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/file_crud_pb2.pyi +0 -0
  65. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/file_crud_pb2_grpc.py +0 -0
  66. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/hls_pb2.py +0 -0
  67. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/hls_pb2.pyi +0 -0
  68. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/hls_pb2_grpc.py +0 -0
  69. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/requests_pb2.py +0 -0
  70. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/requests_pb2.pyi +0 -0
  71. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/requests_pb2_grpc.py +0 -0
  72. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/search_pb2.py +0 -0
  73. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/search_pb2.pyi +0 -0
  74. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/search_pb2_grpc.py +0 -0
  75. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/transfer_pb2.py +0 -0
  76. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/transfer_pb2.pyi +0 -0
  77. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations/transfer_pb2_grpc.py +0 -0
  78. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations_pb2.py +0 -0
  79. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations_pb2.pyi +0 -0
  80. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_operations_pb2_grpc.py +0 -0
  81. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/__init__.py +0 -0
  82. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/archive_pb2.py +0 -0
  83. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/archive_pb2.pyi +0 -0
  84. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/archive_pb2_grpc.py +0 -0
  85. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/directory_pb2.py +0 -0
  86. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/directory_pb2.pyi +0 -0
  87. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/directory_pb2_grpc.py +0 -0
  88. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/file_crud_pb2.py +0 -0
  89. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/file_crud_pb2.pyi +0 -0
  90. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/file_crud_pb2_grpc.py +0 -0
  91. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/hls_pb2.py +0 -0
  92. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/hls_pb2.pyi +0 -0
  93. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/hls_pb2_grpc.py +0 -0
  94. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/search_pb2.py +0 -0
  95. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/search_pb2.pyi +0 -0
  96. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc/search_pb2_grpc.py +0 -0
  97. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc_pb2.py +0 -0
  98. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc_pb2.pyi +0 -0
  99. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/file_rpc_pb2_grpc.py +0 -0
  100. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/message_pool.py +0 -0
  101. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/py.typed +0 -0
  102. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/__init__.py +0 -0
  103. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/agent_pb2.py +0 -0
  104. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/agent_pb2.pyi +0 -0
  105. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/agent_pb2_grpc.py +0 -0
  106. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/browser_pb2_grpc.py +0 -0
  107. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/device_pb2.py +0 -0
  108. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/device_pb2.pyi +0 -0
  109. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/device_pb2_grpc.py +0 -0
  110. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/extract_pb2.py +0 -0
  111. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/extract_pb2.pyi +0 -0
  112. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/extract_pb2_grpc.py +0 -0
  113. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/health_pb2.py +0 -0
  114. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/health_pb2.pyi +0 -0
  115. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/health_pb2_grpc.py +0 -0
  116. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/history_pb2.py +0 -0
  117. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/history_pb2.pyi +0 -0
  118. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/history_pb2_grpc.py +0 -0
  119. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/lifecycle_pb2.py +0 -0
  120. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/lifecycle_pb2.pyi +0 -0
  121. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/lifecycle_pb2_grpc.py +0 -0
  122. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/push_pb2.py +0 -0
  123. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/push_pb2.pyi +0 -0
  124. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/push_pb2_grpc.py +0 -0
  125. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/session_pb2.py +0 -0
  126. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/session_pb2.pyi +0 -0
  127. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/session_pb2_grpc.py +0 -0
  128. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/terminal_pb2.py +0 -0
  129. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/terminal_pb2.pyi +0 -0
  130. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages/terminal_pb2_grpc.py +0 -0
  131. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages_pb2.py +0 -0
  132. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/rpc_messages_pb2_grpc.py +0 -0
  133. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/service_pb2.pyi +0 -0
  134. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/tunnel_pb2.py +0 -0
  135. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/tunnel_pb2.pyi +0 -0
  136. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/_generated/tunnel_pb2_grpc.py +0 -0
  137. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/__init__.py +0 -0
  138. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/__init__.py +0 -0
  139. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/__init__.py +0 -0
  140. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/client.py +0 -0
  141. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/enums.py +0 -0
  142. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/logger.py +0 -0
  143. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machine_sharing/__init__.py +0 -0
  144. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machine_sharing/client.py +0 -0
  145. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machine_sharing/models.py +0 -0
  146. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machine_sharing/sync_client.py +0 -0
  147. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machines/__init__.py +0 -0
  148. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machines/client.py +0 -0
  149. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machines/models.py +0 -0
  150. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/machines__api__machines/sync_client.py +0 -0
  151. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/retry.py +0 -0
  152. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/schema.json +0 -0
  153. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/machines/sync_client.py +0 -0
  154. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/__init__.py +0 -0
  155. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/client.py +0 -0
  156. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/enums.py +0 -0
  157. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/logger.py +0 -0
  158. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/retry.py +0 -0
  159. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/schema.json +0 -0
  160. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/sync_client.py +0 -0
  161. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__oauth/__init__.py +0 -0
  162. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__oauth/client.py +0 -0
  163. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__oauth/models.py +0 -0
  164. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__oauth/sync_client.py +0 -0
  165. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__system/__init__.py +0 -0
  166. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__system/client.py +0 -0
  167. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__system/models.py +0 -0
  168. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/system/system__api__system/sync_client.py +0 -0
  169. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/__init__.py +0 -0
  170. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/client.py +0 -0
  171. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/enums.py +0 -0
  172. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/logger.py +0 -0
  173. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/retry.py +0 -0
  174. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/schema.json +0 -0
  175. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/sync_client.py +0 -0
  176. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/__init__.py +0 -0
  177. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/client.py +0 -0
  178. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/models.py +0 -0
  179. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/sync_client.py +0 -0
  180. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/config.py +0 -0
  181. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/discovery.py +0 -0
  182. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/exceptions.py +0 -0
  183. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/helpers/__init__.py +0 -0
  184. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/helpers/cleaner.py +0 -0
  185. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/helpers/formatting.py +0 -0
  186. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/logging.py +0 -0
  187. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/__init__.py +0 -0
  188. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/agent.py +0 -0
  189. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/base.py +0 -0
  190. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/config.py +0 -0
  191. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/extract.py +0 -0
  192. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/files.py +0 -0
  193. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/models/terminal.py +0 -0
  194. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/py.typed +0 -0
  195. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/__init__.py +0 -0
  196. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/agent.py +0 -0
  197. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/base.py +0 -0
  198. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/js/core.py +0 -0
  199. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/js/fetch.py +0 -0
  200. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/js/scroll.py +0 -0
  201. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/browser/parsing.py +0 -0
  202. /cmdop-0.1.21/src/cmdop/services/browser/base/service.py → /cmdop-0.1.23/src/cmdop/services/browser/service/_helpers.py +0 -0
  203. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/extract.py +0 -0
  204. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/files.py +0 -0
  205. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/services/terminal.py +0 -0
  206. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/streaming/__init__.py +0 -0
  207. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/streaming/base.py +0 -0
  208. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/streaming/handlers.py +0 -0
  209. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/streaming/terminal.py +0 -0
  210. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/__init__.py +0 -0
  211. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/auth.py +0 -0
  212. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/base.py +0 -0
  213. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/discovery.py +0 -0
  214. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/local.py +0 -0
  215. {cmdop-0.1.21 → cmdop-0.1.23}/src/cmdop/transport/remote.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cmdop
3
- Version: 0.1.21
3
+ Version: 0.1.23
4
4
  Summary: Python SDK for CMDOP agent interaction
5
5
  Project-URL: Homepage, https://cmdop.com
6
6
  Project-URL: Documentation, https://cmdop.com
@@ -145,91 +145,139 @@ health: Health = result.output # Typed!
145
145
 
146
146
  ## Browser
147
147
 
148
+ Capability-based API for browser automation.
149
+
148
150
  ```python
149
- with client.browser.create_session() as b:
150
- b.navigate("https://shop.com/products")
151
- b.close_modal() # Close popups
151
+ from cmdop.services.browser.models import WaitUntil
152
+
153
+ with client.browser.create_session() as s:
154
+ s.navigate("https://shop.com/products", wait_until=WaitUntil.NETWORKIDLE)
155
+ s.dom.close_modal() # Close popups
152
156
 
153
157
  # BeautifulSoup parsing
154
- soup = b.soup() # SoupWrapper with chainable API
158
+ soup = s.dom.soup() # SoupWrapper with chainable API
155
159
  for item in soup.select(".product"):
156
160
  title = item.select_one("h2").text()
157
161
  price = item.attr("data-price")
158
162
 
159
163
  # Scrolling with random delays
160
164
  for _ in range(10):
161
- soup = b.soup(".listings")
162
- # ... parse ...
163
- b.scroll("down", 700)
164
- b.wait_random(0.8, 1.5) # Random delay
165
+ soup = s.dom.soup(".listings")
166
+ s.scroll.js("down", 700)
167
+ s.timing.random(0.8, 1.5)
165
168
 
166
- # Click with cursor movement (human-like)
167
- b.click("button.buy", move_cursor=True) # Moves cursor before clicking
169
+ # Click with cursor movement
170
+ s.click("button.buy", move_cursor=True)
168
171
 
169
172
  # Click all "See more" buttons
170
- b.click_all_by_text("See more")
173
+ s.input.click_all("See more")
171
174
 
172
- # Native mouse operations
173
- b.mouse_move(500, 300) # Smooth cursor movement
174
- b.hover(".tooltip-trigger") # Hover to reveal tooltip
175
+ # Mouse operations
176
+ s.input.mouse_move(500, 300)
177
+ s.input.hover(".tooltip-trigger")
175
178
 
176
179
  # JS fetch (bypass CORS, inherit cookies)
177
- data = b.fetch_json("https://api.site.com/v1/items")
180
+ data = s.fetch.json("/api/items")
178
181
  ```
179
182
 
183
+ ### Core Methods (on session)
184
+
180
185
  | Method | Description |
181
186
  |--------|-------------|
182
- | `navigate(url)` | Go to URL |
183
- | `click(selector, move_cursor)` | Click element (optionally move cursor first) |
184
- | `click_all_by_text(text, role)` | Click all matching elements |
187
+ | `navigate(url, wait_until)` | Go to URL (wait_until: LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT) |
188
+ | `click(selector, move_cursor)` | Click element |
185
189
  | `type(selector, text)` | Type text |
186
- | `wait_for(selector, ms)` | Wait for element |
187
- | `wait_seconds(n)` | Sleep |
188
- | `wait_random(min, max)` | Random sleep |
189
- | `extract(selector, attr)` | Get text/attr |
190
- | `get_html(selector)` | Get HTML |
191
- | `soup(selector)` | → SoupWrapper |
192
- | `parse_html(html)` | → BeautifulSoup |
193
- | `fetch_json(url)` | JS fetch → dict |
194
- | `fetch_all(urls)` | Parallel fetch |
195
- | `execute_js(code)` | Run async JS |
190
+ | `wait_for(selector)` | Wait for element |
191
+ | `execute_script(js)` | Run JavaScript |
196
192
  | `screenshot()` | PNG bytes |
197
- | `scroll(dir, amount, ...)` | Native scroll page |
198
- | `scroll_to(selector)` | Scroll element into view |
199
- | `get_scroll_info()` | Position + page size |
200
- | `get_page_info()` | Comprehensive page info |
201
- | `mouse_move(x, y, steps)` | Move cursor to coordinates |
202
- | `hover(selector)` | Hover over element |
193
+ | `get_state()` | URL + title |
194
+ | `get_page_info()` | Full page info |
195
+ | `get/set_cookies()` | Cookie management |
196
+
197
+ ### Capabilities
198
+
199
+ **`session.scroll`** - Scrolling
200
+ | Method | Description |
201
+ |--------|-------------|
202
+ | `js(dir, amount)` | JS scroll (works on complex sites) |
203
+ | `native(dir, amount)` | Browser API scroll |
204
+ | `to_bottom()` | Scroll to page bottom |
205
+ | `to_element(selector)` | Scroll element into view |
206
+ | `info()` | Get scroll position |
207
+ | `infinite(extract_fn)` | Smart infinite scroll with extraction |
208
+
209
+ **`session.input`** - Input operations
210
+ | Method | Description |
211
+ |--------|-------------|
212
+ | `click_js(selector)` | JS click (reliable) |
213
+ | `click_all(text, role)` | Click all matching elements |
214
+ | `key(key, selector)` | Press keyboard key |
215
+ | `hover(selector)` | Hover over element (native) |
216
+ | `hover_js(selector)` | Hover via JS |
217
+ | `mouse_move(x, y)` | Move cursor to coordinates |
218
+
219
+ **`session.timing`** - Delays
220
+ | Method | Description |
221
+ |--------|-------------|
222
+ | `wait(ms)` | Wait milliseconds |
223
+ | `seconds(n)` | Wait seconds |
224
+ | `random(min, max)` | Random delay |
225
+ | `timeout(fn, sec, cleanup)` | Run with timeout |
226
+
227
+ **`session.dom`** - DOM operations
228
+ | Method | Description |
229
+ |--------|-------------|
230
+ | `html(selector)` | Get HTML |
231
+ | `text(selector)` | Get text content |
232
+ | `soup(selector)` | → SoupWrapper |
233
+ | `parse(html)` | → BeautifulSoup |
234
+ | `extract(selector, attr)` | Get text/attr list |
203
235
  | `select(selector, value)` | Dropdown select |
204
236
  | `close_modal()` | Close dialogs |
205
- | `press_key(key, selector)` | Press keyboard key |
206
- | `get/set_cookies()` | Cookie management |
207
- | `with_timeout(fn, sec, cleanup)` | Run with timeout, skip if hangs |
208
237
 
209
- **with_timeout() - Smart timeout for long operations:**
238
+ **`session.fetch`** - HTTP from browser context
239
+ | Method | Description |
240
+ |--------|-------------|
241
+ | `json(url)` | Fetch JSON |
242
+ | `all(requests)` | Parallel fetch |
243
+ | `execute(js_code)` | Custom JS fetch code |
244
+
245
+ **`session.network`** - Network capture (v2.19.0)
246
+ | Method | Description |
247
+ |--------|-------------|
248
+ | `enable(max_exchanges)` | Start capturing HTTP traffic |
249
+ | `disable()` | Stop capturing |
250
+ | `get_all()` | Get all captured exchanges |
251
+ | `filter(url_pattern, methods, status_codes)` | Filter exchanges |
252
+ | `last(url_pattern)` | Get most recent matching exchange |
253
+ | `api_calls(url_pattern)` | Get XHR/Fetch calls matching pattern |
254
+ | `last_json(url_pattern)` | Get JSON body from last matching response |
255
+ | `wait_for(url_pattern, timeout_ms)` | Wait for matching request |
256
+ | `stats()` | Capture statistics |
257
+ | `export_har()` | Export to HAR format |
258
+ | `clear()` | Clear captured data |
259
+
210
260
  ```python
211
- # Sync
212
- result, ok = browser.with_timeout(
213
- lambda: process_item(browser, item),
214
- timeout_sec=60,
215
- on_timeout=lambda: browser.press_key('Escape'),
216
- )
217
- if not ok:
218
- print("Skipped - timed out")
261
+ # Example: Intercept API responses
262
+ from cmdop.services.browser.models import WaitUntil
219
263
 
220
- # Async
221
- result, ok = await browser.with_timeout(
222
- process_item(browser, item), # coroutine
223
- timeout_sec=60,
224
- on_timeout=lambda: browser.press_key('Escape'),
225
- )
226
- ```
264
+ with client.browser.create_session() as s:
265
+ s.network.enable()
266
+ s.navigate("https://app.example.com", wait_until=WaitUntil.NETWORKIDLE)
227
267
 
228
- **scroll() parameters:**
229
- - `direction`: "up", "down", "left", "right"
230
- - `amount`: pixels to scroll
231
- - `smooth`: animate scroll (default True)
232
- - `selector`: scroll element into view (alternative to direction/amount)
268
+ # Get last API response
269
+ api = s.network.last("/api/data")
270
+ data = api.json_body()
271
+
272
+ # Filter by criteria
273
+ posts = s.network.filter(
274
+ url_pattern="/api/posts",
275
+ methods=["GET"],
276
+ status_codes=[200],
277
+ )
278
+
279
+ s.network.disable()
280
+ ```
233
281
 
234
282
  ## SDKBaseModel
235
283
 
@@ -104,91 +104,139 @@ health: Health = result.output # Typed!
104
104
 
105
105
  ## Browser
106
106
 
107
+ Capability-based API for browser automation.
108
+
107
109
  ```python
108
- with client.browser.create_session() as b:
109
- b.navigate("https://shop.com/products")
110
- b.close_modal() # Close popups
110
+ from cmdop.services.browser.models import WaitUntil
111
+
112
+ with client.browser.create_session() as s:
113
+ s.navigate("https://shop.com/products", wait_until=WaitUntil.NETWORKIDLE)
114
+ s.dom.close_modal() # Close popups
111
115
 
112
116
  # BeautifulSoup parsing
113
- soup = b.soup() # SoupWrapper with chainable API
117
+ soup = s.dom.soup() # SoupWrapper with chainable API
114
118
  for item in soup.select(".product"):
115
119
  title = item.select_one("h2").text()
116
120
  price = item.attr("data-price")
117
121
 
118
122
  # Scrolling with random delays
119
123
  for _ in range(10):
120
- soup = b.soup(".listings")
121
- # ... parse ...
122
- b.scroll("down", 700)
123
- b.wait_random(0.8, 1.5) # Random delay
124
+ soup = s.dom.soup(".listings")
125
+ s.scroll.js("down", 700)
126
+ s.timing.random(0.8, 1.5)
124
127
 
125
- # Click with cursor movement (human-like)
126
- b.click("button.buy", move_cursor=True) # Moves cursor before clicking
128
+ # Click with cursor movement
129
+ s.click("button.buy", move_cursor=True)
127
130
 
128
131
  # Click all "See more" buttons
129
- b.click_all_by_text("See more")
132
+ s.input.click_all("See more")
130
133
 
131
- # Native mouse operations
132
- b.mouse_move(500, 300) # Smooth cursor movement
133
- b.hover(".tooltip-trigger") # Hover to reveal tooltip
134
+ # Mouse operations
135
+ s.input.mouse_move(500, 300)
136
+ s.input.hover(".tooltip-trigger")
134
137
 
135
138
  # JS fetch (bypass CORS, inherit cookies)
136
- data = b.fetch_json("https://api.site.com/v1/items")
139
+ data = s.fetch.json("/api/items")
137
140
  ```
138
141
 
142
+ ### Core Methods (on session)
143
+
139
144
  | Method | Description |
140
145
  |--------|-------------|
141
- | `navigate(url)` | Go to URL |
142
- | `click(selector, move_cursor)` | Click element (optionally move cursor first) |
143
- | `click_all_by_text(text, role)` | Click all matching elements |
146
+ | `navigate(url, wait_until)` | Go to URL (wait_until: LOAD, DOMCONTENTLOADED, NETWORKIDLE, COMMIT) |
147
+ | `click(selector, move_cursor)` | Click element |
144
148
  | `type(selector, text)` | Type text |
145
- | `wait_for(selector, ms)` | Wait for element |
146
- | `wait_seconds(n)` | Sleep |
147
- | `wait_random(min, max)` | Random sleep |
148
- | `extract(selector, attr)` | Get text/attr |
149
- | `get_html(selector)` | Get HTML |
150
- | `soup(selector)` | → SoupWrapper |
151
- | `parse_html(html)` | → BeautifulSoup |
152
- | `fetch_json(url)` | JS fetch → dict |
153
- | `fetch_all(urls)` | Parallel fetch |
154
- | `execute_js(code)` | Run async JS |
149
+ | `wait_for(selector)` | Wait for element |
150
+ | `execute_script(js)` | Run JavaScript |
155
151
  | `screenshot()` | PNG bytes |
156
- | `scroll(dir, amount, ...)` | Native scroll page |
157
- | `scroll_to(selector)` | Scroll element into view |
158
- | `get_scroll_info()` | Position + page size |
159
- | `get_page_info()` | Comprehensive page info |
160
- | `mouse_move(x, y, steps)` | Move cursor to coordinates |
161
- | `hover(selector)` | Hover over element |
152
+ | `get_state()` | URL + title |
153
+ | `get_page_info()` | Full page info |
154
+ | `get/set_cookies()` | Cookie management |
155
+
156
+ ### Capabilities
157
+
158
+ **`session.scroll`** - Scrolling
159
+ | Method | Description |
160
+ |--------|-------------|
161
+ | `js(dir, amount)` | JS scroll (works on complex sites) |
162
+ | `native(dir, amount)` | Browser API scroll |
163
+ | `to_bottom()` | Scroll to page bottom |
164
+ | `to_element(selector)` | Scroll element into view |
165
+ | `info()` | Get scroll position |
166
+ | `infinite(extract_fn)` | Smart infinite scroll with extraction |
167
+
168
+ **`session.input`** - Input operations
169
+ | Method | Description |
170
+ |--------|-------------|
171
+ | `click_js(selector)` | JS click (reliable) |
172
+ | `click_all(text, role)` | Click all matching elements |
173
+ | `key(key, selector)` | Press keyboard key |
174
+ | `hover(selector)` | Hover over element (native) |
175
+ | `hover_js(selector)` | Hover via JS |
176
+ | `mouse_move(x, y)` | Move cursor to coordinates |
177
+
178
+ **`session.timing`** - Delays
179
+ | Method | Description |
180
+ |--------|-------------|
181
+ | `wait(ms)` | Wait milliseconds |
182
+ | `seconds(n)` | Wait seconds |
183
+ | `random(min, max)` | Random delay |
184
+ | `timeout(fn, sec, cleanup)` | Run with timeout |
185
+
186
+ **`session.dom`** - DOM operations
187
+ | Method | Description |
188
+ |--------|-------------|
189
+ | `html(selector)` | Get HTML |
190
+ | `text(selector)` | Get text content |
191
+ | `soup(selector)` | → SoupWrapper |
192
+ | `parse(html)` | → BeautifulSoup |
193
+ | `extract(selector, attr)` | Get text/attr list |
162
194
  | `select(selector, value)` | Dropdown select |
163
195
  | `close_modal()` | Close dialogs |
164
- | `press_key(key, selector)` | Press keyboard key |
165
- | `get/set_cookies()` | Cookie management |
166
- | `with_timeout(fn, sec, cleanup)` | Run with timeout, skip if hangs |
167
196
 
168
- **with_timeout() - Smart timeout for long operations:**
197
+ **`session.fetch`** - HTTP from browser context
198
+ | Method | Description |
199
+ |--------|-------------|
200
+ | `json(url)` | Fetch JSON |
201
+ | `all(requests)` | Parallel fetch |
202
+ | `execute(js_code)` | Custom JS fetch code |
203
+
204
+ **`session.network`** - Network capture (v2.19.0)
205
+ | Method | Description |
206
+ |--------|-------------|
207
+ | `enable(max_exchanges)` | Start capturing HTTP traffic |
208
+ | `disable()` | Stop capturing |
209
+ | `get_all()` | Get all captured exchanges |
210
+ | `filter(url_pattern, methods, status_codes)` | Filter exchanges |
211
+ | `last(url_pattern)` | Get most recent matching exchange |
212
+ | `api_calls(url_pattern)` | Get XHR/Fetch calls matching pattern |
213
+ | `last_json(url_pattern)` | Get JSON body from last matching response |
214
+ | `wait_for(url_pattern, timeout_ms)` | Wait for matching request |
215
+ | `stats()` | Capture statistics |
216
+ | `export_har()` | Export to HAR format |
217
+ | `clear()` | Clear captured data |
218
+
169
219
  ```python
170
- # Sync
171
- result, ok = browser.with_timeout(
172
- lambda: process_item(browser, item),
173
- timeout_sec=60,
174
- on_timeout=lambda: browser.press_key('Escape'),
175
- )
176
- if not ok:
177
- print("Skipped - timed out")
220
+ # Example: Intercept API responses
221
+ from cmdop.services.browser.models import WaitUntil
178
222
 
179
- # Async
180
- result, ok = await browser.with_timeout(
181
- process_item(browser, item), # coroutine
182
- timeout_sec=60,
183
- on_timeout=lambda: browser.press_key('Escape'),
184
- )
185
- ```
223
+ with client.browser.create_session() as s:
224
+ s.network.enable()
225
+ s.navigate("https://app.example.com", wait_until=WaitUntil.NETWORKIDLE)
186
226
 
187
- **scroll() parameters:**
188
- - `direction`: "up", "down", "left", "right"
189
- - `amount`: pixels to scroll
190
- - `smooth`: animate scroll (default True)
191
- - `selector`: scroll element into view (alternative to direction/amount)
227
+ # Get last API response
228
+ api = s.network.last("/api/data")
229
+ data = api.json_body()
230
+
231
+ # Filter by criteria
232
+ posts = s.network.filter(
233
+ url_pattern="/api/posts",
234
+ methods=["GET"],
235
+ status_codes=[200],
236
+ )
237
+
238
+ s.network.disable()
239
+ ```
192
240
 
193
241
  ## SDKBaseModel
194
242
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cmdop"
3
- version = "0.1.21"
3
+ version = "0.1.23"
4
4
  description = "Python SDK for CMDOP agent interaction"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -124,7 +124,7 @@ from cmdop.logging import (
124
124
  get_log_dir,
125
125
  )
126
126
 
127
- __version__ = "0.1.21"
127
+ __version__ = "0.1.23"
128
128
 
129
129
  __all__ = [
130
130
  # Version
@@ -0,0 +1,183 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: rpc_messages/browser.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'rpc_messages/browser.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1arpc_messages/browser.proto\x12\x08terminal\"\x9b\x01\n\x1b\x42rowserCreateSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x10\n\x08provider\x18\x02 \x01(\t\x12\x12\n\nprofile_id\x18\x03 \x01(\t\x12\x11\n\tstart_url\x18\x04 \x01(\t\x12\x10\n\x08headless\x18\x05 \x01(\x08\x12\r\n\x05width\x18\x06 \x01(\x05\x12\x0e\n\x06height\x18\x07 \x01(\x05\"Z\n\x1c\x42rowserCreateSessionResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"L\n\x1a\x42rowserCloseSessionRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"=\n\x1b\x42rowserCloseSessionResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x92\x01\n\x16\x42rowserNavigateRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\x12\n\ntimeout_ms\x18\x04 \x01(\x05\x12\'\n\nwait_until\x18\x05 \x01(\x0e\x32\x13.terminal.WaitUntil\"L\n\x17\x42rowserNavigateResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x11\n\tfinal_url\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"\x80\x01\n\x13\x42rowserClickRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\x12\x12\n\ntimeout_ms\x18\x04 \x01(\x05\x12\x13\n\x0bmove_cursor\x18\x05 \x01(\x08\"6\n\x14\x42rowserClickResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x8d\x01\n\x12\x42rowserTypeRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\x12\x0c\n\x04text\x18\x04 \x01(\t\x12\x12\n\nhuman_like\x18\x05 \x01(\x08\x12\x13\n\x0b\x63lear_first\x18\x06 \x01(\x08\"5\n\x13\x42rowserTypeResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"j\n\x12\x42rowserWaitRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\x12\x12\n\ntimeout_ms\x18\x04 \x01(\x05\"D\n\x13\x42rowserWaitResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x66ound\x18\x02 \x01(\x08\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"{\n\x15\x42rowserExtractRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\x12\x11\n\tattribute\x18\x04 \x01(\t\x12\r\n\x05limit\x18\x05 \x01(\x05\"W\n\x16\x42rowserExtractResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0e\n\x06values\x18\x02 \x03(\t\x12\r\n\x05\x63ount\x18\x03 \x01(\x05\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\x7f\n\x1a\x42rowserExtractRegexRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0f\n\x07pattern\x18\x03 \x01(\t\x12\x11\n\tfrom_html\x18\x04 \x01(\x08\x12\r\n\x05limit\x18\x05 \x01(\x05\"]\n\x1b\x42rowserExtractRegexResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07matches\x18\x02 \x03(\t\x12\r\n\x05\x63ount\x18\x03 \x01(\x05\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"Y\n\x15\x42rowserGetHTMLRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\"F\n\x16\x42rowserGetHTMLResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0c\n\x04html\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"Y\n\x15\x42rowserGetTextRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\"F\n\x16\x42rowserGetTextResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"]\n\x1b\x42rowserExecuteScriptRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0e\n\x06script\x18\x03 \x01(\t\"N\n\x1c\x42rowserExecuteScriptResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0e\n\x06result\x18\x02 \x01(\t\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"~\n\x18\x42rowserScreenshotRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x11\n\tfull_page\x18\x03 \x01(\x08\x12\x0e\n\x06\x66ormat\x18\x04 \x01(\t\x12\x0f\n\x07quality\x18\x05 \x01(\x05\"I\n\x19\x42rowserScreenshotResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"H\n\x16\x42rowserGetStateRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"U\n\x17\x42rowserGetStateResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\r\n\x05title\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"K\n\x19\x42rowserGetPageInfoRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"\xbb\x03\n\x1a\x42rowserGetPageInfoResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\x12\r\n\x05title\x18\x04 \x01(\t\x12\x13\n\x0bpage_height\x18\x05 \x01(\x05\x12\x17\n\x0fviewport_height\x18\x06 \x01(\x05\x12\x16\n\x0eviewport_width\x18\x07 \x01(\x05\x12\x10\n\x08scroll_x\x18\x08 \x01(\x05\x12\x10\n\x08scroll_y\x18\t \x01(\x05\x12\x0e\n\x06\x61t_top\x18\n \x01(\x08\x12\x11\n\tat_bottom\x18\x0b \x01(\x08\x12\x14\n\x0cload_time_ms\x18\x0c \x01(\x05\x12\x15\n\rcookies_count\x18\r \x01(\x05\x12\x10\n\x08is_https\x18\x0e \x01(\x08\x12\x13\n\x0bhas_iframes\x18\x0f \x01(\x08\x12\x15\n\rdom_nodes_raw\x18\x10 \x01(\x05\x12\x19\n\x11\x64om_nodes_cleaned\x18\x11 \x01(\x05\x12\x17\n\x0ftokens_estimate\x18\x12 \x01(\x05\x12\x1b\n\x13\x63loudflare_detected\x18\x13 \x01(\x08\x12\x18\n\x10\x63\x61ptcha_detected\x18\x14 \x01(\x08\"\x91\x01\n\rBrowserCookie\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\x12\x0c\n\x04path\x18\x04 \x01(\t\x12\x0e\n\x06secure\x18\x05 \x01(\x08\x12\x11\n\thttp_only\x18\x06 \x01(\x08\x12\x11\n\tsame_site\x18\x07 \x01(\t\x12\x0f\n\x07\x65xpires\x18\x08 \x01(\x03\"t\n\x18\x42rowserSetCookiesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12(\n\x07\x63ookies\x18\x03 \x03(\x0b\x32\x17.terminal.BrowserCookie\";\n\x19\x42rowserSetCookiesResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"Z\n\x18\x42rowserGetCookiesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\"e\n\x19\x42rowserGetCookiesResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12(\n\x07\x63ookies\x18\x02 \x03(\x0b\x32\x17.terminal.BrowserCookie\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"n\n\x17\x42rowserMouseMoveRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\t\n\x01x\x18\x03 \x01(\x05\x12\t\n\x01y\x18\x04 \x01(\x05\x12\r\n\x05steps\x18\x05 \x01(\x05\":\n\x18\x42rowserMouseMoveResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"k\n\x13\x42rowserHoverRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x10\n\x08selector\x18\x03 \x01(\t\x12\x12\n\ntimeout_ms\x18\x04 \x01(\x05\"6\n\x14\x42rowserHoverResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x9e\x01\n\x14\x42rowserScrollRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x11\n\tdirection\x18\x03 \x01(\t\x12\x0e\n\x06\x61mount\x18\x04 \x01(\x05\x12\x10\n\x08selector\x18\x05 \x01(\t\x12\x11\n\tcontainer\x18\x06 \x01(\t\x12\x0e\n\x06smooth\x18\x07 \x01(\x08\"\xb1\x01\n\x15\x42rowserScrollResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x10\n\x08scroll_x\x18\x02 \x01(\x05\x12\x10\n\x08scroll_y\x18\x03 \x01(\x05\x12\x13\n\x0bscrolled_by\x18\x04 \x01(\x05\x12\x13\n\x0bpage_height\x18\x05 \x01(\x05\x12\x17\n\x0fviewport_height\x18\x06 \x01(\x05\x12\x11\n\tat_bottom\x18\x07 \x01(\x08\x12\r\n\x05\x65rror\x18\x08 \x01(\t\"\xd5\x01\n\x1f\x42rowserValidateSelectorsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0c\n\x04item\x18\x03 \x01(\t\x12\x45\n\x06\x66ields\x18\x04 \x03(\x0b\x32\x35.terminal.BrowserValidateSelectorsRequest.FieldsEntry\x1a-\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd2\x02\n BrowserValidateSelectorsResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05valid\x18\x02 \x01(\x08\x12\x46\n\x06\x63ounts\x18\x03 \x03(\x0b\x32\x36.terminal.BrowserValidateSelectorsResponse.CountsEntry\x12H\n\x07samples\x18\x04 \x03(\x0b\x32\x37.terminal.BrowserValidateSelectorsResponse.SamplesEntry\x12\x0e\n\x06\x65rrors\x18\x05 \x03(\t\x12\r\n\x05\x65rror\x18\x06 \x01(\t\x1a-\n\x0b\x43ountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x1a.\n\x0cSamplesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"}\n\x19\x42rowserExtractDataRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x0c\n\x04item\x18\x03 \x01(\t\x12\x13\n\x0b\x66ields_json\x18\x04 \x01(\t\x12\r\n\x05limit\x18\x05 \x01(\x05\"_\n\x1a\x42rowserExtractDataResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x12\n\nitems_json\x18\x02 \x01(\t\x12\r\n\x05\x63ount\x18\x03 \x01(\x05\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\x7f\n\x1b\x42rowserNetworkEnableRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x15\n\rmax_exchanges\x18\x03 \x01(\x05\x12\x19\n\x11max_response_size\x18\x04 \x01(\x03\">\n\x1c\x42rowserNetworkEnableResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"N\n\x1c\x42rowserNetworkDisableRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"?\n\x1d\x42rowserNetworkDisableResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\xb6\x01\n!BrowserNetworkGetExchangesRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x13\n\x0burl_pattern\x18\x03 \x01(\t\x12\x0f\n\x07methods\x18\x04 \x03(\t\x12\x14\n\x0cstatus_codes\x18\x05 \x03(\x05\x12\x16\n\x0eresource_types\x18\x06 \x03(\t\x12\r\n\x05limit\x18\x07 \x01(\x05\"\x81\x01\n\"BrowserNetworkGetExchangesResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12,\n\texchanges\x18\x02 \x03(\x0b\x32\x19.terminal.NetworkExchange\x12\r\n\x05\x63ount\x18\x03 \x01(\x05\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"g\n BrowserNetworkGetExchangeRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x13\n\x0b\x65xchange_id\x18\x03 \x01(\t\"p\n!BrowserNetworkGetExchangeResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12+\n\x08\x65xchange\x18\x02 \x01(\x0b\x32\x19.terminal.NetworkExchange\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"c\n\x1c\x42rowserNetworkGetLastRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x13\n\x0burl_pattern\x18\x03 \x01(\t\"l\n\x1d\x42rowserNetworkGetLastResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12+\n\x08\x65xchange\x18\x02 \x01(\x0b\x32\x19.terminal.NetworkExchange\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"L\n\x1a\x42rowserNetworkClearRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"=\n\x1b\x42rowserNetworkClearResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"L\n\x1a\x42rowserNetworkStatsRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\"\xae\x01\n\x1b\x42rowserNetworkStatsResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\x12\x16\n\x0etotal_captured\x18\x03 \x01(\x05\x12\x14\n\x0ctotal_errors\x18\x04 \x01(\x05\x12\x13\n\x0btotal_bytes\x18\x05 \x01(\x03\x12\x1b\n\x13\x61verage_duration_ms\x18\x06 \x01(\x05\x12\r\n\x05\x65rror\x18\x07 \x01(\t\"\xa4\x01\n\x1e\x42rowserNetworkExportHARRequest\x12\x12\n\nsession_id\x18\x01 \x01(\t\x12\x1a\n\x12\x62rowser_session_id\x18\x02 \x01(\t\x12\x13\n\x0burl_pattern\x18\x03 \x01(\t\x12\x0f\n\x07methods\x18\x04 \x03(\t\x12\x14\n\x0cstatus_codes\x18\x05 \x03(\x05\x12\x16\n\x0eresource_types\x18\x06 \x03(\t\"S\n\x1f\x42rowserNetworkExportHARResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\x12\x10\n\x08har_data\x18\x02 \x01(\x0c\x12\r\n\x05\x65rror\x18\x03 \x01(\t\"\xd0\x01\n\x0eNetworkRequest\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x0e\n\x06method\x18\x02 \x01(\t\x12\x36\n\x07headers\x18\x03 \x03(\x0b\x32%.terminal.NetworkRequest.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x04 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x05 \x01(\t\x12\x15\n\rresource_type\x18\x06 \x01(\t\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe5\x01\n\x0fNetworkResponse\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x13\n\x0bstatus_text\x18\x02 \x01(\t\x12\x37\n\x07headers\x18\x03 \x03(\x0b\x32&.terminal.NetworkResponse.HeadersEntry\x12\x0c\n\x04\x62ody\x18\x04 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x05 \x01(\t\x12\x0c\n\x04size\x18\x06 \x01(\x03\x12\x12\n\nfrom_cache\x18\x07 \x01(\x08\x1a.\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x7f\n\rNetworkTiming\x12\x15\n\rstarted_at_ms\x18\x01 \x01(\x03\x12\x13\n\x0b\x65nded_at_ms\x18\x02 \x01(\x03\x12\x13\n\x0b\x64uration_ms\x18\x03 \x01(\x05\x12\x14\n\x0cwait_time_ms\x18\x04 \x01(\x05\x12\x17\n\x0freceive_time_ms\x18\x05 \x01(\x05\"\xd2\x01\n\x0fNetworkExchange\x12\n\n\x02id\x18\x01 \x01(\t\x12)\n\x07request\x18\x02 \x01(\x0b\x32\x18.terminal.NetworkRequest\x12+\n\x08response\x18\x03 \x01(\x0b\x32\x19.terminal.NetworkResponse\x12\'\n\x06timing\x18\x04 \x01(\x0b\x32\x17.terminal.NetworkTiming\x12\r\n\x05\x65rror\x18\x05 \x01(\t\x12\x10\n\x08\x66rame_id\x18\x06 \x01(\t\x12\x11\n\tinitiator\x18\x07 \x01(\t*\\\n\tWaitUntil\x12\r\n\tWAIT_LOAD\x10\x00\x12\x19\n\x15WAIT_DOMCONTENTLOADED\x10\x01\x12\x14\n\x10WAIT_NETWORKIDLE\x10\x02\x12\x0f\n\x0bWAIT_COMMIT\x10\x03\x42\x10Z\x0eterminal/protob\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rpc_messages.browser_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ _globals['DESCRIPTOR']._loaded_options = None
34
+ _globals['DESCRIPTOR']._serialized_options = b'Z\016terminal/proto'
35
+ _globals['_BROWSERVALIDATESELECTORSREQUEST_FIELDSENTRY']._loaded_options = None
36
+ _globals['_BROWSERVALIDATESELECTORSREQUEST_FIELDSENTRY']._serialized_options = b'8\001'
37
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_COUNTSENTRY']._loaded_options = None
38
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_COUNTSENTRY']._serialized_options = b'8\001'
39
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_SAMPLESENTRY']._loaded_options = None
40
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_SAMPLESENTRY']._serialized_options = b'8\001'
41
+ _globals['_NETWORKREQUEST_HEADERSENTRY']._loaded_options = None
42
+ _globals['_NETWORKREQUEST_HEADERSENTRY']._serialized_options = b'8\001'
43
+ _globals['_NETWORKRESPONSE_HEADERSENTRY']._loaded_options = None
44
+ _globals['_NETWORKRESPONSE_HEADERSENTRY']._serialized_options = b'8\001'
45
+ _globals['_WAITUNTIL']._serialized_start=7547
46
+ _globals['_WAITUNTIL']._serialized_end=7639
47
+ _globals['_BROWSERCREATESESSIONREQUEST']._serialized_start=41
48
+ _globals['_BROWSERCREATESESSIONREQUEST']._serialized_end=196
49
+ _globals['_BROWSERCREATESESSIONRESPONSE']._serialized_start=198
50
+ _globals['_BROWSERCREATESESSIONRESPONSE']._serialized_end=288
51
+ _globals['_BROWSERCLOSESESSIONREQUEST']._serialized_start=290
52
+ _globals['_BROWSERCLOSESESSIONREQUEST']._serialized_end=366
53
+ _globals['_BROWSERCLOSESESSIONRESPONSE']._serialized_start=368
54
+ _globals['_BROWSERCLOSESESSIONRESPONSE']._serialized_end=429
55
+ _globals['_BROWSERNAVIGATEREQUEST']._serialized_start=432
56
+ _globals['_BROWSERNAVIGATEREQUEST']._serialized_end=578
57
+ _globals['_BROWSERNAVIGATERESPONSE']._serialized_start=580
58
+ _globals['_BROWSERNAVIGATERESPONSE']._serialized_end=656
59
+ _globals['_BROWSERCLICKREQUEST']._serialized_start=659
60
+ _globals['_BROWSERCLICKREQUEST']._serialized_end=787
61
+ _globals['_BROWSERCLICKRESPONSE']._serialized_start=789
62
+ _globals['_BROWSERCLICKRESPONSE']._serialized_end=843
63
+ _globals['_BROWSERTYPEREQUEST']._serialized_start=846
64
+ _globals['_BROWSERTYPEREQUEST']._serialized_end=987
65
+ _globals['_BROWSERTYPERESPONSE']._serialized_start=989
66
+ _globals['_BROWSERTYPERESPONSE']._serialized_end=1042
67
+ _globals['_BROWSERWAITREQUEST']._serialized_start=1044
68
+ _globals['_BROWSERWAITREQUEST']._serialized_end=1150
69
+ _globals['_BROWSERWAITRESPONSE']._serialized_start=1152
70
+ _globals['_BROWSERWAITRESPONSE']._serialized_end=1220
71
+ _globals['_BROWSEREXTRACTREQUEST']._serialized_start=1222
72
+ _globals['_BROWSEREXTRACTREQUEST']._serialized_end=1345
73
+ _globals['_BROWSEREXTRACTRESPONSE']._serialized_start=1347
74
+ _globals['_BROWSEREXTRACTRESPONSE']._serialized_end=1434
75
+ _globals['_BROWSEREXTRACTREGEXREQUEST']._serialized_start=1436
76
+ _globals['_BROWSEREXTRACTREGEXREQUEST']._serialized_end=1563
77
+ _globals['_BROWSEREXTRACTREGEXRESPONSE']._serialized_start=1565
78
+ _globals['_BROWSEREXTRACTREGEXRESPONSE']._serialized_end=1658
79
+ _globals['_BROWSERGETHTMLREQUEST']._serialized_start=1660
80
+ _globals['_BROWSERGETHTMLREQUEST']._serialized_end=1749
81
+ _globals['_BROWSERGETHTMLRESPONSE']._serialized_start=1751
82
+ _globals['_BROWSERGETHTMLRESPONSE']._serialized_end=1821
83
+ _globals['_BROWSERGETTEXTREQUEST']._serialized_start=1823
84
+ _globals['_BROWSERGETTEXTREQUEST']._serialized_end=1912
85
+ _globals['_BROWSERGETTEXTRESPONSE']._serialized_start=1914
86
+ _globals['_BROWSERGETTEXTRESPONSE']._serialized_end=1984
87
+ _globals['_BROWSEREXECUTESCRIPTREQUEST']._serialized_start=1986
88
+ _globals['_BROWSEREXECUTESCRIPTREQUEST']._serialized_end=2079
89
+ _globals['_BROWSEREXECUTESCRIPTRESPONSE']._serialized_start=2081
90
+ _globals['_BROWSEREXECUTESCRIPTRESPONSE']._serialized_end=2159
91
+ _globals['_BROWSERSCREENSHOTREQUEST']._serialized_start=2161
92
+ _globals['_BROWSERSCREENSHOTREQUEST']._serialized_end=2287
93
+ _globals['_BROWSERSCREENSHOTRESPONSE']._serialized_start=2289
94
+ _globals['_BROWSERSCREENSHOTRESPONSE']._serialized_end=2362
95
+ _globals['_BROWSERGETSTATEREQUEST']._serialized_start=2364
96
+ _globals['_BROWSERGETSTATEREQUEST']._serialized_end=2436
97
+ _globals['_BROWSERGETSTATERESPONSE']._serialized_start=2438
98
+ _globals['_BROWSERGETSTATERESPONSE']._serialized_end=2523
99
+ _globals['_BROWSERGETPAGEINFOREQUEST']._serialized_start=2525
100
+ _globals['_BROWSERGETPAGEINFOREQUEST']._serialized_end=2600
101
+ _globals['_BROWSERGETPAGEINFORESPONSE']._serialized_start=2603
102
+ _globals['_BROWSERGETPAGEINFORESPONSE']._serialized_end=3046
103
+ _globals['_BROWSERCOOKIE']._serialized_start=3049
104
+ _globals['_BROWSERCOOKIE']._serialized_end=3194
105
+ _globals['_BROWSERSETCOOKIESREQUEST']._serialized_start=3196
106
+ _globals['_BROWSERSETCOOKIESREQUEST']._serialized_end=3312
107
+ _globals['_BROWSERSETCOOKIESRESPONSE']._serialized_start=3314
108
+ _globals['_BROWSERSETCOOKIESRESPONSE']._serialized_end=3373
109
+ _globals['_BROWSERGETCOOKIESREQUEST']._serialized_start=3375
110
+ _globals['_BROWSERGETCOOKIESREQUEST']._serialized_end=3465
111
+ _globals['_BROWSERGETCOOKIESRESPONSE']._serialized_start=3467
112
+ _globals['_BROWSERGETCOOKIESRESPONSE']._serialized_end=3568
113
+ _globals['_BROWSERMOUSEMOVEREQUEST']._serialized_start=3570
114
+ _globals['_BROWSERMOUSEMOVEREQUEST']._serialized_end=3680
115
+ _globals['_BROWSERMOUSEMOVERESPONSE']._serialized_start=3682
116
+ _globals['_BROWSERMOUSEMOVERESPONSE']._serialized_end=3740
117
+ _globals['_BROWSERHOVERREQUEST']._serialized_start=3742
118
+ _globals['_BROWSERHOVERREQUEST']._serialized_end=3849
119
+ _globals['_BROWSERHOVERRESPONSE']._serialized_start=3851
120
+ _globals['_BROWSERHOVERRESPONSE']._serialized_end=3905
121
+ _globals['_BROWSERSCROLLREQUEST']._serialized_start=3908
122
+ _globals['_BROWSERSCROLLREQUEST']._serialized_end=4066
123
+ _globals['_BROWSERSCROLLRESPONSE']._serialized_start=4069
124
+ _globals['_BROWSERSCROLLRESPONSE']._serialized_end=4246
125
+ _globals['_BROWSERVALIDATESELECTORSREQUEST']._serialized_start=4249
126
+ _globals['_BROWSERVALIDATESELECTORSREQUEST']._serialized_end=4462
127
+ _globals['_BROWSERVALIDATESELECTORSREQUEST_FIELDSENTRY']._serialized_start=4417
128
+ _globals['_BROWSERVALIDATESELECTORSREQUEST_FIELDSENTRY']._serialized_end=4462
129
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE']._serialized_start=4465
130
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE']._serialized_end=4803
131
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_COUNTSENTRY']._serialized_start=4710
132
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_COUNTSENTRY']._serialized_end=4755
133
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_SAMPLESENTRY']._serialized_start=4757
134
+ _globals['_BROWSERVALIDATESELECTORSRESPONSE_SAMPLESENTRY']._serialized_end=4803
135
+ _globals['_BROWSEREXTRACTDATAREQUEST']._serialized_start=4805
136
+ _globals['_BROWSEREXTRACTDATAREQUEST']._serialized_end=4930
137
+ _globals['_BROWSEREXTRACTDATARESPONSE']._serialized_start=4932
138
+ _globals['_BROWSEREXTRACTDATARESPONSE']._serialized_end=5027
139
+ _globals['_BROWSERNETWORKENABLEREQUEST']._serialized_start=5029
140
+ _globals['_BROWSERNETWORKENABLEREQUEST']._serialized_end=5156
141
+ _globals['_BROWSERNETWORKENABLERESPONSE']._serialized_start=5158
142
+ _globals['_BROWSERNETWORKENABLERESPONSE']._serialized_end=5220
143
+ _globals['_BROWSERNETWORKDISABLEREQUEST']._serialized_start=5222
144
+ _globals['_BROWSERNETWORKDISABLEREQUEST']._serialized_end=5300
145
+ _globals['_BROWSERNETWORKDISABLERESPONSE']._serialized_start=5302
146
+ _globals['_BROWSERNETWORKDISABLERESPONSE']._serialized_end=5365
147
+ _globals['_BROWSERNETWORKGETEXCHANGESREQUEST']._serialized_start=5368
148
+ _globals['_BROWSERNETWORKGETEXCHANGESREQUEST']._serialized_end=5550
149
+ _globals['_BROWSERNETWORKGETEXCHANGESRESPONSE']._serialized_start=5553
150
+ _globals['_BROWSERNETWORKGETEXCHANGESRESPONSE']._serialized_end=5682
151
+ _globals['_BROWSERNETWORKGETEXCHANGEREQUEST']._serialized_start=5684
152
+ _globals['_BROWSERNETWORKGETEXCHANGEREQUEST']._serialized_end=5787
153
+ _globals['_BROWSERNETWORKGETEXCHANGERESPONSE']._serialized_start=5789
154
+ _globals['_BROWSERNETWORKGETEXCHANGERESPONSE']._serialized_end=5901
155
+ _globals['_BROWSERNETWORKGETLASTREQUEST']._serialized_start=5903
156
+ _globals['_BROWSERNETWORKGETLASTREQUEST']._serialized_end=6002
157
+ _globals['_BROWSERNETWORKGETLASTRESPONSE']._serialized_start=6004
158
+ _globals['_BROWSERNETWORKGETLASTRESPONSE']._serialized_end=6112
159
+ _globals['_BROWSERNETWORKCLEARREQUEST']._serialized_start=6114
160
+ _globals['_BROWSERNETWORKCLEARREQUEST']._serialized_end=6190
161
+ _globals['_BROWSERNETWORKCLEARRESPONSE']._serialized_start=6192
162
+ _globals['_BROWSERNETWORKCLEARRESPONSE']._serialized_end=6253
163
+ _globals['_BROWSERNETWORKSTATSREQUEST']._serialized_start=6255
164
+ _globals['_BROWSERNETWORKSTATSREQUEST']._serialized_end=6331
165
+ _globals['_BROWSERNETWORKSTATSRESPONSE']._serialized_start=6334
166
+ _globals['_BROWSERNETWORKSTATSRESPONSE']._serialized_end=6508
167
+ _globals['_BROWSERNETWORKEXPORTHARREQUEST']._serialized_start=6511
168
+ _globals['_BROWSERNETWORKEXPORTHARREQUEST']._serialized_end=6675
169
+ _globals['_BROWSERNETWORKEXPORTHARRESPONSE']._serialized_start=6677
170
+ _globals['_BROWSERNETWORKEXPORTHARRESPONSE']._serialized_end=6760
171
+ _globals['_NETWORKREQUEST']._serialized_start=6763
172
+ _globals['_NETWORKREQUEST']._serialized_end=6971
173
+ _globals['_NETWORKREQUEST_HEADERSENTRY']._serialized_start=6925
174
+ _globals['_NETWORKREQUEST_HEADERSENTRY']._serialized_end=6971
175
+ _globals['_NETWORKRESPONSE']._serialized_start=6974
176
+ _globals['_NETWORKRESPONSE']._serialized_end=7203
177
+ _globals['_NETWORKRESPONSE_HEADERSENTRY']._serialized_start=6925
178
+ _globals['_NETWORKRESPONSE_HEADERSENTRY']._serialized_end=6971
179
+ _globals['_NETWORKTIMING']._serialized_start=7205
180
+ _globals['_NETWORKTIMING']._serialized_end=7332
181
+ _globals['_NETWORKEXCHANGE']._serialized_start=7335
182
+ _globals['_NETWORKEXCHANGE']._serialized_end=7545
183
+ # @@protoc_insertion_point(module_scope)