autocontext 0.3.2__tar.gz → 0.3.3__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 (777) hide show
  1. {autocontext-0.3.2 → autocontext-0.3.3}/PKG-INFO +2 -2
  2. {autocontext-0.3.2 → autocontext-0.3.3}/README.md +1 -1
  3. {autocontext-0.3.2 → autocontext-0.3.3}/pyproject.toml +1 -1
  4. autocontext-0.3.3/src/autocontext/agentos/__init__.py +5 -0
  5. autocontext-0.3.3/src/autocontext/agentos/types.py +71 -0
  6. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/cli.py +14 -8
  7. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/_base.py +1 -2
  8. autocontext-0.3.3/src/autocontext/research/consultation.py +132 -0
  9. autocontext-0.3.3/src/autocontext/research/evaluation.py +117 -0
  10. autocontext-0.3.3/src/autocontext/research/persistence.py +104 -0
  11. autocontext-0.3.3/src/autocontext/research/prompt_wiring.py +75 -0
  12. autocontext-0.3.3/src/autocontext/research/runtime.py +103 -0
  13. autocontext-0.3.3/src/autocontext/research/types.py +97 -0
  14. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/app.py +1 -2
  15. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/engine.py +41 -16
  16. autocontext-0.3.3/src/autocontext/storage/bootstrap_schema.py +329 -0
  17. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/sqlite_store.py +14 -0
  18. autocontext-0.3.3/tests/test_agentos_adapter.py +99 -0
  19. autocontext-0.3.3/tests/test_harness/__init__.py +0 -0
  20. autocontext-0.3.3/tests/test_research_adapter.py +147 -0
  21. autocontext-0.3.3/tests/test_research_consultation.py +184 -0
  22. autocontext-0.3.3/tests/test_research_eval.py +160 -0
  23. autocontext-0.3.3/tests/test_research_persistence.py +121 -0
  24. autocontext-0.3.3/tests/test_research_prompt_wiring.py +100 -0
  25. autocontext-0.3.3/tests/test_research_runtime.py +121 -0
  26. autocontext-0.3.3/tests/test_simulate_bug_fixes.py +104 -0
  27. autocontext-0.3.3/tests/test_sqlite_store_bootstrap.py +78 -0
  28. {autocontext-0.3.2 → autocontext-0.3.3}/uv.lock +1 -1
  29. {autocontext-0.3.2 → autocontext-0.3.3}/.gitignore +0 -0
  30. {autocontext-0.3.2 → autocontext-0.3.3}/assets/banner.svg +0 -0
  31. {autocontext-0.3.2 → autocontext-0.3.3}/assets/banner.txt +0 -0
  32. {autocontext-0.3.2 → autocontext-0.3.3}/assets/whats_new.txt +0 -0
  33. {autocontext-0.3.2 → autocontext-0.3.3}/demo_data/README.md +0 -0
  34. {autocontext-0.3.2 → autocontext-0.3.3}/docs/agent-integration.md +0 -0
  35. {autocontext-0.3.2 → autocontext-0.3.3}/docs/mlx-training.md +0 -0
  36. {autocontext-0.3.2 → autocontext-0.3.3}/docs/sandbox.md +0 -0
  37. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/001_initial.sql +0 -0
  38. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/002_phase3_phase7.sql +0 -0
  39. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/003_agent_subagent_metadata.sql +0 -0
  40. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/004_knowledge_inheritance.sql +0 -0
  41. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/005_ecosystem_provider_tracking.sql +0 -0
  42. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/006_human_feedback.sql +0 -0
  43. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/007_task_queue.sql +0 -0
  44. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/008_staged_validation.sql +0 -0
  45. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/009_generation_timing.sql +0 -0
  46. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/010_consultation_log.sql +0 -0
  47. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/010_session_notebook.sql +0 -0
  48. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/011_monitors.sql +0 -0
  49. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/012_research_hub.sql +0 -0
  50. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/013_generation_dimension_summary.sql +0 -0
  51. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/014_scoring_backend_metadata.sql +0 -0
  52. {autocontext-0.3.2 → autocontext-0.3.3}/migrations/015_match_replay.sql +0 -0
  53. {autocontext-0.3.2 → autocontext-0.3.3}/pyrightconfig.json +0 -0
  54. {autocontext-0.3.2 → autocontext-0.3.3}/smoke_test.py +0 -0
  55. {autocontext-0.3.2 → autocontext-0.3.3}/smoke_test_loop.py +0 -0
  56. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/__init__.py +0 -0
  57. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/__init__.py +0 -0
  58. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/agent_sdk_client.py +0 -0
  59. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/analyst.py +0 -0
  60. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/architect.py +0 -0
  61. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/coach.py +0 -0
  62. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/competitor.py +0 -0
  63. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/contracts.py +0 -0
  64. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/curator.py +0 -0
  65. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/feedback_loops.py +0 -0
  66. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/hint_feedback.py +0 -0
  67. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/llm_client.py +0 -0
  68. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/model_router.py +0 -0
  69. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/orchestrator.py +0 -0
  70. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/parsers.py +0 -0
  71. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/pipeline_adapter.py +0 -0
  72. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/provider_bridge.py +0 -0
  73. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/role_router.py +0 -0
  74. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/skeptic.py +0 -0
  75. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/subagent_runtime.py +0 -0
  76. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/translator.py +0 -0
  77. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/translator_simplification.py +0 -0
  78. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/types.py +0 -0
  79. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/__init__.py +0 -0
  80. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/aggregate_runner.py +0 -0
  81. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/calibration.py +0 -0
  82. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/clustering.py +0 -0
  83. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/correlation.py +0 -0
  84. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/credit_assignment.py +0 -0
  85. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/extractor.py +0 -0
  86. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/facets.py +0 -0
  87. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/issue_generator.py +0 -0
  88. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/issue_store.py +0 -0
  89. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/regression_fixtures.py +0 -0
  90. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/rubric_drift.py +0 -0
  91. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/run_trace.py +0 -0
  92. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/store.py +0 -0
  93. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/taxonomy.py +0 -0
  94. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/timeline_inspector.py +0 -0
  95. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/trace_reporter.py +0 -0
  96. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/artifacts/__init__.py +0 -0
  97. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/artifacts/models.py +0 -0
  98. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/banner.py +0 -0
  99. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/concepts.py +0 -0
  100. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/__init__.py +0 -0
  101. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/presets.py +0 -0
  102. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/settings.py +0 -0
  103. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/tuning_bounds.py +0 -0
  104. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/__init__.py +0 -0
  105. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/runner.py +0 -0
  106. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/stage.py +0 -0
  107. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/triggers.py +0 -0
  108. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/types.py +0 -0
  109. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/__init__.py +0 -0
  110. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/ab_runner.py +0 -0
  111. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/ab_stats.py +0 -0
  112. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/__init__.py +0 -0
  113. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/action_filter.py +0 -0
  114. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/agent_task_evolution.py +0 -0
  115. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/ast_safety.py +0 -0
  116. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/bias_probes.py +0 -0
  117. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/evaluator_guardrail.py +0 -0
  118. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/__init__.py +0 -0
  119. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/base.py +0 -0
  120. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/local.py +0 -0
  121. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/monty.py +0 -0
  122. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/primeintellect.py +0 -0
  123. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/ssh.py +0 -0
  124. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_coverage.py +0 -0
  125. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_loader.py +0 -0
  126. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_synthesizer.py +0 -0
  127. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_tester.py +0 -0
  128. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/improvement_loop.py +0 -0
  129. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/judge.py +0 -0
  130. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/judge_executor.py +0 -0
  131. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/objective_verification.py +0 -0
  132. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/output_cleaner.py +0 -0
  133. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/phased_execution.py +0 -0
  134. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/policy_executor.py +0 -0
  135. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/policy_refinement.py +0 -0
  136. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/rubric_calibration.py +0 -0
  137. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/rubric_coherence.py +0 -0
  138. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/sample_states.py +0 -0
  139. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/strategy_validator.py +0 -0
  140. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/supervisor.py +0 -0
  141. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/task_runner.py +0 -0
  142. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/trajectory_harness.py +0 -0
  143. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/verification_dataset.py +0 -0
  144. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/__init__.py +0 -0
  145. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/__init__.py +0 -0
  146. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/applicator.py +0 -0
  147. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/types.py +0 -0
  148. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/__init__.py +0 -0
  149. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/types.py +0 -0
  150. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/writer.py +0 -0
  151. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/__init__.py +0 -0
  152. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/controller.py +0 -0
  153. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/events.py +0 -0
  154. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/llm_client.py +0 -0
  155. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/output_parser.py +0 -0
  156. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/subagent.py +0 -0
  157. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/types.py +0 -0
  158. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/__init__.py +0 -0
  159. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/calculator.py +0 -0
  160. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/tracker.py +0 -0
  161. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/types.py +0 -0
  162. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/__init__.py +0 -0
  163. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/dimensional.py +0 -0
  164. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/failure_report.py +0 -0
  165. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/protocol.py +0 -0
  166. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/runner.py +0 -0
  167. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/scenario_evaluator.py +0 -0
  168. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/self_play.py +0 -0
  169. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/types.py +0 -0
  170. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/__init__.py +0 -0
  171. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/advisor.py +0 -0
  172. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/collector.py +0 -0
  173. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/profiler.py +0 -0
  174. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/types.py +0 -0
  175. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta_optimizer.py +0 -0
  176. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/optimizer/__init__.py +0 -0
  177. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/optimizer/pareto.py +0 -0
  178. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/__init__.py +0 -0
  179. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/dag.py +0 -0
  180. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/engine.py +0 -0
  181. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/types.py +0 -0
  182. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/__init__.py +0 -0
  183. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/advancement.py +0 -0
  184. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/gate.py +0 -0
  185. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/holdout.py +0 -0
  186. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/objective_guardrail.py +0 -0
  187. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/retry_context.py +0 -0
  188. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/trend_gate.py +0 -0
  189. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/validity_gate.py +0 -0
  190. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/__init__.py +0 -0
  191. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/monty_worker.py +0 -0
  192. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/session.py +0 -0
  193. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/types.py +0 -0
  194. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/worker.py +0 -0
  195. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/__init__.py +0 -0
  196. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/backends.py +0 -0
  197. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/elo.py +0 -0
  198. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/storage/__init__.py +0 -0
  199. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/storage/versioned_store.py +0 -0
  200. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/__init__.py +0 -0
  201. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/staged.py +0 -0
  202. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/stages.py +0 -0
  203. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/__init__.py +0 -0
  204. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/primeintellect/__init__.py +0 -0
  205. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/primeintellect/client.py +0 -0
  206. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/__init__.py +0 -0
  207. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/client.py +0 -0
  208. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/config.py +0 -0
  209. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/__init__.py +0 -0
  210. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/coherence.py +0 -0
  211. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/dead_end_manager.py +0 -0
  212. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/evidence_freshness.py +0 -0
  213. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/export.py +0 -0
  214. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/fresh_start.py +0 -0
  215. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/harness_quality.py +0 -0
  216. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/hint_volume.py +0 -0
  217. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/lessons.py +0 -0
  218. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/mutation_log.py +0 -0
  219. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/normalized_metrics.py +0 -0
  220. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/package.py +0 -0
  221. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/progress.py +0 -0
  222. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/protocol.py +0 -0
  223. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/rapid_gate.py +0 -0
  224. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/report.py +0 -0
  225. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/research_hub.py +0 -0
  226. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/search.py +0 -0
  227. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/solver.py +0 -0
  228. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/stagnation.py +0 -0
  229. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/trajectory.py +0 -0
  230. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/tuning.py +0 -0
  231. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/weakness.py +0 -0
  232. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/__init__.py +0 -0
  233. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/controller.py +0 -0
  234. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/cost_control.py +0 -0
  235. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/ecosystem_runner.py +0 -0
  236. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/events.py +0 -0
  237. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/exploration.py +0 -0
  238. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/generation_pipeline.py +0 -0
  239. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/generation_runner.py +0 -0
  240. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/hypothesis_tree.py +0 -0
  241. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/presets.py +0 -0
  242. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/refinement_prompt.py +0 -0
  243. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/__init__.py +0 -0
  244. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/context_loaders.py +0 -0
  245. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/dimensions.py +0 -0
  246. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/exploration.py +0 -0
  247. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/freshness.py +0 -0
  248. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/persistence_helpers.py +0 -0
  249. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/tournament_prep.py +0 -0
  250. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_preflight.py +0 -0
  251. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_prevalidation.py +0 -0
  252. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_probe.py +0 -0
  253. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_staged_validation.py +0 -0
  254. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_tree_search.py +0 -0
  255. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_types.py +0 -0
  256. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stages.py +0 -0
  257. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/startup_verification.py +0 -0
  258. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/tournament_helpers.py +0 -0
  259. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/__init__.py +0 -0
  260. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/agent_task_tools.py +0 -0
  261. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/artifact_tools.py +0 -0
  262. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/distill_tools.py +0 -0
  263. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/knowledge_tools.py +0 -0
  264. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/monitor_tools.py +0 -0
  265. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/sandbox.py +0 -0
  266. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/server.py +0 -0
  267. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/tools.py +0 -0
  268. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/__init__.py +0 -0
  269. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/engine.py +0 -0
  270. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/evaluators.py +0 -0
  271. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/types.py +0 -0
  272. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/__init__.py +0 -0
  273. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/context_provider.py +0 -0
  274. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/injection.py +0 -0
  275. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/types.py +0 -0
  276. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/__init__.py +0 -0
  277. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/base.py +0 -0
  278. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/callback.py +0 -0
  279. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/composite.py +0 -0
  280. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/http.py +0 -0
  281. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/slack.py +0 -0
  282. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/stdout.py +0 -0
  283. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/__init__.py +0 -0
  284. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/adapters.py +0 -0
  285. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/agent_adapter.py +0 -0
  286. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/discovery.py +0 -0
  287. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/distill.py +0 -0
  288. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/models.py +0 -0
  289. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/skill.py +0 -0
  290. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/preflight.py +0 -0
  291. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/__init__.py +0 -0
  292. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/context_budget.py +0 -0
  293. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/templates.py +0 -0
  294. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/__init__.py +0 -0
  295. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/anthropic.py +0 -0
  296. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/base.py +0 -0
  297. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/callable_wrapper.py +0 -0
  298. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/mlx_provider.py +0 -0
  299. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/openai_compat.py +0 -0
  300. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/registry.py +0 -0
  301. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/retry.py +0 -0
  302. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/scenario_routing.py +0 -0
  303. {autocontext-0.3.2/src/autocontext/session → autocontext-0.3.3/src/autocontext/research}/__init__.py +0 -0
  304. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/__init__.py +0 -0
  305. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/context_loader.py +0 -0
  306. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/prompts.py +0 -0
  307. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/repl_worker.py +0 -0
  308. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/session.py +0 -0
  309. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/types.py +0 -0
  310. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/__init__.py +0 -0
  311. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/base.py +0 -0
  312. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/claude_cli.py +0 -0
  313. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/codex_cli.py +0 -0
  314. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/direct_api.py +0 -0
  315. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/hermes_cli.py +0 -0
  316. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_artifacts.py +0 -0
  317. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_cli.py +0 -0
  318. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_rpc.py +0 -0
  319. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/__init__.py +0 -0
  320. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/agent_task.py +0 -0
  321. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/artifact_editing.py +0 -0
  322. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/base.py +0 -0
  323. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/capabilities.py +0 -0
  324. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/coordination.py +0 -0
  325. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/__init__.py +0 -0
  326. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/_family_creator_shim.py +0 -0
  327. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_codegen.py +0 -0
  328. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_creator.py +0 -0
  329. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_designer.py +0 -0
  330. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_revision.py +0 -0
  331. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_spec.py +0 -0
  332. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_validator.py +0 -0
  333. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_codegen.py +0 -0
  334. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_creator.py +0 -0
  335. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_designer.py +0 -0
  336. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_spec.py +0 -0
  337. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/codegen.py +0 -0
  338. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_codegen.py +0 -0
  339. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_creator.py +0 -0
  340. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_designer.py +0 -0
  341. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_spec.py +0 -0
  342. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/creator.py +0 -0
  343. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/creator_registry.py +0 -0
  344. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/designer.py +0 -0
  345. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/family_classifier.py +0 -0
  346. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/family_pipeline.py +0 -0
  347. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/generic_creator.py +0 -0
  348. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_codegen.py +0 -0
  349. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_creator.py +0 -0
  350. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_designer.py +0 -0
  351. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_spec.py +0 -0
  352. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/loader.py +0 -0
  353. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/naming.py +0 -0
  354. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_codegen.py +0 -0
  355. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_creator.py +0 -0
  356. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_designer.py +0 -0
  357. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_spec.py +0 -0
  358. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_codegen.py +0 -0
  359. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_creator.py +0 -0
  360. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_designer.py +0 -0
  361. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_spec.py +0 -0
  362. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/registry.py +0 -0
  363. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_codegen.py +0 -0
  364. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_creator.py +0 -0
  365. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_designer.py +0 -0
  366. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_spec.py +0 -0
  367. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_codegen.py +0 -0
  368. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_creator.py +0 -0
  369. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_designer.py +0 -0
  370. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_spec.py +0 -0
  371. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/spec.py +0 -0
  372. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/spec_auto_heal.py +0 -0
  373. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_codegen.py +0 -0
  374. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_creator.py +0 -0
  375. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_designer.py +0 -0
  376. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_spec.py +0 -0
  377. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/validator.py +0 -0
  378. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_codegen.py +0 -0
  379. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_creator.py +0 -0
  380. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_designer.py +0 -0
  381. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_spec.py +0 -0
  382. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/families.py +0 -0
  383. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/grid_ctf/__init__.py +0 -0
  384. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/grid_ctf/scenario.py +0 -0
  385. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/investigation.py +0 -0
  386. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/negotiation.py +0 -0
  387. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/operator_loop.py +0 -0
  388. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/othello.py +0 -0
  389. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/schema_evolution.py +0 -0
  390. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/simulation.py +0 -0
  391. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/__init__.py +0 -0
  392. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/README.md +0 -0
  393. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/example_input.json +0 -0
  394. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/example_output.json +0 -0
  395. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/spec.yaml +0 -0
  396. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/README.md +0 -0
  397. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/example_input.json +0 -0
  398. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/example_output.json +0 -0
  399. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/spec.yaml +0 -0
  400. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/README.md +0 -0
  401. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/example_input.json +0 -0
  402. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/example_output.json +0 -0
  403. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/spec.yaml +0 -0
  404. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/tool_fragility.py +0 -0
  405. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/type_registry.py +0 -0
  406. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/workflow.py +0 -0
  407. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/world_state.py +0 -0
  408. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/sdk.py +0 -0
  409. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/sdk_models.py +0 -0
  410. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/__init__.py +0 -0
  411. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/changelog.py +0 -0
  412. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/cockpit_api.py +0 -0
  413. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/hub_api.py +0 -0
  414. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/knowledge_api.py +0 -0
  415. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/monitor_api.py +0 -0
  416. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/notebook_api.py +0 -0
  417. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/openclaw_api.py +0 -0
  418. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/protocol.py +0 -0
  419. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/run_manager.py +0 -0
  420. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/writeup.py +0 -0
  421. {autocontext-0.3.2/src/autocontext/util → autocontext-0.3.3/src/autocontext/session}/__init__.py +0 -0
  422. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/context_pressure.py +0 -0
  423. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/coordinator.py +0 -0
  424. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/memory_consolidation.py +0 -0
  425. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/progress_digest.py +0 -0
  426. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/remote_bridge.py +0 -0
  427. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/skill_registry.py +0 -0
  428. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/store.py +0 -0
  429. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/supervisor.py +0 -0
  430. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/types.py +0 -0
  431. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/__init__.py +0 -0
  432. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/export.py +0 -0
  433. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/__init__.py +0 -0
  434. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/artifacts.py +0 -0
  435. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/buffered_writer.py +0 -0
  436. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/row_types.py +0 -0
  437. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/__init__.py +0 -0
  438. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/__init__.py +0 -0
  439. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/prepare.py +0 -0
  440. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/program.md +0 -0
  441. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/program.py +0 -0
  442. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/train.py +0 -0
  443. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/backends.py +0 -0
  444. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/export.py +0 -0
  445. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/model_registry.py +0 -0
  446. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/runner.py +0 -0
  447. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/types.py +0 -0
  448. {autocontext-0.3.2/tests/test_harness → autocontext-0.3.3/src/autocontext/util}/__init__.py +0 -0
  449. {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/util/json_io.py +0 -0
  450. {autocontext-0.3.2 → autocontext-0.3.3}/tests/conftest.py +0 -0
  451. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ab_runner.py +0 -0
  452. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ab_stats.py +0 -0
  453. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_action_filter.py +0 -0
  454. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_action_filter_integration.py +0 -0
  455. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_advancement_contract.py +0 -0
  456. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_e2e.py +0 -0
  457. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_live_e2e.py +0 -0
  458. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_sdk_client.py +0 -0
  459. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_sdk_integration.py +0 -0
  460. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task.py +0 -0
  461. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_export.py +0 -0
  462. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_multi_gen.py +0 -0
  463. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_pipeline.py +0 -0
  464. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_aggregate_facets.py +0 -0
  465. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_analysis_injection.py +0 -0
  466. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_anthropic_client_retry.py +0 -0
  467. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_api_key_fallback.py +0 -0
  468. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_dag_changes.py +0 -0
  469. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_tool_updates.py +0 -0
  470. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_tools.py +0 -0
  471. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_contracts.py +0 -0
  472. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_editing.py +0 -0
  473. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_harness.py +0 -0
  474. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ast_safety.py +0 -0
  475. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_auto_sample_input.py +0 -0
  476. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_backpressure.py +0 -0
  477. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_backpressure_trend.py +0 -0
  478. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_banner_sync.py +0 -0
  479. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_buffered_artifacts.py +0 -0
  480. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_buffered_writer.py +0 -0
  481. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_ab_test.py +0 -0
  482. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_agent_task.py +0 -0
  483. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_backport.py +0 -0
  484. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_error_output.py +0 -0
  485. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_json.py +0 -0
  486. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_preset.py +0 -0
  487. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_coach_competitor_hints.py +0 -0
  488. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit.py +0 -0
  489. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit_consultation_integration.py +0 -0
  490. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit_notebook_integration.py +0 -0
  491. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_code_strategies.py +0 -0
  492. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_code_strategies_e2e.py +0 -0
  493. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_codex_cli_runtime.py +0 -0
  494. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_config_adaptive.py +0 -0
  495. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_constraint_prompts.py +0 -0
  496. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_consultation.py +0 -0
  497. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_budget.py +0 -0
  498. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_preparation.py +0 -0
  499. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_pressure.py +0 -0
  500. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_coordinator.py +0 -0
  501. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_correlation_issues.py +0 -0
  502. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cost_control_and_presets.py +0 -0
  503. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_credit_assignment.py +0 -0
  504. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cross_run_inheritance.py +0 -0
  505. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_curator.py +0 -0
  506. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_curator_integration.py +0 -0
  507. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_custom_scenario_spec.py +0 -0
  508. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dag_apply.py +0 -0
  509. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dag_mutation.py +0 -0
  510. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dead_end_registry.py +0 -0
  511. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dead_end_wiring.py +0 -0
  512. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_derive_name.py +0 -0
  513. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_designer_calibration.py +0 -0
  514. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dict_type_consistency.py +0 -0
  515. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimension_pinning.py +0 -0
  516. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimension_threshold.py +0 -0
  517. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimensional_scoring.py +0 -0
  518. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_disagreement.py +0 -0
  519. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_discovery_scenario_type.py +0 -0
  520. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_distill_jobs.py +0 -0
  521. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_convergence.py +0 -0
  522. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_integration.py +0 -0
  523. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_runner.py +0 -0
  524. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_elo.py +0 -0
  525. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_grid_ctf.py +0 -0
  526. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_legal_actions.py +0 -0
  527. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_othello.py +0 -0
  528. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_eval_provider_wiring.py +0 -0
  529. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_event_subscribers.py +0 -0
  530. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_exploration_mechanisms.py +0 -0
  531. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_export_cli.py +0 -0
  532. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_export_skill_md.py +0 -0
  533. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_factual_confidence.py +0 -0
  534. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_failure_recovery_lessons.py +0 -0
  535. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_failure_report.py +0 -0
  536. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_family_classifier.py +0 -0
  537. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_family_pipeline.py +0 -0
  538. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_feedback_loops.py +0 -0
  539. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_freshness_and_fixtures.py +0 -0
  540. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_gate_taxonomy.py +0 -0
  541. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generation_pipeline.py +0 -0
  542. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generation_stages.py +0 -0
  543. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generic_creator.py +0 -0
  544. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_adapt_applicator.py +0 -0
  545. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_adapt_types.py +0 -0
  546. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_audit_types.py +0 -0
  547. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_audit_writer.py +0 -0
  548. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_controller.py +0 -0
  549. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_calculator.py +0 -0
  550. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_tracker.py +0 -0
  551. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_types.py +0 -0
  552. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_elo.py +0 -0
  553. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_eval_runner.py +0 -0
  554. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_eval_types.py +0 -0
  555. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_evaluator.py +0 -0
  556. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_events.py +0 -0
  557. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_gate.py +0 -0
  558. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_llm_client.py +0 -0
  559. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_advisor.py +0 -0
  560. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_collector.py +0 -0
  561. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_optimizer.py +0 -0
  562. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_profiler.py +0 -0
  563. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_types.py +0 -0
  564. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_output_parser.py +0 -0
  565. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_pipeline_engine.py +0 -0
  566. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_session.py +0 -0
  567. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_types.py +0 -0
  568. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_worker.py +0 -0
  569. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_retry_context.py +0 -0
  570. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_role_dag.py +0 -0
  571. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_scenario_evaluator.py +0 -0
  572. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_subagent.py +0 -0
  573. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_trend_gate.py +0 -0
  574. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_types.py +0 -0
  575. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_versioned_store.py +0 -0
  576. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_output_parser_adoption.py +0 -0
  577. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_coverage.py +0 -0
  578. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_inheritance.py +0 -0
  579. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_loader.py +0 -0
  580. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_mode.py +0 -0
  581. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_model_demotion.py +0 -0
  582. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_quality.py +0 -0
  583. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_synthesizer.py +0 -0
  584. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_tester.py +0 -0
  585. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_versioning.py +0 -0
  586. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_gateway.py +0 -0
  587. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_protocol_alignment.py +0 -0
  588. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_runtime.py +0 -0
  589. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_feedback.py +0 -0
  590. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_persistence.py +0 -0
  591. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_volume_control.py +0 -0
  592. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_holdout_evaluation.py +0 -0
  593. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hub_api.py +0 -0
  594. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_human_feedback.py +0 -0
  595. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hypothesis_tree.py +0 -0
  596. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_improvement_loop.py +0 -0
  597. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_improvement_loop_resilience.py +0 -0
  598. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_integration_docs.py +0 -0
  599. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_integration_improvement.py +0 -0
  600. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_intent_validation.py +0 -0
  601. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_interface_conventions.py +0 -0
  602. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_investigation_actions_coerce.py +0 -0
  603. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_investigation_workflow.py +0 -0
  604. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_judge.py +0 -0
  605. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_judge_rubrics.py +0 -0
  606. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_knowledge_api.py +0 -0
  607. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_knowledge_coherence.py +0 -0
  608. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_lesson_applicability.py +0 -0
  609. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_loop_controller.py +0 -0
  610. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_match_export.py +0 -0
  611. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_agent_tasks.py +0 -0
  612. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_server.py +0 -0
  613. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_tools.py +0 -0
  614. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_memory_consolidation.py +0 -0
  615. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mlx_provider.py +0 -0
  616. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_registry.py +0 -0
  617. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_router.py +0 -0
  618. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_router_integration.py +0 -0
  619. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_module_size_limits.py +0 -0
  620. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monitor.py +0 -0
  621. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_e2e.py +0 -0
  622. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_executor.py +0 -0
  623. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_live.py +0 -0
  624. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_integration.py +0 -0
  625. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_live.py +0 -0
  626. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_settings.py +0 -0
  627. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_wiring.py +0 -0
  628. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_worker.py +0 -0
  629. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_settings.py +0 -0
  630. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_multi_gen_stall.py +0 -0
  631. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mutation_log.py +0 -0
  632. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_negotiation.py +0 -0
  633. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_negotiation_verification.py +0 -0
  634. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_new_scenario_cli.py +0 -0
  635. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_normalized_metrics.py +0 -0
  636. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_notebook_wiring.py +0 -0
  637. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_notifications.py +0 -0
  638. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_objective_guardrail.py +0 -0
  639. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_objective_verification.py +0 -0
  640. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openai_agent_provider.py +0 -0
  641. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_adapters.py +0 -0
  642. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_agent_adapter.py +0 -0
  643. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_discovery.py +0 -0
  644. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_operations.py +0 -0
  645. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_skill.py +0 -0
  646. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_operator_loop_coordination.py +0 -0
  647. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_operator_loop_unsupported.py +0 -0
  648. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_orchestrator_feedback.py +0 -0
  649. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_output_cleaner.py +0 -0
  650. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_param_type_conventions.py +0 -0
  651. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pareto_optimizer.py +0 -0
  652. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_per_role_provider.py +0 -0
  653. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_phased_execution.py +0 -0
  654. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_artifacts.py +0 -0
  655. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_cli_runtime.py +0 -0
  656. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_protocol_alignment.py +0 -0
  657. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_provider_surface.py +0 -0
  658. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_rpc.py +0 -0
  659. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_smoke.py +0 -0
  660. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pipeline_adapter.py +0 -0
  661. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pipeline_wiring.py +0 -0
  662. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_executor.py +0 -0
  663. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_refinement.py +0 -0
  664. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_refinement_integration.py +0 -0
  665. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_preflight.py +0 -0
  666. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_prepare_mlx.py +0 -0
  667. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_preset_named.py +0 -0
  668. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_presets.py +0 -0
  669. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_prevalidation.py +0 -0
  670. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_primeintellect_client.py +0 -0
  671. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_probe_pipeline.py +0 -0
  672. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_program_template.py +0 -0
  673. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_progress_digests.py +0 -0
  674. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_progress_json.py +0 -0
  675. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_protocol.py +0 -0
  676. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_protocol_parity.py +0 -0
  677. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_provider_retry.py +0 -0
  678. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_providers.py +0 -0
  679. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pydantic_migration.py +0 -0
  680. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rapid_exploration.py +0 -0
  681. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_refinement_prompt.py +0 -0
  682. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_remote_bridge.py +0 -0
  683. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_remove_hardcoded_models.py +0 -0
  684. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_removed_backpressure_modules.py +0 -0
  685. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_removed_harness_modules.py +0 -0
  686. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_replay_narrative_flow.py +0 -0
  687. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_research_hub.py +0 -0
  688. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_research_protocol.py +0 -0
  689. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_restore_versioning.py +0 -0
  690. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_retry_learning.py +0 -0
  691. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_retry_provider.py +0 -0
  692. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_revise_output_fix.py +0 -0
  693. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_competitor.py +0 -0
  694. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_context_loader.py +0 -0
  695. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_integration.py +0 -0
  696. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_repl_worker.py +0 -0
  697. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_session.py +0 -0
  698. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_role_router.py +0 -0
  699. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_calibration.py +0 -0
  700. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_coherence.py +0 -0
  701. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_drift_calibration.py +0 -0
  702. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_run_trace.py +0 -0
  703. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_runner_integration.py +0 -0
  704. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_runtimes.py +0 -0
  705. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sample_states.py +0 -0
  706. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sandbox.py +0 -0
  707. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_capabilities.py +0 -0
  708. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_creator.py +0 -0
  709. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_dispatch.py +0 -0
  710. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_families.py +0 -0
  711. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_routing.py +0 -0
  712. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_templates.py +0 -0
  713. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_type_completeness.py +0 -0
  714. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenarios.py +0 -0
  715. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_schema_evolution_tool_fragility.py +0 -0
  716. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_score_trajectory.py +0 -0
  717. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scoring_backends.py +0 -0
  718. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sdk.py +0 -0
  719. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_seed_tools.py +0 -0
  720. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_self_play.py +0 -0
  721. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_serde_conventions.py +0 -0
  722. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_server_health.py +0 -0
  723. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_service_layer.py +0 -0
  724. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_notebook.py +0 -0
  725. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_report_wiring.py +0 -0
  726. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_reports.py +0 -0
  727. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_runtime.py +0 -0
  728. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_supervisor.py +0 -0
  729. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_settings_cleanup.py +0 -0
  730. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_shared_tools.py +0 -0
  731. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_simulate_command.py +0 -0
  732. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_simulation_contract.py +0 -0
  733. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skeptic.py +0 -0
  734. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skill_consolidation.py +0 -0
  735. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skill_registry.py +0 -0
  736. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_smoke_judge.py +0 -0
  737. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sqlite_store.py +0 -0
  738. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ssh_executor.py +0 -0
  739. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_preflight.py +0 -0
  740. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_probe.py +0 -0
  741. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_staged_validation.py +0 -0
  742. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_tree_search.py +0 -0
  743. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_runner.py +0 -0
  744. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_validation.py +0 -0
  745. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_validation_storage.py +0 -0
  746. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stages_enriched_retry.py +0 -0
  747. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stagnation.py +0 -0
  748. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_startup_verification.py +0 -0
  749. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_package.py +0 -0
  750. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_package_cli.py +0 -0
  751. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_translator.py +0 -0
  752. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_metrics.py +0 -0
  753. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_queue_priority.py +0 -0
  754. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_runner.py +0 -0
  755. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_time_budget.py +0 -0
  756. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_timeline_inspector.py +0 -0
  757. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tool_context_full.py +0 -0
  758. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tool_validation.py +0 -0
  759. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tournament_helpers.py +0 -0
  760. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trace_reporter.py +0 -0
  761. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_train_mlx.py +0 -0
  762. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_train_summary.py +0 -0
  763. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_backend.py +0 -0
  764. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_export.py +0 -0
  765. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_init.py +0 -0
  766. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_pi_provider.py +0 -0
  767. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_runner.py +0 -0
  768. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trajectory_harness.py +0 -0
  769. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_translator_simplification.py +0 -0
  770. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trend_gate_integration.py +0 -0
  771. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_two_tier_tournament.py +0 -0
  772. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_typed_contracts.py +0 -0
  773. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_typed_dict_rows.py +0 -0
  774. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_validity_gate.py +0 -0
  775. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_verification_dataset.py +0 -0
  776. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_weakness_reports.py +0 -0
  777. {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_world_state.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autocontext
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: autocontext control plane for iterative strategy evolution.
5
5
  Project-URL: Homepage, https://github.com/greyhaven-ai/autocontext
6
6
  Project-URL: Repository, https://github.com/greyhaven-ai/autocontext
@@ -60,7 +60,7 @@ The intended use is to hand the harness a real task in plain language, let it so
60
60
  pip install autocontext
61
61
  ```
62
62
 
63
- The current PyPI release line is `autocontext==0.3.2`.
63
+ The current PyPI release line is `autocontext==0.3.3`.
64
64
  The PyPI package name is now `autocontext`. The CLI entrypoint remains `autoctx`.
65
65
 
66
66
  ## Working Directory
@@ -10,7 +10,7 @@ The intended use is to hand the harness a real task in plain language, let it so
10
10
  pip install autocontext
11
11
  ```
12
12
 
13
- The current PyPI release line is `autocontext==0.3.2`.
13
+ The current PyPI release line is `autocontext==0.3.3`.
14
14
  The PyPI package name is now `autocontext`. The CLI entrypoint remains `autoctx`.
15
15
 
16
16
  ## Working Directory
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "autocontext"
7
- version = "0.3.2"
7
+ version = "0.3.3"
8
8
  description = "autocontext control plane for iterative strategy evolution."
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
@@ -0,0 +1,5 @@
1
+ """Optional agentOS integration (AC-517)."""
2
+
3
+ from autocontext.agentos.types import AgentOsConfig, AgentOsPermissions, AgentOsRuntimePort
4
+
5
+ __all__ = ["AgentOsConfig", "AgentOsPermissions", "AgentOsRuntimePort"]
@@ -0,0 +1,71 @@
1
+ """agentOS integration types (AC-517).
2
+
3
+ Port types that define the boundary between autocontext's session
4
+ domain and agentOS's VM runtime.
5
+
6
+ The runtime port is a Protocol — no direct dependency on
7
+ @rivet-dev/agent-os-core. Python side defines the contract;
8
+ TS side provides the primary implementation.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ from typing import Any, Protocol, runtime_checkable
14
+
15
+ from pydantic import BaseModel, Field
16
+
17
+ DEFAULT_SANDBOX_KEYWORDS = [
18
+ "browser",
19
+ "playwright",
20
+ "puppeteer",
21
+ "selenium",
22
+ "dev server",
23
+ "port",
24
+ "localhost",
25
+ "gui",
26
+ "native build",
27
+ "docker",
28
+ "container",
29
+ ]
30
+
31
+
32
+ @runtime_checkable
33
+ class AgentOsRuntimePort(Protocol):
34
+ """Port interface for agentOS runtime.
35
+
36
+ This is the ONLY surface autocontext depends on.
37
+ Implementors can use real AgentOs or a stub.
38
+ """
39
+
40
+ async def create_session(self, agent_type: str) -> dict[str, Any]: ...
41
+ async def prompt(self, session_id: str, prompt: str) -> None: ...
42
+ async def close_session(self, session_id: str) -> None: ...
43
+ async def dispose(self) -> None: ...
44
+
45
+
46
+ class AgentOsPermissions(BaseModel):
47
+ """Security permissions for the agentOS VM."""
48
+
49
+ network: bool = False
50
+ filesystem: str = "readonly" # "none" | "readonly" | "readwrite"
51
+ processes: bool = False
52
+ max_memory_mb: int = 512
53
+
54
+ model_config = {"frozen": True}
55
+
56
+
57
+ class AgentOsConfig(BaseModel):
58
+ """Configuration for optional agentOS integration."""
59
+
60
+ enabled: bool = False
61
+ agent_type: str = "pi"
62
+ workspace_path: str = ""
63
+ permissions: AgentOsPermissions = Field(default_factory=AgentOsPermissions)
64
+ sandbox_escalation_keywords: list[str] = Field(default_factory=lambda: list(DEFAULT_SANDBOX_KEYWORDS))
65
+
66
+ model_config = {"frozen": True}
67
+
68
+ def needs_sandbox(self, task_description: str) -> bool:
69
+ """Heuristic: does this task need a full sandbox instead of agentOS?"""
70
+ lower = task_description.lower()
71
+ return any(kw in lower for kw in self.sandbox_escalation_keywords)
@@ -160,6 +160,12 @@ def _write_json_stderr(message: str) -> None:
160
160
  sys.stderr.write(json.dumps({"error": message}) + "\n")
161
161
 
162
162
 
163
+ def _check_json_exit(result: dict[str, Any]) -> None:
164
+ """Raise SystemExit(1) if JSON result has status=failed (AC-520)."""
165
+ if isinstance(result, dict) and result.get("status") == "failed":
166
+ raise SystemExit(1)
167
+
168
+
163
169
  def _is_agent_task(scenario_name: str) -> bool:
164
170
  """Check if a scenario should use the direct agent-task execution path."""
165
171
  if scenario_name not in SCENARIO_REGISTRY:
@@ -996,8 +1002,7 @@ def export_cmd(
996
1002
 
997
1003
  sqlite = SQLiteStore(resolved_db)
998
1004
  migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
999
- if migrations_dir.exists():
1000
- sqlite.migrate(migrations_dir)
1005
+ sqlite.migrate(migrations_dir)
1001
1006
  artifacts = ArtifactStore(
1002
1007
  runs_root=resolved_runs,
1003
1008
  knowledge_root=resolved_knowledge,
@@ -1103,6 +1108,7 @@ def simulate(
1103
1108
  result = export_simulation(id=export_id, knowledge_root=settings.knowledge_root, format=export_format)
1104
1109
  if json_output:
1105
1110
  _write_json_stdout(result)
1111
+ _check_json_exit(result)
1106
1112
  elif result["status"] == "failed":
1107
1113
  console.print(f"[red]Export failed:[/red] {result.get('error')}")
1108
1114
  raise typer.Exit(code=1)
@@ -1115,6 +1121,7 @@ def simulate(
1115
1121
  result = engine.compare(left=compare_left, right=compare_right)
1116
1122
  if json_output:
1117
1123
  _write_json_stdout(result)
1124
+ _check_json_exit(result)
1118
1125
  elif result["status"] == "failed":
1119
1126
  console.print(f"[red]Compare failed:[/red] {result.get('error')}")
1120
1127
  raise typer.Exit(code=1)
@@ -1131,6 +1138,7 @@ def simulate(
1131
1138
  )
1132
1139
  if json_output:
1133
1140
  _write_json_stdout(result)
1141
+ _check_json_exit(result)
1134
1142
  elif result["status"] == "failed":
1135
1143
  console.print(f"[red]Replay failed:[/red] {result.get('error')}")
1136
1144
  raise typer.Exit(code=1)
@@ -1159,6 +1167,7 @@ def simulate(
1159
1167
 
1160
1168
  if json_output:
1161
1169
  _write_json_stdout(result)
1170
+ _check_json_exit(result)
1162
1171
  elif result["status"] == "failed":
1163
1172
  console.print(f"[red]Simulation failed:[/red] {result.get('error')}")
1164
1173
  raise typer.Exit(code=1)
@@ -1298,8 +1307,7 @@ def import_package_cmd(
1298
1307
  resolved_db = Path(db_path) if db_path is not None else settings.db_path
1299
1308
  sqlite = SQLiteStore(resolved_db)
1300
1309
  migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
1301
- if migrations_dir.exists():
1302
- sqlite.migrate(migrations_dir)
1310
+ sqlite.migrate(migrations_dir)
1303
1311
  artifacts = ArtifactStore(
1304
1312
  runs_root=settings.runs_root,
1305
1313
  knowledge_root=Path(knowledge_root) if knowledge_root else settings.knowledge_root,
@@ -1344,8 +1352,7 @@ def wait(
1344
1352
  settings = load_settings()
1345
1353
  store = SQLiteStore(settings.db_path)
1346
1354
  migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
1347
- if migrations_dir.exists():
1348
- store.migrate(migrations_dir)
1355
+ store.migrate(migrations_dir)
1349
1356
 
1350
1357
  # Check condition exists
1351
1358
  condition = store.get_monitor_condition(condition_id)
@@ -1496,8 +1503,7 @@ def queue(
1496
1503
  settings = load_settings()
1497
1504
  store = _sqlite_from_settings(settings)
1498
1505
  migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
1499
- if migrations_dir.exists():
1500
- store.migrate(migrations_dir)
1506
+ store.migrate(migrations_dir)
1501
1507
 
1502
1508
  task_id = enqueue_task(store=store, spec_name=spec, priority=priority)
1503
1509
 
@@ -28,8 +28,7 @@ class MtsToolContext:
28
28
  self.settings = settings
29
29
  self.sqlite = SQLiteStore(settings.db_path)
30
30
  migrations_dir = Path(__file__).resolve().parents[3] / "migrations"
31
- if migrations_dir.exists():
32
- self.sqlite.migrate(migrations_dir)
31
+ self.sqlite.migrate(migrations_dir)
33
32
  self.artifacts = ArtifactStore(
34
33
  settings.runs_root,
35
34
  settings.knowledge_root,
@@ -0,0 +1,132 @@
1
+ """Research consultation — goal decomposition and brief assembly (AC-499).
2
+
3
+ Domain service: ResearchConsultant decomposes a goal into targeted queries,
4
+ executes them through a ResearchEnabledSession, filters weak signals, deduplicates
5
+ citations, and packages everything into a ResearchBrief value object.
6
+
7
+ ResearchBrief is a frozen value object suitable for downstream prompt injection.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import logging
13
+ from collections.abc import Sequence
14
+
15
+ from pydantic import BaseModel, Field
16
+
17
+ from autocontext.research.runtime import ResearchEnabledSession
18
+ from autocontext.research.types import Citation, ResearchQuery, ResearchResult, Urgency
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ class ResearchBrief(BaseModel):
24
+ """Immutable snapshot of research findings for a goal.
25
+
26
+ Produced by ResearchConsultant, consumed by prompt wiring (AC-501).
27
+ """
28
+
29
+ goal: str
30
+ findings: list[ResearchResult] = Field(default_factory=list)
31
+ unique_citations: list[Citation] = Field(default_factory=list)
32
+
33
+ model_config = {"frozen": True}
34
+
35
+ @property
36
+ def avg_confidence(self) -> float:
37
+ if not self.findings:
38
+ return 0.0
39
+ return sum(f.confidence for f in self.findings) / len(self.findings)
40
+
41
+ @classmethod
42
+ def from_results(
43
+ cls,
44
+ goal: str,
45
+ results: Sequence[ResearchResult],
46
+ min_confidence: float = 0.0,
47
+ ) -> ResearchBrief:
48
+ filtered = [r for r in results if r.confidence >= min_confidence]
49
+ citations = _dedupe_citations(filtered)
50
+ return cls(goal=goal, findings=list(filtered), unique_citations=citations)
51
+
52
+ @classmethod
53
+ def empty(cls, goal: str) -> ResearchBrief:
54
+ return cls(goal=goal)
55
+
56
+ def to_markdown(self) -> str:
57
+ if not self.findings:
58
+ return f"## Research Brief: {self.goal}\n\nNo findings available.\n"
59
+
60
+ parts = [f"## Research Brief: {self.goal}\n"]
61
+ for f in self.findings:
62
+ parts.append(f"### {f.query_topic} (confidence: {f.confidence:.0%})\n")
63
+ parts.append(f"{f.summary}\n")
64
+ for c in f.citations:
65
+ label = f"[{c.source}]({c.url})" if c.url else c.source
66
+ parts.append(f"- {label}")
67
+ if c.snippet:
68
+ parts.append(f" > {c.snippet}")
69
+ parts.append("")
70
+ return "\n".join(parts)
71
+
72
+
73
+ def _dedupe_citations(results: Sequence[ResearchResult]) -> list[Citation]:
74
+ """Collect unique citations across results, keyed by (source, url)."""
75
+ seen: set[tuple[str, str]] = set()
76
+ unique: list[Citation] = []
77
+ for r in results:
78
+ for c in r.citations:
79
+ key = (c.source, c.url)
80
+ if key not in seen:
81
+ seen.add(key)
82
+ unique.append(c)
83
+ return unique
84
+
85
+
86
+ class ResearchConsultant:
87
+ """Domain service: decompose goal → queries → brief.
88
+
89
+ Stateless — create one and call .consult() per research need.
90
+ """
91
+
92
+ def __init__(
93
+ self,
94
+ urgency: Urgency = Urgency.NORMAL,
95
+ min_confidence: float = 0.0,
96
+ ) -> None:
97
+ self._urgency = urgency
98
+ self._min_confidence = min_confidence
99
+
100
+ def consult(
101
+ self,
102
+ session: ResearchEnabledSession,
103
+ topics: Sequence[str],
104
+ context: str = "",
105
+ ) -> ResearchBrief:
106
+ """Execute research queries and return a packaged brief.
107
+
108
+ Respects the session's budget — stops when budget is exhausted.
109
+ Filters results below min_confidence.
110
+ """
111
+ if not session.has_research:
112
+ logger.debug("No research adapter attached — returning empty brief")
113
+ return ResearchBrief.empty(session.goal)
114
+
115
+ results: list[ResearchResult] = []
116
+ for topic in topics:
117
+ query = ResearchQuery(
118
+ topic=topic,
119
+ context=context,
120
+ urgency=self._urgency,
121
+ )
122
+ result = session.research(query)
123
+ if result is None:
124
+ logger.debug("Budget exhausted after %d queries", len(results))
125
+ break
126
+ results.append(result)
127
+
128
+ return ResearchBrief.from_results(
129
+ goal=session.goal,
130
+ results=results,
131
+ min_confidence=self._min_confidence,
132
+ )
@@ -0,0 +1,117 @@
1
+ """Research A/B evaluation — compare augmented vs baseline (AC-502).
2
+
3
+ Domain service: ResearchEvaluator pairs baseline and research-augmented
4
+ outputs, scores them with a pluggable score function, and measures
5
+ improvement and citation coverage.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+ import re
12
+ from collections.abc import Callable, Sequence
13
+ from typing import Any
14
+
15
+ from pydantic import BaseModel
16
+
17
+ from autocontext.research.consultation import ResearchBrief
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+ ScoreFn = Callable[[str], float]
22
+
23
+
24
+ class EvalResult(BaseModel):
25
+ """Result of comparing one baseline/augmented pair."""
26
+
27
+ baseline_score: float = 0.0
28
+ augmented_score: float = 0.0
29
+ improvement: float = 0.0
30
+ citation_coverage: float = 0.0
31
+ sample_size: int = 1
32
+
33
+ model_config = {"frozen": True}
34
+
35
+ @property
36
+ def is_improvement(self) -> bool:
37
+ return self.improvement > 0
38
+
39
+ @property
40
+ def relative_gain(self) -> float:
41
+ if self.baseline_score == 0.0:
42
+ return float("inf") if self.improvement > 0 else 0.0
43
+ return self.improvement / self.baseline_score
44
+
45
+
46
+ class BatchSummary(BaseModel):
47
+ """Aggregated summary over multiple eval pairs."""
48
+
49
+ sample_size: int = 0
50
+ avg_baseline: float = 0.0
51
+ avg_augmented: float = 0.0
52
+ avg_improvement: float = 0.0
53
+ win_rate: float = 0.0 # fraction where augmented > baseline
54
+
55
+ model_config = {"frozen": True}
56
+
57
+
58
+ def _citation_coverage(brief: ResearchBrief, text: str) -> float:
59
+ """Fraction of unique citation sources mentioned in text."""
60
+ if not brief.unique_citations:
61
+ return 0.0
62
+ mentioned = sum(1 for c in brief.unique_citations if _source_mentioned(c.source, text))
63
+ return mentioned / len(brief.unique_citations)
64
+
65
+
66
+ def _source_mentioned(source: str, text: str) -> bool:
67
+ """Return True when `source` appears as a distinct mention in `text`."""
68
+ pattern = rf"(?<!\w){re.escape(source)}(?!\w)"
69
+ return re.search(pattern, text, flags=re.IGNORECASE) is not None
70
+
71
+
72
+ class ResearchEvaluator:
73
+ """Compares research-augmented vs baseline outputs."""
74
+
75
+ def evaluate_pair(
76
+ self,
77
+ brief: ResearchBrief,
78
+ baseline_output: str,
79
+ augmented_output: str,
80
+ score_fn: ScoreFn,
81
+ ) -> EvalResult:
82
+ baseline_score = score_fn(baseline_output)
83
+ augmented_score = score_fn(augmented_output)
84
+ return EvalResult(
85
+ baseline_score=baseline_score,
86
+ augmented_score=augmented_score,
87
+ improvement=augmented_score - baseline_score,
88
+ citation_coverage=_citation_coverage(brief, augmented_output),
89
+ )
90
+
91
+ def evaluate_batch(
92
+ self,
93
+ pairs: Sequence[dict[str, Any]],
94
+ score_fn: ScoreFn,
95
+ ) -> BatchSummary:
96
+ if not pairs:
97
+ return BatchSummary()
98
+
99
+ results: list[EvalResult] = []
100
+ for p in pairs:
101
+ r = self.evaluate_pair(
102
+ brief=p["brief"],
103
+ baseline_output=p["baseline"],
104
+ augmented_output=p["augmented"],
105
+ score_fn=score_fn,
106
+ )
107
+ results.append(r)
108
+
109
+ n = len(results)
110
+ wins = sum(1 for r in results if r.is_improvement)
111
+ return BatchSummary(
112
+ sample_size=n,
113
+ avg_baseline=sum(r.baseline_score for r in results) / n,
114
+ avg_augmented=sum(r.augmented_score for r in results) / n,
115
+ avg_improvement=sum(r.improvement for r in results) / n,
116
+ win_rate=wins / n,
117
+ )
@@ -0,0 +1,104 @@
1
+ """Research evidence persistence — JSON-file store (AC-500).
2
+
3
+ Persists ResearchBrief snapshots for audit trail, cross-session learning,
4
+ and prompt context windows. Uses one JSON file per brief, indexed by a
5
+ lightweight manifest.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import json
11
+ import logging
12
+ import uuid
13
+ from datetime import UTC, datetime
14
+ from pathlib import Path
15
+ from typing import Any
16
+
17
+ from pydantic import BaseModel
18
+
19
+ from autocontext.research.consultation import ResearchBrief
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+ BRIEFS_DIR = "research_briefs"
24
+ MANIFEST_FILE = "manifest.json"
25
+
26
+
27
+ class BriefRef(BaseModel):
28
+ """Pointer to a persisted brief."""
29
+
30
+ brief_id: str
31
+ session_id: str
32
+ goal: str
33
+ created_at: str
34
+ finding_count: int = 0
35
+
36
+ model_config = {"frozen": True}
37
+
38
+
39
+ class ResearchStore:
40
+ """File-backed research brief persistence.
41
+
42
+ Layout:
43
+ root/
44
+ research_briefs/
45
+ manifest.json — [{brief_id, session_id, goal, ...}]
46
+ <brief_id>.json — serialized ResearchBrief
47
+ """
48
+
49
+ def __init__(self, root: Path) -> None:
50
+ self._dir = root / BRIEFS_DIR
51
+ self._dir.mkdir(parents=True, exist_ok=True)
52
+ self._manifest_path = self._dir / MANIFEST_FILE
53
+
54
+ def save_brief(self, session_id: str, brief: ResearchBrief) -> BriefRef:
55
+ brief_id = uuid.uuid4().hex[:12]
56
+ ref = BriefRef(
57
+ brief_id=brief_id,
58
+ session_id=session_id,
59
+ goal=brief.goal,
60
+ created_at=datetime.now(UTC).isoformat(),
61
+ finding_count=len(brief.findings),
62
+ )
63
+
64
+ brief_path = self._dir / f"{brief_id}.json"
65
+ brief_path.write_text(brief.model_dump_json(indent=2), encoding="utf-8")
66
+
67
+ manifest = self._load_manifest()
68
+ manifest.append(ref.model_dump())
69
+ self._write_manifest(manifest)
70
+
71
+ logger.debug("Saved brief %s for session %s (%d findings)", brief_id, session_id, len(brief.findings))
72
+ return ref
73
+
74
+ def load_brief(self, brief_id: str) -> ResearchBrief | None:
75
+ brief_path = self._dir / f"{brief_id}.json"
76
+ if not brief_path.exists():
77
+ return None
78
+ data = json.loads(brief_path.read_text(encoding="utf-8"))
79
+ return ResearchBrief.model_validate(data)
80
+
81
+ def list_briefs(self, session_id: str) -> list[BriefRef]:
82
+ manifest = self._load_manifest()
83
+ return [BriefRef.model_validate(e) for e in manifest if e["session_id"] == session_id]
84
+
85
+ def brief_count(self) -> int:
86
+ return len(self._load_manifest())
87
+
88
+ def delete_brief(self, brief_id: str) -> bool:
89
+ brief_path = self._dir / f"{brief_id}.json"
90
+ if not brief_path.exists():
91
+ return False
92
+ brief_path.unlink()
93
+ manifest = [e for e in self._load_manifest() if e["brief_id"] != brief_id]
94
+ self._write_manifest(manifest)
95
+ return True
96
+
97
+ def _load_manifest(self) -> list[dict[str, Any]]:
98
+ if not self._manifest_path.exists():
99
+ return []
100
+ data: list[dict[str, Any]] = json.loads(self._manifest_path.read_text(encoding="utf-8"))
101
+ return data
102
+
103
+ def _write_manifest(self, manifest: list[dict[str, Any]]) -> None:
104
+ self._manifest_path.write_text(json.dumps(manifest, indent=2), encoding="utf-8")
@@ -0,0 +1,75 @@
1
+ """Research prompt wiring — format briefs for LLM injection (AC-501).
2
+
3
+ ResearchPromptInjector formats a ResearchBrief into a prompt section,
4
+ handling truncation to a char budget, confidence-based ordering, and
5
+ citation formatting. Supports placeholder injection or append-to-base.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import logging
11
+
12
+ from autocontext.research.consultation import ResearchBrief
13
+
14
+ logger = logging.getLogger(__name__)
15
+
16
+ RESEARCH_PLACEHOLDER = "{research}"
17
+ DEFAULT_MAX_CHARS = 4000
18
+
19
+
20
+ class ResearchPromptInjector:
21
+ """Formats research briefs and injects them into prompt templates."""
22
+
23
+ def __init__(self, max_chars: int = DEFAULT_MAX_CHARS) -> None:
24
+ self._max_chars = max_chars
25
+
26
+ def format_brief(self, brief: ResearchBrief) -> str:
27
+ """Render a brief as a markdown section, truncated to budget.
28
+
29
+ Findings are ordered by confidence (highest first).
30
+ Returns empty string if brief has no findings.
31
+ """
32
+ if not brief.findings:
33
+ return ""
34
+
35
+ sorted_findings = sorted(brief.findings, key=lambda f: f.confidence, reverse=True)
36
+
37
+ parts: list[str] = [f"## External Research: {brief.goal}\n"]
38
+ budget = self._max_chars - len(parts[0])
39
+
40
+ for f in sorted_findings:
41
+ block_lines = [f"**{f.query_topic}** (confidence: {f.confidence:.0%})"]
42
+ block_lines.append(f.summary)
43
+ for c in f.citations:
44
+ if c.url:
45
+ block_lines.append(f"- [{c.source}]({c.url})")
46
+ else:
47
+ block_lines.append(f"- {c.source}")
48
+ block_lines.append("")
49
+ block = "\n".join(block_lines)
50
+
51
+ if len(block) > budget:
52
+ if len(parts) == 1:
53
+ # At least include one truncated finding
54
+ parts.append(block[:budget])
55
+ break
56
+ parts.append(block)
57
+ budget -= len(block)
58
+
59
+ return "\n".join(parts)
60
+
61
+ def inject(self, base_prompt: str, brief: ResearchBrief) -> str:
62
+ """Inject formatted brief into a prompt template.
63
+
64
+ If base_prompt contains {research}, replaces it.
65
+ Otherwise appends the section after the base.
66
+ Returns base_prompt unchanged if brief is empty.
67
+ """
68
+ section = self.format_brief(brief)
69
+ if not section:
70
+ return base_prompt
71
+
72
+ if RESEARCH_PLACEHOLDER in base_prompt:
73
+ return base_prompt.replace(RESEARCH_PLACEHOLDER, section)
74
+
75
+ return f"{base_prompt}\n\n{section}"