asteroid-odyssey 0.1.22__tar.gz → 0.4.0__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 (149) hide show
  1. asteroid_odyssey-0.4.0/PKG-INFO +213 -0
  2. asteroid_odyssey-0.4.0/README.md +181 -0
  3. asteroid_odyssey-0.4.0/pyproject.toml +68 -0
  4. asteroid_odyssey-0.4.0/src/asteroid_odyssey/__init__.py +29 -0
  5. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/__init__.py +87 -0
  6. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api/__init__.py +7 -0
  7. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api/agent_profile_api.py +1696 -0
  8. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api/api_api.py +516 -0
  9. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api/execution_api.py +1734 -0
  10. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api_client.py +801 -0
  11. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/api_response.py +21 -0
  12. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/configuration.py +606 -0
  13. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/exceptions.py +216 -0
  14. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/__init__.py +34 -0
  15. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/agent_profile.py +118 -0
  16. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/browser_session_recording_response.py +87 -0
  17. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/country_code.py +44 -0
  18. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/create_agent_profile_request.py +112 -0
  19. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/credential.py +95 -0
  20. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/delete_agent_profile200_response.py +87 -0
  21. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/error_response.py +87 -0
  22. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/execution_response.py +87 -0
  23. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/execution_result.py +101 -0
  24. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/execution_result_response.py +100 -0
  25. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/execution_status_response.py +95 -0
  26. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/health_check200_response.py +87 -0
  27. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/health_check500_response.py +87 -0
  28. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/proxy_type.py +37 -0
  29. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/status.py +43 -0
  30. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/structured_agent_execution_request.py +89 -0
  31. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/update_agent_profile_request.py +112 -0
  32. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/models/upload_execution_files200_response.py +89 -0
  33. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/rest.py +258 -0
  34. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/__init__.py +99 -0
  35. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/api/__init__.py +5 -0
  36. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/api/execution_api.py +625 -0
  37. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/api_client.py +801 -0
  38. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/api_response.py +21 -0
  39. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/configuration.py +612 -0
  40. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/exceptions.py +216 -0
  41. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/__init__.py +42 -0
  42. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_action_completed.py +100 -0
  43. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_action_failed.py +100 -0
  44. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_action_started.py +100 -0
  45. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_generic.py +100 -0
  46. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_status_changed.py +100 -0
  47. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_step_completed.py +100 -0
  48. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_step_started.py +100 -0
  49. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_terminal.py +100 -0
  50. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_transitioned_node.py +100 -0
  51. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/activity_payload_union_user_message_received.py +100 -0
  52. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/error.py +89 -0
  53. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity.py +98 -0
  54. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_action_completed_payload.py +87 -0
  55. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_action_failed_payload.py +87 -0
  56. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_action_started_payload.py +87 -0
  57. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_generic_payload.py +87 -0
  58. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_payload_union.py +252 -0
  59. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_status_changed_payload.py +88 -0
  60. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_step_completed_payload.py +87 -0
  61. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_step_started_payload.py +87 -0
  62. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_transitioned_node_payload.py +89 -0
  63. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_activity_user_message_received_payload.py +89 -0
  64. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_status.py +43 -0
  65. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_terminal_payload.py +96 -0
  66. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/execution_user_messages_add_text_body.py +87 -0
  67. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/models/versions.py +37 -0
  68. asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/rest.py +258 -0
  69. asteroid_odyssey-0.4.0/src/asteroid_odyssey/client.py +971 -0
  70. asteroid_odyssey-0.4.0/src/asteroid_odyssey.egg-info/PKG-INFO +213 -0
  71. asteroid_odyssey-0.4.0/src/asteroid_odyssey.egg-info/SOURCES.txt +75 -0
  72. asteroid_odyssey-0.4.0/src/asteroid_odyssey.egg-info/requires.txt +14 -0
  73. asteroid_odyssey-0.1.22/PKG-INFO +0 -31
  74. asteroid_odyssey-0.1.22/README.md +0 -17
  75. asteroid_odyssey-0.1.22/pyproject.toml +0 -33
  76. asteroid_odyssey-0.1.22/src/asteroid_odyssey/__init__.py +0 -35
  77. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/__init__.py +0 -8
  78. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/__init__.py +0 -1
  79. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/agent/get_agents.py +0 -127
  80. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/api/get_open_api.py +0 -79
  81. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/api/health_check.py +0 -131
  82. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/credentials/__init__.py +0 -0
  83. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/credentials/get_credentials_public_key.py +0 -127
  84. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/__init__.py +0 -0
  85. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/delete_execution.py +0 -156
  86. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/get_browser_session.py +0 -154
  87. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/get_execution.py +0 -154
  88. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/get_execution_files.py +0 -159
  89. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/get_execution_progress.py +0 -159
  90. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/get_executions_for_workflow.py +0 -156
  91. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/execution/update_execution_status.py +0 -115
  92. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/notifications/__init__.py +0 -0
  93. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/notifications/set_slack_channel.py +0 -107
  94. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/optimiser/__init__.py +0 -0
  95. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/optimiser/queue_optimisation_job.py +0 -103
  96. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/__init__.py +0 -0
  97. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/add_workflow_credential.py +0 -111
  98. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/create_workflow.py +0 -174
  99. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/delete_workflow.py +0 -156
  100. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/delete_workflow_credentials.py +0 -96
  101. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/execute_workflow.py +0 -179
  102. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/get_agent_workflow_executions.py +0 -155
  103. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/get_workflow.py +0 -154
  104. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/get_workflow_credentials.py +0 -154
  105. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/workflow/get_workflow_versions.py +0 -159
  106. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/client.py +0 -268
  107. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/errors.py +0 -16
  108. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/__init__.py +0 -61
  109. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/agent.py +0 -90
  110. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/browser_session.py +0 -136
  111. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/create_workflow_request.py +0 -126
  112. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/create_workflow_request_fields.py +0 -48
  113. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/create_workflow_request_provider.py +0 -9
  114. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/credential.py +0 -66
  115. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/credentials_request.py +0 -72
  116. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/credentials_response.py +0 -80
  117. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/delete_execution_response_200.py +0 -58
  118. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/delete_execution_response_404.py +0 -58
  119. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/delete_workflow_response_200.py +0 -58
  120. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/delete_workflow_response_404.py +0 -58
  121. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/execution.py +0 -147
  122. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/execution_dynamic_data.py +0 -48
  123. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/execution_result.py +0 -43
  124. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/execution_status.py +0 -89
  125. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/file.py +0 -127
  126. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/health_check_response_200.py +0 -58
  127. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/health_check_response_500.py +0 -58
  128. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/optimisation_request.py +0 -59
  129. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/progress_update.py +0 -77
  130. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/result_schema.py +0 -51
  131. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/slack_channel_request.py +0 -58
  132. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/status.py +0 -13
  133. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/workflow.py +0 -152
  134. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/workflow_execution.py +0 -82
  135. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/workflow_execution_request.py +0 -48
  136. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/models/workflow_fields.py +0 -48
  137. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/py.typed +0 -1
  138. asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/types.py +0 -45
  139. asteroid_odyssey-0.1.22/src/asteroid_odyssey/client.py +0 -394
  140. asteroid_odyssey-0.1.22/src/asteroid_odyssey/exceptions.py +0 -15
  141. asteroid_odyssey-0.1.22/src/asteroid_odyssey.egg-info/PKG-INFO +0 -31
  142. asteroid_odyssey-0.1.22/src/asteroid_odyssey.egg-info/SOURCES.txt +0 -75
  143. asteroid_odyssey-0.1.22/src/asteroid_odyssey.egg-info/entry_points.txt +0 -2
  144. asteroid_odyssey-0.1.22/src/asteroid_odyssey.egg-info/requires.txt +0 -3
  145. {asteroid_odyssey-0.1.22 → asteroid_odyssey-0.4.0}/setup.cfg +0 -0
  146. /asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/agent/__init__.py → /asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v1_gen/py.typed +0 -0
  147. /asteroid_odyssey-0.1.22/src/asteroid_odyssey/api/generated/asteroid_agents_api_client/api/api/__init__.py → /asteroid_odyssey-0.4.0/src/asteroid_odyssey/agents_v2_gen/py.typed +0 -0
  148. {asteroid_odyssey-0.1.22 → asteroid_odyssey-0.4.0}/src/asteroid_odyssey.egg-info/dependency_links.txt +0 -0
  149. {asteroid_odyssey-0.1.22 → asteroid_odyssey-0.4.0}/src/asteroid_odyssey.egg-info/top_level.txt +0 -0
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.4
2
+ Name: asteroid-odyssey
3
+ Version: 0.4.0
4
+ Summary: A Python SDK for browser automation using Asteroid platform.
5
+ Author-email: David Mlcoch <founders@asteroid.com>
6
+ License-Expression: MIT
7
+ Project-URL: Repository, https://github.com/asteroid/asteroid-odyssey-py
8
+ Project-URL: Homepage, https://asteroid.ai
9
+ Project-URL: Documentation, https://docs.asteroid.ai
10
+ Keywords: OpenAPI,OpenAPI-Generator,Asteroid Agents API,browser automation,AI agents
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
+ Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
17
+ Requires-Python: >=3.9
18
+ Description-Content-Type: text/markdown
19
+ Requires-Dist: urllib3<3.0.0,>=2.1.0
20
+ Requires-Dist: python-dateutil>=2.8.2
21
+ Requires-Dist: pydantic>=2
22
+ Requires-Dist: typing-extensions>=4.7.1
23
+ Requires-Dist: requests>=2.28.0
24
+ Requires-Dist: cryptography>=41.0.0
25
+ Provides-Extra: dev
26
+ Requires-Dist: pytest>=7.2.1; extra == "dev"
27
+ Requires-Dist: pytest-cov>=2.8.1; extra == "dev"
28
+ Requires-Dist: tox>=3.9.0; extra == "dev"
29
+ Requires-Dist: flake8>=4.0.0; extra == "dev"
30
+ Requires-Dist: types-python-dateutil>=2.8.19.14; extra == "dev"
31
+ Requires-Dist: mypy>=1.5; extra == "dev"
32
+
33
+ # Asteroid Odyssey
34
+
35
+ The official Python SDK for interacting with the Asteroid Agents API.
36
+
37
+ ## Installation
38
+
39
+ ```bash
40
+ pip install asteroid-odyssey
41
+ ```
42
+
43
+ ## Usage
44
+
45
+ Please head to our documentation at https://docs.asteroid.ai/sdk/python
46
+
47
+ ## License
48
+
49
+ The Asteroid Odyssey SDK is available under the MIT License.
50
+
51
+ ### Tests
52
+
53
+ Execute `pytest` to run the tests.
54
+
55
+ ## Getting Started
56
+
57
+ The SDK provides a high-level `AsteroidClient` class that makes it easy to interact with the Asteroid Agents API:
58
+
59
+ ```python
60
+ from asteroid_odyssey import AsteroidClient
61
+
62
+ # Create a client with your API key
63
+ client = AsteroidClient('your-api-key')
64
+
65
+ # Execute an agent
66
+ execution_id = client.execute_agent('my-agent-id', {'input': 'some dynamic value'})
67
+
68
+ # Wait for the execution to complete and get the result
69
+ result = client.wait_for_execution_result(execution_id)
70
+ print(result)
71
+
72
+ # Or check status manually
73
+ status = client.get_execution_status(execution_id)
74
+ print(f"Status: {status.status}")
75
+
76
+ # Upload files to an execution
77
+ hello_content = "Hello World!".encode()
78
+ response = client.upload_execution_files(execution_id, [hello_content])
79
+ print(f"Uploaded files: {response.file_ids}")
80
+
81
+ # Get browser session recording (for completed executions)
82
+ recording_url = client.get_browser_session_recording(execution_id)
83
+ print(f"Recording available at: {recording_url}")
84
+ ```
85
+
86
+ ### Context Manager Usage
87
+
88
+ The client can also be used as a context manager:
89
+
90
+ ```python
91
+ from asteroid_odyssey import AsteroidClient
92
+
93
+ with AsteroidClient('your-api-key') as client:
94
+ execution_id = client.execute_agent('my-agent-id', {'input': 'test'})
95
+ result = client.wait_for_execution_result(execution_id)
96
+ print(result)
97
+ ```
98
+
99
+ ### Convenience Functions
100
+
101
+ The SDK also provides convenience functions:
102
+
103
+ ```python
104
+ from asteroid_odyssey import create_client, execute_agent, wait_for_execution_result
105
+
106
+ client = create_client('your-api-key')
107
+ execution_id = execute_agent(client, 'my-agent-id', {'input': 'test'})
108
+ result = wait_for_execution_result(client, execution_id)
109
+ ```
110
+
111
+ ## API Reference
112
+
113
+ ### AsteroidClient
114
+
115
+ The main client class provides the following methods:
116
+
117
+ - `execute_agent(agent_id, agent_profile_id (optional), execution_data(optional))` - Execute an agent and return execution ID
118
+ - `get_execution_status(execution_id)` - Get current execution status
119
+ - `get_execution_result(execution_id)` - Get final execution result
120
+ - `wait_for_execution_result(execution_id, interval=1.0, timeout=3600.0)` - Wait for completion
121
+ - `upload_execution_files(execution_id, files, default_filename="file.txt")` - Upload files
122
+ - `get_browser_session_recording(execution_id)` - Get browser recording URL
123
+
124
+ ### Low-Level API Access
125
+
126
+ If you need direct access to the generated OpenAPI client, you can still use it:
127
+
128
+ ```python
129
+ import openapi_client
130
+ from openapi_client.rest import ApiException
131
+ from pprint import pprint
132
+
133
+ # Defining the host is optional and defaults to https://odyssey.asteroid.ai/api/v1
134
+ configuration = openapi_client.Configuration(
135
+ host = "https://odyssey.asteroid.ai/api/v1"
136
+ )
137
+
138
+ # Enter a context with an instance of the API client
139
+ with openapi_client.ApiClient(configuration) as api_client:
140
+ # Create an instance of the API class
141
+ api_instance = openapi_client.APIApi(api_client)
142
+
143
+ try:
144
+ # Get the OpenAPI schema
145
+ api_instance.get_open_api()
146
+ except ApiException as e:
147
+ print("Exception when calling APIApi->get_open_api: %s\n" % e)
148
+ ```
149
+
150
+ | Class | Method | Return Type Representation | Description |
151
+ | ---------------- | ------------------------------- | -------------------------- | -------------------------------------------------------- |
152
+ | `AsteroidClient` | `execute_agent` | `str` (execution ID) | Executes an agent and returns its execution ID. |
153
+ | `AsteroidClient` | `get_execution_status` | `dict-like object` | Gets the current status of an execution. |
154
+ | `AsteroidClient` | `get_execution_result` | `dict` (execution result) | Retrieves the result data of a completed execution. |
155
+ | `AsteroidClient` | `get_browser_session_recording` | `str` (URL) | Returns the session recording URL of an execution. |
156
+ | `AsteroidClient` | `upload_execution_files` | `dict-like object` | Uploads files to an execution and returns file metadata. |
157
+
158
+
159
+
160
+
161
+ <a id="documentation-for-authorization"></a>
162
+ ## Documentation For Authorization
163
+
164
+ To generate an API key, go to our [platform](https://platform.asteroid.ai) and in your profile section, click on API Keys. You can now create and manage your API keys.
165
+
166
+ Authentication schemes defined for the API:
167
+ <a id="ApiKeyAuth"></a>
168
+ ### ApiKeyAuth
169
+
170
+ - **Type**: API key
171
+ - **API key parameter name**: X-Asteroid-Agents-Api-Key
172
+ - **Location**: HTTP header
173
+
174
+
175
+ ## Development quick‑start
176
+ ```bash
177
+ # clone
178
+ git clone https://github.com/<org>/asteroid-odyssey-py.git
179
+ cd asteroid-odyssey-py
180
+
181
+ # create / activate a virtualenv (example using venv)
182
+ python -m venv .venv
183
+ source .venv/bin/activate
184
+
185
+ # install project in *editable* mode + dev tools
186
+ pip install -U pip
187
+ pip install -e .[dev] # or: pip install -e .
188
+
189
+ # run the generated SDK tests
190
+ pytest
191
+ ```
192
+
193
+ ## Regenerating the SDK
194
+
195
+ To update the SDK, regenerate the code by running
196
+
197
+ ```bash
198
+ ./regen-sdk.sh
199
+ ```
200
+
201
+ If the OpenAPI spec changes:
202
+ ```bash
203
+ ./regen-sdk.sh # regenerate client & docs
204
+ pip install -e . # refresh editable install (safe to rerun)
205
+ pytest # all tests should still pass
206
+ ```
207
+
208
+ After generation, ensure `pyproject.toml` is configured correctly and that files are modified correctly. Check for new files and if they are needed.
209
+
210
+
211
+
212
+
213
+
@@ -0,0 +1,181 @@
1
+ # Asteroid Odyssey
2
+
3
+ The official Python SDK for interacting with the Asteroid Agents API.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install asteroid-odyssey
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ Please head to our documentation at https://docs.asteroid.ai/sdk/python
14
+
15
+ ## License
16
+
17
+ The Asteroid Odyssey SDK is available under the MIT License.
18
+
19
+ ### Tests
20
+
21
+ Execute `pytest` to run the tests.
22
+
23
+ ## Getting Started
24
+
25
+ The SDK provides a high-level `AsteroidClient` class that makes it easy to interact with the Asteroid Agents API:
26
+
27
+ ```python
28
+ from asteroid_odyssey import AsteroidClient
29
+
30
+ # Create a client with your API key
31
+ client = AsteroidClient('your-api-key')
32
+
33
+ # Execute an agent
34
+ execution_id = client.execute_agent('my-agent-id', {'input': 'some dynamic value'})
35
+
36
+ # Wait for the execution to complete and get the result
37
+ result = client.wait_for_execution_result(execution_id)
38
+ print(result)
39
+
40
+ # Or check status manually
41
+ status = client.get_execution_status(execution_id)
42
+ print(f"Status: {status.status}")
43
+
44
+ # Upload files to an execution
45
+ hello_content = "Hello World!".encode()
46
+ response = client.upload_execution_files(execution_id, [hello_content])
47
+ print(f"Uploaded files: {response.file_ids}")
48
+
49
+ # Get browser session recording (for completed executions)
50
+ recording_url = client.get_browser_session_recording(execution_id)
51
+ print(f"Recording available at: {recording_url}")
52
+ ```
53
+
54
+ ### Context Manager Usage
55
+
56
+ The client can also be used as a context manager:
57
+
58
+ ```python
59
+ from asteroid_odyssey import AsteroidClient
60
+
61
+ with AsteroidClient('your-api-key') as client:
62
+ execution_id = client.execute_agent('my-agent-id', {'input': 'test'})
63
+ result = client.wait_for_execution_result(execution_id)
64
+ print(result)
65
+ ```
66
+
67
+ ### Convenience Functions
68
+
69
+ The SDK also provides convenience functions:
70
+
71
+ ```python
72
+ from asteroid_odyssey import create_client, execute_agent, wait_for_execution_result
73
+
74
+ client = create_client('your-api-key')
75
+ execution_id = execute_agent(client, 'my-agent-id', {'input': 'test'})
76
+ result = wait_for_execution_result(client, execution_id)
77
+ ```
78
+
79
+ ## API Reference
80
+
81
+ ### AsteroidClient
82
+
83
+ The main client class provides the following methods:
84
+
85
+ - `execute_agent(agent_id, agent_profile_id (optional), execution_data(optional))` - Execute an agent and return execution ID
86
+ - `get_execution_status(execution_id)` - Get current execution status
87
+ - `get_execution_result(execution_id)` - Get final execution result
88
+ - `wait_for_execution_result(execution_id, interval=1.0, timeout=3600.0)` - Wait for completion
89
+ - `upload_execution_files(execution_id, files, default_filename="file.txt")` - Upload files
90
+ - `get_browser_session_recording(execution_id)` - Get browser recording URL
91
+
92
+ ### Low-Level API Access
93
+
94
+ If you need direct access to the generated OpenAPI client, you can still use it:
95
+
96
+ ```python
97
+ import openapi_client
98
+ from openapi_client.rest import ApiException
99
+ from pprint import pprint
100
+
101
+ # Defining the host is optional and defaults to https://odyssey.asteroid.ai/api/v1
102
+ configuration = openapi_client.Configuration(
103
+ host = "https://odyssey.asteroid.ai/api/v1"
104
+ )
105
+
106
+ # Enter a context with an instance of the API client
107
+ with openapi_client.ApiClient(configuration) as api_client:
108
+ # Create an instance of the API class
109
+ api_instance = openapi_client.APIApi(api_client)
110
+
111
+ try:
112
+ # Get the OpenAPI schema
113
+ api_instance.get_open_api()
114
+ except ApiException as e:
115
+ print("Exception when calling APIApi->get_open_api: %s\n" % e)
116
+ ```
117
+
118
+ | Class | Method | Return Type Representation | Description |
119
+ | ---------------- | ------------------------------- | -------------------------- | -------------------------------------------------------- |
120
+ | `AsteroidClient` | `execute_agent` | `str` (execution ID) | Executes an agent and returns its execution ID. |
121
+ | `AsteroidClient` | `get_execution_status` | `dict-like object` | Gets the current status of an execution. |
122
+ | `AsteroidClient` | `get_execution_result` | `dict` (execution result) | Retrieves the result data of a completed execution. |
123
+ | `AsteroidClient` | `get_browser_session_recording` | `str` (URL) | Returns the session recording URL of an execution. |
124
+ | `AsteroidClient` | `upload_execution_files` | `dict-like object` | Uploads files to an execution and returns file metadata. |
125
+
126
+
127
+
128
+
129
+ <a id="documentation-for-authorization"></a>
130
+ ## Documentation For Authorization
131
+
132
+ To generate an API key, go to our [platform](https://platform.asteroid.ai) and in your profile section, click on API Keys. You can now create and manage your API keys.
133
+
134
+ Authentication schemes defined for the API:
135
+ <a id="ApiKeyAuth"></a>
136
+ ### ApiKeyAuth
137
+
138
+ - **Type**: API key
139
+ - **API key parameter name**: X-Asteroid-Agents-Api-Key
140
+ - **Location**: HTTP header
141
+
142
+
143
+ ## Development quick‑start
144
+ ```bash
145
+ # clone
146
+ git clone https://github.com/<org>/asteroid-odyssey-py.git
147
+ cd asteroid-odyssey-py
148
+
149
+ # create / activate a virtualenv (example using venv)
150
+ python -m venv .venv
151
+ source .venv/bin/activate
152
+
153
+ # install project in *editable* mode + dev tools
154
+ pip install -U pip
155
+ pip install -e .[dev] # or: pip install -e .
156
+
157
+ # run the generated SDK tests
158
+ pytest
159
+ ```
160
+
161
+ ## Regenerating the SDK
162
+
163
+ To update the SDK, regenerate the code by running
164
+
165
+ ```bash
166
+ ./regen-sdk.sh
167
+ ```
168
+
169
+ If the OpenAPI spec changes:
170
+ ```bash
171
+ ./regen-sdk.sh # regenerate client & docs
172
+ pip install -e . # refresh editable install (safe to rerun)
173
+ pytest # all tests should still pass
174
+ ```
175
+
176
+ After generation, ensure `pyproject.toml` is configured correctly and that files are modified correctly. Check for new files and if they are needed.
177
+
178
+
179
+
180
+
181
+
@@ -0,0 +1,68 @@
1
+ [project]
2
+ name = "asteroid-odyssey"
3
+ version = "0.4.0"
4
+ authors = [
5
+ { name = "David Mlcoch", email = "founders@asteroid.com" },
6
+ ]
7
+ description = "A Python SDK for browser automation using Asteroid platform."
8
+ readme = "README.md"
9
+ requires-python = ">=3.9"
10
+ keywords = ["OpenAPI", "OpenAPI-Generator", "Asteroid Agents API", "browser automation", "AI agents"]
11
+ license = "MIT"
12
+
13
+ dependencies = [
14
+ "urllib3>=2.1.0,<3.0.0",
15
+ "python-dateutil>=2.8.2",
16
+ "pydantic>=2",
17
+ "typing-extensions>=4.7.1",
18
+ "requests>=2.28.0",
19
+ "cryptography>=41.0.0"
20
+ ]
21
+ classifiers = [
22
+ "Programming Language :: Python :: 3",
23
+ "Operating System :: OS Independent",
24
+ "Development Status :: 4 - Beta",
25
+ "Intended Audience :: Developers",
26
+ "Topic :: Software Development :: Libraries :: Python Modules",
27
+ "Topic :: Internet :: WWW/HTTP :: Browsers",
28
+ ]
29
+
30
+ [project.urls]
31
+ Repository = "https://github.com/asteroid/asteroid-odyssey-py"
32
+ Homepage = "https://asteroid.ai"
33
+ Documentation = "https://docs.asteroid.ai"
34
+
35
+ [project.optional-dependencies]
36
+ dev = [
37
+ "pytest>=7.2.1",
38
+ "pytest-cov>=2.8.1",
39
+ "tox>=3.9.0",
40
+ "flake8>=4.0.0",
41
+ "types-python-dateutil>=2.8.19.14",
42
+ "mypy>=1.5",
43
+ ]
44
+
45
+ [build-system]
46
+ requires = ["setuptools>=65", "wheel"]
47
+ build-backend = "setuptools.build_meta"
48
+
49
+ [tool.setuptools.packages.find]
50
+ where = ["src"]
51
+ include = ["asteroid_odyssey", "asteroid_odyssey.*"]
52
+ exclude = ["tests", "tests.*"]
53
+
54
+ [tool.pylint.'MESSAGES CONTROL']
55
+ extension-pkg-whitelist = "pydantic"
56
+
57
+ [tool.mypy]
58
+ files = ["src/asteroid_odyssey", "tests"]
59
+ strict = false
60
+ warn_unused_configs = true
61
+ warn_redundant_casts = true
62
+ warn_unused_ignores = true
63
+ strict_equality = true
64
+ extra_checks = true
65
+ check_untyped_defs = true
66
+ disallow_subclassing_any = true
67
+ disallow_untyped_decorators = true
68
+ disallow_any_generics = true
@@ -0,0 +1,29 @@
1
+ from .client import (
2
+ AsteroidClient,
3
+ create_client,
4
+ execute_agent,
5
+ get_execution_status,
6
+ get_execution_result,
7
+ wait_for_execution_result,
8
+ upload_execution_files,
9
+ get_browser_session_recording,
10
+ AsteroidAPIError,
11
+ ExecutionError,
12
+ TimeoutError
13
+ )
14
+ from .agents_v1_gen import ExecutionResult
15
+
16
+ __all__ = [
17
+ 'AsteroidClient',
18
+ 'create_client',
19
+ 'execute_agent',
20
+ 'get_execution_status',
21
+ 'get_execution_result',
22
+ 'wait_for_execution_result',
23
+ 'upload_execution_files',
24
+ 'get_browser_session_recording',
25
+ 'AsteroidAPIError',
26
+ 'ExecutionError',
27
+ 'TimeoutError',
28
+ 'ExecutionResult'
29
+ ]
@@ -0,0 +1,87 @@
1
+ # coding: utf-8
2
+
3
+ # flake8: noqa
4
+
5
+ """
6
+ Asteroid Agents API
7
+
8
+ Version 1 of the Asteroid Agents API
9
+
10
+ The version of the OpenAPI document: v1.0.0
11
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
12
+
13
+ Do not edit the class manually.
14
+ """ # noqa: E501
15
+
16
+
17
+ __version__ = "1.0.0"
18
+
19
+ # Define package exports
20
+ __all__ = [
21
+ "APIApi",
22
+ "AgentProfileApi",
23
+ "ExecutionApi",
24
+ "ApiResponse",
25
+ "ApiClient",
26
+ "Configuration",
27
+ "OpenApiException",
28
+ "ApiTypeError",
29
+ "ApiValueError",
30
+ "ApiKeyError",
31
+ "ApiAttributeError",
32
+ "ApiException",
33
+ "AgentProfile",
34
+ "BrowserSessionRecordingResponse",
35
+ "CountryCode",
36
+ "CreateAgentProfileRequest",
37
+ "Credential",
38
+ "DeleteAgentProfile200Response",
39
+ "ErrorResponse",
40
+ "ExecutionResponse",
41
+ "ExecutionResult",
42
+ "ExecutionResultResponse",
43
+ "ExecutionStatusResponse",
44
+ "HealthCheck200Response",
45
+ "HealthCheck500Response",
46
+ "ProxyType",
47
+ "Status",
48
+ "StructuredAgentExecutionRequest",
49
+ "UpdateAgentProfileRequest",
50
+ "UploadExecutionFiles200Response",
51
+ ]
52
+
53
+ # import apis into sdk package
54
+ from asteroid_odyssey.agents_v1_gen.api.api_api import APIApi as APIApi
55
+ from asteroid_odyssey.agents_v1_gen.api.agent_profile_api import AgentProfileApi as AgentProfileApi
56
+ from asteroid_odyssey.agents_v1_gen.api.execution_api import ExecutionApi as ExecutionApi
57
+
58
+ # import ApiClient
59
+ from asteroid_odyssey.agents_v1_gen.api_response import ApiResponse as ApiResponse
60
+ from asteroid_odyssey.agents_v1_gen.api_client import ApiClient as ApiClient
61
+ from asteroid_odyssey.agents_v1_gen.configuration import Configuration as Configuration
62
+ from asteroid_odyssey.agents_v1_gen.exceptions import OpenApiException as OpenApiException
63
+ from asteroid_odyssey.agents_v1_gen.exceptions import ApiTypeError as ApiTypeError
64
+ from asteroid_odyssey.agents_v1_gen.exceptions import ApiValueError as ApiValueError
65
+ from asteroid_odyssey.agents_v1_gen.exceptions import ApiKeyError as ApiKeyError
66
+ from asteroid_odyssey.agents_v1_gen.exceptions import ApiAttributeError as ApiAttributeError
67
+ from asteroid_odyssey.agents_v1_gen.exceptions import ApiException as ApiException
68
+
69
+ # import models into sdk package
70
+ from asteroid_odyssey.agents_v1_gen.models.agent_profile import AgentProfile as AgentProfile
71
+ from asteroid_odyssey.agents_v1_gen.models.browser_session_recording_response import BrowserSessionRecordingResponse as BrowserSessionRecordingResponse
72
+ from asteroid_odyssey.agents_v1_gen.models.country_code import CountryCode as CountryCode
73
+ from asteroid_odyssey.agents_v1_gen.models.create_agent_profile_request import CreateAgentProfileRequest as CreateAgentProfileRequest
74
+ from asteroid_odyssey.agents_v1_gen.models.credential import Credential as Credential
75
+ from asteroid_odyssey.agents_v1_gen.models.delete_agent_profile200_response import DeleteAgentProfile200Response as DeleteAgentProfile200Response
76
+ from asteroid_odyssey.agents_v1_gen.models.error_response import ErrorResponse as ErrorResponse
77
+ from asteroid_odyssey.agents_v1_gen.models.execution_response import ExecutionResponse as ExecutionResponse
78
+ from asteroid_odyssey.agents_v1_gen.models.execution_result import ExecutionResult as ExecutionResult
79
+ from asteroid_odyssey.agents_v1_gen.models.execution_result_response import ExecutionResultResponse as ExecutionResultResponse
80
+ from asteroid_odyssey.agents_v1_gen.models.execution_status_response import ExecutionStatusResponse as ExecutionStatusResponse
81
+ from asteroid_odyssey.agents_v1_gen.models.health_check200_response import HealthCheck200Response as HealthCheck200Response
82
+ from asteroid_odyssey.agents_v1_gen.models.health_check500_response import HealthCheck500Response as HealthCheck500Response
83
+ from asteroid_odyssey.agents_v1_gen.models.proxy_type import ProxyType as ProxyType
84
+ from asteroid_odyssey.agents_v1_gen.models.status import Status as Status
85
+ from asteroid_odyssey.agents_v1_gen.models.structured_agent_execution_request import StructuredAgentExecutionRequest as StructuredAgentExecutionRequest
86
+ from asteroid_odyssey.agents_v1_gen.models.update_agent_profile_request import UpdateAgentProfileRequest as UpdateAgentProfileRequest
87
+ from asteroid_odyssey.agents_v1_gen.models.upload_execution_files200_response import UploadExecutionFiles200Response as UploadExecutionFiles200Response
@@ -0,0 +1,7 @@
1
+ # flake8: noqa
2
+
3
+ # import apis into api package
4
+ from asteroid_odyssey.agents_v1_gen.api.api_api import APIApi
5
+ from asteroid_odyssey.agents_v1_gen.api.agent_profile_api import AgentProfileApi
6
+ from asteroid_odyssey.agents_v1_gen.api.execution_api import ExecutionApi
7
+