synth-optimizers 0.2.6.dev20260622__tar.gz → 0.2.7.dev20260814__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/Cargo.lock +150 -3
  2. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/Cargo.toml +1 -1
  3. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/PKG-INFO +4 -3
  4. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/README.md +2 -1
  5. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/pyproject.toml +3 -3
  6. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/Cargo.toml +1 -0
  7. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/openapi/gepa-service-v1.yaml +27 -3
  8. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/codex_app_server.rs +312 -11
  9. synth_optimizers-0.2.7.dev20260814/rust/crates/synth_gepa/src/jesterky_workflow.rs +695 -0
  10. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/lib.rs +1439 -338
  11. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/machines.rs +5 -0
  12. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/runtime.rs +449 -83
  13. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/service.rs +281 -23
  14. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/app_server.rs +41 -0
  15. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/codex_home.rs +53 -6
  16. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/mod.rs +8 -2
  17. synth_optimizers-0.2.7.dev20260814/rust/crates/synth_optimizer_platform/src/agent_runtime/nano.rs +796 -0
  18. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/role_agent.rs +2 -0
  19. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/session.rs +9 -2
  20. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/artifacts.rs +5 -1
  21. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/config.rs +240 -0
  22. synth_optimizers-0.2.7.dev20260814/rust/crates/synth_optimizer_platform/src/events.rs +598 -0
  23. synth_optimizers-0.2.7.dev20260814/rust/crates/synth_optimizer_platform/src/jesterky.rs +283 -0
  24. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/lib.rs +25 -12
  25. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/limit_engine.rs +29 -18
  26. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/limits.rs +126 -19
  27. synth_optimizers-0.2.7.dev20260814/rust/crates/synth_optimizer_platform/src/observability.rs +449 -0
  28. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/registry.rs +6 -6
  29. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/storage_maintenance.rs +1 -0
  30. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/usage.rs +79 -7
  31. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/workspace.rs +194 -16
  32. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizers_py/src/lib.rs +1 -1
  33. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/__init__.py +39 -1
  34. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/_synth_optimizers.pyi +1 -1
  35. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/board_server.py +36 -15
  36. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/cli.py +755 -24
  37. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/30-hosted.md +25 -6
  38. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/20-sdk.md +1 -1
  39. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/eval_stats.py +13 -5
  40. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/gelo.py +266 -26
  41. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/gepa.py +229 -2
  42. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/hosted.py +299 -9
  43. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/o11y.py +40 -14
  44. synth_optimizers-0.2.7.dev20260814/src/synth_optimizers/observability.py +450 -0
  45. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/tunnels.py +274 -43
  46. synth_optimizers-0.2.7.dev20260814/src/synth_optimizers/victorialogs.py +252 -0
  47. synth_optimizers-0.2.6.dev20260622/rust/crates/synth_optimizer_platform/src/events.rs +0 -289
  48. synth_optimizers-0.2.6.dev20260622/rust/crates/synth_optimizer_platform/src/observability.rs +0 -91
  49. synth_optimizers-0.2.6.dev20260622/src/synth_optimizers/observability.py +0 -161
  50. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/README.md +0 -0
  51. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/pipeline.rs +0 -0
  52. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/planner.rs +0 -0
  53. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_gepa/src/prompting_best_practices.md +0 -0
  54. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/Cargo.toml +0 -0
  55. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/README.md +0 -0
  56. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/README.md +0 -0
  57. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/daytona.rs +0 -0
  58. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/docker.rs +0 -0
  59. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/jsonrpc_read_window.rs +0 -0
  60. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/limits.rs +0 -0
  61. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/local.rs +0 -0
  62. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/substrate.rs +0 -0
  63. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/supervisor.rs +0 -0
  64. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/agent_runtime/usage.rs +0 -0
  65. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/artifact_store.rs +0 -0
  66. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/cache.rs +0 -0
  67. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/candidates.rs +0 -0
  68. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/checkpoints.rs +0 -0
  69. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/configured_limits.rs +0 -0
  70. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/container_contract.rs +0 -0
  71. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/data_models.rs +0 -0
  72. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/disk_budget.rs +0 -0
  73. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/error.rs +0 -0
  74. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/event_visualization.rs +0 -0
  75. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/evidence.rs +0 -0
  76. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/failures.rs +0 -0
  77. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/fsm.rs +0 -0
  78. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/http.rs +0 -0
  79. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/invariants.rs +0 -0
  80. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/jobs.rs +0 -0
  81. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/levers.rs +0 -0
  82. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/operations.rs +0 -0
  83. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/process.rs +0 -0
  84. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/projections.rs +0 -0
  85. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/prompt_program.rs +0 -0
  86. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/resources.rs +0 -0
  87. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/rollouts.rs +0 -0
  88. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/runtime_records.rs +0 -0
  89. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/scores.rs +0 -0
  90. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/sensors.rs +0 -0
  91. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/state_machine.rs +0 -0
  92. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizer_platform/src/stopper.rs +0 -0
  93. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizers_py/Cargo.toml +0 -0
  94. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/rust/crates/synth_optimizers_py/README.md +0 -0
  95. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/README.md +0 -0
  96. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/discovery.py +0 -0
  97. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/00-index.md +0 -0
  98. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/10-cli.md +0 -0
  99. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/20-sdk.md +0 -0
  100. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/containers/00-overview.md +0 -0
  101. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gelo/containers/20-contract.md +0 -0
  102. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/00-index.md +0 -0
  103. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/10-cli.md +0 -0
  104. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/algorithms/00-overview.md +0 -0
  105. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/algorithms/10-pipeline-modes.md +0 -0
  106. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/algorithms/20-proposer-and-policies.md +0 -0
  107. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/assets/synth-logo.png +0 -0
  108. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/containers/00-overview.md +0 -0
  109. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/containers/10-catalog.md +0 -0
  110. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs/gepa/containers/20-contract.md +0 -0
  111. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/docs_server.py +0 -0
  112. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/hosted_config.py +0 -0
  113. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/py.typed +0 -0
  114. {synth_optimizers-0.2.6.dev20260622 → synth_optimizers-0.2.7.dev20260814}/src/synth_optimizers/sdk.py +0 -0
