pycodesage 0.2.7__tar.gz → 0.3.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.
- {pycodesage-0.2.7 → pycodesage-0.3.1}/PKG-INFO +61 -76
- pycodesage-0.3.1/README.md +222 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/__init__.py +1 -1
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/engine.py +658 -200
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/query_expansion.py +122 -3
- pycodesage-0.3.1/codesage/cli/commands/__init__.py +11 -0
- pycodesage-0.3.1/codesage/cli/commands/chat.py +207 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/commands/index.py +10 -2
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/commands/init.py +7 -5
- pycodesage-0.3.1/codesage/cli/groups/__init__.py +7 -0
- pycodesage-0.3.1/codesage/cli/groups/mcp.py +421 -0
- pycodesage-0.3.1/codesage/cli/main.py +78 -0
- pycodesage-0.3.1/codesage/core/confidence.py +202 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/context_provider.py +1 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/deep_analyzer.py +1 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/indexer.py +77 -20
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/suggester.py +116 -12
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/embeddings.py +171 -11
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/prompts.py +19 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/provider.py +80 -4
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/mcp/global_server.py +407 -95
- pycodesage-0.3.1/codesage/mcp/server.py +1816 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/hooks.py +7 -1
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/memory_manager.py +10 -4
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/pattern_store.py +36 -7
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/preference_store.py +53 -20
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/suggestion.py +7 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/database.py +57 -12
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/kuzu_store.py +20 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/lance_store.py +35 -6
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/manager.py +43 -9
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/vector_base.py +17 -3
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/config.py +160 -44
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/rate_limiter.py +31 -10
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/retry.py +4 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/PKG-INFO +61 -76
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/SOURCES.txt +1 -15
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pyproject.toml +1 -1
- pycodesage-0.2.7/README.md +0 -237
- pycodesage-0.2.7/codesage/cli/commands/__init__.py +0 -25
- pycodesage-0.2.7/codesage/cli/commands/chat.py +0 -159
- pycodesage-0.2.7/codesage/cli/commands/context.py +0 -159
- pycodesage-0.2.7/codesage/cli/commands/health.py +0 -88
- pycodesage-0.2.7/codesage/cli/commands/review.py +0 -352
- pycodesage-0.2.7/codesage/cli/commands/search.py +0 -210
- pycodesage-0.2.7/codesage/cli/commands/stats.py +0 -150
- pycodesage-0.2.7/codesage/cli/commands/suggest.py +0 -318
- pycodesage-0.2.7/codesage/cli/commands/version.py +0 -9
- pycodesage-0.2.7/codesage/cli/groups/__init__.py +0 -25
- pycodesage-0.2.7/codesage/cli/groups/config.py +0 -419
- pycodesage-0.2.7/codesage/cli/groups/docs.py +0 -105
- pycodesage-0.2.7/codesage/cli/groups/features.py +0 -127
- pycodesage-0.2.7/codesage/cli/groups/hooks.py +0 -105
- pycodesage-0.2.7/codesage/cli/groups/mcp.py +0 -631
- pycodesage-0.2.7/codesage/cli/groups/profile.py +0 -683
- pycodesage-0.2.7/codesage/cli/groups/security.py +0 -121
- pycodesage-0.2.7/codesage/cli/groups/smells.py +0 -120
- pycodesage-0.2.7/codesage/cli/groups/storage.py +0 -247
- pycodesage-0.2.7/codesage/cli/main.py +0 -156
- pycodesage-0.2.7/codesage/mcp/server.py +0 -1083
- {pycodesage-0.2.7 → pycodesage-0.3.1}/LICENSE +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/__main__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/commands.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/context.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/models.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/prompts.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/console.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/decorators.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/formatters.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/options.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/signals.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/relationship_extractor.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/resource_manager.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/generator.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/onboarding.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/hooks/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/hooks/installer.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/mcp/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/learning_engine.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/memory_graph.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/models.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/pattern_miner.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/profile.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/schemas.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/style_analyzer.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/code_element.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/context.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/smell.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/base.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/python_parser.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/registry.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/treesitter_parser.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/analyzer.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/diff.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/formatters.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/hybrid_analyzer.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/models.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/prompts.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/smells.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/formatters.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/models.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/config.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/crypto.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/deserialization.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/injection.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/secrets.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/xss.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/scanner.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/base.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/__init__.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/features.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/health.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/language_detector.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/logging.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/mixins.py +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/dependency_links.txt +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/entry_points.txt +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/requires.txt +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/top_level.txt +0 -0
- {pycodesage-0.2.7 → pycodesage-0.3.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycodesage
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Local-first CLI code intelligence tool with LangChain-powered RAG
|
|
5
5
|
Author: Keshav Ashiya
|
|
6
6
|
License: MIT
|
|
@@ -55,7 +55,7 @@ Dynamic: license-file
|
|
|
55
55
|
|
|
56
56
|
# CodeSage
|
|
57
57
|
|
|
58
|
-
Local-first code intelligence CLI powered by Ollama. Search your codebase using natural language.
|
|
58
|
+
Local-first code intelligence CLI powered by Ollama. Search, analyze, and chat with your codebase using natural language.
|
|
59
59
|
|
|
60
60
|
Works with Claude Desktop, Cursor, and Windsurf via MCP.
|
|
61
61
|
|
|
@@ -85,8 +85,8 @@ python3 -m pipx ensurepath
|
|
|
85
85
|
pipx install --python python3.11 pycodesage
|
|
86
86
|
|
|
87
87
|
# Add optional features
|
|
88
|
-
pipx inject pycodesage pycodesage[multi-language] # JS, TS, Go, Rust
|
|
89
|
-
pipx inject pycodesage pycodesage[mcp] # MCP server
|
|
88
|
+
pipx inject pycodesage "pycodesage[multi-language]" # JS, TS, Go, Rust
|
|
89
|
+
pipx inject pycodesage "pycodesage[mcp]" # MCP server
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
</details>
|
|
@@ -97,7 +97,7 @@ pipx inject pycodesage pycodesage[mcp] # MCP server
|
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
99
|
ollama pull qwen2.5-coder:7b
|
|
100
|
-
ollama pull
|
|
100
|
+
ollama pull qwen3-embedding
|
|
101
101
|
ollama serve
|
|
102
102
|
```
|
|
103
103
|
|
|
@@ -105,78 +105,59 @@ ollama serve
|
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
107
|
cd your-project
|
|
108
|
-
codesage init # Initialize
|
|
109
|
-
codesage index # Build index
|
|
110
|
-
codesage
|
|
111
|
-
codesage chat # Interactive mode
|
|
108
|
+
codesage init # Initialize project
|
|
109
|
+
codesage index # Build code index
|
|
110
|
+
codesage chat # Interactive chat mode
|
|
112
111
|
```
|
|
113
112
|
|
|
114
113
|
## Commands
|
|
115
114
|
|
|
116
115
|
| Command | Description |
|
|
117
116
|
|---------|-------------|
|
|
118
|
-
| `init` | Initialize project |
|
|
119
|
-
| `index` | Build code index |
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
117
|
+
| `init` | Initialize project (detects languages, creates config) |
|
|
118
|
+
| `index` | Build or update the code index |
|
|
119
|
+
| `chat` | Interactive chat with code intelligence |
|
|
120
|
+
| `mcp serve` | Start MCP server for AI IDE integration |
|
|
121
|
+
| `mcp setup` | Show MCP configuration for your IDE |
|
|
122
|
+
| `mcp test` | Test MCP server functionality |
|
|
124
123
|
|
|
125
|
-
|
|
126
|
-
<summary>Search options</summary>
|
|
124
|
+
### Chat Commands
|
|
127
125
|
|
|
128
|
-
|
|
129
|
-
codesage search "auth flow" --depth thorough # Deep analysis
|
|
130
|
-
codesage search "api handlers" --patterns # Include learned patterns
|
|
131
|
-
codesage search "database" --context # Show surrounding code
|
|
132
|
-
codesage search "errors" --json # JSON output
|
|
133
|
-
```
|
|
126
|
+
Inside `codesage chat`, use these slash commands:
|
|
134
127
|
|
|
135
|
-
|
|
128
|
+
**Search & Analysis**
|
|
136
129
|
|
|
137
|
-
|
|
138
|
-
|
|
130
|
+
| Command | Description |
|
|
131
|
+
|---------|-------------|
|
|
132
|
+
| `/search <query>` | Semantic code search |
|
|
133
|
+
| `/deep <query>` | Deep multi-agent analysis |
|
|
134
|
+
| `/similar <element>` | Find similar code |
|
|
135
|
+
| `/patterns [query]` | Show learned patterns |
|
|
139
136
|
|
|
140
|
-
|
|
141
|
-
/search <query> Semantic search
|
|
142
|
-
/plan <task> Implementation plan
|
|
143
|
-
/deep <query> Multi-agent analysis
|
|
144
|
-
/review [file] Code review
|
|
145
|
-
/security [path] Security scan
|
|
146
|
-
/impact <element> Blast radius analysis
|
|
147
|
-
/similar <code> Find similar patterns
|
|
148
|
-
/patterns Learned patterns
|
|
149
|
-
/mode <mode> Switch mode (brainstorm/implement/review)
|
|
150
|
-
/export [file] Save conversation
|
|
151
|
-
/help Show all commands
|
|
152
|
-
```
|
|
137
|
+
**Planning & Review**
|
|
153
138
|
|
|
154
|
-
|
|
139
|
+
| Command | Description |
|
|
140
|
+
|---------|-------------|
|
|
141
|
+
| `/plan <task>` | Generate implementation plan |
|
|
142
|
+
| `/review [file]` | Review code changes |
|
|
143
|
+
| `/security [path]` | Security analysis |
|
|
144
|
+
| `/impact <element>` | Impact/blast radius analysis |
|
|
155
145
|
|
|
156
|
-
|
|
157
|
-
<summary>Other commands</summary>
|
|
146
|
+
**Session**
|
|
158
147
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
# Configuration
|
|
170
|
-
codesage config features list # Feature flags
|
|
171
|
-
codesage config storage info # Storage details
|
|
172
|
-
codesage config hooks install # Git pre-commit hook
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
</details>
|
|
148
|
+
| Command | Description |
|
|
149
|
+
|---------|-------------|
|
|
150
|
+
| `/mode <mode>` | Switch mode (`brainstorm` / `implement` / `review`) |
|
|
151
|
+
| `/context` | Show/modify context settings |
|
|
152
|
+
| `/stats` | Show index statistics |
|
|
153
|
+
| `/export [file]` | Export conversation |
|
|
154
|
+
| `/clear` | Clear chat history |
|
|
155
|
+
| `/help` | Show all commands |
|
|
156
|
+
| `/exit` or `Ctrl+D` | Exit chat |
|
|
176
157
|
|
|
177
158
|
## MCP Setup
|
|
178
159
|
|
|
179
|
-
|
|
160
|
+
CodeSage works as an MCP server for AI IDEs. Run `codesage mcp setup` to get the configuration, or add this to your MCP client config:
|
|
180
161
|
|
|
181
162
|
```json
|
|
182
163
|
{
|
|
@@ -194,13 +175,18 @@ Add to your MCP client config:
|
|
|
194
175
|
|
|
195
176
|
| Tool | Description |
|
|
196
177
|
|------|-------------|
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
| `
|
|
200
|
-
| `
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
203
|
-
| `get_stats` | Index statistics |
|
|
178
|
+
| `list_projects` | List all indexed projects (global mode) |
|
|
179
|
+
| `get_developer_profile` | Your coding patterns and conventions |
|
|
180
|
+
| `search_code` | Semantic code search with confidence scoring |
|
|
181
|
+
| `get_file_context` | File content with definitions and security analysis |
|
|
182
|
+
| `review_code` | Code review with static + LLM analysis |
|
|
183
|
+
| `analyze_security` | Security vulnerability scanning |
|
|
184
|
+
| `get_stats` | Index statistics and storage metrics |
|
|
185
|
+
| `explain_concept` | Understand how a concept is implemented |
|
|
186
|
+
| `suggest_approach` | Implementation guidance for a coding task |
|
|
187
|
+
| `trace_flow` | Trace callers/callees through the dependency graph |
|
|
188
|
+
| `find_examples` | Find usage examples of a pattern or function |
|
|
189
|
+
| `recommend_pattern` | Pattern recommendations from learned memory |
|
|
204
190
|
|
|
205
191
|
</details>
|
|
206
192
|
|
|
@@ -217,7 +203,7 @@ Add to your MCP client config:
|
|
|
217
203
|
|
|
218
204
|
## Configuration
|
|
219
205
|
|
|
220
|
-
Stored in `.codesage/config.yaml
|
|
206
|
+
Stored in `.codesage/config.yaml` (created by `codesage init`):
|
|
221
207
|
|
|
222
208
|
```yaml
|
|
223
209
|
project_name: my-project
|
|
@@ -228,7 +214,7 @@ languages:
|
|
|
228
214
|
llm:
|
|
229
215
|
provider: ollama
|
|
230
216
|
model: qwen2.5-coder:7b
|
|
231
|
-
embedding_model:
|
|
217
|
+
embedding_model: qwen3-embedding
|
|
232
218
|
|
|
233
219
|
exclude_dirs:
|
|
234
220
|
- node_modules
|
|
@@ -244,7 +230,7 @@ exclude_dirs:
|
|
|
244
230
|
llm:
|
|
245
231
|
provider: ollama # ollama, openai, anthropic
|
|
246
232
|
model: qwen2.5-coder:7b
|
|
247
|
-
embedding_model:
|
|
233
|
+
embedding_model: qwen3-embedding
|
|
248
234
|
base_url: http://localhost:11434
|
|
249
235
|
temperature: 0.3
|
|
250
236
|
|
|
@@ -261,14 +247,13 @@ security:
|
|
|
261
247
|
# Developer memory
|
|
262
248
|
memory:
|
|
263
249
|
enabled: true
|
|
264
|
-
global_dir: ~/.codesage/developer
|
|
265
250
|
learn_on_index: true
|
|
266
251
|
|
|
267
|
-
#
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
252
|
+
# Performance tuning
|
|
253
|
+
performance:
|
|
254
|
+
embedding_batch_size: 200
|
|
255
|
+
embedding_cache_size: 1000
|
|
256
|
+
cache_enabled: true
|
|
272
257
|
```
|
|
273
258
|
|
|
274
259
|
</details>
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# CodeSage
|
|
2
|
+
|
|
3
|
+
Local-first code intelligence CLI powered by Ollama. Search, analyze, and chat with your codebase using natural language.
|
|
4
|
+
|
|
5
|
+
Works with Claude Desktop, Cursor, and Windsurf via MCP.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Recommended: pipx (isolated environment)
|
|
11
|
+
pipx install pycodesage
|
|
12
|
+
|
|
13
|
+
# Or pip
|
|
14
|
+
pip install pycodesage
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
<details>
|
|
18
|
+
<summary>Detailed installation</summary>
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# macOS
|
|
22
|
+
brew install pipx
|
|
23
|
+
pipx ensurepath
|
|
24
|
+
|
|
25
|
+
# Linux/Windows
|
|
26
|
+
python3 -m pip install --user pipx
|
|
27
|
+
python3 -m pipx ensurepath
|
|
28
|
+
|
|
29
|
+
# Install with specific Python version
|
|
30
|
+
pipx install --python python3.11 pycodesage
|
|
31
|
+
|
|
32
|
+
# Add optional features
|
|
33
|
+
pipx inject pycodesage "pycodesage[multi-language]" # JS, TS, Go, Rust
|
|
34
|
+
pipx inject pycodesage "pycodesage[mcp]" # MCP server
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
</details>
|
|
38
|
+
|
|
39
|
+
## Requirements
|
|
40
|
+
|
|
41
|
+
**Ollama** must be running:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
ollama pull qwen2.5-coder:7b
|
|
45
|
+
ollama pull qwen3-embedding
|
|
46
|
+
ollama serve
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
cd your-project
|
|
53
|
+
codesage init # Initialize project
|
|
54
|
+
codesage index # Build code index
|
|
55
|
+
codesage chat # Interactive chat mode
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Commands
|
|
59
|
+
|
|
60
|
+
| Command | Description |
|
|
61
|
+
|---------|-------------|
|
|
62
|
+
| `init` | Initialize project (detects languages, creates config) |
|
|
63
|
+
| `index` | Build or update the code index |
|
|
64
|
+
| `chat` | Interactive chat with code intelligence |
|
|
65
|
+
| `mcp serve` | Start MCP server for AI IDE integration |
|
|
66
|
+
| `mcp setup` | Show MCP configuration for your IDE |
|
|
67
|
+
| `mcp test` | Test MCP server functionality |
|
|
68
|
+
|
|
69
|
+
### Chat Commands
|
|
70
|
+
|
|
71
|
+
Inside `codesage chat`, use these slash commands:
|
|
72
|
+
|
|
73
|
+
**Search & Analysis**
|
|
74
|
+
|
|
75
|
+
| Command | Description |
|
|
76
|
+
|---------|-------------|
|
|
77
|
+
| `/search <query>` | Semantic code search |
|
|
78
|
+
| `/deep <query>` | Deep multi-agent analysis |
|
|
79
|
+
| `/similar <element>` | Find similar code |
|
|
80
|
+
| `/patterns [query]` | Show learned patterns |
|
|
81
|
+
|
|
82
|
+
**Planning & Review**
|
|
83
|
+
|
|
84
|
+
| Command | Description |
|
|
85
|
+
|---------|-------------|
|
|
86
|
+
| `/plan <task>` | Generate implementation plan |
|
|
87
|
+
| `/review [file]` | Review code changes |
|
|
88
|
+
| `/security [path]` | Security analysis |
|
|
89
|
+
| `/impact <element>` | Impact/blast radius analysis |
|
|
90
|
+
|
|
91
|
+
**Session**
|
|
92
|
+
|
|
93
|
+
| Command | Description |
|
|
94
|
+
|---------|-------------|
|
|
95
|
+
| `/mode <mode>` | Switch mode (`brainstorm` / `implement` / `review`) |
|
|
96
|
+
| `/context` | Show/modify context settings |
|
|
97
|
+
| `/stats` | Show index statistics |
|
|
98
|
+
| `/export [file]` | Export conversation |
|
|
99
|
+
| `/clear` | Clear chat history |
|
|
100
|
+
| `/help` | Show all commands |
|
|
101
|
+
| `/exit` or `Ctrl+D` | Exit chat |
|
|
102
|
+
|
|
103
|
+
## MCP Setup
|
|
104
|
+
|
|
105
|
+
CodeSage works as an MCP server for AI IDEs. Run `codesage mcp setup` to get the configuration, or add this to your MCP client config:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"mcpServers": {
|
|
110
|
+
"codesage": {
|
|
111
|
+
"command": "codesage",
|
|
112
|
+
"args": ["mcp", "serve", "--global"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
<details>
|
|
119
|
+
<summary>MCP tools available</summary>
|
|
120
|
+
|
|
121
|
+
| Tool | Description |
|
|
122
|
+
|------|-------------|
|
|
123
|
+
| `list_projects` | List all indexed projects (global mode) |
|
|
124
|
+
| `get_developer_profile` | Your coding patterns and conventions |
|
|
125
|
+
| `search_code` | Semantic code search with confidence scoring |
|
|
126
|
+
| `get_file_context` | File content with definitions and security analysis |
|
|
127
|
+
| `review_code` | Code review with static + LLM analysis |
|
|
128
|
+
| `analyze_security` | Security vulnerability scanning |
|
|
129
|
+
| `get_stats` | Index statistics and storage metrics |
|
|
130
|
+
| `explain_concept` | Understand how a concept is implemented |
|
|
131
|
+
| `suggest_approach` | Implementation guidance for a coding task |
|
|
132
|
+
| `trace_flow` | Trace callers/callees through the dependency graph |
|
|
133
|
+
| `find_examples` | Find usage examples of a pattern or function |
|
|
134
|
+
| `recommend_pattern` | Pattern recommendations from learned memory |
|
|
135
|
+
|
|
136
|
+
</details>
|
|
137
|
+
|
|
138
|
+
<details>
|
|
139
|
+
<summary>Client-specific setup</summary>
|
|
140
|
+
|
|
141
|
+
**Claude Desktop:** Add config above to `claude_desktop_config.json`
|
|
142
|
+
|
|
143
|
+
**Cursor:** Settings → Features → MCP Servers → Add config
|
|
144
|
+
|
|
145
|
+
**Windsurf:** Settings → MCP → Add Server. Command: `codesage`, Args: `mcp serve --global`
|
|
146
|
+
|
|
147
|
+
</details>
|
|
148
|
+
|
|
149
|
+
## Configuration
|
|
150
|
+
|
|
151
|
+
Stored in `.codesage/config.yaml` (created by `codesage init`):
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
project_name: my-project
|
|
155
|
+
languages:
|
|
156
|
+
- python
|
|
157
|
+
- typescript
|
|
158
|
+
|
|
159
|
+
llm:
|
|
160
|
+
provider: ollama
|
|
161
|
+
model: qwen2.5-coder:7b
|
|
162
|
+
embedding_model: qwen3-embedding
|
|
163
|
+
|
|
164
|
+
exclude_dirs:
|
|
165
|
+
- node_modules
|
|
166
|
+
- venv
|
|
167
|
+
- .git
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
<details>
|
|
171
|
+
<summary>All configuration options</summary>
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
# LLM settings
|
|
175
|
+
llm:
|
|
176
|
+
provider: ollama # ollama, openai, anthropic
|
|
177
|
+
model: qwen2.5-coder:7b
|
|
178
|
+
embedding_model: qwen3-embedding
|
|
179
|
+
base_url: http://localhost:11434
|
|
180
|
+
temperature: 0.3
|
|
181
|
+
|
|
182
|
+
# Storage
|
|
183
|
+
storage:
|
|
184
|
+
vector_backend: lancedb
|
|
185
|
+
use_graph: true
|
|
186
|
+
|
|
187
|
+
# Security scanning
|
|
188
|
+
security:
|
|
189
|
+
enabled: true
|
|
190
|
+
severity_threshold: medium
|
|
191
|
+
|
|
192
|
+
# Developer memory
|
|
193
|
+
memory:
|
|
194
|
+
enabled: true
|
|
195
|
+
learn_on_index: true
|
|
196
|
+
|
|
197
|
+
# Performance tuning
|
|
198
|
+
performance:
|
|
199
|
+
embedding_batch_size: 200
|
|
200
|
+
embedding_cache_size: 1000
|
|
201
|
+
cache_enabled: true
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
</details>
|
|
205
|
+
|
|
206
|
+
## Language Support
|
|
207
|
+
|
|
208
|
+
- **Python** (built-in)
|
|
209
|
+
- JavaScript, TypeScript, Go, Rust (with `pycodesage[multi-language]`)
|
|
210
|
+
|
|
211
|
+
## Development
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
git clone https://github.com/keshavashiya/codesage.git
|
|
215
|
+
cd codesage
|
|
216
|
+
pip install -e ".[dev]"
|
|
217
|
+
pytest tests/ -v
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## License
|
|
221
|
+
|
|
222
|
+
MIT
|