synth-ai 0.2.6.dev1__py3-none-any.whl → 0.4.3__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.
Files changed (738) hide show
  1. synth_ai/__init__.py +44 -24
  2. synth_ai/__main__.py +30 -3
  3. synth_ai/cli/__init__.py +103 -48
  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 +256 -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 +53 -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/judge_schemas.py +201 -0
  63. synth_ai/cli/commands/train/judge_validation.py +305 -0
  64. synth_ai/cli/commands/train/prompt_learning_validation.py +633 -0
  65. synth_ai/cli/commands/train/validation.py +392 -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/__init__.py +1 -0
  70. synth_ai/cli/demo_apps/crafter/crafter_fft_4b.toml +55 -0
  71. synth_ai/cli/demo_apps/crafter/grpo_crafter_task_app.py +186 -0
  72. synth_ai/cli/demo_apps/crafter/rl_from_base_qwen4b.toml +74 -0
  73. synth_ai/cli/demo_apps/demo_registry.py +176 -0
  74. synth_ai/cli/demo_apps/demo_task_apps/__init__.py +7 -0
  75. synth_ai/{demos → cli/demo_apps}/demo_task_apps/core.py +117 -51
  76. synth_ai/cli/demo_apps/demo_task_apps/crafter/__init__.py +1 -0
  77. synth_ai/cli/demo_apps/demo_task_apps/crafter/configs/crafter_fft_4b.toml +53 -0
  78. synth_ai/cli/demo_apps/demo_task_apps/crafter/configs/rl_from_base_qwen4b.toml +73 -0
  79. synth_ai/cli/demo_apps/demo_task_apps/crafter/grpo_crafter_task_app.py +185 -0
  80. synth_ai/cli/demo_apps/demo_task_apps/math/_common.py +16 -0
  81. synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/app.py +2 -1
  82. synth_ai/cli/demo_apps/demo_task_apps/math/config.toml +73 -0
  83. synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/deploy_modal.py +3 -6
  84. synth_ai/cli/demo_apps/demo_task_apps/math/modal_task_app.py +738 -0
  85. synth_ai/cli/demo_apps/demo_task_apps/math/task_app_entry.py +39 -0
  86. synth_ai/cli/demo_apps/math/__init__.py +1 -0
  87. synth_ai/cli/demo_apps/math/_common.py +16 -0
  88. synth_ai/cli/demo_apps/math/app.py +38 -0
  89. synth_ai/cli/demo_apps/math/config.toml +75 -0
  90. synth_ai/cli/demo_apps/math/deploy_modal.py +54 -0
  91. synth_ai/cli/demo_apps/math/modal_task_app.py +698 -0
  92. synth_ai/cli/demo_apps/math/task_app_entry.py +53 -0
  93. synth_ai/cli/demo_apps/mipro/main.py +271 -0
  94. synth_ai/cli/demo_apps/mipro/task_app.py +922 -0
  95. synth_ai/cli/demo_apps/mipro/train_cfg.toml +92 -0
  96. synth_ai/cli/demos/__init__.py +12 -0
  97. synth_ai/cli/demos/demo.py +32 -0
  98. synth_ai/cli/demos/rl_demo.py +254 -0
  99. synth_ai/cli/deploy.py +216 -0
  100. synth_ai/cli/infra/__init__.py +14 -0
  101. synth_ai/cli/{balance.py → infra/balance.py} +21 -3
  102. synth_ai/cli/infra/mcp.py +35 -0
  103. synth_ai/cli/infra/modal_app.py +36 -0
  104. synth_ai/cli/infra/setup.py +69 -0
  105. synth_ai/cli/infra/status.py +16 -0
  106. synth_ai/cli/infra/turso.py +77 -0
  107. synth_ai/cli/lib/__init__.py +10 -0
  108. synth_ai/cli/lib/agents.py +76 -0
  109. synth_ai/cli/lib/apps/modal_app.py +101 -0
  110. synth_ai/cli/lib/apps/task_app.py +642 -0
  111. synth_ai/cli/lib/bin.py +39 -0
  112. synth_ai/cli/lib/env.py +375 -0
  113. synth_ai/cli/lib/errors.py +85 -0
  114. synth_ai/cli/lib/modal.py +315 -0
  115. synth_ai/cli/lib/plotting.py +126 -0
  116. synth_ai/cli/lib/prompt_args.py +39 -0
  117. synth_ai/cli/lib/prompts.py +284 -0
  118. synth_ai/cli/lib/sqld.py +122 -0
  119. synth_ai/cli/lib/task_app_discovery.py +884 -0
  120. synth_ai/cli/lib/task_app_env.py +295 -0
  121. synth_ai/cli/lib/train_cfgs.py +300 -0
  122. synth_ai/cli/lib/tunnel_records.py +207 -0
  123. synth_ai/cli/local/__init__.py +14 -0
  124. synth_ai/cli/local/experiment_queue/__init__.py +72 -0
  125. synth_ai/cli/local/experiment_queue/api_schemas.py +221 -0
  126. synth_ai/cli/local/experiment_queue/celery_app.py +208 -0
  127. synth_ai/cli/local/experiment_queue/config.py +128 -0
  128. synth_ai/cli/local/experiment_queue/config_utils.py +272 -0
  129. synth_ai/cli/local/experiment_queue/database.py +175 -0
  130. synth_ai/cli/local/experiment_queue/dispatcher.py +119 -0
  131. synth_ai/cli/local/experiment_queue/models.py +231 -0
  132. synth_ai/cli/local/experiment_queue/progress_info.py +160 -0
  133. synth_ai/cli/local/experiment_queue/results.py +373 -0
  134. synth_ai/cli/local/experiment_queue/schemas.py +131 -0
  135. synth_ai/cli/local/experiment_queue/service.py +344 -0
  136. synth_ai/cli/local/experiment_queue/status.py +372 -0
  137. synth_ai/cli/local/experiment_queue/status_tracker.py +360 -0
  138. synth_ai/cli/local/experiment_queue/tasks.py +1984 -0
  139. synth_ai/cli/local/experiment_queue/trace_storage.py +65 -0
  140. synth_ai/cli/local/experiment_queue/validation.py +157 -0
  141. synth_ai/cli/local/session/__init__.py +92 -0
  142. synth_ai/cli/local/session/client.py +383 -0
  143. synth_ai/cli/local/session/constants.py +63 -0
  144. synth_ai/cli/local/session/exceptions.py +105 -0
  145. synth_ai/cli/local/session/manager.py +139 -0
  146. synth_ai/cli/local/session/models.py +89 -0
  147. synth_ai/cli/local/session/query.py +110 -0
  148. synth_ai/cli/root.py +150 -102
  149. synth_ai/cli/task_apps/__init__.py +37 -0
  150. synth_ai/cli/task_apps/commands.py +3145 -0
  151. synth_ai/cli/task_apps/deploy.py +7 -0
  152. synth_ai/cli/task_apps/list.py +26 -0
  153. synth_ai/cli/task_apps/main.py +36 -0
  154. synth_ai/cli/task_apps/modal_serve.py +11 -0
  155. synth_ai/cli/task_apps/serve.py +11 -0
  156. synth_ai/cli/training/__init__.py +8 -0
  157. synth_ai/cli/training/train.py +5 -0
  158. synth_ai/cli/training/train_cfg.py +34 -0
  159. synth_ai/cli/{watch.py → training/watch.py} +13 -18
  160. synth_ai/cli/turso.py +52 -0
  161. synth_ai/cli/utils/__init__.py +8 -0
  162. synth_ai/cli/utils/experiments.py +235 -0
  163. synth_ai/cli/utils/queue.py +504 -0
  164. synth_ai/cli/{recent.py → utils/recent.py} +13 -7
  165. synth_ai/cli/{traces.py → utils/traces.py} +9 -5
  166. synth_ai/contracts/__init__.py +67 -0
  167. synth_ai/core/__init__.py +100 -0
  168. synth_ai/core/_utils/__init__.py +54 -0
  169. synth_ai/core/_utils/base_url.py +10 -0
  170. synth_ai/core/_utils/http.py +10 -0
  171. synth_ai/core/_utils/prompts.py +14 -0
  172. synth_ai/core/_utils/task_app_state.py +12 -0
  173. synth_ai/core/_utils/user_config.py +10 -0
  174. synth_ai/core/apps/common.py +116 -0
  175. synth_ai/core/auth.py +95 -0
  176. synth_ai/core/cfgs.py +240 -0
  177. synth_ai/core/config/__init__.py +16 -0
  178. synth_ai/core/config/base.py +168 -0
  179. synth_ai/core/config/resolver.py +89 -0
  180. synth_ai/core/env.py +231 -0
  181. synth_ai/core/errors.py +126 -0
  182. synth_ai/core/http.py +230 -0
  183. synth_ai/core/integrations/__init__.py +11 -0
  184. synth_ai/core/integrations/cloudflare.py +1710 -0
  185. synth_ai/core/integrations/mcp/__init__.py +6 -0
  186. synth_ai/core/integrations/mcp/__main__.py +8 -0
  187. synth_ai/core/integrations/mcp/claude.py +36 -0
  188. synth_ai/core/integrations/mcp/main.py +254 -0
  189. synth_ai/core/integrations/mcp/setup.py +100 -0
  190. synth_ai/core/integrations/modal.py +277 -0
  191. synth_ai/core/json.py +72 -0
  192. synth_ai/core/log_filter.py +99 -0
  193. synth_ai/core/logging.py +82 -0
  194. synth_ai/core/paths.py +107 -0
  195. synth_ai/core/pricing.py +109 -0
  196. synth_ai/core/process.py +233 -0
  197. synth_ai/core/ssl.py +25 -0
  198. synth_ai/core/storage/__init__.py +71 -0
  199. synth_ai/core/task_app_state.py +318 -0
  200. synth_ai/core/telemetry.py +282 -0
  201. synth_ai/{tracing_v3 → core/tracing_v3}/__init__.py +5 -1
  202. synth_ai/{tracing_v3 → core/tracing_v3}/abstractions.py +21 -4
  203. synth_ai/core/tracing_v3/config.py +229 -0
  204. synth_ai/core/tracing_v3/constants.py +21 -0
  205. synth_ai/{tracing_v3 → core/tracing_v3}/db_config.py +42 -29
  206. synth_ai/{tracing_v3 → core/tracing_v3}/decorators.py +80 -45
  207. synth_ai/{tracing_v3 → core/tracing_v3}/examples/basic_usage.py +15 -9
  208. synth_ai/{tracing_v3 → core/tracing_v3}/hooks.py +6 -4
  209. synth_ai/{tracing_v3 → core/tracing_v3}/llm_call_record_helpers.py +161 -61
  210. synth_ai/{tracing_v3 → core/tracing_v3}/migration_helper.py +1 -2
  211. synth_ai/{tracing_v3 → core/tracing_v3}/replica_sync.py +12 -7
  212. synth_ai/core/tracing_v3/serialization.py +130 -0
  213. synth_ai/{tracing_v3 → core/tracing_v3}/session_tracer.py +88 -21
  214. synth_ai/{tracing_v3 → core/tracing_v3}/storage/base.py +99 -12
  215. synth_ai/core/tracing_v3/storage/config.py +109 -0
  216. synth_ai/{tracing_v3 → core/tracing_v3}/storage/factory.py +11 -9
  217. synth_ai/{tracing_v3 → core/tracing_v3}/storage/utils.py +15 -11
  218. synth_ai/core/tracing_v3/trace_utils.py +326 -0
  219. synth_ai/core/tracing_v3/turso/__init__.py +12 -0
  220. synth_ai/core/tracing_v3/turso/daemon.py +278 -0
  221. synth_ai/{tracing_v3 → core/tracing_v3}/turso/models.py +7 -3
  222. synth_ai/core/tracing_v3/turso/native_manager.py +1385 -0
  223. synth_ai/{tracing_v3 → core/tracing_v3}/utils.py +5 -4
  224. synth_ai/core/urls.py +18 -0
  225. synth_ai/core/user_config.py +137 -0
  226. synth_ai/core/uvicorn.py +222 -0
  227. synth_ai/data/__init__.py +83 -0
  228. synth_ai/data/enums.py +123 -0
  229. synth_ai/data/rewards.py +152 -0
  230. synth_ai/data/traces.py +35 -0
  231. synth_ai/products/__init__.py +6 -0
  232. synth_ai/products/graph_evolve/__init__.py +46 -0
  233. synth_ai/products/graph_evolve/client.py +226 -0
  234. synth_ai/products/graph_evolve/config.py +591 -0
  235. synth_ai/products/graph_evolve/converters/__init__.py +42 -0
  236. synth_ai/products/graph_evolve/converters/openai_sft.py +484 -0
  237. synth_ai/products/graph_evolve/examples/hotpotqa/config.toml +109 -0
  238. synth_ai/products/graph_evolve/run.py +222 -0
  239. synth_ai/products/graph_gepa/__init__.py +23 -0
  240. synth_ai/products/graph_gepa/converters/__init__.py +19 -0
  241. synth_ai/products/graph_gepa/converters/openai_sft.py +29 -0
  242. synth_ai/sdk/__init__.py +123 -0
  243. synth_ai/sdk/api/__init__.py +1 -0
  244. synth_ai/sdk/api/models/supported.py +514 -0
  245. synth_ai/sdk/api/research_agent/__init__.py +296 -0
  246. synth_ai/sdk/api/train/__init__.py +85 -0
  247. synth_ai/sdk/api/train/builders.py +895 -0
  248. synth_ai/sdk/api/train/cli.py +2199 -0
  249. synth_ai/sdk/api/train/config_finder.py +267 -0
  250. synth_ai/sdk/api/train/configs/__init__.py +65 -0
  251. synth_ai/sdk/api/train/configs/prompt_learning.py +1706 -0
  252. synth_ai/sdk/api/train/configs/rl.py +187 -0
  253. synth_ai/sdk/api/train/configs/sft.py +99 -0
  254. synth_ai/sdk/api/train/configs/shared.py +81 -0
  255. synth_ai/sdk/api/train/context_learning.py +312 -0
  256. synth_ai/sdk/api/train/env_resolver.py +418 -0
  257. synth_ai/sdk/api/train/graph_validators.py +216 -0
  258. synth_ai/sdk/api/train/graphgen.py +984 -0
  259. synth_ai/sdk/api/train/graphgen_models.py +823 -0
  260. synth_ai/sdk/api/train/graphgen_validators.py +109 -0
  261. synth_ai/sdk/api/train/local_api.py +10 -0
  262. synth_ai/sdk/api/train/pollers.py +124 -0
  263. synth_ai/sdk/api/train/progress/__init__.py +97 -0
  264. synth_ai/sdk/api/train/progress/dataclasses.py +569 -0
  265. synth_ai/sdk/api/train/progress/events.py +326 -0
  266. synth_ai/sdk/api/train/progress/results.py +428 -0
  267. synth_ai/sdk/api/train/progress/tracker.py +641 -0
  268. synth_ai/sdk/api/train/prompt_learning.py +469 -0
  269. synth_ai/sdk/api/train/rl.py +441 -0
  270. synth_ai/sdk/api/train/sft.py +396 -0
  271. synth_ai/sdk/api/train/summary.py +522 -0
  272. synth_ai/sdk/api/train/supported_algos.py +147 -0
  273. synth_ai/sdk/api/train/task_app.py +351 -0
  274. synth_ai/sdk/api/train/utils.py +279 -0
  275. synth_ai/sdk/api/train/validators.py +2424 -0
  276. synth_ai/sdk/graphs/__init__.py +15 -0
  277. synth_ai/sdk/graphs/completions.py +570 -0
  278. synth_ai/{inference → sdk/inference}/__init__.py +0 -1
  279. synth_ai/sdk/inference/client.py +128 -0
  280. synth_ai/sdk/jobs/__init__.py +16 -0
  281. synth_ai/sdk/jobs/client.py +371 -0
  282. synth_ai/sdk/judging/__init__.py +14 -0
  283. synth_ai/sdk/judging/base.py +24 -0
  284. synth_ai/sdk/judging/client.py +40 -0
  285. synth_ai/sdk/judging/schemas.py +222 -0
  286. synth_ai/sdk/judging/types.py +42 -0
  287. synth_ai/sdk/learning/__init__.py +99 -0
  288. synth_ai/sdk/learning/algorithms.py +14 -0
  289. synth_ai/{learning → sdk/learning}/client.py +121 -30
  290. synth_ai/sdk/learning/config.py +5 -0
  291. synth_ai/{learning → sdk/learning}/constants.py +0 -2
  292. synth_ai/sdk/learning/context_learning_client.py +531 -0
  293. synth_ai/sdk/learning/context_learning_types.py +292 -0
  294. synth_ai/sdk/learning/ft_client.py +7 -0
  295. synth_ai/{learning → sdk/learning}/health.py +15 -9
  296. synth_ai/{learning → sdk/learning}/jobs.py +44 -47
  297. synth_ai/sdk/learning/prompt_extraction.py +334 -0
  298. synth_ai/sdk/learning/prompt_learning_client.py +455 -0
  299. synth_ai/sdk/learning/prompt_learning_types.py +186 -0
  300. synth_ai/{rl → sdk/learning/rl}/__init__.py +13 -8
  301. synth_ai/{learning/rl_client.py → sdk/learning/rl/client.py} +89 -77
  302. synth_ai/sdk/learning/rl/config.py +31 -0
  303. synth_ai/{rl → sdk/learning/rl}/contracts.py +5 -14
  304. synth_ai/{rl → sdk/learning/rl}/env_keys.py +45 -16
  305. synth_ai/sdk/learning/rl/secrets.py +13 -0
  306. synth_ai/sdk/learning/rl_client.py +5 -0
  307. synth_ai/sdk/learning/sft/__init__.py +29 -0
  308. synth_ai/sdk/learning/sft/client.py +95 -0
  309. synth_ai/sdk/learning/sft/config.py +270 -0
  310. synth_ai/sdk/learning/sft/data.py +698 -0
  311. synth_ai/sdk/learning/sse.py +57 -0
  312. synth_ai/sdk/learning/validators.py +52 -0
  313. synth_ai/sdk/localapi/__init__.py +40 -0
  314. synth_ai/sdk/localapi/apps/__init__.py +28 -0
  315. synth_ai/sdk/localapi/client.py +10 -0
  316. synth_ai/sdk/localapi/contracts.py +10 -0
  317. synth_ai/sdk/localapi/helpers.py +519 -0
  318. synth_ai/sdk/localapi/rollouts.py +87 -0
  319. synth_ai/sdk/localapi/server.py +29 -0
  320. synth_ai/sdk/localapi/template.py +70 -0
  321. synth_ai/sdk/streaming/__init__.py +35 -0
  322. synth_ai/sdk/streaming/config.py +94 -0
  323. synth_ai/sdk/streaming/handlers.py +1997 -0
  324. synth_ai/sdk/streaming/streamer.py +713 -0
  325. synth_ai/sdk/streaming/types.py +112 -0
  326. synth_ai/sdk/task/__init__.py +164 -0
  327. synth_ai/sdk/task/apps/__init__.py +169 -0
  328. synth_ai/sdk/task/auth.py +165 -0
  329. synth_ai/sdk/task/client.py +175 -0
  330. synth_ai/sdk/task/config.py +257 -0
  331. synth_ai/sdk/task/contracts.py +219 -0
  332. synth_ai/sdk/task/datasets.py +108 -0
  333. synth_ai/sdk/task/errors.py +50 -0
  334. synth_ai/sdk/task/health.py +34 -0
  335. synth_ai/sdk/task/in_process.py +1190 -0
  336. synth_ai/sdk/task/in_process_runner.py +314 -0
  337. synth_ai/sdk/task/inference_api.py +299 -0
  338. synth_ai/sdk/task/json.py +111 -0
  339. synth_ai/sdk/task/proxy.py +287 -0
  340. synth_ai/sdk/task/rubrics/__init__.py +55 -0
  341. synth_ai/sdk/task/rubrics/loaders.py +156 -0
  342. synth_ai/sdk/task/rubrics/models.py +57 -0
  343. synth_ai/sdk/task/rubrics/scoring.py +116 -0
  344. synth_ai/sdk/task/rubrics/strict.py +149 -0
  345. synth_ai/sdk/task/rubrics.py +219 -0
  346. synth_ai/sdk/task/server.py +631 -0
  347. synth_ai/sdk/task/trace_correlation_helpers.py +539 -0
  348. synth_ai/sdk/task/tracing_utils.py +95 -0
  349. synth_ai/sdk/task/validators.py +441 -0
  350. synth_ai/sdk/task/vendors.py +59 -0
  351. synth_ai/sdk/training/__init__.py +102 -0
  352. synth_ai/sdk/tunnels/__init__.py +83 -0
  353. synth_ai/sdk/tunnels/cleanup.py +83 -0
  354. synth_ai/sdk/tunnels/ports.py +120 -0
  355. synth_ai/utils/__init__.py +213 -0
  356. synth_ai-0.4.3.dist-info/METADATA +262 -0
  357. synth_ai-0.4.3.dist-info/RECORD +370 -0
  358. {synth_ai-0.2.6.dev1.dist-info → synth_ai-0.4.3.dist-info}/entry_points.txt +0 -1
  359. synth_ai/cli/calc.py +0 -69
  360. synth_ai/cli/demo.py +0 -131
  361. synth_ai/cli/legacy_root_backup.py +0 -470
  362. synth_ai/cli/man.py +0 -106
  363. synth_ai/cli/rl_demo.py +0 -137
  364. synth_ai/cli/status.py +0 -133
  365. synth_ai/config/base_url.py +0 -98
  366. synth_ai/core/experiment.py +0 -15
  367. synth_ai/core/system.py +0 -15
  368. synth_ai/demos/core/__init__.py +0 -1
  369. synth_ai/demos/core/cli.py +0 -685
  370. synth_ai/demos/demo_task_apps/__init__.py +0 -1
  371. synth_ai/demos/demo_task_apps/math/config.toml +0 -44
  372. synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +0 -22
  373. synth_ai/environments/__init__.py +0 -31
  374. synth_ai/environments/environment/__init__.py +0 -1
  375. synth_ai/environments/environment/artifacts/__init__.py +0 -1
  376. synth_ai/environments/environment/artifacts/base.py +0 -52
  377. synth_ai/environments/environment/core.py +0 -67
  378. synth_ai/environments/environment/db/__init__.py +0 -1
  379. synth_ai/environments/environment/db/sqlite.py +0 -45
  380. synth_ai/environments/environment/registry.py +0 -233
  381. synth_ai/environments/environment/resources/sqlite.py +0 -45
  382. synth_ai/environments/environment/results.py +0 -1
  383. synth_ai/environments/environment/rewards/__init__.py +0 -1
  384. synth_ai/environments/environment/rewards/core.py +0 -29
  385. synth_ai/environments/environment/shared_engine.py +0 -26
  386. synth_ai/environments/environment/tools/__init__.py +0 -200
  387. synth_ai/environments/examples/__init__.py +0 -1
  388. synth_ai/environments/examples/bandit/__init__.py +0 -33
  389. synth_ai/environments/examples/bandit/engine.py +0 -294
  390. synth_ai/environments/examples/bandit/environment.py +0 -194
  391. synth_ai/environments/examples/bandit/taskset.py +0 -200
  392. synth_ai/environments/examples/crafter_classic/__init__.py +0 -8
  393. synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -250
  394. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -59
  395. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -152
  396. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -24
  397. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -1194
  398. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -56
  399. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -32
  400. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -724
  401. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -384
  402. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -53
  403. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -178
  404. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -222
  405. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -183
  406. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -210
  407. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -206
  408. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -49
  409. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -64
  410. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -88
  411. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -77
  412. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -324
  413. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -580
  414. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -362
  415. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -49
  416. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -332
  417. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -97
  418. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -217
  419. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -87
  420. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -88
  421. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -195
  422. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -400
  423. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -195
  424. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -56
  425. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +0 -858
  426. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -52
  427. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -874
  428. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -1412
  429. synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -216
  430. synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -296
  431. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -58
  432. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -464
  433. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -152
  434. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -51
  435. synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -1412
  436. synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -112
  437. synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -203
  438. synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -305
  439. synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -126
  440. synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -94
  441. synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -142
  442. synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -26
  443. synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -984
  444. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -724
  445. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -386
  446. synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -205
  447. synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -150
  448. synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -283
  449. synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -280
  450. synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -456
  451. synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -166
  452. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -102
  453. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -128
  454. synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -655
  455. synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -202
  456. synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -166
  457. synth_ai/environments/examples/crafter_classic/config_logging.py +0 -111
  458. synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
  459. synth_ai/environments/examples/crafter_classic/engine.py +0 -579
  460. synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -64
  461. synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -6
  462. synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -75
  463. synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -267
  464. synth_ai/environments/examples/crafter_classic/environment.py +0 -404
  465. synth_ai/environments/examples/crafter_classic/taskset.py +0 -233
  466. synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -228
  467. synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -299
  468. synth_ai/environments/examples/crafter_custom/__init__.py +0 -4
  469. synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -1
  470. synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -202
  471. synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -7
  472. synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -182
  473. synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -8
  474. synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -269
  475. synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -262
  476. synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -417
  477. synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -187
  478. synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -118
  479. synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -373
  480. synth_ai/environments/examples/crafter_custom/environment.py +0 -312
  481. synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -159
  482. synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -158
  483. synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -71
  484. synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -105
  485. synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -119
  486. synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -52
  487. synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -305
  488. synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -156
  489. synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -281
  490. synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -25
  491. synth_ai/environments/examples/enron/engine.py +0 -295
  492. synth_ai/environments/examples/enron/environment.py +0 -166
  493. synth_ai/environments/examples/enron/taskset.py +0 -112
  494. synth_ai/environments/examples/enron/units/keyword_stats.py +0 -112
  495. synth_ai/environments/examples/minigrid/__init__.py +0 -48
  496. synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -1188
  497. synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -48
  498. synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -562
  499. synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -221
  500. synth_ai/environments/examples/minigrid/engine.py +0 -589
  501. synth_ai/environments/examples/minigrid/environment.py +0 -274
  502. synth_ai/environments/examples/minigrid/environment_mapping.py +0 -242
  503. synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -417
  504. synth_ai/environments/examples/minigrid/taskset.py +0 -583
  505. synth_ai/environments/examples/nethack/__init__.py +0 -7
  506. synth_ai/environments/examples/nethack/achievements.py +0 -337
  507. synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -981
  508. synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -74
  509. synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -831
  510. synth_ai/environments/examples/nethack/engine.py +0 -739
  511. synth_ai/environments/examples/nethack/environment.py +0 -256
  512. synth_ai/environments/examples/nethack/helpers/__init__.py +0 -41
  513. synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -301
  514. synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -402
  515. synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -433
  516. synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -200
  517. synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -269
  518. synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -308
  519. synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -431
  520. synth_ai/environments/examples/nethack/taskset.py +0 -323
  521. synth_ai/environments/examples/red/__init__.py +0 -7
  522. synth_ai/environments/examples/red/agent_demos/__init__.py +0 -1
  523. synth_ai/environments/examples/red/config_logging.py +0 -110
  524. synth_ai/environments/examples/red/engine.py +0 -694
  525. synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -1
  526. synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -28
  527. synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -276
  528. synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -142
  529. synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -57
  530. synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -284
  531. synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -150
  532. synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -138
  533. synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -57
  534. synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -331
  535. synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -121
  536. synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -559
  537. synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -313
  538. synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -148
  539. synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -247
  540. synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -368
  541. synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -140
  542. synth_ai/environments/examples/red/environment.py +0 -238
  543. synth_ai/environments/examples/red/taskset.py +0 -79
  544. synth_ai/environments/examples/red/units/__init__.py +0 -1
  545. synth_ai/environments/examples/sokoban/__init__.py +0 -1
  546. synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -899
  547. synth_ai/environments/examples/sokoban/engine.py +0 -678
  548. synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -1
  549. synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -657
  550. synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -18
  551. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -3
  552. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -131
  553. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -370
  554. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -332
  555. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -306
  556. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -67
  557. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -115
  558. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -123
  559. synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -394
  560. synth_ai/environments/examples/sokoban/environment.py +0 -229
  561. synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -440
  562. synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -312
  563. synth_ai/environments/examples/sokoban/taskset.py +0 -428
  564. synth_ai/environments/examples/sokoban/units/astar_common.py +0 -95
  565. synth_ai/environments/examples/tictactoe/__init__.py +0 -1
  566. synth_ai/environments/examples/tictactoe/engine.py +0 -368
  567. synth_ai/environments/examples/tictactoe/environment.py +0 -240
  568. synth_ai/environments/examples/tictactoe/taskset.py +0 -215
  569. synth_ai/environments/examples/verilog/__init__.py +0 -10
  570. synth_ai/environments/examples/verilog/engine.py +0 -329
  571. synth_ai/environments/examples/verilog/environment.py +0 -350
  572. synth_ai/environments/examples/verilog/taskset.py +0 -420
  573. synth_ai/environments/examples/wordle/__init__.py +0 -29
  574. synth_ai/environments/examples/wordle/engine.py +0 -398
  575. synth_ai/environments/examples/wordle/environment.py +0 -159
  576. synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -75
  577. synth_ai/environments/examples/wordle/taskset.py +0 -230
  578. synth_ai/environments/reproducibility/core.py +0 -42
  579. synth_ai/environments/reproducibility/helpers.py +0 -0
  580. synth_ai/environments/reproducibility/tree.py +0 -364
  581. synth_ai/environments/service/app.py +0 -91
  582. synth_ai/environments/service/core_routes.py +0 -1020
  583. synth_ai/environments/service/external_registry.py +0 -56
  584. synth_ai/environments/service/registry.py +0 -9
  585. synth_ai/environments/stateful/__init__.py +0 -1
  586. synth_ai/environments/stateful/core.py +0 -163
  587. synth_ai/environments/stateful/engine.py +0 -21
  588. synth_ai/environments/stateful/state.py +0 -7
  589. synth_ai/environments/tasks/api.py +0 -19
  590. synth_ai/environments/tasks/core.py +0 -80
  591. synth_ai/environments/tasks/filters.py +0 -41
  592. synth_ai/environments/tasks/utils.py +0 -91
  593. synth_ai/environments/v0_observability/history.py +0 -3
  594. synth_ai/environments/v0_observability/log.py +0 -2
  595. synth_ai/evals/base.py +0 -15
  596. synth_ai/experimental/synth_oss.py +0 -446
  597. synth_ai/http.py +0 -102
  598. synth_ai/inference/client.py +0 -20
  599. synth_ai/install_sqld.sh +0 -40
  600. synth_ai/jobs/client.py +0 -246
  601. synth_ai/learning/__init__.py +0 -24
  602. synth_ai/learning/config.py +0 -43
  603. synth_ai/learning/filtering.py +0 -0
  604. synth_ai/learning/ft_client.py +0 -59
  605. synth_ai/learning/offline/dpo.py +0 -0
  606. synth_ai/learning/offline/providers.py +0 -7
  607. synth_ai/learning/offline/sft.py +0 -0
  608. synth_ai/learning/offline/shared.py +0 -0
  609. synth_ai/learning/online/grpo.py +0 -0
  610. synth_ai/learning/online/irft.py +0 -0
  611. synth_ai/learning/prompts/banking77_injection_eval.py +0 -168
  612. synth_ai/learning/prompts/gepa.py +0 -0
  613. synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -213
  614. synth_ai/learning/prompts/mipro.py +0 -289
  615. synth_ai/learning/prompts/random_search.py +0 -246
  616. synth_ai/learning/prompts/run_mipro_banking77.py +0 -172
  617. synth_ai/learning/prompts/run_random_search_banking77.py +0 -324
  618. synth_ai/learning/sse.py +0 -58
  619. synth_ai/learning/validators.py +0 -48
  620. synth_ai/lm/__init__.py +0 -51
  621. synth_ai/lm/caching/constants.py +0 -6
  622. synth_ai/lm/caching/dbs.py +0 -0
  623. synth_ai/lm/caching/ephemeral.py +0 -102
  624. synth_ai/lm/caching/handler.py +0 -137
  625. synth_ai/lm/caching/initialize.py +0 -11
  626. synth_ai/lm/caching/persistent.py +0 -114
  627. synth_ai/lm/config.py +0 -110
  628. synth_ai/lm/constants.py +0 -32
  629. synth_ai/lm/core/__init__.py +0 -8
  630. synth_ai/lm/core/all.py +0 -73
  631. synth_ai/lm/core/exceptions.py +0 -7
  632. synth_ai/lm/core/main.py +0 -319
  633. synth_ai/lm/core/main_v3.py +0 -594
  634. synth_ai/lm/core/synth_models.py +0 -48
  635. synth_ai/lm/core/vendor_clients.py +0 -188
  636. synth_ai/lm/cost/__init__.py +0 -0
  637. synth_ai/lm/cost/monitor.py +0 -1
  638. synth_ai/lm/cost/statefulness.py +0 -1
  639. synth_ai/lm/injection.py +0 -80
  640. synth_ai/lm/overrides.py +0 -206
  641. synth_ai/lm/provider_support/__init__.py +0 -8
  642. synth_ai/lm/provider_support/anthropic.py +0 -972
  643. synth_ai/lm/provider_support/openai.py +0 -1139
  644. synth_ai/lm/provider_support/suppress_logging.py +0 -31
  645. synth_ai/lm/structured_outputs/__init__.py +0 -0
  646. synth_ai/lm/structured_outputs/handler.py +0 -440
  647. synth_ai/lm/structured_outputs/inject.py +0 -297
  648. synth_ai/lm/structured_outputs/rehabilitate.py +0 -185
  649. synth_ai/lm/tools/__init__.py +0 -3
  650. synth_ai/lm/tools/base.py +0 -172
  651. synth_ai/lm/unified_interface.py +0 -202
  652. synth_ai/lm/vendors/__init__.py +0 -0
  653. synth_ai/lm/vendors/base.py +0 -81
  654. synth_ai/lm/vendors/core/__init__.py +0 -0
  655. synth_ai/lm/vendors/core/anthropic_api.py +0 -387
  656. synth_ai/lm/vendors/core/gemini_api.py +0 -292
  657. synth_ai/lm/vendors/core/mistral_api.py +0 -322
  658. synth_ai/lm/vendors/core/openai_api.py +0 -220
  659. synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
  660. synth_ai/lm/vendors/local/__init__.py +0 -0
  661. synth_ai/lm/vendors/local/ollama.py +0 -0
  662. synth_ai/lm/vendors/openai_standard.py +0 -780
  663. synth_ai/lm/vendors/openai_standard_responses.py +0 -256
  664. synth_ai/lm/vendors/retries.py +0 -22
  665. synth_ai/lm/vendors/supported/__init__.py +0 -0
  666. synth_ai/lm/vendors/supported/custom_endpoint.py +0 -417
  667. synth_ai/lm/vendors/supported/deepseek.py +0 -69
  668. synth_ai/lm/vendors/supported/grok.py +0 -75
  669. synth_ai/lm/vendors/supported/groq.py +0 -16
  670. synth_ai/lm/vendors/supported/ollama.py +0 -15
  671. synth_ai/lm/vendors/supported/openrouter.py +0 -74
  672. synth_ai/lm/vendors/supported/together.py +0 -11
  673. synth_ai/lm/vendors/synth_client.py +0 -808
  674. synth_ai/lm/warmup.py +0 -186
  675. synth_ai/rl/secrets.py +0 -19
  676. synth_ai/scripts/verify_rewards.py +0 -100
  677. synth_ai/task/__init__.py +0 -10
  678. synth_ai/task/contracts.py +0 -120
  679. synth_ai/task/health.py +0 -28
  680. synth_ai/task/validators.py +0 -12
  681. synth_ai/tracing/__init__.py +0 -30
  682. synth_ai/tracing_v1/__init__.py +0 -33
  683. synth_ai/tracing_v3/config.py +0 -84
  684. synth_ai/tracing_v3/storage/config.py +0 -62
  685. synth_ai/tracing_v3/turso/__init__.py +0 -25
  686. synth_ai/tracing_v3/turso/daemon.py +0 -144
  687. synth_ai/tracing_v3/turso/manager.py +0 -760
  688. synth_ai/v0/tracing/__init__.py +0 -0
  689. synth_ai/v0/tracing/abstractions.py +0 -224
  690. synth_ai/v0/tracing/base_client.py +0 -91
  691. synth_ai/v0/tracing/client_manager.py +0 -131
  692. synth_ai/v0/tracing/config.py +0 -140
  693. synth_ai/v0/tracing/context.py +0 -146
  694. synth_ai/v0/tracing/decorators.py +0 -680
  695. synth_ai/v0/tracing/events/__init__.py +0 -0
  696. synth_ai/v0/tracing/events/manage.py +0 -147
  697. synth_ai/v0/tracing/events/scope.py +0 -86
  698. synth_ai/v0/tracing/events/store.py +0 -228
  699. synth_ai/v0/tracing/immediate_client.py +0 -151
  700. synth_ai/v0/tracing/local.py +0 -18
  701. synth_ai/v0/tracing/log_client_base.py +0 -73
  702. synth_ai/v0/tracing/retry_queue.py +0 -186
  703. synth_ai/v0/tracing/trackers.py +0 -515
  704. synth_ai/v0/tracing/upload.py +0 -510
  705. synth_ai/v0/tracing/utils.py +0 -9
  706. synth_ai/v0/tracing_v1/__init__.py +0 -16
  707. synth_ai/v0/tracing_v1/abstractions.py +0 -224
  708. synth_ai/v0/tracing_v1/base_client.py +0 -91
  709. synth_ai/v0/tracing_v1/client_manager.py +0 -131
  710. synth_ai/v0/tracing_v1/config.py +0 -140
  711. synth_ai/v0/tracing_v1/context.py +0 -146
  712. synth_ai/v0/tracing_v1/decorators.py +0 -701
  713. synth_ai/v0/tracing_v1/events/__init__.py +0 -0
  714. synth_ai/v0/tracing_v1/events/manage.py +0 -147
  715. synth_ai/v0/tracing_v1/events/scope.py +0 -86
  716. synth_ai/v0/tracing_v1/events/store.py +0 -228
  717. synth_ai/v0/tracing_v1/immediate_client.py +0 -151
  718. synth_ai/v0/tracing_v1/local.py +0 -18
  719. synth_ai/v0/tracing_v1/log_client_base.py +0 -73
  720. synth_ai/v0/tracing_v1/retry_queue.py +0 -186
  721. synth_ai/v0/tracing_v1/trackers.py +0 -515
  722. synth_ai/v0/tracing_v1/upload.py +0 -525
  723. synth_ai/v0/tracing_v1/utils.py +0 -9
  724. synth_ai/zyk/__init__.py +0 -30
  725. synth_ai-0.2.6.dev1.dist-info/METADATA +0 -106
  726. synth_ai-0.2.6.dev1.dist-info/RECORD +0 -416
  727. /synth_ai/{demos → cli/demo_apps}/demo_task_apps/math/__init__.py +0 -0
  728. /synth_ai/{lm/caching → core/apps}/__init__.py +0 -0
  729. /synth_ai/{tracing_v3 → core/tracing_v3}/lm_call_record_abstractions.py +0 -0
  730. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/__init__.py +0 -0
  731. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/exceptions.py +0 -0
  732. /synth_ai/{tracing_v3 → core/tracing_v3}/storage/types.py +0 -0
  733. /synth_ai/{compound/cais.py → py.typed} +0 -0
  734. /synth_ai/{learning → sdk/learning}/core.py +0 -0
  735. /synth_ai/{learning → sdk/learning}/gateway.py +0 -0
  736. {synth_ai-0.2.6.dev1.dist-info → synth_ai-0.4.3.dist-info}/WHEEL +0 -0
  737. {synth_ai-0.2.6.dev1.dist-info → synth_ai-0.4.3.dist-info}/licenses/LICENSE +0 -0
  738. {synth_ai-0.2.6.dev1.dist-info → synth_ai-0.4.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,370 @@
1
+ synth_ai/__init__.py,sha256=UBh1h_6FviRAQWXaDH9-7MIOgs88xj9qgFjpts32sbE,1887
2
+ synth_ai/__main__.py,sha256=niiyZIVIiIgyyUsQ40hKs2cLWkH1gHcoI7t3N2rxH3s,1039
3
+ synth_ai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ synth_ai/cli/__init__.py,sha256=j-F8E-JimliKu6Tytip0xh7qIEx7eyrUdEWOvBezac8,4431
5
+ synth_ai/cli/__main__.py,sha256=-lNeAKXRyZ6swCqmFHeKkmWTyamO-2Y0G2b0WKjCtMY,1038
6
+ synth_ai/cli/deploy.py,sha256=xfaCQ3JHthAj-V1MQrS1uGgkmQJvDDh_TolBGJTLD24,6751
7
+ synth_ai/cli/root.py,sha256=VJaORaCBjvVTTthbN8XX1TCjUw7hcAEB6eDLc6D_eYI,11539
8
+ synth_ai/cli/turso.py,sha256=kjcZj_IAi-8MhMtU-WwsUNl8DUAOpUGmlC2-1dAYR6k,1625
9
+ synth_ai/cli/_internal/__init__.py,sha256=oYR5XFIj1QPPlfqNVdS8KcCJ4mXCdXUU-du_KrEmbUs,82
10
+ synth_ai/cli/_internal/modal_wrapper.py,sha256=bJJtpT7sOCRptCSDyZXDxa24xyrozVekmaJKYQ_f4LQ,789
11
+ synth_ai/cli/_internal/storage.py,sha256=0VjIR8hsxdhRD90xy6IMwGkQu53RwUF8H_aFPsMmXXE,765
12
+ synth_ai/cli/_internal/typer_patch.py,sha256=TQPjyym1ijrH-xvIl1XHyYrtPSF-kFqrWW1DQ-AynSI,1558
13
+ synth_ai/cli/_internal/validate_task_app.py,sha256=tuOFBnoG-ktIe4fjtBgCm8A1_q_C-EMrVLzZO8fXfd8,958
14
+ synth_ai/cli/agents/__init__.py,sha256=wJv_ODuKXmU4GkdnXaWqMMzp9oqCURFMpYzujbqnl9E,413
15
+ synth_ai/cli/agents/claude.py,sha256=9Gysjplkab42H1XAEwAt2EkYNXQrc5oyyFXd2k6mtdA,2289
16
+ synth_ai/cli/agents/codex.py,sha256=4VDyD2GWy4wWFBqM37d4jaPHID2mxa2jrCFYUIpOzu0,9678
17
+ synth_ai/cli/agents/opencode.py,sha256=wLEhXkHh93qXKz83klyq8mZn37_9UreM2ik_Gf2aFuA,9299
18
+ synth_ai/cli/commands/__init__.py,sha256=vLSvCU2T9YAuBV4Xp8byLJhucxuSzjT8Daa2cbxqYPU,348
19
+ synth_ai/cli/commands/artifacts/__init__.py,sha256=NKrrL3y0wn5kkIzC4Or_J90Wa9302i0WAHOxPhprvUQ,310
20
+ synth_ai/cli/commands/artifacts/client.py,sha256=mIyq9WWl5c8ZY67rdcRG2CWNHK8XqiWOaTbN2OMjibM,4582
21
+ synth_ai/cli/commands/artifacts/config.py,sha256=lMrOa81iBzx774kDTyYYaBia_YtlPPBKb6IgDWu1aLE,1395
22
+ synth_ai/cli/commands/artifacts/core.py,sha256=S1ICqjqusbTbxSM2ANabxMYb5qvCHtU1TluCFTgLcGU,673
23
+ synth_ai/cli/commands/artifacts/download.py,sha256=QDCOPc-066-aM1M_qN-MyiV_L8meP9Ex1BKpinIoufI,6623
24
+ synth_ai/cli/commands/artifacts/export.py,sha256=k4h2hKZ112Gfe-S4ayb10urY23avgnfyBtyWN9hXkgU,6684
25
+ synth_ai/cli/commands/artifacts/list.py,sha256=_OktWZ3A-cU2sYueMCyL9N-OZH0fahk4yEjRKY1RuEg,4783
26
+ synth_ai/cli/commands/artifacts/parsing.py,sha256=gw04bTbMqX757mvgGC8TqcY0lfGwjAm_YTm4VamXAWk,7318
27
+ synth_ai/cli/commands/artifacts/show.py,sha256=0B_yIQ9H6eE6qi1fJ7cTBPFuDxNknaxi17OVrkxgy7g,11920
28
+ synth_ai/cli/commands/demo/__init__.py,sha256=fpsgP7In1ve0MN5IgqwvlbhjyqBk49szC5MSf_BkHQc,71
29
+ synth_ai/cli/commands/demo/core.py,sha256=YptePlzX-d51VwrDuKqdrtWKiddvJPcBWoUfcpvas_U,4798
30
+ synth_ai/cli/commands/eval/__init__.py,sha256=G6K_DUqoyxNiMD7h3oSubiP-Qh4oR1o7n8v3-azs2gE,225
31
+ synth_ai/cli/commands/eval/config.py,sha256=QNxoRRQvsAza5wDdFmmYNTKr0eheTTOZxsj0aifcJKI,10929
32
+ synth_ai/cli/commands/eval/core.py,sha256=nMNr7L7wSOMCgVEJQbsBOLpOMY1BdOdv_WnWVhtVa94,9308
33
+ synth_ai/cli/commands/eval/runner.py,sha256=cvdYQFecfuL-vSwbcdFru3lEIXMZvEg1UNxXchkCPxQ,23810
34
+ synth_ai/cli/commands/eval/validation.py,sha256=WaoLS9Oxr01DFMQsGmSk8vBaORWE5Koy4QKe_CEqInI,2016
35
+ synth_ai/cli/commands/filter/__init__.py,sha256=fPU74tFIgsndea2nJ25lKrzBS_JPfLi5M4OvLyqHsOg,260
36
+ synth_ai/cli/commands/filter/core.py,sha256=1i4PAUDun_B9gVAF5k2H0HTCJtwRUGr5VY_AJbRR_6A,16385
37
+ synth_ai/cli/commands/filter/errors.py,sha256=gGpZj2AhDVBco_d10ldHN3ugRpTD7zGqKD87TI2nBxc,1099
38
+ synth_ai/cli/commands/filter/validation.py,sha256=vvK0h_fRmggnSUE6TS5mPsT3jY6DAdlM_QzQgWeeGA4,2611
39
+ synth_ai/cli/commands/help/__init__.py,sha256=82D9G0ac28ok3W_eRJin1AQi7kl1bV-voHFU3QkzW8E,5429
40
+ synth_ai/cli/commands/help/core.py,sha256=q4vwdagxeVoxHaADGikiEQBq1RDSI147Akxi6IAJ4e0,2090
41
+ synth_ai/cli/commands/scan/__init__.py,sha256=NOqTmD-DXmyVRy6112GuSxEqy3gAgH-_9mCW9D3cpsQ,294
42
+ synth_ai/cli/commands/scan/cloudflare_scanner.py,sha256=IFGcqiHULW0VBq79LPXmG4miWAneOjQNHrEkIzGZyoU,15915
43
+ synth_ai/cli/commands/scan/core.py,sha256=rw1mUiLuFPCW_J2IyMubwXYa-v0i47EXf8nbM8XPsgs,12491
44
+ synth_ai/cli/commands/scan/health_checker.py,sha256=AVIYQlyqM5ApPCeK5wMB-TkQg6LccWRZ4PKAfk1w8Us,9985
45
+ synth_ai/cli/commands/scan/local_scanner.py,sha256=iEwhpBABoyxztIblTGHLQTlGA_RiIi3z1rcVJeZshOo,10654
46
+ synth_ai/cli/commands/scan/models.py,sha256=qKcleWG4zdzU2HKhD2-YjX-uKs90gQpjRF9HSum5AGo,3740
47
+ synth_ai/cli/commands/smoke/__init__.py,sha256=gE7gaBh19yTRyTRgn5ztk7MmdsIoLdU8bkFxRvHNvJA,109
48
+ synth_ai/cli/commands/smoke/core.py,sha256=Clmyh9ETDKv8DSvJitfJPns433ESbERt-h1qQL8PaRM,61698
49
+ synth_ai/cli/commands/status/__init__.py,sha256=U9DbHXnwGvbus243mjH0_wFYej-y5cVCoWFvoKBpOXQ,66
50
+ synth_ai/cli/commands/status/client.py,sha256=GFsgUryVSSlTx4Ibp_Iypw3mSYHly8poG2GHthy7BW8,3244
51
+ synth_ai/cli/commands/status/config.py,sha256=9FZy-rtW_FmrqioHlE6mwoJap4cA8D4-hp3jdzgUfUo,222
52
+ synth_ai/cli/commands/status/errors.py,sha256=xv4IRsSMJDyd4l7vfqPe0z5_m-Cx6ZYil7fBxV3eb-8,311
53
+ synth_ai/cli/commands/status/utils.py,sha256=bybYV5xEcpkiDe0LRBRZesjBOVyHmQc0MFYCq_U1Ngk,648
54
+ synth_ai/cli/commands/status/subcommands/__init__.py,sha256=AU_hgMoT6xHg_BWu1di1PNFZrFvFKnvYyIrB1HitbFw,62
55
+ synth_ai/cli/commands/status/subcommands/config.py,sha256=aekcbYddWzeNzlqeUd1ud-uOpQ7No5u8vZl6UFO-ILU,189
56
+ synth_ai/cli/commands/status/subcommands/files.py,sha256=ox5zZD1hFOuN5_ZKfkK_hQ1eVv1z5pLagNp5ZkWkfLE,774
57
+ synth_ai/cli/commands/status/subcommands/jobs.py,sha256=v8G3RPegK36wqxO0FHWURcppLNqc1rfLx1lRHQBTN9w,1375
58
+ synth_ai/cli/commands/status/subcommands/models.py,sha256=edXcYv7Yiy88KBmalSIMY0qf0cAB_1ZrgeNaR1eplt4,916
59
+ synth_ai/cli/commands/status/subcommands/runs.py,sha256=dbApDFHdQergU_TRCgOXiyjRQQHBOGXt-gB3ZWtsghs,773
60
+ synth_ai/cli/commands/status/subcommands/session.py,sha256=aOzS5N60Lo18cUNvX6TK-amoDtue0ITIeJYKdB6bvic,2422
61
+ synth_ai/cli/commands/status/subcommands/summary.py,sha256=HF7gxG0kky7SYi6FXBZ3n9mYW9REASlrxC3eL-vYFR4,1002
62
+ synth_ai/cli/commands/status/subcommands/utils.py,sha256=-AJU_7yqYAkAMBvkemvV9Q35ipjHmmrSO8OF0_2jx-o,992
63
+ synth_ai/cli/commands/train/__init__.py,sha256=9zGDNfVkRpAMddsvB3qS-NILIlTh1dYRVUe2dTZSPDY,1242
64
+ synth_ai/cli/commands/train/core.py,sha256=nKKFnrmzaw0YqKtpG1cmaFCAFgunlreHz-lLyy4xYy0,505
65
+ synth_ai/cli/commands/train/errors.py,sha256=OJUYiOhzDGchOd5-Re36c_OHfb-9HgnuKRrF3AwzEU0,2743
66
+ synth_ai/cli/commands/train/judge_schemas.py,sha256=BBKZ0EDCeePeDqCymdoJL0e79UfKs0GznozqatBFXOc,6424
67
+ synth_ai/cli/commands/train/judge_validation.py,sha256=ga6bdOrpfsimOVAL7cRPIHJd4BbstXb4eMxDlt2YIAU,9935
68
+ synth_ai/cli/commands/train/prompt_learning_validation.py,sha256=zR_Yn4SfExaoLNOO2TrfvGrKEs_SDOGAml0_rFyKdEQ,18795
69
+ synth_ai/cli/commands/train/validation.py,sha256=CG-r58KyCkSkza9hg6S_RoSRtsTv7cyn2cTii9nkO9c,13886
70
+ synth_ai/cli/demo_apps/__init__.py,sha256=JH-OIpwYS4fqJ7MfOd16y4378mdD3uhr675iEG2zBys,473
71
+ synth_ai/cli/demo_apps/demo_registry.py,sha256=y49Tb-iVVQAfMSyQlfqQ_2i3CsVPw9PAJr2wFx32m6g,5826
72
+ synth_ai/cli/demo_apps/core/__init__.py,sha256=uC3ZUzEjUnr5Az_FoRZJovGhCeqfMZVZggjXr2DkKio,806
73
+ synth_ai/cli/demo_apps/core/cli.py,sha256=-6NlhGFEtIUIfkU0L6SbhtfX3HtcxOVMQsoEkg1Rg9I,66429
74
+ synth_ai/cli/demo_apps/crafter/__init__.py,sha256=3SnNZTzBjGR9eudStcww259vPmzoFBHJL-M0GDUD7Qo,24
75
+ synth_ai/cli/demo_apps/crafter/crafter_fft_4b.toml,sha256=p7b7P9lwg1ej_mMYi-R_UP9dAXAEO8_Ak0u_l8rMTVc,1203
76
+ synth_ai/cli/demo_apps/crafter/grpo_crafter_task_app.py,sha256=3oB31F5wqtNlLORp8FaBITaqjsOB95doGv686zshjUY,6368
77
+ synth_ai/cli/demo_apps/crafter/rl_from_base_qwen4b.toml,sha256=_TVKcVlFnO04EGvMRn2IKwwljzscW9JgrgP7e6GGyko,1656
78
+ synth_ai/cli/demo_apps/demo_task_apps/__init__.py,sha256=fj5IgEaCWLjYx-8DpfzmUdHIEE2TlpauEDvJRgAnLy0,267
79
+ synth_ai/cli/demo_apps/demo_task_apps/core.py,sha256=I7v76QmkfP0GF5noMlYjGKQnFgfFLvTBqQaua8sPZQ8,15441
80
+ synth_ai/cli/demo_apps/demo_task_apps/crafter/__init__.py,sha256=3SnNZTzBjGR9eudStcww259vPmzoFBHJL-M0GDUD7Qo,24
81
+ synth_ai/cli/demo_apps/demo_task_apps/crafter/grpo_crafter_task_app.py,sha256=iTi9Sk_NJseX_Lo34-OXa7VCWhTSO703LWvJ8KlC0L4,6920
82
+ synth_ai/cli/demo_apps/demo_task_apps/crafter/configs/crafter_fft_4b.toml,sha256=3voWbh5KscUtsnps5NDKTfBGiBz6-ZtXuK6uMgrcQSY,1192
83
+ synth_ai/cli/demo_apps/demo_task_apps/crafter/configs/rl_from_base_qwen4b.toml,sha256=qVSypYOMUd8g6pmiovi7nsgk4jgMBjJIORpIsrmNV4U,1644
84
+ synth_ai/cli/demo_apps/demo_task_apps/math/__init__.py,sha256=WBzpZwSn7pRarBmhopQi34i9bEm05-71eM3siboOavY,43
85
+ synth_ai/cli/demo_apps/demo_task_apps/math/_common.py,sha256=FvWvZ3BwZzX38RjZcukPlmk0FN_DT03lBbZe-mjF7tg,532
86
+ synth_ai/cli/demo_apps/demo_task_apps/math/app.py,sha256=1sdVhcQR60jLc8Vc5B2Jelh1ouo7y8gVkVgf_VcJdPg,1168
87
+ synth_ai/cli/demo_apps/demo_task_apps/math/config.toml,sha256=gmOkVUdUuaDq2PseNYP7eXK_fvqwrcHbbB0oc-omWCQ,1323
88
+ synth_ai/cli/demo_apps/demo_task_apps/math/deploy_modal.py,sha256=hLdUvOl3tGQi_mQgYWva5NUh-vIXUj4e-isGZ6Mk-14,2256
89
+ synth_ai/cli/demo_apps/demo_task_apps/math/modal_task_app.py,sha256=4SsKiZKY3ufmXuihSg0yzkvcgC9dYdOO1jwDaZ90r3A,28474
90
+ synth_ai/cli/demo_apps/demo_task_apps/math/task_app_entry.py,sha256=F1-F-qeiVTQAW9HxSv2ko-hERkgSL4QKEplR9HtMCMc,1044
91
+ synth_ai/cli/demo_apps/math/__init__.py,sha256=WBzpZwSn7pRarBmhopQi34i9bEm05-71eM3siboOavY,43
92
+ synth_ai/cli/demo_apps/math/_common.py,sha256=FvWvZ3BwZzX38RjZcukPlmk0FN_DT03lBbZe-mjF7tg,532
93
+ synth_ai/cli/demo_apps/math/app.py,sha256=1sdVhcQR60jLc8Vc5B2Jelh1ouo7y8gVkVgf_VcJdPg,1168
94
+ synth_ai/cli/demo_apps/math/config.toml,sha256=w8_TPsKA2wl_dn2ge90GIPUUgCrZu6EOzYyrRzjXnhg,1336
95
+ synth_ai/cli/demo_apps/math/deploy_modal.py,sha256=DpqSUxVGjqDy1GoUQJWFQSsI0_osRpuCw8svD4rm5Cw,2063
96
+ synth_ai/cli/demo_apps/math/modal_task_app.py,sha256=S1J4KYeZgAOILWNloetZDd4U3O0bh-1kiGOQ6V6eWbg,26481
97
+ synth_ai/cli/demo_apps/math/task_app_entry.py,sha256=VGxRi34Bxj51z8yZGmwjQJTVaUJySdH1XhWpWq3nUKU,1455
98
+ synth_ai/cli/demo_apps/mipro/main.py,sha256=_DIy7xSuVnZrwDUilJwWJfFdgHp8BJMs4qasdZHnldo,10505
99
+ synth_ai/cli/demo_apps/mipro/task_app.py,sha256=kl0zwB-e3-HRWGvXFPINOYDGBkSS_kjkPtiBRQiRREg,37518
100
+ synth_ai/cli/demo_apps/mipro/train_cfg.toml,sha256=LGQPpgrmHGh_C0NuQSYV3MyRSf6FJHyc-jvdAWpjgv4,4099
101
+ synth_ai/cli/demos/__init__.py,sha256=BnoTqDZ0FelPjSy8gAnV5N0SriEqhhwjZBTagrwlVL4,155
102
+ synth_ai/cli/demos/demo.py,sha256=hEFLW40S9Pw75cR8k4lZ2k8rl_Bamj3HGW175ZRpKvU,846
103
+ synth_ai/cli/demos/rl_demo.py,sha256=7vvBTzEBfADPjZVGSDZxsvtzXek4eMqiekzL5HIUlmk,8163
104
+ synth_ai/cli/infra/__init__.py,sha256=M1og5Rx8Qx4yUE09YKcDaV_R3som5QSpP2qr39_4shE,299
105
+ synth_ai/cli/infra/balance.py,sha256=Jvkqn0R5O8_qdkkfgEjs_svIxXTiF56tQ8npc-8d228,8489
106
+ synth_ai/cli/infra/mcp.py,sha256=yzdo_jk7XZgLjvCBtuCZiFdNHourxnKlM22GSI5rtmM,686
107
+ synth_ai/cli/infra/modal_app.py,sha256=xtGKQhH5RsnIILciKOgdkMHW70TyD6edFbumZ4sO1js,980
108
+ synth_ai/cli/infra/setup.py,sha256=sQbwD1g22ewC0wGr5KbJ2aAGgjhA4vX5k5rPDzNPJA8,1871
109
+ synth_ai/cli/infra/status.py,sha256=vZXZjIqSA7snBumqFaZyuOwNiggQ3uJrjkfSY_jFg2s,357
110
+ synth_ai/cli/infra/turso.py,sha256=PZh1azClgrdw9eMT85ClQngU3p4C5jkFFnfxAf91g5s,2362
111
+ synth_ai/cli/lib/__init__.py,sha256=PemuaJiYhWtmA9YEhE8XQLHc0BBuSJFqw-EZbWYZU8s,284
112
+ synth_ai/cli/lib/agents.py,sha256=a5s6YKDD-AfI3P1Gypji1D1n1w8MOPVXEECbdN6UJDQ,2717
113
+ synth_ai/cli/lib/bin.py,sha256=1kDUdhIaM_XIdSj9Gmyd0Pu3sAWkc3rEYQdvf8NiaFs,1081
114
+ synth_ai/cli/lib/env.py,sha256=J-wfu3_p10l6ObSC_Sr-U4cV0ssjARgHBRs4XWsZJ_0,13390
115
+ synth_ai/cli/lib/errors.py,sha256=YGJJcXpJJiPRpHBtFafgf_XOlipRNroQHN9kKeqf4LQ,2522
116
+ synth_ai/cli/lib/modal.py,sha256=pDpgNtRJ0ChvvWKqLVCjjl6Cc3-6kPjBHtKQp0mnJPw,11314
117
+ synth_ai/cli/lib/plotting.py,sha256=qXCRUtmnnfIHtWUteBHchyk5D6fMMNocgSYLThQLCmU,4348
118
+ synth_ai/cli/lib/prompt_args.py,sha256=TunI29ECroh9NI_U4Za2GknRnFdcric8hkRzSUnkwX8,1328
119
+ synth_ai/cli/lib/prompts.py,sha256=osHwSEGasyxQ4c8-0pPsyHDRwKKTeURk0Pk-iX4V4_I,9228
120
+ synth_ai/cli/lib/sqld.py,sha256=cHOPGywLTMdQDqURIxdrNoXWFUTdZrikDo7c1oyIXP0,3908
121
+ synth_ai/cli/lib/task_app_discovery.py,sha256=W-FrUZjdVfaPFfmLddDoDuqKNZqxrYQ2uUGC7G55GFI,30972
122
+ synth_ai/cli/lib/task_app_env.py,sha256=IaJQsep1Ky2S8JdMRhQXCQQmTk78sI1Yw7S-xUYqbJg,11270
123
+ synth_ai/cli/lib/train_cfgs.py,sha256=CnNvvhFq_OeMIsePB6WVmeqxzhmmdhERZMZoseeA_AY,10857
124
+ synth_ai/cli/lib/tunnel_records.py,sha256=AChs1EtdJSVrvUP3dJv3mW0CQxSopY9w22lSpqC5bi8,6024
125
+ synth_ai/cli/lib/apps/modal_app.py,sha256=yQMmGwM1Htaq5Rw0uWFWsn1L-Mv0jwj7agiqCVmsjM4,3375
126
+ synth_ai/cli/lib/apps/task_app.py,sha256=wtOmflgPxq9hseq1KOR8AYvOrCFhydoLb-CT_ty3oI4,26329
127
+ synth_ai/cli/local/__init__.py,sha256=Jjn5l6keOk57fBpPMWxecZD_n6Z2ubSLk0Cq9OzMW3c,379
128
+ synth_ai/cli/local/experiment_queue/__init__.py,sha256=rRgmTjPh1zqTddgPDqEVccgbTi__ckTfAbjNIcWILtY,1226
129
+ synth_ai/cli/local/experiment_queue/api_schemas.py,sha256=SAIdxazAJlAT5eBMbFxoaOjgqM9sJ6AZJO8vloralQQ,9737
130
+ synth_ai/cli/local/experiment_queue/celery_app.py,sha256=dXdzCkJdA5adormZ1fzEsmgbk9eUwNfnvRLcDpFP9lA,8649
131
+ synth_ai/cli/local/experiment_queue/config.py,sha256=2-rNRtIxBWdgaYmk63lbIJPCtxOyMQxZzchvw9lVOv0,4393
132
+ synth_ai/cli/local/experiment_queue/config_utils.py,sha256=EH5GOVMVduKtSUxmdlKmo7B2YXhHp_tU4UATdCAonQw,10663
133
+ synth_ai/cli/local/experiment_queue/database.py,sha256=pWIu8bRg05zNQRRtQXySrDy9-r76M0gVZNs2xYXYS3k,6599
134
+ synth_ai/cli/local/experiment_queue/dispatcher.py,sha256=CWdKJDFi_q5qNOxsk1gF_77Q0Ti4sIb24ubZGI0ZjbA,3807
135
+ synth_ai/cli/local/experiment_queue/models.py,sha256=fjunYZehfyHcXv9zBH3OVxrEpwhxIa6R-cr0cHnfHfA,8466
136
+ synth_ai/cli/local/experiment_queue/progress_info.py,sha256=Vf27F-liKzSo7LkIYEOPquUaFzPTkFN8LSqeLzci2PU,6738
137
+ synth_ai/cli/local/experiment_queue/results.py,sha256=7GhSOmVSf8LBKdOqid9VYvJ1JJtCln7CAgPRdggTTgA,15575
138
+ synth_ai/cli/local/experiment_queue/schemas.py,sha256=VbvZoKaaMnPBn2HCLCVsjjqxi4lpbRErlbmK14ZwHaA,3908
139
+ synth_ai/cli/local/experiment_queue/service.py,sha256=sLB9rlJDde5KFztPhN5jUsNVRL3dRy0fFG-MNfDkDL4,11937
140
+ synth_ai/cli/local/experiment_queue/status.py,sha256=h7BRsEcQMsXTltq7jJAaDN3mI08_L6MaeaITyf4T95w,14184
141
+ synth_ai/cli/local/experiment_queue/status_tracker.py,sha256=Hzog56KJRNmlZyXuJgkbWIjoOILg-wbmsKvK4nEveiQ,14625
142
+ synth_ai/cli/local/experiment_queue/tasks.py,sha256=VXq3--IUjz-uT6SsgYlPKTDfip_dHgKXMrOvUL4LNCM,98779
143
+ synth_ai/cli/local/experiment_queue/trace_storage.py,sha256=TtY8AExQhwlAREeSTim2_ShUD97GtZ7c0AHcIEVGh-U,2086
144
+ synth_ai/cli/local/experiment_queue/validation.py,sha256=Yw77tUU29NX4UtL0g28QotA-hm9xnLiYhiw-F9hc3tw,4683
145
+ synth_ai/cli/local/session/__init__.py,sha256=bHYEh0prhjbgBw9sKGtGL4zUeJEeyExT-TWDMZD4aAk,2102
146
+ synth_ai/cli/local/session/client.py,sha256=7et5KpjD-Grw4CVic97Cajjlap5Wv_EWE7glN2h5weo,16227
147
+ synth_ai/cli/local/session/constants.py,sha256=wH6CedQogrthM-qLnsEMCMCAP2_uhTl3c-8C8nyMqO8,1508
148
+ synth_ai/cli/local/session/exceptions.py,sha256=-WCrdiJKyplWoPsjlSSClwiDSZoGrdM__HlP_0rd6z4,3518
149
+ synth_ai/cli/local/session/manager.py,sha256=cwuJFHbaZJfA_YWOnSLjvLMGoB89P6zHwnKF9Oq_7v4,4489
150
+ synth_ai/cli/local/session/models.py,sha256=wIL0DWltnZfSMeQHldQyrJ3L1YO_eC0BzTcIg-vCgCY,2495
151
+ synth_ai/cli/local/session/query.py,sha256=zp3CVAxg6a85fbjnUwZp89wiAi3C5lgzuxG9BwJPiHU,3824
152
+ synth_ai/cli/task_apps/__init__.py,sha256=6DPH5xVUc1d_Ae4vU5NjaG8u0lhqvfVoYBSTvLAMP7w,820
153
+ synth_ai/cli/task_apps/commands.py,sha256=SLZ4WMPT8g2D_iehy_12smWtU0XU8lTiB2drjsnmdX8,116017
154
+ synth_ai/cli/task_apps/deploy.py,sha256=eCkz7Vae3BWoW0j2tL0A16k1pN_OKPXq5mTgklT_pLc,215
155
+ synth_ai/cli/task_apps/list.py,sha256=HPTAHlPgsscGDyn1DsGrm7FJj_3WIVah40JuG5BPyeQ,579
156
+ synth_ai/cli/task_apps/main.py,sha256=dfmiJR3bhlusoSBvUiDztdoGb5gRB0YeAMw13kuydZU,974
157
+ synth_ai/cli/task_apps/modal_serve.py,sha256=2PaEjNpntLuh-Z2uuZJhDCCVAO6X7zarCiwKPu4KlX8,402
158
+ synth_ai/cli/task_apps/serve.py,sha256=RFOP_OMvL_2gMOiJXRHr8-iQkwsLaid-W3A315oU7V0,407
159
+ synth_ai/cli/training/__init__.py,sha256=SWIiT6UOxalWeWcRX85VLQ2bbRxVdMajWGe1KOnHU9M,135
160
+ synth_ai/cli/training/train.py,sha256=Rp_SnljXCcjT5eis4LR6WNwW2omaHy_YbVo22Vy-zwk,146
161
+ synth_ai/cli/training/train_cfg.py,sha256=9t7tFwXgkmfXfMMtNEc1wWgSlLlKvkW5MQin8N4L_Gc,868
162
+ synth_ai/cli/training/watch.py,sha256=Vuo3P2pSDBmSIOg-suJf6M-eiv1L1MBbjtGSXKVMEFY,17502
163
+ synth_ai/cli/utils/__init__.py,sha256=muI9F9y8P2j3u9eHnlqJ2IUDWc-PGw2iSu-XOYzdxY4,148
164
+ synth_ai/cli/utils/experiments.py,sha256=0cpPOiqZO17XDWEmI2lmoqNwdipZBduOMNgfO_n35BQ,8525
165
+ synth_ai/cli/utils/queue.py,sha256=U9ALHk5AxHfsuyK_bT5frJRD54gHH28wP803M1axHcc,18828
166
+ synth_ai/cli/utils/recent.py,sha256=VlR4uBTNdqg7YhzYhfGaiWGWOCm27IXABb10ZCKJQxM,4437
167
+ synth_ai/cli/utils/traces.py,sha256=cz7JM0ZUYSufI4ZGUgjDeCxRrIlf6mDoBQqWUIBHpSM,6638
168
+ synth_ai/contracts/__init__.py,sha256=rKO44QW529EyQCK8boIkHDXlHs-3GaJFE8wZX5MSk9Y,1785
169
+ synth_ai/core/__init__.py,sha256=OnILdX0-tLML66_xn1mNxUFBgcqgqgYyi-JveRDwMSU,1863
170
+ synth_ai/core/auth.py,sha256=gRuxaCSdLD2erKqUMNKIvXpC16h1r_fFrLADpgBIh-g,2995
171
+ synth_ai/core/cfgs.py,sha256=SWz_qlO9r9mq-ITS30pgpHDez7-CxrD9l-wIyyH5cGg,8413
172
+ synth_ai/core/env.py,sha256=rfU5hkfMP-tc11QCuxzSPSiqaCXfuRE2OuobMmBFXBI,7127
173
+ synth_ai/core/errors.py,sha256=SJkOm5BAxjT_atxEwhGP0awMWAjEk88QdRPbggpUnQQ,2925
174
+ synth_ai/core/http.py,sha256=IWftgT9wkxrRS1vy1XfQrj96Z3URifsVBkColoiKIBU,7097
175
+ synth_ai/core/json.py,sha256=cplc_iAeQh3bbb6FoAZNCCDMgz8vVg7q9MSybryCiVg,1793
176
+ synth_ai/core/log_filter.py,sha256=VG1nsEVop1VG-pdRW9Bf8QnmGIFA6Fi0fZ8YrA1DwNg,3525
177
+ synth_ai/core/logging.py,sha256=TODAEinCy9DDEtyX953xL7sd8lCNNWIhC1feo6oINjU,2309
178
+ synth_ai/core/paths.py,sha256=C0AbBgs-12J5PLtDbm3qA5mQgcLxeHc4CwnwnApfbR0,3132
179
+ synth_ai/core/pricing.py,sha256=MTMplluilwXkZ55l8PtemwlK-UIq87kJ8pmZzu6sYIQ,3361
180
+ synth_ai/core/process.py,sha256=i0i-HpFzu7ZbYKJd4kMoNM_-rdvEmGxtco8IaAygUSA,6731
181
+ synth_ai/core/ssl.py,sha256=PdGCGCePac9UkoY6HoL7yztXllyE4mX2ZOM3pmCHXm0,837
182
+ synth_ai/core/task_app_state.py,sha256=iGXattKGilv6UQIBlLkd6d62XXxiAExUzFJ3YqLd0f8,9396
183
+ synth_ai/core/telemetry.py,sha256=0GoBqYDhcx7G4MEFPehtvxOiBRF1jwB5sRtwPcj6utY,8262
184
+ synth_ai/core/urls.py,sha256=QNmDiJp8WJgpSd8d3BfAkUi0vrff6RW3RhI-kcG7-lw,839
185
+ synth_ai/core/user_config.py,sha256=h7pytVtwZD33QAdPRAtEofjIrBMHOph867gaPqFda1Q,3955
186
+ synth_ai/core/uvicorn.py,sha256=f7rWeAYq_XIIm-XID8tHtfOvbtECSuFVhf-p34Mv_pw,7733
187
+ synth_ai/core/_utils/__init__.py,sha256=waV910zcbgQn6YgQdyB7a5yZbJRWKM56dWAPgQbZLow,1560
188
+ synth_ai/core/_utils/base_url.py,sha256=xLmUFClht-I0bpdEZw3GP9bjXenN0RGlyCznmzzX-mQ,294
189
+ synth_ai/core/_utils/http.py,sha256=MVHD4QzH-45fWQTcfE638Mx0zotOoVOq99BmNh36fjo,296
190
+ synth_ai/core/_utils/prompts.py,sha256=mg6w8sVWq5QeO46Ni-EIC7ljLFTSfE7GRjG7VMRe1EE,452
191
+ synth_ai/core/_utils/task_app_state.py,sha256=bj3qi4YL_6cMD4PfTgIMsYt_aqPMu1qYD-SLXfGxXCg,333
192
+ synth_ai/core/_utils/user_config.py,sha256=91xr7HDtP7sjrNDAmULaLJ1nJuH9iyKSwOtqcW46HPM,310
193
+ synth_ai/core/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
+ synth_ai/core/apps/common.py,sha256=kIJ7-_1uFHCs8slNK9_miVeZpn3qr5HmPlmdStoLRO8,3521
195
+ synth_ai/core/config/__init__.py,sha256=CkwqJGTH_nIhZD512-850SGmlfwBYBI91UJrbttJnQE,302
196
+ synth_ai/core/config/base.py,sha256=ZauohJ_RwqssMmPOjJB_PITlY_tHYicWP5WP_jeaxWQ,5198
197
+ synth_ai/core/config/resolver.py,sha256=zUr_6bh6DOl_VHS8gxdb3DC3gv9y3hbvTacHHj_j_8w,2750
198
+ synth_ai/core/integrations/__init__.py,sha256=toqa4Fl0iPb-9x3n5OTw8kefoEMjc7EYLSWIlazDGe4,205
199
+ synth_ai/core/integrations/cloudflare.py,sha256=6be4BF1dVnRvao4JsPWsP2QwHP-tstiJPVApqVti0FE,66204
200
+ synth_ai/core/integrations/modal.py,sha256=0epn8_ZaAbUelqoqFmyPxycCq6pD8hpmAVzNIpMG3PY,10946
201
+ synth_ai/core/integrations/mcp/__init__.py,sha256=xmJMxYXTaBHv7E8ryDeA7ELeNjZnsR2Ft7ayD-267Aw,118
202
+ synth_ai/core/integrations/mcp/__main__.py,sha256=BGpZrCfzjzWkY-9KUs9Fj2x1yYtp3uJbI0S5HLeJOew,177
203
+ synth_ai/core/integrations/mcp/claude.py,sha256=hKkXuhKu3pRHz5SnImQaFo6fWvkF6M7CP2zCfgrQkt0,1262
204
+ synth_ai/core/integrations/mcp/main.py,sha256=3t3VzPXH-2z8eIvb7kp_0d9zI29qPAnBaCUJ_hIvulY,9546
205
+ synth_ai/core/integrations/mcp/setup.py,sha256=_3paE9bCJ8dJI4Pt9qk8tBqWShvtGnlsHLAKXBz8HCM,3076
206
+ synth_ai/core/storage/__init__.py,sha256=eyTmfhYl_HTSemDepifg3VjJygO_7gQR_qva6DhP-LM,1681
207
+ synth_ai/core/tracing_v3/__init__.py,sha256=CndO-mSSiSA-JVdw9DxsEw-bdP47opx0opek61zvz28,3386
208
+ synth_ai/core/tracing_v3/abstractions.py,sha256=uja-8UMh-RWfpVBjsZwNw1UhNMpgsy4Zmd_pEq_qXjI,12865
209
+ synth_ai/core/tracing_v3/config.py,sha256=MWCCWACcbwoEYCd9RmLytGUTlWTCyXQWP4Ccn9BYOJc,8769
210
+ synth_ai/core/tracing_v3/constants.py,sha256=hPsHWSfRAQKWo5p0ULypuvya0Uta76c5tLgnW8htCNE,714
211
+ synth_ai/core/tracing_v3/db_config.py,sha256=zEzUr3gurpmx3-p2egumCjzM85vY5GD63kbXTI0kv10,6540
212
+ synth_ai/core/tracing_v3/decorators.py,sha256=lJ6vJi1horv5H9nmXeh9-BY0LZotet5lihVCMBPnsqA,14939
213
+ synth_ai/core/tracing_v3/hooks.py,sha256=QUfVvE6H2HIkP-dED1ctBpxzJXpaM_7UU-XaU6043W4,7997
214
+ synth_ai/core/tracing_v3/llm_call_record_helpers.py,sha256=Uc_Ypclptba11vJ9Abuq0AT5LRImhJkF_xhLPBAgLx0,15514
215
+ synth_ai/core/tracing_v3/lm_call_record_abstractions.py,sha256=j2RGuXVaV_EXmIosuXRDjptJSlrDXwb8x06k2fF6lqo,9195
216
+ synth_ai/core/tracing_v3/migration_helper.py,sha256=D4-9uKjn_SOauBKk50wkXOuY-_5LE2joRTVsuMJHR6A,4104
217
+ synth_ai/core/tracing_v3/replica_sync.py,sha256=9gbGyItvW5zhcQ8eexmW14S1uljVRIcpeQ1d1h7GLgo,8907
218
+ synth_ai/core/tracing_v3/serialization.py,sha256=YqXbPTA1ZF5jNVwQJGIbi7Uk1VVd7FZuCN5KkjJHiEM,4124
219
+ synth_ai/core/tracing_v3/session_tracer.py,sha256=ZBQD15D-H5choGQ4unOM9H1gRXhxsGCjwrRAmZQPqMY,19728
220
+ synth_ai/core/tracing_v3/trace_utils.py,sha256=3Gtc6Lr3p1YtxRK8vyQX_wHYkQ0mOloaJ59L7VULIQo,9790
221
+ synth_ai/core/tracing_v3/utils.py,sha256=JMdWFqU_JlQbA4Eb9KIo45TdZeNmOlyu3-tOFpZUj8M,3459
222
+ synth_ai/core/tracing_v3/examples/basic_usage.py,sha256=gSIWxeCYNe5WL38FjCaOCv0RvmxZ8SDiPWhA1-8XAeg,7342
223
+ synth_ai/core/tracing_v3/storage/__init__.py,sha256=VPjBh180bcSPz1HsbqaqfnvguwqwomaEYKxkrhfGABY,332
224
+ synth_ai/core/tracing_v3/storage/base.py,sha256=x2Sqjijv6kFNL5yhCgsw71ndbxgaFMcvw_hVGVNi1iQ,6047
225
+ synth_ai/core/tracing_v3/storage/config.py,sha256=odl5QRmJ6isrDgPkhWL1X9ugk7iaI-BkbvaG9q2cq-k,4013
226
+ synth_ai/core/tracing_v3/storage/exceptions.py,sha256=zqfsjb4r8qcZGlId0h9-x0RpJq2_DRDfdlzW6_KIRCw,708
227
+ synth_ai/core/tracing_v3/storage/factory.py,sha256=5ZvbOcm5-zNhjCrbobfnf6iLMvTRSwf3xXHdAUA7K0s,1352
228
+ synth_ai/core/tracing_v3/storage/types.py,sha256=LevN8M12ilZ0EaiQ6Y3yONSMuLGEhSKNt0ir5wbVbek,613
229
+ synth_ai/core/tracing_v3/storage/utils.py,sha256=yDjy6Uoz9PXYk-bGWVxG31MfGN3ncvea0R591lPxJ70,6461
230
+ synth_ai/core/tracing_v3/turso/__init__.py,sha256=hcwysYjh1_ckqrn2DW4QSc2l0jdfN-INrfWciOsTqdI,286
231
+ synth_ai/core/tracing_v3/turso/daemon.py,sha256=HQOcAITKVB1V3WCCC-3coYAftVIdgmtWcGQVCOWGwds,9628
232
+ synth_ai/core/tracing_v3/turso/models.py,sha256=BGQVPxJeefgZW8Qd-yV1BSIlQrHVIm0wp4CWNQfQLN4,16394
233
+ synth_ai/core/tracing_v3/turso/native_manager.py,sha256=w-J4KcBCzO4GapnkovwDTZcrMp8dmI-1WsimTRKSpUQ,52463
234
+ synth_ai/data/__init__.py,sha256=4XjTCtx_D6dwgTEihyw7pJnjmclj-5daGfLO375u3ZU,1750
235
+ synth_ai/data/enums.py,sha256=KlW4TE2ppGzJCa4my7gSH7rLwIiOrIHUrcHARDvdCkk,2392
236
+ synth_ai/data/rewards.py,sha256=fnwJ63CLyPkimo3FdV05XnII8zkHKD-_C0D8iFPCnfI,5272
237
+ synth_ai/data/traces.py,sha256=9DvaLDMj93d6tNoWPGxgZi1G3JX-WEzNEXZq43yjIFI,779
238
+ synth_ai/products/__init__.py,sha256=4ImFYMOJAvgBpRZtoJlqe-XrzDenRAzVX-AERno-A7I,198
239
+ synth_ai/products/graph_evolve/__init__.py,sha256=T6axou9iqBJJQEQyEJOUOwVIAc2DwQc_-ZhYWpUrPVo,1316
240
+ synth_ai/products/graph_evolve/client.py,sha256=r7GJgpAjO9LaK5H-Bm_OvcI6JsiKa1wtTVHb8VHbY28,6934
241
+ synth_ai/products/graph_evolve/config.py,sha256=WdUdN_J3khlle8MqOSSQGqUd5DcBCpqQMErSxwiT_sw,23746
242
+ synth_ai/products/graph_evolve/run.py,sha256=mrV-uv0pY46ig8pZZ3dHcKkte-LnToeDYVJ3K1S9yWg,7700
243
+ synth_ai/products/graph_evolve/converters/__init__.py,sha256=6dRVpK8PRSjtsuGQ8oT6JuqRlBEJJjIGHileisUNbyc,1094
244
+ synth_ai/products/graph_evolve/converters/openai_sft.py,sha256=aRXvF0byu768P3zzb8QR8vUdM3FsYq_XXkO_9b3FhXk,15269
245
+ synth_ai/products/graph_evolve/examples/hotpotqa/config.toml,sha256=1yd6AiyRDqDLFOeeWKuJgNvPAa0qY_u02gPvKxXtvLg,4301
246
+ synth_ai/products/graph_gepa/__init__.py,sha256=fkgycuZUe40WE6BTXIXTTgjkxGexaaJNqpITWT-5ZsA,509
247
+ synth_ai/products/graph_gepa/converters/__init__.py,sha256=U7B3YUupy_FVrYinX7YqS87BLPxDcxm7XgXPz5QcmDE,399
248
+ synth_ai/products/graph_gepa/converters/openai_sft.py,sha256=GpV9ZvvSIk_RXRN0IRFpQipCvInzG7B2DdkoXkvHCG0,656
249
+ synth_ai/sdk/__init__.py,sha256=V2GZbnHoNAZJAPJ8dUJSRayqYTHx322glO6UvDRpZ2o,2775
250
+ synth_ai/sdk/api/__init__.py,sha256=_CrikBpuPlD3fOFBCpbudO2QP_WozrRLQWvtReNahnY,24
251
+ synth_ai/sdk/api/models/supported.py,sha256=zxozXZkHaP70CvscKT1S8SuzJoHmLTy0VwH-p48rpxc,17709
252
+ synth_ai/sdk/api/research_agent/__init__.py,sha256=GgdlzrCnkfVS9p9bCuglzP-mVne_qFAc0TJlDd39VZg,9691
253
+ synth_ai/sdk/api/train/__init__.py,sha256=y3DlgTTlwyI5BQiE2Ap5CwMcRS1G-DP288pMTrveBiw,2011
254
+ synth_ai/sdk/api/train/builders.py,sha256=6Oi2YdudBvY-kqHpJeEID9p8__f48QfCDCdDEBct0fk,44547
255
+ synth_ai/sdk/api/train/cli.py,sha256=iWuhImQ6A6gtMZ6p6vWnj4yZZkGTD7I4P9KjoFCbWIg,93284
256
+ synth_ai/sdk/api/train/config_finder.py,sha256=dQe1P1QtIJT4NM-pvhpt_BT2608lFohqJ_5aM1Ty6Ho,8932
257
+ synth_ai/sdk/api/train/context_learning.py,sha256=nItcZcyUJVN6xqXS2QrngNshVKpRO0dTPtf4MNSdTPQ,10548
258
+ synth_ai/sdk/api/train/env_resolver.py,sha256=fZH5vP8jZg_XqVFDmuLWex5bvhNQ8cDZGTTWM9Yqff8,15039
259
+ synth_ai/sdk/api/train/graph_validators.py,sha256=y38ysD0mtYpY-jsgA_UurWFsttkJH1tqQCwrQdZcjVk,7657
260
+ synth_ai/sdk/api/train/graphgen.py,sha256=q2B1AnEOYfhdEnUrqnb_ZfdKrA3Qj3cWZuI8CY_q-rk,37491
261
+ synth_ai/sdk/api/train/graphgen_models.py,sha256=b6JpFPkMJIPMs3yFBCPmP4nhf7SdNNdahZMtoX4LqPM,29983
262
+ synth_ai/sdk/api/train/graphgen_validators.py,sha256=f81KVsT1h0OYbDLy3b__Fs0Gse1EvhOVMtTDdnCnCjU,3348
263
+ synth_ai/sdk/api/train/local_api.py,sha256=anRlexquLy8bK4lOcIE9Alah5ec003phM71pKp4yPLs,286
264
+ synth_ai/sdk/api/train/pollers.py,sha256=tf6qbP_-FwwsxLD_yILidqbDyjaI_5YCSIfIVSQllLk,4421
265
+ synth_ai/sdk/api/train/prompt_learning.py,sha256=6Hn_Rqlhe94iL8Hs44Jtig1uTYN4-wNGCivZSkUyumM,17092
266
+ synth_ai/sdk/api/train/rl.py,sha256=ZcnKs-u_Y6-vEdQstFourx9bDO2sO-Q2BC2ceqpKuhY,15835
267
+ synth_ai/sdk/api/train/sft.py,sha256=xOq4Ih275APWOp-jSx9HebJn4tnP9jTxk-XWPxt6_Cg,13180
268
+ synth_ai/sdk/api/train/summary.py,sha256=LG0fkarwnoiuHopDnOYniA0GBOOPmcbSe-F0j4w7_Bg,25298
269
+ synth_ai/sdk/api/train/supported_algos.py,sha256=T-8tlh97OY3aM6MvTahqR0TtnCjSedE0jVAZSeYt6q0,5324
270
+ synth_ai/sdk/api/train/task_app.py,sha256=WVGeEL7wdXaS3CpMHJVgpU8RyoxpA-M5Dj5UXPO6S34,13290
271
+ synth_ai/sdk/api/train/utils.py,sha256=ILijLXj673vxPwrm2fzKfdjoNrXMB9M00TS9L-lzzlM,7898
272
+ synth_ai/sdk/api/train/validators.py,sha256=IIz7DHmEVl6iyudVKziDVJAfbxxrRWQg3cyf-7OYlDg,124761
273
+ synth_ai/sdk/api/train/configs/__init__.py,sha256=Fl-bDFw8i42O3HkhMnGsGlqm7uLYOlESxrXUWheUQ24,1442
274
+ synth_ai/sdk/api/train/configs/prompt_learning.py,sha256=R1MJ9bJ83QN6gc3YUT2wsu0P4hf584h-o-DqJVL7JKE,79048
275
+ synth_ai/sdk/api/train/configs/rl.py,sha256=OMUNP3c2t3zfdnpTTULSsqOg8kApZIZzJlbXbVZFkFk,6354
276
+ synth_ai/sdk/api/train/configs/sft.py,sha256=zyKPZ8Zd4EDl5ktwdo1ZM3qdh56msfVCZcCX4dMdScE,2965
277
+ synth_ai/sdk/api/train/configs/shared.py,sha256=UeNRmfyCwV7X7xfrthfhIbD4h3RLoo9an6VvI7QJfeE,2579
278
+ synth_ai/sdk/api/train/progress/__init__.py,sha256=8UK3934c_-BbM3DlFRBHxd1uxi2cdPB603GwxWWXUbI,2212
279
+ synth_ai/sdk/api/train/progress/dataclasses.py,sha256=dsi36wsWesMkk0q-mMnPIBdpHN6gorB5fewW3m4q7MU,20966
280
+ synth_ai/sdk/api/train/progress/events.py,sha256=VV_g7A9au0_JkQExKRPgci9HBwOgSBgvlfhc3ExCAkg,10973
281
+ synth_ai/sdk/api/train/progress/results.py,sha256=9geCkGOE6PHUVgn-3umaLt9wTAYBSFI8FiXu62gbNj8,14211
282
+ synth_ai/sdk/api/train/progress/tracker.py,sha256=aA0dR3hf_hODaaBNmClqagEY3kOvysmc7i5OnU5C6UI,24492
283
+ synth_ai/sdk/graphs/__init__.py,sha256=E-8SrhCCvRvAGJQdnjXc8qbYYSGy0dNUThm5PRQYkvU,262
284
+ synth_ai/sdk/graphs/completions.py,sha256=kjq9oVDyeWNUsTbLO0kiUiF7EiufcWzK6q1aH6GE1Nc,21535
285
+ synth_ai/sdk/inference/__init__.py,sha256=R8NSo1Z2p4il71cJbXKfACaSz2Tn0uLhYcEnsjENVyE,75
286
+ synth_ai/sdk/inference/client.py,sha256=7PqED9BDav8l0jCwaFO7Vu57VmN41rcss0zAdjX5V6E,4945
287
+ synth_ai/sdk/jobs/__init__.py,sha256=JHofV9KgQfGUuiU1oM693WlF5J9TmV32YbfOeqxsCtQ,254
288
+ synth_ai/sdk/jobs/client.py,sha256=Htk7_2B0KHn--hu8gahvFdIXAIYQNU9M1Emjd0NDj-8,13235
289
+ synth_ai/sdk/judging/__init__.py,sha256=8Mw52TeXtdjTUKRbNLcuVd380eXT_SGI73s0W6Quh7o,311
290
+ synth_ai/sdk/judging/base.py,sha256=eXEVrkEhocmO_9A9aF2BGTWiQ9i5C9ozabQlwlRNO-0,580
291
+ synth_ai/sdk/judging/client.py,sha256=mFAfUVUnf8VQMGkefXSy3vyobKbCrhnt-tkpFHudTOE,1027
292
+ synth_ai/sdk/judging/schemas.py,sha256=2uWocuaNFHvm4suV-9RdZg0mWccR5hFG70VJsdtV2yE,8612
293
+ synth_ai/sdk/judging/types.py,sha256=vpg2u4vLi7EqXJYgMM44TPXKKQKDxkcK3_KzYeHU6l0,930
294
+ synth_ai/sdk/learning/__init__.py,sha256=EiGr1q6U8Xv5hPv0fjsw10A6iOHVwUz-JY--kwP2IYM,2695
295
+ synth_ai/sdk/learning/algorithms.py,sha256=N2sXJ-U5QfvmSCtB2KUkTMyg46_pibYXHdIrYSKGyxA,342
296
+ synth_ai/sdk/learning/client.py,sha256=7lV5fw5F3vE9OcrqJ-sZeZ30579_WjuaMO7kNsRxYa0,9552
297
+ synth_ai/sdk/learning/config.py,sha256=-mh2thnHfuwivKnEt4VYCfPPrgwpQvY9QeMg-7HW1H4,98
298
+ synth_ai/sdk/learning/constants.py,sha256=QaunQg7Xru0S6AQv_-zoDprMB0ssn9sPHnhaTxz8reY,536
299
+ synth_ai/sdk/learning/context_learning_client.py,sha256=ajxGND54kvCSNtDU0_RD8u1sN78E-7EhEhN3xhJDMBo,17231
300
+ synth_ai/sdk/learning/context_learning_types.py,sha256=iaP9iT3oSLgeJTM3jmbLUPkbH2vMkpcgLlDTLO-dXsE,10695
301
+ synth_ai/sdk/learning/core.py,sha256=bA_Ng3YKeCJb1scnrSapp48HildL7Pd2fHkZ4zxurZU,440
302
+ synth_ai/sdk/learning/ft_client.py,sha256=JMNAa0SwXbhqKo0pFPK7c8q9zVWBtyKP-lWrP6RR2s4,183
303
+ synth_ai/sdk/learning/gateway.py,sha256=8plVu9V_0PTt1ZI6awuh9wSFT4BqS-mLshaN77wGyDk,31
304
+ synth_ai/sdk/learning/health.py,sha256=6egq7mszJCi7QxZE2q8di76JsorvLGanIgoAQ1dF1CY,1593
305
+ synth_ai/sdk/learning/jobs.py,sha256=VDoRZ_uHZJScXbOHdHhaL6c8_nRP0rpubLsWNJ2Br_E,9261
306
+ synth_ai/sdk/learning/prompt_extraction.py,sha256=sG7lL3-Ve8Jg9TDhVQfX8q8fOKlOtNlbz7aKL0VfcCk,12111
307
+ synth_ai/sdk/learning/prompt_learning_client.py,sha256=vluDN2deJpfqeIi8j4Do9bXSekr6SNivLHASUIECVOs,18957
308
+ synth_ai/sdk/learning/prompt_learning_types.py,sha256=PqNfNxUsoID87ISDiS0Cyn5ib1s7RMNX7Tn4AAVssME,5834
309
+ synth_ai/sdk/learning/rl_client.py,sha256=zJfY3M-9i45lfStN7_ptk8XUAM8z7MUrk_NN4OIBqkA,92
310
+ synth_ai/sdk/learning/sse.py,sha256=E95hgsHK27hxyl4xcgGH_6hmn-GHk3qhgcI8H7_-7c4,1796
311
+ synth_ai/sdk/learning/validators.py,sha256=rBddzoMMKpK7tZ9M3kSZB43cDH6MBZibcHcj66pBdLw,1644
312
+ synth_ai/sdk/learning/rl/__init__.py,sha256=QvQpTSve-W6eTYzIfaFio9ojJxFHK8z3m9aU6juNyog,788
313
+ synth_ai/sdk/learning/rl/client.py,sha256=InEu7BGCAap7MepkDkTb8TenwJZhGL8puf5fM8jtYjs,11479
314
+ synth_ai/sdk/learning/rl/config.py,sha256=T70JlL4i6tSft09-jOs84hFgAiD2XpcVCtC5Rfz7Ehk,864
315
+ synth_ai/sdk/learning/rl/contracts.py,sha256=kgVuE5MCKbpSIk5VfmbeRc2zoXsVa_s2PHZPpeDPQA4,490
316
+ synth_ai/sdk/learning/rl/env_keys.py,sha256=WqkU0WutklwAZfdoxbgDzDrsPDYjapirELOEoPn9XIY,5586
317
+ synth_ai/sdk/learning/rl/secrets.py,sha256=MJkyJbiedtZmNz0L_VwSgbTk4LSmbjElmYHOf34WfEc,272
318
+ synth_ai/sdk/learning/sft/__init__.py,sha256=6SOcXUwYebySuy1QGLApv5U6zbAOobcSE6NsInouwPA,564
319
+ synth_ai/sdk/learning/sft/client.py,sha256=Q3HoAM4umeSyHo1i4Ate8NSrAJPpYRWifx-5pe4xaTo,3619
320
+ synth_ai/sdk/learning/sft/config.py,sha256=oDG2g7U-j8PoPcL_myBrqcgBtLJSnknXng1_c1tCTnU,9795
321
+ synth_ai/sdk/learning/sft/data.py,sha256=oaJr79u0I-hzngE2G-nBUAzrl6rbnaCo7ilMTy7NX6k,23590
322
+ synth_ai/sdk/localapi/__init__.py,sha256=Ie5N61lGKaZ1juE3Qper04JHk18EUCZPHUQa8vdQ6tk,1001
323
+ synth_ai/sdk/localapi/client.py,sha256=m3ECzi5MSocXLagdCnxqDMRoeuKbWOf_w-DE0wIwJn0,254
324
+ synth_ai/sdk/localapi/contracts.py,sha256=vhm7NlYEwQEguXeAiHfGgcCXrcZ3ZDQ9db_F3nOYdso,274
325
+ synth_ai/sdk/localapi/helpers.py,sha256=UUVBD8cdJ1Lmb_CbigZNTfWfM5QLQwPnwlUrjzMYjBk,20183
326
+ synth_ai/sdk/localapi/rollouts.py,sha256=SBFXjP6jyvLHo0OKqDoGGrehFqwn9-EnLG5X8QlaWfE,2840
327
+ synth_ai/sdk/localapi/server.py,sha256=aGcKOOXyEuVzte_jThZymC2KVC5Qspx_m8rqSLKvvws,551
328
+ synth_ai/sdk/localapi/template.py,sha256=DE5AdipWL1UdXIYb158gVzI9iKUDyX18DqBvHTYvuOI,2202
329
+ synth_ai/sdk/localapi/apps/__init__.py,sha256=XaVL0PoA4vN0e5gI8eUIepJuVLM6X3JyqlrKraayKSc,572
330
+ synth_ai/sdk/streaming/__init__.py,sha256=n4NMivfc2sdCSeB1QdnrSlmf4ok3p2eXxKNVtLqceEQ,767
331
+ synth_ai/sdk/streaming/config.py,sha256=lx2Zn0oBG5cuWgXNz2RoBMmI_nOrnuT1px7Zy2eQ8Jw,3580
332
+ synth_ai/sdk/streaming/handlers.py,sha256=39mqCOpM4tVAn7l0KePrVwPzuOYRgmPf58GRmjCi00I,87634
333
+ synth_ai/sdk/streaming/streamer.py,sha256=tnYlVxhy9OD_ttlp6hSwgmXp5QSyf3VhoxmlNn1ffeY,31541
334
+ synth_ai/sdk/streaming/types.py,sha256=Vz1llmdZMegDKURhvFLYSFYwLZT9RNIpPGOK6hJFyM0,3720
335
+ synth_ai/sdk/task/__init__.py,sha256=rrnU9pF57fk2XN6Pc3YNXS_0jJWHQnXExwNrHSu-LsE,4186
336
+ synth_ai/sdk/task/auth.py,sha256=IUD3DcU-43qczWV9sSccXsjDOkZe8sJHmcQtues1YWQ,5652
337
+ synth_ai/sdk/task/client.py,sha256=B02qQ6VV1nP99XCIzv-dXgLLa6X7PatlCBqrzI06YFw,5967
338
+ synth_ai/sdk/task/config.py,sha256=tLx0tZlExV6O4aVCrkaK-aNKn8uxV0RE_WegTTadCU8,8634
339
+ synth_ai/sdk/task/contracts.py,sha256=K5l9eppdoUKBwUitMUNAmOvMWWsAdyxN999uPjY_a-4,6365
340
+ synth_ai/sdk/task/datasets.py,sha256=QCQIzFj580YEfUths60tYNM3UGPB9gYgQ9aMVHOS0UI,3974
341
+ synth_ai/sdk/task/errors.py,sha256=BOdWz0fgJVprx2-mGRJTnTilAGHmc4WRpUVFA7eLrlc,1524
342
+ synth_ai/sdk/task/health.py,sha256=wfNNLYlWLmwoPpHA8ahDdqb0YAZ8JTyHzs8bdIX-pOI,1139
343
+ synth_ai/sdk/task/in_process.py,sha256=Thl8FBj39uRfUliHkLSGbkJKCA82mLOp6ugHJ5bJMPw,52342
344
+ synth_ai/sdk/task/in_process_runner.py,sha256=-gKNaEQ76i9_jCjflspnWUmBg-Le_UvyQnrjQte8tR8,11694
345
+ synth_ai/sdk/task/inference_api.py,sha256=nwDhU9U5hcnuGbPCUz3tveHsnjTkTf5gNa59IrnH_20,11957
346
+ synth_ai/sdk/task/json.py,sha256=SB9XdHFloJha9WeClq4mvaL8B21-fRl9kb1d1JlNfIc,3612
347
+ synth_ai/sdk/task/proxy.py,sha256=0iZw9vSuRJ8p5QTWzGj3bTXFja9wIeuP_pBKkNN375M,10126
348
+ synth_ai/sdk/task/rubrics.py,sha256=_qqAvl1NFGW6nJlzmI3UwjxuvWbOQeLcMwrZpmpMQGk,7180
349
+ synth_ai/sdk/task/server.py,sha256=7Qw3uDLXx71uVF2eENcJKM5oMY-CGt8B0zoG3Zf5a_0,23459
350
+ synth_ai/sdk/task/trace_correlation_helpers.py,sha256=HGl0pknS-2Al0TrihW4-Msfmln7sCcJ1uLsU3RAd1d8,19054
351
+ synth_ai/sdk/task/tracing_utils.py,sha256=6tztut5Aolh_5Vf9PnNxeBOrWik4SHlODQk5fG5pKps,3112
352
+ synth_ai/sdk/task/validators.py,sha256=Kn26P2WeOJShhI8U5L-hzCxNIte2KX2SigNtQy8D2so,17930
353
+ synth_ai/sdk/task/vendors.py,sha256=a5t_1HGwPnPUoPMbzNB87jOTCyA4S7W7eIgJ-E4Gfew,1626
354
+ synth_ai/sdk/task/apps/__init__.py,sha256=RMZaXOJEkNI8xpE748FQXp0RTUMJjKa3-eqauhWrTUc,5340
355
+ synth_ai/sdk/task/rubrics/__init__.py,sha256=i4xxA7Jp70xoWxV3D9faB8nfJU4W54WLhjj3GxW1Wz0,1367
356
+ synth_ai/sdk/task/rubrics/loaders.py,sha256=koYF5VTP66MfvjMUA27bhqE7i0U6SauSLUobSCKtUX4,5268
357
+ synth_ai/sdk/task/rubrics/models.py,sha256=wCwv8DzVOZ724yoGi-fduFWAEglR1tg2H3ct_4SdVks,1703
358
+ synth_ai/sdk/task/rubrics/scoring.py,sha256=eea5KXnlJWUASFf2kYXClbZEW48SGv0mlvvvX-265rU,3752
359
+ synth_ai/sdk/task/rubrics/strict.py,sha256=kKj9nIeuNMjptxrFoJd-J0sdEQtZ2Q1pIH5NyRJlAl8,4346
360
+ synth_ai/sdk/training/__init__.py,sha256=X1shdI1Lyf4GgxWd4_PdaK068RvqNEZIY0djuajuqwQ,2935
361
+ synth_ai/sdk/tunnels/__init__.py,sha256=_235m321hEgzOrpGeyykzhQsDUlqU1QAymu3v5gAAdQ,2386
362
+ synth_ai/sdk/tunnels/cleanup.py,sha256=urAwd9VPPZVJmBfrCPaplHbkSpi1gMCbgDcJqINviDo,2337
363
+ synth_ai/sdk/tunnels/ports.py,sha256=eudnZSV09Asse5zD3fTIZ3eOLMnQQEQhIon7PV98ZiU,3693
364
+ synth_ai/utils/__init__.py,sha256=jMc6oUg5p7wIgKaZ7R8H-RNzSP_JAFux-5rkOraYjQA,6922
365
+ synth_ai-0.4.3.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
366
+ synth_ai-0.4.3.dist-info/METADATA,sha256=wMLhKBP9yJwCY50aO-Pvg-vSXb4x4-SG--1rTkL9FfA,9692
367
+ synth_ai-0.4.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
368
+ synth_ai-0.4.3.dist-info/entry_points.txt,sha256=GSFXaJreq4PJXbixkUI0GHZwGh2dZDG5pYaoVmqr_KE,46
369
+ synth_ai-0.4.3.dist-info/top_level.txt,sha256=fBmtZyVHuKaGa29oHBaaUkrUIWTqSpoVMPiVdCDP3k8,9
370
+ synth_ai-0.4.3.dist-info/RECORD,,
@@ -1,3 +1,2 @@
1
1
  [console_scripts]
2
2
  synth-ai = synth_ai.cli:cli
3
- synth-ai-demo = synth_ai.demos.core.cli:main
synth_ai/cli/calc.py DELETED
@@ -1,69 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- CLI: basic calculator for quick math in terminal.
4
- Safe evaluation of arithmetic expressions.
5
- """
6
-
7
- import ast
8
- import operator as op
9
-
10
- import click
11
- from rich.console import Console
12
-
13
- # Supported operators
14
- _OPS = {
15
- ast.Add: op.add,
16
- ast.Sub: op.sub,
17
- ast.Mult: op.mul,
18
- ast.Div: op.truediv,
19
- ast.FloorDiv: op.floordiv,
20
- ast.Mod: op.mod,
21
- ast.Pow: op.pow,
22
- ast.USub: op.neg,
23
- ast.UAdd: op.pos,
24
- }
25
-
26
-
27
- def _safe_eval(expr: str) -> float:
28
- node = ast.parse(expr, mode="eval")
29
-
30
- def _eval(n):
31
- if isinstance(n, ast.Expression):
32
- return _eval(n.body)
33
- if isinstance(n, ast.Num): # 3.8 and earlier
34
- return n.n
35
- if isinstance(n, ast.Constant): # 3.8+
36
- if isinstance(n.value, int | float):
37
- return n.value
38
- raise ValueError("Only numeric constants are allowed")
39
- if isinstance(n, ast.BinOp) and type(n.op) in _OPS:
40
- return _OPS[type(n.op)](_eval(n.left), _eval(n.right))
41
- if isinstance(n, ast.UnaryOp) and type(n.op) in _OPS:
42
- return _OPS[type(n.op)](_eval(n.operand))
43
- if isinstance(n, ast.Expr):
44
- return _eval(n.value)
45
- raise ValueError("Unsupported expression")
46
-
47
- return _eval(node)
48
-
49
-
50
- def register(cli):
51
- @cli.command(name="calc")
52
- @click.argument("expr", nargs=-1)
53
- def calc(expr: tuple[str, ...]):
54
- """Evaluate a basic math expression, e.g., "(12_345 + 6789) / 100".
55
-
56
- Supports + - * / // % ** and parentheses. No variables or functions.
57
- """
58
- console = Console()
59
- expression = " ".join(expr).strip()
60
- if not expression:
61
- console.print("[dim]Usage:[/dim] synth-ai calc '2*(3+4)' or: uvx . calc 2 + 2")
62
- return
63
- try:
64
- # Allow underscores in numbers for readability
65
- expression = expression.replace("_", "")
66
- result = _safe_eval(expression)
67
- console.print(f"= [bold]{result}[/bold]")
68
- except Exception as e:
69
- console.print(f"[red]Error:[/red] {e}")
synth_ai/cli/demo.py DELETED
@@ -1,131 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- CLI: interactive launcher for example demos and forwarders for new RL demo.
4
-
5
- - `synth-ai demo` (no subcommand) -> legacy examples/ runner (run_demo.sh picker)
6
- - `synth-ai demo deploy|configure|run` -> forwards to synth_ai.demos.core.cli
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- import os
12
- import subprocess
13
- from pathlib import Path
14
-
15
- import click
16
-
17
-
18
- def _find_demo_scripts(root: Path) -> list[Path]:
19
- if not root.exists():
20
- return []
21
- return sorted([p for p in root.rglob("run_demo.sh") if p.is_file()])
22
-
23
-
24
- def _forward_to_new(args: list[str]) -> None:
25
- import sys
26
- try:
27
- from synth_ai.demos.core import cli as demo_cli # type: ignore
28
- except Exception as e: # pragma: no cover
29
- click.echo(f"Failed to import demo CLI: {e}")
30
- sys.exit(1)
31
- rc = int(demo_cli.main(args) or 0)
32
- if rc != 0:
33
- sys.exit(rc)
34
-
35
-
36
- def register(cli):
37
- @cli.group("demo", invoke_without_command=True)
38
- @click.option("--list", "list_only", is_flag=True, help="List available legacy demos and exit")
39
- @click.option("-f", "filter_term", default="", help="Filter legacy demos by substring")
40
- @click.pass_context
41
- def demo(ctx: click.Context, list_only: bool, filter_term: str):
42
- """Demo helpers.
43
-
44
- - Legacy mode (no subcommand): find and run examples/*/run_demo.sh
45
- - New RL demo subcommands: deploy, configure, run
46
- """
47
- if ctx.invoked_subcommand is not None:
48
- return
49
- # Legacy behavior: interactive examples runner
50
- repo_root = Path(os.getcwd())
51
- examples_dir = repo_root / "examples"
52
- demos = _find_demo_scripts(examples_dir)
53
- if filter_term:
54
- demos = [p for p in demos if filter_term.lower() in str(p).lower()]
55
-
56
- if not demos:
57
- click.echo("No run_demo.sh scripts found under examples/.")
58
- return
59
-
60
- if list_only:
61
- click.echo("Available demos:")
62
- for p in demos:
63
- click.echo(f" - {p.relative_to(repo_root)}")
64
- return
65
-
66
- click.echo("Available demos:")
67
- for idx, p in enumerate(demos, start=1):
68
- click.echo(f" {idx}. {p.relative_to(repo_root)}")
69
- click.echo("")
70
-
71
- def _validate_choice(val: str) -> int:
72
- try:
73
- i = int(val)
74
- except Exception as err:
75
- raise click.BadParameter("Enter a number from the list") from err
76
- if i < 1 or i > len(demos):
77
- raise click.BadParameter(f"Choose a number between 1 and {len(demos)}")
78
- return i
79
-
80
- choice = click.prompt("Select a demo to run", value_proc=_validate_choice)
81
- script = demos[choice - 1]
82
-
83
- click.echo("")
84
- click.echo(f"🚀 Running {script.relative_to(repo_root)}\n")
85
-
86
- try:
87
- subprocess.run(["bash", str(script)], check=True)
88
- except subprocess.CalledProcessError as e:
89
- click.echo(f"❌ Demo exited with non-zero status: {e.returncode}")
90
- except KeyboardInterrupt:
91
- click.echo("\n🛑 Demo interrupted by user")
92
-
93
- # (prepare command removed; configure now prepares baseline TOML)
94
-
95
- @demo.command("deploy")
96
- @click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
97
- @click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
98
- @click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
99
- @click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
100
- def demo_deploy(local: bool, app: str | None, name: str, script: str | None):
101
- args: list[str] = ["rl_demo.deploy"]
102
- if local:
103
- args.append("--local")
104
- if app:
105
- args.extend(["--app", app])
106
- if name:
107
- args.extend(["--name", name])
108
- if script:
109
- args.extend(["--script", script])
110
- _forward_to_new(args)
111
-
112
- @demo.command("configure")
113
- def demo_configure():
114
- _forward_to_new(["rl_demo.configure"])
115
-
116
- @demo.command("run")
117
- @click.option("--batch-size", type=int, default=None)
118
- @click.option("--group-size", type=int, default=None)
119
- @click.option("--model", type=str, default=None)
120
- @click.option("--timeout", type=int, default=600)
121
- def demo_run(batch_size: int | None, group_size: int | None, model: str | None, timeout: int):
122
- args = ["rl_demo.run"]
123
- if batch_size is not None:
124
- args.extend(["--batch-size", str(batch_size)])
125
- if group_size is not None:
126
- args.extend(["--group-size", str(group_size)])
127
- if model:
128
- args.extend(["--model", model])
129
- if timeout:
130
- args.extend(["--timeout", str(timeout)])
131
- _forward_to_new(args)