autocontext 0.3.4__tar.gz → 0.3.6__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 (821) hide show
  1. {autocontext-0.3.4 → autocontext-0.3.6}/.gitignore +4 -0
  2. {autocontext-0.3.4 → autocontext-0.3.6}/PKG-INFO +2 -2
  3. {autocontext-0.3.4 → autocontext-0.3.6}/README.md +1 -1
  4. {autocontext-0.3.4 → autocontext-0.3.6}/pyproject.toml +1 -1
  5. autocontext-0.3.6/src/autocontext/blobstore/__init__.py +15 -0
  6. autocontext-0.3.6/src/autocontext/blobstore/factory.py +38 -0
  7. autocontext-0.3.6/src/autocontext/blobstore/hf_bucket.py +227 -0
  8. autocontext-0.3.6/src/autocontext/blobstore/local.py +98 -0
  9. autocontext-0.3.6/src/autocontext/blobstore/ref.py +52 -0
  10. autocontext-0.3.6/src/autocontext/blobstore/registry.py +45 -0
  11. autocontext-0.3.6/src/autocontext/blobstore/store.py +94 -0
  12. autocontext-0.3.6/src/autocontext/bootstrap/__init__.py +18 -0
  13. autocontext-0.3.6/src/autocontext/bootstrap/collector.py +283 -0
  14. autocontext-0.3.6/src/autocontext/bootstrap/redactor.py +99 -0
  15. autocontext-0.3.6/src/autocontext/bootstrap/renderer.py +56 -0
  16. autocontext-0.3.6/src/autocontext/bootstrap/snapshot.py +117 -0
  17. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/config/settings.py +111 -40
  18. autocontext-0.3.6/src/autocontext/evidence/__init__.py +20 -0
  19. autocontext-0.3.6/src/autocontext/evidence/manifest.py +52 -0
  20. autocontext-0.3.6/src/autocontext/evidence/materializer.py +327 -0
  21. autocontext-0.3.6/src/autocontext/evidence/tracker.py +68 -0
  22. autocontext-0.3.6/src/autocontext/evidence/workspace.py +84 -0
  23. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_preflight.py +63 -16
  24. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_types.py +4 -0
  25. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stages.py +40 -0
  26. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/knowledge_tools.py +32 -0
  27. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/server.py +115 -52
  28. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/tools.py +12 -5
  29. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/prompts/context_budget.py +19 -5
  30. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/prompts/templates.py +57 -123
  31. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/codegen.py +40 -31
  32. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/spec.py +1 -0
  33. autocontext-0.3.6/src/autocontext/scenarios/families.py +256 -0
  34. autocontext-0.3.6/src/autocontext/scenarios/family_contracts.py +134 -0
  35. autocontext-0.3.6/src/autocontext/security/__init__.py +12 -0
  36. autocontext-0.3.6/src/autocontext/security/scanner.py +176 -0
  37. autocontext-0.3.6/src/autocontext/sharing/__init__.py +25 -0
  38. autocontext-0.3.6/src/autocontext/sharing/attestation.py +46 -0
  39. autocontext-0.3.6/src/autocontext/sharing/bundle.py +84 -0
  40. autocontext-0.3.6/src/autocontext/sharing/collector.py +94 -0
  41. autocontext-0.3.6/src/autocontext/sharing/pipeline.py +133 -0
  42. autocontext-0.3.6/src/autocontext/sharing/publishers/__init__.py +1 -0
  43. autocontext-0.3.6/src/autocontext/sharing/publishers/gist.py +64 -0
  44. autocontext-0.3.6/src/autocontext/sharing/publishers/hf.py +76 -0
  45. autocontext-0.3.6/src/autocontext/sharing/redactor.py +173 -0
  46. autocontext-0.3.6/src/autocontext/sharing/review.py +75 -0
  47. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/simulation/engine.py +189 -78
  48. autocontext-0.3.6/src/autocontext/simulation/helpers.py +84 -0
  49. autocontext-0.3.6/tests/test_blob_store.py +335 -0
  50. autocontext-0.3.6/tests/test_bootstrap_snapshot.py +218 -0
  51. autocontext-0.3.6/tests/test_detect_family_prefers_explicit.py +206 -0
  52. autocontext-0.3.6/tests/test_evidence_workspace.py +327 -0
  53. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_generation_stages.py +64 -0
  54. autocontext-0.3.6/tests/test_loop_integration_snapshot_evidence.py +240 -0
  55. autocontext-0.3.6/tests/test_scenario_behavioral_contract.py +121 -0
  56. autocontext-0.3.6/tests/test_secret_scanner.py +257 -0
  57. autocontext-0.3.6/tests/test_sharing.py +393 -0
  58. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_simulate_command.py +122 -0
  59. {autocontext-0.3.4 → autocontext-0.3.6}/uv.lock +725 -584
  60. autocontext-0.3.4/src/autocontext/scenarios/families.py +0 -227
  61. {autocontext-0.3.4 → autocontext-0.3.6}/assets/banner.svg +0 -0
  62. {autocontext-0.3.4 → autocontext-0.3.6}/assets/banner.txt +0 -0
  63. {autocontext-0.3.4 → autocontext-0.3.6}/assets/whats_new.txt +0 -0
  64. {autocontext-0.3.4 → autocontext-0.3.6}/demo_data/README.md +0 -0
  65. {autocontext-0.3.4 → autocontext-0.3.6}/docs/agent-integration.md +0 -0
  66. {autocontext-0.3.4 → autocontext-0.3.6}/docs/mlx-training.md +0 -0
  67. {autocontext-0.3.4 → autocontext-0.3.6}/docs/sandbox.md +0 -0
  68. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/001_initial.sql +0 -0
  69. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/002_phase3_phase7.sql +0 -0
  70. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/003_agent_subagent_metadata.sql +0 -0
  71. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/004_knowledge_inheritance.sql +0 -0
  72. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/005_ecosystem_provider_tracking.sql +0 -0
  73. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/006_human_feedback.sql +0 -0
  74. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/007_task_queue.sql +0 -0
  75. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/008_staged_validation.sql +0 -0
  76. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/009_generation_timing.sql +0 -0
  77. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/010_consultation_log.sql +0 -0
  78. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/010_session_notebook.sql +0 -0
  79. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/011_monitors.sql +0 -0
  80. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/012_research_hub.sql +0 -0
  81. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/013_generation_dimension_summary.sql +0 -0
  82. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/014_scoring_backend_metadata.sql +0 -0
  83. {autocontext-0.3.4 → autocontext-0.3.6}/migrations/015_match_replay.sql +0 -0
  84. {autocontext-0.3.4 → autocontext-0.3.6}/pyrightconfig.json +0 -0
  85. {autocontext-0.3.4 → autocontext-0.3.6}/smoke_test.py +0 -0
  86. {autocontext-0.3.4 → autocontext-0.3.6}/smoke_test_loop.py +0 -0
  87. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/__init__.py +0 -0
  88. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agentos/__init__.py +0 -0
  89. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agentos/types.py +0 -0
  90. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/__init__.py +0 -0
  91. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/agent_sdk_client.py +0 -0
  92. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/analyst.py +0 -0
  93. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/architect.py +0 -0
  94. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/coach.py +0 -0
  95. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/competitor.py +0 -0
  96. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/contracts.py +0 -0
  97. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/curator.py +0 -0
  98. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/feedback_loops.py +0 -0
  99. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/hint_feedback.py +0 -0
  100. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/llm_client.py +0 -0
  101. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/model_router.py +0 -0
  102. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/orchestrator.py +0 -0
  103. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/parsers.py +0 -0
  104. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/pipeline_adapter.py +0 -0
  105. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/provider_bridge.py +0 -0
  106. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/role_router.py +0 -0
  107. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/skeptic.py +0 -0
  108. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/subagent_runtime.py +0 -0
  109. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/translator.py +0 -0
  110. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/translator_simplification.py +0 -0
  111. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/agents/types.py +0 -0
  112. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/__init__.py +0 -0
  113. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/aggregate_runner.py +0 -0
  114. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/calibration.py +0 -0
  115. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/clustering.py +0 -0
  116. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/correlation.py +0 -0
  117. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/credit_assignment.py +0 -0
  118. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/extractor.py +0 -0
  119. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/facets.py +0 -0
  120. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/issue_generator.py +0 -0
  121. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/issue_store.py +0 -0
  122. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/regression_fixtures.py +0 -0
  123. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/rubric_drift.py +0 -0
  124. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/run_trace.py +0 -0
  125. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/store.py +0 -0
  126. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/taxonomy.py +0 -0
  127. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/timeline_inspector.py +0 -0
  128. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/analytics/trace_reporter.py +0 -0
  129. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/artifacts/__init__.py +0 -0
  130. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/artifacts/models.py +0 -0
  131. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/banner.py +0 -0
  132. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/cli.py +0 -0
  133. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/concepts.py +0 -0
  134. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/config/__init__.py +0 -0
  135. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/config/presets.py +0 -0
  136. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/config/tuning_bounds.py +0 -0
  137. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/consultation/__init__.py +0 -0
  138. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/consultation/runner.py +0 -0
  139. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/consultation/stage.py +0 -0
  140. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/consultation/triggers.py +0 -0
  141. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/consultation/types.py +0 -0
  142. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/evaluation/__init__.py +0 -0
  143. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/evaluation/ab_runner.py +0 -0
  144. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/evaluation/ab_stats.py +0 -0
  145. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/__init__.py +0 -0
  146. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/action_filter.py +0 -0
  147. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/agent_task_evolution.py +0 -0
  148. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/ast_safety.py +0 -0
  149. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/bias_probes.py +0 -0
  150. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/evaluator_guardrail.py +0 -0
  151. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/__init__.py +0 -0
  152. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/base.py +0 -0
  153. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/local.py +0 -0
  154. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/monty.py +0 -0
  155. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/primeintellect.py +0 -0
  156. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/executors/ssh.py +0 -0
  157. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/harness_coverage.py +0 -0
  158. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/harness_loader.py +0 -0
  159. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/harness_synthesizer.py +0 -0
  160. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/harness_tester.py +0 -0
  161. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/improvement_loop.py +0 -0
  162. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/judge.py +0 -0
  163. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/judge_executor.py +0 -0
  164. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/objective_verification.py +0 -0
  165. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/output_cleaner.py +0 -0
  166. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/phased_execution.py +0 -0
  167. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/policy_executor.py +0 -0
  168. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/policy_refinement.py +0 -0
  169. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/rubric_calibration.py +0 -0
  170. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/rubric_coherence.py +0 -0
  171. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/sample_states.py +0 -0
  172. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/strategy_validator.py +0 -0
  173. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/supervisor.py +0 -0
  174. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/task_runner.py +0 -0
  175. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/trajectory_harness.py +0 -0
  176. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/execution/verification_dataset.py +0 -0
  177. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/__init__.py +0 -0
  178. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/adapt/__init__.py +0 -0
  179. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/adapt/applicator.py +0 -0
  180. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/adapt/types.py +0 -0
  181. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/audit/__init__.py +0 -0
  182. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/audit/types.py +0 -0
  183. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/audit/writer.py +0 -0
  184. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/__init__.py +0 -0
  185. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/controller.py +0 -0
  186. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/events.py +0 -0
  187. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/llm_client.py +0 -0
  188. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/output_parser.py +0 -0
  189. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/subagent.py +0 -0
  190. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/core/types.py +0 -0
  191. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/cost/__init__.py +0 -0
  192. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/cost/calculator.py +0 -0
  193. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/cost/tracker.py +0 -0
  194. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/cost/types.py +0 -0
  195. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/__init__.py +0 -0
  196. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/dimensional.py +0 -0
  197. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/failure_report.py +0 -0
  198. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/protocol.py +0 -0
  199. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/runner.py +0 -0
  200. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/scenario_evaluator.py +0 -0
  201. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/self_play.py +0 -0
  202. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/evaluation/types.py +0 -0
  203. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta/__init__.py +0 -0
  204. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta/advisor.py +0 -0
  205. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta/collector.py +0 -0
  206. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta/profiler.py +0 -0
  207. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta/types.py +0 -0
  208. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/meta_optimizer.py +0 -0
  209. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/optimizer/__init__.py +0 -0
  210. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/optimizer/pareto.py +0 -0
  211. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/orchestration/__init__.py +0 -0
  212. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/orchestration/dag.py +0 -0
  213. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/orchestration/engine.py +0 -0
  214. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/orchestration/types.py +0 -0
  215. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/__init__.py +0 -0
  216. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/advancement.py +0 -0
  217. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/gate.py +0 -0
  218. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/holdout.py +0 -0
  219. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/objective_guardrail.py +0 -0
  220. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/retry_context.py +0 -0
  221. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/trend_gate.py +0 -0
  222. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/pipeline/validity_gate.py +0 -0
  223. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/repl/__init__.py +0 -0
  224. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/repl/monty_worker.py +0 -0
  225. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/repl/session.py +0 -0
  226. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/repl/types.py +0 -0
  227. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/repl/worker.py +0 -0
  228. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/scoring/__init__.py +0 -0
  229. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/scoring/backends.py +0 -0
  230. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/scoring/elo.py +0 -0
  231. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/storage/__init__.py +0 -0
  232. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/storage/versioned_store.py +0 -0
  233. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/validation/__init__.py +0 -0
  234. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/validation/staged.py +0 -0
  235. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/harness/validation/stages.py +0 -0
  236. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/__init__.py +0 -0
  237. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/primeintellect/__init__.py +0 -0
  238. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/primeintellect/client.py +0 -0
  239. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/ssh/__init__.py +0 -0
  240. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/ssh/client.py +0 -0
  241. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/integrations/ssh/config.py +0 -0
  242. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/__init__.py +0 -0
  243. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/coherence.py +0 -0
  244. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/dead_end_manager.py +0 -0
  245. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/evidence_freshness.py +0 -0
  246. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/export.py +0 -0
  247. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/fresh_start.py +0 -0
  248. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/harness_quality.py +0 -0
  249. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/hint_volume.py +0 -0
  250. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/lessons.py +0 -0
  251. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/mutation_log.py +0 -0
  252. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/normalized_metrics.py +0 -0
  253. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/package.py +0 -0
  254. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/progress.py +0 -0
  255. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/protocol.py +0 -0
  256. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/rapid_gate.py +0 -0
  257. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/report.py +0 -0
  258. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/research_hub.py +0 -0
  259. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/search.py +0 -0
  260. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/solver.py +0 -0
  261. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/stagnation.py +0 -0
  262. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/trajectory.py +0 -0
  263. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/tuning.py +0 -0
  264. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/knowledge/weakness.py +0 -0
  265. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/__init__.py +0 -0
  266. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/controller.py +0 -0
  267. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/cost_control.py +0 -0
  268. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/ecosystem_runner.py +0 -0
  269. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/events.py +0 -0
  270. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/exploration.py +0 -0
  271. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/generation_pipeline.py +0 -0
  272. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/generation_runner.py +0 -0
  273. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/hypothesis_tree.py +0 -0
  274. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/presets.py +0 -0
  275. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/refinement_prompt.py +0 -0
  276. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/__init__.py +0 -0
  277. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/context_loaders.py +0 -0
  278. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/dimensions.py +0 -0
  279. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/exploration.py +0 -0
  280. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/freshness.py +0 -0
  281. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/persistence_helpers.py +0 -0
  282. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_helpers/tournament_prep.py +0 -0
  283. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_prevalidation.py +0 -0
  284. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_probe.py +0 -0
  285. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_staged_validation.py +0 -0
  286. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/stage_tree_search.py +0 -0
  287. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/startup_verification.py +0 -0
  288. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/loop/tournament_helpers.py +0 -0
  289. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/__init__.py +0 -0
  290. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/_base.py +0 -0
  291. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/agent_task_tools.py +0 -0
  292. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/artifact_tools.py +0 -0
  293. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/distill_tools.py +0 -0
  294. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/monitor_tools.py +0 -0
  295. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/mcp/sandbox.py +0 -0
  296. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/monitor/__init__.py +0 -0
  297. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/monitor/engine.py +0 -0
  298. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/monitor/evaluators.py +0 -0
  299. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/monitor/types.py +0 -0
  300. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notebook/__init__.py +0 -0
  301. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notebook/context_provider.py +0 -0
  302. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notebook/injection.py +0 -0
  303. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notebook/types.py +0 -0
  304. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/__init__.py +0 -0
  305. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/base.py +0 -0
  306. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/callback.py +0 -0
  307. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/composite.py +0 -0
  308. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/http.py +0 -0
  309. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/slack.py +0 -0
  310. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/notifications/stdout.py +0 -0
  311. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/__init__.py +0 -0
  312. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/adapters.py +0 -0
  313. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/agent_adapter.py +0 -0
  314. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/discovery.py +0 -0
  315. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/distill.py +0 -0
  316. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/models.py +0 -0
  317. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/openclaw/skill.py +0 -0
  318. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/preflight.py +0 -0
  319. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/prompts/__init__.py +0 -0
  320. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/__init__.py +0 -0
  321. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/anthropic.py +0 -0
  322. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/base.py +0 -0
  323. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/callable_wrapper.py +0 -0
  324. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/mlx_provider.py +0 -0
  325. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/openai_compat.py +0 -0
  326. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/registry.py +0 -0
  327. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/retry.py +0 -0
  328. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/providers/scenario_routing.py +0 -0
  329. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/__init__.py +0 -0
  330. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/consultation.py +0 -0
  331. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/evaluation.py +0 -0
  332. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/persistence.py +0 -0
  333. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/prompt_wiring.py +0 -0
  334. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/runtime.py +0 -0
  335. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/research/types.py +0 -0
  336. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/__init__.py +0 -0
  337. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/context_loader.py +0 -0
  338. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/prompts.py +0 -0
  339. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/repl_worker.py +0 -0
  340. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/session.py +0 -0
  341. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/rlm/types.py +0 -0
  342. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/__init__.py +0 -0
  343. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/base.py +0 -0
  344. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/claude_cli.py +0 -0
  345. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/codex_cli.py +0 -0
  346. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/direct_api.py +0 -0
  347. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/hermes_cli.py +0 -0
  348. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/pi_artifacts.py +0 -0
  349. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/pi_cli.py +0 -0
  350. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/runtimes/pi_rpc.py +0 -0
  351. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/__init__.py +0 -0
  352. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/agent_task.py +0 -0
  353. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/artifact_editing.py +0 -0
  354. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/base.py +0 -0
  355. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/capabilities.py +0 -0
  356. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/coordination.py +0 -0
  357. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/__init__.py +0 -0
  358. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/_family_creator_shim.py +0 -0
  359. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_codegen.py +0 -0
  360. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_creator.py +0 -0
  361. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_designer.py +0 -0
  362. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_revision.py +0 -0
  363. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_spec.py +0 -0
  364. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/agent_task_validator.py +0 -0
  365. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/artifact_editing_codegen.py +0 -0
  366. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/artifact_editing_creator.py +0 -0
  367. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/artifact_editing_designer.py +0 -0
  368. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/artifact_editing_spec.py +0 -0
  369. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/coordination_codegen.py +0 -0
  370. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/coordination_creator.py +0 -0
  371. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/coordination_designer.py +0 -0
  372. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/coordination_spec.py +0 -0
  373. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/creator.py +0 -0
  374. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/creator_registry.py +0 -0
  375. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/designer.py +0 -0
  376. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/family_classifier.py +0 -0
  377. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/family_pipeline.py +0 -0
  378. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/generic_creator.py +0 -0
  379. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/investigation_codegen.py +0 -0
  380. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/investigation_creator.py +0 -0
  381. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/investigation_designer.py +0 -0
  382. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/investigation_spec.py +0 -0
  383. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/loader.py +0 -0
  384. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/naming.py +0 -0
  385. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/negotiation_codegen.py +0 -0
  386. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/negotiation_creator.py +0 -0
  387. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/negotiation_designer.py +0 -0
  388. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/negotiation_spec.py +0 -0
  389. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/operator_loop_codegen.py +0 -0
  390. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/operator_loop_creator.py +0 -0
  391. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/operator_loop_designer.py +0 -0
  392. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/operator_loop_spec.py +0 -0
  393. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/registry.py +0 -0
  394. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/schema_evolution_codegen.py +0 -0
  395. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/schema_evolution_creator.py +0 -0
  396. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/schema_evolution_designer.py +0 -0
  397. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/schema_evolution_spec.py +0 -0
  398. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/simulation_codegen.py +0 -0
  399. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/simulation_creator.py +0 -0
  400. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/simulation_designer.py +0 -0
  401. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/simulation_spec.py +0 -0
  402. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/spec_auto_heal.py +0 -0
  403. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/tool_fragility_codegen.py +0 -0
  404. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/tool_fragility_creator.py +0 -0
  405. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/tool_fragility_designer.py +0 -0
  406. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/tool_fragility_spec.py +0 -0
  407. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/validator.py +0 -0
  408. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/workflow_codegen.py +0 -0
  409. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/workflow_creator.py +0 -0
  410. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/workflow_designer.py +0 -0
  411. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/custom/workflow_spec.py +0 -0
  412. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/grid_ctf/__init__.py +0 -0
  413. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/grid_ctf/scenario.py +0 -0
  414. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/investigation.py +0 -0
  415. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/negotiation.py +0 -0
  416. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/operator_loop.py +0 -0
  417. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/othello.py +0 -0
  418. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/schema_evolution.py +0 -0
  419. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/simulation.py +0 -0
  420. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/__init__.py +0 -0
  421. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/content-generation/README.md +0 -0
  422. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/content-generation/example_input.json +0 -0
  423. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/content-generation/example_output.json +0 -0
  424. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/content-generation/spec.yaml +0 -0
  425. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/prompt-optimization/README.md +0 -0
  426. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/prompt-optimization/example_input.json +0 -0
  427. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/prompt-optimization/example_output.json +0 -0
  428. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/prompt-optimization/spec.yaml +0 -0
  429. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/rag-accuracy/README.md +0 -0
  430. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/rag-accuracy/example_input.json +0 -0
  431. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/rag-accuracy/example_output.json +0 -0
  432. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/templates/rag-accuracy/spec.yaml +0 -0
  433. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/tool_fragility.py +0 -0
  434. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/type_registry.py +0 -0
  435. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/workflow.py +0 -0
  436. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/scenarios/world_state.py +0 -0
  437. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/sdk.py +0 -0
  438. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/sdk_models.py +0 -0
  439. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/__init__.py +0 -0
  440. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/app.py +0 -0
  441. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/changelog.py +0 -0
  442. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/cockpit_api.py +0 -0
  443. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/hub_api.py +0 -0
  444. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/knowledge_api.py +0 -0
  445. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/monitor_api.py +0 -0
  446. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/notebook_api.py +0 -0
  447. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/openclaw_api.py +0 -0
  448. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/protocol.py +0 -0
  449. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/run_manager.py +0 -0
  450. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/server/writeup.py +0 -0
  451. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/__init__.py +0 -0
  452. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/action_labels.py +0 -0
  453. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/context_pressure.py +0 -0
  454. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/coordinator.py +0 -0
  455. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/living_docs.py +0 -0
  456. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/memory_consolidation.py +0 -0
  457. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/progress_digest.py +0 -0
  458. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/remote_bridge.py +0 -0
  459. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/skill_registry.py +0 -0
  460. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/store.py +0 -0
  461. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/supervisor.py +0 -0
  462. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/session/types.py +0 -0
  463. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/simulation/__init__.py +0 -0
  464. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/simulation/export.py +0 -0
  465. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/__init__.py +0 -0
  466. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/artifacts.py +0 -0
  467. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/bootstrap_schema.py +0 -0
  468. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/buffered_writer.py +0 -0
  469. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/row_types.py +0 -0
  470. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/storage/sqlite_store.py +0 -0
  471. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/__init__.py +0 -0
  472. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/autoresearch/__init__.py +0 -0
  473. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/autoresearch/prepare.py +0 -0
  474. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/autoresearch/program.md +0 -0
  475. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/autoresearch/program.py +0 -0
  476. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/autoresearch/train.py +0 -0
  477. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/backends.py +0 -0
  478. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/export.py +0 -0
  479. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/model_registry.py +0 -0
  480. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/runner.py +0 -0
  481. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/training/types.py +0 -0
  482. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/util/__init__.py +0 -0
  483. {autocontext-0.3.4 → autocontext-0.3.6}/src/autocontext/util/json_io.py +0 -0
  484. {autocontext-0.3.4 → autocontext-0.3.6}/tests/conftest.py +0 -0
  485. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ab_runner.py +0 -0
  486. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ab_stats.py +0 -0
  487. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_action_filter.py +0 -0
  488. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_action_filter_integration.py +0 -0
  489. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_action_labels.py +0 -0
  490. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_advancement_contract.py +0 -0
  491. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_e2e.py +0 -0
  492. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_live_e2e.py +0 -0
  493. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_sdk_client.py +0 -0
  494. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_sdk_integration.py +0 -0
  495. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_task.py +0 -0
  496. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_task_export.py +0 -0
  497. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_task_multi_gen.py +0 -0
  498. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agent_task_pipeline.py +0 -0
  499. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_agentos_adapter.py +0 -0
  500. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_aggregate_facets.py +0 -0
  501. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_analysis_injection.py +0 -0
  502. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_anthropic_client_retry.py +0 -0
  503. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_api_key_fallback.py +0 -0
  504. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_architect_dag_changes.py +0 -0
  505. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_architect_tool_updates.py +0 -0
  506. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_architect_tools.py +0 -0
  507. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_artifact_contracts.py +0 -0
  508. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_artifact_editing.py +0 -0
  509. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_artifact_harness.py +0 -0
  510. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ast_safety.py +0 -0
  511. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_auto_sample_input.py +0 -0
  512. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_backpressure.py +0 -0
  513. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_backpressure_trend.py +0 -0
  514. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_banner_sync.py +0 -0
  515. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_buffered_artifacts.py +0 -0
  516. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_buffered_writer.py +0 -0
  517. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_ab_test.py +0 -0
  518. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_agent_task.py +0 -0
  519. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_backport.py +0 -0
  520. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_error_output.py +0 -0
  521. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_json.py +0 -0
  522. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cli_preset.py +0 -0
  523. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_coach_competitor_hints.py +0 -0
  524. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cockpit.py +0 -0
  525. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cockpit_consultation_integration.py +0 -0
  526. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cockpit_notebook_integration.py +0 -0
  527. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_code_strategies.py +0 -0
  528. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_code_strategies_e2e.py +0 -0
  529. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_codex_cli_runtime.py +0 -0
  530. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_config_adaptive.py +0 -0
  531. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_constraint_prompts.py +0 -0
  532. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_consultation.py +0 -0
  533. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_context_budget.py +0 -0
  534. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_context_preparation.py +0 -0
  535. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_context_pressure.py +0 -0
  536. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_coordinator.py +0 -0
  537. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_correlation_issues.py +0 -0
  538. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cost_control_and_presets.py +0 -0
  539. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_credit_assignment.py +0 -0
  540. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_cross_run_inheritance.py +0 -0
  541. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_curator.py +0 -0
  542. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_curator_integration.py +0 -0
  543. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_custom_scenario_spec.py +0 -0
  544. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dag_apply.py +0 -0
  545. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dag_mutation.py +0 -0
  546. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dead_end_registry.py +0 -0
  547. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dead_end_wiring.py +0 -0
  548. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_derive_name.py +0 -0
  549. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_designer_calibration.py +0 -0
  550. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dict_type_consistency.py +0 -0
  551. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dimension_pinning.py +0 -0
  552. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dimension_threshold.py +0 -0
  553. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_dimensional_scoring.py +0 -0
  554. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_disagreement.py +0 -0
  555. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_discovery_scenario_type.py +0 -0
  556. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_distill_jobs.py +0 -0
  557. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ecosystem_convergence.py +0 -0
  558. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ecosystem_integration.py +0 -0
  559. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ecosystem_runner.py +0 -0
  560. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_elo.py +0 -0
  561. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_enumerate_grid_ctf.py +0 -0
  562. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_enumerate_legal_actions.py +0 -0
  563. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_enumerate_othello.py +0 -0
  564. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_eval_provider_wiring.py +0 -0
  565. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_event_subscribers.py +0 -0
  566. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_exploration_mechanisms.py +0 -0
  567. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_export_cli.py +0 -0
  568. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_export_skill_md.py +0 -0
  569. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_factual_confidence.py +0 -0
  570. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_failure_recovery_lessons.py +0 -0
  571. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_failure_report.py +0 -0
  572. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_family_classifier.py +0 -0
  573. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_family_pipeline.py +0 -0
  574. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_feedback_loops.py +0 -0
  575. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_freshness_and_fixtures.py +0 -0
  576. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_gate_taxonomy.py +0 -0
  577. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_generation_pipeline.py +0 -0
  578. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_generic_creator.py +0 -0
  579. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/__init__.py +0 -0
  580. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_adapt_applicator.py +0 -0
  581. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_adapt_types.py +0 -0
  582. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_audit_types.py +0 -0
  583. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_audit_writer.py +0 -0
  584. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_controller.py +0 -0
  585. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_cost_calculator.py +0 -0
  586. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_cost_tracker.py +0 -0
  587. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_cost_types.py +0 -0
  588. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_elo.py +0 -0
  589. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_eval_runner.py +0 -0
  590. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_eval_types.py +0 -0
  591. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_evaluator.py +0 -0
  592. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_events.py +0 -0
  593. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_gate.py +0 -0
  594. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_llm_client.py +0 -0
  595. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_meta_advisor.py +0 -0
  596. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_meta_collector.py +0 -0
  597. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_meta_optimizer.py +0 -0
  598. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_meta_profiler.py +0 -0
  599. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_meta_types.py +0 -0
  600. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_output_parser.py +0 -0
  601. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_pipeline_engine.py +0 -0
  602. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_repl_session.py +0 -0
  603. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_repl_types.py +0 -0
  604. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_repl_worker.py +0 -0
  605. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_retry_context.py +0 -0
  606. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_role_dag.py +0 -0
  607. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_scenario_evaluator.py +0 -0
  608. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_subagent.py +0 -0
  609. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_trend_gate.py +0 -0
  610. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_types.py +0 -0
  611. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_harness_versioned_store.py +0 -0
  612. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness/test_output_parser_adoption.py +0 -0
  613. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_coverage.py +0 -0
  614. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_inheritance.py +0 -0
  615. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_loader.py +0 -0
  616. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_mode.py +0 -0
  617. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_model_demotion.py +0 -0
  618. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_quality.py +0 -0
  619. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_synthesizer.py +0 -0
  620. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_tester.py +0 -0
  621. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_harness_versioning.py +0 -0
  622. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hermes_gateway.py +0 -0
  623. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hermes_protocol_alignment.py +0 -0
  624. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hermes_runtime.py +0 -0
  625. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hint_feedback.py +0 -0
  626. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hint_persistence.py +0 -0
  627. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hint_volume_control.py +0 -0
  628. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_holdout_evaluation.py +0 -0
  629. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hub_api.py +0 -0
  630. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_human_feedback.py +0 -0
  631. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_hypothesis_tree.py +0 -0
  632. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_improvement_loop.py +0 -0
  633. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_improvement_loop_resilience.py +0 -0
  634. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_integration_docs.py +0 -0
  635. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_integration_improvement.py +0 -0
  636. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_intent_validation.py +0 -0
  637. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_interface_conventions.py +0 -0
  638. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_investigation_actions_coerce.py +0 -0
  639. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_investigation_workflow.py +0 -0
  640. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_judge.py +0 -0
  641. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_judge_rubrics.py +0 -0
  642. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_knowledge_api.py +0 -0
  643. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_knowledge_coherence.py +0 -0
  644. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_lesson_applicability.py +0 -0
  645. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_living_docs.py +0 -0
  646. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_loop_controller.py +0 -0
  647. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_match_export.py +0 -0
  648. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_mcp_agent_tasks.py +0 -0
  649. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_mcp_server.py +0 -0
  650. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_mcp_tools.py +0 -0
  651. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_memory_consolidation.py +0 -0
  652. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_mlx_provider.py +0 -0
  653. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_model_registry.py +0 -0
  654. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_model_router.py +0 -0
  655. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_model_router_integration.py +0 -0
  656. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_module_size_limits.py +0 -0
  657. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monitor.py +0 -0
  658. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_e2e.py +0 -0
  659. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_executor.py +0 -0
  660. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_live.py +0 -0
  661. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_repl_integration.py +0 -0
  662. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_repl_live.py +0 -0
  663. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_repl_settings.py +0 -0
  664. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_repl_wiring.py +0 -0
  665. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_repl_worker.py +0 -0
  666. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_monty_settings.py +0 -0
  667. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_multi_gen_stall.py +0 -0
  668. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_mutation_log.py +0 -0
  669. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_negotiation.py +0 -0
  670. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_negotiation_verification.py +0 -0
  671. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_new_scenario_cli.py +0 -0
  672. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_normalized_metrics.py +0 -0
  673. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_notebook_wiring.py +0 -0
  674. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_notifications.py +0 -0
  675. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_objective_guardrail.py +0 -0
  676. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_objective_verification.py +0 -0
  677. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openai_agent_provider.py +0 -0
  678. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openclaw_adapters.py +0 -0
  679. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openclaw_agent_adapter.py +0 -0
  680. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openclaw_discovery.py +0 -0
  681. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openclaw_operations.py +0 -0
  682. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_openclaw_skill.py +0 -0
  683. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_operator_loop_coordination.py +0 -0
  684. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_operator_loop_unsupported.py +0 -0
  685. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_orchestrator_feedback.py +0 -0
  686. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_output_cleaner.py +0 -0
  687. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_param_type_conventions.py +0 -0
  688. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pareto_optimizer.py +0 -0
  689. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_per_role_provider.py +0 -0
  690. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_phased_execution.py +0 -0
  691. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_artifacts.py +0 -0
  692. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_cli_runtime.py +0 -0
  693. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_protocol_alignment.py +0 -0
  694. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_provider_surface.py +0 -0
  695. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_rpc.py +0 -0
  696. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pi_smoke.py +0 -0
  697. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pipeline_adapter.py +0 -0
  698. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pipeline_wiring.py +0 -0
  699. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_policy_executor.py +0 -0
  700. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_policy_refinement.py +0 -0
  701. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_policy_refinement_integration.py +0 -0
  702. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_preflight.py +0 -0
  703. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_prepare_mlx.py +0 -0
  704. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_preset_named.py +0 -0
  705. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_presets.py +0 -0
  706. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_prevalidation.py +0 -0
  707. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_primeintellect_client.py +0 -0
  708. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_probe_pipeline.py +0 -0
  709. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_program_template.py +0 -0
  710. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_progress_digests.py +0 -0
  711. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_progress_json.py +0 -0
  712. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_protocol.py +0 -0
  713. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_protocol_parity.py +0 -0
  714. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_provider_retry.py +0 -0
  715. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_providers.py +0 -0
  716. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_pydantic_migration.py +0 -0
  717. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rapid_exploration.py +0 -0
  718. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_refinement_prompt.py +0 -0
  719. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_remote_bridge.py +0 -0
  720. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_remove_hardcoded_models.py +0 -0
  721. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_removed_backpressure_modules.py +0 -0
  722. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_removed_harness_modules.py +0 -0
  723. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_replay_narrative_flow.py +0 -0
  724. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_adapter.py +0 -0
  725. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_consultation.py +0 -0
  726. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_eval.py +0 -0
  727. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_hub.py +0 -0
  728. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_persistence.py +0 -0
  729. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_prompt_wiring.py +0 -0
  730. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_protocol.py +0 -0
  731. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_research_runtime.py +0 -0
  732. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_restore_versioning.py +0 -0
  733. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_retry_learning.py +0 -0
  734. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_retry_provider.py +0 -0
  735. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_revise_output_fix.py +0 -0
  736. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rlm_competitor.py +0 -0
  737. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rlm_context_loader.py +0 -0
  738. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rlm_integration.py +0 -0
  739. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rlm_repl_worker.py +0 -0
  740. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rlm_session.py +0 -0
  741. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_role_router.py +0 -0
  742. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rubric_calibration.py +0 -0
  743. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rubric_coherence.py +0 -0
  744. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_rubric_drift_calibration.py +0 -0
  745. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_run_trace.py +0 -0
  746. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_runner_integration.py +0 -0
  747. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_runtimes.py +0 -0
  748. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_sample_states.py +0 -0
  749. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_sandbox.py +0 -0
  750. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_capabilities.py +0 -0
  751. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_creator.py +0 -0
  752. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_dispatch.py +0 -0
  753. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_families.py +0 -0
  754. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_routing.py +0 -0
  755. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_templates.py +0 -0
  756. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenario_type_completeness.py +0 -0
  757. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scenarios.py +0 -0
  758. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_schema_evolution_tool_fragility.py +0 -0
  759. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_score_trajectory.py +0 -0
  760. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_scoring_backends.py +0 -0
  761. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_sdk.py +0 -0
  762. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_seed_tools.py +0 -0
  763. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_self_play.py +0 -0
  764. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_serde_conventions.py +0 -0
  765. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_server_health.py +0 -0
  766. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_service_layer.py +0 -0
  767. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_session_notebook.py +0 -0
  768. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_session_report_wiring.py +0 -0
  769. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_session_reports.py +0 -0
  770. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_session_runtime.py +0 -0
  771. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_session_supervisor.py +0 -0
  772. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_settings_cleanup.py +0 -0
  773. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_shared_tools.py +0 -0
  774. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_simulate_bug_fixes.py +0 -0
  775. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_simulation_contract.py +0 -0
  776. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_skeptic.py +0 -0
  777. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_skill_consolidation.py +0 -0
  778. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_skill_registry.py +0 -0
  779. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_smoke_judge.py +0 -0
  780. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_sqlite_store.py +0 -0
  781. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_sqlite_store_bootstrap.py +0 -0
  782. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_ssh_executor.py +0 -0
  783. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stage_preflight.py +0 -0
  784. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stage_probe.py +0 -0
  785. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stage_staged_validation.py +0 -0
  786. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stage_tree_search.py +0 -0
  787. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_staged_runner.py +0 -0
  788. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_staged_validation.py +0 -0
  789. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_staged_validation_storage.py +0 -0
  790. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stages_enriched_retry.py +0 -0
  791. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_stagnation.py +0 -0
  792. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_startup_verification.py +0 -0
  793. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_strategy_package.py +0 -0
  794. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_strategy_package_cli.py +0 -0
  795. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_strategy_translator.py +0 -0
  796. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_task_metrics.py +0 -0
  797. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_task_queue_priority.py +0 -0
  798. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_task_runner.py +0 -0
  799. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_time_budget.py +0 -0
  800. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_timeline_inspector.py +0 -0
  801. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_tool_context_full.py +0 -0
  802. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_tool_validation.py +0 -0
  803. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_tournament_helpers.py +0 -0
  804. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_trace_reporter.py +0 -0
  805. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_train_mlx.py +0 -0
  806. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_train_summary.py +0 -0
  807. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_training_backend.py +0 -0
  808. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_training_export.py +0 -0
  809. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_training_init.py +0 -0
  810. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_training_pi_provider.py +0 -0
  811. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_training_runner.py +0 -0
  812. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_trajectory_harness.py +0 -0
  813. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_translator_simplification.py +0 -0
  814. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_trend_gate_integration.py +0 -0
  815. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_two_tier_tournament.py +0 -0
  816. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_typed_contracts.py +0 -0
  817. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_typed_dict_rows.py +0 -0
  818. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_validity_gate.py +0 -0
  819. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_verification_dataset.py +0 -0
  820. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_weakness_reports.py +0 -0
  821. {autocontext-0.3.4 → autocontext-0.3.6}/tests/test_world_state.py +0 -0
