cmdop 0.1.24__tar.gz → 0.1.25__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 (207) hide show
  1. {cmdop-0.1.24 → cmdop-0.1.25}/PKG-INFO +1 -1
  2. {cmdop-0.1.24 → cmdop-0.1.25}/pyproject.toml +1 -1
  3. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/__init__.py +1 -1
  4. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/helpers/network_analyzer.py +28 -9
  5. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/visual.py +1 -1
  6. {cmdop-0.1.24 → cmdop-0.1.25}/.gitignore +0 -0
  7. {cmdop-0.1.24 → cmdop-0.1.25}/LICENSE +0 -0
  8. {cmdop-0.1.24 → cmdop-0.1.25}/README.md +0 -0
  9. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/__init__.py +0 -0
  10. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/agent_messages_pb2.py +0 -0
  11. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/agent_messages_pb2.pyi +0 -0
  12. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/agent_messages_pb2_grpc.py +0 -0
  13. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/common_types_pb2.py +0 -0
  14. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/common_types_pb2.pyi +0 -0
  15. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/common_types_pb2_grpc.py +0 -0
  16. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/control_messages_pb2.py +0 -0
  17. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/control_messages_pb2.pyi +0 -0
  18. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/control_messages_pb2_grpc.py +0 -0
  19. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/__init__.py +0 -0
  20. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/archive_pb2.py +0 -0
  21. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/archive_pb2.pyi +0 -0
  22. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/archive_pb2_grpc.py +0 -0
  23. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/changes_pb2.py +0 -0
  24. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/changes_pb2.pyi +0 -0
  25. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/changes_pb2_grpc.py +0 -0
  26. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/common_pb2.py +0 -0
  27. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/common_pb2.pyi +0 -0
  28. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/common_pb2_grpc.py +0 -0
  29. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/directory_pb2.py +0 -0
  30. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/directory_pb2.pyi +0 -0
  31. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/directory_pb2_grpc.py +0 -0
  32. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/file_crud_pb2.py +0 -0
  33. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/file_crud_pb2.pyi +0 -0
  34. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/file_crud_pb2_grpc.py +0 -0
  35. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/hls_pb2.py +0 -0
  36. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/hls_pb2.pyi +0 -0
  37. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/hls_pb2_grpc.py +0 -0
  38. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/requests_pb2.py +0 -0
  39. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/requests_pb2.pyi +0 -0
  40. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/requests_pb2_grpc.py +0 -0
  41. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/search_pb2.py +0 -0
  42. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/search_pb2.pyi +0 -0
  43. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/search_pb2_grpc.py +0 -0
  44. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/transfer_pb2.py +0 -0
  45. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/transfer_pb2.pyi +0 -0
  46. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations/transfer_pb2_grpc.py +0 -0
  47. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations_pb2.py +0 -0
  48. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations_pb2.pyi +0 -0
  49. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_operations_pb2_grpc.py +0 -0
  50. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/__init__.py +0 -0
  51. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/archive_pb2.py +0 -0
  52. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/archive_pb2.pyi +0 -0
  53. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/archive_pb2_grpc.py +0 -0
  54. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/directory_pb2.py +0 -0
  55. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/directory_pb2.pyi +0 -0
  56. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/directory_pb2_grpc.py +0 -0
  57. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/file_crud_pb2.py +0 -0
  58. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/file_crud_pb2.pyi +0 -0
  59. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/file_crud_pb2_grpc.py +0 -0
  60. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/hls_pb2.py +0 -0
  61. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/hls_pb2.pyi +0 -0
  62. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/hls_pb2_grpc.py +0 -0
  63. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/search_pb2.py +0 -0
  64. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/search_pb2.pyi +0 -0
  65. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc/search_pb2_grpc.py +0 -0
  66. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc_pb2.py +0 -0
  67. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc_pb2.pyi +0 -0
  68. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/file_rpc_pb2_grpc.py +0 -0
  69. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/message_pool.py +0 -0
  70. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/py.typed +0 -0
  71. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/__init__.py +0 -0
  72. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/agent_pb2.py +0 -0
  73. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/agent_pb2.pyi +0 -0
  74. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/agent_pb2_grpc.py +0 -0
  75. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/browser_pb2.py +0 -0
  76. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/browser_pb2.pyi +0 -0
  77. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/browser_pb2_grpc.py +0 -0
  78. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/device_pb2.py +0 -0
  79. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/device_pb2.pyi +0 -0
  80. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/device_pb2_grpc.py +0 -0
  81. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/extract_pb2.py +0 -0
  82. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/extract_pb2.pyi +0 -0
  83. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/extract_pb2_grpc.py +0 -0
  84. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/health_pb2.py +0 -0
  85. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/health_pb2.pyi +0 -0
  86. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/health_pb2_grpc.py +0 -0
  87. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/history_pb2.py +0 -0
  88. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/history_pb2.pyi +0 -0
  89. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/history_pb2_grpc.py +0 -0
  90. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/lifecycle_pb2.py +0 -0
  91. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/lifecycle_pb2.pyi +0 -0
  92. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/lifecycle_pb2_grpc.py +0 -0
  93. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/push_pb2.py +0 -0
  94. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/push_pb2.pyi +0 -0
  95. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/push_pb2_grpc.py +0 -0
  96. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/session_pb2.py +0 -0
  97. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/session_pb2.pyi +0 -0
  98. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/session_pb2_grpc.py +0 -0
  99. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/terminal_pb2.py +0 -0
  100. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/terminal_pb2.pyi +0 -0
  101. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages/terminal_pb2_grpc.py +0 -0
  102. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages_pb2.py +0 -0
  103. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages_pb2.pyi +0 -0
  104. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/rpc_messages_pb2_grpc.py +0 -0
  105. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/service_pb2.py +0 -0
  106. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/service_pb2.pyi +0 -0
  107. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/service_pb2_grpc.py +0 -0
  108. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/tunnel_pb2.py +0 -0
  109. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/tunnel_pb2.pyi +0 -0
  110. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/_generated/tunnel_pb2_grpc.py +0 -0
  111. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/__init__.py +0 -0
  112. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/__init__.py +0 -0
  113. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/__init__.py +0 -0
  114. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/client.py +0 -0
  115. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/enums.py +0 -0
  116. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/logger.py +0 -0
  117. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machine_sharing/__init__.py +0 -0
  118. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machine_sharing/client.py +0 -0
  119. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machine_sharing/models.py +0 -0
  120. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machine_sharing/sync_client.py +0 -0
  121. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machines/__init__.py +0 -0
  122. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machines/client.py +0 -0
  123. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machines/models.py +0 -0
  124. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/machines__api__machines/sync_client.py +0 -0
  125. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/retry.py +0 -0
  126. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/schema.json +0 -0
  127. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/machines/sync_client.py +0 -0
  128. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/__init__.py +0 -0
  129. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/client.py +0 -0
  130. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/enums.py +0 -0
  131. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/logger.py +0 -0
  132. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/retry.py +0 -0
  133. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/schema.json +0 -0
  134. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/sync_client.py +0 -0
  135. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__oauth/__init__.py +0 -0
  136. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__oauth/client.py +0 -0
  137. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__oauth/models.py +0 -0
  138. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__oauth/sync_client.py +0 -0
  139. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__system/__init__.py +0 -0
  140. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__system/client.py +0 -0
  141. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__system/models.py +0 -0
  142. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/system/system__api__system/sync_client.py +0 -0
  143. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/__init__.py +0 -0
  144. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/client.py +0 -0
  145. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/enums.py +0 -0
  146. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/logger.py +0 -0
  147. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/retry.py +0 -0
  148. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/schema.json +0 -0
  149. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/sync_client.py +0 -0
  150. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/__init__.py +0 -0
  151. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/client.py +0 -0
  152. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/models.py +0 -0
  153. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/api/generated/workspaces/workspaces__api__workspaces/sync_client.py +0 -0
  154. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/client.py +0 -0
  155. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/config.py +0 -0
  156. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/discovery.py +0 -0
  157. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/exceptions.py +0 -0
  158. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/helpers/__init__.py +0 -0
  159. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/helpers/cleaner.py +0 -0
  160. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/helpers/formatting.py +0 -0
  161. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/logging.py +0 -0
  162. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/__init__.py +0 -0
  163. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/agent.py +0 -0
  164. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/base.py +0 -0
  165. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/config.py +0 -0
  166. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/extract.py +0 -0
  167. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/files.py +0 -0
  168. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/models/terminal.py +0 -0
  169. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/py.typed +0 -0
  170. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/__init__.py +0 -0
  171. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/agent.py +0 -0
  172. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/base.py +0 -0
  173. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/__init__.py +0 -0
  174. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/__init__.py +0 -0
  175. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/_base.py +0 -0
  176. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/_helpers.py +0 -0
  177. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/dom.py +0 -0
  178. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/fetch.py +0 -0
  179. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/input.py +0 -0
  180. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/network.py +0 -0
  181. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/scroll.py +0 -0
  182. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/capabilities/timing.py +0 -0
  183. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/js/__init__.py +0 -0
  184. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/js/core.py +0 -0
  185. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/js/fetch.py +0 -0
  186. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/js/interaction.py +0 -0
  187. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/js/scroll.py +0 -0
  188. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/models.py +0 -0
  189. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/parsing.py +0 -0
  190. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/service/__init__.py +0 -0
  191. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/service/_helpers.py +0 -0
  192. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/service/aio.py +0 -0
  193. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/service/sync.py +0 -0
  194. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/browser/session.py +0 -0
  195. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/extract.py +0 -0
  196. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/files.py +0 -0
  197. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/services/terminal.py +0 -0
  198. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/streaming/__init__.py +0 -0
  199. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/streaming/base.py +0 -0
  200. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/streaming/handlers.py +0 -0
  201. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/streaming/terminal.py +0 -0
  202. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/transport/__init__.py +0 -0
  203. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/transport/auth.py +0 -0
  204. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/transport/base.py +0 -0
  205. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/transport/discovery.py +0 -0
  206. {cmdop-0.1.24 → cmdop-0.1.25}/src/cmdop/transport/local.py +0 -0
  207. {cmdop-0.1.24 → cmdop-0.1.25}/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.24
