dojozero 0.1.0__tar.gz → 0.2.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 (181) hide show
  1. dojozero-0.2.0/.gitignore +175 -0
  2. dojozero-0.2.0/PKG-INFO +135 -0
  3. dojozero-0.2.0/README.md +91 -0
  4. dojozero-0.2.0/pyproject.toml +63 -0
  5. dojozero-0.2.0/src/dojozero/__init__.py +13 -0
  6. dojozero-0.2.0/src/dojozero/_optional_alicloud.py +44 -0
  7. dojozero-0.2.0/src/dojozero/agents/__init__.py +64 -0
  8. dojozero-0.2.0/src/dojozero/agents/_config.py +349 -0
  9. dojozero-0.2.0/src/dojozero/agents/_social_board.py +540 -0
  10. dojozero-0.2.0/src/dojozero/agents/_toolkit.py +33 -0
  11. dojozero-0.2.0/src/dojozero/agents/_trial_utils.py +283 -0
  12. dojozero-0.2.0/src/dojozero/arena_server/__init__.py +35 -0
  13. dojozero-0.2.0/src/dojozero/arena_server/_cache.py +614 -0
  14. dojozero-0.2.0/src/dojozero/arena_server/_config.py +126 -0
  15. dojozero-0.2.0/src/dojozero/arena_server/_constants.py +295 -0
  16. dojozero-0.2.0/src/dojozero/arena_server/_endpoints.py +1135 -0
  17. dojozero-0.2.0/src/dojozero/arena_server/_models.py +282 -0
  18. dojozero-0.2.0/src/dojozero/arena_server/_redis_reader.py +231 -0
  19. dojozero-0.2.0/src/dojozero/arena_server/_server.py +1796 -0
  20. dojozero-0.2.0/src/dojozero/arena_server/_utils.py +1125 -0
  21. dojozero-0.2.0/src/dojozero/arena_server/get_snapshot.sh +33 -0
  22. dojozero-0.2.0/src/dojozero/betting/__init__.py +111 -0
  23. dojozero-0.2.0/src/dojozero/betting/_agent.py +1196 -0
  24. dojozero-0.2.0/src/dojozero/betting/_broker.py +2614 -0
  25. dojozero-0.2.0/src/dojozero/betting/_config.py +84 -0
  26. dojozero-0.2.0/src/dojozero/betting/_formatters.py +148 -0
  27. dojozero-0.2.0/src/dojozero/betting/_metadata.py +103 -0
  28. dojozero-0.2.0/src/dojozero/betting/_models.py +513 -0
  29. dojozero-0.2.0/src/dojozero/cli.py +2751 -0
  30. dojozero-0.2.0/src/dojozero/core/__init__.py +162 -0
  31. dojozero-0.2.0/src/dojozero/core/_actors.py +117 -0
  32. dojozero-0.2.0/src/dojozero/core/_base.py +121 -0
  33. dojozero-0.2.0/src/dojozero/core/_credentials.py +229 -0
  34. dojozero-0.2.0/src/dojozero/core/_filesystem_orchestrator_store.py +507 -0
  35. dojozero-0.2.0/src/dojozero/core/_metadata.py +71 -0
  36. dojozero-0.2.0/src/dojozero/core/_models.py +326 -0
  37. dojozero-0.2.0/src/dojozero/core/_registry.py +182 -0
  38. dojozero-0.2.0/src/dojozero/core/_runtime.py +96 -0
  39. dojozero-0.2.0/src/dojozero/core/_tracing.py +2353 -0
  40. dojozero-0.2.0/src/dojozero/core/_trial_orchestrator.py +1838 -0
  41. dojozero-0.2.0/src/dojozero/core/_types.py +114 -0
  42. dojozero-0.2.0/src/dojozero/dashboard_server/__init__.py +111 -0
  43. dojozero-0.2.0/src/dojozero/dashboard_server/_game_discovery.py +625 -0
  44. dojozero-0.2.0/src/dojozero/dashboard_server/_gateway_routing.py +352 -0
  45. dojozero-0.2.0/src/dojozero/dashboard_server/_jsonl_utils.py +70 -0
  46. dojozero-0.2.0/src/dojozero/dashboard_server/_scheduler.py +1413 -0
  47. dojozero-0.2.0/src/dojozero/dashboard_server/_server.py +1461 -0
  48. dojozero-0.2.0/src/dojozero/dashboard_server/_trial_manager.py +1321 -0
  49. dojozero-0.2.0/src/dojozero/dashboard_server/_types.py +238 -0
  50. dojozero-0.2.0/src/dojozero/data/__init__.py +231 -0
  51. dojozero-0.2.0/src/dojozero/data/_backtest.py +173 -0
  52. dojozero-0.2.0/src/dojozero/data/_config.py +70 -0
  53. dojozero-0.2.0/src/dojozero/data/_context.py +61 -0
  54. dojozero-0.2.0/src/dojozero/data/_factory.py +283 -0
  55. dojozero-0.2.0/src/dojozero/data/_game_info.py +225 -0
  56. dojozero-0.2.0/src/dojozero/data/_hub.py +850 -0
  57. dojozero-0.2.0/src/dojozero/data/_models.py +836 -0
  58. dojozero-0.2.0/src/dojozero/data/_processors.py +128 -0
  59. dojozero-0.2.0/src/dojozero/data/_stores.py +566 -0
  60. dojozero-0.2.0/src/dojozero/data/_streams.py +208 -0
  61. dojozero-0.2.0/src/dojozero/data/_subscriptions.py +585 -0
  62. dojozero-0.2.0/src/dojozero/data/_utils.py +483 -0
  63. dojozero-0.2.0/src/dojozero/data/espn/__init__.py +52 -0
  64. dojozero-0.2.0/src/dojozero/data/espn/_api.py +589 -0
  65. dojozero-0.2.0/src/dojozero/data/espn/_state_tracker.py +274 -0
  66. dojozero-0.2.0/src/dojozero/data/espn/_stats_events.py +73 -0
  67. dojozero-0.2.0/src/dojozero/data/espn/_stats_fetcher.py +900 -0
  68. dojozero-0.2.0/src/dojozero/data/espn/_utils.py +20 -0
  69. dojozero-0.2.0/src/dojozero/data/nba/__init__.py +40 -0
  70. dojozero-0.2.0/src/dojozero/data/nba/_api.py +456 -0
  71. dojozero-0.2.0/src/dojozero/data/nba/_events.py +117 -0
  72. dojozero-0.2.0/src/dojozero/data/nba/_factory.py +70 -0
  73. dojozero-0.2.0/src/dojozero/data/nba/_state_tracker.py +205 -0
  74. dojozero-0.2.0/src/dojozero/data/nba/_store.py +886 -0
  75. dojozero-0.2.0/src/dojozero/data/nba/_utils.py +1070 -0
  76. dojozero-0.2.0/src/dojozero/data/ncaa/__init__.py +35 -0
  77. dojozero-0.2.0/src/dojozero/data/ncaa/_api.py +34 -0
  78. dojozero-0.2.0/src/dojozero/data/ncaa/_events.py +117 -0
  79. dojozero-0.2.0/src/dojozero/data/ncaa/_factory.py +55 -0
  80. dojozero-0.2.0/src/dojozero/data/ncaa/_state_tracker.py +153 -0
  81. dojozero-0.2.0/src/dojozero/data/ncaa/_store.py +155 -0
  82. dojozero-0.2.0/src/dojozero/data/ncaa/_utils.py +229 -0
  83. dojozero-0.2.0/src/dojozero/data/nfl/__init__.py +86 -0
  84. dojozero-0.2.0/src/dojozero/data/nfl/_api.py +56 -0
  85. dojozero-0.2.0/src/dojozero/data/nfl/_events.py +269 -0
  86. dojozero-0.2.0/src/dojozero/data/nfl/_factory.py +73 -0
  87. dojozero-0.2.0/src/dojozero/data/nfl/_state_tracker.py +153 -0
  88. dojozero-0.2.0/src/dojozero/data/nfl/_store.py +1198 -0
  89. dojozero-0.2.0/src/dojozero/data/nfl/_utils.py +406 -0
  90. dojozero-0.2.0/src/dojozero/data/polymarket/__init__.py +13 -0
  91. dojozero-0.2.0/src/dojozero/data/polymarket/_api.py +657 -0
  92. dojozero-0.2.0/src/dojozero/data/polymarket/_events.py +10 -0
  93. dojozero-0.2.0/src/dojozero/data/polymarket/_factory.py +89 -0
  94. dojozero-0.2.0/src/dojozero/data/polymarket/_models.py +110 -0
  95. dojozero-0.2.0/src/dojozero/data/polymarket/_store.py +334 -0
  96. dojozero-0.2.0/src/dojozero/data/socialmedia/__init__.py +37 -0
  97. dojozero-0.2.0/src/dojozero/data/socialmedia/_api.py +272 -0
  98. dojozero-0.2.0/src/dojozero/data/socialmedia/_events.py +218 -0
  99. dojozero-0.2.0/src/dojozero/data/socialmedia/_factory.py +49 -0
  100. dojozero-0.2.0/src/dojozero/data/socialmedia/_formatters.py +27 -0
  101. dojozero-0.2.0/src/dojozero/data/socialmedia/_store.py +90 -0
  102. dojozero-0.2.0/src/dojozero/data/socialmedia/_watchlist.py +340 -0
  103. dojozero-0.2.0/src/dojozero/data/websearch/__init__.py +38 -0
  104. dojozero-0.2.0/src/dojozero/data/websearch/_api.py +240 -0
  105. dojozero-0.2.0/src/dojozero/data/websearch/_events.py +478 -0
  106. dojozero-0.2.0/src/dojozero/data/websearch/_factory.py +52 -0
  107. dojozero-0.2.0/src/dojozero/data/websearch/_formatters.py +69 -0
  108. dojozero-0.2.0/src/dojozero/data/websearch/_store.py +71 -0
  109. dojozero-0.2.0/src/dojozero/gateway/__init__.py +104 -0
  110. dojozero-0.2.0/src/dojozero/gateway/_adapter.py +767 -0
  111. dojozero-0.2.0/src/dojozero/gateway/_auth.py +949 -0
  112. dojozero-0.2.0/src/dojozero/gateway/_models.py +409 -0
  113. dojozero-0.2.0/src/dojozero/gateway/_rate_limit.py +361 -0
  114. dojozero-0.2.0/src/dojozero/gateway/_server.py +675 -0
  115. dojozero-0.2.0/src/dojozero/gateway/_sse.py +304 -0
  116. dojozero-0.2.0/src/dojozero/nba/__init__.py +16 -0
  117. dojozero-0.2.0/src/dojozero/nba/_agent.py +69 -0
  118. dojozero-0.2.0/src/dojozero/nba/_datastream.py +458 -0
  119. dojozero-0.2.0/src/dojozero/nba/_formatters.py +189 -0
  120. dojozero-0.2.0/src/dojozero/nba/_trial.py +549 -0
  121. dojozero-0.2.0/src/dojozero/ncaa/__init__.py +12 -0
  122. dojozero-0.2.0/src/dojozero/ncaa/_agent.py +58 -0
  123. dojozero-0.2.0/src/dojozero/ncaa/_datastream.py +21 -0
  124. dojozero-0.2.0/src/dojozero/ncaa/_formatters.py +167 -0
  125. dojozero-0.2.0/src/dojozero/ncaa/_trial.py +492 -0
  126. dojozero-0.2.0/src/dojozero/nfl/__init__.py +16 -0
  127. dojozero-0.2.0/src/dojozero/nfl/_agent.py +70 -0
  128. dojozero-0.2.0/src/dojozero/nfl/_datastream.py +448 -0
  129. dojozero-0.2.0/src/dojozero/nfl/_formatters.py +256 -0
  130. dojozero-0.2.0/src/dojozero/nfl/_trial.py +525 -0
  131. dojozero-0.2.0/src/dojozero/ray_runtime/__init__.py +5 -0
  132. dojozero-0.2.0/src/dojozero/ray_runtime/_impl.py +243 -0
  133. dojozero-0.2.0/src/dojozero/sync_service/__init__.py +15 -0
  134. dojozero-0.2.0/src/dojozero/sync_service/_redis_client.py +833 -0
  135. dojozero-0.2.0/src/dojozero/sync_service/_sync.py +481 -0
  136. dojozero-0.2.0/src/dojozero/sync_service/main.py +99 -0
  137. dojozero-0.2.0/src/dojozero/utils/__init__.py +38 -0
  138. dojozero-0.2.0/src/dojozero/utils/oss.py +245 -0
  139. dojozero-0.2.0/src/dojozero/utils/time.py +121 -0
  140. dojozero-0.2.0/tests/conftest.py +235 -0
  141. dojozero-0.2.0/tests/test_agent_configs.py +464 -0
  142. dojozero-0.2.0/tests/test_agent_event_throttle.py +228 -0
  143. dojozero-0.2.0/tests/test_arena_event_deserialization.py +236 -0
  144. dojozero-0.2.0/tests/test_arena_span_grouping.py +54 -0
  145. dojozero-0.2.0/tests/test_betting_formatters.py +407 -0
  146. dojozero-0.2.0/tests/test_broker.py +3209 -0
  147. dojozero-0.2.0/tests/test_cli_agents.py +308 -0
  148. dojozero-0.2.0/tests/test_dashboard.py +1115 -0
  149. dojozero-0.2.0/tests/test_data_hub.py +1171 -0
  150. dojozero-0.2.0/tests/test_data_nba.py +1747 -0
  151. dojozero-0.2.0/tests/test_data_nfl.py +868 -0
  152. dojozero-0.2.0/tests/test_data_polymarket.py +861 -0
  153. dojozero-0.2.0/tests/test_game_state_tracker.py +322 -0
  154. dojozero-0.2.0/tests/test_gateway.py +1918 -0
  155. dojozero-0.2.0/tests/test_metadata.py +82 -0
  156. dojozero-0.2.0/tests/test_nba_formatters.py +415 -0
  157. dojozero-0.2.0/tests/test_nba_moneyline_agent.py +306 -0
  158. dojozero-0.2.0/tests/test_nfl_formatters.py +458 -0
  159. dojozero-0.2.0/tests/test_nfl_moneyline_agent.py +135 -0
  160. dojozero-0.2.0/tests/test_oss.py +489 -0
  161. dojozero-0.2.0/tests/test_registry.py +80 -0
  162. dojozero-0.2.0/tests/test_scheduler.py +944 -0
  163. dojozero-0.2.0/tests/test_social_board.py +146 -0
  164. dojozero-0.2.0/tests/test_socialmedia_events.py +335 -0
  165. dojozero-0.2.0/tests/test_span_models.py +267 -0
  166. dojozero-0.2.0/tests/test_stats_insight_events.py +314 -0
  167. dojozero-0.2.0/tests/test_subscriptions.py +408 -0
  168. dojozero-0.2.0/tests/test_websearch_events.py +124 -0
  169. dojozero-0.2.0/tests/test_websearch_formatters.py +144 -0
  170. dojozero-0.1.0/LICENSE +0 -21
  171. dojozero-0.1.0/PKG-INFO +0 -77
  172. dojozero-0.1.0/README.md +0 -49
  173. dojozero-0.1.0/pyproject.toml +0 -51
  174. dojozero-0.1.0/setup.cfg +0 -4
  175. dojozero-0.1.0/src/dojozero/__init__.py +0 -3
  176. dojozero-0.1.0/src/dojozero.egg-info/PKG-INFO +0 -77
  177. dojozero-0.1.0/src/dojozero.egg-info/SOURCES.txt +0 -10
  178. dojozero-0.1.0/src/dojozero.egg-info/dependency_links.txt +0 -1
  179. dojozero-0.1.0/src/dojozero.egg-info/requires.txt +0 -7
  180. dojozero-0.1.0/src/dojozero.egg-info/top_level.txt +0 -1
  181. dojozero-0.1.0/tests/test_dojozero.py +0 -11
