codevira 1.6.1__tar.gz → 1.7.0__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 (124) hide show
  1. {codevira-1.6.1 → codevira-1.7.0}/CHANGELOG.md +145 -0
  2. codevira-1.7.0/PKG-INFO +585 -0
  3. codevira-1.7.0/README.md +546 -0
  4. codevira-1.7.0/codevira.egg-info/PKG-INFO +585 -0
  5. {codevira-1.6.1 → codevira-1.7.0}/codevira.egg-info/SOURCES.txt +2 -0
  6. {codevira-1.6.1 → codevira-1.7.0}/codevira.egg-info/requires.txt +2 -4
  7. {codevira-1.6.1/mcp_server/data → codevira-1.7.0}/config.example.yaml +5 -2
  8. {codevira-1.6.1 → codevira-1.7.0}/docs/roadmap.md +20 -13
  9. {codevira-1.6.1 → codevira-1.7.0}/indexer/chunker.py +0 -1
  10. {codevira-1.6.1 → codevira-1.7.0}/indexer/global_db.py +0 -11
  11. {codevira-1.6.1 → codevira-1.7.0}/indexer/graph_generator.py +36 -4
  12. {codevira-1.6.1 → codevira-1.7.0}/indexer/index_codebase.py +128 -27
  13. {codevira-1.6.1 → codevira-1.7.0}/indexer/outcome_tracker.py +0 -13
  14. {codevira-1.6.1 → codevira-1.7.0}/indexer/treesitter_parser.py +1 -4
  15. codevira-1.7.0/mcp_server/__init__.py +17 -0
  16. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/auto_init.py +1 -1
  17. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/cli.py +134 -9
  18. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/crash_logger.py +7 -2
  19. {codevira-1.6.1 → codevira-1.7.0/mcp_server/data}/config.example.yaml +5 -2
  20. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/http_server.py +73 -3
  21. codevira-1.7.0/mcp_server/log_retention.py +171 -0
  22. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/paths.py +2 -2
  23. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/server.py +138 -36
  24. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/changesets.py +4 -2
  25. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/code_reader.py +0 -1
  26. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/graph.py +210 -71
  27. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/learning.py +76 -70
  28. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/playbook.py +1 -1
  29. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/roadmap.py +32 -25
  30. codevira-1.7.0/mcp_server/tools/search.py +255 -0
  31. {codevira-1.6.1 → codevira-1.7.0}/pyproject.toml +11 -9
  32. {codevira-1.6.1 → codevira-1.7.0}/tests/test_cli.py +2 -2
  33. {codevira-1.6.1 → codevira-1.7.0}/tests/test_global_db.py +12 -70
  34. {codevira-1.6.1 → codevira-1.7.0}/tests/test_index_codebase.py +2 -2
  35. codevira-1.7.0/tests/test_log_retention.py +249 -0
  36. {codevira-1.6.1 → codevira-1.7.0}/tests/test_migrate.py +6 -3
  37. {codevira-1.6.1 → codevira-1.7.0}/tests/test_outcome_tracker.py +0 -31
  38. {codevira-1.6.1 → codevira-1.7.0}/tests/test_server.py +8 -8
  39. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_changesets.py +2 -2
  40. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_graph.py +55 -41
  41. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_learning.py +20 -28
  42. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_roadmap.py +2 -32
  43. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_search.py +21 -25
  44. codevira-1.6.1/PKG-INFO +0 -477
  45. codevira-1.6.1/README.md +0 -436
  46. codevira-1.6.1/codevira.egg-info/PKG-INFO +0 -477
  47. codevira-1.6.1/mcp_server/__init__.py +0 -1
  48. codevira-1.6.1/mcp_server/tools/search.py +0 -174
  49. {codevira-1.6.1 → codevira-1.7.0}/LICENSE +0 -0
  50. {codevira-1.6.1 → codevira-1.7.0}/MANIFEST.in +0 -0
  51. {codevira-1.6.1 → codevira-1.7.0}/agents/builder.md +0 -0
  52. {codevira-1.6.1 → codevira-1.7.0}/agents/developer.md +0 -0
  53. {codevira-1.6.1 → codevira-1.7.0}/agents/documenter.md +0 -0
  54. {codevira-1.6.1 → codevira-1.7.0}/agents/orchestrator.md +0 -0
  55. {codevira-1.6.1 → codevira-1.7.0}/agents/planner.md +0 -0
  56. {codevira-1.6.1 → codevira-1.7.0}/agents/reviewer.md +0 -0
  57. {codevira-1.6.1 → codevira-1.7.0}/agents/tester.md +0 -0
  58. {codevira-1.6.1 → codevira-1.7.0}/codevira.egg-info/dependency_links.txt +0 -0
  59. {codevira-1.6.1 → codevira-1.7.0}/codevira.egg-info/entry_points.txt +0 -0
  60. {codevira-1.6.1 → codevira-1.7.0}/codevira.egg-info/top_level.txt +0 -0
  61. {codevira-1.6.1 → codevira-1.7.0}/docs/how-i-built-persistent-memory-for-ai-agents.md +0 -0
  62. {codevira-1.6.1 → codevira-1.7.0}/docs/linkedin-article-ai-agent-memory.md +0 -0
  63. {codevira-1.6.1 → codevira-1.7.0}/docs/linkedin-post-ai-agent-memory.md +0 -0
  64. {codevira-1.6.1 → codevira-1.7.0}/docs/medium-your-ai-coding-agent-has-amnesia.md +0 -0
  65. {codevira-1.6.1 → codevira-1.7.0}/graph/_schema.yaml +0 -0
  66. {codevira-1.6.1 → codevira-1.7.0}/indexer/__init__.py +0 -0
  67. {codevira-1.6.1 → codevira-1.7.0}/indexer/rule_learner.py +0 -0
  68. {codevira-1.6.1 → codevira-1.7.0}/indexer/sqlite_graph.py +0 -0
  69. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/__main__.py +0 -0
  70. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/__init__.py +0 -0
  71. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/builder.md +0 -0
  72. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/developer.md +0 -0
  73. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/documenter.md +0 -0
  74. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/orchestrator.md +0 -0
  75. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/planner.md +0 -0
  76. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/reviewer.md +0 -0
  77. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/agents/tester.md +0 -0
  78. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/coding-standards.md +0 -0
  79. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/engineering-excellence.md +0 -0
  80. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/git-cicd-governance.md +0 -0
  81. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/git_commits.md +0 -0
  82. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/incremental-updates.md +0 -0
  83. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/master_rule.md +0 -0
  84. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/multi-language.md +0 -0
  85. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/persistence.md +0 -0
  86. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/resilience-observability.md +0 -0
  87. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/smoke-testing.md +0 -0
  88. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/data/rules/testing-standards.md +0 -0
  89. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/detect.py +0 -0
  90. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/gitignore.py +0 -0
  91. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/global_sync.py +0 -0
  92. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/ide_inject.py +0 -0
  93. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/launchd.py +0 -0
  94. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/migrate.py +0 -0
  95. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/prompts.py +0 -0
  96. {codevira-1.6.1 → codevira-1.7.0}/mcp_server/tools/__init__.py +0 -0
  97. {codevira-1.6.1 → codevira-1.7.0}/rules/coding-standards.md +0 -0
  98. {codevira-1.6.1 → codevira-1.7.0}/rules/engineering-excellence.md +0 -0
  99. {codevira-1.6.1 → codevira-1.7.0}/rules/git-cicd-governance.md +0 -0
  100. {codevira-1.6.1 → codevira-1.7.0}/rules/git_commits.md +0 -0
  101. {codevira-1.6.1 → codevira-1.7.0}/rules/incremental-updates.md +0 -0
  102. {codevira-1.6.1 → codevira-1.7.0}/rules/master_rule.md +0 -0
  103. {codevira-1.6.1 → codevira-1.7.0}/rules/persistence.md +0 -0
  104. {codevira-1.6.1 → codevira-1.7.0}/rules/resilience-observability.md +0 -0
  105. {codevira-1.6.1 → codevira-1.7.0}/rules/smoke-testing.md +0 -0
  106. {codevira-1.6.1 → codevira-1.7.0}/rules/testing-standards.md +0 -0
  107. {codevira-1.6.1 → codevira-1.7.0}/setup.cfg +0 -0
  108. {codevira-1.6.1 → codevira-1.7.0}/tests/test_auto_init.py +0 -0
  109. {codevira-1.6.1 → codevira-1.7.0}/tests/test_chunker.py +0 -0
  110. {codevira-1.6.1 → codevira-1.7.0}/tests/test_crash_logger.py +0 -0
  111. {codevira-1.6.1 → codevira-1.7.0}/tests/test_detect.py +0 -0
  112. {codevira-1.6.1 → codevira-1.7.0}/tests/test_gitignore.py +0 -0
  113. {codevira-1.6.1 → codevira-1.7.0}/tests/test_global_sync.py +0 -0
  114. {codevira-1.6.1 → codevira-1.7.0}/tests/test_graph_generator.py +0 -0
  115. {codevira-1.6.1 → codevira-1.7.0}/tests/test_http_server.py +0 -0
  116. {codevira-1.6.1 → codevira-1.7.0}/tests/test_ide_inject.py +0 -0
  117. {codevira-1.6.1 → codevira-1.7.0}/tests/test_launchd.py +0 -0
  118. {codevira-1.6.1 → codevira-1.7.0}/tests/test_paths.py +0 -0
  119. {codevira-1.6.1 → codevira-1.7.0}/tests/test_prompts.py +0 -0
  120. {codevira-1.6.1 → codevira-1.7.0}/tests/test_rule_learner.py +0 -0
  121. {codevira-1.6.1 → codevira-1.7.0}/tests/test_sqlite_graph.py +0 -0
  122. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_code_reader.py +0 -0
  123. {codevira-1.6.1 → codevira-1.7.0}/tests/test_tools_playbook.py +0 -0
  124. {codevira-1.6.1 → codevira-1.7.0}/tests/test_treesitter_parser.py +0 -0
@@ -13,6 +13,151 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
13
13
 
14
14
  ---
15
15
 
16
+ ## [1.7.0] — 2026-04-18 — Token Efficiency & AI-First Tool Design
17
+
18
+ **The biggest release since v1.0.** We realized Codevira was dumping 15k-60k
19
+ tokens per session into AI agent context windows — defeating the entire
20
+ "92% token reduction" value prop. This release redesigns tool responses
21
+ around what agents actually need, not what the database can return.
22
+
23
+ ### Changed — Dependency model
24
+ - **`chromadb` + `sentence-transformers` now required** (was `[search]` extra).
25
+ `pip install codevira` installs all 36 MCP tools out of the box.
26
+ Trade-off: ~500MB install (ML runtime) vs. ~50MB. Eliminates the
27
+ "why doesn't semantic search work?" confusion.
28
+ - **`[search]` extra kept as no-op alias** for backwards compatibility.
29
+
30
+ ### Changed — Token-efficient tool responses (the big one)
31
+
32
+ Every high-traffic tool now returns a **summary by default**, with opt-in
33
+ full data. On a 500-node project, a single agent session went from ~60k
34
+ tokens to ~5k.
35
+
36
+ - **`get_session_context`**: Compacted ~4k → ~800 tokens. Dropped
37
+ `global_intelligence`/`indexing_progress` (admin data, not session data).
38
+ Truncated decision/summary text. Nested `current_phase` at top level.
39
+ - **`get_node(path)`**: Default returns counts (`rules_count`,
40
+ `dependencies_count`) + flags. Pass `full=True` for the full arrays.
41
+ Typical response: ~100 tokens (was 500-3000).
42
+ - **`get_impact(path)`**: Default returns 10 affected files + protected/
43
+ high-stability counts. Pass `summary_only=True` for just counts
44
+ (~80 tokens — perfect for gate checks before modifying).
45
+ - **`search_codebase(query)`**: Default returns file/symbol pointers only.
46
+ Pass `include_content=True` to inline chunk source (500-3000 tokens per
47
+ match). `limit` capped at 20.
48
+ - **`search_decisions(query)`**: Default limit 5 (was 10), context truncated
49
+ to 150 chars. Pass `full=True` for untruncated text. `limit` capped at 20.
50
+ - **`get_history(file)`**: Default limit 5 (was 20), text truncated.
51
+ Pass `full=True` for untruncated. `limit` capped at 50.
52
+ - **`get_full_roadmap`**: Completed phases summarized (number + name + date
53
+ + decision_count) instead of inlining all `key_decisions`. Pass
54
+ `include_decisions=true` for the old behavior.
55
+ - **`list_nodes`**: Paginated (50 per page, max 500) with `offset` support.
56
+ Response includes total count + per-layer distribution.
57
+
58
+ ### Changed — AI-facing MCP tool surface trimmed to 23 tools (was 36)
59
+
60
+ 12 tools moved to admin-only — they still work via `call_tool` dispatch
61
+ but are **hidden from `list_tools()`**. AI agents only see tools they
62
+ should use. The hidden tools are either:
63
+ - Dashboard/reporting (human workflows): `get_full_roadmap`,
64
+ `get_project_maturity`, `find_hotspots`, `analyze_changes`, `get_graph_diff`
65
+ - Bulk discovery (replaced by targeted queries): `list_nodes`, `add_node`
66
+ - Background automation (self-managed): `refresh_graph`, `refresh_index`
67
+ - Redundant with session_context: `get_preferences`, `get_learned_rules`
68
+ - Dumps too many tokens: `export_graph` (can be 50k tokens)
69
+
70
+ Admins can still call these via CLI. Prompts like `architecture_overview`
71
+ still reference them server-side.
72
+
73
+ ### Added
74
+ - **Non-blocking `refresh_index`**: Returns in <100ms with
75
+ `{"status": "Refresh started in background"}`. Heavy work (graph regen +
76
+ semantic embedding) runs in a daemon thread. Previously, this hung AI
77
+ agents for minutes on 500+ file projects.
78
+ - **`codevira clean` command**: One-shot removal of all Codevira data, IDE
79
+ configs, and services. `--all`, `--dry-run`, `-y` supported.
80
+ - **Google Antigravity global mode**: `codevira register` now includes
81
+ Antigravity with a single global entry (was missing + wrong config path).
82
+ - **Browser-friendly landing page**: `GET /` on HTTP server returns helpful
83
+ HTML with setup instructions for browsers. API clients still get JSON.
84
+
85
+ ### Fixed
86
+ - **`refresh_graph` ignored its `file_paths` parameter** — dead code that
87
+ always regenerated the entire graph. Cleaned up.
88
+ - **`generate_graph_sqlite` crashed on macOS system paths**: Now skips
89
+ `Library`, `System`, `Applications`, `node_modules`, `.venv`, etc.,
90
+ and catches `OSError`/`ValueError` per-entry so one bad symlink doesn't
91
+ abort indexing.
92
+ - **Crash log test isolation**: `crash_logger._get_log_dir()` now uses
93
+ `get_global_home()`. Tests no longer pollute the real user's crash log.
94
+ - **`_get_embedding_fn` ValueError not caught**: When chromadb is installed
95
+ but sentence-transformers isn't, chromadb raises `ValueError`. Now caught.
96
+ - **Playbook `add_route` → `add_tool`**: The valid task type was renamed
97
+ in code but the description still said `add_route`. Fixed.
98
+ - **Antigravity config path**: Was wrong (`~/.gemini/settings/`). Now uses
99
+ the correct `~/.gemini/antigravity/mcp_config.json`.
100
+
101
+ ### Added — Post-release enhancements (merged into 1.7.0)
102
+
103
+ - **`codevira status` is now fast** (~200ms for uninitialized projects,
104
+ ~1s for initialized). Was ~5-6s because it was loading the ~90MB
105
+ sentence-transformers embedding model just to count chunks. Now uses
106
+ `collection.count()` which doesn't need the embedding function, and
107
+ short-circuits entirely when there's no graph DB yet.
108
+ - **`codevira status --global`** flag shows launchd service state +
109
+ cross-project memory stats in a dedicated panel. Works on both
110
+ initialized and uninitialized projects.
111
+ - **`codevira status --check-stale`** flag opt-in for the slow SHA256
112
+ file-walk (was always-on, made status take 5s+).
113
+ - **`codevira clean --legacy`** — remove `.codevira.migrated/` backup
114
+ directories accumulating across all initialized projects. Shows size
115
+ and confirms before deletion.
116
+ - **`logs.retention_days` actually works now** (was dead config in earlier
117
+ versions). Opt-in only — default 0 keeps sessions/decisions forever.
118
+ Set > 0 for privacy-driven time-bounded history. Runs at most once
119
+ per 24h at server startup.
120
+ - **HTTP/HTTPS transport marked as PREVIEW** (single-project only). The
121
+ server binds to one project at startup and cannot switch contexts per
122
+ request. Multi-project HTTPS routing via MCP `initialize` `rootUri` is
123
+ the top v1.8 priority. `codevira serve` prints a preview warning on
124
+ startup. README / FAQ / PROTOCOL updated to position stdio as the
125
+ clear recommendation for multi-project work.
126
+ - **Dead-code audit** — removed 4 unused functions (`find_project_by_remote`
127
+ in global_db, `get_file_outcome_summary`, `add_open_changeset`,
128
+ `remove_open_changeset`), renamed `get_changeset` → `_get_changeset`
129
+ (was module-private usage only). Wired up 3 unused-but-useful functions
130
+ (`launchd_status`, `cleanup_legacy_dir`, `get_global_stats`) into the
131
+ CLI where they belong.
132
+ - **Open-source readiness pass** — removed stray test-playground files
133
+ from git, fixed PR template typo (`mcp-server` → `mcp_server`), replaced
134
+ hardcoded author username in docstring examples (`/Users/sachin/...`
135
+ → `/Users/alice/...`), added `__all__` + `__version__` to
136
+ `mcp_server/__init__.py`, removed duplicate `requirements.txt`.
137
+
138
+ ### Tests
139
+ - 1,306 tests passing (added 15 new tests for `log_retention.py`)
140
+
141
+ ---
142
+
143
+ ## [1.6.2] — 2026-04-16 — Crash Log Isolation & Browser UX
144
+
145
+ ### Fixed
146
+ - **Crash log test isolation**: `crash_logger._get_log_dir()` now uses
147
+ `get_global_home()` instead of hardcoding `~/.codevira/logs/`. Tests
148
+ no longer pollute the real user's crash log with pytest mock tracebacks.
149
+ - **`_get_embedding_fn` ValueError not caught**: When chromadb is installed
150
+ but sentence-transformers isn't, chromadb wraps the ImportError as a
151
+ ValueError. `_get_embedding_fn` now catches both and re-raises as
152
+ ImportError for consistent handling by callers.
153
+
154
+ ### Added
155
+ - **Browser-friendly landing page**: `GET /` on the HTTP server now returns
156
+ a helpful HTML page for browsers (with setup instructions) instead of
157
+ just JSON. API clients with `Accept: application/json` still get JSON.
158
+
159
+ ---
160
+
16
161
  ## [1.6.1] — 2026-04-16 — Stability, Graceful Degradation & Cleanup
17
162
 
18
163
  ### Added