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.
Files changed (133) hide show
  1. {pycodesage-0.2.7 → pycodesage-0.3.1}/PKG-INFO +61 -76
  2. pycodesage-0.3.1/README.md +222 -0
  3. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/__init__.py +1 -1
  4. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/engine.py +658 -200
  5. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/query_expansion.py +122 -3
  6. pycodesage-0.3.1/codesage/cli/commands/__init__.py +11 -0
  7. pycodesage-0.3.1/codesage/cli/commands/chat.py +207 -0
  8. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/commands/index.py +10 -2
  9. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/commands/init.py +7 -5
  10. pycodesage-0.3.1/codesage/cli/groups/__init__.py +7 -0
  11. pycodesage-0.3.1/codesage/cli/groups/mcp.py +421 -0
  12. pycodesage-0.3.1/codesage/cli/main.py +78 -0
  13. pycodesage-0.3.1/codesage/core/confidence.py +202 -0
  14. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/context_provider.py +1 -0
  15. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/deep_analyzer.py +1 -0
  16. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/indexer.py +77 -20
  17. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/suggester.py +116 -12
  18. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/embeddings.py +171 -11
  19. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/prompts.py +19 -0
  20. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/provider.py +80 -4
  21. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/mcp/global_server.py +407 -95
  22. pycodesage-0.3.1/codesage/mcp/server.py +1816 -0
  23. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/hooks.py +7 -1
  24. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/memory_manager.py +10 -4
  25. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/pattern_store.py +36 -7
  26. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/preference_store.py +53 -20
  27. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/suggestion.py +7 -0
  28. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/database.py +57 -12
  29. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/kuzu_store.py +20 -0
  30. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/lance_store.py +35 -6
  31. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/manager.py +43 -9
  32. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/vector_base.py +17 -3
  33. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/config.py +160 -44
  34. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/rate_limiter.py +31 -10
  35. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/retry.py +4 -0
  36. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/PKG-INFO +61 -76
  37. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/SOURCES.txt +1 -15
  38. {pycodesage-0.2.7 → pycodesage-0.3.1}/pyproject.toml +1 -1
  39. pycodesage-0.2.7/README.md +0 -237
  40. pycodesage-0.2.7/codesage/cli/commands/__init__.py +0 -25
  41. pycodesage-0.2.7/codesage/cli/commands/chat.py +0 -159
  42. pycodesage-0.2.7/codesage/cli/commands/context.py +0 -159
  43. pycodesage-0.2.7/codesage/cli/commands/health.py +0 -88
  44. pycodesage-0.2.7/codesage/cli/commands/review.py +0 -352
  45. pycodesage-0.2.7/codesage/cli/commands/search.py +0 -210
  46. pycodesage-0.2.7/codesage/cli/commands/stats.py +0 -150
  47. pycodesage-0.2.7/codesage/cli/commands/suggest.py +0 -318
  48. pycodesage-0.2.7/codesage/cli/commands/version.py +0 -9
  49. pycodesage-0.2.7/codesage/cli/groups/__init__.py +0 -25
  50. pycodesage-0.2.7/codesage/cli/groups/config.py +0 -419
  51. pycodesage-0.2.7/codesage/cli/groups/docs.py +0 -105
  52. pycodesage-0.2.7/codesage/cli/groups/features.py +0 -127
  53. pycodesage-0.2.7/codesage/cli/groups/hooks.py +0 -105
  54. pycodesage-0.2.7/codesage/cli/groups/mcp.py +0 -631
  55. pycodesage-0.2.7/codesage/cli/groups/profile.py +0 -683
  56. pycodesage-0.2.7/codesage/cli/groups/security.py +0 -121
  57. pycodesage-0.2.7/codesage/cli/groups/smells.py +0 -120
  58. pycodesage-0.2.7/codesage/cli/groups/storage.py +0 -247
  59. pycodesage-0.2.7/codesage/cli/main.py +0 -156
  60. pycodesage-0.2.7/codesage/mcp/server.py +0 -1083
  61. {pycodesage-0.2.7 → pycodesage-0.3.1}/LICENSE +0 -0
  62. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/__main__.py +0 -0
  63. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/__init__.py +0 -0
  64. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/commands.py +0 -0
  65. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/context.py +0 -0
  66. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/models.py +0 -0
  67. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/chat/prompts.py +0 -0
  68. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/__init__.py +0 -0
  69. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/__init__.py +0 -0
  70. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/console.py +0 -0
  71. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/decorators.py +0 -0
  72. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/formatters.py +0 -0
  73. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/options.py +0 -0
  74. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/cli/utils/signals.py +0 -0
  75. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/__init__.py +0 -0
  76. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/relationship_extractor.py +0 -0
  77. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/core/resource_manager.py +0 -0
  78. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/__init__.py +0 -0
  79. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/generator.py +0 -0
  80. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/docs/onboarding.py +0 -0
  81. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/hooks/__init__.py +0 -0
  82. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/hooks/installer.py +0 -0
  83. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/llm/__init__.py +0 -0
  84. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/mcp/__init__.py +0 -0
  85. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/__init__.py +0 -0
  86. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/learning_engine.py +0 -0
  87. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/memory_graph.py +0 -0
  88. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/models.py +0 -0
  89. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/pattern_miner.py +0 -0
  90. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/profile.py +0 -0
  91. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/schemas.py +0 -0
  92. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/memory/style_analyzer.py +0 -0
  93. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/__init__.py +0 -0
  94. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/code_element.py +0 -0
  95. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/context.py +0 -0
  96. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/models/smell.py +0 -0
  97. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/__init__.py +0 -0
  98. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/base.py +0 -0
  99. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/python_parser.py +0 -0
  100. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/registry.py +0 -0
  101. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/parsers/treesitter_parser.py +0 -0
  102. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/__init__.py +0 -0
  103. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/analyzer.py +0 -0
  104. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/diff.py +0 -0
  105. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/formatters.py +0 -0
  106. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/hybrid_analyzer.py +0 -0
  107. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/models.py +0 -0
  108. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/prompts.py +0 -0
  109. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/review/smells.py +0 -0
  110. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/__init__.py +0 -0
  111. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/formatters.py +0 -0
  112. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/models.py +0 -0
  113. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/__init__.py +0 -0
  114. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/config.py +0 -0
  115. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/crypto.py +0 -0
  116. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/deserialization.py +0 -0
  117. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/injection.py +0 -0
  118. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/secrets.py +0 -0
  119. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/rules/xss.py +0 -0
  120. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/security/scanner.py +0 -0
  121. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/__init__.py +0 -0
  122. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/storage/base.py +0 -0
  123. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/__init__.py +0 -0
  124. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/features.py +0 -0
  125. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/health.py +0 -0
  126. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/language_detector.py +0 -0
  127. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/logging.py +0 -0
  128. {pycodesage-0.2.7 → pycodesage-0.3.1}/codesage/utils/mixins.py +0 -0
  129. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/dependency_links.txt +0 -0
  130. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/entry_points.txt +0 -0
  131. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/requires.txt +0 -0
  132. {pycodesage-0.2.7 → pycodesage-0.3.1}/pycodesage.egg-info/top_level.txt +0 -0
  133. {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.2.7
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 mxbai-embed-large
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 search "validate email" # Search
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
- | `search QUERY` | Semantic code search |
121
- | `chat` | Interactive chat mode |
122
- | `review` | AI code review |
123
- | `stats` | Show index statistics |
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
- <details>
126
- <summary>Search options</summary>
124
+ ### Chat Commands
127
125
 
128
- ```bash
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
- </details>
128
+ **Search & Analysis**
136
129
 
137
- <details>
138
- <summary>Chat commands</summary>
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
- </details>
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
- <details>
157
- <summary>Other commands</summary>
146
+ **Session**
158
147
 
159
- ```bash
160
- # MCP server
161
- codesage mcp serve # Start server
162
- codesage mcp serve --global # All indexed projects
163
- codesage mcp test # Test tools
164
-
165
- # Developer profile
166
- codesage profile show # View profile
167
- codesage profile patterns # Learned patterns
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
- Add to your MCP client config:
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
- | `search_code` | Semantic code search |
198
- | `get_file_context` | File with dependencies |
199
- | `get_task_context` | Implementation guidance |
200
- | `review_code` | Code review |
201
- | `analyze_security` | Vulnerability scan |
202
- | `detect_code_smells` | Pattern deviations |
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: mxbai-embed-large
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: mxbai-embed-large
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
- # Feature flags
268
- features:
269
- memory: true
270
- graph_storage: true
271
- code_smell_detection: false
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
@@ -1,4 +1,4 @@
1
1
  """CodeSage: Local-first CLI code intelligence tool."""
2
2
 
3
- __version__ = "0.2.7"
3
+ __version__ = "0.3.1"
4
4
  __author__ = "Keshav Ashiya"