autocontext 0.3.3__tar.gz → 0.3.4__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.3 → autocontext-0.3.4}/PKG-INFO +2 -2
- {autocontext-0.3.3 → autocontext-0.3.4}/README.md +1 -1
- {autocontext-0.3.3 → autocontext-0.3.4}/pyproject.toml +1 -1
- autocontext-0.3.4/src/autocontext/session/action_labels.py +112 -0
- autocontext-0.3.4/src/autocontext/session/living_docs.py +136 -0
- autocontext-0.3.4/tests/test_action_labels.py +111 -0
- autocontext-0.3.4/tests/test_living_docs.py +87 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/uv.lock +1 -1
- {autocontext-0.3.3 → autocontext-0.3.4}/.gitignore +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/assets/banner.svg +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/assets/banner.txt +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/assets/whats_new.txt +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/demo_data/README.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/docs/agent-integration.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/docs/mlx-training.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/docs/sandbox.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/001_initial.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/002_phase3_phase7.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/003_agent_subagent_metadata.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/004_knowledge_inheritance.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/005_ecosystem_provider_tracking.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/006_human_feedback.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/007_task_queue.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/008_staged_validation.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/009_generation_timing.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/010_consultation_log.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/010_session_notebook.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/011_monitors.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/012_research_hub.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/013_generation_dimension_summary.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/014_scoring_backend_metadata.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/migrations/015_match_replay.sql +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/pyrightconfig.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/smoke_test.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/smoke_test_loop.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agentos/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agentos/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/agent_sdk_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/analyst.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/architect.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/coach.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/competitor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/contracts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/curator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/feedback_loops.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/hint_feedback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/llm_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/model_router.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/orchestrator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/parsers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/pipeline_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/provider_bridge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/role_router.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/skeptic.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/subagent_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/translator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/translator_simplification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/agents/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/aggregate_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/calibration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/clustering.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/correlation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/credit_assignment.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/extractor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/facets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/issue_generator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/issue_store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/regression_fixtures.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/rubric_drift.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/run_trace.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/taxonomy.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/timeline_inspector.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/analytics/trace_reporter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/artifacts/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/artifacts/models.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/banner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/concepts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/config/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/config/presets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/config/settings.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/config/tuning_bounds.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/consultation/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/consultation/runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/consultation/stage.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/consultation/triggers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/consultation/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/evaluation/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/evaluation/ab_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/evaluation/ab_stats.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/action_filter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/agent_task_evolution.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/ast_safety.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/bias_probes.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/evaluator_guardrail.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/local.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/monty.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/primeintellect.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/executors/ssh.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/harness_coverage.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/harness_loader.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/harness_synthesizer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/harness_tester.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/improvement_loop.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/judge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/judge_executor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/objective_verification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/output_cleaner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/phased_execution.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/policy_executor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/policy_refinement.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/rubric_calibration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/rubric_coherence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/sample_states.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/strategy_validator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/supervisor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/task_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/trajectory_harness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/execution/verification_dataset.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/adapt/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/adapt/applicator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/adapt/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/audit/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/audit/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/audit/writer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/controller.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/events.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/llm_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/output_parser.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/subagent.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/core/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/cost/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/cost/calculator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/cost/tracker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/cost/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/dimensional.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/failure_report.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/protocol.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/scenario_evaluator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/self_play.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/evaluation/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta/advisor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta/collector.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta/profiler.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/meta_optimizer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/optimizer/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/optimizer/pareto.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/orchestration/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/orchestration/dag.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/orchestration/engine.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/orchestration/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/advancement.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/holdout.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/objective_guardrail.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/retry_context.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/trend_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/pipeline/validity_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/repl/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/repl/monty_worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/repl/session.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/repl/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/repl/worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/scoring/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/scoring/backends.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/scoring/elo.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/storage/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/storage/versioned_store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/validation/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/validation/staged.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/harness/validation/stages.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/primeintellect/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/primeintellect/client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/ssh/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/ssh/client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/integrations/ssh/config.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/coherence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/dead_end_manager.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/evidence_freshness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/fresh_start.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/harness_quality.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/hint_volume.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/lessons.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/mutation_log.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/normalized_metrics.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/package.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/progress.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/protocol.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/rapid_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/report.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/research_hub.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/search.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/solver.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/stagnation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/trajectory.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/tuning.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/knowledge/weakness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/controller.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/cost_control.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/ecosystem_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/events.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/exploration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/generation_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/generation_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/hypothesis_tree.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/presets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/refinement_prompt.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/context_loaders.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/dimensions.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/exploration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/freshness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/persistence_helpers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_helpers/tournament_prep.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_preflight.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_prevalidation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_probe.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_staged_validation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_tree_search.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stage_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/stages.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/startup_verification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/loop/tournament_helpers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/_base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/agent_task_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/artifact_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/distill_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/knowledge_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/monitor_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/sandbox.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/server.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/mcp/tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/monitor/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/monitor/engine.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/monitor/evaluators.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/monitor/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notebook/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notebook/context_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notebook/injection.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notebook/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/callback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/composite.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/http.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/slack.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/notifications/stdout.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/adapters.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/agent_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/discovery.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/distill.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/models.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/openclaw/skill.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/preflight.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/prompts/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/prompts/context_budget.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/prompts/templates.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/anthropic.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/callable_wrapper.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/mlx_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/openai_compat.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/retry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/providers/scenario_routing.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/consultation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/evaluation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/persistence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/prompt_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/research/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/context_loader.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/prompts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/repl_worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/session.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/rlm/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/claude_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/codex_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/direct_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/hermes_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/pi_artifacts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/pi_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/runtimes/pi_rpc.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/agent_task.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/artifact_editing.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/base.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/capabilities.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/coordination.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/_family_creator_shim.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_revision.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/agent_task_validator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/artifact_editing_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/artifact_editing_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/artifact_editing_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/artifact_editing_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/coordination_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/coordination_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/coordination_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/coordination_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/creator_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/family_classifier.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/family_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/generic_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/investigation_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/investigation_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/investigation_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/investigation_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/loader.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/naming.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/negotiation_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/negotiation_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/negotiation_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/negotiation_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/operator_loop_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/operator_loop_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/operator_loop_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/operator_loop_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/schema_evolution_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/schema_evolution_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/schema_evolution_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/schema_evolution_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/simulation_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/simulation_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/simulation_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/simulation_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/spec_auto_heal.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/tool_fragility_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/tool_fragility_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/tool_fragility_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/tool_fragility_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/validator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/workflow_codegen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/workflow_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/workflow_designer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/custom/workflow_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/families.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/grid_ctf/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/grid_ctf/scenario.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/investigation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/negotiation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/operator_loop.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/othello.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/schema_evolution.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/simulation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/content-generation/README.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/content-generation/example_input.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/content-generation/example_output.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/content-generation/spec.yaml +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/prompt-optimization/README.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/prompt-optimization/example_input.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/prompt-optimization/example_output.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/prompt-optimization/spec.yaml +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/rag-accuracy/README.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/rag-accuracy/example_input.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/rag-accuracy/example_output.json +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/templates/rag-accuracy/spec.yaml +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/tool_fragility.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/type_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/workflow.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/scenarios/world_state.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/sdk.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/sdk_models.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/app.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/changelog.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/cockpit_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/hub_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/knowledge_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/monitor_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/notebook_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/openclaw_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/protocol.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/run_manager.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/server/writeup.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/context_pressure.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/coordinator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/memory_consolidation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/progress_digest.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/remote_bridge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/skill_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/supervisor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/session/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/simulation/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/simulation/engine.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/simulation/export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/artifacts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/bootstrap_schema.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/buffered_writer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/row_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/storage/sqlite_store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/autoresearch/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/autoresearch/prepare.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/autoresearch/program.md +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/autoresearch/program.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/autoresearch/train.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/backends.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/model_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/training/types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/util/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/src/autocontext/util/json_io.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/conftest.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ab_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ab_stats.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_action_filter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_action_filter_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_advancement_contract.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_e2e.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_live_e2e.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_sdk_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_sdk_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_task.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_task_export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_task_multi_gen.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agent_task_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_agentos_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_aggregate_facets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_analysis_injection.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_anthropic_client_retry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_api_key_fallback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_architect_dag_changes.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_architect_tool_updates.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_architect_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_artifact_contracts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_artifact_editing.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_artifact_harness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ast_safety.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_auto_sample_input.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_backpressure.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_backpressure_trend.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_banner_sync.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_buffered_artifacts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_buffered_writer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_ab_test.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_agent_task.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_backport.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_error_output.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_json.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cli_preset.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_coach_competitor_hints.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cockpit.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cockpit_consultation_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cockpit_notebook_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_code_strategies.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_code_strategies_e2e.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_codex_cli_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_config_adaptive.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_constraint_prompts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_consultation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_context_budget.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_context_preparation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_context_pressure.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_coordinator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_correlation_issues.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cost_control_and_presets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_credit_assignment.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_cross_run_inheritance.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_curator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_curator_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_custom_scenario_spec.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dag_apply.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dag_mutation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dead_end_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dead_end_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_derive_name.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_designer_calibration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dict_type_consistency.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dimension_pinning.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dimension_threshold.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_dimensional_scoring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_disagreement.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_discovery_scenario_type.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_distill_jobs.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ecosystem_convergence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ecosystem_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ecosystem_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_elo.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_enumerate_grid_ctf.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_enumerate_legal_actions.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_enumerate_othello.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_eval_provider_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_event_subscribers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_exploration_mechanisms.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_export_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_export_skill_md.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_factual_confidence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_failure_recovery_lessons.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_failure_report.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_family_classifier.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_family_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_feedback_loops.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_freshness_and_fixtures.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_gate_taxonomy.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_generation_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_generation_stages.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_generic_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/__init__.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_adapt_applicator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_adapt_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_audit_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_audit_writer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_controller.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_cost_calculator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_cost_tracker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_cost_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_elo.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_eval_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_eval_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_evaluator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_events.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_llm_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_meta_advisor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_meta_collector.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_meta_optimizer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_meta_profiler.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_meta_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_output_parser.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_pipeline_engine.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_repl_session.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_repl_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_repl_worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_retry_context.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_role_dag.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_scenario_evaluator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_subagent.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_trend_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_types.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_harness_versioned_store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness/test_output_parser_adoption.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_coverage.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_inheritance.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_loader.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_mode.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_model_demotion.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_quality.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_synthesizer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_tester.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_harness_versioning.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hermes_gateway.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hermes_protocol_alignment.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hermes_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hint_feedback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hint_persistence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hint_volume_control.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_holdout_evaluation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hub_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_human_feedback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_hypothesis_tree.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_improvement_loop.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_improvement_loop_resilience.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_integration_docs.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_integration_improvement.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_intent_validation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_interface_conventions.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_investigation_actions_coerce.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_investigation_workflow.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_judge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_judge_rubrics.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_knowledge_api.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_knowledge_coherence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_lesson_applicability.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_loop_controller.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_match_export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_mcp_agent_tasks.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_mcp_server.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_mcp_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_memory_consolidation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_mlx_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_model_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_model_router.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_model_router_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_module_size_limits.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monitor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_e2e.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_executor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_live.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_repl_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_repl_live.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_repl_settings.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_repl_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_repl_worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_monty_settings.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_multi_gen_stall.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_mutation_log.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_negotiation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_negotiation_verification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_new_scenario_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_normalized_metrics.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_notebook_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_notifications.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_objective_guardrail.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_objective_verification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openai_agent_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openclaw_adapters.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openclaw_agent_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openclaw_discovery.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openclaw_operations.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_openclaw_skill.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_operator_loop_coordination.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_operator_loop_unsupported.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_orchestrator_feedback.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_output_cleaner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_param_type_conventions.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pareto_optimizer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_per_role_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_phased_execution.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_artifacts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_cli_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_protocol_alignment.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_provider_surface.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_rpc.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pi_smoke.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pipeline_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pipeline_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_policy_executor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_policy_refinement.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_policy_refinement_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_preflight.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_prepare_mlx.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_preset_named.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_presets.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_prevalidation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_primeintellect_client.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_probe_pipeline.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_program_template.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_progress_digests.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_progress_json.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_protocol.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_protocol_parity.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_provider_retry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_providers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_pydantic_migration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rapid_exploration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_refinement_prompt.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_remote_bridge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_remove_hardcoded_models.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_removed_backpressure_modules.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_removed_harness_modules.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_replay_narrative_flow.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_adapter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_consultation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_eval.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_hub.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_persistence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_prompt_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_protocol.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_research_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_restore_versioning.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_retry_learning.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_retry_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_revise_output_fix.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rlm_competitor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rlm_context_loader.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rlm_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rlm_repl_worker.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rlm_session.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_role_router.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rubric_calibration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rubric_coherence.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_rubric_drift_calibration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_run_trace.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_runner_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_runtimes.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_sample_states.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_sandbox.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_capabilities.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_creator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_dispatch.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_families.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_routing.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_templates.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenario_type_completeness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scenarios.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_schema_evolution_tool_fragility.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_score_trajectory.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_scoring_backends.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_sdk.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_seed_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_self_play.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_serde_conventions.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_server_health.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_service_layer.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_session_notebook.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_session_report_wiring.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_session_reports.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_session_runtime.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_session_supervisor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_settings_cleanup.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_shared_tools.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_simulate_bug_fixes.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_simulate_command.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_simulation_contract.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_skeptic.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_skill_consolidation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_skill_registry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_smoke_judge.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_sqlite_store.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_sqlite_store_bootstrap.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_ssh_executor.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stage_preflight.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stage_probe.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stage_staged_validation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stage_tree_search.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_staged_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_staged_validation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_staged_validation_storage.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stages_enriched_retry.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_stagnation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_startup_verification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_strategy_package.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_strategy_package_cli.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_strategy_translator.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_task_metrics.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_task_queue_priority.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_task_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_time_budget.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_timeline_inspector.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_tool_context_full.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_tool_validation.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_tournament_helpers.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_trace_reporter.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_train_mlx.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_train_summary.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_training_backend.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_training_export.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_training_init.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_training_pi_provider.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_training_runner.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_trajectory_harness.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_translator_simplification.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_trend_gate_integration.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_two_tier_tournament.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_typed_contracts.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_typed_dict_rows.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_validity_gate.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_verification_dataset.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/tests/test_weakness_reports.py +0 -0
- {autocontext-0.3.3 → autocontext-0.3.4}/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.4
|
|
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.4`.
|
|
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.4`.
|
|
14
14
|
The PyPI package name is now `autocontext`. The CLI entrypoint remains `autoctx`.
|
|
15
15
|
|
|
16
16
|
## Working Directory
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"""Compact action labels for timelines and event feeds (AC-513).
|
|
2
|
+
|
|
3
|
+
Domain concept: ActionLabel is a value object — a short, scannable
|
|
4
|
+
description of what just happened. Derived from events, not stored
|
|
5
|
+
as primary data.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel
|
|
13
|
+
|
|
14
|
+
from autocontext.session.coordinator import CoordinatorEventType
|
|
15
|
+
from autocontext.session.types import SessionEventType
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from autocontext.session.coordinator import Coordinator, CoordinatorEvent
|
|
19
|
+
from autocontext.session.types import SessionEvent
|
|
20
|
+
|
|
21
|
+
_MAX_LABEL_LEN = 120
|
|
22
|
+
|
|
23
|
+
_FAILURE_EVENT_TYPES = frozenset({
|
|
24
|
+
CoordinatorEventType.WORKER_FAILED.value,
|
|
25
|
+
SessionEventType.TURN_FAILED.value,
|
|
26
|
+
SessionEventType.TURN_INTERRUPTED.value,
|
|
27
|
+
SessionEventType.SESSION_FAILED.value,
|
|
28
|
+
SessionEventType.SESSION_CANCELED.value,
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
_EVENT_LABEL_MAP: dict[str, str] = {
|
|
32
|
+
"coordinator_created": "Coordinator started",
|
|
33
|
+
"worker_delegated": "Worker delegated",
|
|
34
|
+
"worker_started": "Worker started",
|
|
35
|
+
"worker_completed": "Worker completed",
|
|
36
|
+
"worker_failed": "Worker failed",
|
|
37
|
+
"worker_redirected": "Worker redirected",
|
|
38
|
+
"fan_out": "Fan-out dispatched",
|
|
39
|
+
"fan_in": "Fan-in collected",
|
|
40
|
+
"session_created": "Session started",
|
|
41
|
+
"session_paused": "Session paused",
|
|
42
|
+
"session_resumed": "Session resumed",
|
|
43
|
+
"session_completed": "Session completed",
|
|
44
|
+
"session_failed": "Session failed",
|
|
45
|
+
"session_canceled": "Session canceled",
|
|
46
|
+
"turn_submitted": "Turn submitted",
|
|
47
|
+
"turn_completed": "Turn completed",
|
|
48
|
+
"turn_interrupted": "Turn interrupted",
|
|
49
|
+
"turn_failed": "Turn failed",
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ActionLabel(BaseModel):
|
|
54
|
+
"""Short, scannable description for timeline/event display.
|
|
55
|
+
|
|
56
|
+
Categories: action, tool, failure, noop, info
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
text: str
|
|
60
|
+
category: str = "action"
|
|
61
|
+
|
|
62
|
+
@classmethod
|
|
63
|
+
def create(cls, text: str, category: str = "action") -> ActionLabel:
|
|
64
|
+
truncated = _truncate(text)
|
|
65
|
+
return cls(text=truncated, category=category)
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def noop(cls, reason: str = "No changes") -> ActionLabel:
|
|
69
|
+
return cls(text=_truncate(reason), category="noop")
|
|
70
|
+
|
|
71
|
+
model_config = {"frozen": True}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _truncate(text: str) -> str:
|
|
75
|
+
"""Truncate to _MAX_LABEL_LEN with ellipsis."""
|
|
76
|
+
text = text.strip().replace("\n", " ")
|
|
77
|
+
if len(text) <= _MAX_LABEL_LEN:
|
|
78
|
+
return text
|
|
79
|
+
return text[: _MAX_LABEL_LEN - 1] + "…"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def label_from_event(event: CoordinatorEvent | SessionEvent) -> ActionLabel:
|
|
83
|
+
"""Derive a compact label from a coordinator or session event."""
|
|
84
|
+
event_type = event.event_type.value
|
|
85
|
+
base = _EVENT_LABEL_MAP.get(event_type, event_type.replace("_", " ").title())
|
|
86
|
+
|
|
87
|
+
# Enrich with payload details
|
|
88
|
+
payload = event.payload
|
|
89
|
+
detail_parts: list[str] = []
|
|
90
|
+
for key in ("task", "role", "reason", "error", "worker_id", "turn_id"):
|
|
91
|
+
val = payload.get(key)
|
|
92
|
+
if val:
|
|
93
|
+
detail_parts.append(f"{key}={str(val)[:40]}")
|
|
94
|
+
|
|
95
|
+
if detail_parts:
|
|
96
|
+
# Keep labels glanceable in narrow timeline views rather than dumping every payload field.
|
|
97
|
+
detail = ", ".join(detail_parts[:3])
|
|
98
|
+
text = f"{base}: {detail}"
|
|
99
|
+
else:
|
|
100
|
+
text = base
|
|
101
|
+
|
|
102
|
+
category = "failure" if event_type in _FAILURE_EVENT_TYPES else "action"
|
|
103
|
+
return ActionLabel.create(text, category=category)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def labels_from_coordinator(
|
|
107
|
+
coordinator: Coordinator,
|
|
108
|
+
max_labels: int = 20,
|
|
109
|
+
) -> list[ActionLabel]:
|
|
110
|
+
"""Generate labels from the coordinator's recent events."""
|
|
111
|
+
events = coordinator.events[-max_labels:]
|
|
112
|
+
return [label_from_event(e) for e in events]
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"""Opt-in living docs maintenance (AC-511).
|
|
2
|
+
|
|
3
|
+
Domain concepts:
|
|
4
|
+
- LivingDoc: entity tracking one opted-in document
|
|
5
|
+
- DocMaintainer: discovers opted-in docs, runs maintenance at safe boundaries
|
|
6
|
+
- DocUpdateResult: structured audit of what was checked and updated
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import logging
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
from pydantic import BaseModel, Field
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
_OPT_IN_MARKER = "<!-- living-doc: true -->"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class LivingDoc:
|
|
22
|
+
"""Entity tracking one opted-in document.
|
|
23
|
+
|
|
24
|
+
Docs opt in via a marker comment: <!-- living-doc: true -->
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, path: Path) -> None:
|
|
28
|
+
self.path = path
|
|
29
|
+
self.is_opted_in = True
|
|
30
|
+
self.consultation_count = 0
|
|
31
|
+
self._content: str | None = None
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def from_path(cls, path: Path) -> LivingDoc | None:
|
|
35
|
+
"""Parse a file. Returns None if not opted in."""
|
|
36
|
+
if not path.exists():
|
|
37
|
+
return None
|
|
38
|
+
content = path.read_text(encoding="utf-8")
|
|
39
|
+
if _OPT_IN_MARKER not in content:
|
|
40
|
+
return None
|
|
41
|
+
doc = cls(path)
|
|
42
|
+
doc._content = content
|
|
43
|
+
return doc
|
|
44
|
+
|
|
45
|
+
def record_consultation(self) -> None:
|
|
46
|
+
self.consultation_count += 1
|
|
47
|
+
|
|
48
|
+
def read_content(self) -> str:
|
|
49
|
+
if self._content is None:
|
|
50
|
+
self._content = self.path.read_text(encoding="utf-8")
|
|
51
|
+
return self._content
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class DocUpdate(BaseModel):
|
|
55
|
+
"""One update applied to a living doc."""
|
|
56
|
+
|
|
57
|
+
doc_path: str
|
|
58
|
+
summary: str
|
|
59
|
+
lines_changed: int = 0
|
|
60
|
+
|
|
61
|
+
model_config = {"frozen": True}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class DocUpdateResult(BaseModel):
|
|
65
|
+
"""Structured audit of a maintenance pass."""
|
|
66
|
+
|
|
67
|
+
docs_checked: int = 0
|
|
68
|
+
updates: list[DocUpdate] = Field(default_factory=list)
|
|
69
|
+
skipped: bool = False
|
|
70
|
+
reason: str = ""
|
|
71
|
+
|
|
72
|
+
model_config = {"frozen": True}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class DocMaintainer:
|
|
76
|
+
"""Discovers opted-in docs and runs maintenance.
|
|
77
|
+
|
|
78
|
+
Maintenance only runs when:
|
|
79
|
+
1. Feature is enabled
|
|
80
|
+
2. There are learnings to promote
|
|
81
|
+
3. Opted-in docs exist
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
def __init__(
|
|
85
|
+
self,
|
|
86
|
+
roots: list[Path] | None = None,
|
|
87
|
+
enabled: bool = True,
|
|
88
|
+
) -> None:
|
|
89
|
+
self._roots = roots or []
|
|
90
|
+
self._enabled = enabled
|
|
91
|
+
|
|
92
|
+
def discover(self) -> list[LivingDoc]:
|
|
93
|
+
"""Scan roots for opted-in markdown files."""
|
|
94
|
+
docs: list[LivingDoc] = []
|
|
95
|
+
for root in self._roots:
|
|
96
|
+
if not root.is_dir():
|
|
97
|
+
continue
|
|
98
|
+
for md in sorted(root.rglob("*.md")):
|
|
99
|
+
doc = LivingDoc.from_path(md)
|
|
100
|
+
if doc is not None:
|
|
101
|
+
docs.append(doc)
|
|
102
|
+
return docs
|
|
103
|
+
|
|
104
|
+
def run(self, learnings: list[str]) -> DocUpdateResult:
|
|
105
|
+
"""Execute a maintenance pass.
|
|
106
|
+
|
|
107
|
+
Returns structured result describing what was checked/updated.
|
|
108
|
+
"""
|
|
109
|
+
if not self._enabled:
|
|
110
|
+
return DocUpdateResult(skipped=True, reason="disabled")
|
|
111
|
+
|
|
112
|
+
if not learnings:
|
|
113
|
+
return DocUpdateResult(skipped=True, reason="No learnings to promote")
|
|
114
|
+
|
|
115
|
+
docs = self.discover()
|
|
116
|
+
if not docs:
|
|
117
|
+
return DocUpdateResult(skipped=True, reason="No opted-in docs found")
|
|
118
|
+
|
|
119
|
+
updates: list[DocUpdate] = []
|
|
120
|
+
for doc in docs:
|
|
121
|
+
# In the first version, we identify docs that could benefit
|
|
122
|
+
# from updates based on learnings. Actual rewriting would
|
|
123
|
+
# use an LLM call — for now we produce the audit trail.
|
|
124
|
+
_content = doc.read_content() # noqa: F841 — will be used by LLM rewriter
|
|
125
|
+
relevant = [item for item in learnings if len(item.strip()) > 10]
|
|
126
|
+
if relevant:
|
|
127
|
+
updates.append(DocUpdate(
|
|
128
|
+
doc_path=str(doc.path),
|
|
129
|
+
summary=f"Candidate for update with {len(relevant)} learning(s)",
|
|
130
|
+
))
|
|
131
|
+
|
|
132
|
+
logger.info("living docs: checked %d docs, %d candidates", len(docs), len(updates))
|
|
133
|
+
return DocUpdateResult(
|
|
134
|
+
docs_checked=len(docs),
|
|
135
|
+
updates=updates,
|
|
136
|
+
)
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""Tests for compact action labels (AC-513).
|
|
2
|
+
|
|
3
|
+
DDD: ActionLabel is a value object — a short, scannable description
|
|
4
|
+
derived from events, tool calls, and step outcomes.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TestActionLabel:
|
|
11
|
+
"""ActionLabel value object for timeline/event display."""
|
|
12
|
+
|
|
13
|
+
def test_create_from_text(self) -> None:
|
|
14
|
+
from autocontext.session.action_labels import ActionLabel
|
|
15
|
+
|
|
16
|
+
label = ActionLabel.create("Wrote unit tests for auth module")
|
|
17
|
+
assert label.text == "Wrote unit tests for auth module"
|
|
18
|
+
assert label.category == "action"
|
|
19
|
+
|
|
20
|
+
def test_truncates_long_text(self) -> None:
|
|
21
|
+
from autocontext.session.action_labels import ActionLabel
|
|
22
|
+
|
|
23
|
+
label = ActionLabel.create("x" * 500)
|
|
24
|
+
assert len(label.text) <= 120
|
|
25
|
+
assert label.text.endswith("…")
|
|
26
|
+
|
|
27
|
+
def test_category_tagging(self) -> None:
|
|
28
|
+
from autocontext.session.action_labels import ActionLabel
|
|
29
|
+
|
|
30
|
+
assert ActionLabel.create("Ran tests", category="tool").category == "tool"
|
|
31
|
+
assert ActionLabel.create("Error: timeout", category="failure").category == "failure"
|
|
32
|
+
|
|
33
|
+
def test_noop_label(self) -> None:
|
|
34
|
+
from autocontext.session.action_labels import ActionLabel
|
|
35
|
+
|
|
36
|
+
label = ActionLabel.noop("No changes needed")
|
|
37
|
+
assert label.category == "noop"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class TestLabelFromEvent:
|
|
41
|
+
"""Labels derived from coordinator/session events."""
|
|
42
|
+
|
|
43
|
+
def test_from_coordinator_event(self) -> None:
|
|
44
|
+
from autocontext.session.action_labels import label_from_event
|
|
45
|
+
from autocontext.session.coordinator import CoordinatorEvent, CoordinatorEventType
|
|
46
|
+
|
|
47
|
+
event = CoordinatorEvent(
|
|
48
|
+
event_type=CoordinatorEventType.WORKER_COMPLETED,
|
|
49
|
+
payload={"worker_id": "w1", "coordinator_id": "c1"},
|
|
50
|
+
)
|
|
51
|
+
label = label_from_event(event)
|
|
52
|
+
assert "completed" in label.text.lower()
|
|
53
|
+
assert label.category == "action"
|
|
54
|
+
|
|
55
|
+
def test_from_session_event(self) -> None:
|
|
56
|
+
from autocontext.session.action_labels import label_from_event
|
|
57
|
+
from autocontext.session.types import SessionEvent, SessionEventType
|
|
58
|
+
|
|
59
|
+
event = SessionEvent(
|
|
60
|
+
event_type=SessionEventType.TURN_COMPLETED,
|
|
61
|
+
payload={"session_id": "s1", "turn_id": "t1", "tokens_used": 150},
|
|
62
|
+
)
|
|
63
|
+
label = label_from_event(event)
|
|
64
|
+
assert label.text
|
|
65
|
+
assert label.category == "action"
|
|
66
|
+
|
|
67
|
+
def test_failure_event_gets_failure_category(self) -> None:
|
|
68
|
+
from autocontext.session.action_labels import label_from_event
|
|
69
|
+
from autocontext.session.coordinator import CoordinatorEvent, CoordinatorEventType
|
|
70
|
+
|
|
71
|
+
event = CoordinatorEvent(
|
|
72
|
+
event_type=CoordinatorEventType.WORKER_FAILED,
|
|
73
|
+
payload={"worker_id": "w1", "error": "timeout"},
|
|
74
|
+
)
|
|
75
|
+
label = label_from_event(event)
|
|
76
|
+
assert label.category == "failure"
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class TestLabelBatch:
|
|
80
|
+
"""Batch labeling for timeline display."""
|
|
81
|
+
|
|
82
|
+
def test_label_batch_from_coordinator(self) -> None:
|
|
83
|
+
from autocontext.session.action_labels import labels_from_coordinator
|
|
84
|
+
from autocontext.session.coordinator import Coordinator
|
|
85
|
+
|
|
86
|
+
coord = Coordinator.create(session_id="s1", goal="test")
|
|
87
|
+
w = coord.delegate(task="Research auth", role="researcher")
|
|
88
|
+
w.start()
|
|
89
|
+
coord.complete_worker(w.worker_id, result="done")
|
|
90
|
+
|
|
91
|
+
labels = labels_from_coordinator(coord, max_labels=10)
|
|
92
|
+
assert len(labels) == len(coord.events) == 3
|
|
93
|
+
assert labels[0].text == "Coordinator started"
|
|
94
|
+
assert labels[1].text.startswith("Worker delegated:")
|
|
95
|
+
assert "task=Research auth" in labels[1].text
|
|
96
|
+
assert "role=researcher" in labels[1].text
|
|
97
|
+
assert "worker_id=" in labels[1].text
|
|
98
|
+
assert labels[2].text.startswith("Worker completed:")
|
|
99
|
+
assert "worker_id=" in labels[2].text
|
|
100
|
+
|
|
101
|
+
def test_max_labels_respected(self) -> None:
|
|
102
|
+
from autocontext.session.action_labels import labels_from_coordinator
|
|
103
|
+
from autocontext.session.coordinator import Coordinator
|
|
104
|
+
|
|
105
|
+
coord = Coordinator.create(session_id="s1", goal="test")
|
|
106
|
+
for i in range(20):
|
|
107
|
+
coord.delegate(task=f"task-{i}", role="r1")
|
|
108
|
+
|
|
109
|
+
labels = labels_from_coordinator(coord, max_labels=5)
|
|
110
|
+
assert len(labels) == 5
|
|
111
|
+
assert all(label.text.startswith("Worker delegated") for label in labels)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Tests for opt-in living docs maintenance (AC-511).
|
|
2
|
+
|
|
3
|
+
DDD: LivingDoc is an entity tracking an opted-in document.
|
|
4
|
+
DocMaintainer orchestrates updates at safe boundaries.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _write_doc(root: Path, name: str, *, opted_in: bool = True, content: str = "") -> Path:
|
|
13
|
+
path = root / name
|
|
14
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
15
|
+
marker = "<!-- living-doc: true -->" if opted_in else ""
|
|
16
|
+
path.write_text(f"{marker}\n# {name}\n\n{content or 'Initial content.'}\n", encoding="utf-8")
|
|
17
|
+
return path
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TestLivingDoc:
|
|
21
|
+
"""Entity tracking one opted-in document."""
|
|
22
|
+
|
|
23
|
+
def test_detect_opted_in(self, tmp_path: Path) -> None:
|
|
24
|
+
from autocontext.session.living_docs import LivingDoc
|
|
25
|
+
|
|
26
|
+
path = _write_doc(tmp_path, "ARCHITECTURE.md", opted_in=True)
|
|
27
|
+
doc = LivingDoc.from_path(path)
|
|
28
|
+
assert doc is not None
|
|
29
|
+
assert doc.is_opted_in
|
|
30
|
+
|
|
31
|
+
def test_skip_non_opted_in(self, tmp_path: Path) -> None:
|
|
32
|
+
from autocontext.session.living_docs import LivingDoc
|
|
33
|
+
|
|
34
|
+
path = _write_doc(tmp_path, "README.md", opted_in=False)
|
|
35
|
+
doc = LivingDoc.from_path(path)
|
|
36
|
+
assert doc is None
|
|
37
|
+
|
|
38
|
+
def test_tracks_consultation(self, tmp_path: Path) -> None:
|
|
39
|
+
from autocontext.session.living_docs import LivingDoc
|
|
40
|
+
|
|
41
|
+
path = _write_doc(tmp_path, "ARCH.md")
|
|
42
|
+
doc = LivingDoc.from_path(path)
|
|
43
|
+
assert doc.consultation_count == 0
|
|
44
|
+
doc.record_consultation()
|
|
45
|
+
assert doc.consultation_count == 1
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class TestDocMaintainer:
|
|
49
|
+
"""Orchestrates doc updates at safe boundaries."""
|
|
50
|
+
|
|
51
|
+
def test_discover_opted_in_docs(self, tmp_path: Path) -> None:
|
|
52
|
+
from autocontext.session.living_docs import DocMaintainer
|
|
53
|
+
|
|
54
|
+
_write_doc(tmp_path, "ARCHITECTURE.md", opted_in=True)
|
|
55
|
+
_write_doc(tmp_path, "README.md", opted_in=False)
|
|
56
|
+
_write_doc(tmp_path, "docs/ONBOARDING.md", opted_in=True)
|
|
57
|
+
|
|
58
|
+
maintainer = DocMaintainer(roots=[tmp_path])
|
|
59
|
+
docs = maintainer.discover()
|
|
60
|
+
assert len(docs) == 2
|
|
61
|
+
|
|
62
|
+
def test_skip_when_disabled(self, tmp_path: Path) -> None:
|
|
63
|
+
from autocontext.session.living_docs import DocMaintainer
|
|
64
|
+
|
|
65
|
+
_write_doc(tmp_path, "ARCH.md", opted_in=True)
|
|
66
|
+
maintainer = DocMaintainer(roots=[tmp_path], enabled=False)
|
|
67
|
+
result = maintainer.run(learnings=["new finding"])
|
|
68
|
+
assert result.skipped
|
|
69
|
+
assert "disabled" in result.reason
|
|
70
|
+
|
|
71
|
+
def test_skip_when_no_learnings(self, tmp_path: Path) -> None:
|
|
72
|
+
from autocontext.session.living_docs import DocMaintainer
|
|
73
|
+
|
|
74
|
+
_write_doc(tmp_path, "ARCH.md", opted_in=True)
|
|
75
|
+
maintainer = DocMaintainer(roots=[tmp_path])
|
|
76
|
+
result = maintainer.run(learnings=[])
|
|
77
|
+
assert result.skipped
|
|
78
|
+
assert "no learnings" in result.reason.lower()
|
|
79
|
+
|
|
80
|
+
def test_produces_audit_trail(self, tmp_path: Path) -> None:
|
|
81
|
+
from autocontext.session.living_docs import DocMaintainer
|
|
82
|
+
|
|
83
|
+
_write_doc(tmp_path, "ARCH.md", opted_in=True, content="Old architecture info.")
|
|
84
|
+
maintainer = DocMaintainer(roots=[tmp_path])
|
|
85
|
+
result = maintainer.run(learnings=["Auth now uses OAuth2"])
|
|
86
|
+
assert not result.skipped
|
|
87
|
+
assert len(result.updates) >= 0 # may or may not produce updates depending on signal
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|