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,370 @@
1
+ """Durable nonblocking ``flock`` implementation of the resource-lease port."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import fcntl
6
+ import hashlib
7
+ import json
8
+ import os
9
+ import socket
10
+ import threading
11
+ from collections.abc import Mapping
12
+ from datetime import datetime, timezone
13
+ from pathlib import Path
14
+
15
+ from agent_evolve.domain.typed_json import FrozenJsonObject, freeze_json, thaw_json
16
+ from agent_evolve.ports.resource_lease import (
17
+ ResourceConflictObservation,
18
+ ResourceConflictProbe,
19
+ ResourceLeaseReceipt,
20
+ )
21
+
22
+
23
+ _ACQUISITION_DOMAIN = b"agent-evolve:exclusive-resource-lease:v1\x00"
24
+ _MAX_LOCK_RECORD_BYTES = 65_536
25
+
26
+
27
+ def _canonical_bytes(value: object) -> bytes:
28
+ return json.dumps(
29
+ value,
30
+ allow_nan=False,
31
+ ensure_ascii=True,
32
+ separators=(",", ":"),
33
+ sort_keys=True,
34
+ ).encode("ascii")
35
+
36
+
37
+ def _utc_now() -> str:
38
+ return datetime.now(timezone.utc).isoformat()
39
+
40
+
41
+ def _directory_fsync(path: Path) -> None:
42
+ descriptor = os.open(
43
+ path,
44
+ os.O_RDONLY | getattr(os, "O_DIRECTORY", 0) | getattr(os, "O_CLOEXEC", 0),
45
+ )
46
+ try:
47
+ os.fsync(descriptor)
48
+ finally:
49
+ os.close(descriptor)
50
+
51
+
52
+ class ResourceLeaseUnavailable(RuntimeError):
53
+ """Another cooperating process already owns the resource lease."""
54
+
55
+ def __init__(
56
+ self,
57
+ *,
58
+ resource_key: str,
59
+ lease_path: Path,
60
+ holder_record_sha256: str,
61
+ ) -> None:
62
+ self.resource_key = resource_key
63
+ self.lease_path = lease_path
64
+ self.holder_record_sha256 = holder_record_sha256
65
+ super().__init__(
66
+ f"exclusive resource {resource_key!r} is already leased; "
67
+ f"holder_record_sha256={holder_record_sha256}"
68
+ )
69
+
70
+
71
+ class ResourceConflictDetected(RuntimeError):
72
+ """A non-cooperating external actor conflicts with a newly locked resource."""
73
+
74
+ def __init__(
75
+ self,
76
+ *,
77
+ resource_key: str,
78
+ observation: ResourceConflictObservation,
79
+ ) -> None:
80
+ self.resource_key = resource_key
81
+ self.observation = observation
82
+ super().__init__(
83
+ f"external conflict probe {observation.probe_id!r} rejected "
84
+ f"resource {resource_key!r}"
85
+ )
86
+
87
+
88
+ class FileExclusiveResourceLease:
89
+ """One-shot nonblocking filesystem lease with fsynced owner evidence.
90
+
91
+ The lock descriptor is close-on-exec, so evaluator subprocesses cannot
92
+ accidentally inherit ownership. A crash releases the kernel lock; the
93
+ next acquirer may overwrite the stale on-disk owner record only after it
94
+ holds the lock and its external conflict probe passes.
95
+ """
96
+
97
+ def __init__(
98
+ self,
99
+ *,
100
+ resource_key: str,
101
+ owner_id: str,
102
+ lease_path: Path,
103
+ owner_metadata: Mapping[str, object],
104
+ conflict_probe: ResourceConflictProbe | None = None,
105
+ ) -> None:
106
+ if type(resource_key) is not str:
107
+ raise TypeError("resource_key must be an exact string")
108
+ if (
109
+ type(owner_id) is not str
110
+ or not owner_id
111
+ or owner_id != owner_id.strip()
112
+ or len(owner_id.encode("utf-8", errors="strict")) > 256
113
+ ):
114
+ raise ValueError("owner_id must be compact canonical text")
115
+ resolved = lease_path.expanduser().resolve()
116
+ if resolved.name in {"", ".", ".."}:
117
+ raise ValueError("lease_path must name one file")
118
+ frozen_metadata = freeze_json(dict(owner_metadata))
119
+ if type(frozen_metadata) is not FrozenJsonObject:
120
+ raise TypeError("owner_metadata must freeze to a JSON object")
121
+ if conflict_probe is not None and not isinstance(
122
+ conflict_probe,
123
+ ResourceConflictProbe,
124
+ ):
125
+ raise TypeError("conflict_probe must implement ResourceConflictProbe")
126
+
127
+ # Reuse the receipt's closed validation law for resource tokens.
128
+ ResourceConflictObservation(
129
+ probe_id=resource_key,
130
+ probe_version=1,
131
+ conflict=False,
132
+ facts=freeze_json({}),
133
+ )
134
+ self.resource_key = resource_key
135
+ self.owner_id = owner_id
136
+ self.lease_path = resolved
137
+ self.owner_metadata = frozen_metadata
138
+ self.conflict_probe = conflict_probe
139
+ self._descriptor: int | None = None
140
+ self._receipt: ResourceLeaseReceipt | None = None
141
+ self._last_release_record: dict[str, object] | None = None
142
+ self._state_lock = threading.Lock()
143
+
144
+ @property
145
+ def active(self) -> bool:
146
+ with self._state_lock:
147
+ return self._descriptor is not None
148
+
149
+ @property
150
+ def receipt(self) -> ResourceLeaseReceipt | None:
151
+ with self._state_lock:
152
+ return self._receipt
153
+
154
+ @property
155
+ def last_release_record(self) -> dict[str, object] | None:
156
+ with self._state_lock:
157
+ return (
158
+ None
159
+ if self._last_release_record is None
160
+ else dict(self._last_release_record)
161
+ )
162
+
163
+ @staticmethod
164
+ def _write_locked(descriptor: int, record: Mapping[str, object]) -> None:
165
+ payload = _canonical_bytes(dict(record)) + b"\n"
166
+ if len(payload) > _MAX_LOCK_RECORD_BYTES:
167
+ raise ValueError("resource lease record exceeds its byte limit")
168
+ os.lseek(descriptor, 0, os.SEEK_SET)
169
+ os.ftruncate(descriptor, 0)
170
+ view = memoryview(payload)
171
+ while view:
172
+ written = os.write(descriptor, view)
173
+ if written <= 0: # pragma: no cover - defensive OS boundary.
174
+ raise OSError("resource lease record write made no progress")
175
+ view = view[written:]
176
+ os.fsync(descriptor)
177
+
178
+ @staticmethod
179
+ def _holder_sha256(descriptor: int) -> str:
180
+ os.lseek(descriptor, 0, os.SEEK_SET)
181
+ content = os.read(descriptor, _MAX_LOCK_RECORD_BYTES + 1)
182
+ if len(content) > _MAX_LOCK_RECORD_BYTES:
183
+ content = content[:_MAX_LOCK_RECORD_BYTES]
184
+ return hashlib.sha256(content).hexdigest()
185
+
186
+ def _close_unacquired(self, descriptor: int) -> None:
187
+ try:
188
+ fcntl.flock(descriptor, fcntl.LOCK_UN)
189
+ finally:
190
+ os.close(descriptor)
191
+
192
+ def acquire(self) -> ResourceLeaseReceipt:
193
+ with self._state_lock:
194
+ if self._descriptor is not None or self._receipt is not None:
195
+ raise RuntimeError("resource lease objects are one-shot")
196
+ self.lease_path.parent.mkdir(parents=True, exist_ok=True)
197
+ descriptor = os.open(
198
+ self.lease_path,
199
+ os.O_RDWR
200
+ | os.O_CREAT
201
+ | getattr(os, "O_CLOEXEC", 0),
202
+ 0o600,
203
+ )
204
+ try:
205
+ fcntl.flock(descriptor, fcntl.LOCK_EX | fcntl.LOCK_NB)
206
+ except BlockingIOError as exc:
207
+ holder_sha256 = self._holder_sha256(descriptor)
208
+ os.close(descriptor)
209
+ raise ResourceLeaseUnavailable(
210
+ resource_key=self.resource_key,
211
+ lease_path=self.lease_path,
212
+ holder_record_sha256=holder_sha256,
213
+ ) from exc
214
+
215
+ try:
216
+ observation = (
217
+ ResourceConflictObservation(
218
+ probe_id="no_external_conflict_probe",
219
+ probe_version=1,
220
+ conflict=False,
221
+ facts=freeze_json({"probe_configured": False}),
222
+ )
223
+ if self.conflict_probe is None
224
+ else self.conflict_probe()
225
+ )
226
+ if type(observation) is not ResourceConflictObservation:
227
+ raise TypeError(
228
+ "conflict probe must return ResourceConflictObservation"
229
+ )
230
+ ResourceConflictObservation.__post_init__(observation)
231
+ if observation.conflict:
232
+ rejected = {
233
+ "schema_version": 1,
234
+ "status": "external_conflict_rejected",
235
+ "resource_key": self.resource_key,
236
+ "owner_id": self.owner_id,
237
+ "observed_at_utc": _utc_now(),
238
+ "conflict_observation": observation.to_record(),
239
+ }
240
+ self._write_locked(descriptor, rejected)
241
+ raise ResourceConflictDetected(
242
+ resource_key=self.resource_key,
243
+ observation=observation,
244
+ )
245
+
246
+ stat = os.fstat(descriptor)
247
+ acquired_at = _utc_now()
248
+ unsigned = {
249
+ "schema_version": 1,
250
+ "status": "acquired",
251
+ "resource_key": self.resource_key,
252
+ "owner_id": self.owner_id,
253
+ "lease_path": str(self.lease_path),
254
+ "process_id": os.getpid(),
255
+ "hostname": socket.gethostname(),
256
+ "acquired_at_utc": acquired_at,
257
+ "owner_metadata": thaw_json(self.owner_metadata),
258
+ "conflict_observation": observation.to_record(),
259
+ "file_device": stat.st_dev,
260
+ "file_inode": stat.st_ino,
261
+ }
262
+ acquisition_sha256 = hashlib.sha256(
263
+ _ACQUISITION_DOMAIN + _canonical_bytes(unsigned)
264
+ ).hexdigest()
265
+ record = {**unsigned, "acquisition_sha256": acquisition_sha256}
266
+ self._write_locked(descriptor, record)
267
+ _directory_fsync(self.lease_path.parent)
268
+ receipt = ResourceLeaseReceipt(
269
+ resource_key=self.resource_key,
270
+ owner_id=self.owner_id,
271
+ acquisition_sha256=acquisition_sha256,
272
+ lease_path=str(self.lease_path),
273
+ process_id=os.getpid(),
274
+ hostname=socket.gethostname(),
275
+ acquired_at_utc=acquired_at,
276
+ owner_metadata=self.owner_metadata,
277
+ conflict_observation=observation,
278
+ file_device=stat.st_dev,
279
+ file_inode=stat.st_ino,
280
+ )
281
+ self._descriptor = descriptor
282
+ self._receipt = receipt
283
+ return receipt
284
+ except BaseException:
285
+ self._close_unacquired(descriptor)
286
+ raise
287
+
288
+ def release(
289
+ self,
290
+ *,
291
+ outcome: str = "completed",
292
+ failure_type: str | None = None,
293
+ ) -> dict[str, object]:
294
+ if (
295
+ type(outcome) is not str
296
+ or not outcome
297
+ or outcome != outcome.strip()
298
+ or len(outcome.encode("utf-8", errors="strict")) > 128
299
+ ):
300
+ raise ValueError("outcome must be compact canonical text")
301
+ if failure_type is not None and (
302
+ type(failure_type) is not str
303
+ or not failure_type
304
+ or failure_type != failure_type.strip()
305
+ or len(failure_type.encode("utf-8", errors="strict")) > 256
306
+ ):
307
+ raise ValueError("failure_type must be compact canonical text or None")
308
+ with self._state_lock:
309
+ descriptor = self._descriptor
310
+ receipt = self._receipt
311
+ if descriptor is None or receipt is None:
312
+ raise RuntimeError("resource lease is not active")
313
+ record = {
314
+ "schema_version": 1,
315
+ "status": "released",
316
+ "resource_key": receipt.resource_key,
317
+ "owner_id": receipt.owner_id,
318
+ "acquisition_sha256": receipt.acquisition_sha256,
319
+ "released_at_utc": _utc_now(),
320
+ "outcome": outcome,
321
+ "failure_type": failure_type,
322
+ "process_id": os.getpid(),
323
+ "hostname": socket.gethostname(),
324
+ }
325
+ pending: BaseException | None = None
326
+ try:
327
+ self._write_locked(descriptor, record)
328
+ except BaseException as exc:
329
+ pending = exc
330
+ try:
331
+ fcntl.flock(descriptor, fcntl.LOCK_UN)
332
+ except BaseException as exc:
333
+ if pending is None:
334
+ pending = exc
335
+ else:
336
+ pending.add_note(
337
+ f"resource unlock also failed: {type(exc).__name__}"
338
+ )
339
+ try:
340
+ os.close(descriptor)
341
+ except BaseException as exc:
342
+ if pending is None:
343
+ pending = exc
344
+ else:
345
+ pending.add_note(
346
+ f"resource descriptor close also failed: {type(exc).__name__}"
347
+ )
348
+ self._descriptor = None
349
+ self._last_release_record = record
350
+ if pending is not None:
351
+ raise pending
352
+ return dict(record)
353
+
354
+ def __enter__(self) -> ResourceLeaseReceipt:
355
+ return self.acquire()
356
+
357
+ def __exit__(self, exc_type, exc, traceback) -> bool:
358
+ del traceback
359
+ self.release(
360
+ outcome="completed" if exc_type is None else "failed",
361
+ failure_type=None if exc_type is None else exc_type.__name__,
362
+ )
363
+ return False
364
+
365
+
366
+ __all__ = [
367
+ "FileExclusiveResourceLease",
368
+ "ResourceConflictDetected",
369
+ "ResourceLeaseUnavailable",
370
+ ]
@@ -0,0 +1,8 @@
1
+ """Deterministic artifact-minimization and sanitization adapters."""
2
+
3
+ from agent_evolve.infrastructure.sanitization.strict_json import (
4
+ StrictJsonSanitizer,
5
+ TopLevelAllowlistMinimizer,
6
+ )
7
+
8
+ __all__ = ["StrictJsonSanitizer", "TopLevelAllowlistMinimizer"]