autocontext 0.3.2__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {autocontext-0.3.2 → autocontext-0.3.3}/PKG-INFO +2 -2
- {autocontext-0.3.2 → autocontext-0.3.3}/README.md +1 -1
- {autocontext-0.3.2 → autocontext-0.3.3}/pyproject.toml +1 -1
- autocontext-0.3.3/src/autocontext/agentos/__init__.py +5 -0
- autocontext-0.3.3/src/autocontext/agentos/types.py +71 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/cli.py +14 -8
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/_base.py +1 -2
- autocontext-0.3.3/src/autocontext/research/consultation.py +132 -0
- autocontext-0.3.3/src/autocontext/research/evaluation.py +117 -0
- autocontext-0.3.3/src/autocontext/research/persistence.py +104 -0
- autocontext-0.3.3/src/autocontext/research/prompt_wiring.py +75 -0
- autocontext-0.3.3/src/autocontext/research/runtime.py +103 -0
- autocontext-0.3.3/src/autocontext/research/types.py +97 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/app.py +1 -2
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/engine.py +41 -16
- autocontext-0.3.3/src/autocontext/storage/bootstrap_schema.py +329 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/sqlite_store.py +14 -0
- autocontext-0.3.3/tests/test_agentos_adapter.py +99 -0
- autocontext-0.3.3/tests/test_harness/__init__.py +0 -0
- autocontext-0.3.3/tests/test_research_adapter.py +147 -0
- autocontext-0.3.3/tests/test_research_consultation.py +184 -0
- autocontext-0.3.3/tests/test_research_eval.py +160 -0
- autocontext-0.3.3/tests/test_research_persistence.py +121 -0
- autocontext-0.3.3/tests/test_research_prompt_wiring.py +100 -0
- autocontext-0.3.3/tests/test_research_runtime.py +121 -0
- autocontext-0.3.3/tests/test_simulate_bug_fixes.py +104 -0
- autocontext-0.3.3/tests/test_sqlite_store_bootstrap.py +78 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/uv.lock +1 -1
- {autocontext-0.3.2 → autocontext-0.3.3}/.gitignore +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/assets/banner.svg +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/assets/banner.txt +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/assets/whats_new.txt +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/demo_data/README.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/docs/agent-integration.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/docs/mlx-training.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/docs/sandbox.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/001_initial.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/002_phase3_phase7.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/003_agent_subagent_metadata.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/004_knowledge_inheritance.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/005_ecosystem_provider_tracking.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/006_human_feedback.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/007_task_queue.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/008_staged_validation.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/009_generation_timing.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/010_consultation_log.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/010_session_notebook.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/011_monitors.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/012_research_hub.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/013_generation_dimension_summary.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/014_scoring_backend_metadata.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/migrations/015_match_replay.sql +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/pyrightconfig.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/smoke_test.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/smoke_test_loop.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/agent_sdk_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/analyst.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/architect.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/coach.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/competitor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/contracts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/curator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/feedback_loops.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/hint_feedback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/llm_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/model_router.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/orchestrator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/parsers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/pipeline_adapter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/provider_bridge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/role_router.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/skeptic.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/subagent_runtime.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/translator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/translator_simplification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/agents/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/aggregate_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/calibration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/clustering.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/correlation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/credit_assignment.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/extractor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/facets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/issue_generator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/issue_store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/regression_fixtures.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/rubric_drift.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/run_trace.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/taxonomy.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/timeline_inspector.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/analytics/trace_reporter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/artifacts/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/artifacts/models.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/banner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/concepts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/presets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/settings.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/config/tuning_bounds.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/stage.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/triggers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/consultation/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/ab_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/evaluation/ab_stats.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/action_filter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/agent_task_evolution.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/ast_safety.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/bias_probes.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/evaluator_guardrail.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/base.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/local.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/monty.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/primeintellect.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/executors/ssh.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_coverage.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_loader.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_synthesizer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/harness_tester.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/improvement_loop.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/judge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/judge_executor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/objective_verification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/output_cleaner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/phased_execution.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/policy_executor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/policy_refinement.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/rubric_calibration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/rubric_coherence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/sample_states.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/strategy_validator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/supervisor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/task_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/trajectory_harness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/execution/verification_dataset.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/applicator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/adapt/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/audit/writer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/controller.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/events.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/llm_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/output_parser.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/subagent.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/core/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/calculator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/tracker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/cost/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/dimensional.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/failure_report.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/protocol.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/scenario_evaluator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/self_play.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/evaluation/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/advisor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/collector.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/profiler.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/meta_optimizer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/optimizer/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/optimizer/pareto.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/dag.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/engine.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/orchestration/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/advancement.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/holdout.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/objective_guardrail.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/retry_context.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/trend_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/pipeline/validity_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/monty_worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/session.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/repl/worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/backends.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/scoring/elo.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/storage/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/storage/versioned_store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/staged.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/harness/validation/stages.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/primeintellect/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/primeintellect/client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/integrations/ssh/config.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/coherence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/dead_end_manager.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/evidence_freshness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/fresh_start.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/harness_quality.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/hint_volume.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/lessons.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/mutation_log.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/normalized_metrics.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/package.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/progress.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/protocol.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/rapid_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/report.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/research_hub.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/search.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/solver.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/stagnation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/trajectory.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/tuning.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/knowledge/weakness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/controller.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/cost_control.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/ecosystem_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/events.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/exploration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/generation_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/generation_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/hypothesis_tree.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/presets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/refinement_prompt.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/context_loaders.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/dimensions.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/exploration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/freshness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/persistence_helpers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_helpers/tournament_prep.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_preflight.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_prevalidation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_probe.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_staged_validation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_tree_search.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stage_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/stages.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/startup_verification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/loop/tournament_helpers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/agent_task_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/artifact_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/distill_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/knowledge_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/monitor_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/sandbox.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/server.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/mcp/tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/engine.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/evaluators.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/monitor/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/context_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/injection.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notebook/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/base.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/callback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/composite.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/http.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/slack.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/notifications/stdout.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/adapters.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/agent_adapter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/discovery.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/distill.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/models.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/openclaw/skill.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/preflight.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/context_budget.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/prompts/templates.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/anthropic.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/base.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/callable_wrapper.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/mlx_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/openai_compat.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/retry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/providers/scenario_routing.py +0 -0
- {autocontext-0.3.2/src/autocontext/session → autocontext-0.3.3/src/autocontext/research}/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/context_loader.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/prompts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/repl_worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/session.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/rlm/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/base.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/claude_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/codex_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/direct_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/hermes_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_artifacts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/runtimes/pi_rpc.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/agent_task.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/artifact_editing.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/base.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/capabilities.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/coordination.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/_family_creator_shim.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_revision.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/agent_task_validator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/artifact_editing_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/coordination_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/creator_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/family_classifier.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/family_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/generic_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/investigation_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/loader.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/naming.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/negotiation_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/operator_loop_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/schema_evolution_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/simulation_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/spec_auto_heal.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/tool_fragility_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/validator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_codegen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_designer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/custom/workflow_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/families.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/grid_ctf/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/grid_ctf/scenario.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/investigation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/negotiation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/operator_loop.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/othello.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/schema_evolution.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/simulation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/README.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/example_input.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/example_output.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/content-generation/spec.yaml +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/README.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/example_input.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/example_output.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/prompt-optimization/spec.yaml +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/README.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/example_input.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/example_output.json +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/templates/rag-accuracy/spec.yaml +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/tool_fragility.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/type_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/workflow.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/scenarios/world_state.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/sdk.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/sdk_models.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/changelog.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/cockpit_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/hub_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/knowledge_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/monitor_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/notebook_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/openclaw_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/protocol.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/run_manager.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/server/writeup.py +0 -0
- {autocontext-0.3.2/src/autocontext/util → autocontext-0.3.3/src/autocontext/session}/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/context_pressure.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/coordinator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/memory_consolidation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/progress_digest.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/remote_bridge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/skill_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/supervisor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/session/types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/simulation/export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/artifacts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/buffered_writer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/storage/row_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/prepare.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/program.md +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/program.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/autoresearch/train.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/backends.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/model_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/training/types.py +0 -0
- {autocontext-0.3.2/tests/test_harness → autocontext-0.3.3/src/autocontext/util}/__init__.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/src/autocontext/util/json_io.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/conftest.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ab_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ab_stats.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_action_filter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_action_filter_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_advancement_contract.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_e2e.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_live_e2e.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_sdk_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_sdk_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_multi_gen.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_agent_task_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_aggregate_facets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_analysis_injection.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_anthropic_client_retry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_api_key_fallback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_dag_changes.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_tool_updates.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_architect_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_contracts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_editing.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_artifact_harness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ast_safety.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_auto_sample_input.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_backpressure.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_backpressure_trend.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_banner_sync.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_buffered_artifacts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_buffered_writer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_ab_test.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_agent_task.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_backport.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_error_output.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_json.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cli_preset.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_coach_competitor_hints.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit_consultation_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cockpit_notebook_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_code_strategies.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_code_strategies_e2e.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_codex_cli_runtime.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_config_adaptive.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_constraint_prompts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_consultation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_budget.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_preparation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_context_pressure.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_coordinator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_correlation_issues.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cost_control_and_presets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_credit_assignment.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_cross_run_inheritance.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_curator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_curator_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_custom_scenario_spec.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dag_apply.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dag_mutation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dead_end_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dead_end_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_derive_name.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_designer_calibration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dict_type_consistency.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimension_pinning.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimension_threshold.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_dimensional_scoring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_disagreement.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_discovery_scenario_type.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_distill_jobs.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_convergence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ecosystem_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_elo.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_grid_ctf.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_legal_actions.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_enumerate_othello.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_eval_provider_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_event_subscribers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_exploration_mechanisms.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_export_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_export_skill_md.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_factual_confidence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_failure_recovery_lessons.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_failure_report.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_family_classifier.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_family_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_feedback_loops.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_freshness_and_fixtures.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_gate_taxonomy.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generation_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generation_stages.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_generic_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_adapt_applicator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_adapt_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_audit_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_audit_writer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_controller.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_calculator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_tracker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_cost_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_elo.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_eval_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_eval_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_evaluator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_events.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_llm_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_advisor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_collector.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_optimizer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_profiler.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_meta_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_output_parser.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_pipeline_engine.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_session.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_repl_worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_retry_context.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_role_dag.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_scenario_evaluator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_subagent.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_trend_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_types.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_harness_versioned_store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness/test_output_parser_adoption.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_coverage.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_inheritance.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_loader.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_mode.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_model_demotion.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_quality.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_synthesizer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_tester.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_harness_versioning.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_gateway.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_protocol_alignment.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hermes_runtime.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_feedback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_persistence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hint_volume_control.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_holdout_evaluation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hub_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_human_feedback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_hypothesis_tree.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_improvement_loop.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_improvement_loop_resilience.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_integration_docs.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_integration_improvement.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_intent_validation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_interface_conventions.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_investigation_actions_coerce.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_investigation_workflow.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_judge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_judge_rubrics.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_knowledge_api.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_knowledge_coherence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_lesson_applicability.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_loop_controller.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_match_export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_agent_tasks.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_server.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mcp_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_memory_consolidation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mlx_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_router.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_model_router_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_module_size_limits.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monitor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_e2e.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_executor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_live.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_live.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_settings.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_repl_worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_monty_settings.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_multi_gen_stall.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_mutation_log.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_negotiation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_negotiation_verification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_new_scenario_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_normalized_metrics.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_notebook_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_notifications.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_objective_guardrail.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_objective_verification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openai_agent_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_adapters.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_agent_adapter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_discovery.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_operations.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_openclaw_skill.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_operator_loop_coordination.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_operator_loop_unsupported.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_orchestrator_feedback.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_output_cleaner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_param_type_conventions.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pareto_optimizer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_per_role_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_phased_execution.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_artifacts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_cli_runtime.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_protocol_alignment.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_provider_surface.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_rpc.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pi_smoke.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pipeline_adapter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pipeline_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_executor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_refinement.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_policy_refinement_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_preflight.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_prepare_mlx.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_preset_named.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_presets.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_prevalidation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_primeintellect_client.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_probe_pipeline.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_program_template.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_progress_digests.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_progress_json.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_protocol.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_protocol_parity.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_provider_retry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_providers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_pydantic_migration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rapid_exploration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_refinement_prompt.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_remote_bridge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_remove_hardcoded_models.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_removed_backpressure_modules.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_removed_harness_modules.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_replay_narrative_flow.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_research_hub.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_research_protocol.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_restore_versioning.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_retry_learning.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_retry_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_revise_output_fix.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_competitor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_context_loader.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_repl_worker.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rlm_session.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_role_router.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_calibration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_coherence.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_rubric_drift_calibration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_run_trace.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_runner_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_runtimes.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sample_states.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sandbox.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_capabilities.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_creator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_dispatch.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_families.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_routing.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_templates.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenario_type_completeness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scenarios.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_schema_evolution_tool_fragility.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_score_trajectory.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_scoring_backends.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sdk.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_seed_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_self_play.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_serde_conventions.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_server_health.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_service_layer.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_notebook.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_report_wiring.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_reports.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_runtime.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_session_supervisor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_settings_cleanup.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_shared_tools.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_simulate_command.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_simulation_contract.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skeptic.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skill_consolidation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_skill_registry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_smoke_judge.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_sqlite_store.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_ssh_executor.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_preflight.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_probe.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_staged_validation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stage_tree_search.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_validation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_staged_validation_storage.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stages_enriched_retry.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_stagnation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_startup_verification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_package.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_package_cli.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_strategy_translator.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_metrics.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_queue_priority.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_task_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_time_budget.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_timeline_inspector.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tool_context_full.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tool_validation.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_tournament_helpers.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trace_reporter.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_train_mlx.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_train_summary.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_backend.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_export.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_init.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_pi_provider.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_training_runner.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trajectory_harness.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_translator_simplification.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_trend_gate_integration.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_two_tier_tournament.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_typed_contracts.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_typed_dict_rows.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_validity_gate.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_verification_dataset.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_weakness_reports.py +0 -0
- {autocontext-0.3.2 → autocontext-0.3.3}/tests/test_world_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: autocontext
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: autocontext control plane for iterative strategy evolution.
|
|
5
5
|
Project-URL: Homepage, https://github.com/greyhaven-ai/autocontext
|
|
6
6
|
Project-URL: Repository, https://github.com/greyhaven-ai/autocontext
|
|
@@ -60,7 +60,7 @@ The intended use is to hand the harness a real task in plain language, let it so
|
|
|
60
60
|
pip install autocontext
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
The current PyPI release line is `autocontext==0.3.
|
|
63
|
+
The current PyPI release line is `autocontext==0.3.3`.
|
|
64
64
|
The PyPI package name is now `autocontext`. The CLI entrypoint remains `autoctx`.
|
|
65
65
|
|
|
66
66
|
## Working Directory
|
|
@@ -10,7 +10,7 @@ The intended use is to hand the harness a real task in plain language, let it so
|
|
|
10
10
|
pip install autocontext
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
The current PyPI release line is `autocontext==0.3.
|
|
13
|
+
The current PyPI release line is `autocontext==0.3.3`.
|
|
14
14
|
The PyPI package name is now `autocontext`. The CLI entrypoint remains `autoctx`.
|
|
15
15
|
|
|
16
16
|
## Working Directory
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""agentOS integration types (AC-517).
|
|
2
|
+
|
|
3
|
+
Port types that define the boundary between autocontext's session
|
|
4
|
+
domain and agentOS's VM runtime.
|
|
5
|
+
|
|
6
|
+
The runtime port is a Protocol — no direct dependency on
|
|
7
|
+
@rivet-dev/agent-os-core. Python side defines the contract;
|
|
8
|
+
TS side provides the primary implementation.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import Any, Protocol, runtime_checkable
|
|
14
|
+
|
|
15
|
+
from pydantic import BaseModel, Field
|
|
16
|
+
|
|
17
|
+
DEFAULT_SANDBOX_KEYWORDS = [
|
|
18
|
+
"browser",
|
|
19
|
+
"playwright",
|
|
20
|
+
"puppeteer",
|
|
21
|
+
"selenium",
|
|
22
|
+
"dev server",
|
|
23
|
+
"port",
|
|
24
|
+
"localhost",
|
|
25
|
+
"gui",
|
|
26
|
+
"native build",
|
|
27
|
+
"docker",
|
|
28
|
+
"container",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@runtime_checkable
|
|
33
|
+
class AgentOsRuntimePort(Protocol):
|
|
34
|
+
"""Port interface for agentOS runtime.
|
|
35
|
+
|
|
36
|
+
This is the ONLY surface autocontext depends on.
|
|
37
|
+
Implementors can use real AgentOs or a stub.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
async def create_session(self, agent_type: str) -> dict[str, Any]: ...
|
|
41
|
+
async def prompt(self, session_id: str, prompt: str) -> None: ...
|
|
42
|
+
async def close_session(self, session_id: str) -> None: ...
|
|
43
|
+
async def dispose(self) -> None: ...
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class AgentOsPermissions(BaseModel):
|
|
47
|
+
"""Security permissions for the agentOS VM."""
|
|
48
|
+
|
|
49
|
+
network: bool = False
|
|
50
|
+
filesystem: str = "readonly" # "none" | "readonly" | "readwrite"
|
|
51
|
+
processes: bool = False
|
|
52
|
+
max_memory_mb: int = 512
|
|
53
|
+
|
|
54
|
+
model_config = {"frozen": True}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class AgentOsConfig(BaseModel):
|
|
58
|
+
"""Configuration for optional agentOS integration."""
|
|
59
|
+
|
|
60
|
+
enabled: bool = False
|
|
61
|
+
agent_type: str = "pi"
|
|
62
|
+
workspace_path: str = ""
|
|
63
|
+
permissions: AgentOsPermissions = Field(default_factory=AgentOsPermissions)
|
|
64
|
+
sandbox_escalation_keywords: list[str] = Field(default_factory=lambda: list(DEFAULT_SANDBOX_KEYWORDS))
|
|
65
|
+
|
|
66
|
+
model_config = {"frozen": True}
|
|
67
|
+
|
|
68
|
+
def needs_sandbox(self, task_description: str) -> bool:
|
|
69
|
+
"""Heuristic: does this task need a full sandbox instead of agentOS?"""
|
|
70
|
+
lower = task_description.lower()
|
|
71
|
+
return any(kw in lower for kw in self.sandbox_escalation_keywords)
|
|
@@ -160,6 +160,12 @@ def _write_json_stderr(message: str) -> None:
|
|
|
160
160
|
sys.stderr.write(json.dumps({"error": message}) + "\n")
|
|
161
161
|
|
|
162
162
|
|
|
163
|
+
def _check_json_exit(result: dict[str, Any]) -> None:
|
|
164
|
+
"""Raise SystemExit(1) if JSON result has status=failed (AC-520)."""
|
|
165
|
+
if isinstance(result, dict) and result.get("status") == "failed":
|
|
166
|
+
raise SystemExit(1)
|
|
167
|
+
|
|
168
|
+
|
|
163
169
|
def _is_agent_task(scenario_name: str) -> bool:
|
|
164
170
|
"""Check if a scenario should use the direct agent-task execution path."""
|
|
165
171
|
if scenario_name not in SCENARIO_REGISTRY:
|
|
@@ -996,8 +1002,7 @@ def export_cmd(
|
|
|
996
1002
|
|
|
997
1003
|
sqlite = SQLiteStore(resolved_db)
|
|
998
1004
|
migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
|
|
999
|
-
|
|
1000
|
-
sqlite.migrate(migrations_dir)
|
|
1005
|
+
sqlite.migrate(migrations_dir)
|
|
1001
1006
|
artifacts = ArtifactStore(
|
|
1002
1007
|
runs_root=resolved_runs,
|
|
1003
1008
|
knowledge_root=resolved_knowledge,
|
|
@@ -1103,6 +1108,7 @@ def simulate(
|
|
|
1103
1108
|
result = export_simulation(id=export_id, knowledge_root=settings.knowledge_root, format=export_format)
|
|
1104
1109
|
if json_output:
|
|
1105
1110
|
_write_json_stdout(result)
|
|
1111
|
+
_check_json_exit(result)
|
|
1106
1112
|
elif result["status"] == "failed":
|
|
1107
1113
|
console.print(f"[red]Export failed:[/red] {result.get('error')}")
|
|
1108
1114
|
raise typer.Exit(code=1)
|
|
@@ -1115,6 +1121,7 @@ def simulate(
|
|
|
1115
1121
|
result = engine.compare(left=compare_left, right=compare_right)
|
|
1116
1122
|
if json_output:
|
|
1117
1123
|
_write_json_stdout(result)
|
|
1124
|
+
_check_json_exit(result)
|
|
1118
1125
|
elif result["status"] == "failed":
|
|
1119
1126
|
console.print(f"[red]Compare failed:[/red] {result.get('error')}")
|
|
1120
1127
|
raise typer.Exit(code=1)
|
|
@@ -1131,6 +1138,7 @@ def simulate(
|
|
|
1131
1138
|
)
|
|
1132
1139
|
if json_output:
|
|
1133
1140
|
_write_json_stdout(result)
|
|
1141
|
+
_check_json_exit(result)
|
|
1134
1142
|
elif result["status"] == "failed":
|
|
1135
1143
|
console.print(f"[red]Replay failed:[/red] {result.get('error')}")
|
|
1136
1144
|
raise typer.Exit(code=1)
|
|
@@ -1159,6 +1167,7 @@ def simulate(
|
|
|
1159
1167
|
|
|
1160
1168
|
if json_output:
|
|
1161
1169
|
_write_json_stdout(result)
|
|
1170
|
+
_check_json_exit(result)
|
|
1162
1171
|
elif result["status"] == "failed":
|
|
1163
1172
|
console.print(f"[red]Simulation failed:[/red] {result.get('error')}")
|
|
1164
1173
|
raise typer.Exit(code=1)
|
|
@@ -1298,8 +1307,7 @@ def import_package_cmd(
|
|
|
1298
1307
|
resolved_db = Path(db_path) if db_path is not None else settings.db_path
|
|
1299
1308
|
sqlite = SQLiteStore(resolved_db)
|
|
1300
1309
|
migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
|
|
1301
|
-
|
|
1302
|
-
sqlite.migrate(migrations_dir)
|
|
1310
|
+
sqlite.migrate(migrations_dir)
|
|
1303
1311
|
artifacts = ArtifactStore(
|
|
1304
1312
|
runs_root=settings.runs_root,
|
|
1305
1313
|
knowledge_root=Path(knowledge_root) if knowledge_root else settings.knowledge_root,
|
|
@@ -1344,8 +1352,7 @@ def wait(
|
|
|
1344
1352
|
settings = load_settings()
|
|
1345
1353
|
store = SQLiteStore(settings.db_path)
|
|
1346
1354
|
migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
|
|
1347
|
-
|
|
1348
|
-
store.migrate(migrations_dir)
|
|
1355
|
+
store.migrate(migrations_dir)
|
|
1349
1356
|
|
|
1350
1357
|
# Check condition exists
|
|
1351
1358
|
condition = store.get_monitor_condition(condition_id)
|
|
@@ -1496,8 +1503,7 @@ def queue(
|
|
|
1496
1503
|
settings = load_settings()
|
|
1497
1504
|
store = _sqlite_from_settings(settings)
|
|
1498
1505
|
migrations_dir = Path(__file__).resolve().parents[2] / "migrations"
|
|
1499
|
-
|
|
1500
|
-
store.migrate(migrations_dir)
|
|
1506
|
+
store.migrate(migrations_dir)
|
|
1501
1507
|
|
|
1502
1508
|
task_id = enqueue_task(store=store, spec_name=spec, priority=priority)
|
|
1503
1509
|
|
|
@@ -28,8 +28,7 @@ class MtsToolContext:
|
|
|
28
28
|
self.settings = settings
|
|
29
29
|
self.sqlite = SQLiteStore(settings.db_path)
|
|
30
30
|
migrations_dir = Path(__file__).resolve().parents[3] / "migrations"
|
|
31
|
-
|
|
32
|
-
self.sqlite.migrate(migrations_dir)
|
|
31
|
+
self.sqlite.migrate(migrations_dir)
|
|
33
32
|
self.artifacts = ArtifactStore(
|
|
34
33
|
settings.runs_root,
|
|
35
34
|
settings.knowledge_root,
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"""Research consultation — goal decomposition and brief assembly (AC-499).
|
|
2
|
+
|
|
3
|
+
Domain service: ResearchConsultant decomposes a goal into targeted queries,
|
|
4
|
+
executes them through a ResearchEnabledSession, filters weak signals, deduplicates
|
|
5
|
+
citations, and packages everything into a ResearchBrief value object.
|
|
6
|
+
|
|
7
|
+
ResearchBrief is a frozen value object suitable for downstream prompt injection.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import logging
|
|
13
|
+
from collections.abc import Sequence
|
|
14
|
+
|
|
15
|
+
from pydantic import BaseModel, Field
|
|
16
|
+
|
|
17
|
+
from autocontext.research.runtime import ResearchEnabledSession
|
|
18
|
+
from autocontext.research.types import Citation, ResearchQuery, ResearchResult, Urgency
|
|
19
|
+
|
|
20
|
+
logger = logging.getLogger(__name__)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ResearchBrief(BaseModel):
|
|
24
|
+
"""Immutable snapshot of research findings for a goal.
|
|
25
|
+
|
|
26
|
+
Produced by ResearchConsultant, consumed by prompt wiring (AC-501).
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
goal: str
|
|
30
|
+
findings: list[ResearchResult] = Field(default_factory=list)
|
|
31
|
+
unique_citations: list[Citation] = Field(default_factory=list)
|
|
32
|
+
|
|
33
|
+
model_config = {"frozen": True}
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def avg_confidence(self) -> float:
|
|
37
|
+
if not self.findings:
|
|
38
|
+
return 0.0
|
|
39
|
+
return sum(f.confidence for f in self.findings) / len(self.findings)
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_results(
|
|
43
|
+
cls,
|
|
44
|
+
goal: str,
|
|
45
|
+
results: Sequence[ResearchResult],
|
|
46
|
+
min_confidence: float = 0.0,
|
|
47
|
+
) -> ResearchBrief:
|
|
48
|
+
filtered = [r for r in results if r.confidence >= min_confidence]
|
|
49
|
+
citations = _dedupe_citations(filtered)
|
|
50
|
+
return cls(goal=goal, findings=list(filtered), unique_citations=citations)
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def empty(cls, goal: str) -> ResearchBrief:
|
|
54
|
+
return cls(goal=goal)
|
|
55
|
+
|
|
56
|
+
def to_markdown(self) -> str:
|
|
57
|
+
if not self.findings:
|
|
58
|
+
return f"## Research Brief: {self.goal}\n\nNo findings available.\n"
|
|
59
|
+
|
|
60
|
+
parts = [f"## Research Brief: {self.goal}\n"]
|
|
61
|
+
for f in self.findings:
|
|
62
|
+
parts.append(f"### {f.query_topic} (confidence: {f.confidence:.0%})\n")
|
|
63
|
+
parts.append(f"{f.summary}\n")
|
|
64
|
+
for c in f.citations:
|
|
65
|
+
label = f"[{c.source}]({c.url})" if c.url else c.source
|
|
66
|
+
parts.append(f"- {label}")
|
|
67
|
+
if c.snippet:
|
|
68
|
+
parts.append(f" > {c.snippet}")
|
|
69
|
+
parts.append("")
|
|
70
|
+
return "\n".join(parts)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _dedupe_citations(results: Sequence[ResearchResult]) -> list[Citation]:
|
|
74
|
+
"""Collect unique citations across results, keyed by (source, url)."""
|
|
75
|
+
seen: set[tuple[str, str]] = set()
|
|
76
|
+
unique: list[Citation] = []
|
|
77
|
+
for r in results:
|
|
78
|
+
for c in r.citations:
|
|
79
|
+
key = (c.source, c.url)
|
|
80
|
+
if key not in seen:
|
|
81
|
+
seen.add(key)
|
|
82
|
+
unique.append(c)
|
|
83
|
+
return unique
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class ResearchConsultant:
|
|
87
|
+
"""Domain service: decompose goal → queries → brief.
|
|
88
|
+
|
|
89
|
+
Stateless — create one and call .consult() per research need.
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
def __init__(
|
|
93
|
+
self,
|
|
94
|
+
urgency: Urgency = Urgency.NORMAL,
|
|
95
|
+
min_confidence: float = 0.0,
|
|
96
|
+
) -> None:
|
|
97
|
+
self._urgency = urgency
|
|
98
|
+
self._min_confidence = min_confidence
|
|
99
|
+
|
|
100
|
+
def consult(
|
|
101
|
+
self,
|
|
102
|
+
session: ResearchEnabledSession,
|
|
103
|
+
topics: Sequence[str],
|
|
104
|
+
context: str = "",
|
|
105
|
+
) -> ResearchBrief:
|
|
106
|
+
"""Execute research queries and return a packaged brief.
|
|
107
|
+
|
|
108
|
+
Respects the session's budget — stops when budget is exhausted.
|
|
109
|
+
Filters results below min_confidence.
|
|
110
|
+
"""
|
|
111
|
+
if not session.has_research:
|
|
112
|
+
logger.debug("No research adapter attached — returning empty brief")
|
|
113
|
+
return ResearchBrief.empty(session.goal)
|
|
114
|
+
|
|
115
|
+
results: list[ResearchResult] = []
|
|
116
|
+
for topic in topics:
|
|
117
|
+
query = ResearchQuery(
|
|
118
|
+
topic=topic,
|
|
119
|
+
context=context,
|
|
120
|
+
urgency=self._urgency,
|
|
121
|
+
)
|
|
122
|
+
result = session.research(query)
|
|
123
|
+
if result is None:
|
|
124
|
+
logger.debug("Budget exhausted after %d queries", len(results))
|
|
125
|
+
break
|
|
126
|
+
results.append(result)
|
|
127
|
+
|
|
128
|
+
return ResearchBrief.from_results(
|
|
129
|
+
goal=session.goal,
|
|
130
|
+
results=results,
|
|
131
|
+
min_confidence=self._min_confidence,
|
|
132
|
+
)
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"""Research A/B evaluation — compare augmented vs baseline (AC-502).
|
|
2
|
+
|
|
3
|
+
Domain service: ResearchEvaluator pairs baseline and research-augmented
|
|
4
|
+
outputs, scores them with a pluggable score function, and measures
|
|
5
|
+
improvement and citation coverage.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
import re
|
|
12
|
+
from collections.abc import Callable, Sequence
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
from pydantic import BaseModel
|
|
16
|
+
|
|
17
|
+
from autocontext.research.consultation import ResearchBrief
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
ScoreFn = Callable[[str], float]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class EvalResult(BaseModel):
|
|
25
|
+
"""Result of comparing one baseline/augmented pair."""
|
|
26
|
+
|
|
27
|
+
baseline_score: float = 0.0
|
|
28
|
+
augmented_score: float = 0.0
|
|
29
|
+
improvement: float = 0.0
|
|
30
|
+
citation_coverage: float = 0.0
|
|
31
|
+
sample_size: int = 1
|
|
32
|
+
|
|
33
|
+
model_config = {"frozen": True}
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def is_improvement(self) -> bool:
|
|
37
|
+
return self.improvement > 0
|
|
38
|
+
|
|
39
|
+
@property
|
|
40
|
+
def relative_gain(self) -> float:
|
|
41
|
+
if self.baseline_score == 0.0:
|
|
42
|
+
return float("inf") if self.improvement > 0 else 0.0
|
|
43
|
+
return self.improvement / self.baseline_score
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class BatchSummary(BaseModel):
|
|
47
|
+
"""Aggregated summary over multiple eval pairs."""
|
|
48
|
+
|
|
49
|
+
sample_size: int = 0
|
|
50
|
+
avg_baseline: float = 0.0
|
|
51
|
+
avg_augmented: float = 0.0
|
|
52
|
+
avg_improvement: float = 0.0
|
|
53
|
+
win_rate: float = 0.0 # fraction where augmented > baseline
|
|
54
|
+
|
|
55
|
+
model_config = {"frozen": True}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _citation_coverage(brief: ResearchBrief, text: str) -> float:
|
|
59
|
+
"""Fraction of unique citation sources mentioned in text."""
|
|
60
|
+
if not brief.unique_citations:
|
|
61
|
+
return 0.0
|
|
62
|
+
mentioned = sum(1 for c in brief.unique_citations if _source_mentioned(c.source, text))
|
|
63
|
+
return mentioned / len(brief.unique_citations)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _source_mentioned(source: str, text: str) -> bool:
|
|
67
|
+
"""Return True when `source` appears as a distinct mention in `text`."""
|
|
68
|
+
pattern = rf"(?<!\w){re.escape(source)}(?!\w)"
|
|
69
|
+
return re.search(pattern, text, flags=re.IGNORECASE) is not None
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class ResearchEvaluator:
|
|
73
|
+
"""Compares research-augmented vs baseline outputs."""
|
|
74
|
+
|
|
75
|
+
def evaluate_pair(
|
|
76
|
+
self,
|
|
77
|
+
brief: ResearchBrief,
|
|
78
|
+
baseline_output: str,
|
|
79
|
+
augmented_output: str,
|
|
80
|
+
score_fn: ScoreFn,
|
|
81
|
+
) -> EvalResult:
|
|
82
|
+
baseline_score = score_fn(baseline_output)
|
|
83
|
+
augmented_score = score_fn(augmented_output)
|
|
84
|
+
return EvalResult(
|
|
85
|
+
baseline_score=baseline_score,
|
|
86
|
+
augmented_score=augmented_score,
|
|
87
|
+
improvement=augmented_score - baseline_score,
|
|
88
|
+
citation_coverage=_citation_coverage(brief, augmented_output),
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
def evaluate_batch(
|
|
92
|
+
self,
|
|
93
|
+
pairs: Sequence[dict[str, Any]],
|
|
94
|
+
score_fn: ScoreFn,
|
|
95
|
+
) -> BatchSummary:
|
|
96
|
+
if not pairs:
|
|
97
|
+
return BatchSummary()
|
|
98
|
+
|
|
99
|
+
results: list[EvalResult] = []
|
|
100
|
+
for p in pairs:
|
|
101
|
+
r = self.evaluate_pair(
|
|
102
|
+
brief=p["brief"],
|
|
103
|
+
baseline_output=p["baseline"],
|
|
104
|
+
augmented_output=p["augmented"],
|
|
105
|
+
score_fn=score_fn,
|
|
106
|
+
)
|
|
107
|
+
results.append(r)
|
|
108
|
+
|
|
109
|
+
n = len(results)
|
|
110
|
+
wins = sum(1 for r in results if r.is_improvement)
|
|
111
|
+
return BatchSummary(
|
|
112
|
+
sample_size=n,
|
|
113
|
+
avg_baseline=sum(r.baseline_score for r in results) / n,
|
|
114
|
+
avg_augmented=sum(r.augmented_score for r in results) / n,
|
|
115
|
+
avg_improvement=sum(r.improvement for r in results) / n,
|
|
116
|
+
win_rate=wins / n,
|
|
117
|
+
)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""Research evidence persistence — JSON-file store (AC-500).
|
|
2
|
+
|
|
3
|
+
Persists ResearchBrief snapshots for audit trail, cross-session learning,
|
|
4
|
+
and prompt context windows. Uses one JSON file per brief, indexed by a
|
|
5
|
+
lightweight manifest.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import logging
|
|
12
|
+
import uuid
|
|
13
|
+
from datetime import UTC, datetime
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel
|
|
18
|
+
|
|
19
|
+
from autocontext.research.consultation import ResearchBrief
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
BRIEFS_DIR = "research_briefs"
|
|
24
|
+
MANIFEST_FILE = "manifest.json"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class BriefRef(BaseModel):
|
|
28
|
+
"""Pointer to a persisted brief."""
|
|
29
|
+
|
|
30
|
+
brief_id: str
|
|
31
|
+
session_id: str
|
|
32
|
+
goal: str
|
|
33
|
+
created_at: str
|
|
34
|
+
finding_count: int = 0
|
|
35
|
+
|
|
36
|
+
model_config = {"frozen": True}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ResearchStore:
|
|
40
|
+
"""File-backed research brief persistence.
|
|
41
|
+
|
|
42
|
+
Layout:
|
|
43
|
+
root/
|
|
44
|
+
research_briefs/
|
|
45
|
+
manifest.json — [{brief_id, session_id, goal, ...}]
|
|
46
|
+
<brief_id>.json — serialized ResearchBrief
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def __init__(self, root: Path) -> None:
|
|
50
|
+
self._dir = root / BRIEFS_DIR
|
|
51
|
+
self._dir.mkdir(parents=True, exist_ok=True)
|
|
52
|
+
self._manifest_path = self._dir / MANIFEST_FILE
|
|
53
|
+
|
|
54
|
+
def save_brief(self, session_id: str, brief: ResearchBrief) -> BriefRef:
|
|
55
|
+
brief_id = uuid.uuid4().hex[:12]
|
|
56
|
+
ref = BriefRef(
|
|
57
|
+
brief_id=brief_id,
|
|
58
|
+
session_id=session_id,
|
|
59
|
+
goal=brief.goal,
|
|
60
|
+
created_at=datetime.now(UTC).isoformat(),
|
|
61
|
+
finding_count=len(brief.findings),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
brief_path = self._dir / f"{brief_id}.json"
|
|
65
|
+
brief_path.write_text(brief.model_dump_json(indent=2), encoding="utf-8")
|
|
66
|
+
|
|
67
|
+
manifest = self._load_manifest()
|
|
68
|
+
manifest.append(ref.model_dump())
|
|
69
|
+
self._write_manifest(manifest)
|
|
70
|
+
|
|
71
|
+
logger.debug("Saved brief %s for session %s (%d findings)", brief_id, session_id, len(brief.findings))
|
|
72
|
+
return ref
|
|
73
|
+
|
|
74
|
+
def load_brief(self, brief_id: str) -> ResearchBrief | None:
|
|
75
|
+
brief_path = self._dir / f"{brief_id}.json"
|
|
76
|
+
if not brief_path.exists():
|
|
77
|
+
return None
|
|
78
|
+
data = json.loads(brief_path.read_text(encoding="utf-8"))
|
|
79
|
+
return ResearchBrief.model_validate(data)
|
|
80
|
+
|
|
81
|
+
def list_briefs(self, session_id: str) -> list[BriefRef]:
|
|
82
|
+
manifest = self._load_manifest()
|
|
83
|
+
return [BriefRef.model_validate(e) for e in manifest if e["session_id"] == session_id]
|
|
84
|
+
|
|
85
|
+
def brief_count(self) -> int:
|
|
86
|
+
return len(self._load_manifest())
|
|
87
|
+
|
|
88
|
+
def delete_brief(self, brief_id: str) -> bool:
|
|
89
|
+
brief_path = self._dir / f"{brief_id}.json"
|
|
90
|
+
if not brief_path.exists():
|
|
91
|
+
return False
|
|
92
|
+
brief_path.unlink()
|
|
93
|
+
manifest = [e for e in self._load_manifest() if e["brief_id"] != brief_id]
|
|
94
|
+
self._write_manifest(manifest)
|
|
95
|
+
return True
|
|
96
|
+
|
|
97
|
+
def _load_manifest(self) -> list[dict[str, Any]]:
|
|
98
|
+
if not self._manifest_path.exists():
|
|
99
|
+
return []
|
|
100
|
+
data: list[dict[str, Any]] = json.loads(self._manifest_path.read_text(encoding="utf-8"))
|
|
101
|
+
return data
|
|
102
|
+
|
|
103
|
+
def _write_manifest(self, manifest: list[dict[str, Any]]) -> None:
|
|
104
|
+
self._manifest_path.write_text(json.dumps(manifest, indent=2), encoding="utf-8")
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Research prompt wiring — format briefs for LLM injection (AC-501).
|
|
2
|
+
|
|
3
|
+
ResearchPromptInjector formats a ResearchBrief into a prompt section,
|
|
4
|
+
handling truncation to a char budget, confidence-based ordering, and
|
|
5
|
+
citation formatting. Supports placeholder injection or append-to-base.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import logging
|
|
11
|
+
|
|
12
|
+
from autocontext.research.consultation import ResearchBrief
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
RESEARCH_PLACEHOLDER = "{research}"
|
|
17
|
+
DEFAULT_MAX_CHARS = 4000
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ResearchPromptInjector:
|
|
21
|
+
"""Formats research briefs and injects them into prompt templates."""
|
|
22
|
+
|
|
23
|
+
def __init__(self, max_chars: int = DEFAULT_MAX_CHARS) -> None:
|
|
24
|
+
self._max_chars = max_chars
|
|
25
|
+
|
|
26
|
+
def format_brief(self, brief: ResearchBrief) -> str:
|
|
27
|
+
"""Render a brief as a markdown section, truncated to budget.
|
|
28
|
+
|
|
29
|
+
Findings are ordered by confidence (highest first).
|
|
30
|
+
Returns empty string if brief has no findings.
|
|
31
|
+
"""
|
|
32
|
+
if not brief.findings:
|
|
33
|
+
return ""
|
|
34
|
+
|
|
35
|
+
sorted_findings = sorted(brief.findings, key=lambda f: f.confidence, reverse=True)
|
|
36
|
+
|
|
37
|
+
parts: list[str] = [f"## External Research: {brief.goal}\n"]
|
|
38
|
+
budget = self._max_chars - len(parts[0])
|
|
39
|
+
|
|
40
|
+
for f in sorted_findings:
|
|
41
|
+
block_lines = [f"**{f.query_topic}** (confidence: {f.confidence:.0%})"]
|
|
42
|
+
block_lines.append(f.summary)
|
|
43
|
+
for c in f.citations:
|
|
44
|
+
if c.url:
|
|
45
|
+
block_lines.append(f"- [{c.source}]({c.url})")
|
|
46
|
+
else:
|
|
47
|
+
block_lines.append(f"- {c.source}")
|
|
48
|
+
block_lines.append("")
|
|
49
|
+
block = "\n".join(block_lines)
|
|
50
|
+
|
|
51
|
+
if len(block) > budget:
|
|
52
|
+
if len(parts) == 1:
|
|
53
|
+
# At least include one truncated finding
|
|
54
|
+
parts.append(block[:budget])
|
|
55
|
+
break
|
|
56
|
+
parts.append(block)
|
|
57
|
+
budget -= len(block)
|
|
58
|
+
|
|
59
|
+
return "\n".join(parts)
|
|
60
|
+
|
|
61
|
+
def inject(self, base_prompt: str, brief: ResearchBrief) -> str:
|
|
62
|
+
"""Inject formatted brief into a prompt template.
|
|
63
|
+
|
|
64
|
+
If base_prompt contains {research}, replaces it.
|
|
65
|
+
Otherwise appends the section after the base.
|
|
66
|
+
Returns base_prompt unchanged if brief is empty.
|
|
67
|
+
"""
|
|
68
|
+
section = self.format_brief(brief)
|
|
69
|
+
if not section:
|
|
70
|
+
return base_prompt
|
|
71
|
+
|
|
72
|
+
if RESEARCH_PLACEHOLDER in base_prompt:
|
|
73
|
+
return base_prompt.replace(RESEARCH_PLACEHOLDER, section)
|
|
74
|
+
|
|
75
|
+
return f"{base_prompt}\n\n{section}"
|