agentevolve-optimizer 0.5.0__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 (414) hide show
  1. agent_evolve/__init__.py +722 -0
  2. agent_evolve/agentic.py +2800 -0
  3. agent_evolve/api.py +767 -0
  4. agent_evolve/application/__init__.py +1580 -0
  5. agent_evolve/application/action_allocation.py +744 -0
  6. agent_evolve/application/action_allocation_frame.py +347 -0
  7. agent_evolve/application/action_allocation_frame_commit.py +185 -0
  8. agent_evolve/application/action_allocation_frame_commit_v3.py +184 -0
  9. agent_evolve/application/action_allocation_frame_v3.py +338 -0
  10. agent_evolve/application/action_archive_value.py +497 -0
  11. agent_evolve/application/action_evidence_consistency.py +455 -0
  12. agent_evolve/application/action_forecast_partitioning.py +1471 -0
  13. agent_evolve/application/action_metric_projection.py +211 -0
  14. agent_evolve/application/action_role_value.py +680 -0
  15. agent_evolve/application/action_score_authorities.py +363 -0
  16. agent_evolve/application/action_structural_signature.py +116 -0
  17. agent_evolve/application/action_target_realization.py +402 -0
  18. agent_evolve/application/agentic_evolution.py +7734 -0
  19. agent_evolve/application/agentic_portfolio_residual_expert.py +835 -0
  20. agent_evolve/application/anchor_residual_identification.py +463 -0
  21. agent_evolve/application/archive_conditioned_action_target.py +208 -0
  22. agent_evolve/application/artifact_journal.py +246 -0
  23. agent_evolve/application/artifact_replay.py +347 -0
  24. agent_evolve/application/budgeted_optimizer.py +1828 -0
  25. agent_evolve/application/calibrated_campaign.py +485 -0
  26. agent_evolve/application/calibrated_current_prefix_forecast_opportunity.py +322 -0
  27. agent_evolve/application/calibrated_positive_gain_opportunity.py +1581 -0
  28. agent_evolve/application/campaign_capacity_recourse.py +254 -0
  29. agent_evolve/application/campaign_contextual_outcomes.py +119 -0
  30. agent_evolve/application/campaign_diagnostic_blocks.py +930 -0
  31. agent_evolve/application/campaign_evidence_registry.py +262 -0
  32. agent_evolve/application/campaign_execution.py +2537 -0
  33. agent_evolve/application/campaign_generation_audit.py +942 -0
  34. agent_evolve/application/campaign_learning.py +1812 -0
  35. agent_evolve/application/campaign_learning_runtime.py +1977 -0
  36. agent_evolve/application/campaign_search_phase.py +227 -0
  37. agent_evolve/application/campaign_selector_context_extension.py +220 -0
  38. agent_evolve/application/campaign_variation_envelope.py +649 -0
  39. agent_evolve/application/campaign_variation_trace.py +451 -0
  40. agent_evolve/application/candidate_archive_consequence.py +128 -0
  41. agent_evolve/application/causal_opportunity_portfolio_gate.py +385 -0
  42. agent_evolve/application/composite_outcome_updater.py +145 -0
  43. agent_evolve/application/composition_portfolio_selection.py +363 -0
  44. agent_evolve/application/concurrent_stage.py +144 -0
  45. agent_evolve/application/contextual_action_allocation.py +181 -0
  46. agent_evolve/application/contextual_campaign_outcomes.py +267 -0
  47. agent_evolve/application/contextual_campaign_planning.py +1366 -0
  48. agent_evolve/application/contextual_delayed_credit.py +651 -0
  49. agent_evolve/application/contextual_search_controller.py +2374 -0
  50. agent_evolve/application/current_prefix_forecast_opportunity.py +714 -0
  51. agent_evolve/application/decision_metric_projection.py +112 -0
  52. agent_evolve/application/derived_action_semantics.py +129 -0
  53. agent_evolve/application/detailed_evaluation.py +449 -0
  54. agent_evolve/application/earned_lineage.py +1011 -0
  55. agent_evolve/application/effective_choice_audit.py +484 -0
  56. agent_evolve/application/empirical_consequence_calibration.py +908 -0
  57. agent_evolve/application/evaluation_accounting.py +325 -0
  58. agent_evolve/application/evaluation_cache.py +199 -0
  59. agent_evolve/application/evaluation_escrow.py +547 -0
  60. agent_evolve/application/evaluation_recourse.py +253 -0
  61. agent_evolve/application/event_recorder.py +151 -0
  62. agent_evolve/application/evolution_campaign.py +1840 -0
  63. agent_evolve/application/executable_hypothesis.py +323 -0
  64. agent_evolve/application/factorial_branch_pilot.py +772 -0
  65. agent_evolve/application/finite_acquisition_capacity_recourse.py +672 -0
  66. agent_evolve/application/finite_acquisition_residual_expert.py +373 -0
  67. agent_evolve/application/finite_acquisition_variation_envelope.py +802 -0
  68. agent_evolve/application/finite_action_hypothesis_semantics.py +446 -0
  69. agent_evolve/application/finite_action_selection.py +188 -0
  70. agent_evolve/application/finite_action_set.py +306 -0
  71. agent_evolve/application/finite_action_transition.py +537 -0
  72. agent_evolve/application/finite_variation_eligibility.py +296 -0
  73. agent_evolve/application/forecast_geometry_portfolio.py +799 -0
  74. agent_evolve/application/forecast_opportunity_shadow_calibration.py +316 -0
  75. agent_evolve/application/front_proximity_admission.py +311 -0
  76. agent_evolve/application/front_proximity_parent_basis.py +458 -0
  77. agent_evolve/application/frozen_hurdle_score.py +659 -0
  78. agent_evolve/application/g3_causal_screen.py +2257 -0
  79. agent_evolve/application/g3_causal_validation.py +1046 -0
  80. agent_evolve/application/g3_postseal_curation.py +818 -0
  81. agent_evolve/application/gated_agentic_generator.py +205 -0
  82. agent_evolve/application/generation_feedback.py +293 -0
  83. agent_evolve/application/generative_proposal_journal.py +185 -0
  84. agent_evolve/application/geometry_conditional_elasticity.py +453 -0
  85. agent_evolve/application/global_wave_action_allocation.py +1151 -0
  86. agent_evolve/application/head_mass_conditional_seat.py +268 -0
  87. agent_evolve/application/identifiable_reflection_evidence.py +1147 -0
  88. agent_evolve/application/identifiable_reflection_learning.py +395 -0
  89. agent_evolve/application/identifiable_reflection_request.py +364 -0
  90. agent_evolve/application/in_memory_residual_archive.py +341 -0
  91. agent_evolve/application/insight_memory.py +1804 -0
  92. agent_evolve/application/live_runtime_manifest.py +758 -0
  93. agent_evolve/application/llm_task_queue.py +769 -0
  94. agent_evolve/application/matched_finite_action_block.py +409 -0
  95. agent_evolve/application/materialized_action_broker.py +2328 -0
  96. agent_evolve/application/materialized_action_constraints.py +83 -0
  97. agent_evolve/application/materialized_variation.py +211 -0
  98. agent_evolve/application/multi_option_evolution.py +1536 -0
  99. agent_evolve/application/outcome_adaptive_action_racing.py +2827 -0
  100. agent_evolve/application/outcome_adaptive_residual_campaign_runtime.py +580 -0
  101. agent_evolve/application/outcome_adaptive_residual_portfolio_evolution.py +3671 -0
  102. agent_evolve/application/outcome_conditioned_portfolio_selection.py +1374 -0
  103. agent_evolve/application/outcome_relation.py +193 -0
  104. agent_evolve/application/paired_allocation_comparison.py +241 -0
  105. agent_evolve/application/paired_block_schedule.py +127 -0
  106. agent_evolve/application/parent_measurement.py +226 -0
  107. agent_evolve/application/pareto_archive.py +811 -0
  108. agent_evolve/application/portfolio_campaign_runtime.py +4739 -0
  109. agent_evolve/application/portfolio_evolution.py +2950 -0
  110. agent_evolve/application/portfolio_hypothesis_observations.py +814 -0
  111. agent_evolve/application/portfolio_memory_attribution.py +581 -0
  112. agent_evolve/application/portfolio_memory_dose.py +788 -0
  113. agent_evolve/application/portfolio_memory_matched_control.py +938 -0
  114. agent_evolve/application/portfolio_memory_transfer.py +297 -0
  115. agent_evolve/application/portfolio_optimization_memory.py +363 -0
  116. agent_evolve/application/portfolio_outcome_feedback.py +1613 -0
  117. agent_evolve/application/portfolio_projection.py +335 -0
  118. agent_evolve/application/portfolio_recombination.py +2032 -0
  119. agent_evolve/application/post_evolution_reflection.py +834 -0
  120. agent_evolve/application/postcommit_rank_authority.py +245 -0
  121. agent_evolve/application/precommitted_portfolio_racing.py +2762 -0
  122. agent_evolve/application/prequential_archive_opportunity_calibration.py +1154 -0
  123. agent_evolve/application/prequential_residual_exploration.py +343 -0
  124. agent_evolve/application/prequential_score_portfolio.py +954 -0
  125. agent_evolve/application/projections.py +292 -0
  126. agent_evolve/application/protected_action_committee.py +1027 -0
  127. agent_evolve/application/protected_branch_pilot.py +376 -0
  128. agent_evolve/application/protected_current_prefix_forecast_opportunity.py +552 -0
  129. agent_evolve/application/provider_replay.py +910 -0
  130. agent_evolve/application/rank_balanced_causal_pilot.py +1372 -0
  131. agent_evolve/application/recombination_residual_expert.py +403 -0
  132. agent_evolve/application/reflection_workflow.py +571 -0
  133. agent_evolve/application/region_conditional_credit.py +911 -0
  134. agent_evolve/application/residual_campaign_runtime.py +531 -0
  135. agent_evolve/application/residual_headroom_campaign_runtime.py +459 -0
  136. agent_evolve/application/residual_headroom_ledger.py +1544 -0
  137. agent_evolve/application/residual_learning_transaction.py +396 -0
  138. agent_evolve/application/residual_portfolio_evolution.py +1228 -0
  139. agent_evolve/application/residual_reachability.py +749 -0
  140. agent_evolve/application/residual_stage_credit.py +499 -0
  141. agent_evolve/application/same_prefix_paired_audit.py +1580 -0
  142. agent_evolve/application/semantic_coverage_score_portfolio.py +838 -0
  143. agent_evolve/application/sequential_lineage_allocation.py +1017 -0
  144. agent_evolve/application/sequential_market_replay.py +1395 -0
  145. agent_evolve/application/sequential_residual_campaign_runtime.py +305 -0
  146. agent_evolve/application/sequential_residual_portfolio_evolution.py +940 -0
  147. agent_evolve/application/single_score_action_allocation.py +299 -0
  148. agent_evolve/application/source_exposure_allocation.py +906 -0
  149. agent_evolve/application/staged_memory.py +210 -0
  150. agent_evolve/application/stratified_cold_start_allocation.py +732 -0
  151. agent_evolve/application/support_guarded_hurdle_score.py +549 -0
  152. agent_evolve/application/target_conditioned_action_forecast.py +595 -0
  153. agent_evolve/application/target_conditioned_campaign.py +566 -0
  154. agent_evolve/application/treatment_assignment.py +201 -0
  155. agent_evolve/application/trusted_objective_evidence.py +217 -0
  156. agent_evolve/application/two_stage_action_evolution.py +1131 -0
  157. agent_evolve/application/v8lite_allocation_policy.py +1083 -0
  158. agent_evolve/application/v9_candidate_policy.py +1303 -0
  159. agent_evolve/bootstrap.py +108 -0
  160. agent_evolve/campaign_presets.py +517 -0
  161. agent_evolve/campaign_profiles.py +452 -0
  162. agent_evolve/campaign_variation_topology.py +288 -0
  163. agent_evolve/campaign_workload.py +950 -0
  164. agent_evolve/cli.py +797 -0
  165. agent_evolve/contract.py +241 -0
  166. agent_evolve/core/__init__.py +91 -0
  167. agent_evolve/core/action_semantics.py +411 -0
  168. agent_evolve/core/authored.py +105 -0
  169. agent_evolve/core/formatting.py +286 -0
  170. agent_evolve/core/optimization_semantics.py +324 -0
  171. agent_evolve/core/problem.py +167 -0
  172. agent_evolve/core/results.py +323 -0
  173. agent_evolve/core/stats.py +70 -0
  174. agent_evolve/core/telemetry.py +100 -0
  175. agent_evolve/domain/__init__.py +89 -0
  176. agent_evolve/domain/artifact.py +162 -0
  177. agent_evolve/domain/durable_text.py +68 -0
  178. agent_evolve/domain/event.py +1454 -0
  179. agent_evolve/domain/finite_action_set.py +426 -0
  180. agent_evolve/domain/finite_variation.py +526 -0
  181. agent_evolve/domain/generative_emission.py +559 -0
  182. agent_evolve/domain/ids.py +163 -0
  183. agent_evolve/domain/inline_text.py +106 -0
  184. agent_evolve/domain/insight.py +27 -0
  185. agent_evolve/domain/lineage.py +737 -0
  186. agent_evolve/domain/llm_task_queue.py +960 -0
  187. agent_evolve/domain/outcome.py +96 -0
  188. agent_evolve/domain/patch.py +854 -0
  189. agent_evolve/domain/typed_json.py +542 -0
  190. agent_evolve/domain/variation_space.py +158 -0
  191. agent_evolve/driver.py +1014 -0
  192. agent_evolve/harness/__init__.py +29 -0
  193. agent_evolve/harness/base.py +242 -0
  194. agent_evolve/harness/directives.py +163 -0
  195. agent_evolve/harness/generative_seal.py +479 -0
  196. agent_evolve/harness/registry.py +41 -0
  197. agent_evolve/infrastructure/__init__.py +39 -0
  198. agent_evolve/infrastructure/artifacts/__init__.py +6 -0
  199. agent_evolve/infrastructure/artifacts/_verification.py +67 -0
  200. agent_evolve/infrastructure/artifacts/filesystem.py +343 -0
  201. agent_evolve/infrastructure/artifacts/in_memory.py +73 -0
  202. agent_evolve/infrastructure/asyncio_runtime.py +109 -0
  203. agent_evolve/infrastructure/authored_runtime.py +188 -0
  204. agent_evolve/infrastructure/authored_worker.py +171 -0
  205. agent_evolve/infrastructure/clock.py +53 -0
  206. agent_evolve/infrastructure/events/__init__.py +6 -0
  207. agent_evolve/infrastructure/events/_validation.py +89 -0
  208. agent_evolve/infrastructure/events/in_memory.py +56 -0
  209. agent_evolve/infrastructure/events/jsonl.py +193 -0
  210. agent_evolve/infrastructure/exception_provenance.py +215 -0
  211. agent_evolve/infrastructure/ids.py +118 -0
  212. agent_evolve/infrastructure/lineage_codec.py +1836 -0
  213. agent_evolve/infrastructure/outcome_adaptive_phase_journal.py +170 -0
  214. agent_evolve/infrastructure/residual_headroom_journal.py +221 -0
  215. agent_evolve/infrastructure/resource_lease.py +370 -0
  216. agent_evolve/infrastructure/sanitization/__init__.py +8 -0
  217. agent_evolve/infrastructure/sanitization/strict_json.py +484 -0
  218. agent_evolve/infrastructure/sequential_phase_journal.py +170 -0
  219. agent_evolve/infrastructure/stream_liveness.py +383 -0
  220. agent_evolve/infrastructure/subprocess_boundary.py +136 -0
  221. agent_evolve/integrations/__init__.py +1 -0
  222. agent_evolve/integrations/botorch/__init__.py +28 -0
  223. agent_evolve/integrations/botorch/finite_qlognehvi.py +190 -0
  224. agent_evolve/integrations/botorch/finite_qlognehvi_batch.py +155 -0
  225. agent_evolve/integrations/botorch/finite_qlognehvi_batch_identity.py +20 -0
  226. agent_evolve/integrations/botorch/finite_qlognehvi_batch_worker.py +55 -0
  227. agent_evolve/integrations/botorch/finite_qlognehvi_identity.py +22 -0
  228. agent_evolve/integrations/botorch/finite_qlognehvi_worker.py +55 -0
  229. agent_evolve/integrations/botorch/subprocess_qlognehvi.py +261 -0
  230. agent_evolve/integrations/botorch/subprocess_qlognehvi_batch.py +273 -0
  231. agent_evolve/integrations/completion.py +242 -0
  232. agent_evolve/integrations/pydantic_ai/__init__.py +441 -0
  233. agent_evolve/integrations/pydantic_ai/action_forecast.py +1068 -0
  234. agent_evolve/integrations/pydantic_ai/agentic_generator.py +2308 -0
  235. agent_evolve/integrations/pydantic_ai/async_generator.py +1604 -0
  236. agent_evolve/integrations/pydantic_ai/boundary_codec.py +1526 -0
  237. agent_evolve/integrations/pydantic_ai/calibrated_portfolio_campaign.py +756 -0
  238. agent_evolve/integrations/pydantic_ai/calibrated_portfolio_selection.py +7537 -0
  239. agent_evolve/integrations/pydantic_ai/campaign_acquisition.py +609 -0
  240. agent_evolve/integrations/pydantic_ai/execution_binding.py +138 -0
  241. agent_evolve/integrations/pydantic_ai/forecast_geometry_action_committee.py +217 -0
  242. agent_evolve/integrations/pydantic_ai/harness.py +159 -0
  243. agent_evolve/integrations/pydantic_ai/heterogeneous_model_execution.py +306 -0
  244. agent_evolve/integrations/pydantic_ai/hierarchical_residual_adaptive_semantic_view.py +179 -0
  245. agent_evolve/integrations/pydantic_ai/json_schema_dialect.py +108 -0
  246. agent_evolve/integrations/pydantic_ai/materialized_hierarchical_residual_expert.py +952 -0
  247. agent_evolve/integrations/pydantic_ai/materialized_portfolio_judge.py +520 -0
  248. agent_evolve/integrations/pydantic_ai/model_execution_profile.py +659 -0
  249. agent_evolve/integrations/pydantic_ai/outbound_request_manifest.py +1170 -0
  250. agent_evolve/integrations/pydantic_ai/portable_residual_consequence_features.py +575 -0
  251. agent_evolve/integrations/pydantic_ai/portfolio_selection.py +422 -0
  252. agent_evolve/integrations/pydantic_ai/progress_aware_openrouter.py +416 -0
  253. agent_evolve/integrations/pydantic_ai/provider_attempt_join.py +1523 -0
  254. agent_evolve/integrations/pydantic_ai/provider_free_calibrated_runner.py +607 -0
  255. agent_evolve/integrations/pydantic_ai/queued_runner.py +2634 -0
  256. agent_evolve/integrations/pydantic_ai/reconciled_residual_reachability.py +1417 -0
  257. agent_evolve/integrations/pydantic_ai/residual_forecast_geometry.py +445 -0
  258. agent_evolve/integrations/pydantic_ai/residual_reachability.py +674 -0
  259. agent_evolve/integrations/pydantic_ai/residual_semantic_cells.py +239 -0
  260. agent_evolve/integrations/pydantic_ai/sealed_output_replay.py +1068 -0
  261. agent_evolve/integrations/pydantic_ai/semantic_coverage_residual_portfolio.py +770 -0
  262. agent_evolve/integrations/pydantic_ai/semantic_decision_replay.py +383 -0
  263. agent_evolve/integrations/pydantic_ai/support_adaptive_residual_portfolio.py +135 -0
  264. agent_evolve/integrations/pydantic_ai/trusted_residual_prompt_context.py +143 -0
  265. agent_evolve/integrations/pydantic_ai/validated_openrouter_model.py +107 -0
  266. agent_evolve/integrations/pymoo_adapter.py +242 -0
  267. agent_evolve/policies/__init__.py +17 -0
  268. agent_evolve/policies/check.py +469 -0
  269. agent_evolve/policies/emit_scaffold.py +451 -0
  270. agent_evolve/policies/feedback/__init__.py +37 -0
  271. agent_evolve/policies/feedback/held_out_asn.py +1325 -0
  272. agent_evolve/policies/genetic.py +607 -0
  273. agent_evolve/policies/llm_backoff.py +183 -0
  274. agent_evolve/policies/llm_chooser.py +226 -0
  275. agent_evolve/policies/llm_generator.py +1760 -0
  276. agent_evolve/policies/llm_init.py +267 -0
  277. agent_evolve/policies/llm_operator.py +109 -0
  278. agent_evolve/policies/llm_prior.py +194 -0
  279. agent_evolve/policies/llm_surrogate.py +334 -0
  280. agent_evolve/policies/measurement_evidence.py +704 -0
  281. agent_evolve/policies/memory/__init__.py +223 -0
  282. agent_evolve/policies/memory/balanced_subset_blocks.py +707 -0
  283. agent_evolve/policies/memory/compatibility_matching.py +593 -0
  284. agent_evolve/policies/memory/global_falsification.py +1841 -0
  285. agent_evolve/policies/memory/prompt_shape.py +503 -0
  286. agent_evolve/policies/memory/randomized_subset.py +714 -0
  287. agent_evolve/policies/memory/staged_causal.py +1270 -0
  288. agent_evolve/policies/memory/treatment_compliance.py +759 -0
  289. agent_evolve/policies/objective_resolution/__init__.py +17 -0
  290. agent_evolve/policies/objective_resolution/fixed_grid.py +364 -0
  291. agent_evolve/policies/operator_portfolio.py +407 -0
  292. agent_evolve/policies/reguidance.py +1133 -0
  293. agent_evolve/policies/reward/__init__.py +83 -0
  294. agent_evolve/policies/reward/affine_candidate_consequence.py +156 -0
  295. agent_evolve/policies/reward/affine_candidate_consequence_3d.py +159 -0
  296. agent_evolve/policies/reward/affine_hypervolume.py +490 -0
  297. agent_evolve/policies/reward/affine_hypervolume_3d.py +567 -0
  298. agent_evolve/policies/reward/contextual_marginal_utility.py +318 -0
  299. agent_evolve/policies/reward/frozen_archive.py +360 -0
  300. agent_evolve/policies/reward/frozen_wave_archive.py +368 -0
  301. agent_evolve/policies/search_state.py +208 -0
  302. agent_evolve/policies/selection/__init__.py +345 -0
  303. agent_evolve/policies/selection/acquisition_certified_slate.py +684 -0
  304. agent_evolve/policies/selection/affine_frontier_context.py +330 -0
  305. agent_evolve/policies/selection/affine_frontier_target.py +473 -0
  306. agent_evolve/policies/selection/archive_elite.py +1346 -0
  307. agent_evolve/policies/selection/calibrated_portfolio_binding.py +640 -0
  308. agent_evolve/policies/selection/calibrated_slate.py +1394 -0
  309. agent_evolve/policies/selection/calibrated_slate_codec.py +579 -0
  310. agent_evolve/policies/selection/common_candidate_pool.py +685 -0
  311. agent_evolve/policies/selection/diagnostic_sampling.py +319 -0
  312. agent_evolve/policies/selection/disjoint_pairs.py +479 -0
  313. agent_evolve/policies/selection/elite_explorer.py +719 -0
  314. agent_evolve/policies/selection/finite_action.py +187 -0
  315. agent_evolve/policies/selection/finite_option_prompt_projection.py +377 -0
  316. agent_evolve/policies/selection/finite_palette_evidence.py +247 -0
  317. agent_evolve/policies/selection/forecast_calibration.py +922 -0
  318. agent_evolve/policies/selection/frontier_probe_slate.py +814 -0
  319. agent_evolve/policies/selection/frozen_archive_pairs.py +762 -0
  320. agent_evolve/policies/selection/full_support_slate.py +91 -0
  321. agent_evolve/policies/selection/meaningful_direction.py +240 -0
  322. agent_evolve/policies/selection/memory_dose_feasibility.py +259 -0
  323. agent_evolve/policies/selection/model_anchored_slate.py +826 -0
  324. agent_evolve/policies/selection/phenotype_recourse.py +979 -0
  325. agent_evolve/policies/selection/proposal_support.py +368 -0
  326. agent_evolve/policies/selection/random_portfolio.py +254 -0
  327. agent_evolve/policies/selection/regret_bounded_slate.py +1084 -0
  328. agent_evolve/policies/selection/residual_frontier.py +463 -0
  329. agent_evolve/policies/selection/residual_frontier_target.py +605 -0
  330. agent_evolve/policies/selection/structural_posterior_slate.py +1571 -0
  331. agent_evolve/policies/selection/target_conditioned_allocator.py +648 -0
  332. agent_evolve/policies/selection/target_conditioned_features.py +812 -0
  333. agent_evolve/policies/selection/target_conditioned_prequential.py +1527 -0
  334. agent_evolve/policies/selection/task_keyed_palette.py +906 -0
  335. agent_evolve/policies/semantics.py +147 -0
  336. agent_evolve/policies/structure.py +362 -0
  337. agent_evolve/policies/structured_output_budget.py +62 -0
  338. agent_evolve/policies/surrogate.py +696 -0
  339. agent_evolve/policies/variation/__init__.py +1 -0
  340. agent_evolve/policies/variation/compositional_finite_catalog.py +426 -0
  341. agent_evolve/policies/variation/crossover_inheritance.py +575 -0
  342. agent_evolve/policies/variation/disjoint_recombination.py +611 -0
  343. agent_evolve/policies/variation/exact_composition_capacity.py +214 -0
  344. agent_evolve/policies/variation/exact_parent_crossover.py +950 -0
  345. agent_evolve/policies/variation/multiscale_restart_catalog.py +372 -0
  346. agent_evolve/policies/variation/source_union_finite_catalog.py +403 -0
  347. agent_evolve/policies/variation/typed_patch.py +1981 -0
  348. agent_evolve/policies/weighted_prior.py +394 -0
  349. agent_evolve/ports/__init__.py +383 -0
  350. agent_evolve/ports/action_allocation.py +733 -0
  351. agent_evolve/ports/action_allocation_frame.py +1153 -0
  352. agent_evolve/ports/action_allocation_frame_commit.py +294 -0
  353. agent_evolve/ports/action_allocation_frame_commit_v3.py +432 -0
  354. agent_evolve/ports/action_allocation_frame_v3.py +995 -0
  355. agent_evolve/ports/action_forecast.py +1568 -0
  356. agent_evolve/ports/action_metric_projection.py +165 -0
  357. agent_evolve/ports/agentic_generator.py +1561 -0
  358. agent_evolve/ports/archive_context.py +136 -0
  359. agent_evolve/ports/artifact_sanitizer.py +44 -0
  360. agent_evolve/ports/artifact_store.py +225 -0
  361. agent_evolve/ports/clock.py +13 -0
  362. agent_evolve/ports/contextual_search_allocation.py +827 -0
  363. agent_evolve/ports/decision_metric_projection.py +258 -0
  364. agent_evolve/ports/event_store.py +55 -0
  365. agent_evolve/ports/executable_hypothesis.py +557 -0
  366. agent_evolve/ports/finite_acquisition.py +377 -0
  367. agent_evolve/ports/finite_acquisition_batch.py +296 -0
  368. agent_evolve/ports/finite_acquisition_batch_json.py +164 -0
  369. agent_evolve/ports/finite_acquisition_json.py +247 -0
  370. agent_evolve/ports/finite_acquisition_space.py +168 -0
  371. agent_evolve/ports/finite_action_selection.py +348 -0
  372. agent_evolve/ports/finite_action_set.py +256 -0
  373. agent_evolve/ports/frontier_target.py +396 -0
  374. agent_evolve/ports/generation_failure.py +43 -0
  375. agent_evolve/ports/hard_feasibility.py +233 -0
  376. agent_evolve/ports/id_factory.py +34 -0
  377. agent_evolve/ports/llm_task_queue.py +93 -0
  378. agent_evolve/ports/objective_resolution.py +419 -0
  379. agent_evolve/ports/paired_allocation_comparison.py +401 -0
  380. agent_evolve/ports/paired_block_schedule.py +475 -0
  381. agent_evolve/ports/parent_measurement.py +336 -0
  382. agent_evolve/ports/portfolio_memory_dose.py +643 -0
  383. agent_evolve/ports/portfolio_selection.py +3169 -0
  384. agent_evolve/ports/postcommit_rank_authority.py +467 -0
  385. agent_evolve/ports/presented_action_evidence.py +794 -0
  386. agent_evolve/ports/resource_lease.py +162 -0
  387. agent_evolve/ports/structured_generator.py +734 -0
  388. agent_evolve/ports/structured_output_budget.py +120 -0
  389. agent_evolve/ports/subprocess_boundary.py +138 -0
  390. agent_evolve/ports/treatment_assignment.py +466 -0
  391. agent_evolve/ports/variation_catalog.py +76 -0
  392. agent_evolve/ports/variation_source.py +226 -0
  393. agent_evolve/proposal_mode.py +157 -0
  394. agent_evolve/proposers/__init__.py +10 -0
  395. agent_evolve/proposers/random_proposer.py +188 -0
  396. agent_evolve/provider_accounting.py +163 -0
  397. agent_evolve/py.typed +0 -0
  398. agent_evolve/reference_method.py +1570 -0
  399. agent_evolve/session/__init__.py +11 -0
  400. agent_evolve/session/authorship.py +864 -0
  401. agent_evolve/session/evaluate.py +236 -0
  402. agent_evolve/session/fidelity.py +237 -0
  403. agent_evolve/session/genetic_loop.py +742 -0
  404. agent_evolve/session/loop.py +803 -0
  405. agent_evolve/session/screening.py +671 -0
  406. agent_evolve/settings.py +376 -0
  407. agent_evolve/workload_kit.py +368 -0
  408. agent_evolve/workload_prompt.py +398 -0
  409. agentevolve_optimizer-0.5.0.dist-info/METADATA +599 -0
  410. agentevolve_optimizer-0.5.0.dist-info/RECORD +414 -0
  411. agentevolve_optimizer-0.5.0.dist-info/WHEEL +5 -0
  412. agentevolve_optimizer-0.5.0.dist-info/entry_points.txt +2 -0
  413. agentevolve_optimizer-0.5.0.dist-info/licenses/LICENSE +21 -0
  414. agentevolve_optimizer-0.5.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,138 @@
