synth-ai 0.2.14__py3-none-any.whl → 0.4.4__py3-none-any.whl

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.

Potentially problematic release.


This version of synth-ai might be problematic. Click here for more details.

Files changed (1086) hide show
  1. synth_ai/__init__.py +25 -46
  2. synth_ai/__main__.py +30 -3
  3. synth_ai/cli/__init__.py +98 -72
  4. synth_ai/cli/__main__.py +42 -0
  5. synth_ai/cli/_internal/__init__.py +5 -0
  6. synth_ai/cli/_internal/modal_wrapper.py +31 -0
  7. synth_ai/cli/_internal/storage.py +20 -0
  8. synth_ai/cli/_internal/typer_patch.py +47 -0
  9. synth_ai/cli/_internal/validate_task_app.py +29 -0
  10. synth_ai/cli/agents/__init__.py +17 -0
  11. synth_ai/cli/agents/claude.py +77 -0
  12. synth_ai/cli/agents/codex.py +265 -0
  13. synth_ai/cli/agents/opencode.py +253 -0
  14. synth_ai/cli/commands/__init__.py +18 -0
  15. synth_ai/cli/commands/artifacts/__init__.py +13 -0
  16. synth_ai/cli/commands/artifacts/client.py +119 -0
  17. synth_ai/cli/commands/artifacts/config.py +57 -0
  18. synth_ai/cli/commands/artifacts/core.py +24 -0
  19. synth_ai/cli/commands/artifacts/download.py +188 -0
  20. synth_ai/cli/commands/artifacts/export.py +186 -0
  21. synth_ai/cli/commands/artifacts/list.py +156 -0
  22. synth_ai/cli/commands/artifacts/parsing.py +250 -0
  23. synth_ai/cli/commands/artifacts/show.py +336 -0
  24. synth_ai/cli/commands/demo/__init__.py +3 -0
  25. synth_ai/cli/commands/demo/core.py +153 -0
  26. synth_ai/cli/commands/eval/__init__.py +10 -0
  27. synth_ai/cli/commands/eval/config.py +338 -0
  28. synth_ai/cli/commands/eval/core.py +258 -0
  29. synth_ai/cli/commands/eval/runner.py +704 -0
  30. synth_ai/cli/commands/eval/validation.py +60 -0
  31. synth_ai/cli/commands/filter/__init__.py +12 -0
  32. synth_ai/cli/commands/filter/core.py +424 -0
  33. synth_ai/cli/commands/filter/errors.py +55 -0
  34. synth_ai/cli/commands/filter/validation.py +77 -0
  35. synth_ai/cli/commands/help/__init__.py +185 -0
  36. synth_ai/cli/commands/help/core.py +72 -0
  37. synth_ai/cli/commands/scan/__init__.py +19 -0
  38. synth_ai/cli/commands/scan/cloudflare_scanner.py +403 -0
  39. synth_ai/cli/commands/scan/core.py +344 -0
  40. synth_ai/cli/commands/scan/health_checker.py +242 -0
  41. synth_ai/cli/commands/scan/local_scanner.py +278 -0
  42. synth_ai/cli/commands/scan/models.py +83 -0
  43. synth_ai/cli/commands/smoke/__init__.py +7 -0
  44. synth_ai/cli/commands/smoke/core.py +1428 -0
  45. synth_ai/cli/commands/status/__init__.py +3 -0
  46. synth_ai/cli/commands/status/client.py +91 -0
  47. synth_ai/cli/commands/status/config.py +12 -0
  48. synth_ai/cli/commands/status/errors.py +11 -0
  49. synth_ai/cli/commands/status/subcommands/__init__.py +3 -0
  50. synth_ai/cli/commands/status/subcommands/config.py +13 -0
  51. synth_ai/cli/commands/status/subcommands/files.py +34 -0
  52. synth_ai/cli/commands/status/subcommands/jobs.py +51 -0
  53. synth_ai/cli/commands/status/subcommands/models.py +35 -0
  54. synth_ai/cli/commands/status/subcommands/runs.py +34 -0
  55. synth_ai/cli/commands/status/subcommands/session.py +77 -0
  56. synth_ai/cli/commands/status/subcommands/summary.py +39 -0
  57. synth_ai/cli/commands/status/subcommands/utils.py +41 -0
  58. synth_ai/cli/commands/status/utils.py +23 -0
  59. synth_ai/cli/commands/train/__init__.py +51 -0
  60. synth_ai/cli/commands/train/core.py +22 -0
  61. synth_ai/cli/commands/train/errors.py +117 -0
  62. synth_ai/cli/commands/train/prompt_learning_validation.py +632 -0
  63. synth_ai/cli/commands/train/validation.py +392 -0
  64. synth_ai/cli/commands/train/verifier_schemas.py +200 -0
  65. synth_ai/cli/commands/train/verifier_validation.py +235 -0
  66. synth_ai/cli/demo_apps/__init__.py +10 -0
  67. synth_ai/cli/demo_apps/core/__init__.py +28 -0
  68. synth_ai/cli/demo_apps/core/cli.py +1735 -0
  69. synth_ai/cli/demo_apps/crafter/crafter_fft_4b.toml +55 -0
  70. synth_ai/cli/demo_apps/crafter/grpo_crafter_task_app.py +186 -0
  71. synth_ai/cli/demo_apps/crafter/rl_from_base_qwen4b.toml +74 -0
  72. synth_ai/cli/demo_apps/demo_registry.py +176 -0
  73. synth_ai/cli/demo_apps/demo_task_apps/core.py +440 -0
  74. synth_ai/cli/demo_apps/demo_task_apps/crafter/__init__.py +1 -0
  75. synth_ai/cli/demo_apps/demo_task_apps/crafter/grpo_crafter_task_app.py +185 -0
  76. synth_ai/cli/demo_apps/demo_task_apps/math/config.toml +73 -0
  77. synth_ai/cli/demo_apps/demo_task_apps/math/modal_task_app.py +738 -0
  78. synth_ai/cli/demo_apps/demo_task_apps/math/task_app_entry.py +39 -0
  79. synth_ai/cli/demo_apps/math/__init__.py +1 -0
  80. synth_ai/cli/demo_apps/math/_common.py +16 -0
  81. synth_ai/cli/demo_apps/math/app.py +38 -0
  82. synth_ai/cli/demo_apps/math/config.toml +75 -0
  83. synth_ai/cli/demo_apps/math/deploy_modal.py +54 -0
  84. synth_ai/cli/demo_apps/math/modal_task_app.py +698 -0
  85. synth_ai/cli/demo_apps/math/task_app_entry.py +53 -0
  86. synth_ai/cli/demo_apps/mipro/main.py +271 -0
  87. synth_ai/cli/demo_apps/mipro/task_app.py +911 -0
  88. synth_ai/cli/demo_apps/mipro/train_cfg.toml +92 -0
  89. synth_ai/cli/demos/__init__.py +12 -0
  90. synth_ai/cli/demos/demo.py +32 -0
  91. synth_ai/cli/demos/rl_demo.py +254 -0
  92. synth_ai/cli/deploy.py +216 -0
  93. synth_ai/cli/infra/__init__.py +14 -0
  94. synth_ai/cli/infra/balance.py +216 -0
  95. synth_ai/cli/infra/mcp.py +35 -0
  96. synth_ai/cli/infra/modal_app.py +36 -0
  97. synth_ai/cli/infra/setup.py +69 -0
  98. synth_ai/cli/infra/status.py +16 -0
  99. synth_ai/cli/infra/turso.py +77 -0
  100. synth_ai/cli/lib/__init__.py +10 -0
  101. synth_ai/cli/lib/agents.py +76 -0
  102. synth_ai/cli/lib/apps/modal_app.py +101 -0
  103. synth_ai/cli/lib/apps/task_app.py +642 -0
  104. synth_ai/cli/lib/bin.py +39 -0
  105. synth_ai/cli/lib/env.py +375 -0
  106. synth_ai/cli/lib/errors.py +85 -0
  107. synth_ai/cli/lib/modal.py +315 -0
  108. synth_ai/cli/lib/plotting.py +126 -0
  109. synth_ai/cli/lib/prompt_args.py +39 -0
  110. synth_ai/cli/lib/prompts.py +284 -0
  111. synth_ai/cli/lib/sqld.py +122 -0
  112. synth_ai/cli/lib/task_app_discovery.py +884 -0
  113. synth_ai/cli/lib/task_app_env.py +295 -0
  114. synth_ai/cli/lib/train_cfgs.py +300 -0
  115. synth_ai/cli/lib/tunnel_records.py +207 -0
  116. synth_ai/cli/local/__init__.py +14 -0
  117. synth_ai/cli/local/experiment_queue/__init__.py +72 -0
  118. synth_ai/cli/local/experiment_queue/api_schemas.py +221 -0
  119. synth_ai/cli/local/experiment_queue/celery_app.py +208 -0
  120. synth_ai/cli/local/experiment_queue/config.py +128 -0
  121. synth_ai/cli/local/experiment_queue/config_utils.py +272 -0
  122. synth_ai/cli/local/experiment_queue/database.py +175 -0
  123. synth_ai/cli/local/experiment_queue/dispatcher.py +119 -0
  124. synth_ai/cli/local/experiment_queue/models.py +231 -0
  125. synth_ai/cli/local/experiment_queue/progress_info.py +160 -0
  126. synth_ai/cli/local/experiment_queue/results.py +373 -0
  127. synth_ai/cli/local/experiment_queue/schemas.py +131 -0
  128. synth_ai/cli/local/experiment_queue/service.py +344 -0
  129. synth_ai/cli/local/experiment_queue/status.py +372 -0
  130. synth_ai/cli/local/experiment_queue/status_tracker.py +360 -0
  131. synth_ai/cli/local/experiment_queue/tasks.py +1984 -0
  132. synth_ai/cli/local/experiment_queue/trace_storage.py +65 -0
  133. synth_ai/cli/local/experiment_queue/validation.py +157 -0
  134. synth_ai/cli/local/session/__init__.py +92 -0
  135. synth_ai/cli/local/session/client.py +383 -0
  136. synth_ai/cli/local/session/constants.py +63 -0
  137. synth_ai/cli/local/session/exceptions.py +105 -0
  138. synth_ai/cli/local/session/manager.py +139 -0
  139. synth_ai/cli/local/session/models.py +89 -0
  140. synth_ai/cli/local/session/query.py +110 -0
  141. synth_ai/cli/root.py +30 -6
  142. synth_ai/cli/task_apps/__init__.py +37 -0
  143. synth_ai/cli/task_apps/commands.py +3145 -0
  144. synth_ai/cli/task_apps/deploy.py +7 -0
  145. synth_ai/cli/task_apps/list.py +26 -0
  146. synth_ai/cli/task_apps/main.py +36 -0
  147. synth_ai/cli/task_apps/modal_serve.py +11 -0
  148. synth_ai/cli/task_apps/serve.py +11 -0
  149. synth_ai/cli/training/__init__.py +8 -0
  150. synth_ai/cli/training/train.py +5 -0
  151. synth_ai/cli/training/train_cfg.py +34 -0
  152. synth_ai/cli/training/watch.py +506 -0
  153. synth_ai/cli/turso.py +34 -55
  154. synth_ai/cli/utils/__init__.py +8 -0
  155. synth_ai/cli/utils/experiments.py +235 -0
  156. synth_ai/cli/utils/queue.py +504 -0
  157. synth_ai/cli/utils/recent.py +133 -0
  158. synth_ai/cli/utils/traces.py +164 -0
  159. synth_ai/contracts/__init__.py +67 -0
  160. synth_ai/core/__init__.py +100 -0
  161. synth_ai/core/_utils/__init__.py +54 -0
  162. synth_ai/core/_utils/base_url.py +10 -0
  163. synth_ai/core/_utils/http.py +10 -0
  164. synth_ai/core/_utils/prompts.py +14 -0
  165. synth_ai/core/_utils/task_app_state.py +12 -0
  166. synth_ai/core/_utils/user_config.py +10 -0
  167. synth_ai/core/apps/common.py +116 -0
  168. synth_ai/core/auth.py +95 -0
  169. synth_ai/core/cfgs.py +240 -0
  170. synth_ai/core/config/__init__.py +16 -0
  171. synth_ai/core/config/base.py +168 -0
  172. synth_ai/core/config/resolver.py +89 -0
  173. synth_ai/core/env.py +231 -0
  174. synth_ai/core/errors.py +125 -0
  175. synth_ai/core/http.py +230 -0
  176. synth_ai/core/integrations/__init__.py +11 -0
  177. synth_ai/core/integrations/cloudflare.py +1886 -0
  178. synth_ai/core/integrations/mcp/__init__.py +6 -0
  179. synth_ai/core/integrations/mcp/__main__.py +8 -0
  180. synth_ai/core/integrations/mcp/claude.py +36 -0
  181. synth_ai/core/integrations/mcp/main.py +254 -0
  182. synth_ai/core/integrations/mcp/setup.py +100 -0
  183. synth_ai/core/integrations/modal.py +277 -0
  184. synth_ai/core/json.py +72 -0
  185. synth_ai/core/log_filter.py +99 -0
  186. synth_ai/core/logging.py +82 -0
  187. synth_ai/core/paths.py +107 -0
  188. synth_ai/core/pricing.py +109 -0
  189. synth_ai/core/process.py +233 -0
  190. synth_ai/core/ssl.py +25 -0
  191. synth_ai/core/storage/__init__.py +71 -0
  192. synth_ai/core/task_app_state.py +318 -0
  193. synth_ai/core/telemetry.py +282 -0
  194. synth_ai/core/tracing_v3/__init__.py +99 -0
  195. synth_ai/core/tracing_v3/abstractions.py +348 -0
  196. synth_ai/core/tracing_v3/config.py +229 -0
  197. synth_ai/core/tracing_v3/constants.py +21 -0
  198. synth_ai/core/tracing_v3/db_config.py +182 -0
  199. synth_ai/core/tracing_v3/decorators.py +401 -0
  200. synth_ai/core/tracing_v3/llm_call_record_helpers.py +437 -0
  201. synth_ai/core/tracing_v3/migration_helper.py +119 -0
  202. synth_ai/core/tracing_v3/session_tracer.py +542 -0
  203. synth_ai/core/tracing_v3/storage/base.py +211 -0
  204. synth_ai/core/tracing_v3/storage/config.py +109 -0
  205. synth_ai/core/tracing_v3/storage/factory.py +39 -0
  206. synth_ai/core/tracing_v3/trace_utils.py +326 -0
  207. synth_ai/core/tracing_v3/turso/daemon.py +278 -0
  208. synth_ai/core/tracing_v3/turso/models.py +470 -0
  209. synth_ai/core/tracing_v3/turso/native_manager.py +1385 -0
  210. synth_ai/core/tracing_v3/utils.py +108 -0
  211. synth_ai/core/urls.py +18 -0
  212. synth_ai/core/user_config.py +137 -0
  213. synth_ai/core/uvicorn.py +222 -0
  214. synth_ai/data/__init__.py +83 -0
  215. synth_ai/data/enums.py +122 -0
  216. synth_ai/data/rewards.py +249 -0
  217. synth_ai/data/traces.py +35 -0
  218. synth_ai/products/__init__.py +6 -0
  219. synth_ai/products/graph_evolve/__init__.py +45 -0
  220. synth_ai/products/graph_evolve/client.py +226 -0
  221. synth_ai/products/graph_evolve/config.py +591 -0
  222. synth_ai/products/graph_evolve/converters/__init__.py +42 -0
  223. synth_ai/products/graph_evolve/converters/openai_sft.py +484 -0
  224. synth_ai/products/graph_evolve/examples/hotpotqa/config.toml +109 -0
  225. synth_ai/products/graph_evolve/run.py +222 -0
  226. synth_ai/products/graph_gepa/__init__.py +23 -0
  227. synth_ai/products/graph_gepa/converters/__init__.py +19 -0
  228. synth_ai/products/graph_gepa/converters/openai_sft.py +29 -0
  229. synth_ai/sdk/__init__.py +129 -0
  230. synth_ai/sdk/api/__init__.py +1 -0
  231. synth_ai/sdk/api/eval/__init__.py +33 -0
  232. synth_ai/sdk/api/eval/job.py +732 -0
  233. synth_ai/sdk/api/models/supported.py +514 -0
  234. synth_ai/sdk/api/research_agent/__init__.py +296 -0
  235. synth_ai/sdk/api/train/__init__.py +85 -0
  236. synth_ai/sdk/api/train/builders.py +1076 -0
  237. synth_ai/sdk/api/train/cli.py +2196 -0
  238. synth_ai/sdk/api/train/config_finder.py +267 -0
  239. synth_ai/sdk/api/train/configs/__init__.py +67 -0
  240. synth_ai/sdk/api/train/configs/prompt_learning.py +1800 -0
  241. synth_ai/sdk/api/train/configs/rl.py +436 -0
  242. synth_ai/sdk/api/train/configs/sft.py +263 -0
  243. synth_ai/sdk/api/train/configs/shared.py +81 -0
  244. synth_ai/sdk/api/train/context_learning.py +312 -0
  245. synth_ai/sdk/api/train/env_resolver.py +418 -0
  246. synth_ai/sdk/api/train/graph_validators.py +216 -0
  247. synth_ai/sdk/api/train/graphgen.py +1102 -0
  248. synth_ai/sdk/api/train/graphgen_models.py +873 -0
  249. synth_ai/sdk/api/train/graphgen_validators.py +109 -0
  250. synth_ai/sdk/api/train/local_api.py +10 -0
  251. synth_ai/sdk/api/train/pollers.py +160 -0
  252. synth_ai/sdk/api/train/progress/__init__.py +97 -0
  253. synth_ai/sdk/api/train/progress/dataclasses.py +569 -0
  254. synth_ai/sdk/api/train/progress/events.py +326 -0
  255. synth_ai/sdk/api/train/progress/results.py +428 -0
  256. synth_ai/sdk/api/train/progress/tracker.py +641 -0
  257. synth_ai/sdk/api/train/prompt_learning.py +800 -0
  258. synth_ai/sdk/api/train/rl.py +478 -0
  259. synth_ai/sdk/api/train/sft.py +398 -0
  260. synth_ai/sdk/api/train/summary.py +522 -0
  261. synth_ai/sdk/api/train/supported_algos.py +147 -0
  262. synth_ai/sdk/api/train/task_app.py +351 -0
  263. synth_ai/sdk/api/train/utils.py +279 -0
  264. synth_ai/sdk/api/train/validators.py +2424 -0
  265. synth_ai/sdk/graphs/__init__.py +15 -0
  266. synth_ai/sdk/graphs/completions.py +776 -0
  267. synth_ai/sdk/graphs/verifier_schemas.py +222 -0
  268. synth_ai/sdk/inference/__init__.py +6 -0
  269. synth_ai/sdk/inference/client.py +128 -0
  270. synth_ai/sdk/jobs/__init__.py +16 -0
  271. synth_ai/sdk/jobs/client.py +371 -0
  272. synth_ai/sdk/learning/__init__.py +99 -0
  273. synth_ai/sdk/learning/client.py +240 -0
  274. synth_ai/sdk/learning/context_learning_client.py +531 -0
  275. synth_ai/sdk/learning/context_learning_types.py +294 -0
  276. synth_ai/sdk/learning/ft_client.py +7 -0
  277. synth_ai/sdk/learning/health.py +49 -0
  278. synth_ai/sdk/learning/jobs.py +202 -0
  279. synth_ai/sdk/learning/prompt_extraction.py +334 -0
  280. synth_ai/sdk/learning/prompt_learning_client.py +455 -0
  281. synth_ai/sdk/learning/prompt_learning_types.py +186 -0
  282. synth_ai/sdk/learning/rl/__init__.py +35 -0
  283. synth_ai/sdk/learning/rl/client.py +268 -0
  284. synth_ai/sdk/learning/rl/contracts.py +23 -0
  285. synth_ai/sdk/learning/rl/env_keys.py +166 -0
  286. synth_ai/sdk/learning/rl/secrets.py +13 -0
  287. synth_ai/sdk/learning/sft/client.py +95 -0
  288. synth_ai/sdk/learning/sft/config.py +270 -0
  289. synth_ai/sdk/learning/sft/data.py +698 -0
  290. synth_ai/sdk/learning/validators.py +52 -0
  291. synth_ai/sdk/localapi/__init__.py +40 -0
  292. synth_ai/sdk/localapi/apps/__init__.py +28 -0
  293. synth_ai/sdk/localapi/client.py +10 -0
  294. synth_ai/sdk/localapi/contracts.py +10 -0
  295. synth_ai/sdk/localapi/helpers.py +519 -0
  296. synth_ai/sdk/localapi/rollouts.py +93 -0
  297. synth_ai/sdk/localapi/server.py +29 -0
  298. synth_ai/sdk/localapi/template.py +49 -0
  299. synth_ai/sdk/streaming/__init__.py +35 -0
  300. synth_ai/sdk/streaming/config.py +94 -0
  301. synth_ai/sdk/streaming/handlers.py +1997 -0
  302. synth_ai/sdk/streaming/streamer.py +708 -0
  303. synth_ai/sdk/streaming/types.py +112 -0
  304. synth_ai/sdk/task/__init__.py +164 -0
  305. synth_ai/sdk/task/apps/__init__.py +169 -0
  306. synth_ai/sdk/task/client.py +175 -0
  307. synth_ai/sdk/task/config.py +256 -0
  308. synth_ai/sdk/task/contracts.py +340 -0
  309. synth_ai/sdk/task/datasets.py +108 -0
  310. synth_ai/sdk/task/in_process.py +1200 -0
  311. synth_ai/sdk/task/in_process_runner.py +314 -0
  312. synth_ai/sdk/task/inference_api.py +299 -0
  313. synth_ai/sdk/task/proxy.py +287 -0
  314. synth_ai/sdk/task/rubrics/__init__.py +54 -0
  315. synth_ai/sdk/task/rubrics/loaders.py +156 -0
  316. synth_ai/sdk/task/rubrics/strict.py +148 -0
  317. synth_ai/sdk/task/rubrics.py +219 -0
  318. synth_ai/sdk/task/server.py +640 -0
  319. synth_ai/sdk/task/trace_correlation_helpers.py +557 -0
  320. synth_ai/sdk/task/tracing_utils.py +95 -0
  321. synth_ai/sdk/task/validators.py +441 -0
  322. synth_ai/sdk/training/__init__.py +93 -0
  323. synth_ai/sdk/tunnels/__init__.py +118 -0
  324. synth_ai/sdk/tunnels/cleanup.py +83 -0
  325. synth_ai/sdk/tunnels/ports.py +120 -0
  326. synth_ai/sdk/tunnels/tunneled_api.py +363 -0
  327. synth_ai/utils/__init__.py +213 -0
  328. synth_ai-0.4.4.dist-info/METADATA +262 -0
  329. synth_ai-0.4.4.dist-info/RECORD +369 -0
  330. synth_ai-0.4.4.dist-info/top_level.txt +1 -0
  331. examples/__init__.py +0 -16
  332. examples/analyze_semantic_words.sh +0 -17
  333. examples/crafter_debug_render.py +0 -186
  334. examples/dev/qwen3_32b_qlora_4xh100.toml +0 -40
  335. examples/multi_step/configs/README_verilog_rl.md +0 -77
  336. examples/multi_step/configs/VERILOG_REWARDS.md +0 -90
  337. examples/multi_step/configs/VERILOG_RL_CHECKLIST.md +0 -183
  338. examples/multi_step/configs/crafter_eval_synth_qwen4b.toml +0 -35
  339. examples/multi_step/configs/crafter_eval_text_only_groq_qwen32b.toml +0 -36
  340. examples/multi_step/configs/crafter_rl_outcome.toml +0 -74
  341. examples/multi_step/configs/crafter_rl_stepwise_hosted_judge.toml +0 -187
  342. examples/multi_step/configs/crafter_rl_stepwise_shaped.toml +0 -83
  343. examples/multi_step/configs/crafter_rl_stepwise_simple.toml +0 -78
  344. examples/multi_step/configs/crafter_synth_backend.md +0 -40
  345. examples/multi_step/configs/verilog_eval_groq_qwen32b.toml +0 -31
  346. examples/multi_step/configs/verilog_eval_synth_qwen8b.toml +0 -33
  347. examples/multi_step/configs/verilog_rl_lora.toml +0 -190
  348. examples/multi_step/crafter_rl_lora.md +0 -70
  349. examples/multi_step/judges/crafter_backend_judge.py +0 -220
  350. examples/multi_step/judges/verilog_backend_judge.py +0 -234
  351. examples/multi_step/readme.md +0 -48
  352. examples/multi_step/sse_metrics_streaming_notes.md +0 -357
  353. examples/multi_step/task_app_config_notes.md +0 -494
  354. examples/multi_step/verilog_rl_lora.md +0 -218
  355. examples/qwen_coder/README.md +0 -102
  356. examples/qwen_coder/_shared.py +0 -113
  357. examples/qwen_coder/configs/coder_lora_30b.toml +0 -61
  358. examples/qwen_coder/configs/coder_lora_4b.toml +0 -57
  359. examples/qwen_coder/configs/coder_lora_small.toml +0 -58
  360. examples/qwen_coder/generate_dataset.py +0 -98
  361. examples/qwen_coder/infer_ft_smoke.py +0 -65
  362. examples/qwen_coder/infer_prod_proxy.py +0 -73
  363. examples/qwen_coder/infer_via_synth.py +0 -87
  364. examples/qwen_coder/scripts/infer_coder.sh +0 -19
  365. examples/qwen_coder/scripts/train_coder_30b.sh +0 -22
  366. examples/qwen_coder/sft_full_17b.py +0 -103
  367. examples/qwen_coder/sft_lora_30b.py +0 -110
  368. examples/qwen_coder/subset_jsonl.py +0 -39
  369. examples/qwen_coder/todos.md +0 -38
  370. examples/qwen_coder/validate_jsonl.py +0 -60
  371. examples/rl/README.md +0 -169
  372. examples/rl/download_dataset.py +0 -80
  373. examples/run_crafter_demo.sh +0 -10
  374. examples/sft/README.md +0 -139
  375. examples/sft/configs/crafter_fft_qwen0p6b.toml +0 -44
  376. examples/sft/configs/crafter_lora_qwen0p6b.toml +0 -45
  377. examples/sft/evaluate.py +0 -119
  378. examples/sft/export_dataset.py +0 -117
  379. examples/sft/generate_traces.py +0 -164
  380. examples/swe/__init__.py +0 -12
  381. examples/swe/task_app/README.md +0 -105
  382. examples/swe/task_app/__init__.py +0 -2
  383. examples/swe/task_app/grpo_swe_mini.py +0 -601
  384. examples/swe/task_app/grpo_swe_mini_task_app.py +0 -136
  385. examples/swe/task_app/hosted/README.md +0 -173
  386. examples/swe/task_app/hosted/__init__.py +0 -5
  387. examples/swe/task_app/hosted/branching.py +0 -143
  388. examples/swe/task_app/hosted/environment_routes.py +0 -1289
  389. examples/swe/task_app/hosted/envs/__init__.py +0 -1
  390. examples/swe/task_app/hosted/envs/crafter/__init__.py +0 -6
  391. examples/swe/task_app/hosted/envs/crafter/app.py +0 -1
  392. examples/swe/task_app/hosted/envs/crafter/environment.py +0 -522
  393. examples/swe/task_app/hosted/envs/crafter/policy.py +0 -478
  394. examples/swe/task_app/hosted/envs/crafter/react_agent.py +0 -108
  395. examples/swe/task_app/hosted/envs/crafter/shared.py +0 -305
  396. examples/swe/task_app/hosted/envs/crafter/tools.py +0 -47
  397. examples/swe/task_app/hosted/envs/mini_swe/__init__.py +0 -8
  398. examples/swe/task_app/hosted/envs/mini_swe/environment.py +0 -1164
  399. examples/swe/task_app/hosted/envs/mini_swe/policy.py +0 -355
  400. examples/swe/task_app/hosted/envs/mini_swe/shared.py +0 -83
  401. examples/swe/task_app/hosted/envs/mini_swe/tools.py +0 -96
  402. examples/swe/task_app/hosted/hosted_app.py +0 -204
  403. examples/swe/task_app/hosted/inference/__init__.py +0 -5
  404. examples/swe/task_app/hosted/inference/openai_client.py +0 -618
  405. examples/swe/task_app/hosted/main.py +0 -100
  406. examples/swe/task_app/hosted/policy_routes.py +0 -1079
  407. examples/swe/task_app/hosted/registry.py +0 -195
  408. examples/swe/task_app/hosted/rollout.py +0 -1911
  409. examples/swe/task_app/hosted/storage/__init__.py +0 -5
  410. examples/swe/task_app/hosted/storage/volume.py +0 -211
  411. examples/swe/task_app/hosted/test_agents.py +0 -161
  412. examples/swe/task_app/hosted/test_service.py +0 -136
  413. examples/swe/task_app/hosted/utils.py +0 -62
  414. examples/task_apps/IMAGE_ONLY_EVAL_QUICKSTART.md +0 -258
  415. examples/task_apps/TESTING.md +0 -275
  416. examples/task_apps/crafter/CREATE_SFT_DATASET.md +0 -273
  417. examples/task_apps/crafter/EVAL_IMAGE_ONLY_RESULTS.md +0 -152
  418. examples/task_apps/crafter/FILTER_COMMAND_STATUS.md +0 -174
  419. examples/task_apps/crafter/FILTER_COMMAND_SUCCESS.md +0 -268
  420. examples/task_apps/crafter/QUERY_EXAMPLES.md +0 -203
  421. examples/task_apps/crafter/README_IMAGE_ONLY_EVAL.md +0 -316
  422. examples/task_apps/crafter/__init__.py +0 -0
  423. examples/task_apps/crafter/eval_image_only_gpt4o.toml +0 -28
  424. examples/task_apps/crafter/eval_text_only_groq_llama.toml +0 -36
  425. examples/task_apps/crafter/filter_sft_dataset.toml +0 -16
  426. examples/task_apps/crafter/task_app/README.md +0 -42
  427. examples/task_apps/crafter/task_app/__init__.py +0 -5
  428. examples/task_apps/crafter/task_app/grpo_crafter.py +0 -973
  429. examples/task_apps/crafter/task_app/grpo_crafter_task_app.py +0 -146
  430. examples/task_apps/crafter/task_app/synth_envs_hosted/README.md +0 -173
  431. examples/task_apps/crafter/task_app/synth_envs_hosted/__init__.py +0 -5
  432. examples/task_apps/crafter/task_app/synth_envs_hosted/branching.py +0 -143
  433. examples/task_apps/crafter/task_app/synth_envs_hosted/environment_routes.py +0 -1226
  434. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/__init__.py +0 -1
  435. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/__init__.py +0 -6
  436. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/app.py +0 -1
  437. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/environment.py +0 -532
  438. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/policy.py +0 -547
  439. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/react_agent.py +0 -123
  440. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/shared.py +0 -305
  441. examples/task_apps/crafter/task_app/synth_envs_hosted/envs/crafter/tools.py +0 -47
  442. examples/task_apps/crafter/task_app/synth_envs_hosted/hosted_app.py +0 -204
  443. examples/task_apps/crafter/task_app/synth_envs_hosted/inference/__init__.py +0 -5
  444. examples/task_apps/crafter/task_app/synth_envs_hosted/inference/openai_client.py +0 -704
  445. examples/task_apps/crafter/task_app/synth_envs_hosted/main.py +0 -100
  446. examples/task_apps/crafter/task_app/synth_envs_hosted/policy_routes.py +0 -1152
  447. examples/task_apps/crafter/task_app/synth_envs_hosted/registry.py +0 -195
  448. examples/task_apps/crafter/task_app/synth_envs_hosted/rollout.py +0 -2160
  449. examples/task_apps/crafter/task_app/synth_envs_hosted/storage/__init__.py +0 -5
  450. examples/task_apps/crafter/task_app/synth_envs_hosted/storage/volume.py +0 -211
  451. examples/task_apps/crafter/task_app/synth_envs_hosted/test_agents.py +0 -161
  452. examples/task_apps/crafter/task_app/synth_envs_hosted/test_service.py +0 -136
  453. examples/task_apps/crafter/task_app/synth_envs_hosted/utils.py +0 -218
  454. examples/task_apps/dev/pokemon_emerald/__init__.py +0 -2
  455. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/README.md +0 -811
  456. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/__init__.py +0 -120
  457. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/action.py +0 -160
  458. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/memory.py +0 -155
  459. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/perception.py +0 -69
  460. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/planning.py +0 -96
  461. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/simple.py +0 -1502
  462. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/agent/system_prompt.py +0 -4
  463. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/grab_map.py +0 -68
  464. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/manual.py +0 -216
  465. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/__init__.py +0 -35
  466. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/emerald_utils.py +0 -631
  467. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/emulator.py +0 -1544
  468. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/enums.py +0 -1428
  469. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/memory_reader.py +0 -4848
  470. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/types.py +0 -41
  471. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pokemon_env/utils.py +0 -298
  472. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/pyproject.toml +0 -95
  473. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/run.py +0 -204
  474. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/server/__init__.py +0 -0
  475. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/server/app.py +0 -2152
  476. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/server/client.py +0 -429
  477. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/server/frame_server.py +0 -155
  478. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/README.md +0 -78
  479. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/__init__.py +0 -0
  480. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/run_tests.py +0 -122
  481. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_agent_direct.py +0 -76
  482. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_agent_prompts.py +0 -413
  483. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_battle_state_formatting.py +0 -204
  484. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_dialogue_detection.py +0 -133
  485. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_dialogue_detection_comprehensive.py +0 -229
  486. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_direct_agent_emulator.py +0 -300
  487. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_fps_adjustment_pytest.py +0 -205
  488. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_house_to_outside_direct.py +0 -200
  489. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_house_to_outside_transition.py +0 -284
  490. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_map_ground_truth_comparison.py +0 -468
  491. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_memory_map.py +0 -575
  492. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_server_map_validation.py +0 -311
  493. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/tests/test_torchic_state.py +0 -259
  494. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/__init__.py +0 -0
  495. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/anticheat.py +0 -372
  496. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/checkpoint.py +0 -296
  497. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/error_handler.py +0 -275
  498. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/get_local_ip.py +0 -22
  499. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/helpers.py +0 -44
  500. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/llm_logger.py +0 -514
  501. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/map_formatter.py +0 -415
  502. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/map_stitcher.py +0 -1763
  503. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/map_stitcher_singleton.py +0 -33
  504. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/map_trimmer.py +0 -106
  505. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/map_visualizer.py +0 -334
  506. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/ocr_dialogue.py +0 -1020
  507. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/recording.py +0 -188
  508. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/state_formatter.py +0 -1481
  509. examples/task_apps/dev/pokemon_emerald/external/pokeagent-speedrun/utils/vlm.py +0 -862
  510. examples/task_apps/dev/pokemon_emerald/modal_app.py +0 -114
  511. examples/task_apps/dev/pokemon_emerald/task_app/README.md +0 -81
  512. examples/task_apps/dev/pokemon_emerald/task_app/__init__.py +0 -6
  513. examples/task_apps/dev/pokemon_emerald/task_app/pokemon_emerald.py +0 -685
  514. examples/task_apps/enron/__init__.py +0 -1
  515. examples/task_apps/enron/eval_groq_qwen32.toml +0 -16
  516. examples/task_apps/enron/filter_sft.toml +0 -5
  517. examples/task_apps/enron/task_app/README.md +0 -14
  518. examples/task_apps/enron/task_app/__init__.py +0 -1
  519. examples/task_apps/enron/task_app/grpo_enron.py +0 -906
  520. examples/task_apps/enron/task_app/grpo_enron_task_app.py +0 -146
  521. examples/task_apps/enron/tests/__init__.py +0 -4
  522. examples/task_apps/enron/tests/conftest.py +0 -115
  523. examples/task_apps/enron/tests/integration/__init__.py +0 -4
  524. examples/task_apps/enron/tests/integration/test_enron_eval.py +0 -179
  525. examples/task_apps/enron/tests/integration/test_enron_rollout.py +0 -135
  526. examples/task_apps/enron/tests/unit/__init__.py +0 -4
  527. examples/task_apps/enron/tests/unit/test_enron_environment.py +0 -126
  528. examples/task_apps/math/README.md +0 -22
  529. examples/task_apps/math/__init__.py +0 -0
  530. examples/task_apps/math/math_single_step.py +0 -1000
  531. examples/task_apps/math/math_task_app.py +0 -115
  532. examples/task_apps/pokemon_battle/__init__.py +0 -2
  533. examples/task_apps/pokemon_battle/modal_app.py +0 -104
  534. examples/task_apps/pokemon_battle/task_app/README.md +0 -68
  535. examples/task_apps/pokemon_battle/task_app/__init__.py +0 -6
  536. examples/task_apps/pokemon_battle/task_app/pokemon_showdown.py +0 -932
  537. examples/task_apps/pokemon_red/EVAL_IMAGE_ONLY_COMPLETE.md +0 -283
  538. examples/task_apps/pokemon_red/EVAL_IMAGE_ONLY_STATUS.md +0 -155
  539. examples/task_apps/pokemon_red/README.md +0 -357
  540. examples/task_apps/pokemon_red/README_IMAGE_ONLY_EVAL.md +0 -415
  541. examples/task_apps/pokemon_red/__init__.py +0 -3
  542. examples/task_apps/pokemon_red/eval_image_only_gpt4o.toml +0 -29
  543. examples/task_apps/pokemon_red/eval_pokemon_red_policy.py +0 -225
  544. examples/task_apps/pokemon_red/pallet_town_rl_config.toml +0 -75
  545. examples/task_apps/pokemon_red/task_app.py +0 -799
  546. examples/task_apps/pokemon_red/test_pallet_town_rewards.py +0 -193
  547. examples/task_apps/sokoban/README.md +0 -307
  548. examples/task_apps/sokoban/__init__.py +0 -3
  549. examples/task_apps/sokoban/eval_groq_qwen32.toml +0 -16
  550. examples/task_apps/sokoban/eval_openai_gpt5.toml +0 -16
  551. examples/task_apps/sokoban/filter_sft.toml +0 -5
  552. examples/task_apps/sokoban/task_app.py +0 -1058
  553. examples/task_apps/sokoban/tests/__init__.py +0 -4
  554. examples/task_apps/sokoban/tests/conftest.py +0 -113
  555. examples/task_apps/sokoban/tests/integration/__init__.py +0 -4
  556. examples/task_apps/sokoban/tests/integration/test_sokoban_eval.py +0 -57
  557. examples/task_apps/sokoban/tests/integration/test_sokoban_rollout.py +0 -198
  558. examples/task_apps/sokoban/tests/unit/__init__.py +0 -4
  559. examples/task_apps/sokoban/tests/unit/test_sokoban_environment.py +0 -114
  560. examples/task_apps/verilog/__init__.py +0 -1
  561. examples/task_apps/verilog/eval_groq_qwen32b.toml +0 -24
  562. examples/task_apps/verilog/filter_sft.toml +0 -5
  563. examples/task_apps/verilog/task_app/README.md +0 -12
  564. examples/task_apps/verilog/task_app/__init__.py +0 -1
  565. examples/task_apps/verilog/task_app/grpo_verilog.py +0 -1166
  566. examples/task_apps/verilog/task_app/grpo_verilog_task_app.py +0 -145
  567. examples/task_apps/verilog/tests/__init__.py +0 -4
  568. examples/task_apps/verilog/tests/conftest.py +0 -115
  569. examples/task_apps/verilog/tests/integration/__init__.py +0 -4
  570. examples/task_apps/verilog/tests/integration/test_verilog_eval.py +0 -181
  571. examples/task_apps/verilog/tests/integration/test_verilog_rollout.py +0 -55
  572. examples/task_apps/verilog/tests/unit/__init__.py +0 -4
  573. examples/task_apps/verilog/tests/unit/test_verilog_scoring.py +0 -118
  574. examples/vlm/PROPOSAL.md +0 -53
  575. examples/vlm/README.md +0 -68
  576. examples/vlm/configs/crafter_vlm_gpt4o.toml +0 -44
  577. examples/vlm/crafter_image_only_agent.py +0 -207
  578. examples/vlm/crafter_openai_vlm_agent.py +0 -277
  579. examples/vlm/filter_image_rows.py +0 -63
  580. examples/vlm/run_crafter_vlm_benchmark.py +0 -316
  581. examples/warming_up_to_rl/analyze_trace_db.py +0 -422
  582. examples/warming_up_to_rl/configs/crafter_fft.toml +0 -48
  583. examples/warming_up_to_rl/configs/crafter_fft_4b.toml +0 -54
  584. examples/warming_up_to_rl/configs/eval_fft_qwen4b.toml +0 -20
  585. examples/warming_up_to_rl/configs/eval_groq_qwen32b.toml +0 -13
  586. examples/warming_up_to_rl/configs/eval_modal_qwen4b.toml +0 -23
  587. examples/warming_up_to_rl/configs/eval_stepwise_complex.toml +0 -35
  588. examples/warming_up_to_rl/configs/eval_stepwise_consistent.toml +0 -26
  589. examples/warming_up_to_rl/configs/eval_stepwise_per_achievement.toml +0 -36
  590. examples/warming_up_to_rl/configs/eval_stepwise_simple.toml +0 -32
  591. examples/warming_up_to_rl/configs/rl_from_base_qwen4b.toml +0 -83
  592. examples/warming_up_to_rl/configs/rl_from_ft.toml +0 -56
  593. examples/warming_up_to_rl/export_trace_sft.py +0 -723
  594. examples/warming_up_to_rl/groq_test.py +0 -97
  595. examples/warming_up_to_rl/manage_secrets.py +0 -131
  596. examples/warming_up_to_rl/old/event_rewards.md +0 -234
  597. examples/warming_up_to_rl/old/notes.md +0 -73
  598. examples/warming_up_to_rl/readme.md +0 -179
  599. examples/warming_up_to_rl/run_eval.py +0 -736
  600. examples/warming_up_to_rl/run_fft_and_save.py +0 -380
  601. examples/warming_up_to_rl/run_local_rollout.py +0 -239
  602. examples/warming_up_to_rl/run_local_rollout_modal.py +0 -248
  603. examples/warming_up_to_rl/run_local_rollout_parallel.py +0 -405
  604. examples/warming_up_to_rl/run_local_rollout_traced.py +0 -477
  605. examples/warming_up_to_rl/run_rl_and_save.py +0 -124
  606. examples/warming_up_to_rl/run_rollout_remote.py +0 -156
  607. examples/workflows/__init__.py +0 -0
  608. examples/workflows/math_rl/__init__.py +0 -0
  609. examples/workflows/math_rl/configs/eval_base_qwen.toml +0 -15
  610. examples/workflows/math_rl/configs/eval_rl_qwen.toml +0 -11
  611. examples/workflows/math_rl/configs/rl_from_base_qwen.toml +0 -35
  612. examples/workflows/math_rl/configs/rl_from_base_qwen17.toml +0 -74
  613. examples/workflows/math_rl/configs/rl_from_ft_qwen.toml +0 -35
  614. examples/workflows/math_rl/download_dataset.py +0 -80
  615. examples/workflows/math_rl/run_eval.py +0 -436
  616. examples/workflows/math_rl/run_rl_and_save.py +0 -111
  617. synth_ai/api/models/supported.py +0 -377
  618. synth_ai/api/train/__init__.py +0 -5
  619. synth_ai/api/train/builders.py +0 -351
  620. synth_ai/api/train/cli.py +0 -635
  621. synth_ai/api/train/config_finder.py +0 -228
  622. synth_ai/api/train/configs/__init__.py +0 -44
  623. synth_ai/api/train/configs/rl.py +0 -134
  624. synth_ai/api/train/configs/sft.py +0 -95
  625. synth_ai/api/train/configs/shared.py +0 -24
  626. synth_ai/api/train/env_resolver.py +0 -349
  627. synth_ai/api/train/pollers.py +0 -75
  628. synth_ai/api/train/supported_algos.py +0 -147
  629. synth_ai/api/train/task_app.py +0 -195
  630. synth_ai/api/train/utils.py +0 -225
  631. synth_ai/cli/_modal_wrapper.py +0 -29
  632. synth_ai/cli/_storage.py +0 -20
  633. synth_ai/cli/_typer_patch.py +0 -49
  634. synth_ai/cli/_validate_task_app.py +0 -11
  635. synth_ai/cli/balance.py +0 -216
  636. synth_ai/cli/calc.py +0 -84
  637. synth_ai/cli/demo.py +0 -165
  638. synth_ai/cli/legacy_root_backup.py +0 -468
  639. synth_ai/cli/man.py +0 -106
  640. synth_ai/cli/recent.py +0 -132
  641. synth_ai/cli/rl_demo.py +0 -254
  642. synth_ai/cli/status.py +0 -134
  643. synth_ai/cli/task_apps.py +0 -4523
  644. synth_ai/cli/traces.py +0 -164
  645. synth_ai/cli/tui.py +0 -57
  646. synth_ai/cli/watch.py +0 -506
  647. synth_ai/compound/cais.py +0 -0
  648. synth_ai/config/base_url.py +0 -107
  649. synth_ai/core/experiment.py +0 -13
  650. synth_ai/core/system.py +0 -15
  651. synth_ai/demo_registry.py +0 -295
  652. synth_ai/demos/core/__init__.py +0 -1
  653. synth_ai/demos/core/cli.py +0 -1718
  654. synth_ai/demos/demo_task_apps/core.py +0 -440
  655. synth_ai/demos/demo_task_apps/crafter/grpo_crafter_task_app.py +0 -184
  656. synth_ai/demos/demo_task_apps/math/config.toml +0 -74
  657. synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -22
  658. synth_ai/demos/demo_task_apps/math/modal_task_app.py +0 -739
  659. synth_ai/demos/demo_task_apps/math/task_app_entry.py +0 -37
  660. synth_ai/environments/__init__.py +0 -31
  661. synth_ai/environments/environment/__init__.py +0 -1
  662. synth_ai/environments/environment/artifacts/__init__.py +0 -1
  663. synth_ai/environments/environment/artifacts/base.py +0 -52
  664. synth_ai/environments/environment/core.py +0 -67
  665. synth_ai/environments/environment/db/__init__.py +0 -1
  666. synth_ai/environments/environment/db/sqlite.py +0 -45
  667. synth_ai/environments/environment/registry.py +0 -233
  668. synth_ai/environments/environment/resources/sqlite.py +0 -45
  669. synth_ai/environments/environment/results.py +0 -1
  670. synth_ai/environments/environment/rewards/__init__.py +0 -1
  671. synth_ai/environments/environment/rewards/core.py +0 -29
  672. synth_ai/environments/environment/shared_engine.py +0 -26
  673. synth_ai/environments/environment/tools/__init__.py +0 -200
  674. synth_ai/environments/examples/__init__.py +0 -1
  675. synth_ai/environments/examples/bandit/__init__.py +0 -33
  676. synth_ai/environments/examples/bandit/engine.py +0 -302
  677. synth_ai/environments/examples/bandit/environment.py +0 -194
  678. synth_ai/environments/examples/bandit/taskset.py +0 -200
  679. synth_ai/environments/examples/crafter_classic/__init__.py +0 -8
  680. synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -250
  681. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -59
  682. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -152
  683. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -24
  684. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -1194
  685. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -56
  686. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -32
  687. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -738
  688. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -384
  689. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -53
  690. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -178
  691. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -222
  692. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -183
  693. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -210
  694. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -206
  695. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -49
  696. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -64
  697. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -88
  698. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -77
  699. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -324
  700. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -580
  701. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -362
  702. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -49
  703. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -332
  704. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -97
  705. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -217
  706. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -87
  707. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -88
  708. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -195
  709. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -400
  710. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -195
  711. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -56
  712. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +0 -858
  713. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -52
  714. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -874
  715. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -1412
  716. synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -216
  717. synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -296
  718. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -58
  719. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -464
  720. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -152
  721. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -51
  722. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -1412
  723. synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -112
  724. synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -203
  725. synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -305
  726. synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -126
  727. synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -94
  728. synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -142
  729. synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -26
  730. synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -984
  731. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -724
  732. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -386
  733. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -205
  734. synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -150
  735. synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -283
  736. synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -280
  737. synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -456
  738. synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -166
  739. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -102
  740. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -128
  741. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -655
  742. synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -202
  743. synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -166
  744. synth_ai/environments/examples/crafter_classic/config_logging.py +0 -111
  745. synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
  746. synth_ai/environments/examples/crafter_classic/engine.py +0 -579
  747. synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -64
  748. synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -6
  749. synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -75
  750. synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -267
  751. synth_ai/environments/examples/crafter_classic/environment.py +0 -495
  752. synth_ai/environments/examples/crafter_classic/taskset.py +0 -233
  753. synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -228
  754. synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -299
  755. synth_ai/environments/examples/crafter_custom/__init__.py +0 -4
  756. synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -1
  757. synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -202
  758. synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -7
  759. synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -182
  760. synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -8
  761. synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -269
  762. synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -262
  763. synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -417
  764. synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -187
  765. synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -118
  766. synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -373
  767. synth_ai/environments/examples/crafter_custom/environment.py +0 -312
  768. synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -159
  769. synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -158
  770. synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -71
  771. synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -105
  772. synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -119
  773. synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -52
  774. synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -305
  775. synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -156
  776. synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -281
  777. synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -25
  778. synth_ai/environments/examples/enron/engine.py +0 -300
  779. synth_ai/environments/examples/enron/environment.py +0 -234
  780. synth_ai/environments/examples/enron/taskset.py +0 -112
  781. synth_ai/environments/examples/enron/units/keyword_stats.py +0 -112
  782. synth_ai/environments/examples/minigrid/__init__.py +0 -48
  783. synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -1188
  784. synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -48
  785. synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -562
  786. synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -221
  787. synth_ai/environments/examples/minigrid/engine.py +0 -589
  788. synth_ai/environments/examples/minigrid/environment.py +0 -274
  789. synth_ai/environments/examples/minigrid/environment_mapping.py +0 -242
  790. synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -417
  791. synth_ai/environments/examples/minigrid/taskset.py +0 -583
  792. synth_ai/environments/examples/nethack/__init__.py +0 -7
  793. synth_ai/environments/examples/nethack/achievements.py +0 -337
  794. synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -981
  795. synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -74
  796. synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -831
  797. synth_ai/environments/examples/nethack/engine.py +0 -739
  798. synth_ai/environments/examples/nethack/environment.py +0 -256
  799. synth_ai/environments/examples/nethack/helpers/__init__.py +0 -41
  800. synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -301
  801. synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -402
  802. synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -433
  803. synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -200
  804. synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -269
  805. synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -308
  806. synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -431
  807. synth_ai/environments/examples/nethack/taskset.py +0 -323
  808. synth_ai/environments/examples/red/__init__.py +0 -7
  809. synth_ai/environments/examples/red/agent_demos/__init__.py +0 -1
  810. synth_ai/environments/examples/red/config_logging.py +0 -110
  811. synth_ai/environments/examples/red/engine.py +0 -721
  812. synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -1
  813. synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -35
  814. synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -276
  815. synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -142
  816. synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -57
  817. synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -284
  818. synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -150
  819. synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -138
  820. synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -57
  821. synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -331
  822. synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -121
  823. synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_progression.py +0 -477
  824. synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -559
  825. synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -313
  826. synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -148
  827. synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -247
  828. synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -368
  829. synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -172
  830. synth_ai/environments/examples/red/environment.py +0 -298
  831. synth_ai/environments/examples/red/taskset.py +0 -79
  832. synth_ai/environments/examples/red/units/__init__.py +0 -1
  833. synth_ai/environments/examples/sokoban/__init__.py +0 -1
  834. synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -899
  835. synth_ai/environments/examples/sokoban/engine.py +0 -678
  836. synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -1
  837. synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -657
  838. synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -18
  839. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -3
  840. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -131
  841. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -370
  842. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -332
  843. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -306
  844. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -67
  845. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -115
  846. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -123
  847. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -394
  848. synth_ai/environments/examples/sokoban/environment.py +0 -229
  849. synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -440
  850. synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -312
  851. synth_ai/environments/examples/sokoban/taskset.py +0 -544
  852. synth_ai/environments/examples/tictactoe/__init__.py +0 -1
  853. synth_ai/environments/examples/tictactoe/engine.py +0 -368
  854. synth_ai/environments/examples/tictactoe/environment.py +0 -240
  855. synth_ai/environments/examples/tictactoe/taskset.py +0 -215
  856. synth_ai/environments/examples/verilog/__init__.py +0 -10
  857. synth_ai/environments/examples/verilog/engine.py +0 -421
  858. synth_ai/environments/examples/verilog/environment.py +0 -350
  859. synth_ai/environments/examples/verilog/taskset.py +0 -420
  860. synth_ai/environments/examples/wordle/__init__.py +0 -29
  861. synth_ai/environments/examples/wordle/engine.py +0 -398
  862. synth_ai/environments/examples/wordle/environment.py +0 -159
  863. synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -75
  864. synth_ai/environments/examples/wordle/taskset.py +0 -230
  865. synth_ai/environments/reproducibility/core.py +0 -42
  866. synth_ai/environments/reproducibility/helpers.py +0 -0
  867. synth_ai/environments/reproducibility/tree.py +0 -363
  868. synth_ai/environments/service/app.py +0 -97
  869. synth_ai/environments/service/core_routes.py +0 -1021
  870. synth_ai/environments/service/external_registry.py +0 -56
  871. synth_ai/environments/service/registry.py +0 -9
  872. synth_ai/environments/stateful/__init__.py +0 -1
  873. synth_ai/environments/stateful/core.py +0 -163
  874. synth_ai/environments/stateful/engine.py +0 -21
  875. synth_ai/environments/stateful/state.py +0 -7
  876. synth_ai/environments/tasks/api.py +0 -19
  877. synth_ai/environments/tasks/core.py +0 -81
  878. synth_ai/environments/tasks/filters.py +0 -40
  879. synth_ai/environments/tasks/utils.py +0 -90
  880. synth_ai/environments/v0_observability/history.py +0 -3
  881. synth_ai/environments/v0_observability/log.py +0 -2
  882. synth_ai/evals/__init__.py +0 -15
  883. synth_ai/evals/base.py +0 -13
  884. synth_ai/evals/client.py +0 -82
  885. synth_ai/evals/types.py +0 -42
  886. synth_ai/handshake.py +0 -109
  887. synth_ai/http.py +0 -26
  888. synth_ai/http_client.py +0 -136
  889. synth_ai/inference/__init__.py +0 -5
  890. synth_ai/inference/client.py +0 -34
  891. synth_ai/jobs/client.py +0 -295
  892. synth_ai/judge_schemas.py +0 -127
  893. synth_ai/learning/__init__.py +0 -59
  894. synth_ai/learning/client.py +0 -241
  895. synth_ai/learning/ft_client.py +0 -7
  896. synth_ai/learning/health.py +0 -49
  897. synth_ai/learning/jobs.py +0 -201
  898. synth_ai/learning/rl/__init__.py +0 -39
  899. synth_ai/learning/rl/client.py +0 -267
  900. synth_ai/learning/rl/contracts.py +0 -27
  901. synth_ai/learning/rl/env_keys.py +0 -166
  902. synth_ai/learning/rl/secrets.py +0 -13
  903. synth_ai/learning/sft/client.py +0 -68
  904. synth_ai/learning/sft/config.py +0 -270
  905. synth_ai/learning/sft/data.py +0 -295
  906. synth_ai/learning/validators.py +0 -49
  907. synth_ai/lm/__init__.py +0 -25
  908. synth_ai/task/__init__.py +0 -121
  909. synth_ai/task/apps/__init__.py +0 -129
  910. synth_ai/task/client.py +0 -167
  911. synth_ai/task/config.py +0 -257
  912. synth_ai/task/contracts.py +0 -236
  913. synth_ai/task/datasets.py +0 -108
  914. synth_ai/task/proxy.py +0 -251
  915. synth_ai/task/rubrics/__init__.py +0 -56
  916. synth_ai/task/rubrics/loaders.py +0 -152
  917. synth_ai/task/rubrics/strict.py +0 -149
  918. synth_ai/task/server.py +0 -432
  919. synth_ai/task/trace_correlation_helpers.py +0 -315
  920. synth_ai/task/tracing_utils.py +0 -84
  921. synth_ai/task/validators.py +0 -418
  922. synth_ai/tracing_v3/__init__.py +0 -97
  923. synth_ai/tracing_v3/abstractions.py +0 -302
  924. synth_ai/tracing_v3/config.py +0 -84
  925. synth_ai/tracing_v3/db_config.py +0 -194
  926. synth_ai/tracing_v3/decorators.py +0 -398
  927. synth_ai/tracing_v3/llm_call_record_helpers.py +0 -391
  928. synth_ai/tracing_v3/migration_helper.py +0 -120
  929. synth_ai/tracing_v3/session_tracer.py +0 -540
  930. synth_ai/tracing_v3/storage/base.py +0 -210
  931. synth_ai/tracing_v3/storage/config.py +0 -75
  932. synth_ai/tracing_v3/storage/factory.py +0 -39
  933. synth_ai/tracing_v3/trace_utils.py +0 -317
  934. synth_ai/tracing_v3/turso/daemon.py +0 -151
  935. synth_ai/tracing_v3/turso/models.py +0 -469
  936. synth_ai/tracing_v3/turso/native_manager.py +0 -1209
  937. synth_ai/tracing_v3/utils.py +0 -108
  938. synth_ai/tui/__init__.py +0 -5
  939. synth_ai/tui/__main__.py +0 -13
  940. synth_ai/tui/cli/__init__.py +0 -1
  941. synth_ai/tui/cli/query_experiments.py +0 -164
  942. synth_ai/tui/cli/query_experiments_v3.py +0 -164
  943. synth_ai/tui/dashboard.py +0 -906
  944. synth_ai/v0/api/__init__.py +0 -8
  945. synth_ai/v0/api/models/__init__.py +0 -8
  946. synth_ai/v0/api/models/supported.py +0 -8
  947. synth_ai/v0/config/__init__.py +0 -15
  948. synth_ai/v0/config/base_url.py +0 -12
  949. synth_ai/v0/lm/__init__.py +0 -51
  950. synth_ai/v0/lm/caching/__init__.py +0 -0
  951. synth_ai/v0/lm/caching/constants.py +0 -6
  952. synth_ai/v0/lm/caching/dbs.py +0 -0
  953. synth_ai/v0/lm/caching/ephemeral.py +0 -100
  954. synth_ai/v0/lm/caching/handler.py +0 -137
  955. synth_ai/v0/lm/caching/initialize.py +0 -11
  956. synth_ai/v0/lm/caching/persistent.py +0 -114
  957. synth_ai/v0/lm/config.py +0 -115
  958. synth_ai/v0/lm/constants.py +0 -32
  959. synth_ai/v0/lm/core/__init__.py +0 -8
  960. synth_ai/v0/lm/core/all.py +0 -73
  961. synth_ai/v0/lm/core/exceptions.py +0 -5
  962. synth_ai/v0/lm/core/main.py +0 -331
  963. synth_ai/v0/lm/core/main_v3.py +0 -594
  964. synth_ai/v0/lm/core/synth_models.py +0 -35
  965. synth_ai/v0/lm/core/vendor_clients.py +0 -190
  966. synth_ai/v0/lm/cost/__init__.py +0 -0
  967. synth_ai/v0/lm/cost/monitor.py +0 -1
  968. synth_ai/v0/lm/cost/statefulness.py +0 -1
  969. synth_ai/v0/lm/injection.py +0 -80
  970. synth_ai/v0/lm/overrides.py +0 -206
  971. synth_ai/v0/lm/provider_support/__init__.py +0 -8
  972. synth_ai/v0/lm/provider_support/anthropic.py +0 -972
  973. synth_ai/v0/lm/provider_support/openai.py +0 -1139
  974. synth_ai/v0/lm/provider_support/suppress_logging.py +0 -31
  975. synth_ai/v0/lm/structured_outputs/__init__.py +0 -0
  976. synth_ai/v0/lm/structured_outputs/handler.py +0 -440
  977. synth_ai/v0/lm/structured_outputs/inject.py +0 -297
  978. synth_ai/v0/lm/structured_outputs/rehabilitate.py +0 -185
  979. synth_ai/v0/lm/tools/__init__.py +0 -3
  980. synth_ai/v0/lm/tools/base.py +0 -172
  981. synth_ai/v0/lm/unified_interface.py +0 -202
  982. synth_ai/v0/lm/vendors/__init__.py +0 -0
  983. synth_ai/v0/lm/vendors/base.py +0 -81
  984. synth_ai/v0/lm/vendors/core/__init__.py +0 -0
  985. synth_ai/v0/lm/vendors/core/anthropic_api.py +0 -387
  986. synth_ai/v0/lm/vendors/core/gemini_api.py +0 -292
  987. synth_ai/v0/lm/vendors/core/mistral_api.py +0 -322
  988. synth_ai/v0/lm/vendors/core/openai_api.py +0 -227
  989. synth_ai/v0/lm/vendors/core/synth_dev_api.py +0 -0
  990. synth_ai/v0/lm/vendors/local/__init__.py +0 -0
  991. synth_ai/v0/lm/vendors/local/ollama.py +0 -0
  992. synth_ai/v0/lm/vendors/openai_standard.py +0 -782
  993. synth_ai/v0/lm/vendors/openai_standard_responses.py +0 -259
  994. synth_ai/v0/lm/vendors/retries.py +0 -22
  995. synth_ai/v0/lm/vendors/supported/__init__.py +0 -0
  996. synth_ai/v0/lm/vendors/supported/custom_endpoint.py +0 -415
  997. synth_ai/v0/lm/vendors/supported/deepseek.py +0 -69
  998. synth_ai/v0/lm/vendors/supported/grok.py +0 -75
  999. synth_ai/v0/lm/vendors/supported/groq.py +0 -16
  1000. synth_ai/v0/lm/vendors/supported/ollama.py +0 -15
  1001. synth_ai/v0/lm/vendors/supported/openrouter.py +0 -74
  1002. synth_ai/v0/lm/vendors/supported/together.py +0 -11
  1003. synth_ai/v0/lm/vendors/synth_client.py +0 -835
  1004. synth_ai/v0/lm/warmup.py +0 -186
  1005. synth_ai/v0/tracing/__init__.py +0 -0
  1006. synth_ai/v0/tracing/abstractions.py +0 -224
  1007. synth_ai/v0/tracing/base_client.py +0 -91
  1008. synth_ai/v0/tracing/client_manager.py +0 -131
  1009. synth_ai/v0/tracing/config.py +0 -142
  1010. synth_ai/v0/tracing/context.py +0 -146
  1011. synth_ai/v0/tracing/decorators.py +0 -682
  1012. synth_ai/v0/tracing/events/__init__.py +0 -0
  1013. synth_ai/v0/tracing/events/manage.py +0 -147
  1014. synth_ai/v0/tracing/events/scope.py +0 -86
  1015. synth_ai/v0/tracing/events/store.py +0 -228
  1016. synth_ai/v0/tracing/immediate_client.py +0 -151
  1017. synth_ai/v0/tracing/local.py +0 -18
  1018. synth_ai/v0/tracing/log_client_base.py +0 -73
  1019. synth_ai/v0/tracing/retry_queue.py +0 -186
  1020. synth_ai/v0/tracing/trackers.py +0 -515
  1021. synth_ai/v0/tracing/upload.py +0 -409
  1022. synth_ai/v0/tracing/utils.py +0 -9
  1023. synth_ai/v0/tracing_v1/__init__.py +0 -16
  1024. synth_ai/v0/tracing_v1/abstractions.py +0 -224
  1025. synth_ai/v0/tracing_v1/base_client.py +0 -91
  1026. synth_ai/v0/tracing_v1/client_manager.py +0 -131
  1027. synth_ai/v0/tracing_v1/config.py +0 -142
  1028. synth_ai/v0/tracing_v1/context.py +0 -146
  1029. synth_ai/v0/tracing_v1/decorators.py +0 -703
  1030. synth_ai/v0/tracing_v1/events/__init__.py +0 -0
  1031. synth_ai/v0/tracing_v1/events/manage.py +0 -147
  1032. synth_ai/v0/tracing_v1/events/scope.py +0 -86
  1033. synth_ai/v0/tracing_v1/events/store.py +0 -228
  1034. synth_ai/v0/tracing_v1/immediate_client.py +0 -151
  1035. synth_ai/v0/tracing_v1/local.py +0 -18
  1036. synth_ai/v0/tracing_v1/log_client_base.py +0 -73
  1037. synth_ai/v0/tracing_v1/retry_queue.py +0 -186
  1038. synth_ai/v0/tracing_v1/trackers.py +0 -515
  1039. synth_ai/v0/tracing_v1/upload.py +0 -527
  1040. synth_ai/v0/tracing_v1/utils.py +0 -9
  1041. synth_ai/v0/tracing_v3/__init__.py +0 -10
  1042. synth_ai/v0/tracing_v3/abstractions.py +0 -3
  1043. synth_ai/v0/tracing_v3/decorators.py +0 -3
  1044. synth_ai/v0/tracing_v3/llm_call_record_helpers.py +0 -3
  1045. synth_ai/v0/tracing_v3/session_tracer.py +0 -3
  1046. synth_ai-0.2.14.dist-info/METADATA +0 -139
  1047. synth_ai-0.2.14.dist-info/RECORD +0 -762
  1048. synth_ai-0.2.14.dist-info/top_level.txt +0 -2
  1049. /synth_ai/{demos/demo_task_apps → cli/demo_apps}/crafter/__init__.py +0 -0
  1050. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/__init__.py +0 -0
  1051. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/crafter/configs/crafter_fft_4b.toml +0 -0
  1052. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/crafter/configs/rl_from_base_qwen4b.toml +0 -0
  1053. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/__init__.py +0 -0
  1054. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/_common.py +0 -0
  1055. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/app.py +0 -0
  1056. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/deploy_modal.py +0 -0
  1057. {examples/task_apps → synth_ai/core/apps}/__init__.py +0 -0
  1058. /synth_ai/{tracing_v3 → core/tracing_v3}/examples/basic_usage.py +0 -0
  1059. /synth_ai/{tracing_v3 → core/tracing_v3}/hooks.py +0 -0
  1060. /synth_ai/{tracing_v3 → core/tracing_v3}/lm_call_record_abstractions.py +0 -0
  1061. /synth_ai/{tracing_v3 → core/tracing_v3}/replica_sync.py +0 -0
  1062. /synth_ai/{tracing_v3 → core/tracing_v3}/serialization.py +0 -0
  1063. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/__init__.py +0 -0
  1064. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/exceptions.py +0 -0
  1065. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/types.py +0 -0
  1066. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/utils.py +0 -0
  1067. /synth_ai/{tracing_v3 → core/tracing_v3}/turso/__init__.py +0 -0
  1068. /synth_ai/{learning → sdk/learning}/algorithms.py +0 -0
  1069. /synth_ai/{learning → sdk/learning}/config.py +0 -0
  1070. /synth_ai/{learning → sdk/learning}/constants.py +0 -0
  1071. /synth_ai/{learning → sdk/learning}/core.py +0 -0
  1072. /synth_ai/{learning → sdk/learning}/gateway.py +0 -0
  1073. /synth_ai/{learning → sdk/learning}/rl/config.py +0 -0
  1074. /synth_ai/{learning → sdk/learning}/rl_client.py +0 -0
  1075. /synth_ai/{learning → sdk/learning}/sft/__init__.py +0 -0
  1076. /synth_ai/{learning → sdk/learning}/sse.py +0 -0
  1077. /synth_ai/{task → sdk/task}/auth.py +0 -0
  1078. /synth_ai/{task → sdk/task}/errors.py +0 -0
  1079. /synth_ai/{task → sdk/task}/health.py +0 -0
  1080. /synth_ai/{task → sdk/task}/json.py +0 -0
  1081. /synth_ai/{task → sdk/task}/rubrics/models.py +0 -0
  1082. /synth_ai/{task → sdk/task}/rubrics/scoring.py +0 -0
  1083. /synth_ai/{task → sdk/task}/vendors.py +0 -0
  1084. {synth_ai-0.2.14.dist-info → synth_ai-0.4.4.dist-info}/WHEEL +0 -0
  1085. {synth_ai-0.2.14.dist-info → synth_ai-0.4.4.dist-info}/entry_points.txt +0 -0
  1086. {synth_ai-0.2.14.dist-info → synth_ai-0.4.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,1428 +0,0 @@
1
- from enum import IntEnum, IntFlag
2
-
3
- class MetatileBehavior(IntEnum):
4
- """Complete metatile behaviors from Pokemon Emerald decompilation"""
5
- NORMAL = 0
6
- SECRET_BASE_WALL = 1
7
- TALL_GRASS = 2
8
- LONG_GRASS = 3
9
- UNUSED_04 = 4
10
- UNUSED_05 = 5
11
- DEEP_SAND = 6
12
- SHORT_GRASS = 7
13
- CAVE = 8
14
- LONG_GRASS_SOUTH_EDGE = 9
15
- NO_RUNNING = 10
16
- INDOOR_ENCOUNTER = 11
17
- MOUNTAIN_TOP = 12
18
- BATTLE_PYRAMID_WARP = 13
19
- MOSSDEEP_GYM_WARP = 14
20
- MT_PYRE_HOLE = 15
21
- POND_WATER = 16
22
- INTERIOR_DEEP_WATER = 17
23
- DEEP_WATER = 18
24
- WATERFALL = 19
25
- SOOTOPOLIS_DEEP_WATER = 20
26
- OCEAN_WATER = 21
27
- PUDDLE = 22
28
- SHALLOW_WATER = 23
29
- UNUSED_SOOTOPOLIS_DEEP_WATER = 24
30
- NO_SURFACING = 25
31
- UNUSED_SOOTOPOLIS_DEEP_WATER_2 = 26
32
- STAIRS_OUTSIDE_ABANDONED_SHIP = 27
33
- SHOAL_CAVE_ENTRANCE = 28
34
- UNUSED_1D = 29
35
- UNUSED_1E = 30
36
- UNUSED_1F = 31
37
- ICE = 32
38
- SAND = 33
39
- SEAWEED = 34
40
- UNUSED_23 = 35
41
- ASHGRASS = 36
42
- FOOTPRINTS = 37
43
- THIN_ICE = 38
44
- CRACKED_ICE = 39
45
- HOT_SPRINGS = 40
46
- LAVARIDGE_GYM_B1F_WARP = 41
47
- SEAWEED_NO_SURFACING = 42
48
- REFLECTION_UNDER_BRIDGE = 43
49
- UNUSED_2C = 44
50
- UNUSED_2D = 45
51
- UNUSED_2E = 46
52
- UNUSED_2F = 47
53
- IMPASSABLE_EAST = 48
54
- IMPASSABLE_WEST = 49
55
- IMPASSABLE_NORTH = 50
56
- IMPASSABLE_SOUTH = 51
57
- IMPASSABLE_NORTHEAST = 52
58
- IMPASSABLE_NORTHWEST = 53
59
- IMPASSABLE_SOUTHEAST = 54
60
- IMPASSABLE_SOUTHWEST = 55
61
- JUMP_EAST = 56
62
- JUMP_WEST = 57
63
- JUMP_NORTH = 58
64
- JUMP_SOUTH = 59
65
- JUMP_NORTHEAST = 60
66
- JUMP_NORTHWEST = 61
67
- JUMP_SOUTHEAST = 62
68
- JUMP_SOUTHWEST = 63
69
- WALK_EAST = 64
70
- WALK_WEST = 65
71
- WALK_NORTH = 66
72
- WALK_SOUTH = 67
73
- SLIDE_EAST = 68
74
- SLIDE_WEST = 69
75
- SLIDE_NORTH = 70
76
- SLIDE_SOUTH = 71
77
- TRICK_HOUSE_PUZZLE_8_FLOOR = 72
78
- UNUSED_49 = 73
79
- UNUSED_4A = 74
80
- UNUSED_4B = 75
81
- UNUSED_4C = 76
82
- UNUSED_4D = 77
83
- UNUSED_4E = 78
84
- UNUSED_4F = 79
85
- EASTWARD_CURRENT = 80
86
- WESTWARD_CURRENT = 81
87
- NORTHWARD_CURRENT = 82
88
- SOUTHWARD_CURRENT = 83
89
- UNUSED_54 = 84
90
- UNUSED_55 = 85
91
- UNUSED_56 = 86
92
- UNUSED_57 = 87
93
- UNUSED_58 = 88
94
- UNUSED_59 = 89
95
- UNUSED_5A = 90
96
- UNUSED_5B = 91
97
- UNUSED_5C = 92
98
- UNUSED_5D = 93
99
- UNUSED_5E = 94
100
- UNUSED_5F = 95
101
- NON_ANIMATED_DOOR = 96
102
- LADDER = 97
103
- EAST_ARROW_WARP = 98
104
- WEST_ARROW_WARP = 99
105
- NORTH_ARROW_WARP = 100
106
- SOUTH_ARROW_WARP = 101
107
- CRACKED_FLOOR_HOLE = 102
108
- AQUA_HIDEOUT_WARP = 103
109
- LAVARIDGE_GYM_1F_WARP = 104
110
- ANIMATED_DOOR = 105
111
- UP_ESCALATOR = 106
112
- DOWN_ESCALATOR = 107
113
- WATER_DOOR = 108
114
- WATER_SOUTH_ARROW_WARP = 109
115
- DEEP_SOUTH_WARP = 110
116
- UNUSED_6F = 111
117
- BRIDGE_OVER_OCEAN = 112
118
- BRIDGE_OVER_POND_LOW = 113
119
- BRIDGE_OVER_POND_MED = 114
120
- BRIDGE_OVER_POND_HIGH = 115
121
- PACIFIDLOG_VERTICAL_LOG_TOP = 116
122
- PACIFIDLOG_VERTICAL_LOG_BOTTOM = 117
123
- PACIFIDLOG_HORIZONTAL_LOG_LEFT = 118
124
- PACIFIDLOG_HORIZONTAL_LOG_RIGHT = 119
125
- FORTREE_BRIDGE = 120
126
- UNUSED_79 = 121
127
- BRIDGE_OVER_POND_MED_EDGE_1 = 122
128
- BRIDGE_OVER_POND_MED_EDGE_2 = 123
129
- BRIDGE_OVER_POND_HIGH_EDGE_1 = 124
130
- BRIDGE_OVER_POND_HIGH_EDGE_2 = 125
131
- UNUSED_BRIDGE = 126
132
- BIKE_BRIDGE_OVER_BARRIER = 127
133
- COUNTER = 128
134
- UNUSED_81 = 129
135
- UNUSED_82 = 130
136
- PC = 131
137
- CABLE_BOX_RESULTS_1 = 132
138
- REGION_MAP = 133
139
- TELEVISION = 134
140
- POKEBLOCK_FEEDER = 135
141
- UNUSED_88 = 136
142
- SLOT_MACHINE = 137
143
- ROULETTE = 138
144
- CLOSED_SOOTOPOLIS_DOOR = 139
145
- TRICK_HOUSE_PUZZLE_DOOR = 140
146
- PETALBURG_GYM_DOOR = 141
147
- RUNNING_SHOES_INSTRUCTION = 142
148
- QUESTIONNAIRE = 143
149
- SECRET_BASE_SPOT_RED_CAVE = 144
150
- SECRET_BASE_SPOT_RED_CAVE_OPEN = 145
151
- SECRET_BASE_SPOT_BROWN_CAVE = 146
152
- SECRET_BASE_SPOT_BROWN_CAVE_OPEN = 147
153
- SECRET_BASE_SPOT_YELLOW_CAVE = 148
154
- SECRET_BASE_SPOT_YELLOW_CAVE_OPEN = 149
155
- SECRET_BASE_SPOT_TREE_LEFT = 150
156
- SECRET_BASE_SPOT_TREE_LEFT_OPEN = 151
157
- SECRET_BASE_SPOT_SHRUB = 152
158
- SECRET_BASE_SPOT_SHRUB_OPEN = 153
159
- SECRET_BASE_SPOT_BLUE_CAVE = 154
160
- SECRET_BASE_SPOT_BLUE_CAVE_OPEN = 155
161
- SECRET_BASE_SPOT_TREE_RIGHT = 156
162
- SECRET_BASE_SPOT_TREE_RIGHT_OPEN = 157
163
- UNUSED_9E = 158
164
- UNUSED_9F = 159
165
- BERRY_TREE_SOIL = 160
166
- UNUSED_A1 = 161
167
- UNUSED_A2 = 162
168
- UNUSED_A3 = 163
169
- UNUSED_A4 = 164
170
- UNUSED_A5 = 165
171
- UNUSED_A6 = 166
172
- UNUSED_A7 = 167
173
- UNUSED_A8 = 168
174
- UNUSED_A9 = 169
175
- UNUSED_AA = 170
176
- UNUSED_AB = 171
177
- UNUSED_AC = 172
178
- UNUSED_AD = 173
179
- UNUSED_AE = 174
180
- UNUSED_AF = 175
181
- SECRET_BASE_PC = 176
182
- SECRET_BASE_REGISTER_PC = 177
183
- SECRET_BASE_SCENERY = 178
184
- SECRET_BASE_TRAINER_SPOT = 179
185
- SECRET_BASE_DECORATION = 180
186
- HOLDS_SMALL_DECORATION = 181
187
- UNUSED_B6 = 182
188
- SECRET_BASE_NORTH_WALL = 183
189
- SECRET_BASE_BALLOON = 184
190
- SECRET_BASE_IMPASSABLE = 185
191
- SECRET_BASE_GLITTER_MAT = 186
192
- SECRET_BASE_JUMP_MAT = 187
193
- SECRET_BASE_SPIN_MAT = 188
194
- SECRET_BASE_SOUND_MAT = 189
195
- SECRET_BASE_BREAKABLE_DOOR = 190
196
- SECRET_BASE_SAND_ORNAMENT = 191
197
- IMPASSABLE_SOUTH_AND_NORTH = 192
198
- IMPASSABLE_WEST_AND_EAST = 193
199
- SECRET_BASE_HOLE = 194
200
- HOLDS_LARGE_DECORATION = 195
201
- SECRET_BASE_TV_SHIELD = 196
202
- PLAYER_ROOM_PC_ON = 197
203
- SECRET_BASE_DECORATION_BASE = 198
204
- SECRET_BASE_POSTER = 199
205
- UNUSED_C8 = 200
206
- UNUSED_C9 = 201
207
- UNUSED_CA = 202
208
- UNUSED_CB = 203
209
- UNUSED_CC = 204
210
- UNUSED_CD = 205
211
- UNUSED_CE = 206
212
- UNUSED_CF = 207
213
- MUDDY_SLOPE = 208
214
- BUMPY_SLOPE = 209
215
- CRACKED_FLOOR = 210
216
- ISOLATED_VERTICAL_RAIL = 211
217
- ISOLATED_HORIZONTAL_RAIL = 212
218
- VERTICAL_RAIL = 213
219
- HORIZONTAL_RAIL = 214
220
- UNUSED_D7 = 215
221
- UNUSED_D8 = 216
222
- UNUSED_D9 = 217
223
- UNUSED_DA = 218
224
- UNUSED_DB = 219
225
- UNUSED_DC = 220
226
- UNUSED_DD = 221
227
- UNUSED_DE = 222
228
- UNUSED_DF = 223
229
- PICTURE_BOOK_SHELF = 224
230
- BOOKSHELF = 225
231
- POKEMON_CENTER_BOOKSHELF = 226
232
- VASE = 227
233
- TRASH_CAN = 228
234
- SHOP_SHELF = 229
235
- BLUEPRINT = 230
236
- CABLE_BOX_RESULTS_2 = 231
237
- WIRELESS_BOX_RESULTS = 232
238
- TRAINER_HILL_TIMER = 233
239
- SKY_PILLAR_CLOSED_DOOR = 234
240
- UNUSED_EB = 235
241
- UNUSED_EC = 236
242
- UNUSED_ED = 237
243
- UNUSED_EE = 238
244
- UNUSED_EF = 239
245
-
246
-
247
- class PokemonType(IntEnum):
248
- """Pokemon types in Emerald"""
249
- NORMAL = 0
250
- FIGHTING = 1
251
- FLYING = 2
252
- POISON = 3
253
- GROUND = 4
254
- ROCK = 5
255
- BUG = 6
256
- GHOST = 7
257
- STEEL = 8
258
- MYSTERY = 9 # Used for Curse
259
- FIRE = 10
260
- WATER = 11
261
- GRASS = 12
262
- ELECTRIC = 13
263
- PSYCHIC = 14
264
- ICE = 15
265
- DRAGON = 16
266
- DARK = 17
267
-
268
-
269
- class PokemonSpecies(IntEnum):
270
- """Pokemon species IDs in Emerald (Hoenn Dex order)"""
271
- NONE = 0
272
- TREECKO = 1
273
- GROVYLE = 2
274
- SCEPTILE = 3
275
- TORCHIC = 4
276
- COMBUSKEN = 5
277
- BLAZIKEN = 6
278
- MUDKIP = 7
279
- MARSHTOMP = 8
280
- SWAMPERT = 9
281
- POOCHYENA = 10
282
- MIGHTYENA = 11
283
- ZIGZAGOON = 12
284
- LINOONE = 13
285
- WURMPLE = 14
286
- SILCOON = 15
287
- BEAUTIFLY = 16
288
- CASCOON = 17
289
- DUSTOX = 18
290
- LOTAD = 19
291
- LOMBRE = 20
292
- LUDICOLO = 21
293
- SEEDOT = 22
294
- NUZLEAF = 23
295
- SHIFTRY = 24
296
- TAILLOW = 25
297
- SWELLOW = 26
298
- WINGULL = 27
299
- PELIPPER = 28
300
- RALTS = 29
301
- KIRLIA = 30
302
- GARDEVOIR = 31
303
- SURSKIT = 32
304
- MASQUERAIN = 33
305
- SHROOMISH = 34
306
- BRELOOM = 35
307
- SLAKOTH = 36
308
- VIGOROTH = 37
309
- SLAKING = 38
310
- ABRA = 39
311
- KADABRA = 40
312
- ALAKAZAM = 41
313
- NINCADA = 42
314
- NINJASK = 43
315
- SHEDINJA = 44
316
- WHISMUR = 45
317
- LOUDRED = 46
318
- EXPLOUD = 47
319
- MAKUHITA = 48
320
- HARIYAMA = 49
321
- GOLDEEN = 50
322
- SEAKING = 51
323
- MAGIKARP = 52
324
- GYARADOS = 53
325
- AZURILL = 54
326
- MARILL = 55
327
- AZUMARILL = 56
328
- GEODUDE = 57
329
- GRAVELER = 58
330
- GOLEM = 59
331
- NOSEPASS = 60
332
- SKITTY = 61
333
- DELCATTY = 62
334
- ZUBAT = 63
335
- GOLBAT = 64
336
- CROBAT = 65
337
- TENTACOOL = 66
338
- TENTACRUEL = 67
339
- SABLEYE = 68
340
- MAWILE = 69
341
- ARON = 70
342
- LAIRON = 71
343
- AGGRON = 72
344
- MACHOP = 73
345
- MACHOKE = 74
346
- MACHAMP = 75
347
- MEDITITE = 76
348
- MEDICHAM = 77
349
- ELECTRIKE = 78
350
- MANECTRIC = 79
351
- PLUSLE = 80
352
- MINUN = 81
353
- MAGNEMITE = 82
354
- MAGNETON = 83
355
- VOLTORB = 84
356
- ELECTRODE = 85
357
- # Add more species as needed...
358
-
359
-
360
- class Move(IntEnum):
361
- """Move IDs in Emerald"""
362
- NONE = 0
363
- POUND = 1
364
- KARATE_CHOP = 2
365
- DOUBLE_SLAP = 3
366
- COMET_PUNCH = 4
367
- MEGA_PUNCH = 5
368
- PAY_DAY = 6
369
- FIRE_PUNCH = 7
370
- ICE_PUNCH = 8
371
- THUNDER_PUNCH = 9
372
- SCRATCH = 10
373
- VICE_GRIP = 11
374
- GUILLOTINE = 12
375
- RAZOR_WIND = 13
376
- SWORDS_DANCE = 14
377
- CUT = 15
378
- GUST = 16
379
- WING_ATTACK = 17
380
- WHIRLWIND = 18
381
- FLY = 19
382
- BIND = 20
383
- SLAM = 21
384
- VINE_WHIP = 22
385
- STOMP = 23
386
- DOUBLE_KICK = 24
387
- MEGA_KICK = 25
388
- JUMP_KICK = 26
389
- ROLLING_KICK = 27
390
- SAND_ATTACK = 28
391
- HEADBUTT = 29
392
- HORN_ATTACK = 30
393
- FURY_ATTACK = 31
394
- HORN_DRILL = 32
395
- TACKLE = 33
396
- BODY_SLAM = 34
397
- WRAP = 35
398
- TAKE_DOWN = 36
399
- THRASH = 37
400
- DOUBLE_EDGE = 38
401
- TAIL_WHIP = 39
402
- POISON_STING = 40
403
- TWINEEDLE = 41
404
- PIN_MISSILE = 42
405
- LEER = 43
406
- BITE = 44
407
- GROWL = 45
408
- ROAR = 46
409
- SING = 47
410
- SUPERSONIC = 48
411
- SONIC_BOOM = 49
412
- DISABLE = 50
413
- ACID = 51
414
- EMBER = 52
415
- FLAMETHROWER = 53
416
- MIST = 54
417
- WATER_GUN = 55
418
- HYDRO_PUMP = 56
419
- SURF = 57
420
- ICE_BEAM = 58
421
- BLIZZARD = 59
422
- PSYBEAM = 60
423
- BUBBLE_BEAM = 61
424
- AURORA_BEAM = 62
425
- HYPER_BEAM = 63
426
- PECK = 64
427
- DRILL_PECK = 65
428
- SUBMISSION = 66
429
- LOW_KICK = 67
430
- COUNTER = 68
431
- SEISMIC_TOSS = 69
432
- STRENGTH = 70
433
- ABSORB = 71
434
- MEGA_DRAIN = 72
435
- LEECH_SEED = 73
436
- GROWTH = 74
437
- RAZOR_LEAF = 75
438
- SOLAR_BEAM = 76
439
- POISON_POWDER = 77
440
- STUN_SPORE = 78
441
- SLEEP_POWDER = 79
442
- PETAL_DANCE = 80
443
- STRING_SHOT = 81
444
- DRAGON_RAGE = 82
445
- FIRE_SPIN = 83
446
- THUNDER_SHOCK = 84
447
- THUNDERBOLT = 85
448
- THUNDER_WAVE = 86
449
- THUNDER = 87
450
- ROCK_THROW = 88
451
- EARTHQUAKE = 89
452
- FISSURE = 90
453
- DIG = 91
454
- TOXIC = 92
455
- CONFUSION = 93
456
- PSYCHIC = 94
457
- HYPNOSIS = 95
458
- MEDITATE = 96
459
- AGILITY = 97
460
- QUICK_ATTACK = 98
461
- RAGE = 99
462
- TELEPORT = 100
463
- NIGHT_SHADE = 101
464
- MIMIC = 102
465
- SCREECH = 103
466
- DOUBLE_TEAM = 104
467
- RECOVER = 105
468
- HARDEN = 106
469
- MINIMIZE = 107
470
- SMOKESCREEN = 108
471
- CONFUSE_RAY = 109
472
- WITHDRAW = 110
473
- DEFENSE_CURL = 111
474
- BARRIER = 112
475
- LIGHT_SCREEN = 113
476
- HAZE = 114
477
- REFLECT = 115
478
- FOCUS_ENERGY = 116
479
- BIDE = 117
480
- METRONOME = 118
481
- MIRROR_MOVE = 119
482
- SELFDESTRUCT = 120
483
- EGG_BOMB = 121
484
- LICK = 122
485
- SMOG = 123
486
- SLUDGE = 124
487
- BONE_CLUB = 125
488
- FIRE_BLAST = 126
489
- WATERFALL = 127
490
- CLAMP = 128
491
- SWIFT = 129
492
- SKULL_BASH = 130
493
- SPIKE_CANNON = 131
494
- CONSTRICT = 132
495
- AMNESIA = 133
496
- KINESIS = 134
497
- SOFTBOILED = 135
498
- HI_JUMP_KICK = 136
499
- GLARE = 137
500
- DREAM_EATER = 138
501
- POISON_GAS = 139
502
- BARRAGE = 140
503
- LEECH_LIFE = 141
504
- LOVELY_KISS = 142
505
- SKY_ATTACK = 143
506
- TRANSFORM = 144
507
- BUBBLE = 145
508
- DIZZY_PUNCH = 146
509
- SPORE = 147
510
- FLASH = 148
511
- PSYWAVE = 149
512
- SPLASH = 150
513
- ACID_ARMOR = 151
514
- CRABHAMMER = 152
515
- EXPLOSION = 153
516
- FURY_SWIPES = 154
517
- BONEMERANG = 155
518
- REST = 156
519
- ROCK_SLIDE = 157
520
- HYPER_FANG = 158
521
- SHARPEN = 159
522
- CONVERSION = 160
523
- TRI_ATTACK = 161
524
- SUPER_FANG = 162
525
- SLASH = 163
526
- SUBSTITUTE = 164
527
- STRUGGLE = 165
528
- # Add more moves as needed...
529
-
530
-
531
- class Badge(IntFlag):
532
- """Gym badges in Emerald"""
533
- STONE = 1 << 0
534
- KNUCKLE = 1 << 1
535
- DYNAMO = 1 << 2
536
- HEAT = 1 << 3
537
- BALANCE = 1 << 4
538
- FEATHER = 1 << 5
539
- MIND = 1 << 6
540
- RAIN = 1 << 7
541
-
542
- class MapLocation(IntEnum):
543
- """Maps location IDs to their names in Pokemon Emerald"""
544
- # Towns and Cities (Group 0)
545
- PETALBURG_CITY = 0x00
546
- SLATEPORT_CITY = 0x01
547
- MAUVILLE_CITY = 0x02
548
- RUSTBORO_CITY = 0x03
549
- FORTREE_CITY = 0x04
550
- LILYCOVE_CITY = 0x05
551
- MOSSDEEP_CITY = 0x06
552
- SOOTOPOLIS_CITY = 0x07
553
- EVER_GRANDE_CITY = 0x08
554
- LITTLEROOT_TOWN = 0x09
555
- OLDALE_TOWN = 0x0A
556
- DEWFORD_TOWN = 0x0B
557
- LAVARIDGE_TOWN = 0x0C
558
- FALLARBOR_TOWN = 0x0D
559
- VERDANTURF_TOWN = 0x0E
560
- PACIFIDLOG_TOWN = 0x0F
561
-
562
- # Routes (Group 0)
563
- ROUTE_101 = 0x10
564
- ROUTE_102 = 0x11
565
- ROUTE_103 = 0x12
566
- ROUTE_104 = 0x13
567
- ROUTE_105 = 0x14
568
- ROUTE_106 = 0x15
569
- ROUTE_107 = 0x16
570
- ROUTE_108 = 0x17
571
- ROUTE_109 = 0x18
572
- ROUTE_110 = 0x19
573
- ROUTE_111 = 0x1A
574
- ROUTE_112 = 0x1B
575
- ROUTE_113 = 0x1C
576
- ROUTE_114 = 0x1D
577
- ROUTE_115 = 0x1E
578
- ROUTE_116 = 0x1F
579
- ROUTE_117 = 0x20
580
- ROUTE_118 = 0x21
581
- ROUTE_119 = 0x22
582
- ROUTE_120 = 0x23
583
- ROUTE_121 = 0x24
584
- ROUTE_122 = 0x25
585
- ROUTE_123 = 0x26
586
- ROUTE_124 = 0x27
587
- ROUTE_125 = 0x28
588
- ROUTE_126 = 0x29
589
- ROUTE_127 = 0x2A
590
- ROUTE_128 = 0x2B
591
- ROUTE_129 = 0x2C
592
- ROUTE_130 = 0x2D
593
- ROUTE_131 = 0x2E
594
- ROUTE_132 = 0x2F
595
- ROUTE_133 = 0x30
596
- ROUTE_134 = 0x31
597
-
598
- # Underwater Routes (Group 0)
599
- UNDERWATER_ROUTE_124 = 0x32
600
- UNDERWATER_ROUTE_126 = 0x33
601
- UNDERWATER_ROUTE_127 = 0x34
602
- UNDERWATER_ROUTE_128 = 0x35
603
- UNDERWATER_ROUTE_129 = 0x36
604
- UNDERWATER_ROUTE_105 = 0x37
605
- UNDERWATER_ROUTE_125 = 0x38
606
-
607
- # Indoor Littleroot (Group 1)
608
- LITTLEROOT_TOWN_BRENDANS_HOUSE_1F = 0x100
609
- LITTLEROOT_TOWN_BRENDANS_HOUSE_2F = 0x101
610
- LITTLEROOT_TOWN_MAYS_HOUSE_1F = 0x102
611
- LITTLEROOT_TOWN_MAYS_HOUSE_2F = 0x103
612
- LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB = 0x104
613
-
614
- # Indoor Oldale (Group 2)
615
- OLDALE_TOWN_HOUSE1 = 0x200
616
- OLDALE_TOWN_HOUSE2 = 0x201
617
- OLDALE_TOWN_POKEMON_CENTER_1F = 0x202
618
- OLDALE_TOWN_POKEMON_CENTER_2F = 0x203
619
- OLDALE_TOWN_MART = 0x204
620
-
621
- # Indoor Dewford (Group 3)
622
- DEWFORD_TOWN_HOUSE1 = 0x300
623
- DEWFORD_TOWN_POKEMON_CENTER_1F = 0x301
624
- DEWFORD_TOWN_POKEMON_CENTER_2F = 0x302
625
- DEWFORD_TOWN_GYM = 0x303
626
- DEWFORD_TOWN_HALL = 0x304
627
- DEWFORD_TOWN_HOUSE2 = 0x305
628
-
629
- # Indoor Lavaridge (Group 4)
630
- LAVARIDGE_TOWN_HERB_SHOP = 0x400
631
- LAVARIDGE_TOWN_GYM_1F = 0x401
632
- LAVARIDGE_TOWN_GYM_B1F = 0x402
633
- LAVARIDGE_TOWN_HOUSE = 0x403
634
- LAVARIDGE_TOWN_MART = 0x404
635
- LAVARIDGE_TOWN_POKEMON_CENTER_1F = 0x405
636
- LAVARIDGE_TOWN_POKEMON_CENTER_2F = 0x406
637
-
638
- # Indoor Fallarbor (Group 5)
639
- FALLARBOR_TOWN_MART = 0x500
640
- FALLARBOR_TOWN_BATTLE_TENT_LOBBY = 0x501
641
- FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR = 0x502
642
- FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM = 0x503
643
- FALLARBOR_TOWN_POKEMON_CENTER_1F = 0x504
644
- FALLARBOR_TOWN_POKEMON_CENTER_2F = 0x505
645
- FALLARBOR_TOWN_COZMOS_HOUSE = 0x506
646
- FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE = 0x507
647
-
648
- # Indoor Verdanturf (Group 6)
649
- VERDANTURF_TOWN_BATTLE_TENT_LOBBY = 0x600
650
- VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR = 0x601
651
- VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM = 0x602
652
- VERDANTURF_TOWN_MART = 0x603
653
- VERDANTURF_TOWN_POKEMON_CENTER_1F = 0x604
654
- VERDANTURF_TOWN_POKEMON_CENTER_2F = 0x605
655
- VERDANTURF_TOWN_WANDAS_HOUSE = 0x606
656
- VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE = 0x607
657
- VERDANTURF_TOWN_HOUSE = 0x608
658
-
659
- # Indoor Pacifidlog (Group 7)
660
- PACIFIDLOG_TOWN_POKEMON_CENTER_1F = 0x700
661
- PACIFIDLOG_TOWN_POKEMON_CENTER_2F = 0x701
662
- PACIFIDLOG_TOWN_HOUSE1 = 0x702
663
- PACIFIDLOG_TOWN_HOUSE2 = 0x703
664
- PACIFIDLOG_TOWN_HOUSE3 = 0x704
665
- PACIFIDLOG_TOWN_HOUSE4 = 0x705
666
- PACIFIDLOG_TOWN_HOUSE5 = 0x706
667
-
668
- # Indoor Petalburg (Group 8)
669
- PETALBURG_CITY_WALLYS_HOUSE = 0x800
670
- PETALBURG_CITY_GYM = 0x801
671
- PETALBURG_CITY_HOUSE1 = 0x802
672
- PETALBURG_CITY_HOUSE2 = 0x803
673
- PETALBURG_CITY_POKEMON_CENTER_1F = 0x804
674
- PETALBURG_CITY_POKEMON_CENTER_2F = 0x805
675
- PETALBURG_CITY_MART = 0x806
676
-
677
- # Indoor Slateport (Group 9)
678
- SLATEPORT_CITY_STERNS_SHIPYARD_1F = 0x900
679
- SLATEPORT_CITY_STERNS_SHIPYARD_2F = 0x901
680
- SLATEPORT_CITY_BATTLE_TENT_LOBBY = 0x902
681
- SLATEPORT_CITY_BATTLE_TENT_CORRIDOR = 0x903
682
- SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM = 0x904
683
- SLATEPORT_CITY_NAME_RATERS_HOUSE = 0x905
684
- SLATEPORT_CITY_POKEMON_FAN_CLUB = 0x906
685
- SLATEPORT_CITY_OCEANIC_MUSEUM_1F = 0x907
686
- SLATEPORT_CITY_OCEANIC_MUSEUM_2F = 0x908
687
- SLATEPORT_CITY_HARBOR = 0x909
688
- SLATEPORT_CITY_HOUSE = 0x90A
689
- SLATEPORT_CITY_POKEMON_CENTER_1F = 0x90B
690
- SLATEPORT_CITY_POKEMON_CENTER_2F = 0x90C
691
- SLATEPORT_CITY_MART = 0x90D
692
-
693
- # Indoor Mauville (Group 10)
694
- MAUVILLE_CITY_GYM = 0xA00
695
- MAUVILLE_CITY_BIKE_SHOP = 0xA01
696
- MAUVILLE_CITY_HOUSE1 = 0xA02
697
- MAUVILLE_CITY_GAME_CORNER = 0xA03
698
- MAUVILLE_CITY_HOUSE2 = 0xA04
699
- MAUVILLE_CITY_POKEMON_CENTER_1F = 0xA05
700
- MAUVILLE_CITY_POKEMON_CENTER_2F = 0xA06
701
- MAUVILLE_CITY_MART = 0xA07
702
-
703
- # Indoor Rustboro (Group 11)
704
- RUSTBORO_CITY_DEVON_CORP_1F = 0xB00
705
- RUSTBORO_CITY_DEVON_CORP_2F = 0xB01
706
- RUSTBORO_CITY_DEVON_CORP_3F = 0xB02
707
- RUSTBORO_CITY_GYM = 0xB03
708
- RUSTBORO_CITY_POKEMON_SCHOOL = 0xB04
709
- RUSTBORO_CITY_POKEMON_CENTER_1F = 0xB05
710
- RUSTBORO_CITY_POKEMON_CENTER_2F = 0xB06
711
- RUSTBORO_CITY_MART = 0xB07
712
- RUSTBORO_CITY_FLAT1_1F = 0xB08
713
- RUSTBORO_CITY_FLAT1_2F = 0xB09
714
- RUSTBORO_CITY_HOUSE1 = 0xB0A
715
- RUSTBORO_CITY_CUTTERS_HOUSE = 0xB0B
716
- RUSTBORO_CITY_HOUSE2 = 0xB0C
717
- RUSTBORO_CITY_FLAT2_1F = 0xB0D
718
- RUSTBORO_CITY_FLAT2_2F = 0xB0E
719
- RUSTBORO_CITY_FLAT2_3F = 0xB0F
720
- RUSTBORO_CITY_HOUSE3 = 0xB10
721
-
722
- # Indoor Route 104 (Group 18)
723
- ROUTE_104_MR_BRINEYS_HOUSE = 0x1200
724
- ROUTE_104_PRETTY_PETAL_FLOWER_SHOP = 0x1201
725
-
726
- # Indoor Route 111 (Group 19)
727
- ROUTE_111_WINSTRATE_FAMILYS_HOUSE = 0x1300
728
- ROUTE_111_OLD_LADYS_REST_STOP = 0x1301
729
-
730
- # Indoor Route 112 (Group 20)
731
- ROUTE_112_CABLE_CAR_STATION = 0x1400
732
- MT_CHIMNEY_CABLE_CAR_STATION = 0x1401
733
-
734
- # Indoor Route 114 (Group 21)
735
- ROUTE_114_FOSSIL_MANIACS_HOUSE = 0x1500
736
- ROUTE_114_FOSSIL_MANIACS_TUNNEL = 0x1501
737
- ROUTE_114_LANETTES_HOUSE = 0x1502
738
-
739
- # Indoor Route 116 (Group 22)
740
- ROUTE_116_TUNNELERS_REST_HOUSE = 0x1600
741
-
742
- # Indoor Route 117 (Group 23)
743
- ROUTE_117_POKEMON_DAY_CARE = 0x1700
744
-
745
- # Indoor Route 121 (Group 24)
746
- ROUTE_121_SAFARI_ZONE_ENTRANCE = 0x1800
747
-
748
- # Indoor Fortree (Group 12)
749
- FORTREE_CITY_HOUSE1 = 0xC00
750
- FORTREE_CITY_GYM = 0xC01
751
- FORTREE_CITY_POKEMON_CENTER_1F = 0xC02
752
- FORTREE_CITY_POKEMON_CENTER_2F = 0xC03
753
- FORTREE_CITY_MART = 0xC04
754
- FORTREE_CITY_HOUSE2 = 0xC05
755
- FORTREE_CITY_HOUSE3 = 0xC06
756
- FORTREE_CITY_HOUSE4 = 0xC07
757
- FORTREE_CITY_HOUSE5 = 0xC08
758
- FORTREE_CITY_DECORATION_SHOP = 0xC09
759
-
760
- # Indoor Lilycove (Group 13)
761
- LILYCOVE_CITY_COVE_LILY_MOTEL_1F = 0xD00
762
- LILYCOVE_CITY_COVE_LILY_MOTEL_2F = 0xD01
763
- LILYCOVE_CITY_LILYCOVE_MUSEUM_1F = 0xD02
764
- LILYCOVE_CITY_LILYCOVE_MUSEUM_2F = 0xD03
765
- LILYCOVE_CITY_CONTEST_LOBBY = 0xD04
766
- LILYCOVE_CITY_CONTEST_HALL = 0xD05
767
- LILYCOVE_CITY_POKEMON_CENTER_1F = 0xD06
768
- LILYCOVE_CITY_POKEMON_CENTER_2F = 0xD07
769
- LILYCOVE_CITY_UNUSED_MART = 0xD08
770
- LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB = 0xD09
771
- LILYCOVE_CITY_HARBOR = 0xD0A
772
- LILYCOVE_CITY_MOVE_DELETERS_HOUSE = 0xD0B
773
- LILYCOVE_CITY_HOUSE1 = 0xD0C
774
- LILYCOVE_CITY_HOUSE2 = 0xD0D
775
- LILYCOVE_CITY_HOUSE3 = 0xD0E
776
- LILYCOVE_CITY_HOUSE4 = 0xD0F
777
- LILYCOVE_CITY_DEPARTMENT_STORE_1F = 0xD10
778
- LILYCOVE_CITY_DEPARTMENT_STORE_2F = 0xD11
779
- LILYCOVE_CITY_DEPARTMENT_STORE_3F = 0xD12
780
- LILYCOVE_CITY_DEPARTMENT_STORE_4F = 0xD13
781
- LILYCOVE_CITY_DEPARTMENT_STORE_5F = 0xD14
782
- LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP = 0xD15
783
- LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR = 0xD16
784
-
785
- # Indoor Mossdeep (Group 14)
786
- MOSSDEEP_CITY_GYM = 0xE00
787
- MOSSDEEP_CITY_HOUSE1 = 0xE01
788
- MOSSDEEP_CITY_HOUSE2 = 0xE02
789
- MOSSDEEP_CITY_POKEMON_CENTER_1F = 0xE03
790
- MOSSDEEP_CITY_POKEMON_CENTER_2F = 0xE04
791
- MOSSDEEP_CITY_MART = 0xE05
792
- MOSSDEEP_CITY_HOUSE3 = 0xE06
793
- MOSSDEEP_CITY_STEVENS_HOUSE = 0xE07
794
- MOSSDEEP_CITY_HOUSE4 = 0xE08
795
- MOSSDEEP_CITY_SPACE_CENTER_1F = 0xE09
796
- MOSSDEEP_CITY_SPACE_CENTER_2F = 0xE0A
797
- MOSSDEEP_CITY_GAME_CORNER_1F = 0xE0B
798
- MOSSDEEP_CITY_GAME_CORNER_B1F = 0xE0C
799
-
800
- # Indoor Sootopolis (Group 15)
801
- SOOTOPOLIS_CITY_GYM_1F = 0xF00
802
- SOOTOPOLIS_CITY_GYM_B1F = 0xF01
803
- SOOTOPOLIS_CITY_POKEMON_CENTER_1F = 0xF02
804
- SOOTOPOLIS_CITY_POKEMON_CENTER_2F = 0xF03
805
- SOOTOPOLIS_CITY_MART = 0xF04
806
- SOOTOPOLIS_CITY_HOUSE1 = 0xF05
807
- SOOTOPOLIS_CITY_HOUSE2 = 0xF06
808
- SOOTOPOLIS_CITY_HOUSE3 = 0xF07
809
- SOOTOPOLIS_CITY_HOUSE4 = 0xF08
810
- SOOTOPOLIS_CITY_HOUSE5 = 0xF09
811
- SOOTOPOLIS_CITY_HOUSE6 = 0xF0A
812
- SOOTOPOLIS_CITY_HOUSE7 = 0xF0B
813
- SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE = 0xF0C
814
- SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F = 0xF0D
815
- SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F = 0xF0E
816
-
817
- # Indoor Ever Grande (Group 16)
818
- EVER_GRANDE_CITY_SIDNEYS_ROOM = 0x1000
819
- EVER_GRANDE_CITY_PHOEBES_ROOM = 0x1001
820
- EVER_GRANDE_CITY_GLACIAS_ROOM = 0x1002
821
- EVER_GRANDE_CITY_DRAKES_ROOM = 0x1003
822
- EVER_GRANDE_CITY_CHAMPIONS_ROOM = 0x1004
823
- EVER_GRANDE_CITY_HALL1 = 0x1005
824
- EVER_GRANDE_CITY_HALL2 = 0x1006
825
- EVER_GRANDE_CITY_HALL3 = 0x1007
826
- EVER_GRANDE_CITY_HALL4 = 0x1008
827
- EVER_GRANDE_CITY_HALL5 = 0x1009
828
- EVER_GRANDE_CITY_POKEMON_LEAGUE_1F = 0x100A
829
- EVER_GRANDE_CITY_HALL_OF_FAME = 0x100B
830
- EVER_GRANDE_CITY_POKEMON_CENTER_1F = 0x100C
831
- EVER_GRANDE_CITY_POKEMON_CENTER_2F = 0x100D
832
- EVER_GRANDE_CITY_POKEMON_LEAGUE_2F = 0x100E
833
-
834
- # Dungeons (Group 17)
835
- METEOR_FALLS_1F_1R = 0x1100
836
- METEOR_FALLS_1F_2R = 0x1101
837
- METEOR_FALLS_B1F_1R = 0x1102
838
- METEOR_FALLS_B1F_2R = 0x1103
839
- RUSTURF_TUNNEL = 0x1104
840
- UNDERWATER_SOOTOPOLIS_CITY = 0x1105
841
- DESERT_RUINS = 0x1106
842
- GRANITE_CAVE_1F = 0x1107
843
- GRANITE_CAVE_B1F = 0x1108
844
- GRANITE_CAVE_B2F = 0x1109
845
- GRANITE_CAVE_STEVENS_ROOM = 0x110A
846
- PETALBURG_WOODS = 0x110B
847
- MT_CHIMNEY = 0x110C
848
- JAGGED_PASS = 0x110D
849
- FIERY_PATH = 0x110E
850
- MT_PYRE_1F = 0x110F
851
- MT_PYRE_2F = 0x1110
852
- MT_PYRE_3F = 0x1111
853
- MT_PYRE_4F = 0x1112
854
- MT_PYRE_5F = 0x1113
855
- MT_PYRE_6F = 0x1114
856
- MT_PYRE_EXTERIOR = 0x1115
857
- MT_PYRE_SUMMIT = 0x1116
858
- AQUA_HIDEOUT_1F = 0x1117
859
- AQUA_HIDEOUT_B1F = 0x1118
860
- AQUA_HIDEOUT_B2F = 0x1119
861
- UNDERWATER_SEAFLOOR_CAVERN = 0x111A
862
- SEAFLOOR_CAVERN_ENTRANCE = 0x111B
863
- SEAFLOOR_CAVERN_ROOM1 = 0x111C
864
- SEAFLOOR_CAVERN_ROOM2 = 0x111D
865
- SEAFLOOR_CAVERN_ROOM3 = 0x111E
866
- SEAFLOOR_CAVERN_ROOM4 = 0x111F
867
- SEAFLOOR_CAVERN_ROOM5 = 0x1120
868
- SEAFLOOR_CAVERN_ROOM6 = 0x1121
869
- SEAFLOOR_CAVERN_ROOM7 = 0x1122
870
- SEAFLOOR_CAVERN_ROOM8 = 0x1123
871
- SEAFLOOR_CAVERN_ROOM9 = 0x1124
872
- CAVE_OF_ORIGIN_ENTRANCE = 0x1125
873
- CAVE_OF_ORIGIN_1F = 0x1126
874
- CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 = 0x1127
875
- CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 = 0x1128
876
- CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 = 0x1129
877
- CAVE_OF_ORIGIN_B1F = 0x112A
878
- VICTORY_ROAD_1F = 0x112B
879
- VICTORY_ROAD_B1F = 0x112C
880
- VICTORY_ROAD_B2F = 0x112D
881
- SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM = 0x112E
882
- SHOAL_CAVE_LOW_TIDE_INNER_ROOM = 0x112F
883
- SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM = 0x1130
884
- SHOAL_CAVE_LOW_TIDE_LOWER_ROOM = 0x1131
885
- SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM = 0x1132
886
- SHOAL_CAVE_HIGH_TIDE_INNER_ROOM = 0x1133
887
- NEW_MAUVILLE_ENTRANCE = 0x1134
888
- NEW_MAUVILLE_INSIDE = 0x1135
889
- ABANDONED_SHIP_DECK = 0x1136
890
- ABANDONED_SHIP_CORRIDORS_1F = 0x1137
891
- ABANDONED_SHIP_ROOMS_1F = 0x1138
892
- ABANDONED_SHIP_CORRIDORS_B1F = 0x1139
893
- ABANDONED_SHIP_ROOMS_B1F = 0x113A
894
- ABANDONED_SHIP_ROOMS2_B1F = 0x113B
895
- ABANDONED_SHIP_UNDERWATER1 = 0x113C
896
- ABANDONED_SHIP_ROOM_B1F = 0x113D
897
- ABANDONED_SHIP_ROOMS2_1F = 0x113E
898
- ABANDONED_SHIP_CAPTAINS_OFFICE = 0x113F
899
- ABANDONED_SHIP_UNDERWATER2 = 0x1140
900
- ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS = 0x1141
901
- ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS = 0x1142
902
- ISLAND_CAVE = 0x1143
903
- ANCIENT_TOMB = 0x1144
904
- UNDERWATER_ROUTE134 = 0x1145
905
- UNDERWATER_SEALED_CHAMBER = 0x1146
906
- SEALED_CHAMBER_OUTER_ROOM = 0x1147
907
- SEALED_CHAMBER_INNER_ROOM = 0x1148
908
- SCORCHED_SLAB = 0x1149
909
- AQUA_HIDEOUT_UNUSED_RUBY_MAP1 = 0x114A
910
- AQUA_HIDEOUT_UNUSED_RUBY_MAP2 = 0x114B
911
- AQUA_HIDEOUT_UNUSED_RUBY_MAP3 = 0x114C
912
- SKY_PILLAR_ENTRANCE = 0x114D
913
- SKY_PILLAR_OUTSIDE = 0x114E
914
- SKY_PILLAR_1F = 0x114F
915
- SKY_PILLAR_2F = 0x1150
916
- SKY_PILLAR_3F = 0x1151
917
- SKY_PILLAR_4F = 0x1152
918
- SHOAL_CAVE_LOW_TIDE_ICE_ROOM = 0x1153
919
- SKY_PILLAR_5F = 0x1154
920
- SKY_PILLAR_TOP = 0x1155
921
- MAGMA_HIDEOUT_1F = 0x1156
922
- MAGMA_HIDEOUT_2F_1R = 0x1157
923
- MAGMA_HIDEOUT_2F_2R = 0x1158
924
- MAGMA_HIDEOUT_3F_1R = 0x1159
925
- MAGMA_HIDEOUT_3F_2R = 0x115A
926
- MAGMA_HIDEOUT_4F = 0x115B
927
- MAGMA_HIDEOUT_3F_3R = 0x115C
928
- MAGMA_HIDEOUT_2F_3R = 0x115D
929
- MIRAGE_TOWER_1F = 0x115E
930
- MIRAGE_TOWER_2F = 0x115F
931
- MIRAGE_TOWER_3F = 0x1160
932
- MIRAGE_TOWER_4F = 0x1161
933
- DESERT_UNDERPASS = 0x1162
934
- ARTISAN_CAVE_B1F = 0x1163
935
- ARTISAN_CAVE_1F = 0x1164
936
- UNDERWATER_MARINE_CAVE = 0x1165
937
- MARINE_CAVE_ENTRANCE = 0x1166
938
- MARINE_CAVE_END = 0x1167
939
- TERRA_CAVE_ENTRANCE = 0x1168
940
- TERRA_CAVE_END = 0x1169
941
- ALTERING_CAVE = 0x116A
942
- METEOR_FALLS_STEVENS_CAVE = 0x116B
943
-
944
- # Indoor Route 109 (Group 26)
945
- ROUTE_109_SEASHORE_HOUSE = 0x1A00
946
-
947
- # Indoor Route 110 (Group 27)
948
- ROUTE_110_TRICK_HOUSE_ENTRANCE = 0x1B00
949
- ROUTE_110_TRICK_HOUSE_END = 0x1B01
950
- ROUTE_110_TRICK_HOUSE_CORRIDOR = 0x1B02
951
- ROUTE_110_TRICK_HOUSE_PUZZLE1 = 0x1B03
952
- ROUTE_110_TRICK_HOUSE_PUZZLE2 = 0x1B04
953
- ROUTE_110_TRICK_HOUSE_PUZZLE3 = 0x1B05
954
- ROUTE_110_TRICK_HOUSE_PUZZLE4 = 0x1B06
955
- ROUTE_110_TRICK_HOUSE_PUZZLE5 = 0x1B07
956
- ROUTE_110_TRICK_HOUSE_PUZZLE6 = 0x1B08
957
- ROUTE_110_TRICK_HOUSE_PUZZLE7 = 0x1B09
958
- ROUTE_110_TRICK_HOUSE_PUZZLE8 = 0x1B0A
959
- ROUTE_110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE = 0x1B0B
960
- ROUTE_110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE = 0x1B0C
961
-
962
- # Indoor Route 113 (Group 28)
963
- ROUTE_113_GLASS_WORKSHOP = 0x1C00
964
-
965
- # Indoor Route 123 (Group 29)
966
- ROUTE_123_BERRY_MASTERS_HOUSE = 0x1D00
967
-
968
- # Indoor Route 119 (Group 30)
969
- ROUTE_119_WEATHER_INSTITUTE_1F = 0x1E00
970
- ROUTE_119_WEATHER_INSTITUTE_2F = 0x1E01
971
- ROUTE_119_HOUSE = 0x1E02
972
-
973
- # Indoor Route 124 (Group 31)
974
- ROUTE_124_DIVING_TREASURE_HUNTERS_HOUSE = 0x1F00
975
-
976
- # Special Areas (Group 25)
977
- SAFARI_ZONE_NORTHWEST = 0x1900
978
- SAFARI_ZONE_NORTH = 0x1901
979
- SAFARI_ZONE_SOUTHWEST = 0x1902
980
- SAFARI_ZONE_SOUTH = 0x1903
981
- BATTLE_FRONTIER_OUTSIDE_WEST = 0x1904
982
- BATTLE_FRONTIER_BATTLE_TOWER_LOBBY = 0x1905
983
- BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR = 0x1906
984
- BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR = 0x1907
985
- BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM = 0x1908
986
- SOUTHERN_ISLAND_EXTERIOR = 0x1909
987
- SOUTHERN_ISLAND_INTERIOR = 0x190A
988
- SAFARI_ZONE_REST_HOUSE = 0x190B
989
- SAFARI_ZONE_NORTHEAST = 0x190C
990
- SAFARI_ZONE_SOUTHEAST = 0x190D
991
- BATTLE_FRONTIER_OUTSIDE_EAST = 0x190E
992
- BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM = 0x190F
993
- BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR = 0x1910
994
- BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM = 0x1911
995
- BATTLE_FRONTIER_BATTLE_DOME_LOBBY = 0x1912
996
- BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR = 0x1913
997
- BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM = 0x1914
998
- BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM = 0x1915
999
- BATTLE_FRONTIER_BATTLE_PALACE_LOBBY = 0x1916
1000
- BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR = 0x1917
1001
- BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM = 0x1918
1002
- BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY = 0x1919
1003
- BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR = 0x191A
1004
- BATTLE_FRONTIER_BATTLE_PYRAMID_TOP = 0x191B
1005
- BATTLE_FRONTIER_BATTLE_ARENA_LOBBY = 0x191C
1006
- BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR = 0x191D
1007
- BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM = 0x191E
1008
- BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY = 0x191F
1009
- BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM = 0x1920
1010
- BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM = 0x1921
1011
- BATTLE_FRONTIER_BATTLE_PIKE_LOBBY = 0x1922
1012
- BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR = 0x1923
1013
- BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM = 0x1924
1014
- BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL = 0x1925
1015
- BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL = 0x1926
1016
- BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS = 0x1927
1017
- BATTLE_FRONTIER_RANKING_HALL = 0x1928
1018
- BATTLE_FRONTIER_LOUNGE1 = 0x1929
1019
- BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER = 0x192A
1020
- BATTLE_FRONTIER_LOUNGE2 = 0x192B
1021
- BATTLE_FRONTIER_LOUNGE3 = 0x192C
1022
- BATTLE_FRONTIER_LOUNGE4 = 0x192D
1023
- BATTLE_FRONTIER_SCOTTS_HOUSE = 0x192E
1024
- BATTLE_FRONTIER_LOUNGE5 = 0x192F
1025
- BATTLE_FRONTIER_LOUNGE6 = 0x1930
1026
- BATTLE_FRONTIER_LOUNGE7 = 0x1931
1027
- BATTLE_FRONTIER_RECEPTION_GATE = 0x1932
1028
- BATTLE_FRONTIER_LOUNGE8 = 0x1933
1029
- BATTLE_FRONTIER_LOUNGE9 = 0x1934
1030
- BATTLE_FRONTIER_POKEMON_CENTER_1F = 0x1935
1031
- BATTLE_FRONTIER_POKEMON_CENTER_2F = 0x1936
1032
- BATTLE_FRONTIER_MART = 0x1937
1033
- FARAWAY_ISLAND_ENTRANCE = 0x1938
1034
- FARAWAY_ISLAND_INTERIOR = 0x1939
1035
- BIRTH_ISLAND_EXTERIOR = 0x193A
1036
- BIRTH_ISLAND_HARBOR = 0x193B
1037
- TRAINER_HILL_ENTRANCE = 0x193C
1038
- TRAINER_HILL_1F = 0x193D
1039
- TRAINER_HILL_2F = 0x193E
1040
- TRAINER_HILL_3F = 0x193F
1041
- TRAINER_HILL_4F = 0x1940
1042
- TRAINER_HILL_ROOF = 0x1941
1043
- NAVEL_ROCK_EXTERIOR = 0x1942
1044
- NAVEL_ROCK_HARBOR = 0x1943
1045
- NAVEL_ROCK_ENTRANCE = 0x1944
1046
- NAVEL_ROCK_B1F = 0x1945
1047
- NAVEL_ROCK_FORK = 0x1946
1048
- NAVEL_ROCK_UP1 = 0x1947
1049
- NAVEL_ROCK_UP2 = 0x1948
1050
- NAVEL_ROCK_UP3 = 0x1949
1051
- NAVEL_ROCK_UP4 = 0x194A
1052
- NAVEL_ROCK_TOP = 0x194B
1053
- NAVEL_ROCK_DOWN01 = 0x194C
1054
- NAVEL_ROCK_DOWN02 = 0x194D
1055
- NAVEL_ROCK_DOWN03 = 0x194E
1056
- NAVEL_ROCK_DOWN04 = 0x194F
1057
- NAVEL_ROCK_DOWN05 = 0x1950
1058
- NAVEL_ROCK_DOWN06 = 0x1951
1059
- NAVEL_ROCK_DOWN07 = 0x1952
1060
- NAVEL_ROCK_DOWN08 = 0x1953
1061
- NAVEL_ROCK_DOWN09 = 0x1954
1062
- NAVEL_ROCK_DOWN10 = 0x1955
1063
- NAVEL_ROCK_DOWN11 = 0x1956
1064
- NAVEL_ROCK_BOTTOM = 0x1957
1065
- TRAINER_HILL_ELEVATOR = 0x1958
1066
-
1067
- class Tileset(IntEnum):
1068
- NONE = 0
1069
- TOWN = 1
1070
- CITY = 2
1071
- ROUTE = 3
1072
- UNDERGROUND = 4
1073
- UNDERWATER = 5
1074
- OCEAN_ROUTE = 6
1075
- UNKNOWN = 7
1076
- INDOOR = 8
1077
- SECRET_BASE = 9
1078
-
1079
- class StatusCondition(IntFlag):
1080
- """Status conditions for Pokemon in Emerald"""
1081
- NONE = 0
1082
- SLEEP_MASK = 0b111 # Bits 0-2
1083
- SLEEP = 0b001 # For name display purposes
1084
- POISON = 0b1000 # Bit 3
1085
- BURN = 0b10000 # Bit 4
1086
- FREEZE = 0b100000 # Bit 5
1087
- PARALYSIS = 0b1000000 # Bit 6
1088
-
1089
- @property
1090
- def is_asleep(self) -> bool:
1091
- """Check if the Pokémon is asleep (any value in bits 0-2)"""
1092
- return bool(int(self) & 0b111)
1093
-
1094
- def get_status_name(self) -> str:
1095
- """Get a human-readable status name"""
1096
- if self.is_asleep:
1097
- return "SLEEP"
1098
- elif self & StatusCondition.PARALYSIS:
1099
- return "PARALYSIS"
1100
- elif self & StatusCondition.FREEZE:
1101
- return "FREEZE"
1102
- elif self & StatusCondition.BURN:
1103
- return "BURN"
1104
- elif self & StatusCondition.POISON:
1105
- return "POISON"
1106
- return "OK"
1107
-
1108
- def _find_map_buffer_addresses(self):
1109
- """Find the map buffer addresses by scanning for the BackupMapLayout structure"""
1110
- # The BackupMapLayout structure is in COMMON_DATA (IWRAM) at gBackupMapLayout
1111
- # We need to find where it's located in memory
1112
-
1113
- # Try to find the BackupMapLayout by looking for reasonable width/height values
1114
- # The structure is: s32 width, s32 height, u16 *map
1115
- for offset in range(0, 0x8000 - 12, 4): # Search in IWRAM (0x03000000)
1116
- try:
1117
- # Read width and height (both should be reasonable values)
1118
- width = (
1119
- (self.memory[0x03000000 + offset] << 24) |
1120
- (self.memory[0x03000000 + offset + 1] << 16) |
1121
- (self.memory[0x03000000 + offset + 2] << 8) |
1122
- self.memory[0x03000000 + offset + 3]
1123
- )
1124
- height = (
1125
- (self.memory[0x03000000 + offset + 4] << 24) |
1126
- (self.memory[0x03000000 + offset + 5] << 16) |
1127
- (self.memory[0x03000000 + offset + 6] << 8) |
1128
- self.memory[0x03000000 + offset + 7]
1129
- )
1130
-
1131
- # Width and height should be reasonable values (typically 15-100)
1132
- if 10 <= width <= 200 and 10 <= height <= 200:
1133
- # Read the map pointer (should point to EWRAM)
1134
- map_ptr = (
1135
- (self.memory[0x03000000 + offset + 8] << 24) |
1136
- (self.memory[0x03000000 + offset + 9] << 16) |
1137
- (self.memory[0x03000000 + offset + 10] << 8) |
1138
- self.memory[0x03000000 + offset + 11]
1139
- )
1140
-
1141
- # Map pointer should be in EWRAM range (0x02000000-0x02040000)
1142
- if 0x02000000 <= map_ptr <= 0x02040000:
1143
- self.backup_map_layout_addr = 0x03000000 + offset
1144
- self.map_buffer_addr = map_ptr
1145
- self.map_width = width
1146
- self.map_height = height
1147
- return True
1148
- except:
1149
- continue
1150
- return False
1151
-
1152
- def read_current_tile_behavior(self) -> MetatileBehavior:
1153
- """
1154
- Reads the metatile behavior at the player's current position.
1155
- Returns a MetatileBehavior enum value.
1156
- """
1157
- if not hasattr(self, 'map_buffer_addr'):
1158
- if not self._find_map_buffer_addresses():
1159
- return MetatileBehavior.NORMAL
1160
-
1161
- # Get player coordinates
1162
- x, y = self.read_coordinates()
1163
-
1164
- # The map buffer uses MAP_OFFSET (7) for border tiles
1165
- # So we need to add MAP_OFFSET to get the correct index
1166
- map_x = x + 7 # MAP_OFFSET
1167
- map_y = y + 7 # MAP_OFFSET
1168
-
1169
- # Calculate index in the map buffer
1170
- index = map_x + map_y * self.map_width
1171
-
1172
- # Read the metatile value (16-bit)
1173
- metatile_addr = self.map_buffer_addr + (index * 2)
1174
- metatile_value = (
1175
- (self.memory[metatile_addr + 1] << 8) |
1176
- self.memory[metatile_addr]
1177
- )
1178
-
1179
- # Extract metatile ID (lower 10 bits)
1180
- metatile_id = metatile_value & 0x03FF
1181
-
1182
- # Get the behavior from the metatile attributes
1183
- # This is a simplified approach - in the real game, it would look up
1184
- # the behavior in the tileset's metatile attributes table
1185
- # For now, we'll use the metatile ID as a proxy for behavior
1186
- # (This is not 100% accurate but works for most cases)
1187
- try:
1188
- return MetatileBehavior(metatile_id & 0xFF)
1189
- except ValueError:
1190
- return MetatileBehavior.NORMAL
1191
-
1192
- def read_map_metatiles(self, x_start: int = 0, y_start: int = 0, width: int = None, height: int = None) -> list[list[tuple[int, MetatileBehavior]]]:
1193
- """
1194
- Read a section of the current map's metatiles.
1195
-
1196
- Args:
1197
- x_start: Starting X coordinate (relative to map, not player)
1198
- y_start: Starting Y coordinate (relative to map, not player)
1199
- width: Width of area to read (None for full map width)
1200
- height: Height of area to read (None for full map height)
1201
-
1202
- Returns:
1203
- 2D list of (metatile_id, behavior) tuples
1204
- """
1205
- if not hasattr(self, 'map_buffer_addr'):
1206
- if not self._find_map_buffer_addresses():
1207
- return []
1208
-
1209
- if width is None:
1210
- width = self.map_width
1211
- if height is None:
1212
- height = self.map_height
1213
-
1214
- # Clamp to map bounds
1215
- width = min(width, self.map_width - x_start)
1216
- height = min(height, self.map_height - y_start)
1217
-
1218
- metatiles = []
1219
-
1220
- for y in range(y_start, y_start + height):
1221
- row = []
1222
- for x in range(x_start, x_start + width):
1223
- # Calculate index in the map buffer
1224
- index = x + y * self.map_width
1225
-
1226
- # Read the metatile value (16-bit)
1227
- metatile_addr = self.map_buffer_addr + (index * 2)
1228
- metatile_value = (
1229
- (self.memory[metatile_addr + 1] << 8) |
1230
- self.memory[metatile_addr]
1231
- )
1232
-
1233
- # Extract metatile ID (lower 10 bits)
1234
- metatile_id = metatile_value & 0x03FF
1235
-
1236
- # Extract collision (bits 10-11)
1237
- collision = (metatile_value & 0x0C00) >> 10
1238
-
1239
- # Extract elevation (bits 12-15)
1240
- elevation = (metatile_value & 0xF000) >> 12
1241
-
1242
- # Get behavior (simplified - using metatile ID as proxy)
1243
- try:
1244
- behavior = MetatileBehavior(metatile_id & 0xFF)
1245
- except ValueError:
1246
- behavior = MetatileBehavior.NORMAL
1247
-
1248
- row.append((metatile_id, behavior))
1249
- metatiles.append(row)
1250
-
1251
- return metatiles
1252
-
1253
- def read_map_around_player(self, radius: int = 7) -> list[list[tuple[int, MetatileBehavior]]]:
1254
- """
1255
- Read the map area around the player.
1256
-
1257
- Args:
1258
- radius: How many tiles in each direction to read
1259
-
1260
- Returns:
1261
- 2D list of (metatile_id, behavior) tuples centered on player
1262
- """
1263
- if not hasattr(self, 'map_buffer_addr'):
1264
- if not self._find_map_buffer_addresses():
1265
- return []
1266
-
1267
- # Get player coordinates
1268
- player_x, player_y = self.read_coordinates()
1269
-
1270
- # Calculate the area to read (with MAP_OFFSET adjustment)
1271
- map_x = player_x + 7 # MAP_OFFSET
1272
- map_y = player_y + 7 # MAP_OFFSET
1273
-
1274
- x_start = max(0, map_x - radius)
1275
- y_start = max(0, map_y - radius)
1276
- x_end = min(self.map_width, map_x + radius + 1)
1277
- y_end = min(self.map_height, map_y + radius + 1)
1278
-
1279
- width = x_end - x_start
1280
- height = y_end - y_start
1281
-
1282
- return self.read_map_metatiles(x_start, y_start, width, height)
1283
-
1284
- def get_metatile_info_at(self, x: int, y: int) -> dict:
1285
- """
1286
- Get detailed information about a metatile at the given coordinates.
1287
-
1288
- Args:
1289
- x: X coordinate (relative to player's position)
1290
- y: Y coordinate (relative to player's position)
1291
-
1292
- Returns:
1293
- Dictionary with metatile information
1294
- """
1295
- if not hasattr(self, 'map_buffer_addr'):
1296
- if not self._find_map_buffer_addresses():
1297
- return {}
1298
-
1299
- # Get player coordinates
1300
- player_x, player_y = self.read_coordinates()
1301
-
1302
- # Calculate absolute map coordinates
1303
- map_x = player_x + 7 + x # MAP_OFFSET + relative position
1304
- map_y = player_y + 7 + y # MAP_OFFSET + relative position
1305
-
1306
- # Check bounds
1307
- if not (0 <= map_x < self.map_width and 0 <= map_y < self.map_height):
1308
- return {}
1309
-
1310
- # Calculate index in the map buffer
1311
- index = map_x + map_y * self.map_width
1312
-
1313
- # Read the metatile value (16-bit)
1314
- metatile_addr = self.map_buffer_addr + (index * 2)
1315
- metatile_value = (
1316
- (self.memory[metatile_addr + 1] << 8) |
1317
- self.memory[metatile_addr]
1318
- )
1319
-
1320
- # Extract components
1321
- metatile_id = metatile_value & 0x03FF
1322
- collision = (metatile_value & 0x0C00) >> 10
1323
- elevation = (metatile_value & 0xF000) >> 12
1324
-
1325
- # Get behavior
1326
- try:
1327
- behavior = MetatileBehavior(metatile_id & 0xFF)
1328
- except ValueError:
1329
- behavior = MetatileBehavior.NORMAL
1330
-
1331
- return {
1332
- 'metatile_id': metatile_id,
1333
- 'behavior': behavior,
1334
- 'behavior_name': behavior.name,
1335
- 'collision': collision,
1336
- 'elevation': elevation,
1337
- 'raw_value': metatile_value,
1338
- 'map_x': map_x,
1339
- 'map_y': map_y,
1340
- 'relative_x': x,
1341
- 'relative_y': y
1342
- }
1343
-
1344
- def is_tile_passable(self, x: int, y: int) -> bool:
1345
- """
1346
- Check if a tile at the given coordinates is passable.
1347
-
1348
- Args:
1349
- x: X coordinate (relative to player's position)
1350
- y: Y coordinate (relative to player's position)
1351
-
1352
- Returns:
1353
- True if the tile is passable, False otherwise
1354
- """
1355
- info = self.get_metatile_info_at(x, y)
1356
- if not info:
1357
- return False
1358
-
1359
- # Check collision value (0 = passable, 1-3 = impassable)
1360
- return info['collision'] == 0
1361
-
1362
- def is_tile_encounter_tile(self, x: int, y: int) -> bool:
1363
- """
1364
- Check if a tile can trigger wild encounters.
1365
-
1366
- Args:
1367
- x: X coordinate (relative to player's position)
1368
- y: Y coordinate (relative to player's position)
1369
-
1370
- Returns:
1371
- True if the tile can trigger encounters, False otherwise
1372
- """
1373
- info = self.get_metatile_info_at(x, y)
1374
- if not info:
1375
- return False
1376
-
1377
- behavior = info['behavior']
1378
-
1379
- # Check for encounter tiles based on behavior
1380
- encounter_behaviors = {
1381
- MetatileBehavior.TALL_GRASS,
1382
- MetatileBehavior.LONG_GRASS,
1383
- MetatileBehavior.UNUSED_05,
1384
- MetatileBehavior.DEEP_SAND,
1385
- MetatileBehavior.CAVE,
1386
- MetatileBehavior.INDOOR_ENCOUNTER,
1387
- MetatileBehavior.POND_WATER,
1388
- MetatileBehavior.INTERIOR_DEEP_WATER,
1389
- MetatileBehavior.DEEP_WATER,
1390
- MetatileBehavior.OCEAN_WATER,
1391
- MetatileBehavior.SEAWEED,
1392
- MetatileBehavior.ASHGRASS,
1393
- MetatileBehavior.FOOTPRINTS,
1394
- MetatileBehavior.SEAWEED_NO_SURFACING
1395
- }
1396
-
1397
- return behavior in encounter_behaviors
1398
-
1399
- def is_tile_surfable(self, x: int, y: int) -> bool:
1400
- """
1401
- Check if a tile can be surfed on.
1402
-
1403
- Args:
1404
- x: X coordinate (relative to player's position)
1405
- y: Y coordinate (relative to player's position)
1406
-
1407
- Returns:
1408
- True if the tile can be surfed, False otherwise
1409
- """
1410
- info = self.get_metatile_info_at(x, y)
1411
- if not info:
1412
- return False
1413
-
1414
- behavior = info['behavior']
1415
-
1416
- # Check for surfable tiles based on behavior
1417
- surfable_behaviors = {
1418
- MetatileBehavior.POND_WATER,
1419
- MetatileBehavior.INTERIOR_DEEP_WATER,
1420
- MetatileBehavior.DEEP_WATER,
1421
- MetatileBehavior.SOOTOPOLIS_DEEP_WATER,
1422
- MetatileBehavior.OCEAN_WATER,
1423
- MetatileBehavior.NO_SURFACING,
1424
- MetatileBehavior.SEAWEED,
1425
- MetatileBehavior.SEAWEED_NO_SURFACING
1426
- }
1427
-
1428
- return behavior in surfable_behaviors