sqlsaber 0.5.0__tar.gz → 0.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.

Potentially problematic release.


This version of sqlsaber might be problematic. Click here for more details.

Files changed (53) hide show
  1. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/CHANGELOG.md +36 -0
  2. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/PKG-INFO +9 -8
  3. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/README.md +8 -7
  4. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/pyproject.toml +1 -1
  5. sqlsaber-0.7.0/sqlsaber.svg +5 -0
  6. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/agents/anthropic.py +55 -17
  7. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/agents/base.py +13 -3
  8. sqlsaber-0.7.0/src/sqlsaber/cli/completers.py +172 -0
  9. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/display.py +33 -3
  10. sqlsaber-0.7.0/src/sqlsaber/cli/interactive.py +185 -0
  11. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/streaming.py +29 -2
  12. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/database/schema.py +17 -0
  13. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/uv.lock +1 -1
  14. sqlsaber-0.5.0/src/sqlsaber/cli/interactive.py +0 -96
  15. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/.github/workflows/publish.yml +0 -0
  16. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/.gitignore +0 -0
  17. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/.python-version +0 -0
  18. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/CLAUDE.md +0 -0
  19. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/LICENSE +0 -0
  20. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/pytest.ini +0 -0
  21. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/__init__.py +0 -0
  22. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/__main__.py +0 -0
  23. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/agents/__init__.py +0 -0
  24. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/agents/mcp.py +0 -0
  25. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/agents/streaming.py +0 -0
  26. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/__init__.py +0 -0
  27. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/commands.py +0 -0
  28. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/database.py +0 -0
  29. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/memory.py +0 -0
  30. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/cli/models.py +0 -0
  31. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/config/__init__.py +0 -0
  32. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/config/api_keys.py +0 -0
  33. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/config/database.py +0 -0
  34. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/config/settings.py +0 -0
  35. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/database/__init__.py +0 -0
  36. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/database/connection.py +0 -0
  37. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/mcp/__init__.py +0 -0
  38. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/mcp/mcp.py +0 -0
  39. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/memory/__init__.py +0 -0
  40. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/memory/manager.py +0 -0
  41. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/memory/storage.py +0 -0
  42. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/models/__init__.py +0 -0
  43. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/models/events.py +0 -0
  44. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/src/sqlsaber/models/types.py +0 -0
  45. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/__init__.py +0 -0
  46. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/conftest.py +0 -0
  47. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_cli/__init__.py +0 -0
  48. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_cli/test_commands.py +0 -0
  49. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_config/__init__.py +0 -0
  50. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_config/test_database.py +0 -0
  51. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_config/test_settings.py +0 -0
  52. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_database/__init__.py +0 -0
  53. {sqlsaber-0.5.0 → sqlsaber-0.7.0}/tests/test_database/test_connection.py +0 -0
@@ -4,6 +4,42 @@ All notable changes to SQLSaber will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.7.0] - 2025-07-01
8
+
9
+ ### Added
10
+
11
+ - Table name autocomplete with "@" prefix in interactive mode
12
+
13
+ - Type "@" followed by table name to get fuzzy matching completions
14
+ - Supports schema-aware completions (e.g., "@sample" matches "public.sample")
15
+
16
+ - Rich markdown display for assistant responses
17
+ - After streaming completes, the final response is displayed as formatted markdown
18
+
19
+ ## [0.6.0] - 2025-06-30
20
+
21
+ ### Added
22
+
23
+ - Slash command autocomplete in interactive mode
24
+ - Commands now use slash prefix: `/clear`, `/exit`, `/quit`
25
+ - Autocomplete shows when typing `/` at the start of a line
26
+ - Press Tab to select suggestion
27
+ - Query interruption with Ctrl+C in interactive mode
28
+ - Press Ctrl+C during query execution to gracefully cancel ongoing operations
29
+ - Preserves conversation history up to the interruption point
30
+
31
+ ### Changed
32
+
33
+ - Updated table display for better readability: limit to first 15 columns on wide tables
34
+ - Shows warning when columns are truncated
35
+ - Interactive commands now require slash prefix (breaking change)
36
+ - `clear` → `/clear`
37
+ - `exit` → `/exit`
38
+ - `quit` → `/quit`
39
+ - Removed default limit of 100. Now model will decide it.
40
+
41
+ ## [0.5.0] - 2025-06-27
42
+
7
43
  ### Added