@@ -14,6 +14,56 @@ dependencies = [
14
14
  "zerocopy",
15
15
  ]
16
16
 
17
+ [[package]]
18
+ name = "anstream"
19
+ version = "1.0.0"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
22
+ dependencies = [
23
+ "anstyle",
24
+ "anstyle-parse",
25
+ "anstyle-query",
26
+ "anstyle-wincon",
27
+ "colorchoice",
28
+ "is_terminal_polyfill",
29
+ "utf8parse",
30
+ ]
31
+
32
+ [[package]]
33
+ name = "anstyle"
34
+ version = "1.0.14"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
37
+
38
+ [[package]]
39
+ name = "anstyle-parse"
40
+ version = "1.0.0"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
43
+ dependencies = [
44
+ "utf8parse",
45
+ ]
46
+
47
+ [[package]]
48
+ name = "anstyle-query"
49
+ version = "1.1.5"
50
+ source = "registry+https://github.com/rust-lang/crates.io-index"
51
+ checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
52
+ dependencies = [
53
+ "windows-sys 0.61.2",
54
+ ]
55
+
56
+ [[package]]
57
+ name = "anstyle-wincon"
58
+ version = "3.0.11"
59
+ source = "registry+https://github.com/rust-lang/crates.io-index"
60
+ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
61
+ dependencies = [
62
+ "anstyle",
63
+ "once_cell_polyfill",
64
+ "windows-sys 0.61.2",
65
+ ]
66
+
17
67
  [[package]]
18
68
  name = "anyhow"
19
69
  version = "1.0.102"
@@ -87,6 +137,52 @@ version = "0.2.1"
87
137
  source = "registry+https://github.com/rust-lang/crates.io-index"
88
138
  checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
89
139
 
140
+ [[package]]
141
+ name = "clap"
142
+ version = "4.6.1"
143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
144
+ checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
145
+ dependencies = [
146
+ "clap_builder",
147
+ "clap_derive",
148
+ ]
149
+
150
+ [[package]]
151
+ name = "clap_builder"
152
+ version = "4.6.0"
153
+ source = "registry+https://github.com/rust-lang/crates.io-index"
154
+ checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
155
+ dependencies = [
156
+ "anstream",
157
+ "anstyle",
158
+ "clap_lex",
159
+ "strsim",
160
+ ]
161
+
162
+ [[package]]
163
+ name = "clap_derive"
164
+ version = "4.6.1"
165
+ source = "registry+https://github.com/rust-lang/crates.io-index"
166
+ checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
167
+ dependencies = [
168
+ "heck",
169
+ "proc-macro2",
170
+ "quote",
171
+ "syn",
172
+ ]
173
+
174
+ [[package]]
175
+ name = "clap_lex"
176
+ version = "1.1.0"
177
+ source = "registry+https://github.com/rust-lang/crates.io-index"
178
+ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
179
+
180
+ [[package]]
181
+ name = "colorchoice"
182
+ version = "1.0.5"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
185
+
90
186
  [[package]]
