codevira 2.0.0rc1__tar.gz → 2.1.1__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.
- {codevira-2.0.0rc1 → codevira-2.1.1}/CHANGELOG.md +166 -1
- {codevira-2.0.0rc1 → codevira-2.1.1}/PKG-INFO +129 -52
- codevira-2.0.0rc1/codevira.egg-info/PKG-INFO → codevira-2.1.1/README.md +118 -88
- codevira-2.0.0rc1/README.md → codevira-2.1.1/codevira.egg-info/PKG-INFO +165 -49
- {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/SOURCES.txt +5 -1
- {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/requires.txt +9 -0
- codevira-2.1.1/docs/foolproof-product-charter.md +197 -0
- codevira-2.1.1/docs/internal/competitive-landscape.md +239 -0
- codevira-2.1.1/docs/release-process.md +335 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/chunker.py +260 -71
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/index_codebase.py +661 -101
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/sqlite_graph.py +375 -152
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/__init__.py +1 -1
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli.py +746 -154
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_configure.py +151 -29
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_projects.py +62 -14
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/crash_logger.py +119 -11
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/detect.py +264 -66
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/ide_inject.py +161 -33
- codevira-2.1.1/mcp_server/tools/_decision_embeddings.py +314 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/learning.py +16 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/search.py +60 -2
- {codevira-2.0.0rc1 → codevira-2.1.1}/pyproject.toml +15 -3
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_chunker.py +141 -17
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli.py +396 -228
- codevira-2.1.1/tests/test_decision_embeddings.py +218 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_detect.py +141 -15
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_ide_inject.py +369 -119
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_index_codebase.py +851 -165
- codevira-2.0.0rc1/mcp_server/data/__pycache__/__init__.cpython-313.pyc +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/LICENSE +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/MANIFEST.in +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/builder.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/developer.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/documenter.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/orchestrator.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/planner.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/01-code-review.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/02-adversarial-fix-review.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/03-cross-module-impact.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/06-doc-drift.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/07-security-audit.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/12-llm-redteam.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/13-multi-ide-schema.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/22-competitor-benchmark.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/README.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/tier2-scripts.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/tier3-manual.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/reviewer.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/agents/tester.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/dependency_links.txt +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/entry_points.txt +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/top_level.txt +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/config.example.yaml +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/alpha-tester-invites.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/demo/README.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/00-engine.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/01-decision-lock.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/02-anti-regression.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/03-scope-contract.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/04-blast-radius.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/05-cross-session.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/06-token-budget.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/07-live-style.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/08-decision-replay.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/09-intent-inference.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/10-ai-promotion.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/README.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/pillar-1-setup.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/hn-launch-day.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/how-i-built-persistent-memory-for-ai-agents.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/linkedin-article-ai-agent-memory.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/linkedin-post-ai-agent-memory.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/local-pypi-https.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/medium-your-ai-coding-agent-has-amnesia.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/qa-playbook.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/roadmap.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-completion-plan.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-execution-log.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-master-plan.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/docs/vs-other-memory-tools.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/graph/_schema.yaml +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_dedupe_migration.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_fork_safety.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_sqlite_util.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/fix_history.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/global_db.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/graph_generator.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/outcome_tracker.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/rule_learner.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/treesitter_parser.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/__main__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_ghost_check.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_project_inventory.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_prompts.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_repair_init.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_safe_crash.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/agents_md.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/auto_init.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_agents.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_budget.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_hooks_admin.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_insights.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_replay.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/builder.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/developer.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/documenter.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/orchestrator.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/planner.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/reviewer.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/tester.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/config.example.yaml +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/post_tool_use.sh +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/pre_tool_use.sh +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/session_start.sh +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/stop.sh +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/user_prompt_submit.sh +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/coding-standards.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/engineering-excellence.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/git-cicd-governance.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/git_commits.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/incremental-updates.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/master_rule.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/multi-language.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/persistence.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/resilience-observability.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/smoke-testing.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/testing-standards.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/agents_md.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/canonical_block.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/claude_md.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/copilot_instructions.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/cursor_rules.mdc.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/gemini_md.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/windsurfrules.tmpl +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/decision_replay.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/doctor.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/demo_policy.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/events.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/intent_classifier.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/_signature_detect.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/ai_promotion.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/anti_regression.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/blast_radius.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/cross_session.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/decision_lock.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/intent_inference.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/live_style.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/scope_contract.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/token_budget.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policy.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/promotion_score.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/runner.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/scope_contract.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/signals.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/token_meter.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/claude_code_hooks.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/mcp_dispatch.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/gitignore.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/global_sync.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/http_server.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/launchd.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/log_retention.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/migrate.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/paths.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/prompts.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/roadmap_drift.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/server.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/setup_wizard.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/__init__.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/changesets.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/code_reader.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/graph.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/playbook.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/roadmap.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/coding-standards.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/engineering-excellence.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/git-cicd-governance.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/git_commits.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/incremental-updates.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/master_rule.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/persistence.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/resilience-observability.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/smoke-testing.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/rules/testing-standards.md +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/setup.cfg +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test__prompts.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_auto_init.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_call_edge_fk_safety.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_agents.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_configure.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_insights.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_projects.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_replay.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_version.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_crash_logger.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_dedupe_migration.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_doctor.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_fk_safety_extended.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_fork_safety.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_ghost_check.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_gitignore.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_global_db.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_global_sync.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_graph_generator.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_hook_resilience.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_http_server.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_launchd.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_log_retention.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_migrate.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_outcome_tracker.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_paths.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_prompts.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_record_decision.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_repair_init.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_retire_rule.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_roadmap_drift.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_rule_learner.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_server.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_setup_wizard.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_sqlite_graph.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_sqlite_util.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_changesets.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_code_reader.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_graph.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_learning.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_playbook.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_roadmap.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_search.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_treesitter_parser.py +0 -0
- {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_watcher_circuit.py +0 -0
|
@@ -11,7 +11,172 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
## [2.1.1] — 2026-05-17 — Hybrid decision search
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **Hybrid search for `search_decisions`** (BM25 + ChromaDB semantic + RRF fusion).
|
|
18
|
+
Closes the UDAP-benchmark gap: queries like `"DDD architecture layer"` or
|
|
19
|
+
`"codevira backfill"` that returned 0 hits in v2.0/v2.1.0 now surface the
|
|
20
|
+
right decisions via semantic recall. Response includes a `retrieval` field
|
|
21
|
+
indicating which path contributed (hybrid / keyword / semantic).
|
|
22
|
+
- **`codevira heal --decisions`** — non-destructive backfill embedding all
|
|
23
|
+
existing decisions into the semantic index. Run once after upgrading from
|
|
24
|
+
v2.0/v2.1.0 to pick up hybrid recall on pre-existing decision history.
|
|
25
|
+
Idempotent (upsert pattern).
|
|
26
|
+
- **`mcp_server/tools/_decision_embeddings.py`** — new helper module:
|
|
27
|
+
embed_decision, semantic_search_decisions, rrf_merge, backfill_all_decisions.
|
|
28
|
+
P9 graceful degradation throughout — chromadb failures never block SQL
|
|
29
|
+
writes or BM25 reads.
|
|
30
|
+
|
|
31
|
+
### Tests
|
|
32
|
+
- `tests/test_decision_embeddings.py` — 15 new regression tests covering
|
|
33
|
+
RRF math, graceful-degradation paths, and the explicit benchmark queries.
|
|
34
|
+
|
|
35
|
+
## [2.1.0] — 2026-05-17 — Reliability hardening + Pillar 3 discipline scaffold
|
|
36
|
+
|
|
37
|
+
### Added — Pillar 3: AI development discipline scaffold (2026-05-16)
|
|
38
|
+
|
|
39
|
+
The codevira repo now ships its own discipline scaffold — the same
|
|
40
|
+
pattern that will be exposed as `codevira discipline install` in
|
|
41
|
+
v2.2. This is the reference implementation, eaten as dog food.
|
|
42
|
+
|
|
43
|
+
- **`.claude/skills/`** — 4 SKILL.md files: `development-discipline`,
|
|
44
|
+
`open-source-quality`, `release-readiness`, `epistemic-honesty`.
|
|
45
|
+
- **`.claude/hooks/pre-release-block.sh`** — PreToolUse hard wall.
|
|
46
|
+
Refuses `twine upload`, `gh release ... --draft=false`,
|
|
47
|
+
`pipx publish`, etc. unless `.release-evidence/<version>.json`
|
|
48
|
+
shows G1–G5 pass. Bypass via `CODEVIRA_RELEASE_OVERRIDE=1`.
|
|
49
|
+
- **`Makefile`** — 12 targets including `release-verify-version`,
|
|
50
|
+
`release-gauntlet`, `release-build`, `release-dry-run`,
|
|
51
|
+
`release-publish`, `release-smoke`, `release-full`.
|
|
52
|
+
- **`.pre-commit-config.yaml`** — ruff lint+format, mypy, hygiene.
|
|
53
|
+
- **`tests/e2e/test_first_contact.py`** + 4 fixtures (docs_only,
|
|
54
|
+
code_only_python, polyglot, monorepo). G2 gate.
|
|
55
|
+
- **`.github/workflows/{ci,release-gate}.yml`** — CI hard wall.
|
|
56
|
+
- **`codevira.discipline.yaml`** — central scaffold config.
|
|
57
|
+
- **`scripts/check_real_ide_smoke.sh`** — G3 stub.
|
|
58
|
+
- **`docs/release-process.md`** — step-by-step foolproof release.
|
|
59
|
+
|
|
60
|
+
### Planned for v2.1
|
|
61
|
+
|
|
62
|
+
See [ROADMAP.md](ROADMAP.md#-v21--new-user-first-contact--reliability-hardening).
|
|
63
|
+
|
|
64
|
+
- **Reliability hardening (23 bugs A–O)** — silent-failure elimination
|
|
65
|
+
surfaced by the discipline-scaffold e2e fixtures.
|
|
66
|
+
- **Hybrid search (BM25 + semantic + rerank)** — natural-language
|
|
67
|
+
decision search.
|
|
68
|
+
- **Decision deduplication** (ADD/UPDATE/NOOP) + audit trail.
|
|
69
|
+
- **Conditional hook injection** — kill the always-on token tax.
|
|
70
|
+
- **Multi-language `get_signature` / `get_code`** — wire tree-sitter.
|
|
71
|
+
- **`record_decisions_batch` API** — compress protocol overhead.
|
|
72
|
+
- **CLI naming clarity** — `init` / `setup` / `register` / `configure`
|
|
73
|
+
canonical hierarchy.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## [2.0.0] — 2026-05-14 — First public 2.0 release
|
|
78
|
+
|
|
79
|
+
The 2.0 release moves codevira from "memory layer for one developer in one IDE" to
|
|
80
|
+
"active guardian for every AI coding tool you use, on every project, on your local
|
|
81
|
+
machine." Five internal iterations (rc1..rc5 in dev tags) plus a same-day public
|
|
82
|
+
release-candidate cycle (`2.0.0rc1`) of dogfood + audit + product-credibility
|
|
83
|
+
work consolidate into 2.0.0. **Full changelog: [RELEASE_NOTES.md](RELEASE_NOTES.md).**
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
|
|
87
|
+
- **All 10 hero policies** — active guardian engine intercepts every AI tool
|
|
88
|
+
call (Edit, Write, prompt submit, session start) and routes through
|
|
89
|
+
registered policies (Decision Lock, Anti-Regression, Scope Contract,
|
|
90
|
+
Blast-Radius Veto, Cross-Session Consistency, Token Budget, Live Style
|
|
91
|
+
Enforcement, Decision Replay, Proactive Intent Inference, AI Promotion
|
|
92
|
+
Score).
|
|
93
|
+
- **`codevira setup`** — one-prompt installer that detects every AI tool
|
|
94
|
+
on the machine (Claude Code, Cursor, Windsurf, Antigravity, OpenAI Codex,
|
|
95
|
+
GitHub Copilot, Continue.dev, Aider) and configures all of them at once.
|
|
96
|
+
- **`codevira projects`** — canonical inventory with `tracked / ghost /
|
|
97
|
+
orphan / stale` classification (`--json` for scripting; `--ghosts-only`
|
|
98
|
+
pairs with `clean --ghosts`).
|
|
99
|
+
- **`codevira hooks list / uninstall`** — admin commands for Claude Code
|
|
100
|
+
lifecycle hooks; surgical install + clean removal.
|
|
101
|
+
- **`codevira clean --ghosts`** — surgical removal of incomplete project
|
|
102
|
+
data dirs without touching tracked projects.
|
|
103
|
+
- **`codevira init --single-language`** — opt-out flag for the new
|
|
104
|
+
index-everything default.
|
|
105
|
+
- **`codevira engine` subcommand** — internal hook dispatcher; surfaces in
|
|
106
|
+
`--help` so the lifecycle hooks can call it.
|
|
107
|
+
- **4 new doctor checks** — `claude_mcp_visibility`, `codeindex_freshness`,
|
|
108
|
+
`semantic_search_health`, `ghost_projects` (total 14 per run).
|
|
109
|
+
- **Per-project config opt-out for cross-session injection** —
|
|
110
|
+
`.codevira/config.yaml: project: { cross_session_mode: off }` disables
|
|
111
|
+
the per-prompt context block without touching env vars.
|
|
112
|
+
|
|
113
|
+
### Changed
|
|
114
|
+
|
|
115
|
+
- **`codevira init` default** — indexes every common source/config/docs
|
|
116
|
+
extension (~75 total: `.py`, `.ts`, `.go`, `.yaml`, `.toml`, `.md`,
|
|
117
|
+
`.html`, `.sql`, `.proto`, …) instead of narrowing to one language.
|
|
118
|
+
- **`codevira agents` default** — renders nudge files for **detected** IDEs
|
|
119
|
+
only; `--ide=all` opt-in for the legacy "render for every supported IDE"
|
|
120
|
+
behavior.
|
|
121
|
+
- **`codevira doctor`** — now genuinely read-only; snapshots the projects
|
|
122
|
+
dir at entry and removes any new dirs at exit.
|
|
123
|
+
- **`search_codebase`** — graceful structural fallback (filename + symbol
|
|
124
|
+
substring) when the semantic index is unavailable, with the correct
|
|
125
|
+
`fix_command` instead of a misleading "reinstall codevira" hint.
|
|
126
|
+
- **`get_node` / `get_impact` / `query_graph`** — three-case error
|
|
127
|
+
differentiation: "no graph DB" / "graph empty" / "file not in populated
|
|
128
|
+
graph", each with its own `fix_command`.
|
|
129
|
+
- **`get_decision_confidence`** — exposes `decisions_in_db_total` and
|
|
130
|
+
`decisions_eligible_for_outcomes` plus a four-state interpretation so
|
|
131
|
+
users understand WHY their `total_decisions` may be zero. Outcome
|
|
132
|
+
tracker also classifies file-less decisions via mention-extraction.
|
|
133
|
+
- **Playbooks** — project-scoped first
|
|
134
|
+
(`<data_dir>/playbooks/` or `<project>/.codevira/playbooks/`); bundled
|
|
135
|
+
Python defaults are skipped with a clear warning when project language
|
|
136
|
+
≠ Python.
|
|
137
|
+
- **`register_project`** uses `ON CONFLICT … COALESCE(excluded.git_remote,
|
|
138
|
+
projects.git_remote)` — subsequent registrations can't silently clear
|
|
139
|
+
the `git_remote` column.
|
|
140
|
+
- **Auto-init self-heal** runs SYNCHRONOUSLY in the calling thread of every
|
|
141
|
+
CLI invocation — daemon thread death no longer leaves ghost data dirs.
|
|
142
|
+
- **Default install** includes ChromaDB + sentence-transformers (no
|
|
143
|
+
`[search]` extra needed for semantic search).
|
|
144
|
+
- **README "92% reduction" claim** qualified with honest scope, per-prompt
|
|
145
|
+
cost, and amortization curve.
|
|
146
|
+
- **`register` deprecation** now names the removal version (v2.1).
|
|
147
|
+
|
|
148
|
+
### Fixed
|
|
149
|
+
|
|
150
|
+
- macOS Apple Silicon **fork-safety segfault on first `codevira index`**
|
|
151
|
+
(auto-applied at indexer import).
|
|
152
|
+
- **Setup interactive prompt** silent-fail on unexpected input — replaced
|
|
153
|
+
with a shared `_prompts.confirm` helper that retries, flushes stdout,
|
|
154
|
+
and handles `KeyboardInterrupt` cleanly.
|
|
155
|
+
- Three **`status --global` UI typos** that always rendered 0/0/0
|
|
156
|
+
regardless of actual `global.db` state.
|
|
157
|
+
- Four **FK race conditions** in the watcher pipeline.
|
|
158
|
+
- **Python `None` leaked into argparse choices** for `agents --ide` and
|
|
159
|
+
`budget` positional.
|
|
160
|
+
- Several **silent argument clamps** in `replay --since`, `insights --since`,
|
|
161
|
+
and `insights --top` now print visible warnings.
|
|
162
|
+
|
|
163
|
+
### Tests
|
|
164
|
+
|
|
165
|
+
- 2395 / 2395 passing (deterministic).
|
|
166
|
+
- ~1091 net new tests since v1.8.0 (mostly from the v2.0 hero policies +
|
|
167
|
+
audit-driven regression coverage).
|
|
168
|
+
|
|
169
|
+
### Note on internal v1.8.1 + 2.0.0rc1
|
|
170
|
+
|
|
171
|
+
A v1.8.1 production hotfix existed in dev tags but was never published to
|
|
172
|
+
PyPI; its fixes are folded into 2.0.0. A `2.0.0rc1` was briefly published
|
|
173
|
+
on PyPI (2026-05-14) as a same-day public release candidate; the code is
|
|
174
|
+
identical to 2.0.0. Anyone who installed `codevira==2.0.0rc1` can
|
|
175
|
+
`pipx install --upgrade codevira` to move to 2.0.0 final.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## [Original v1.9 plan, deferred]
|
|
15
180
|
|
|
16
181
|
- **Interactive checkbox UI for `codevira configure`**. The current
|
|
17
182
|
prompt asks users to type comma-separated indices ("1,3,5") into a
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: codevira
|
|
3
|
-
Version: 2.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: Stop re-explaining your project to AI agents every session. Codevira gives Claude Code, Cursor, Windsurf, and Antigravity shared persistent memory of your codebase — locally, no signup, MIT-licensed. One install configures every AI tool.
|
|
5
5
|
Author-email: Sachin Shelke <sachin.worldnet@gmail.com>
|
|
6
6
|
License: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/sachinshelke/codevira
|
|
@@ -9,7 +9,7 @@ Project-URL: Repository, https://github.com/sachinshelke/codevira
|
|
|
9
9
|
Project-URL: Issues, https://github.com/sachinshelke/codevira/issues
|
|
10
10
|
Project-URL: Changelog, https://github.com/sachinshelke/codevira/blob/main/CHANGELOG.md
|
|
11
11
|
Keywords: mcp,model-context-protocol,ai-agents,llm,developer-tools,claude,cursor,windsurf,code-intelligence,semantic-search,context-graph,chromadb,agentic,coding-assistant,knowledge-graph
|
|
12
|
-
Classifier: Development Status ::
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
@@ -36,6 +36,14 @@ Requires-Dist: chromadb>=0.5.0
|
|
|
36
36
|
Requires-Dist: sentence-transformers>=2.7.0
|
|
37
37
|
Provides-Extra: search
|
|
38
38
|
Provides-Extra: all
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
41
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-timeout>=2.1; extra == "dev"
|
|
43
|
+
Requires-Dist: ruff>=0.6.0; extra == "dev"
|
|
44
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
45
|
+
Requires-Dist: types-PyYAML; extra == "dev"
|
|
46
|
+
Requires-Dist: pre-commit>=3.5; extra == "dev"
|
|
39
47
|
|
|
40
48
|
# Codevira
|
|
41
49
|
|
|
@@ -50,7 +58,17 @@ Provides-Extra: all
|
|
|
50
58
|
|
|
51
59
|
**Built for solo developers** working on local projects with AI agents. Codevira gives every AI tool you use access to the same persistent project memory — so you stop re-explaining your codebase every session, stop losing carefully-made decisions, and stop burning tokens on re-discovery.
|
|
52
60
|
|
|
53
|
-
**Works with:** Claude Code · Claude Desktop · Cursor · Windsurf · Google Antigravity · any MCP-compatible AI tool
|
|
61
|
+
**Works with:** Claude Code · Claude Desktop · Cursor · Windsurf · Google Antigravity · OpenAI Codex · GitHub Copilot · Continue.dev · Aider · any MCP-compatible AI tool
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## What you get
|
|
66
|
+
|
|
67
|
+
* 🧠 **One brain across every AI tool.** A decision you log in Claude Code shows up in Cursor. Style preferences learned in one session enforce in the next. No per-tool re-onboarding.
|
|
68
|
+
* 🛡️ **Active guardrails, not passive notes.** Codevira intercepts every AI tool call (`Edit`, `Write`, prompt submit, session start). Decisions you mark `do_not_revert` block silent regressions. Out-of-scope edits get warned. The AI literally *cannot* undo your protected choices without surfacing the conflict to you first.
|
|
69
|
+
* ⚡ **Zero-friction setup.** `pipx install codevira && codevira setup` — auto-detects every AI tool you have and configures all of them. No JSON to hand-edit, no per-IDE script, no team server to spin up.
|
|
70
|
+
* 🔒 **Local-first, MIT-licensed.** Your decisions, code graph, and learned preferences live in `~/.codevira/` on your machine. No cloud, no account, no telemetry, no SaaS.
|
|
71
|
+
* 📊 **Honest measurement.** `codevira insights` shows which past decisions held up vs got reverted across your real git history. `codevira budget` reports per-session AI token spend. You can audit what the memory layer is actually costing and earning.
|
|
54
72
|
|
|
55
73
|
---
|
|
56
74
|
|
|
@@ -117,7 +135,7 @@ Codevira is a [Model Context Protocol](https://modelcontextprotocol.io) server t
|
|
|
117
135
|
|
|
118
136
|
| Capability | What it means for you |
|
|
119
137
|
|---|---|
|
|
120
|
-
| **Zero-config setup** | `pipx install codevira && codevira
|
|
138
|
+
| **Zero-config setup** | `pipx install codevira && codevira setup` — that's it. No prompts, no JSON editing. Auto-detects every installed AI tool and configures all of them |
|
|
121
139
|
| **Cross-tool continuity** | One `get_session_context()` call brings any AI agent up to speed in ~800 tokens — works identically in Claude Code, Cursor, Windsurf, Antigravity |
|
|
122
140
|
| **Decision protection** | `do_not_revert` flags + searchable decision log stop AI agents from undoing past architectural choices |
|
|
123
141
|
| **Context graph** | Every source file has a node: role, rules, dependencies, stability, blast radius. AI calls `get_node(path)` instead of re-reading the file |
|
|
@@ -141,89 +159,148 @@ The agent always asks for what it needs, in the size it needs.
|
|
|
141
159
|
|
|
142
160
|
---
|
|
143
161
|
|
|
144
|
-
## Quick Start
|
|
145
|
-
|
|
146
|
-
### 1. Install
|
|
162
|
+
## Quick Start — three commands
|
|
147
163
|
|
|
148
164
|
```bash
|
|
149
|
-
#
|
|
165
|
+
# 1. Install
|
|
150
166
|
pipx install codevira
|
|
151
167
|
|
|
152
|
-
#
|
|
153
|
-
pip install codevira
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Installs the full toolkit (23 AI-facing MCP tools + 12 admin/CLI tools) out of the box. Semantic search downloads a ~90MB embedding model on first use.
|
|
157
|
-
|
|
158
|
-
### 2. Set up every AI tool you have
|
|
159
|
-
|
|
160
|
-
```bash
|
|
168
|
+
# 2. Connect every AI tool you have (idempotent — safe to re-run)
|
|
161
169
|
codevira setup
|
|
170
|
+
|
|
171
|
+
# 3. (Optional) Verify the install
|
|
172
|
+
codevira doctor
|
|
162
173
|
```
|
|
163
174
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
- Writes per-IDE nudge files so each tool knows codevira exists (`CLAUDE.md`, `AGENTS.md`, `.cursor/rules/codevira.mdc`, `.windsurfrules`, `GEMINI.md`, `.github/copilot-instructions.md`)
|
|
167
|
-
- Installs Claude Code lifecycle hooks (SessionStart, PreToolUse, PostToolUse, UserPromptSubmit, Stop) — turns codevira from passive memory into the **AI guardian** described above
|
|
168
|
-
- Injects MCP server config into each detected tool
|
|
175
|
+
That's it. Open any project in your AI tool — codevira auto-initializes on
|
|
176
|
+
the first MCP tool call. No per-project `codevira init` needed.
|
|
169
177
|
|
|
170
|
-
|
|
178
|
+
**Try it.** Ask your AI agent: *"Use `get_session_context` to brief me on this project."*
|
|
179
|
+
You'll get a structured project state in one tool call instead of the AI
|
|
180
|
+
re-reading docs.
|
|
171
181
|
|
|
172
|
-
|
|
182
|
+
### What `codevira setup` actually does
|
|
173
183
|
|
|
174
|
-
|
|
184
|
+
The one command above replaces what used to take 5+ steps in v1.x:
|
|
175
185
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
186
|
+
* **Detects every installed AI tool** — Claude Code, Claude Desktop, Cursor,
|
|
187
|
+
Windsurf, Antigravity, Codex CLI, GitHub Copilot, Continue.dev, Aider.
|
|
188
|
+
* **Injects MCP server config** into each tool's config file (per-IDE schema
|
|
189
|
+
handled automatically — no JSON to hand-edit).
|
|
190
|
+
* **Writes per-IDE nudge files** so each AI tool knows codevira exists:
|
|
191
|
+
`CLAUDE.md`, `AGENTS.md`, `.cursor/rules/codevira.mdc`, `.windsurfrules`,
|
|
192
|
+
`GEMINI.md`, `.github/copilot-instructions.md` — only for IDEs you actually
|
|
193
|
+
have installed.
|
|
194
|
+
* **Installs Claude Code lifecycle hooks** (`SessionStart`, `PreToolUse`,
|
|
195
|
+
`PostToolUse`, `UserPromptSubmit`, `Stop`) — turns codevira from passive
|
|
196
|
+
memory into the **active guardian** that intercepts every AI tool call.
|
|
179
197
|
|
|
180
|
-
|
|
198
|
+
Use `--dry-run` to preview without writing anything. Use `--ide=claude` to
|
|
199
|
+
limit to one tool. Use `-y` to skip the confirmation prompt (handy in scripts).
|
|
181
200
|
|
|
182
|
-
###
|
|
201
|
+
### Already on v1.x?
|
|
183
202
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
203
|
+
`pipx install --upgrade codevira` then `codevira setup`. Three default
|
|
204
|
+
behaviors changed (all opt-out-able for legacy compatibility) — see
|
|
205
|
+
[MIGRATING.md](MIGRATING.md) for the full upgrade guide. No data loss; your
|
|
206
|
+
existing `~/.codevira/global.db` migrates safely.
|
|
188
207
|
|
|
189
|
-
|
|
208
|
+
### What `codevira doctor` reports
|
|
190
209
|
|
|
191
|
-
|
|
210
|
+
14 health checks in one run, each with a concrete `fix_command` for any
|
|
211
|
+
WARN or FAIL. Read-only — never modifies anything. Use it whenever
|
|
212
|
+
something feels off.
|
|
192
213
|
|
|
193
|
-
|
|
214
|
+
```text
|
|
215
|
+
$ codevira doctor
|
|
216
|
+
Codevira health check
|
|
217
|
+
────────────────────────────────────────────────────────────
|
|
218
|
+
✓ python_version Python 3.13 (≥ 3.10 required)
|
|
219
|
+
✓ codevira_data_dir /Users/you/.codevira exists and is writable
|
|
220
|
+
✓ graph_db graph.db has all 4 expected tables
|
|
221
|
+
✓ global_db /Users/you/.codevira/global.db opens cleanly
|
|
222
|
+
✓ detected_ides 5 AI tool(s) detected
|
|
223
|
+
✓ claude_mcp_visibility codevira visible to Claude Code (✓ Connected)
|
|
224
|
+
✓ ghost_projects 12 project(s) tracked — none are ghost dirs
|
|
225
|
+
... (and 7 more checks)
|
|
226
|
+
────────────────────────────────────────────────────────────
|
|
227
|
+
summary: 14 pass · 0 warn · 0 fail
|
|
228
|
+
```
|
|
194
229
|
|
|
195
|
-
|
|
230
|
+
### Daily-use commands you'll actually run
|
|
196
231
|
|
|
197
|
-
|
|
232
|
+
| Command | What it does |
|
|
233
|
+
|---|---|
|
|
234
|
+
| `codevira setup` | Re-sync IDE configs (after installing a new AI tool, etc.) |
|
|
235
|
+
| `codevira doctor` | Health check |
|
|
236
|
+
| `codevira projects` | List every project codevira knows about on this machine |
|
|
237
|
+
| `codevira projects --ghosts-only` | Find half-initialised project dirs |
|
|
238
|
+
| `codevira clean --ghosts` | Remove ghost dirs (preserves real ones) |
|
|
239
|
+
| `codevira insights` | Stable + reverted decisions across past sessions |
|
|
240
|
+
| `codevira replay` | Decisions timeline (terminal / markdown / html output) |
|
|
241
|
+
| `codevira budget` | Per-session token usage |
|
|
242
|
+
| `codevira hooks list` | Show installed Claude Code lifecycle hooks |
|
|
243
|
+
|
|
244
|
+
Run `codevira --help` for the full subcommand list.
|
|
198
245
|
|
|
199
246
|
### Customizing what's indexed
|
|
200
247
|
|
|
201
|
-
|
|
248
|
+
By default codevira indexes every common source / config / docs extension
|
|
249
|
+
(~75 total: `.py`, `.ts`, `.go`, `.yaml`, `.md`, `.html`, `.sql`, `.proto`,
|
|
250
|
+
…). For most projects this is what you want. To narrow or widen:
|
|
202
251
|
|
|
203
252
|
```bash
|
|
204
|
-
|
|
253
|
+
# Interactive picker — shows discovered dirs + extensions with file counts
|
|
205
254
|
codevira configure
|
|
255
|
+
|
|
256
|
+
# Non-interactive (CI / scripts)
|
|
257
|
+
codevira configure --dirs src,packages,apps --extensions .py,.ts --no-reindex
|
|
258
|
+
|
|
259
|
+
# Restore legacy single-language behavior on init
|
|
260
|
+
codevira init --single-language
|
|
206
261
|
```
|
|
207
262
|
|
|
208
|
-
|
|
263
|
+
After changing watched directories, **restart your AI tool** — running
|
|
264
|
+
watchers snapshot the dir set at boot.
|
|
265
|
+
|
|
266
|
+
### Reducing per-prompt context overhead
|
|
267
|
+
|
|
268
|
+
Codevira's Cross-Session Consistency policy injects ~1 KB of relevant prior
|
|
269
|
+
decisions into each `UserPromptSubmit` event. To disable per-project:
|
|
270
|
+
|
|
271
|
+
```yaml
|
|
272
|
+
# .codevira/config.yaml
|
|
273
|
+
project:
|
|
274
|
+
cross_session_mode: off # disable injection entirely
|
|
275
|
+
cross_session_max_inject: 2 # OR keep it but cap at 2 entries (default 5)
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Or system-wide via env: `export CODEVIRA_CROSS_SESSION_MODE=off`.
|
|
279
|
+
|
|
280
|
+
### Uninstall
|
|
281
|
+
|
|
282
|
+
See [Uninstall / Reset](#uninstall--reset) below for the full set of
|
|
283
|
+
options (`--all`, `--dry-run`, `--orphans`, `--ghosts`, `--legacy`).
|
|
284
|
+
Quick path:
|
|
209
285
|
|
|
210
|
-
**Non-interactive** (useful in scripts or CI):
|
|
211
286
|
```bash
|
|
212
|
-
codevira
|
|
287
|
+
codevira clean # remove ~/.codevira/, IDE configs, services
|
|
288
|
+
codevira hooks uninstall # remove Claude Code lifecycle hook scripts
|
|
289
|
+
pipx uninstall codevira # remove the binary
|
|
213
290
|
```
|
|
214
291
|
|
|
215
|
-
|
|
292
|
+
---
|
|
216
293
|
|
|
217
|
-
|
|
294
|
+
## Manual installation — only if `codevira setup` doesn't detect your tool
|
|
218
295
|
|
|
219
296
|
Codevira supports two transports. Use the right one for your client:
|
|
220
297
|
|
|
221
298
|
| Client | Transport | Config file |
|
|
222
299
|
|--------|-----------|-------------|
|
|
223
300
|
| Claude Desktop (app) | stdio | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
224
|
-
| Claude Code (CLI) | stdio
|
|
225
|
-
| Cursor | stdio |
|
|
226
|
-
| Windsurf | stdio |
|
|
301
|
+
| Claude Code (CLI) | stdio | `~/.claude.json` (user scope — `mcpServers` section) |
|
|
302
|
+
| Cursor | stdio | `~/.cursor/mcp.json` |
|
|
303
|
+
| Windsurf | stdio | `~/.codeium/windsurf/mcp_config.json` |
|
|
227
304
|
| Google Antigravity | stdio | `~/.gemini/antigravity/mcp_config.json` |
|
|
228
305
|
|
|
229
306
|
**Stdio transport** — Claude Desktop, Cursor, Windsurf (`.claude/settings.json` / `.cursor/mcp.json` / `.windsurf/mcp.json`):
|
|
@@ -253,7 +330,7 @@ Codevira supports two transports. Use the right one for your client:
|
|
|
253
330
|
|
|
254
331
|
> Tip: find the full binary path with `which codevira`
|
|
255
332
|
|
|
256
|
-
**HTTP/HTTPS transport** — *Preview
|
|
333
|
+
**HTTP/HTTPS transport** — *Preview only.* The HTTP server binds to one project at startup and cannot switch contexts per request. Multi-project HTTPS is still on the roadmap (see [ROADMAP.md](ROADMAP.md)). For multi-project work today, use stdio via `codevira setup` (above) — `setup` is the v2.0 successor to the now-deprecated `codevira register`.
|
|
257
334
|
|
|
258
335
|
First start the HTTP server in a terminal:
|
|
259
336
|
```bash
|
|
@@ -394,7 +471,7 @@ codevira clean --dry-run # preview what would be removed
|
|
|
394
471
|
```mermaid
|
|
395
472
|
flowchart LR
|
|
396
473
|
|
|
397
|
-
A["pipx install codevira"] --> B["codevira
|
|
474
|
+
A["pipx install codevira"] --> B["codevira setup"]
|
|
398
475
|
B --> C["Open project in\nClaude Code / Cursor /\nWindsurf / Antigravity"]
|
|
399
476
|
C --> D["First MCP tool call\ntriggers auto-init"]
|
|
400
477
|
D --> E["✓ Config written\n✓ Graph built\n✓ Roadmap created\n✓ Ready"]
|