8
44
 
9
45
  - Added support for plotting data from query results.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlsaber
3
- Version: 0.5.0
3
+ Version: 0.7.0
4
4
  Summary: SQLSaber - Agentic SQL assistant like Claude Code
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -212,23 +212,24 @@ The MCP server uses your existing SQLSaber database configurations, so make sure
212
212
 
213
213
  ## How It Works
214
214
 
215
- SQLSaber uses an intelligent three-step process optimized for minimal token usage:
215
+ SQLSaber uses a multi-step process to gather the right context, provide it to the model, and execute SQL queries to get the right answers:
216
+
217
+ ![](./sqlsaber.svg)
216
218
 
217
219
  ### 🔍 Discovery Phase
218
220
 
219
221
  1. **List Tables Tool**: Quickly discovers available tables with row counts
220
- 2. **Pattern Matching**: Identifies relevant tables based on your query using SQL LIKE patterns
222
+ 2. **Pattern Matching**: Identifies relevant tables based on your query
221
223
 
222
224
  ### 📋 Schema Analysis
223
225
 
224
- 3. **Smart Introspection**: Analyzes only the specific table structures needed for your query
225
- 4. **Selective Loading**: Fetches schema information only for relevant tables
226
+ 3. **Smart Schema Introspection**: Analyzes only the specific table structures needed for your query
226
227
 
227
228
  ### ⚡ Execution Phase
228
229
 
229
- 5. **SQL Generation**: Creates optimized SQL queries based on natural language input
230
- 6. **Safe Execution**: Runs queries with built-in protections against destructive operations
231
- 7. **Result Formatting**: Presents results with syntax highlighting and explanations
230
+ 4. **SQL Generation**: Creates optimized SQL queries based on natural language input
231
+ 5. **Safe Execution**: Runs read-only queries with built-in protections against destructive operations
232
+ 6. **Result Formatting**: Presents results with explanations in tables and optionally, visualizes using plots
232
233
 
233
234
  ## Contributing
234
235
 
@@ -191,23 +191,24 @@ The MCP server uses your existing SQLSaber database configurations, so make sure
191
191
 
192
192
  ## How It Works
193
193
 
194
- SQLSaber uses an intelligent three-step process optimized for minimal token usage:
194
+ SQLSaber uses a multi-step process to gather the right context, provide it to the model, and execute SQL queries to get the right answers:
195
+
196
+ ![](./sqlsaber.svg)
195
197
 
196
198
  ### 🔍 Discovery Phase
197
199
 
198
200
  1. **List Tables Tool**: Quickly discovers available tables with row counts
199
- 2. **Pattern Matching**: Identifies relevant tables based on your query using SQL LIKE patterns
201
+ 2. **Pattern Matching**: Identifies relevant tables based on your query
200
202
 
201
203
  ### 📋 Schema Analysis
202
204
 
203
- 3. **Smart Introspection**: Analyzes only the specific table structures needed for your query
204
- 4. **Selective Loading**: Fetches schema information only for relevant tables
205
+ 3. **Smart Schema Introspection**: Analyzes only the specific table structures needed for your query
205
206
 
206
207
  ### ⚡ Execution Phase
207
208
 
208
- 5. **SQL Generation**: Creates optimized SQL queries based on natural language input
209
- 6. **Safe Execution**: Runs queries with built-in protections against destructive operations
210
- 7. **Result Formatting**: Presents results with syntax highlighting and explanations
209
+ 4. **SQL Generation**: Creates optimized SQL queries based on natural language input
210
+ 5. **Safe Execution**: Runs read-only queries with built-in protections against destructive operations
211
+ 6. **Result Formatting**: Presents results with explanations in tables and optionally, visualizes using plots
211
212
 
212
213
  ## Contributing
213
214
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sqlsaber"
3
- version = "0.5.0"
3
+ version = "0.7.0"
4
4
  description = "SQLSaber - Agentic SQL assistant like Claude Code"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"