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.
Files changed (236) hide show
  1. {codevira-2.0.0rc1 → codevira-2.1.1}/CHANGELOG.md +166 -1
  2. {codevira-2.0.0rc1 → codevira-2.1.1}/PKG-INFO +129 -52
  3. codevira-2.0.0rc1/codevira.egg-info/PKG-INFO → codevira-2.1.1/README.md +118 -88
  4. codevira-2.0.0rc1/README.md → codevira-2.1.1/codevira.egg-info/PKG-INFO +165 -49
  5. {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/SOURCES.txt +5 -1
  6. {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/requires.txt +9 -0
  7. codevira-2.1.1/docs/foolproof-product-charter.md +197 -0
  8. codevira-2.1.1/docs/internal/competitive-landscape.md +239 -0
  9. codevira-2.1.1/docs/release-process.md +335 -0
  10. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/chunker.py +260 -71
  11. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/index_codebase.py +661 -101
  12. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/sqlite_graph.py +375 -152
  13. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/__init__.py +1 -1
  14. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli.py +746 -154
  15. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_configure.py +151 -29
  16. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_projects.py +62 -14
  17. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/crash_logger.py +119 -11
  18. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/detect.py +264 -66
  19. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/ide_inject.py +161 -33
  20. codevira-2.1.1/mcp_server/tools/_decision_embeddings.py +314 -0
  21. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/learning.py +16 -0
  22. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/search.py +60 -2
  23. {codevira-2.0.0rc1 → codevira-2.1.1}/pyproject.toml +15 -3
  24. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_chunker.py +141 -17
  25. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli.py +396 -228
  26. codevira-2.1.1/tests/test_decision_embeddings.py +218 -0
  27. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_detect.py +141 -15
  28. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_ide_inject.py +369 -119
  29. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_index_codebase.py +851 -165
  30. codevira-2.0.0rc1/mcp_server/data/__pycache__/__init__.cpython-313.pyc +0 -0
  31. {codevira-2.0.0rc1 → codevira-2.1.1}/LICENSE +0 -0
  32. {codevira-2.0.0rc1 → codevira-2.1.1}/MANIFEST.in +0 -0
  33. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/builder.md +0 -0
  34. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/developer.md +0 -0
  35. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/documenter.md +0 -0
  36. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/orchestrator.md +0 -0
  37. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/planner.md +0 -0
  38. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/01-code-review.md +0 -0
  39. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/02-adversarial-fix-review.md +0 -0
  40. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/03-cross-module-impact.md +0 -0
  41. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/06-doc-drift.md +0 -0
  42. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/07-security-audit.md +0 -0
  43. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/12-llm-redteam.md +0 -0
  44. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/13-multi-ide-schema.md +0 -0
  45. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/22-competitor-benchmark.md +0 -0
  46. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/README.md +0 -0
  47. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/tier2-scripts.md +0 -0
  48. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/qa/tier3-manual.md +0 -0
  49. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/reviewer.md +0 -0
  50. {codevira-2.0.0rc1 → codevira-2.1.1}/agents/tester.md +0 -0
  51. {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/dependency_links.txt +0 -0
  52. {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/entry_points.txt +0 -0
  53. {codevira-2.0.0rc1 → codevira-2.1.1}/codevira.egg-info/top_level.txt +0 -0
  54. {codevira-2.0.0rc1 → codevira-2.1.1}/config.example.yaml +0 -0
  55. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/alpha-tester-invites.md +0 -0
  56. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/demo/README.md +0 -0
  57. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/00-engine.md +0 -0
  58. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/01-decision-lock.md +0 -0
  59. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/02-anti-regression.md +0 -0
  60. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/03-scope-contract.md +0 -0
  61. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/04-blast-radius.md +0 -0
  62. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/05-cross-session.md +0 -0
  63. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/06-token-budget.md +0 -0
  64. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/07-live-style.md +0 -0
  65. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/08-decision-replay.md +0 -0
  66. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/09-intent-inference.md +0 -0
  67. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/10-ai-promotion.md +0 -0
  68. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/README.md +0 -0
  69. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/heroes/pillar-1-setup.md +0 -0
  70. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/hn-launch-day.md +0 -0
  71. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/how-i-built-persistent-memory-for-ai-agents.md +0 -0
  72. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/linkedin-article-ai-agent-memory.md +0 -0
  73. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/linkedin-post-ai-agent-memory.md +0 -0
  74. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/local-pypi-https.md +0 -0
  75. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/medium-your-ai-coding-agent-has-amnesia.md +0 -0
  76. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/qa-playbook.md +0 -0
  77. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/roadmap.md +0 -0
  78. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-completion-plan.md +0 -0
  79. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-execution-log.md +0 -0
  80. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/v2-master-plan.md +0 -0
  81. {codevira-2.0.0rc1 → codevira-2.1.1}/docs/vs-other-memory-tools.md +0 -0
  82. {codevira-2.0.0rc1 → codevira-2.1.1}/graph/_schema.yaml +0 -0
  83. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/__init__.py +0 -0
  84. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_dedupe_migration.py +0 -0
  85. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_fork_safety.py +0 -0
  86. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/_sqlite_util.py +0 -0
  87. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/fix_history.py +0 -0
  88. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/global_db.py +0 -0
  89. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/graph_generator.py +0 -0
  90. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/outcome_tracker.py +0 -0
  91. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/rule_learner.py +0 -0
  92. {codevira-2.0.0rc1 → codevira-2.1.1}/indexer/treesitter_parser.py +0 -0
  93. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/__main__.py +0 -0
  94. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_ghost_check.py +0 -0
  95. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_project_inventory.py +0 -0
  96. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_prompts.py +0 -0
  97. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_repair_init.py +0 -0
  98. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/_safe_crash.py +0 -0
  99. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/agents_md.py +0 -0
  100. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/auto_init.py +0 -0
  101. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_agents.py +0 -0
  102. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_budget.py +0 -0
  103. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_hooks_admin.py +0 -0
  104. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_insights.py +0 -0
  105. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/cli_replay.py +0 -0
  106. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/__init__.py +0 -0
  107. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/builder.md +0 -0
  108. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/developer.md +0 -0
  109. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/documenter.md +0 -0
  110. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/orchestrator.md +0 -0
  111. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/planner.md +0 -0
  112. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/reviewer.md +0 -0
  113. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/agents/tester.md +0 -0
  114. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/config.example.yaml +0 -0
  115. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/post_tool_use.sh +0 -0
  116. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/pre_tool_use.sh +0 -0
  117. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/session_start.sh +0 -0
  118. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/stop.sh +0 -0
  119. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/hooks/user_prompt_submit.sh +0 -0
  120. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/coding-standards.md +0 -0
  121. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/engineering-excellence.md +0 -0
  122. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/git-cicd-governance.md +0 -0
  123. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/git_commits.md +0 -0
  124. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/incremental-updates.md +0 -0
  125. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/master_rule.md +0 -0
  126. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/multi-language.md +0 -0
  127. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/persistence.md +0 -0
  128. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/resilience-observability.md +0 -0
  129. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/smoke-testing.md +0 -0
  130. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/rules/testing-standards.md +0 -0
  131. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/agents_md.tmpl +0 -0
  132. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/canonical_block.md +0 -0
  133. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/claude_md.tmpl +0 -0
  134. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/copilot_instructions.tmpl +0 -0
  135. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/cursor_rules.mdc.tmpl +0 -0
  136. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/gemini_md.tmpl +0 -0
  137. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/data/templates/windsurfrules.tmpl +0 -0
  138. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/decision_replay.py +0 -0
  139. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/doctor.py +0 -0
  140. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/__init__.py +0 -0
  141. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/demo_policy.py +0 -0
  142. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/events.py +0 -0
  143. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/intent_classifier.py +0 -0
  144. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/__init__.py +0 -0
  145. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/_signature_detect.py +0 -0
  146. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/ai_promotion.py +0 -0
  147. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/anti_regression.py +0 -0
  148. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/blast_radius.py +0 -0
  149. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/cross_session.py +0 -0
  150. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/decision_lock.py +0 -0
  151. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/intent_inference.py +0 -0
  152. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/live_style.py +0 -0
  153. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/scope_contract.py +0 -0
  154. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policies/token_budget.py +0 -0
  155. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/policy.py +0 -0
  156. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/promotion_score.py +0 -0
  157. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/runner.py +0 -0
  158. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/scope_contract.py +0 -0
  159. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/signals.py +0 -0
  160. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/token_meter.py +0 -0
  161. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/__init__.py +0 -0
  162. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/claude_code_hooks.py +0 -0
  163. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/engine/wiring/mcp_dispatch.py +0 -0
  164. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/gitignore.py +0 -0
  165. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/global_sync.py +0 -0
  166. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/http_server.py +0 -0
  167. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/launchd.py +0 -0
  168. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/log_retention.py +0 -0
  169. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/migrate.py +0 -0
  170. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/paths.py +0 -0
  171. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/prompts.py +0 -0
  172. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/roadmap_drift.py +0 -0
  173. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/server.py +0 -0
  174. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/setup_wizard.py +0 -0
  175. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/__init__.py +0 -0
  176. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/changesets.py +0 -0
  177. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/code_reader.py +0 -0
  178. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/graph.py +0 -0
  179. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/playbook.py +0 -0
  180. {codevira-2.0.0rc1 → codevira-2.1.1}/mcp_server/tools/roadmap.py +0 -0
  181. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/coding-standards.md +0 -0
  182. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/engineering-excellence.md +0 -0
  183. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/git-cicd-governance.md +0 -0
  184. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/git_commits.md +0 -0
  185. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/incremental-updates.md +0 -0
  186. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/master_rule.md +0 -0
  187. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/persistence.md +0 -0
  188. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/resilience-observability.md +0 -0
  189. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/smoke-testing.md +0 -0
  190. {codevira-2.0.0rc1 → codevira-2.1.1}/rules/testing-standards.md +0 -0
  191. {codevira-2.0.0rc1 → codevira-2.1.1}/setup.cfg +0 -0
  192. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test__prompts.py +0 -0
  193. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_auto_init.py +0 -0
  194. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_call_edge_fk_safety.py +0 -0
  195. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_agents.py +0 -0
  196. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_configure.py +0 -0
  197. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_insights.py +0 -0
  198. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_projects.py +0 -0
  199. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_replay.py +0 -0
  200. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_cli_version.py +0 -0
  201. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_crash_logger.py +0 -0
  202. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_dedupe_migration.py +0 -0
  203. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_doctor.py +0 -0
  204. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_fk_safety_extended.py +0 -0
  205. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_fork_safety.py +0 -0
  206. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_ghost_check.py +0 -0
  207. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_gitignore.py +0 -0
  208. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_global_db.py +0 -0
  209. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_global_sync.py +0 -0
  210. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_graph_generator.py +0 -0
  211. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_hook_resilience.py +0 -0
  212. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_http_server.py +0 -0
  213. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_launchd.py +0 -0
  214. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_log_retention.py +0 -0
  215. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_migrate.py +0 -0
  216. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_outcome_tracker.py +0 -0
  217. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_paths.py +0 -0
  218. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_prompts.py +0 -0
  219. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_record_decision.py +0 -0
  220. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_repair_init.py +0 -0
  221. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_retire_rule.py +0 -0
  222. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_roadmap_drift.py +0 -0
  223. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_rule_learner.py +0 -0
  224. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_server.py +0 -0
  225. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_setup_wizard.py +0 -0
  226. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_sqlite_graph.py +0 -0
  227. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_sqlite_util.py +0 -0
  228. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_changesets.py +0 -0
  229. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_code_reader.py +0 -0
  230. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_graph.py +0 -0
  231. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_learning.py +0 -0
  232. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_playbook.py +0 -0
  233. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_roadmap.py +0 -0
  234. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_tools_search.py +0 -0
  235. {codevira-2.0.0rc1 → codevira-2.1.1}/tests/test_treesitter_parser.py +0 -0
  236. {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
- ### Planned for v1.9
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.0.0rc1
4
- Summary: Persistent adaptive memory for AI coding agents MCP server with context graph, semantic search, adaptive learning, roadmap tracking, and cross-tool continuity.
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 :: 4 - Beta
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 register` — that's it. No prompts, no JSON editing. Auto-detects language, source dirs, and IDE configs |
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
- # Recommended: global install via pipx (isolated, works everywhere)
165
+ # 1. Install
150
166
  pipx install codevira
151
167
 
152
- # Alternative: pip install
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
- This one-prompt v2.0 command:
165
- - Detects every AI tool installed on your machine (Claude Code, Cursor, Windsurf, Antigravity, Codex CLI, GitHub Copilot, Claude Desktop, Continue, Aider, Roo Code, Cline)
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
- Idempotent re-run any time to re-sync. Use `--dry-run` to preview, `--ide=claude` to limit to one tool.
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
- > **Migrating from v1.x?** If you've been using `codevira register`, switch to `codevira setup` register only injects MCP server config; setup ALSO writes the nudge files + lifecycle hooks that power the v2.0 hero capabilities.
182
+ ### What `codevira setup` actually does
173
183
 
174
- ### 2.5 Verify the install (optional but recommended)
184
+ The one command above replaces what used to take 5+ steps in v1.x:
175
185
 
176
- ```bash
177
- codevira doctor
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
- Runs 9 health checks, prints `✓` / `⚠` / `✗` per check, and shows the **exact command** to fix anything that's not green. Read-only never modifies anything.
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
- ### 3. Start using
201
+ ### Already on v1.x?
183
202
 
184
- Open any project in your AI tool. On the first MCP tool call, Codevira **auto-initializes**:
185
- - Detects language, source directories, and file extensions from project markers
186
- - Creates the context graph and roadmap
187
- - Installs a `post-commit` git hook for automatic reindexing
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
- No explicit `codevira init` needed — everything happens on demand.
208
+ ### What `codevira doctor` reports
190
209
 
191
- > **Note:** `codevira init` is still available for explicit per-project setup with custom settings.
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
- ### 4. Verify
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
- Ask your AI agent to call `get_roadmap()` — it should return your current phase and next action.
230
+ ### Daily-use commands you'll actually run
196
231
 
197
- > **Note:** Restart your AI tool after running `codevira register` to pick up the new MCP config.
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
- Codevira tries to auto-detect your project's source layout, but monorepo or non-standard layouts sometimes slip through — you'll notice when `codevira index --full` reports `0 chunks indexed` and prints a hint pointing you here.
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
- cd your-project
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
- Scans your project (gitignore-aware), shows discovered directories and extensions with file counts, and lets you pick which to watch via a numbered-list prompt. It writes your choices back to `.codevira/config.yaml` and offers to rebuild the index.
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 configure --dirs src,packages,apps --extensions .py,.ts,.tsx --no-reindex
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
- After changing watched directories, **restart your AI tool** — running watchers snapshot the dir set at boot.
292
+ ---
216
293
 
217
- ### Manual config (only if auto-inject didn't detect your tool)
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 or HTTP | `.claude/settings.json` |
225
- | Cursor | stdio | `.cursor/mcp.json` |
226
- | Windsurf | stdio | `.windsurf/mcp.json` |
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 in v1.7, single-project only.* The HTTP server binds to one project at startup and cannot switch contexts per request. **Multi-project HTTPS is planned for v1.8.** For multi-project work today, use stdio via `codevira register` (above).
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 register"]
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"]