91
187
  name = "cpufeatures"
92
188
  version = "0.2.17"
@@ -557,6 +653,12 @@ version = "2.12.0"
557
653
  source = "registry+https://github.com/rust-lang/crates.io-index"
558
654
  checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
559
655
 
656
+ [[package]]
657
+ name = "is_terminal_polyfill"
658
+ version = "1.70.2"
659
+ source = "registry+https://github.com/rust-lang/crates.io-index"
660
+ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
661
+
560
662
  [[package]]
561
663
  name = "itoa"
562
664
  version = "1.0.18"
@@ -670,6 +772,12 @@ version = "1.21.4"
670
772
  source = "registry+https://github.com/rust-lang/crates.io-index"
671
773
  checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
672
774
 
775
+ [[package]]
776
+ name = "once_cell_polyfill"
777
+ version = "1.70.2"
778
+ source = "registry+https://github.com/rust-lang/crates.io-index"
779
+ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
780
+
673
781
  [[package]]
674
782
  name = "percent-encoding"
675
783
  version = "2.3.2"
@@ -1153,6 +1261,12 @@ version = "1.2.1"
1153
1261
  source = "registry+https://github.com/rust-lang/crates.io-index"
1154
1262
  checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1155
1263
 
1264
+ [[package]]
1265
+ name = "strsim"
1266
+ version = "0.11.1"
1267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1268
+ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1269
+
1156
1270
  [[package]]
1157
1271
  name = "subtle"
1158
1272
  version = "2.6.1"