@@ -0,0 +1,175 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ *.manifest
31
+ *.spec
32
+
33
+ # Installer logs
34
+ pip-log.txt
35
+ pip-delete-this-directory.txt
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+ .coverage
42
+ .coverage.*
43
+ .cache
44
+ nosetests.xml
45
+ coverage.xml
46
+ *.cover
47
+ *.py,cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+ cover/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Django stuff:
57
+ *.log
58
+ local_settings.py
59
+ db.sqlite3
60
+ db.sqlite3-journal
61
+
62
+ # Flask stuff:
63
+ instance/
64
+ .webassets-cache
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ .pybuilder/
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # IPython
80
+ profile_default/
81
+ ipython_config.py
82
+
83
+ # pyenv
84
+ .python-version
85
+
86
+ # pipenv
87
+ Pipfile.lock
88
+
89
+ # poetry
90
+ poetry.lock
91
+
92
+ # pdm
93
+ .pdm.toml
94
+
95
+ # PEP 582
96
+ __pypackages__/
97
+
98
+ # Celery stuff
99
+ celerybeat-schedule
100
+ celerybeat.pid
101
+
102
+ # SageMath parsed files
103
+ *.sage.py
104
+
105
+ # Environments
106
+ .env
107
+ .env.prod
108
+ .env.dev
109
+ .env.test
110
+ .env.local
111
+ .env.*.local
112
+
113
+ # virtualenvs
114
+ .venv
115
+ env/
116
+ venv/
117
+ ENV/
118
+ env.bak/
119
+ venv.bak/
120
+
121
+ # Spyder project settings
122
+ .spyderproject
123
+ .spyproject
124
+
125
+ # Rope project settings
126
+ .ropeproject
127
+
128
+ # mkdocs documentation
129
+ /site
130
+
131
+ # mypy
132
+ .mypy_cache/
133
+ .dmypy.json
134
+ dmypy.json
135
+
136
+ # Pyre type checker
137
+ .pyre/
138
+
139
+ # pytype static type analyzer
140
+ .pytype/
141
+
142
+ # Cython debug symbols
143
+ cython_debug/
144
+
145
+ # UV
146
+ .uv/
147
+ uv.lock
148
+
149
+ # IDEs
150
+ .vscode/
151
+ .idea/
152
+ *.swp
153
+ *.swo
154
+ *~
155
+
156
+ # OS
157
+ .DS_Store
158
+ Thumbs.db
159
+
160
+ # Sample scenario artifacts
161
+ dojozero-store
162
+
163
+ # Data
164
+ /outputs/
165
+ /data/
166
+
167
+ # Claude configs
168
+ /.claude/
169
+
170
+ # Package lock files
171
+ package-lock.json
172
+
173
+ # logs
174
+ /logs/node_modules/
175
+ node_modules/
@@ -0,0 +1,135 @@
1
+ Metadata-Version: 2.4
2
+ Name: dojozero
3
+ Version: 0.2.0
4
+ Summary: A platform for running AI agents on realtime sport data and make predictions about game outcomes.
5
+ Project-URL: Homepage, https://github.com/agentscope-ai/DojoZero
6
+ Project-URL: Repository, https://github.com/agentscope-ai/DojoZero
7
+ Project-URL: Issues, https://github.com/agentscope-ai/DojoZero/issues
8
+ Author-email: DojoZero Team <dojozero@list.alibaba-inc.com>
9
+ License: MIT
10
+ Keywords: ai-agents,prediction,realtime,sports,trading
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: agentscope[gemini]>=1.0.14
20
+ Requires-Dist: aiohttp>=3.9.0
21
+ Requires-Dist: dashscope>=1.0.0
22
+ Requires-Dist: fastapi>=0.128.0
23
+ Requires-Dist: httpx>=0.28.0
24
+ Requires-Dist: matplotlib>=3.10.8
25
+ Requires-Dist: opentelemetry-api>=1.29.0
26
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.29.0
27
+ Requires-Dist: opentelemetry-sdk>=1.29.0
28
+ Requires-Dist: py-clob-client>=0.1.0
29
+ Requires-Dist: pydantic>=2.12.4
30
+ Requires-Dist: python-dotenv>=1.2.1
31
+ Requires-Dist: pyyaml>=6.0
32
+ Requires-Dist: tavily-python>=0.7.12
33
+ Requires-Dist: uvicorn>=0.40.0
34
+ Requires-Dist: xdk>=0.9.0
35
+ Provides-Extra: alicloud
36
+ Requires-Dist: alibabacloud-credentials>=1.0.0; extra == 'alicloud'
37
+ Requires-Dist: aliyun-log-python-sdk; extra == 'alicloud'
38
+ Requires-Dist: oss2>=2.18.0; extra == 'alicloud'
39
+ Provides-Extra: ray
40
+ Requires-Dist: ray>=2.51.1; extra == 'ray'
41
+ Provides-Extra: redis
42
+ Requires-Dist: redis>=7.2.1; extra == 'redis'
43
+ Description-Content-Type: text/markdown
44
+
45
+ # DojoZero
46
+
47
+ A platform for running AI agents on realtime sport data and make predictions about game outcomes.
48
+
49
+ ## Installation
50
+
51
+ ```bash
52
+ pip install dojozero
53
+ ```
54
+
55
+ ### Optional extras
56
+
57
+ ```bash
58
+ pip install dojozero[alicloud] # Alibaba Cloud integration (OSS, credentials, SLS)
59
+ pip install dojozero[redis] # Redis-backed data stores
60
+ pip install dojozero[ray] # Distributed execution via Ray
61
+ ```
62
+
63
+ ## Environment Setup
64
+
65
+ ```bash
66
+ cp .env.example .env
67
+ ```
68
+
69
+ ## Quick Start
70
+
71
+ ### Run a single trial locally
72
+
73
+ ```bash
74
+ dojo0 run --params trial_params/nba-moneyline.yaml --trial-id nba-local-001
75
+ ```
76
+
77
+ ### Resume an interrupted trial
78
+
79
+ ```bash
80
+ dojo0 run --trial-id nba-local-001 --resume-latest
81
+ ```
82
+
83
+ ### Run through dashboard server
84
+
85
+ ```bash
86
+ # Start server with tracing
87
+ dojo0 serve --trace-backend jaeger
88
+
89
+ # Submit a trial from another terminal
90
+ dojo0 run \
91
+ --params trial_params/nba-moneyline.yaml \
92
+ --trial-id nba-server-001 \
93
+ --server http://localhost:8000
94
+ ```
95
+
96
+ ### Automatic scheduling with trial sources
97
+
98
+ ```bash
99
+ dojo0 serve --trace-backend jaeger --trial-source "trial_sources/daily/*.yaml"
100
+ ```
101
+
102
+ ### Backtest from captured events
103
+
104
+ ```bash
105
+ dojo0 backtest \
106
+ --events outputs/2026-01-12/401772976.jsonl \
107
+ --params outputs/2026-01-12/401772976.yaml \
108
+ --speed 100 --max-sleep 1
109
+ ```
110
+
111
+ ### Arena (live visualization)
112
+
113
+ ```bash
114
+ dojo0 arena --trace-backend jaeger
115
+ ```
116
+
117
+ ## Command Index
118
+
119
+ | Command | Purpose |
120
+ |---------|---------|
121
+ | `dojo0 run` | Start a local or server-submitted trial |
122
+ | `dojo0 serve` | Dashboard / orchestration server |
123
+ | `dojo0 arena` | Trace-backed Arena visualization server |
124
+ | `dojo0 backtest` | Replay persisted event streams |
125
+ | `dojo0 list-sources` | List trial sources |
126
+ | `dojo0 list-trials` | List scheduled trials |
127
+ | `dojo0 clear-schedules` | Clear scheduled runs |
128
+
129
+ ## Documentation
130
+
131
+ - [Documentation](https://github.com/agentscope-ai/DojoZero/docs/README.md)
132
+
133
+ ## License
134
+
135
+ MIT
@@ -0,0 +1,91 @@
1
+ # DojoZero
2
+
3
+ A platform for running AI agents on realtime sport data and make predictions about game outcomes.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install dojozero
9
+ ```
10
+
11
+ ### Optional extras
12
+
13
+ ```bash
14
+ pip install dojozero[alicloud] # Alibaba Cloud integration (OSS, credentials, SLS)
15
+ pip install dojozero[redis] # Redis-backed data stores
16
+ pip install dojozero[ray] # Distributed execution via Ray
17
+ ```
18
+
19
+ ## Environment Setup
20
+
21
+ ```bash
22
+ cp .env.example .env
23
+ ```
24
+
25
+ ## Quick Start
26
+
27
+ ### Run a single trial locally
28
+
29
+ ```bash
30
+ dojo0 run --params trial_params/nba-moneyline.yaml --trial-id nba-local-001
31
+ ```
32
+
33
+ ### Resume an interrupted trial
34
+
35
+ ```bash
36
+ dojo0 run --trial-id nba-local-001 --resume-latest
37
+ ```
38
+
39
+ ### Run through dashboard server
40
+
41
+ ```bash
42
+ # Start server with tracing
43
+ dojo0 serve --trace-backend jaeger
44
+
45
+ # Submit a trial from another terminal
46
+ dojo0 run \
47
+ --params trial_params/nba-moneyline.yaml \
48
+ --trial-id nba-server-001 \
49
+ --server http://localhost:8000
50
+ ```
51
+
52
+ ### Automatic scheduling with trial sources
53
+
54
+ ```bash
55
+ dojo0 serve --trace-backend jaeger --trial-source "trial_sources/daily/*.yaml"
56
+ ```
57
+
58
+ ### Backtest from captured events
59
+
60
+ ```bash
61
+ dojo0 backtest \
62
+ --events outputs/2026-01-12/401772976.jsonl \
63
+ --params outputs/2026-01-12/401772976.yaml \
64
+ --speed 100 --max-sleep 1
65
+ ```
66
+
67
+ ### Arena (live visualization)
68
+
69
+ ```bash
70
+ dojo0 arena --trace-backend jaeger
71
+ ```
72
+
73
+ ## Command Index
74
+
75
+ | Command | Purpose |
76
+ |---------|---------|
77
+ | `dojo0 run` | Start a local or server-submitted trial |
78
+ | `dojo0 serve` | Dashboard / orchestration server |
79
+ | `dojo0 arena` | Trace-backed Arena visualization server |
80
+ | `dojo0 backtest` | Replay persisted event streams |
81
+ | `dojo0 list-sources` | List trial sources |
82
+ | `dojo0 list-trials` | List scheduled trials |
83
+ | `dojo0 clear-schedules` | Clear scheduled runs |
84
+
85
+ ## Documentation
86
+
87
+ - [Documentation](https://github.com/agentscope-ai/DojoZero/docs/README.md)
88
+
89
+ ## License
90
+
91
+ MIT
@@ -0,0 +1,63 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "dojozero"
7
+ version = "0.2.0"
8
+ description = "A platform for running AI agents on realtime sport data and make predictions about game outcomes."
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = {text = "MIT"}
12
+ authors = [
13
+ {name = "DojoZero Team", email = "dojozero@list.alibaba-inc.com"}
14
+ ]
15
+ keywords = ["ai-agents", "sports", "realtime", "prediction", "trading"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.11",
21
+ "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
23
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
24
+ ]
25
+ dependencies = [
26
+ "PyYAML>=6.0",
27
+ "pydantic>=2.12.4",
28
+ "aiohttp>=3.9.0",
29
+ "agentscope[gemini]>=1.0.14",
30
+ "py-clob-client>=0.1.0",
31
+ "fastapi>=0.128.0",
32
+ "uvicorn>=0.40.0",
33
+ "httpx>=0.28.0",
34
+ "opentelemetry-api>=1.29.0",
35
+ "opentelemetry-sdk>=1.29.0",
36
+ "opentelemetry-exporter-otlp-proto-http>=1.29.0",
37
+ "matplotlib>=3.10.8",
38
+ "python-dotenv>=1.2.1",
39
+ "tavily-python>=0.7.12",
40
+ "dashscope>=1.0.0",
41
+ "xdk>=0.9.0",
42
+ ]
43
+
44
+ [project.urls]
45
+ Homepage = "https://github.com/agentscope-ai/DojoZero"
46
+ Repository = "https://github.com/agentscope-ai/DojoZero"
47
+ Issues = "https://github.com/agentscope-ai/DojoZero/issues"
48
+
49
+ [project.scripts]
50
+ dojo0 = "dojozero.cli:main"
51
+
52
+ [project.optional-dependencies]
53
+ ray = [
54
+ "ray>=2.51.1",
55
+ ]
56
+ alicloud = [
57
+ "oss2>=2.18.0",
58
+ "alibabacloud-credentials>=1.0.0",
59
+ "aliyun-log-python-sdk",
60
+ ]
61
+ redis = [
62
+ "redis>=7.2.1",
63
+ ]
@@ -0,0 +1,13 @@
1
+ """
2
+ DojoZero package.
3
+ """
4
+
5
+ import importlib.metadata
6
+ from typing import Final
7
+
8
+ try:
9
+ _version = importlib.metadata.version(__name__)
10
+ except importlib.metadata.PackageNotFoundError:
11
+ _version = "0.0.0" # Fallback for development mode
12
+ __version__: Final[str] = _version
13
+ __author__ = "DojoZero Team"
@@ -0,0 +1,44 @@
1
+ """Runtime checks for optional Alibaba Cloud-related wheels.
2
+
3
+ Base install (`pip install dojozero`) omits OSS/SLS/credentials SDKs.
4
+ Use `pip install 'dojozero[alicloud]'` for those features.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ INSTALL_ALICLOUD = "pip install 'dojozero[alicloud]'"
10
+
11
+
12
+ def ensure_alibabacloud_credentials() -> None:
13
+ """Raise ImportError if alibabacloud-credentials is not installed."""
14
+ try:
15
+ from alibabacloud_credentials.client import Client # noqa: F401
16
+ except ImportError as e:
17
+ raise ImportError(
18
+ f"Missing alibabacloud-credentials (needed for SLS trace export). "
19
+ f"Install with: {INSTALL_ALICLOUD}"
20
+ ) from e
21
+
22
+
23
+ def ensure_oss2() -> None:
24
+ """Raise ImportError if oss2 is not installed."""
25
+ try:
26
+ import oss2 # noqa: F401
27
+ except ImportError as e:
28
+ raise ImportError(
29
+ f"Missing oss2 (needed for OSS backup and oss:// paths). "
30
+ f"Install with: {INSTALL_ALICLOUD}"
31
+ ) from e
32
+
33
+
34
+ INSTALL_REDIS = "pip install 'dojozero[redis]'"
35
+
36
+
37
+ def ensure_redis() -> None:
38
+ """Raise ImportError if redis is not installed."""
39
+ try:
40
+ import redis # noqa: F401
41
+ except ImportError as e:
42
+ raise ImportError(
43
+ f"Missing redis package (needed for sync-service). Install with: {INSTALL_REDIS}"
44
+ ) from e
@@ -0,0 +1,64 @@
1
+ """Agent configuration and utilities for DojoZero."""
2
+
3
+ from ._config import (
4
+ load_agent_config,
5
+ load_persona_config,
6
+ load_llm_file_config,
7
+ AgentConfig,
8
+ SingleModelAgentConfig,
9
+ LLMConfig,
10
+ PersonaConfig,
11
+ LLMFileConfig,
12
+ create_model,
13
+ create_formatter,
14
+ expand_agent_config,
15
+ filter_llm_configs_by_credentials,
16
+ llm_config_has_credentials,
17
+ )
18
+ from ._toolkit import create_toolkit, tool
19
+ from ._social_board import (
20
+ HotTopicsEvent,
21
+ SocialBoard,
22
+ SocialMessage,
23
+ create_social_board_tools,
24
+ format_hot_topics_for_llm,
25
+ SocialBoardActor,
26
+ SocialBoardConfig,
27
+ )
28
+ from ._trial_utils import (
29
+ get_expanded_agent_ids,
30
+ build_operator_to_agents_map,
31
+ build_agent_specs,
32
+ load_agent_configs_cached,
33
+ )
34
+
35
+ __all__ = [
36
+ "load_agent_config",
37
+ "load_persona_config",
38
+ "load_llm_file_config",
39
+ "AgentConfig",
40
+ "SingleModelAgentConfig",
41
+ "LLMConfig",
42
+ "PersonaConfig",
43
+ "LLMFileConfig",
44
+ "create_toolkit",
45
+ "create_model",
46
+ "create_formatter",
47
+ "expand_agent_config",
48
+ "filter_llm_configs_by_credentials",
49
+ "llm_config_has_credentials",
50
+ "tool",
51
+ # Social board (multi-agent communication)
52
+ "HotTopicsEvent",
53
+ "SocialBoard",
54
+ "SocialMessage",
55
+ "create_social_board_tools",
56
+ "format_hot_topics_for_llm",
57
+ "SocialBoardActor",
58
+ "SocialBoardConfig",
59
+ # Trial utilities
60
+ "get_expanded_agent_ids",
61
+ "build_operator_to_agents_map",
62
+ "build_agent_specs",
63
+ "load_agent_configs_cached",
64
+ ]