1
+ """Domain-neutral separation of scientific and execution call identities."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Awaitable, Callable
6
+ from dataclasses import dataclass, replace
7
+ import hashlib
8
+ import json
9
+ from typing import Any
10
+
11
+ from pydantic import BaseModel
12
+
13
+ from agent_evolve.domain.ids import LLMCallId
14
+ from agent_evolve.ports.structured_generator import StructuredGenerationRequest
15
+
16
+
17
+ def _schema_bytes(output_type: type[object]) -> bytes:
18
+ if not issubclass(output_type, BaseModel):
19
+ raise TypeError("structured output type must be a Pydantic BaseModel")
20
+ return json.dumps(
21
+ output_type.model_json_schema(mode="validation"),
22
+ allow_nan=False,
23
+ ensure_ascii=True,
24
+ separators=(",", ":"),
25
+ sort_keys=True,
26
+ ).encode("ascii")
27
+
28
+
29
+ @dataclass(frozen=True, slots=True)
30
+ class StructuredScienceRequestBinding:
31
+ """Fingerprint one scientific request independently of its execution ID."""
32
+
33
+ science_call_id: str
34
+ operation: str
35
+ prompt_utf8_bytes: int
36
+ prompt_sha256: str
37
+ output_schema_utf8_bytes: int
38
+ output_schema_sha256: str
39
+ output_tool_name: str
40
+ max_output_tokens: int
41
+ temperature_hex: str | None
42
+
43
+ @classmethod
44
+ def from_request(
45
+ cls,
46
+ request: StructuredGenerationRequest[Any],
47
+ ) -> "StructuredScienceRequestBinding":
48
+ if type(request) is not StructuredGenerationRequest:
49
+ raise TypeError("request must be an exact StructuredGenerationRequest")
50
+ StructuredGenerationRequest.__post_init__(request)
51
+ prompt = request.prompt.encode("utf-8", errors="strict")
52
+ schema = _schema_bytes(request.output_type)
53
+ return cls(
54
+ science_call_id=request.call_id.value,
55
+ operation=request.operation,
56
+ prompt_utf8_bytes=len(prompt),
57
+ prompt_sha256=hashlib.sha256(prompt).hexdigest(),
58
+ output_schema_utf8_bytes=len(schema),
59
+ output_schema_sha256=hashlib.sha256(schema).hexdigest(),
60
+ output_tool_name=request.output_tool_name,
61
+ max_output_tokens=request.max_output_tokens,
62
+ temperature_hex=(
63
+ None
64
+ if request.temperature is None
65
+ else float(request.temperature).hex()
66
+ ),
67
+ )
68
+
69
+ def provider_fingerprint(self) -> tuple[object, ...]:
70
+ return (
71
+ self.operation,
72
+ self.prompt_utf8_bytes,
73
+ self.prompt_sha256,
74
+ self.output_schema_utf8_bytes,
75
+ self.output_schema_sha256,
76
+ self.output_tool_name,
77
+ self.max_output_tokens,
78
+ self.temperature_hex,
79
+ )
80
+
81
+
82
+ def rebind_structured_execution_request(
83
+ request: StructuredGenerationRequest[Any],
84
+ *,
85
+ expected: StructuredScienceRequestBinding,
86
+ execution_call_id: LLMCallId,
87
+ ) -> StructuredGenerationRequest[Any]:
88
+ """Replace only queue identity after verifying the scientific payload."""
89
+
90
+ if type(expected) is not StructuredScienceRequestBinding:
91
+ raise TypeError("expected must be a StructuredScienceRequestBinding")
92
+ if type(execution_call_id) is not LLMCallId:
93
+ raise TypeError("execution_call_id must be an exact LLMCallId")
94
+ LLMCallId.__post_init__(execution_call_id)
95
+ observed = StructuredScienceRequestBinding.from_request(request)
96
+ if observed != expected:
97
+ raise ValueError("structured scientific request does not match its binding")
98
+ rebound = replace(request, call_id=execution_call_id)
99
+ rebound_binding = StructuredScienceRequestBinding.from_request(rebound)
100
+ if rebound_binding.provider_fingerprint() != expected.provider_fingerprint():
101
+ raise AssertionError("execution-ID rebinding changed provider-visible fields")
102
+ return rebound
103
+
104
+
105
+ @dataclass(slots=True)
106
+ class ExecutionIdRebindingRunner:
107
+ """Adapt a frozen scientific request to a fresh queue execution ID."""
108
+
109
+ runner: Callable[[StructuredGenerationRequest[Any]], Awaitable[object]]
110
+ expected: StructuredScienceRequestBinding
111
+ execution_call_id: LLMCallId
112
+
113
+ def __post_init__(self) -> None:
114
+ if not callable(self.runner):
115
+ raise TypeError("runner must be callable")
116
+ if type(self.expected) is not StructuredScienceRequestBinding:
117
+ raise TypeError("expected must be a StructuredScienceRequestBinding")
118
+ if type(self.execution_call_id) is not LLMCallId:
119
+ raise TypeError("execution_call_id must be an exact LLMCallId")
120
+ LLMCallId.__post_init__(self.execution_call_id)
121
+
122
+ async def __call__(
123
+ self,
124
+ request: StructuredGenerationRequest[Any],
125
+ ) -> object:
126
+ rebound = rebind_structured_execution_request(
127
+ request,
128
+ expected=self.expected,
129
+ execution_call_id=self.execution_call_id,
130
+ )
131
+ return await self.runner(rebound)
132
+
133
+
134
+ __all__ = [
135
+ "ExecutionIdRebindingRunner",
136
+ "StructuredScienceRequestBinding",
137
+ "rebind_structured_execution_request",
138
+ ]
@@ -0,0 +1,217 @@
1
+ """Compose forecast-geometry ballots into one protected action committee."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ import math
7
+
8
+ from agent_evolve.application.protected_action_committee import (
9
+ ActionCommitteeArmBinding,
10
+ ProtectedActionCommitteePolicy,
11
+ )
12
+ from agent_evolve.application.materialized_action_broker import (
13
+ MaterializedSlateFeasibilityPort,
14
+ )
15
+
16
+ from .semantic_coverage_residual_portfolio import (
17
+ ForecastGeometryRacingResidualPortfolio,
18
+ )
19
+
20
+
21
+ @dataclass(frozen=True, slots=True)
22
+ class ForecastGeometryActionCommitteePortfolio:
23
+ """The existing consequence arms behind one outcome-blind exact-K policy."""
24
+
25
+ source_portfolio: ForecastGeometryRacingResidualPortfolio
26
+ allocation: ProtectedActionCommitteePolicy
27
+ additional_arm_bindings: tuple[ActionCommitteeArmBinding, ...] = ()
28
+
29
+ def __post_init__(self) -> None:
30
+ if (
31
+ type(self.source_portfolio)
32
+ is not ForecastGeometryRacingResidualPortfolio
33
+ ):
34
+ raise TypeError("source_portfolio must be exact")
35
+ self.source_portfolio.__post_init__()
36
+ if type(self.allocation) is not ProtectedActionCommitteePolicy:
37
+ raise TypeError("allocation must be an exact protected committee")
38
+ self.allocation.__post_init__()
39
+ if (
40
+ type(self.additional_arm_bindings) is not tuple
41
+ or any(
42
+ type(value) is not ActionCommitteeArmBinding
43
+ for value in self.additional_arm_bindings
44
+ )
45
+ ):
46
+ raise TypeError(
47
+ "additional_arm_bindings must contain exact bindings"
48
+ )
49
+ for value in self.additional_arm_bindings:
50
+ value.__post_init__()
51
+ additional_ids = tuple(
52
+ value.arm_id for value in self.additional_arm_bindings
53
+ )
54
+ if additional_ids != tuple(sorted(set(additional_ids))):
55
+ raise ValueError(
56
+ "additional arm bindings must be unique and canonical"
57
+ )
58
+ source_identities = tuple(
59
+ sorted(
60
+ (
61
+ value.branch_id,
62
+ value.policy.policy_id,
63
+ value.policy.policy_version,
64
+ value.policy.definition_sha256,
65
+ )
66
+ for value in self.source_portfolio.planner.branch_bindings
67
+ )
68
+ )
69
+ committee_identities = tuple(
70
+ sorted(
71
+ (
72
+ value.arm_id,
73
+ value.policy.policy_id,
74
+ value.policy.policy_version,
75
+ value.policy.definition_sha256,
76
+ )
77
+ for value in self.allocation.arm_bindings
78
+ )
79
+ )
80
+ additional_identities = tuple(
81
+ sorted(
82
+ (
83
+ value.arm_id,
84
+ value.policy.policy_id,
85
+ value.policy.policy_version,
86
+ value.policy.definition_sha256,
87
+ )
88
+ for value in self.additional_arm_bindings
89
+ )
90
+ )
91
+ if committee_identities != tuple(
92
+ sorted((*source_identities, *additional_identities))
93
+ ):
94
+ raise ValueError(
95
+ "committee policies differ from source and additional arms"
96
+ )
97
+ if self.allocation.protected_arm_id != "forecast_neutral":
98
+ raise ValueError("forecast-neutral must remain the protected arm")
99
+
100
+
101
+ def compose_forecast_geometry_action_committee(
102
+ *,
103
+ source_portfolio: ForecastGeometryRacingResidualPortfolio,
104
+ protected_slots: int,
105
+ audit_slots: int,
106
+ audit_seed_sha256: str,
107
+ arm_weights: tuple[tuple[str, float], ...] = (),
108
+ additional_arm_bindings: tuple[
109
+ ActionCommitteeArmBinding,
110
+ ...,
111
+ ] = (),
112
+ slate_feasibility: MaterializedSlateFeasibilityPort | None = None,
113
+ ) -> ForecastGeometryActionCommitteePortfolio:
114
+ """Replace complete-slate commitment with protected action aggregation.
115
+
116
+ ``source_portfolio`` is an interceptable bundle of already-composed
117
+ outcome-blind policies. Its sequential race is not executed. The committee
118
+ reuses the exact branch policies, including any source-exposure or hard-
119
+ feasibility wrappers, so workload adapters do not acquire another seam.
120
+ Optional additional bindings can expose independent, workload-neutral
121
+ support views such as raw prequential score or provider-native rank.
122
+ """
123
+
124
+ if (
125
+ type(source_portfolio)
126
+ is not ForecastGeometryRacingResidualPortfolio
127
+ ):
128
+ raise TypeError("source_portfolio must be exact")
129
+ source_portfolio.__post_init__()
130
+ source_bindings = source_portfolio.planner.branch_bindings
131
+ arm_ids = tuple(value.branch_id for value in source_bindings)
132
+ if (
133
+ type(additional_arm_bindings) is not tuple
134
+ or any(
135
+ type(value) is not ActionCommitteeArmBinding
136
+ for value in additional_arm_bindings
137
+ )
138
+ ):
139
+ raise TypeError(
140
+ "additional_arm_bindings must contain exact bindings"
141
+ )
142
+ for value in additional_arm_bindings:
143
+ value.__post_init__()
144
+ additional_ids = tuple(
145
+ value.arm_id for value in additional_arm_bindings
146
+ )
147
+ if additional_ids != tuple(sorted(set(additional_ids))):
148
+ raise ValueError(
149
+ "additional arm bindings must be unique and canonical"
150
+ )
151
+ if set(additional_ids) & set(arm_ids):
152
+ raise ValueError("additional arms collide with consequence arms")
153
+ if not arm_weights:
154
+ weight_by_arm = {arm_id: 1.0 for arm_id in arm_ids}
155
+ else:
156
+ if (
157
+ type(arm_weights) is not tuple
158
+ or arm_weights
159
+ != tuple(sorted(arm_weights, key=lambda value: value[0]))
160
+ ):
161
+ raise ValueError("arm_weights must be canonical")
162
+ weight_by_arm: dict[str, float] = {}
163
+ for arm_id, weight in arm_weights:
164
+ if (
165
+ type(arm_id) is not str
166
+ or arm_id in weight_by_arm
167
+ or type(weight) is not float
168
+ or not math.isfinite(weight)
169
+ or weight <= 0.0
170
+ ):
171
+ raise ValueError(
172
+ "arm weights require unique IDs and positive finite floats"
173
+ )
174
+ weight_by_arm[arm_id] = weight
175
+ if set(weight_by_arm) != set(arm_ids):
176
+ raise ValueError("arm_weights must cover every consequence arm")
177
+
178
+ source_arm_bindings = tuple(
179
+ sorted(
180
+ (
181
+ ActionCommitteeArmBinding(
182
+ arm_id=value.branch_id,
183
+ policy=value.policy,
184
+ weight=weight_by_arm[value.branch_id],
185
+ )
186
+ for value in source_bindings
187
+ ),
188
+ key=lambda value: value.arm_id,
189
+ )
190
+ )
191
+ allocation = ProtectedActionCommitteePolicy(
192
+ arm_bindings=tuple(
193
+ sorted(
194
+ (
195
+ *source_arm_bindings,
196
+ *additional_arm_bindings,
197
+ ),
198
+ key=lambda value: value.arm_id,
199
+ )
200
+ ),
201
+ protected_arm_id="forecast_neutral",
202
+ protected_slots=protected_slots,
203
+ audit_slots=audit_slots,
204
+ audit_seed_sha256=audit_seed_sha256,
205
+ slate_feasibility=slate_feasibility,
206
+ )
207
+ return ForecastGeometryActionCommitteePortfolio(
208
+ source_portfolio=source_portfolio,
209
+ allocation=allocation,
210
+ additional_arm_bindings=additional_arm_bindings,
211
+ )
212
+
213
+
214
+ __all__ = [
215
+ "ForecastGeometryActionCommitteePortfolio",
216
+ "compose_forecast_geometry_action_committee",
217
+ ]
@@ -0,0 +1,159 @@
1
+ """pydantic-ai harness: typed structured outputs per op (no JSON-string round-trip).
2
+
3
+ Prompt wording comes from the problem's ``Directives`` (``self.directives``); this
4
+ adapter runs ``pydantic_ai.Agent`` with a typed ``output_type`` per op:
5
+ ``list[CandidateConfig]`` for candidate ops, ``list[str]`` / ``str`` for insights.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Any, List, Optional
11
+
12
+ from agent_evolve.harness.base import HarnessBase, HarnessOutputError
13
+
14
+
15
+ _AGENT_RUN_FAILED = object()
16
+
17
+
18
+ def _attempt_agent_run_sync(agent: Any, instruction: str, settings: dict | None) -> Any:
19
+ """Run the framework behind an exception-state-clearing private boundary."""
20
+
21
+ try:
22
+ if settings is not None:
23
+ return agent.run_sync(instruction, model_settings=settings)
24
+ return agent.run_sync(instruction)
25
+ except Exception:
26
+ return _AGENT_RUN_FAILED
27
+
28
+
29
+ class PydanticAIHarness(HarnessBase):
30
+ id = "pydantic_ai"
31
+
32
+ def __init__(self) -> None:
33
+ super().__init__()
34
+ self._last_output_type_contract = None
35
+
36
+ @property
37
+ def last_output_type_contract(self):
38
+ """The immutable contract bound to the most recent Agent execution."""
39
+
40
+ return self._last_output_type_contract
41
+
42
+ def _model_settings(self) -> Optional[dict]:
43
+ settings: dict = {}
44
+ if self.cfg.temperature is not None:
45
+ settings["temperature"] = self.cfg.temperature
46
+ # OpenRouter provider routing (pin official first-party provider, no fallbacks)
47
+ # flows through LLMConfig.extra as {"extra_body": {"provider": {...}}}.
48
+ extra_body = (self.cfg.extra or {}).get("extra_body")
49
+ if extra_body:
50
+ settings["extra_body"] = extra_body
51
+ return settings or None
52
+
53
+ def _output(self, output_type: Any, instruction: str) -> Any:
54
+ from pydantic_ai import Agent
55
+
56
+ from agent_evolve.integrations.pydantic_ai.boundary_codec import (
57
+ build_output_type_contract,
58
+ validate_output_type_contract,
59
+ )
60
+
61
+ # The application workflow is the sole retry owner. Framework output
62
+ # retries can issue a different repair prompt while the legacy/event
63
+ # layer still believes it is replaying one request, so they must remain
64
+ # disabled at this boundary. Provider-client transport retries are a
65
+ # separate M1e composition-root gate and are not asserted here.
66
+ # Reject unsupported/deferred output workflows and bind their canonical
67
+ # type/schema identity before any Agent request can execute.
68
+ self._last_output_type_contract = None
69
+ output_contract = build_output_type_contract(output_type)
70
+ agent = Agent(
71
+ self.cfg.model,
72
+ output_type=output_contract.output_type,
73
+ retries=0,
74
+ )
75
+ validate_output_type_contract(
76
+ output_contract,
77
+ compiled_json_schema=agent.output_json_schema(),
78
+ )
79
+ self._last_output_type_contract = output_contract
80
+ settings = self._model_settings()
81
+ res = _attempt_agent_run_sync(agent, instruction, settings)
82
+ if res is _AGENT_RUN_FAILED:
83
+ # Raised outside the private handler so framework ExceptionGroups,
84
+ # provider payloads, and secrets cannot survive as context/cause.
85
+ raise HarnessOutputError("pydantic_ai: agent execution failed") from None
86
+ self._observe_usage(res)
87
+ return res.output
88
+
89
+ def _observe_usage(self, res: Any) -> None:
90
+ """Surface per-call token usage to the loop's event observer (best-effort)."""
91
+ if self._observer is None:
92
+ return
93
+ try:
94
+ u = res.usage
95
+ if callable(u): # older pydantic-ai exposed usage() as a method
96
+ u = u()
97
+ except Exception:
98
+ return
99
+ inp = getattr(u, "input_tokens", None)
100
+ if inp is None:
101
+ inp = getattr(u, "request_tokens", None)
102
+ out = getattr(u, "output_tokens", None)
103
+ if out is None:
104
+ out = getattr(u, "response_tokens", None)
105
+ self._observer({"kind": "llm_usage", "model": self.cfg.model,
106
+ "input_tokens": inp, "output_tokens": out})
107
+
108
+ def _candidates(self, op: str, instruction: str) -> List[dict]:
109
+ # Wrap the typed list in a Proposal model with a thought_process field so
110
+ # the model reasons before committing to factors.
111
+ from pydantic import create_model
112
+
113
+ proposal = create_model(
114
+ "Proposal",
115
+ thought_process=(str, ...),
116
+ candidates=(List[self.candidate_type], ...),
117
+ )
118
+ result = self._output(proposal, instruction)
119
+ return self._to_dicts(result.candidates, op)
120
+
121
+ # -- ops -------------------------------------------------------------
122
+ def generate_initial(self, n):
123
+ self._observe("generate_initial")
124
+ return self._candidates("generate_initial", self.directives.compose_initial(self.context, n))
125
+
126
+ def regenerate(self, failed_str, n, constraint_instruction, performance_insights):
127
+ self._observe("regenerate")
128
+ instr = self.directives.compose_regenerate(
129
+ self.context, failed_str, n, constraint_instruction, performance_insights)
130
+ return self._candidates("regenerate", instr)
131
+
132
+ def generate_offspring(self, pareto_str, n, constraint_instruction, performance_insights):
133
+ self._observe("generate_offspring")
134
+ instr = self.directives.compose_offspring(
135
+ self.context, pareto_str, n, constraint_instruction, performance_insights)
136
+ return self._candidates("generate_offspring", instr)
137
+
138
+ def regenerate_offspring(self, failed_str, pareto_str, n,
139
+ constraint_instruction, performance_insights):
140
+ self._observe("regenerate_offspring")
141
+ instr = self.directives.compose_regenerate_offspring(
142
+ self.context, failed_str, pareto_str, n, constraint_instruction, performance_insights)
143
+ return self._candidates("regenerate_offspring", instr)
144
+
145
+ def failure_insights(self, failed_str, n_failed):
146
+ self._observe("failure_insights")
147
+ instr = self.directives.compose_failure_insights(self.context, failed_str, n_failed)
148
+ return self._to_str_list(self._output(List[str], instr))
149
+
150
+ def constraint_instruction(self, failed_str, previous=None):
151
+ self._observe("constraint_instruction")
152
+ instr = self.directives.compose_constraint_instruction(self.context, failed_str, previous or "")
153
+ return str(self._output(str, instr)).strip()
154
+
155
+ def performance_insights(self, stats_str, pareto_str, previous=None):
156
+ self._observe("performance_insights")
157
+ instr = self.directives.compose_performance_insights(
158
+ self.context, stats_str, pareto_str, previous or "")
159
+ return str(self._output(str, instr)).strip()