@@ -1192,9 +1306,10 @@ dependencies = [
1192
1306
 
1193
1307
  [[package]]
1194
1308
  name = "synth_gepa"
1195
- version = "0.2.5"
1309
+ version = "0.2.7"
1196
1310
  dependencies = [
1197
1311
  "base64",
1312
+ "fs2",
1198
1313
  "reqwest",
1199
1314
  "serde",
1200
1315
  "serde_json",
@@ -1204,9 +1319,35 @@ dependencies = [
1204
1319
  "time",
1205
1320
  ]
1206
1321
 
1322
+ [[package]]
1323
+ name = "synth_mapo"
1324
+ version = "0.2.7"
1325
+ dependencies = [
1326
+ "serde",
1327
+ "serde_json",
1328
+ "sha2",
1329
+ "synth_optimizer_platform",
1330
+ "toml",
1331
+ "uuid",
1332
+ ]
1333
+
1334
+ [[package]]
1335
+ name = "synth_marl_promptopt"
1336
+ version = "0.2.7"
1337
+ dependencies = [
1338
+ "clap",
1339
+ "serde",
1340
+ "serde_json",
1341
+ "sha2",
1342
+ "synth_gepa",
1343
+ "synth_optimizer_platform",
1344
+ "toml",
1345
+ "uuid",
1346
+ ]
1347
+
1207
1348
  [[package]]
1208
1349
  name = "synth_optimizer_platform"
1209
- version = "0.2.5"
1350
+ version = "0.2.7"
1210
1351
  dependencies = [
1211
1352
  "fs2",
1212
1353
  "libc",
@@ -1223,7 +1364,7 @@ dependencies = [
1223
1364
 
1224
1365
  [[package]]
1225
1366
  name = "synth_optimizers_py"
1226
- version = "0.2.5"
1367
+ version = "0.2.7"
1227
1368
  dependencies = [
1228
1369
  "pyo3",
1229
1370
  "serde_json",
@@ -1522,6 +1663,12 @@ version = "1.0.4"
1522
1663
  source = "registry+https://github.com/rust-lang/crates.io-index"
1523
1664
  checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
1524
1665
 
1666
+ [[package]]
1667
+ name = "utf8parse"
1668
+ version = "0.2.2"
1669
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1670
+ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1671
+
1525
1672
  [[package]]
1526
1673
  name = "uuid"
1527
1674
  version = "1.23.1"
@@ -3,7 +3,7 @@ members = ["rust/crates/synth_optimizer_platform", "rust/crates/synth_gepa", "ru
3
3
  resolver = "2"
4
4
 
5
5
  [workspace.package]
6
- version = "0.2.5"
6
+ version = "0.2.7"
7
7
  edition = "2021"
8
8
  license = "Apache-2.0"
9
9
  authors = ["Synth Laboratories <josh@usesynth.ai>"]
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-optimizers
3
- Version: 0.2.6.dev20260622
3
+ Version: 0.2.7.dev20260814
4
4
  Requires-Dist: pydantic>=2.0.0
5
- Requires-Dist: synth-containers==0.2.0.20260604
5
+ Requires-Dist: synth-containers==0.4.1.dev20260814
6
6
  Requires-Dist: websocket-client>=1.8.0
7
7
  Requires-Dist: datasets>=2.19.0 ; extra == 'banking77'
8
8
  Requires-Dist: openai>=1.0.0 ; extra == 'banking77'
@@ -116,7 +116,7 @@ with container.serve() as handle:
116
116
  ).execute()
117
117
 
118
118
  print(result.best_candidate)
119
- print(f"cost: ${result.cost_usd:.2f}")
119
+ print("cost: unknown" if result.cost_usd is None else f"cost: ${result.cost_usd:.2f}")
120
120
  ```
121
121
 
122
122
  Or load TOML directly: `GepaRun.from_toml("gepa.toml").execute()`.
@@ -174,6 +174,7 @@ policy can stay on OpenAI. See [skills/gepa/SKILL.md](skills/gepa/SKILL.md) for
174
174
  - **OpenAI API key proposer** — run-local Codex home; does not use your host `~/.codex` login.
175
175
  - **OpenRouter proposer** — provider-aware Codex config and base URL; OpenRouter works for policy rollouts too.
176
176
  - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`; proposer usage is $0, policy rollouts still bill normally.
177
+ - **Nano-Codex proposer harness** — explicit `[proposer.nano_codex]` opt-in keeps one ChatGPT-authenticated app-server session warm across compatible GEPA generations, caches static task/program context by content digest, records monotonic JSONL events and typed turn receipts, and can replay receipts with zero live model or tool calls. See [`dev_examples/nano_codex_gepa/`](dev_examples/nano_codex_gepa/).
177
178
  - **Live usage** — `SYNTH_OPTIMIZERS_TERMINAL=1` prints running token and cost splits (`usage total=… policy=… proposer=…`).
178
179
  - **Docker proposer** — `runtime_substrate = "docker"` with `[proposer.docker].image`; workspaces stage under `~/.cache/synth-gepa-docker-workspaces/`, sync back, then cleanup; image: `docker/codex-gepa-proposer/Dockerfile`.
179
180
  - **Gemini and other policy providers** — supported on the policy side via `[policy].provider`, `base_url`, and container env keys; proposer stays Codex.
@@ -94,7 +94,7 @@ with container.serve() as handle:
94
94
  ).execute()
95
95
 
96
96
  print(result.best_candidate)
97
- print(f"cost: ${result.cost_usd:.2f}")
97
+ print("cost: unknown" if result.cost_usd is None else f"cost: ${result.cost_usd:.2f}")
98
98
  ```
99
99
 
100
100
  Or load TOML directly: `GepaRun.from_toml("gepa.toml").execute()`.
@@ -152,6 +152,7 @@ policy can stay on OpenAI. See [skills/gepa/SKILL.md](skills/gepa/SKILL.md) for
152
152
  - **OpenAI API key proposer** — run-local Codex home; does not use your host `~/.codex` login.
153
153
  - **OpenRouter proposer** — provider-aware Codex config and base URL; OpenRouter works for policy rollouts too.
154
154
  - **ChatGPT subscription proposer** — `auth_mode = "chatgpt"` with required `codex_home` (OAuth via [Codex CLI](https://github.com/openai/codex) or [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth)); models include `gpt-5.4-mini`, `gpt-5.3-codex`, `gpt-5.3-codex-spark`, `gpt-5.5`; proposer usage is $0, policy rollouts still bill normally.
155
+ - **Nano-Codex proposer harness** — explicit `[proposer.nano_codex]` opt-in keeps one ChatGPT-authenticated app-server session warm across compatible GEPA generations, caches static task/program context by content digest, records monotonic JSONL events and typed turn receipts, and can replay receipts with zero live model or tool calls. See [`dev_examples/nano_codex_gepa/`](dev_examples/nano_codex_gepa/).
155
156
  - **Live usage** — `SYNTH_OPTIMIZERS_TERMINAL=1` prints running token and cost splits (`usage total=… policy=… proposer=…`).
156
157
  - **Docker proposer** — `runtime_substrate = "docker"` with `[proposer.docker].image`; workspaces stage under `~/.cache/synth-gepa-docker-workspaces/`, sync back, then cleanup; image: `docker/codex-gepa-proposer/Dockerfile`.
157
158
  - **Gemini and other policy providers** — supported on the policy side via `[policy].provider`, `base_url`, and container env keys; proposer stays Codex.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "synth-optimizers"
3
- version = "0.2.6.dev20260622"
3
+ version = "0.2.7.dev20260814"
4
4
  description = "Public Synth optimizer tooling with a Rust GEPA core."
5
5
  authors = [{name = "Synth Laboratories", email = "josh@usesynth.ai"}]
6
6
  readme = "README.md"
@@ -8,7 +8,7 @@ requires-python = ">=3.11"
8
8
  license = "Apache-2.0"
9
9
  dependencies = [
10
10
  "pydantic>=2.0.0",
11
- "synth-containers==0.2.0.20260604",
11
+ "synth-containers==0.4.1.dev20260814",
12
12
  "websocket-client>=1.8.0",
13
13
  ]
14
14
 
@@ -54,7 +54,7 @@ include = ["src/synth_optimizers/docs/**/*"]
54
54
  package = true
55
55
 
56
56
  [tool.uv.sources]
57
- synth-containers = { path = "../containers", editable = true }
57
+ synth-containers = { git = "https://github.com/synth-laboratories/containers.git", rev = "e76f8e4ba3edae10dec24bf9e71ec1a7fb332bed" }
58
58
 
59
59
  [tool.ruff]
60
60
  line-length = 100
@@ -9,6 +9,7 @@ readme = "README.md"
9
9
 
10
10
  [dependencies]
11
11
  base64.workspace = true
12
+ fs2.workspace = true
12
13
  reqwest.workspace = true
13
14
  serde.workspace = true
14
15
  serde_json.workspace = true
@@ -179,6 +179,30 @@ paths:
179
179
  schema: { $ref: '#/components/schemas/RunStateSnapshot' }
180
180
  '404': { $ref: '#/components/responses/RunNotFound' }
181
181
 
182
+ /runs/{run_id}/optimizer-events:
183
+ parameters: [ { $ref: '#/components/parameters/RunId' } ]
184
+ get:
185
+ operationId: listOptimizerEvents
186
+ summary: Read the durable canonical optimizer event stream
187
+ description: |
188
+ Returns only `optimizer_event.v1` records owned by this Run. The
189
+ `after_sequence` cursor is exclusive, so retrying the same request is
190
+ idempotent and reconnecting from N returns only records after N.
191
+ parameters:
192
+ - name: after_sequence
193
+ in: query
194
+ schema: { type: integer, minimum: 0, default: 0 }
195
+ - name: limit
196
+ in: query
197
+ schema: { type: integer, minimum: 1, maximum: 2000, default: 500 }
198
+ responses:
199
+ '200':
200
+ description: A cursor page from the per-Run durable optimizer log.
201
+ content:
202
+ application/json:
203
+ schema: { type: object }
204
+ '404': { $ref: '#/components/responses/RunNotFound' }
205
+
182
206
  /runs/{run_id}/timings:
183
207
  parameters: [ { $ref: '#/components/parameters/RunId' } ]
184
208
  get:
@@ -814,7 +838,7 @@ components:
814
838
  best_candidate_id: { type: [string, 'null'] }
815
839
  candidate_count: { type: integer, minimum: 0 }
816
840
  rollout_count: { type: integer, minimum: 0 }
817
- cost_usd: { type: number }
841
+ cost_usd: { type: [number, 'null'], minimum: 0 }
818
842
  usage:
819
843
  type: object
820
844
  additionalProperties: true
@@ -941,7 +965,7 @@ components:
941
965
  type: object
942
966
  properties:
943
967
  total_tokens: { type: integer, minimum: 0 }
944
- cost_usd: { type: number, minimum: 0 }
968
+ cost_usd: { type: [number, 'null'], minimum: 0 }
945
969
 
946
970
  RunTransitionStatsSource:
947
971
  type: object
@@ -1189,7 +1213,7 @@ components:
1189
1213
  properties:
1190
1214
  input_tokens: { type: integer }
1191
1215
  output_tokens: { type: integer }
1192
- cost_usd: { type: number }
1216
+ cost_usd: { type: [number, 'null'], minimum: 0 }
1193
1217
 
1194
1218
  Outcome:
1195
1219
  type: object