3
+ Version: 0.1.25
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cmdop"
3
- version = "0.1.24"
3
+ version = "0.1.25"
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.24"
127
+ __version__ = "0.1.25"
128
128
 
129
129
  __all__ = [
130
130
  # Version
@@ -130,10 +130,10 @@ class NetworkSnapshot(BaseModel):
130
130
  return self.model_dump_json(indent=indent)
131
131
 
132
132
  def best_api(self) -> RequestSnapshot | None:
133
- """Get the best data API (most items)."""
133
+ """Get the best data API (largest response, then most items)."""
134
134
  if not self.api_requests:
135
135
  return None
136
- return max(self.api_requests, key=lambda r: r.item_count or 0)
136
+ return max(self.api_requests, key=lambda r: (r.size, r.item_count or 0))
137
137
 
138
138
 
139
139
  class NetworkAnalyzer:
@@ -179,7 +179,7 @@ class NetworkAnalyzer:
179
179
  clear_initial: bool = True,
180
180
  same_origin: bool = True,
181
181
  min_size: int = 100,
182
- max_size: int = 500_000,
182
+ max_size: int = 5_000_000,
183
183
  countdown_message: str = "Click pagination!",
184
184
  ) -> NetworkSnapshot:
185
185
  """Capture network requests while user interacts with page.
@@ -230,6 +230,7 @@ class NetworkAnalyzer:
230
230
  b.visual.countdown(wait_seconds, countdown_message)
231
231
 
232
232
  # Get cookies
233
+ b.visual.toast("Getting cookies...")
233
234
  try:
234
235
  cookies = b.get_cookies()
235
236
  snapshot.cookies = {c.name: c.value for c in cookies}
@@ -237,41 +238,54 @@ class NetworkAnalyzer:
237
238
  pass
238
239
 
239
240
  # Get stats
241
+ b.visual.toast("Getting network stats...")
240
242
  stats = b.network.stats()
241
243
  snapshot.total_requests = stats.total_captured
242
244
  snapshot.total_bytes = stats.total_bytes
243
245
 
244
- print(f"\nCaptured {stats.total_captured} requests ({stats.total_bytes} bytes)")
246
+ b.visual.toast(f"Captured {stats.total_captured} requests")
245
247
 
246
248
  # Get XHR/Fetch calls
249
+ b.visual.toast("Filtering XHR/Fetch...")
250
+ # print("Calling network.filter...", flush=True)
247
251
  api_calls = b.network.filter(
248
252
  url_pattern=url_pattern,
249
253
  resource_types=["xhr", "fetch"],
250
254
  )
255
+ # print(f"Filter returned {len(api_calls)} calls", flush=True)
251
256
 
252
257
  # Filter by domain
258
+ # print("Filtering by domain...", flush=True)
253
259
  if same_origin:
254
260
  api_calls = [
255
261
  call for call in api_calls
256
262
  if base_domain in urlparse(call.request.url).netloc
257
263
  ]
264
+ # print(f"After domain filter: {len(api_calls)}", flush=True)
265
+
266
+ # # Show sizes before filtering
267
+ # for call in api_calls:
268
+ # size = call.response.size if call.response else 0
269
+ # print(f" {call.request.url[:60]}... size={size}", flush=True)
258
270
 
259
271
  # Filter by response size (ignore tracking pixels and heavy assets)
272
+ # print(f"Filtering by size ({min_size}-{max_size})...", flush=True)
260
273
  api_calls = [
261
274
  call for call in api_calls
262
275
  if call.response and min_size <= call.response.size <= max_size
263
276
  ]
277
+ # print(f"After size filter: {len(api_calls)}", flush=True)
264
278
 
265
- print(f"Found {len(api_calls)} XHR/Fetch requests (domain: {base_domain}, {min_size}-{max_size} bytes)")
279
+ # print("Showing toast...", flush=True)
280
+ b.visual.toast(f"Found {len(api_calls)} API calls")
266
281
 
267
- # Analyze calls
282
+ # Analyze calls - all JSON responses are API requests
283
+ # print(f"Analyzing {len(api_calls)} calls...", flush=True)
268
284
  for call in api_calls:
269
285
  req = self._create_snapshot(call, snapshot.cookies)
270
286
  if req:
271
- if req.data_key or (req.item_count and req.item_count > 0):
287
+ if req.content_type and "json" in req.content_type:
272
288
  snapshot.api_requests.append(req)
273
- elif req.content_type and "json" in req.content_type:
274
- snapshot.json_requests.append(req)
275
289
  else:
276
290
  snapshot.other_requests.append({
277
291
  "url": call.request.url,
@@ -279,9 +293,14 @@ class NetworkAnalyzer:
279
293
  "status": call.response.status if call.response else None,
280
294
  })
281
295
 
296
+ # print("Analysis done", flush=True)
297
+
282
298
  finally:
299
+ # print("Disabling network capture...", flush=True)
283
300
  b.network.disable()
301
+ # print("Network disabled", flush=True)
284
302
 
303
+ # print("Returning snapshot", flush=True)
285
304
  return snapshot
286
305
 
287
306
  def _extract_base_domain(self, url: str) -> str:
@@ -97,4 +97,4 @@ class VisualCapability(BaseCapability):
97
97
  print(f"{i}", end=" ", flush=True)
98
98
  time.sleep(1)
99
99
 
100
- print("done")
100
+ print("done", flush=True)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes