codevira 1.6.0__py3-none-any.whl
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-1.6.0.dist-info/LICENSE +21 -0
- codevira-1.6.0.dist-info/METADATA +477 -0
- codevira-1.6.0.dist-info/RECORD +58 -0
- codevira-1.6.0.dist-info/WHEEL +5 -0
- codevira-1.6.0.dist-info/entry_points.txt +2 -0
- codevira-1.6.0.dist-info/top_level.txt +2 -0
- indexer/__init__.py +1 -0
- indexer/chunker.py +428 -0
- indexer/global_db.py +197 -0
- indexer/graph_generator.py +380 -0
- indexer/index_codebase.py +588 -0
- indexer/outcome_tracker.py +172 -0
- indexer/rule_learner.py +186 -0
- indexer/sqlite_graph.py +640 -0
- indexer/treesitter_parser.py +423 -0
- mcp_server/__init__.py +1 -0
- mcp_server/__main__.py +20 -0
- mcp_server/auto_init.py +257 -0
- mcp_server/cli.py +622 -0
- mcp_server/crash_logger.py +236 -0
- mcp_server/data/__init__.py +1 -0
- mcp_server/data/agents/builder.md +84 -0
- mcp_server/data/agents/developer.md +111 -0
- mcp_server/data/agents/documenter.md +138 -0
- mcp_server/data/agents/orchestrator.md +96 -0
- mcp_server/data/agents/planner.md +106 -0
- mcp_server/data/agents/reviewer.md +82 -0
- mcp_server/data/agents/tester.md +83 -0
- mcp_server/data/config.example.yaml +33 -0
- mcp_server/data/rules/coding-standards.md +48 -0
- mcp_server/data/rules/engineering-excellence.md +28 -0
- mcp_server/data/rules/git-cicd-governance.md +32 -0
- mcp_server/data/rules/git_commits.md +130 -0
- mcp_server/data/rules/incremental-updates.md +5 -0
- mcp_server/data/rules/master_rule.md +187 -0
- mcp_server/data/rules/multi-language.md +19 -0
- mcp_server/data/rules/persistence.md +21 -0
- mcp_server/data/rules/resilience-observability.md +17 -0
- mcp_server/data/rules/smoke-testing.md +48 -0
- mcp_server/data/rules/testing-standards.md +23 -0
- mcp_server/detect.py +284 -0
- mcp_server/gitignore.py +284 -0
- mcp_server/global_sync.py +187 -0
- mcp_server/http_server.py +341 -0
- mcp_server/ide_inject.py +444 -0
- mcp_server/launchd.py +156 -0
- mcp_server/migrate.py +215 -0
- mcp_server/paths.py +256 -0
- mcp_server/prompts.py +136 -0
- mcp_server/server.py +1049 -0
- mcp_server/tools/__init__.py +0 -0
- mcp_server/tools/changesets.py +223 -0
- mcp_server/tools/code_reader.py +335 -0
- mcp_server/tools/graph.py +637 -0
- mcp_server/tools/learning.py +238 -0
- mcp_server/tools/playbook.py +89 -0
- mcp_server/tools/roadmap.py +599 -0
- mcp_server/tools/search.py +145 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Sachin Shelke <sachin.worldnet@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: codevira
|
|
3
|
+
Version: 1.6.0
|
|
4
|
+
Summary: Persistent adaptive memory for AI coding agents — MCP server with context graph, semantic search, adaptive learning, roadmap tracking, and cross-tool continuity.
|
|
5
|
+
Author-email: Sachin Shelke <sachin.worldnet@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/sachinshelke/codevira
|
|
8
|
+
Project-URL: Repository, https://github.com/sachinshelke/codevira
|
|
9
|
+
Project-URL: Issues, https://github.com/sachinshelke/codevira/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/sachinshelke/codevira/blob/main/CHANGELOG.md
|
|
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
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: pyyaml>=6.0
|
|
27
|
+
Requires-Dist: mcp>=1.0.0
|
|
28
|
+
Requires-Dist: watchdog>=3.0.0
|
|
29
|
+
Requires-Dist: tree-sitter>=0.23.0
|
|
30
|
+
Requires-Dist: tree-sitter-language-pack<1.0.0,>=0.13.0
|
|
31
|
+
Requires-Dist: rich>=13.0.0
|
|
32
|
+
Requires-Dist: uvicorn>=0.27.0
|
|
33
|
+
Requires-Dist: starlette>=0.36.0
|
|
34
|
+
Requires-Dist: pathspec>=0.12.0
|
|
35
|
+
Provides-Extra: search
|
|
36
|
+
Requires-Dist: chromadb>=0.5.0; extra == "search"
|
|
37
|
+
Requires-Dist: sentence-transformers>=2.7.0; extra == "search"
|
|
38
|
+
Provides-Extra: all
|
|
39
|
+
Requires-Dist: chromadb>=0.5.0; extra == "all"
|
|
40
|
+
Requires-Dist: sentence-transformers>=2.7.0; extra == "all"
|
|
41
|
+
|
|
42
|
+
# Codevira MCP
|
|
43
|
+
|
|
44
|
+
> Persistent adaptive memory for AI coding agents — learns from every session, works with every tool, remembers across every project.
|
|
45
|
+
|
|
46
|
+
[](https://www.python.org/)
|
|
47
|
+
[](LICENSE)
|
|
48
|
+
[](https://modelcontextprotocol.io)
|
|
49
|
+
[](CHANGELOG.md)
|
|
50
|
+
[](CONTRIBUTING.md)
|
|
51
|
+
|
|
52
|
+
**Works with:** Claude Code · Claude Desktop · Cursor · Windsurf · Google Antigravity · any MCP-compatible AI tool
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## The Problem
|
|
57
|
+
|
|
58
|
+
Every time you start a new AI coding session, your agent starts from zero.
|
|
59
|
+
|
|
60
|
+
It re-reads files it has seen before. It re-discovers patterns already established. It makes decisions that contradict last week's decisions. It has no idea what phase the project is in, what's already been tried, or why certain files are off-limits.
|
|
61
|
+
|
|
62
|
+
You end up spending thousands of tokens on re-discovery — every single session.
|
|
63
|
+
|
|
64
|
+
**Codevira fixes this.**
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## What It Does
|
|
69
|
+
|
|
70
|
+
Codevira is a [Model Context Protocol](https://modelcontextprotocol.io) server that gives every AI agent working on your codebase a shared, persistent memory:
|
|
71
|
+
|
|
72
|
+
| Capability | What It Means |
|
|
73
|
+
|---|---|
|
|
74
|
+
| **Zero-config setup** | Auto-detects language, source dirs, and file extensions; auto-injects IDE config — no prompts, no manual JSON editing |
|
|
75
|
+
| **Live auto-watch** | Background file watcher auto-reindexes on every save — no manual trigger needed |
|
|
76
|
+
| **Context graph** | Every source file has a node: role, rules, dependencies, stability, `do_not_revert` flags |
|
|
77
|
+
| **Function-level call graph** | Knows which function calls which — callers, callees, test coverage, risk scoring |
|
|
78
|
+
| **Semantic code search** | Natural language search across your codebase (optional — requires `[search]` extras) |
|
|
79
|
+
| **Roadmap** | Phase-based tracker so agents always know what phase you're in and what comes next |
|
|
80
|
+
| **Changeset tracking** | Multi-file changes tracked atomically; sessions resume cleanly after interruption |
|
|
81
|
+
| **Decision log** | Every session writes a structured log; past decisions are searchable by any future agent |
|
|
82
|
+
| **Adaptive learning** | Outcome tracking, confidence scoring, developer preference learning, and automatic rule inference |
|
|
83
|
+
| **Cross-project memory** | Learned preferences and rules sync across all your projects via `~/.codevira/global.db` |
|
|
84
|
+
| **Cross-tool continuity** | Single "catch me up" call for seamless switching between Cursor, Claude Code, Windsurf, and Antigravity |
|
|
85
|
+
|
|
86
|
+
**The result:** ~1,400 tokens of overhead per session instead of 15,000+ tokens of re-discovery.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Quick Start
|
|
91
|
+
|
|
92
|
+
### 1. Install
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Recommended: global install via pipx (isolated, works everywhere)
|
|
96
|
+
pipx install codevira
|
|
97
|
+
|
|
98
|
+
# Alternative: pip install
|
|
99
|
+
pip install codevira
|
|
100
|
+
|
|
101
|
+
# With semantic search support (adds ChromaDB + sentence-transformers)
|
|
102
|
+
pip install 'codevira[search]'
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2. Register with your AI tools
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
cd your-project
|
|
109
|
+
codevira register
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
This single command — with zero prompts:
|
|
113
|
+
- Auto-detects language, source directories, and file extensions from project markers
|
|
114
|
+
- **Auto-injects MCP config** into Claude Code, Cursor, Windsurf, and Google Antigravity
|
|
115
|
+
- Installs a `post-commit` git hook for automatic reindexing
|
|
116
|
+
|
|
117
|
+
No explicit `codevira init` needed — the project is automatically initialized on the first MCP tool call (auto-init creates config, graph database, index, and roadmap on demand).
|
|
118
|
+
|
|
119
|
+
> **Note:** `codevira init` is still available if you prefer to initialize upfront, but it is no longer a required step.
|
|
120
|
+
|
|
121
|
+
### 3. Verify
|
|
122
|
+
|
|
123
|
+
Ask your AI agent to call `get_roadmap()` — it should return your current phase and next action.
|
|
124
|
+
|
|
125
|
+
> **Note:** After `codevira init`, restart your AI tool to pick up the new MCP server config.
|
|
126
|
+
|
|
127
|
+
### Manual config (only if auto-inject didn't detect your tool)
|
|
128
|
+
|
|
129
|
+
Codevira supports two transports. Use the right one for your client:
|
|
130
|
+
|
|
131
|
+
| Client | Transport | Config file |
|
|
132
|
+
|--------|-----------|-------------|
|
|
133
|
+
| Claude Desktop (app) | stdio | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
134
|
+
| Claude Code (CLI) | stdio or HTTP | `.claude/settings.json` |
|
|
135
|
+
| Cursor | stdio | `.cursor/mcp.json` |
|
|
136
|
+
| Windsurf | stdio | `.windsurf/mcp.json` |
|
|
137
|
+
| Google Antigravity | stdio | `~/.gemini/settings/mcp_config.json` |
|
|
138
|
+
|
|
139
|
+
**Stdio transport** — Claude Desktop, Cursor, Windsurf (`.claude/settings.json` / `.cursor/mcp.json` / `.windsurf/mcp.json`):
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"codevira": {
|
|
144
|
+
"command": "codevira",
|
|
145
|
+
"args": [],
|
|
146
|
+
"cwd": "/path/to/your-project"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"mcpServers": {
|
|
156
|
+
"codevira": {
|
|
157
|
+
"command": "/path/to/codevira",
|
|
158
|
+
"args": ["--project-dir", "/path/to/your-project"]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
> Tip: find the full binary path with `which codevira`
|
|
165
|
+
|
|
166
|
+
**HTTP transport** — Claude Code CLI via `codevira serve` (`.claude/settings.json`):
|
|
167
|
+
|
|
168
|
+
First start the HTTP server in a terminal:
|
|
169
|
+
```bash
|
|
170
|
+
codevira serve --port 7007 --project-dir /path/to/your-project
|
|
171
|
+
# For HTTPS (required by some clients):
|
|
172
|
+
codevira serve --https --port 7443 --project-dir /path/to/your-project
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Then register the URL:
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"mcpServers": {
|
|
179
|
+
"codevira": {
|
|
180
|
+
"url": "https://localhost:7443/mcp"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
> **HTTPS note:** Claude Code uses Node.js, which requires a trusted CA for HTTPS.
|
|
187
|
+
> Run once to trust the mkcert CA:
|
|
188
|
+
> ```bash
|
|
189
|
+
> brew install mkcert && mkcert -install
|
|
190
|
+
> launchctl setenv NODE_EXTRA_CA_CERTS "$(mkcert -CAROOT)/rootCA.pem"
|
|
191
|
+
> echo 'export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"' >> ~/.zshrc
|
|
192
|
+
> ```
|
|
193
|
+
> Then restart Claude Code.
|
|
194
|
+
|
|
195
|
+
**Auto-start on login (macOS):**
|
|
196
|
+
```bash
|
|
197
|
+
codevira serve --install-service # start server automatically on login
|
|
198
|
+
codevira serve --uninstall-service # remove auto-start
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Google Antigravity** (`~/.gemini/settings/mcp_config.json`):
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"mcpServers": {
|
|
205
|
+
"codevira-yourproject": {
|
|
206
|
+
"$typeName": "exa.cascade_plugins_pb.CascadePluginCommandTemplate",
|
|
207
|
+
"command": "codevira",
|
|
208
|
+
"args": ["--project-dir", "/path/to/your-project"]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Codevira data layout (v1.6)
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
~/.codevira/ <- global Codevira home
|
|
218
|
+
├── global.db <- cross-project intelligence
|
|
219
|
+
├── projects/
|
|
220
|
+
│ └── <project-key>/ <- per-project data (keyed by path)
|
|
221
|
+
│ ├── config.yaml
|
|
222
|
+
│ ├── metadata.json
|
|
223
|
+
│ ├── graph/
|
|
224
|
+
│ │ ├── graph.db
|
|
225
|
+
│ │ └── changesets/
|
|
226
|
+
│ ├── codeindex/ <- semantic search (optional)
|
|
227
|
+
│ └── logs/
|
|
228
|
+
└── certs/ <- HTTPS certs (if using --https)
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
> Legacy `.codevira/` directories inside project repos are auto-migrated to centralized storage on first server start.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## How It Works
|
|
236
|
+
|
|
237
|
+
### Agent Session Lifecycle
|
|
238
|
+
|
|
239
|
+
```mermaid
|
|
240
|
+
flowchart TB
|
|
241
|
+
|
|
242
|
+
Start([Start Session])
|
|
243
|
+
|
|
244
|
+
subgraph Orientation
|
|
245
|
+
A[Check Open Changesets]
|
|
246
|
+
B[Get Project Roadmap]
|
|
247
|
+
C[Search Past Decisions]
|
|
248
|
+
D[Load Graph Context\nget_node - get_impact]
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
subgraph Execution
|
|
252
|
+
E[Plan Task]
|
|
253
|
+
F[Implement Code]
|
|
254
|
+
G[Run Tests / Validation]
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
subgraph Completion
|
|
258
|
+
H[Update Graph Metadata]
|
|
259
|
+
I[Write Session Log]
|
|
260
|
+
J[Complete Changeset]
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
Start --> A
|
|
264
|
+
A --> B
|
|
265
|
+
B --> C
|
|
266
|
+
C --> D
|
|
267
|
+
D --> E
|
|
268
|
+
E --> F
|
|
269
|
+
F --> G
|
|
270
|
+
G --> H
|
|
271
|
+
H --> I
|
|
272
|
+
I --> J
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Code Intelligence Model
|
|
276
|
+
|
|
277
|
+
```mermaid
|
|
278
|
+
flowchart TB
|
|
279
|
+
|
|
280
|
+
A[Source Code]
|
|
281
|
+
|
|
282
|
+
subgraph Structural Analysis
|
|
283
|
+
B[Tree-sitter AST Parser]
|
|
284
|
+
C[Function / Class Extraction]
|
|
285
|
+
D[Dependency + Call Graph Analysis]
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
subgraph Knowledge Stores
|
|
289
|
+
E[(Semantic Index\nChromaDB — optional)]
|
|
290
|
+
F[(Context Graph + Call Graph\nSQLite DB)]
|
|
291
|
+
G[(Global Memory\n~/.codevira/global.db)]
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
subgraph Runtime Access
|
|
295
|
+
H[MCP Query Layer\n36 tools + 5 prompts]
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
I[AI Coding Agent\nClaude Code - Cursor - Windsurf - Antigravity]
|
|
299
|
+
|
|
300
|
+
A --> B
|
|
301
|
+
B --> C
|
|
302
|
+
C --> E
|
|
303
|
+
|
|
304
|
+
B --> D
|
|
305
|
+
D --> F
|
|
306
|
+
|
|
307
|
+
F --> H
|
|
308
|
+
E --> H
|
|
309
|
+
G --> H
|
|
310
|
+
|
|
311
|
+
H --> I
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Session Protocol
|
|
317
|
+
|
|
318
|
+
Every agent session follows a simple protocol. Set it up once in your agent's system prompt — then your agents handle the rest.
|
|
319
|
+
|
|
320
|
+
**Session start (mandatory):**
|
|
321
|
+
```
|
|
322
|
+
list_open_changesets() -> resume any unfinished work first
|
|
323
|
+
get_roadmap() -> current phase, next action
|
|
324
|
+
search_decisions("topic") -> check what's already been decided
|
|
325
|
+
get_node("src/service.py") -> read rules before touching a file
|
|
326
|
+
get_impact("src/service.py") -> check blast radius
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**Session end (mandatory):**
|
|
330
|
+
```
|
|
331
|
+
complete_changeset(id, decisions=[...])
|
|
332
|
+
update_node(file_path, changes)
|
|
333
|
+
update_next_action("what the next agent should do")
|
|
334
|
+
write_session_log(...)
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
This loop keeps every session fast, focused, and resumable.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## 36 MCP Tools + 5 Prompts
|
|
342
|
+
|
|
343
|
+
### Graph Tools
|
|
344
|
+
| Tool | Description |
|
|
345
|
+
|---|---|
|
|
346
|
+
| `get_node(file_path)` | Metadata, rules, connections, staleness for any file |
|
|
347
|
+
| `get_impact(file_path)` | BFS blast-radius — which files depend on this one |
|
|
348
|
+
| `list_nodes(layer?, stability?, do_not_revert?)` | Query nodes by attribute |
|
|
349
|
+
| `add_node(file_path, role, type, ...)` | Register a new file in the graph |
|
|
350
|
+
| `update_node(file_path, changes)` | Append rules, connections, key_functions |
|
|
351
|
+
| `refresh_graph(file_paths?)` | Auto-generate stubs for unregistered files |
|
|
352
|
+
| `refresh_index(file_paths?)` | Re-embed specific files in the search index |
|
|
353
|
+
| `export_graph(format, scope?)` | Export dependency graph as Mermaid or DOT diagram |
|
|
354
|
+
| `get_graph_diff(base_ref?, head_ref?)` | Show changed nodes, stability flags, and blast radius between git refs |
|
|
355
|
+
|
|
356
|
+
### Deep Graph Tools (v1.5)
|
|
357
|
+
| Tool | Description |
|
|
358
|
+
|---|---|
|
|
359
|
+
| `query_graph(file_path, symbol?, query_type)` | Function-level: callers, callees, tests, dependents, symbols |
|
|
360
|
+
| `analyze_changes(base_ref?, head_ref?)` | Function-level risk scoring with test coverage gaps |
|
|
361
|
+
| `find_hotspots(threshold?)` | Large functions, high fan-in, high fan-out — complexity heatmap |
|
|
362
|
+
|
|
363
|
+
### Roadmap Tools
|
|
364
|
+
| Tool | Description |
|
|
365
|
+
|---|---|
|
|
366
|
+
| `get_roadmap()` | Current phase, next action, open changesets |
|
|
367
|
+
| `get_full_roadmap()` | Complete history: all phases, decisions, deferred |
|
|
368
|
+
| `get_phase(number)` | Full details of any phase by number |
|
|
369
|
+
| `update_next_action(text)` | Set what the next agent should do |
|
|
370
|
+
| `update_phase_status(status)` | Mark phase in_progress / blocked |
|
|
371
|
+
| `add_phase(phase, name, description, ...)` | Queue new upcoming work |
|
|
372
|
+
| `complete_phase(number, key_decisions)` | Mark done, auto-advance to next |
|
|
373
|
+
| `defer_phase(number, reason)` | Move a phase to the deferred list |
|
|
374
|
+
|
|
375
|
+
### Changeset Tools
|
|
376
|
+
| Tool | Description |
|
|
377
|
+
|---|---|
|
|
378
|
+
| `list_open_changesets()` | All in-progress changesets |
|
|
379
|
+
| `start_changeset(id, description, files)` | Open a multi-file changeset |
|
|
380
|
+
| `complete_changeset(id, decisions)` | Close and record decisions |
|
|
381
|
+
| `update_changeset_progress(id, last_file, blocker?)` | Mid-session checkpoint |
|
|
382
|
+
|
|
383
|
+
### Search Tools
|
|
384
|
+
| Tool | Description |
|
|
385
|
+
|---|---|
|
|
386
|
+
| `search_codebase(query, limit?)` | Semantic search over source code (requires `[search]` extras) |
|
|
387
|
+
| `search_decisions(query, limit?, session_id?)` | Search all past session decisions |
|
|
388
|
+
| `get_history(file_path)` | All sessions that touched a file |
|
|
389
|
+
| `write_session_log(...)` | Write structured session record |
|
|
390
|
+
|
|
391
|
+
### Adaptive Learning Tools
|
|
392
|
+
| Tool | Description |
|
|
393
|
+
|---|---|
|
|
394
|
+
| `get_decision_confidence(file_path?, pattern?)` | Outcome-based reliability scores |
|
|
395
|
+
| `get_preferences(category?)` | Learned developer style preferences |
|
|
396
|
+
| `get_learned_rules(file_path?, category?)` | Auto-generated rules from observed patterns |
|
|
397
|
+
| `get_project_maturity()` | 0-100 intelligence score |
|
|
398
|
+
| `get_session_context()` | Single "catch me up" call for cross-tool continuity |
|
|
399
|
+
|
|
400
|
+
### Code Reader Tools
|
|
401
|
+
| Tool | Description |
|
|
402
|
+
|---|---|
|
|
403
|
+
| `get_signature(file_path)` | All public symbols, signatures, line numbers (Python, TypeScript, Go, Rust) |
|
|
404
|
+
| `get_code(file_path, symbol)` | Full source of one function or class |
|
|
405
|
+
|
|
406
|
+
### Playbook Tool
|
|
407
|
+
| Tool | Description |
|
|
408
|
+
|---|---|
|
|
409
|
+
| `get_playbook(task_type)` | Curated rules for: `add_route`, `add_service`, `add_schema`, `debug_pipeline`, `commit`, `write_test` |
|
|
410
|
+
|
|
411
|
+
### MCP Workflow Prompts (v1.5)
|
|
412
|
+
| Prompt | Description |
|
|
413
|
+
|---|---|
|
|
414
|
+
| `review_changes` | Staged diff + blast radius + risk score |
|
|
415
|
+
| `debug_issue` | Symptom -> affected files -> call chain -> hypothesis |
|
|
416
|
+
| `onboard_session` | Full project context catch-up for new sessions |
|
|
417
|
+
| `pre_commit_check` | Test coverage gaps + high-risk functions before commit |
|
|
418
|
+
| `architecture_overview` | Module map + hotspots + dependency summary |
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Language Support
|
|
423
|
+
|
|
424
|
+
| Feature | Python | TypeScript | Go | Rust | 12+ Others |
|
|
425
|
+
|---|---|---|---|---|---|
|
|
426
|
+
| Context graph + blast radius | Y | Y | Y | Y | Y |
|
|
427
|
+
| Semantic code search | Y | Y | Y | Y | Y |
|
|
428
|
+
| Function-level call graph | Y | Y | Y | Y | |
|
|
429
|
+
| `get_signature` / `get_code` | Y | Y | Y | Y | |
|
|
430
|
+
| AST-based chunking | Y | Y | Y | Y | |
|
|
431
|
+
| Auto-generated graph stubs | Y | Y | Y | Y | |
|
|
432
|
+
| Roadmap + changesets | Y | Y | Y | Y | Y |
|
|
433
|
+
| Session logs + decision search | Y | Y | Y | Y | Y |
|
|
434
|
+
|
|
435
|
+
Supported languages: Python, TypeScript, JavaScript, Go, Rust, Java, Kotlin, C#, Ruby, PHP, C, C++, Swift, Solidity, Vue.
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Requirements
|
|
440
|
+
|
|
441
|
+
- **Python 3.10+**
|
|
442
|
+
|
|
443
|
+
Base install (`pip install codevira`): includes everything except semantic search. All 36 MCP tools work — graph, roadmap, changesets, code reader, learning, call graph.
|
|
444
|
+
|
|
445
|
+
With semantic search (`pip install 'codevira[search]'`): adds ChromaDB + sentence-transformers for `search_codebase()`. Downloads a ~90MB embedding model on first use.
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
## Background
|
|
450
|
+
|
|
451
|
+
Want to understand the full story behind why this was built, the design decisions, what didn't work, and how it compares to other tools in the ecosystem?
|
|
452
|
+
|
|
453
|
+
Read the full write-up: [How We Cut AI Coding Agent Token Usage by 92%](docs/how-i-built-persistent-memory-for-ai-agents.md)
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## Contributing
|
|
458
|
+
|
|
459
|
+
Contributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide.
|
|
460
|
+
|
|
461
|
+
**Reporting a bug?** [Open a bug report](https://github.com/sachinshelke/codevira/issues/new?template=bug_report.md)
|
|
462
|
+
**Requesting a feature?** [Open a feature request](https://github.com/sachinshelke/codevira/issues/new?template=feature_request.md)
|
|
463
|
+
**Found a security issue?** Read [SECURITY.md](SECURITY.md) — please don't use public issues for vulnerabilities.
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## FAQ
|
|
468
|
+
|
|
469
|
+
Common questions about setup, usage, architecture, and troubleshooting — see [FAQ.md](FAQ.md).
|
|
470
|
+
|
|
471
|
+
## Roadmap
|
|
472
|
+
|
|
473
|
+
See what's built, what's next, and the long-term vision — see [ROADMAP.md](ROADMAP.md).
|
|
474
|
+
|
|
475
|
+
## License
|
|
476
|
+
|
|
477
|
+
MIT — free to use, modify, and distribute.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
indexer/__init__.py,sha256=PZzTE_XpSwyFzh7l682jqK2_5JZfuzMYnMg_5CkC7qA,27
|
|
2
|
+
indexer/chunker.py,sha256=rcrHfU_27t-s5u_ye-m_yrfamZzixUbnnyV3TIGq33w,15062
|
|
3
|
+
indexer/global_db.py,sha256=gAg_zr9u0nBowPK6YcSwe1FXPyt8kFLgPXknLma7hqw,8452
|
|
4
|
+
indexer/graph_generator.py,sha256=bRaeEKjFW6Qm5CP6FLMjRQJblq__u4AaCslzkbwmud0,13522
|
|
5
|
+
indexer/index_codebase.py,sha256=Nkjx6_blNLPZRQ-j6_rMFYThb4k5M41-LKpMOykIfiY,21799
|
|
6
|
+
indexer/outcome_tracker.py,sha256=YmMG9MGjPecJxQ2tmswXaa3xV2Pu8XKf6Wj9Yj5-ekk,6118
|
|
7
|
+
indexer/rule_learner.py,sha256=ay6fDWNKZvLAz8qyorV8aljHIX4wUbtUALSRVZ8JjUw,7256
|
|
8
|
+
indexer/sqlite_graph.py,sha256=RXRazFSRkbp7G00ejVsaEwKFUwuBMekcmRVPOOynuYY,28936
|
|
9
|
+
indexer/treesitter_parser.py,sha256=hU5NZD-7HJXBODD2h_TVJkKh8bagzO9TPi6pb63TqlA,16224
|
|
10
|
+
mcp_server/__init__.py,sha256=jSQ5bH-0VCCifqOOEvAiYFc_GK0ad2vENq8YnuzVQ90,30
|
|
11
|
+
mcp_server/__main__.py,sha256=P0lMnAyDBIyRXh6mb8cuOqTjzTlizJKW22_uP9ErLtw,492
|
|
12
|
+
mcp_server/auto_init.py,sha256=Rk4c7fmRjLDv6RjZMEZwDIbOlfimwFduIFbr0IfeqPg,9953
|
|
13
|
+
mcp_server/cli.py,sha256=GoxXTR2gJG16qjJBtSU2-Tg9Ve8mb9ac9sZEFrKWvUA,23669
|
|
14
|
+
mcp_server/crash_logger.py,sha256=pWDjWIZXVV0MqTsJiKsfwECaMBXm6JrrQhiLTNnq9lA,8473
|
|
15
|
+
mcp_server/detect.py,sha256=alyyPLRQ66lM_OVqcgjzss5yU3DVNlpzJpaekL_v07Y,9373
|
|
16
|
+
mcp_server/gitignore.py,sha256=4V8zbehheFtdzFbT-ckMxi0wP5xP0MMNEMDI5U9wzhY,9483
|
|
17
|
+
mcp_server/global_sync.py,sha256=sw5wHvDNIE8unrg9lk5BPcqwB19Kbfmp7tAizrBAiKA,6590
|
|
18
|
+
mcp_server/http_server.py,sha256=f6FKhkyBlKItQHgnSXInbvkdJMprZfJPfNx_eiVAfig,12053
|
|
19
|
+
mcp_server/ide_inject.py,sha256=EvkWd0rRGRvaBEFJj95nvyTBd_m0cXPHYxzbLvk70hE,17827
|
|
20
|
+
mcp_server/launchd.py,sha256=eb0dh62WTCOdSuV_qQweGs08NXAsiiDvTWUW7LnWYkY,4686
|
|
21
|
+
mcp_server/migrate.py,sha256=ibRR2GgLMT8vOOLoe8jTkjoRRGni4KayWrKD4eNcjyg,7531
|
|
22
|
+
mcp_server/paths.py,sha256=K0cLBIDhZkOSbxAZ0MylKclPlW6dx7mtRWAn7sUMdAI,9806
|
|
23
|
+
mcp_server/prompts.py,sha256=rBn7PWUfRDx7PcCC1JrAC9Xk7dLbXM0Vn8NhoPl7Hyk,6070
|
|
24
|
+
mcp_server/server.py,sha256=sesLt8N93TPedg0IQvdgeDJOjvaotftNAr1RtGNekMU,44168
|
|
25
|
+
mcp_server/data/__init__.py,sha256=gt9uNK2dKtw4v_qI95ywq0ovzZbyrPKwWyeYBtMJ_xY,78
|
|
26
|
+
mcp_server/data/config.example.yaml,sha256=RHz2CqyLMhx83iNGAWLiqcWg8HFd9yVJ4MAMcD5wN2Y,1194
|
|
27
|
+
mcp_server/data/agents/builder.md,sha256=7HDQ4m3jxvwKxAnO7k8HAiT7q5bm4IbviKG5yt4ZdUc,2300
|
|
28
|
+
mcp_server/data/agents/developer.md,sha256=d8zFBo5DyYm6zVXdpy-Ba_czQ2S7xHybVRJ9pjSB-jk,3381
|
|
29
|
+
mcp_server/data/agents/documenter.md,sha256=Bv6SI77hW8Czqnp0dZi81rFp-WeifEv-loMB0k1dvE0,3357
|
|
30
|
+
mcp_server/data/agents/orchestrator.md,sha256=cqdx2RA-qGMNktc4Ci4FZ6Uo3dadvxA1CKj-I2Pa9Yk,3291
|
|
31
|
+
mcp_server/data/agents/planner.md,sha256=o3-64uhR5QVqVA47VSJ3xrSoEEprwUFFEFAFSzxh9js,3027
|
|
32
|
+
mcp_server/data/agents/reviewer.md,sha256=9vKQ2N0_ePg44DYBYl_6kmUcYa3vw3DU5Si2vvl-fXg,2605
|
|
33
|
+
mcp_server/data/agents/tester.md,sha256=FJFKe6mR09iscjVUzuLoWl7tdyyWfPgYXTzaVffNaJ0,2127
|
|
34
|
+
mcp_server/data/rules/coding-standards.md,sha256=BuBaNdWfnAjrzawxtw8yi9kRJ7n8RBssXe7T4SGGCkw,2050
|
|
35
|
+
mcp_server/data/rules/engineering-excellence.md,sha256=SxCzxt8GpAH2LIFkrO0jzn-qHY6DOuLzc59mmyuhDQM,1683
|
|
36
|
+
mcp_server/data/rules/git-cicd-governance.md,sha256=_V7MQNIMjHZBF1wPXhKSNMSeMEklHTiyNj9lI_O33QI,1603
|
|
37
|
+
mcp_server/data/rules/git_commits.md,sha256=Fn8mxrPsxZrpJI6ZCd8RcYTOYXSU0u-nMrd1Y9LWLDs,4268
|
|
38
|
+
mcp_server/data/rules/incremental-updates.md,sha256=2jF2a9yR4dVBKBqyyoAJ0k9oGsj_b9KmYKZWl-5sfdQ,174
|
|
39
|
+
mcp_server/data/rules/master_rule.md,sha256=hFfuV8EM1pBYS1d1dlwJxkP3Y9KPqFen4X6FlmxYYFM,6446
|
|
40
|
+
mcp_server/data/rules/multi-language.md,sha256=vlIiOOJkP5XJkgkji_NVXGCmEqY997JQYdxZR5AZazY,1036
|
|
41
|
+
mcp_server/data/rules/persistence.md,sha256=EHmE-FH1Pc_lhcf9hZRTCk3rctyehqUmaRo0ocDCNsA,1246
|
|
42
|
+
mcp_server/data/rules/resilience-observability.md,sha256=Rur1XG_OozlWMVG9bUJL0AnIujQOPTX1-Cgrrkfla0E,1058
|
|
43
|
+
mcp_server/data/rules/smoke-testing.md,sha256=TpHgxEo29HhVlZfcBF-ku5KxlG4a5GV9cMm8TEFQQlc,2765
|
|
44
|
+
mcp_server/data/rules/testing-standards.md,sha256=IKjvmAZsf2VcNfm5mb1iNdmP14KrgAijQr05MLt_ClY,833
|
|
45
|
+
mcp_server/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
+
mcp_server/tools/changesets.py,sha256=Jh97R1oG3VBjf5-9EDVn5aqVpgegRhg_K85YkB-MDOU,7048
|
|
47
|
+
mcp_server/tools/code_reader.py,sha256=h_wmPAQOMiq6xQT8ENUTIt9IwzxkUPls3IJVZqtKkH4,10367
|
|
48
|
+
mcp_server/tools/graph.py,sha256=C2eaf0TGEv0kOZ1jS5WYDEL2knODekFDErUVUxX0dz4,22831
|
|
49
|
+
mcp_server/tools/learning.py,sha256=JuWiwqx8os7fMZNirvfVkCoCIAXGFlRKvQTIa2gcDco,8551
|
|
50
|
+
mcp_server/tools/playbook.py,sha256=SzaV5TXSYhlglRn4fBtzQ6FIPZbAzZJuWnPBNL8TT0M,2432
|
|
51
|
+
mcp_server/tools/roadmap.py,sha256=reRt-8gdyqIMIoKKO8BtzOf3OhvMFT1X0-O9YOpYn6c,20599
|
|
52
|
+
mcp_server/tools/search.py,sha256=ycVm6mVFawYQnYSXvzu4BYef42tU9V90JUL4Rkfb_pM,5075
|
|
53
|
+
codevira-1.6.0.dist-info/LICENSE,sha256=RT8w5eFsZVXuOet_7BMCoT5V91xaSkPxIjpAgAy2Gpw,1098
|
|
54
|
+
codevira-1.6.0.dist-info/METADATA,sha256=dv_5FzFe8reXTmAbKjDfFywDNR07rx1CyQGTDHUxxBs,16803
|
|
55
|
+
codevira-1.6.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
|
|
56
|
+
codevira-1.6.0.dist-info/entry_points.txt,sha256=VRAnR4NxB73l7GIGSjfYmSOsrvYL4sGPhpi3Xx69gJA,49
|
|
57
|
+
codevira-1.6.0.dist-info/top_level.txt,sha256=8emn9mD-fhXZj48WspJe_R-RWoNBejJbqZcbHlQ12RY,19
|
|
58
|
+
codevira-1.6.0.dist-info/RECORD,,
|
indexer/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Codevira Indexer package
|