@@ -19,6 +19,10 @@ __pycache__/
19
19
  # Node
20
20
  node_modules/
21
21
 
22
+ # Claude Code / superpowers workflow artifacts
23
+ .claude/projects/
24
+ docs/superpowers/
25
+
22
26
  # OS/editor
23
27
  .DS_Store
24
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autocontext
3
- Version: 0.3.4
3
+ Version: 0.3.6
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.4`.
63
+ The current PyPI release line is `autocontext==0.3.6`.
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.4`.
13
+ The current PyPI release line is `autocontext==0.3.6`.
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.4"
7
+ version = "0.3.6"
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,15 @@
1
+ """Deduplicated bucket-backed blob store (AC-518)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from autocontext.blobstore.factory import create_blob_store
6
+ from autocontext.blobstore.ref import BlobRef
7
+ from autocontext.blobstore.registry import BlobRegistry
8
+ from autocontext.blobstore.store import BlobStore
9
+
10
+ __all__ = [
11
+ "BlobRef",
12
+ "BlobRegistry",
13
+ "BlobStore",
14
+ "create_blob_store",
15
+ ]
@@ -0,0 +1,38 @@
1
+ """BlobStore factory (AC-518)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+
7
+ from autocontext.blobstore.store import BlobStore
8
+
9
+
10
+ def create_blob_store(
11
+ backend: str,
12
+ root: str = "",
13
+ repo_id: str = "",
14
+ cache_dir: str = "",
15
+ **kwargs: object,
16
+ ) -> BlobStore:
17
+ """Create a BlobStore backend from configuration.
18
+
19
+ Args:
20
+ backend: "local" or "hf_bucket"
21
+ root: Root directory for local backend
22
+ repo_id: HF repo ID for hf_bucket backend
23
+ cache_dir: Local cache directory for hf_bucket backend
24
+ """
25
+ if backend == "local":
26
+ from autocontext.blobstore.local import LocalBlobStore
27
+
28
+ return LocalBlobStore(root=Path(root))
29
+
30
+ if backend == "hf_bucket":
31
+ from autocontext.blobstore.hf_bucket import HfBucketStore
32
+
33
+ return HfBucketStore(
34
+ repo_id=repo_id,
35
+ cache_dir=Path(cache_dir) if cache_dir else Path(root) / ".hf_cache",
36
+ )
37
+
38
+ raise ValueError(f"Unknown blob store backend: {backend!r}. Available: 'local', 'hf_bucket'")
@@ -0,0 +1,227 @@
1
+ """Hugging Face Bucket blob store backend (AC-518).
2
+
3
+ Wraps ``huggingface-cli`` for upload/download. Uses a local cache
4
+ directory for hydrated blobs.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import hashlib
10
+ import json
11
+ import logging
12
+ import subprocess
13
+ from pathlib import Path
14
+ from typing import Any
15
+
16
+ from autocontext.blobstore.store import BlobStore, normalize_blob_key, prefix_matches, resolve_blob_path
17
+
18
+ logger = logging.getLogger(__name__)
19
+ _INDEX_KEY = ".autocontext/blob_index.json"
20
+
21
+
22
+ class HfBucketStore(BlobStore):
23
+ """HF Buckets backend using huggingface-cli."""
24
+
25
+ def __init__(self, repo_id: str, cache_dir: Path, repo_type: str = "dataset") -> None:
26
+ self.repo_id = repo_id
27
+ self.cache_dir = cache_dir
28
+ self.repo_type = repo_type
29
+ self.cache_dir.mkdir(parents=True, exist_ok=True)
30
+
31
+ def put(self, key: str, data: bytes) -> str:
32
+ normalized_key = normalize_blob_key(key)
33
+ # Write to local cache first, then upload
34
+ cache_path = resolve_blob_path(self.cache_dir, normalized_key)
35
+ cache_path.parent.mkdir(parents=True, exist_ok=True)
36
+ cache_path.write_bytes(data)
37
+ digest = "sha256:" + hashlib.sha256(data).hexdigest()
38
+
39
+ self._run_hf_command(
40
+ [
41
+ "huggingface-cli",
42
+ "upload",
43
+ self.repo_id,
44
+ str(cache_path),
45
+ normalized_key,
46
+ "--repo-type",
47
+ self.repo_type,
48
+ ]
49
+ )
50
+ index = self._load_index()[1]
51
+ index[normalized_key] = {
52
+ "size_bytes": len(data),
53
+ "digest": digest,
54
+ "content_type": _guess_content_type(normalized_key),
55
+ }
56
+ self._save_index(index)
57
+ return digest
58
+
59
+ def get(self, key: str) -> bytes | None:
60
+ normalized_key = normalize_blob_key(key)
61
+ # Try cache first
62
+ cache_path = resolve_blob_path(self.cache_dir, normalized_key)
63
+ if cache_path.is_file():
64
+ return cache_path.read_bytes()
65
+
66
+ index_available, index = self._load_index()
67
+ if index_available and normalized_key not in index:
68
+ return None
69
+
70
+ # Download from remote
71
+ try:
72
+ cache_path.parent.mkdir(parents=True, exist_ok=True)
73
+ self._run_hf_command(
74
+ [
75
+ "huggingface-cli",
76
+ "download",
77
+ self.repo_id,
78
+ normalized_key,
79
+ "--repo-type",
80
+ self.repo_type,
81
+ "--local-dir",
82
+ str(cache_path.parent),
83
+ ]
84
+ )
85
+ if cache_path.is_file():
86
+ return cache_path.read_bytes()
87
+ except (RuntimeError, OSError):
88
+ pass
89
+ return None
90
+
91
+ def head(self, key: str) -> dict[str, Any] | None:
92
+ normalized_key = normalize_blob_key(key)
93
+ cache_path = resolve_blob_path(self.cache_dir, normalized_key)
94
+ if cache_path.is_file():
95
+ data = cache_path.read_bytes()
96
+ return {
97
+ "size_bytes": len(data),
98
+ "digest": "sha256:" + hashlib.sha256(data).hexdigest(),
99
+ "content_type": _guess_content_type(normalized_key),
100
+ }
101
+ index_available, index = self._load_index()
102
+ if index_available:
103
+ metadata = index.get(normalized_key)
104
+ if metadata is not None:
105
+ return dict(metadata)
106
+ return None
107
+
108
+ def list_prefix(self, prefix: str) -> list[str]:
109
+ index_available, index = self._load_index()
110
+ if index_available:
111
+ return sorted(key for key in index if prefix_matches(key, prefix))
112
+
113
+ # Fall back to local cache listing if index is unavailable.
114
+ try:
115
+ base = self.cache_dir / prefix.replace("\\", "/")
116
+ parent = base.parent if not base.is_dir() else base
117
+ if not parent.is_dir():
118
+ return []
119
+ return [
120
+ p.relative_to(self.cache_dir).as_posix()
121
+ for p in sorted(parent.rglob("*"))
122
+ if p.is_file() and prefix_matches(p.relative_to(self.cache_dir).as_posix(), prefix)
123
+ ]
124
+ except Exception:
125
+ return []
126
+
127
+ def delete(self, key: str) -> bool:
128
+ normalized_key = normalize_blob_key(key)
129
+ cache_path = resolve_blob_path(self.cache_dir, normalized_key)
130
+ index_available, index = self._load_index()
131
+ existed = normalized_key in index if index_available else False
132
+ if index_available and normalized_key in index:
133
+ del index[normalized_key]
134
+ self._save_index(index)
135
+ self._delete_remote_file(normalized_key)
136
+ if cache_path.is_file():
137
+ cache_path.unlink()
138
+ existed = True
139
+ return existed
140
+
141
+ def _load_index(self) -> tuple[bool, dict[str, dict[str, Any]]]:
142
+ index_path = resolve_blob_path(self.cache_dir, _INDEX_KEY)
143
+ if not index_path.is_file():
144
+ try:
145
+ self._run_hf_command(
146
+ [
147
+ "huggingface-cli",
148
+ "download",
149
+ self.repo_id,
150
+ _INDEX_KEY,
151
+ "--repo-type",
152
+ self.repo_type,
153
+ "--local-dir",
154
+ str(index_path.parent),
155
+ ]
156
+ )
157
+ except (RuntimeError, OSError):
158
+ return False, {}
159
+ if not index_path.is_file():
160
+ return False, {}
161
+ try:
162
+ data = json.loads(index_path.read_text(encoding="utf-8"))
163
+ except (json.JSONDecodeError, OSError):
164
+ logger.warning("failed to parse HF blob index for %s", self.repo_id)
165
+ return False, {}
166
+ if not isinstance(data, dict):
167
+ return False, {}
168
+ index: dict[str, dict[str, Any]] = {}
169
+ for key, metadata in data.items():
170
+ if isinstance(key, str) and isinstance(metadata, dict):
171
+ index[key] = dict(metadata)
172
+ return True, index
173
+
174
+ def _save_index(self, index: dict[str, dict[str, Any]]) -> None:
175
+ index_path = resolve_blob_path(self.cache_dir, _INDEX_KEY)
176
+ index_path.parent.mkdir(parents=True, exist_ok=True)
177
+ index_path.write_text(json.dumps(index, indent=2, sort_keys=True), encoding="utf-8")
178
+ self._run_hf_command(
179
+ [
180
+ "huggingface-cli",
181
+ "upload",
182
+ self.repo_id,
183
+ str(index_path),
184
+ _INDEX_KEY,
185
+ "--repo-type",
186
+ self.repo_type,
187
+ ]
188
+ )
189
+
190
+ def _delete_remote_file(self, key: str) -> None:
191
+ try:
192
+ self._run_hf_command(
193
+ [
194
+ "huggingface-cli",
195
+ "repo-files",
196
+ "delete",
197
+ self.repo_id,
198
+ key,
199
+ "--repo-type",
200
+ self.repo_type,
201
+ ]
202
+ )
203
+ except RuntimeError:
204
+ logger.info("remote delete not available for %s in %s", key, self.repo_id)
205
+
206
+ def _run_hf_command(self, cmd: list[str]) -> str:
207
+ result = subprocess.run(
208
+ cmd,
209
+ capture_output=True,
210
+ text=True,
211
+ timeout=60,
212
+ )
213
+ if result.returncode != 0:
214
+ raise RuntimeError(f"HF command failed: {result.stderr.strip()}")
215
+ return result.stdout.strip()
216
+
217
+
218
+ def _guess_content_type(key: str) -> str:
219
+ if key.endswith(".json"):
220
+ return "application/json"
221
+ if key.endswith(".ndjson"):
222
+ return "application/x-ndjson"
223
+ if key.endswith(".md"):
224
+ return "text/markdown"
225
+ if key.endswith(".txt"):
226
+ return "text/plain"
227
+ return "application/octet-stream"
@@ -0,0 +1,98 @@
1
+ """Local filesystem blob store — content-addressed by SHA256 (AC-518)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import hashlib
6
+ import shutil
7
+ from pathlib import Path
8
+ from typing import Any
9
+
10
+ from autocontext.blobstore.store import BlobStore, prefix_matches, resolve_blob_path
11
+
12
+
13
+ class LocalBlobStore(BlobStore):
14
+ """Content-addressed local filesystem backend.
15
+
16
+ Blobs are stored at ``root/<key>`` and their SHA256 digest is
17
+ computed on write. The same content stored under different keys
18
+ will have the same digest but occupy separate files (simplicity
19
+ over dedup for the local backend).
20
+ """
21
+
22
+ def __init__(self, root: Path) -> None:
23
+ self.root = root
24
+ self.root.mkdir(parents=True, exist_ok=True)
25
+
26
+ def put(self, key: str, data: bytes) -> str:
27
+ digest = _sha256(data)
28
+ path = resolve_blob_path(self.root, key)
29
+ path.parent.mkdir(parents=True, exist_ok=True)
30
+ path.write_bytes(data)
31
+ return digest
32
+
33
+ def get(self, key: str) -> bytes | None:
34
+ path = resolve_blob_path(self.root, key)
35
+ if not path.is_file():
36
+ return None
37
+ return path.read_bytes()
38
+
39
+ def head(self, key: str) -> dict[str, Any] | None:
40
+ path = resolve_blob_path(self.root, key)
41
+ if not path.is_file():
42
+ return None
43
+ data = path.read_bytes()
44
+ return {
45
+ "size_bytes": len(data),
46
+ "digest": _sha256(data),
47
+ "content_type": _guess_content_type(key),
48
+ }
49
+
50
+ def list_prefix(self, prefix: str) -> list[str]:
51
+ prefix_path = self.root / prefix.replace("\\", "/")
52
+ base = prefix_path.parent if not prefix_path.is_dir() else prefix_path
53
+ if not base.is_dir():
54
+ return []
55
+ results: list[str] = []
56
+ for path in sorted(base.rglob("*")):
57
+ if path.is_file():
58
+ rel = path.relative_to(self.root).as_posix()
59
+ if prefix_matches(rel, prefix):
60
+ results.append(rel)
61
+ return results
62
+
63
+ def delete(self, key: str) -> bool:
64
+ path = resolve_blob_path(self.root, key)
65
+ if not path.is_file():
66
+ return False
67
+ path.unlink()
68
+ return True
69
+
70
+ def put_file(self, key: str, path: Path) -> str:
71
+ dest = resolve_blob_path(self.root, key)
72
+ dest.parent.mkdir(parents=True, exist_ok=True)
73
+ shutil.copy2(str(path), str(dest))
74
+ return _sha256(dest.read_bytes())
75
+
76
+ def get_file(self, key: str, dest: Path) -> bool:
77
+ src = resolve_blob_path(self.root, key)
78
+ if not src.is_file():
79
+ return False
80
+ dest.parent.mkdir(parents=True, exist_ok=True)
81
+ shutil.copy2(str(src), str(dest))
82
+ return True
83
+
84
+
85
+ def _sha256(data: bytes) -> str:
86
+ return "sha256:" + hashlib.sha256(data).hexdigest()
87
+
88
+
89
+ def _guess_content_type(key: str) -> str:
90
+ if key.endswith(".json"):
91
+ return "application/json"
92
+ if key.endswith(".ndjson"):
93
+ return "application/x-ndjson"
94
+ if key.endswith(".md"):
95
+ return "text/markdown"
96
+ if key.endswith(".txt"):
97
+ return "text/plain"
98
+ return "application/octet-stream"
@@ -0,0 +1,52 @@
1
+ """BlobRef — structured artifact locator (AC-518)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+
10
+ @dataclass(slots=True)
11
+ class BlobRef:
12
+ """Reference to a blob artifact with optional local and remote locations."""
13
+
14
+ kind: str # "trace", "checkpoint", "report", "model", "export", ...
15
+ digest: str # "sha256:<hex>"
16
+ size_bytes: int
17
+ local_path: str = ""
18
+ remote_uri: str = "" # e.g. "hf://org/repo/blobs/key"
19
+ content_type: str = ""
20
+ created_at: str = ""
21
+ retention_class: str = "" # "ephemeral", "durable", "archive"
22
+
23
+ @property
24
+ def is_hydrated(self) -> bool:
25
+ """True if the blob is available locally."""
26
+ return bool(self.local_path) and Path(self.local_path).exists()
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ return {
30
+ "kind": self.kind,
31
+ "digest": self.digest,
32
+ "size_bytes": self.size_bytes,
33
+ "local_path": self.local_path,
34
+ "remote_uri": self.remote_uri,
35
+ "content_type": self.content_type,
36
+ "created_at": self.created_at,
37
+ "retention_class": self.retention_class,
38
+ "is_hydrated": self.is_hydrated,
39
+ }
40
+
41
+ @classmethod
42
+ def from_dict(cls, data: dict[str, Any]) -> BlobRef:
43
+ return cls(
44
+ kind=data.get("kind", ""),
45
+ digest=data.get("digest", ""),
46
+ size_bytes=data.get("size_bytes", 0),
47
+ local_path=data.get("local_path", ""),
48
+ remote_uri=data.get("remote_uri", ""),
49
+ content_type=data.get("content_type", ""),
50
+ created_at=data.get("created_at", ""),
51
+ retention_class=data.get("retention_class", ""),
52
+ )
@@ -0,0 +1,45 @@
1
+ """BlobRegistry — tracks BlobRefs by run + artifact name (AC-518)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+ from autocontext.blobstore.ref import BlobRef
10
+
11
+
12
+ class BlobRegistry:
13
+ """In-memory registry of BlobRefs, persistable to JSON."""
14
+
15
+ def __init__(self) -> None:
16
+ self._entries: dict[str, dict[str, BlobRef]] = {} # run_id → {name → ref}
17
+
18
+ def register(self, run_id: str, name: str, ref: BlobRef) -> None:
19
+ if run_id not in self._entries:
20
+ self._entries[run_id] = {}
21
+ self._entries[run_id][name] = ref
22
+
23
+ def lookup(self, run_id: str, name: str) -> BlobRef | None:
24
+ return self._entries.get(run_id, {}).get(name)
25
+
26
+ def list_for_run(self, run_id: str) -> list[BlobRef]:
27
+ return list(self._entries.get(run_id, {}).values())
28
+
29
+ def save(self, path: Path) -> None:
30
+ data: dict[str, Any] = {}
31
+ for run_id, entries in self._entries.items():
32
+ data[run_id] = {name: ref.to_dict() for name, ref in entries.items()}
33
+ path.parent.mkdir(parents=True, exist_ok=True)
34
+ path.write_text(json.dumps(data, indent=2), encoding="utf-8")
35
+
36
+ @classmethod
37
+ def load(cls, path: Path) -> BlobRegistry:
38
+ registry = cls()
39
+ if not path.is_file():
40
+ return registry
41
+ data = json.loads(path.read_text(encoding="utf-8"))
42
+ for run_id, entries in data.items():
43
+ for name, ref_dict in entries.items():
44
+ registry.register(run_id, name, BlobRef.from_dict(ref_dict))
45
+ return registry
@@ -0,0 +1,94 @@
1
+ """BlobStore abstract base class (AC-518).
2
+
3
+ Backend-agnostic interface for large artifact storage. Implementations
4
+ must handle put/get/head/list/delete of opaque byte blobs keyed by
5
+ string paths.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from abc import ABC, abstractmethod
11
+ from pathlib import Path, PurePosixPath, PureWindowsPath
12
+ from typing import Any
13
+
14
+
15
+ class BlobStore(ABC):
16
+ """Abstract blob storage backend."""
17
+
18
+ @abstractmethod
19
+ def put(self, key: str, data: bytes) -> str:
20
+ """Store bytes at key. Returns digest string (e.g. 'sha256:...')."""
21
+
22
+ @abstractmethod
23
+ def get(self, key: str) -> bytes | None:
24
+ """Retrieve bytes by key. Returns None if not found."""
25
+
26
+ @abstractmethod
27
+ def head(self, key: str) -> dict[str, Any] | None:
28
+ """Return metadata (size_bytes, digest, content_type) or None."""
29
+
30
+ @abstractmethod
31
+ def list_prefix(self, prefix: str) -> list[str]:
32
+ """List all keys matching a prefix."""
33
+
34
+ @abstractmethod
35
+ def delete(self, key: str) -> bool:
36
+ """Delete a key. Returns True if deleted, False if not found."""
37
+
38
+ def put_file(self, key: str, path: Path) -> str:
39
+ """Store a file at key. Default: read and delegate to put()."""
40
+ return self.put(key, path.read_bytes())
41
+
42
+ def get_file(self, key: str, dest: Path) -> bool:
43
+ """Retrieve a blob to a file. Returns True on success."""
44
+ data = self.get(key)
45
+ if data is None:
46
+ return False
47
+ dest.parent.mkdir(parents=True, exist_ok=True)
48
+ dest.write_bytes(data)
49
+ return True
50
+
51
+
52
+ def normalize_blob_key(key: str, *, allow_empty: bool = False) -> str:
53
+ """Normalize a blob key and reject absolute or escaping paths."""
54
+ if not key:
55
+ if allow_empty:
56
+ return ""
57
+ raise ValueError("blob key must not be empty")
58
+
59
+ for path_cls in (PurePosixPath, PureWindowsPath):
60
+ candidate = path_cls(key)
61
+ if candidate.is_absolute():
62
+ raise ValueError(f"invalid blob key: {key!r}")
63
+
64
+ normalized = key.replace("\\", "/")
65
+ parts = [part for part in PurePosixPath(normalized).parts if part not in ("", ".")]
66
+ if any(part == ".." for part in parts):
67
+ raise ValueError(f"invalid blob key: {key!r}")
68
+
69
+ joined = "/".join(parts)
70
+ if not joined and not allow_empty:
71
+ raise ValueError("blob key must not be empty")
72
+ return joined
73
+
74
+
75
+ def resolve_blob_path(root: Path, key: str) -> Path:
76
+ """Resolve a normalized key under root and reject directory escapes."""
77
+ normalized = normalize_blob_key(key)
78
+ root_resolved = root.resolve()
79
+ candidate = (root / normalized).resolve()
80
+ try:
81
+ candidate.relative_to(root_resolved)
82
+ except ValueError as exc:
83
+ raise ValueError(f"invalid blob key: {key!r}") from exc
84
+ return candidate
85
+
86
+
87
+ def prefix_matches(key: str, prefix: str) -> bool:
88
+ """Return True if a normalized key matches a normalized prefix."""
89
+ normalized_prefix = normalize_blob_key(prefix, allow_empty=True)
90
+ if not normalized_prefix:
91
+ return True
92
+ if prefix.endswith(("/", "\\")):
93
+ return key == normalized_prefix or key.startswith(normalized_prefix + "/")
94
+ return key.startswith(normalized_prefix)
@@ -0,0 +1,18 @@
1
+ """Environment snapshot bootstrapping (AC-503)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from autocontext.bootstrap.collector import collect_snapshot
6
+ from autocontext.bootstrap.redactor import RedactionConfig, redact_snapshot
7
+ from autocontext.bootstrap.renderer import render_full_json, render_prompt_section
8
+ from autocontext.bootstrap.snapshot import EnvironmentSnapshot, PackageInfo
9
+
10
+ __all__ = [
11
+ "EnvironmentSnapshot",
12
+ "PackageInfo",
13
+ "collect_snapshot",
14
+ "RedactionConfig",
15
+ "redact_snapshot",
16
+ "render_prompt_section",
17
+ "render_full_json",
18
+ ]