Releases: nmlemus/dsagent
v0.9.1
Fixes
- CLI: Fix
Configuration Error: 'NoneType' object has no attribute lower'when runningdsagent,dsagent chat, ordsagent runwithout--modelor config. The effective model is now resolved withget_default_model()before validation. (#47, #48)
Other
- Validation:
validate_configuration()now guards againstNone/empty model and raises a clearConfigurationErrorinstead ofAttributeError. - Workflow: Added
.cursor/rules/workflow-branch-pr.mdcand updated AGENTS.md (issue → branch → fix → test → PR; no direct commits tomain). - Test:
ConversationalAgentConfigdefaultmodelisNone(resolved at runtime).
v0.9.0
What's changed
Security & robustness
- Path traversal guards in file and artifact download/delete; session paths validated under workspace
session_idvalidation in API (pattern) and JSON store- Content-Disposition filename sanitization; docs for WebSocket API key risk, executor isolation, health endpoint
Configuration
- Single config source: server uses
dsagent.config;DSAGENT_REQUIRE_API_KEY,DSAGENT_MAX_UPLOAD_MB - API version from package
__version__; Dockerfile label 0.9.0
Features
- Upload size limit per file (
DSAGENT_MAX_UPLOAD_MB) - Session path validation under workspace (code scanning)
Documentation
- README, CLI (serve, skills), configuration, HTTP API (
/api), Docker docs updated
Full changelog
See PR #46 for the full list of changes.
v0.8.4
What's Changed
Bug Fixes
- Fix model configuration: Sessions now correctly use
DSAGENT_DEFAULT_MODELenvironment variable instead of hardcodedgpt-4o
New Features
- Centralized configuration module (
dsagent/config.py) - Model resolution cascade with clear priority:
- Explicit parameter (API/CLI
--model) - Session-stored model
DSAGENT_DEFAULT_MODELenv varLLM_MODELenv var (backward compatible)- Fallback:
gpt-4o
- Explicit parameter (API/CLI
Improvements
- Better documentation in
.env.examplefor model configuration - Consistent model handling across CLI, API server, and agents
Full Changelog: v0.8.3...v0.8.4
v0.8.3
Bug Fixes
- Fix kernel state endpoint returning 500 error (dict to KernelSnapshot conversion)
- Update scikit-learn to 1.5.0 to fix CVE PYSEC-2024-110
Improvements
- Add comprehensive security scanning workflow (Bandit, pip-audit, Gitleaks, Trivy, OSSF Scorecard)
- Remove obsolete demo and examples directories (~32,000 lines removed)
CI/CD
- Update CodeQL action to v4
- Fix Bandit SARIF output with bandit-sarif-formatter
v0.8.2 - LLM Observability, MCP Tool Feedback & Skills Optimization
What's New
Features
- LLM Observability: Integration with LiteLLM callbacks supporting Langfuse, LangSmith, Lunary, Helicone and other providers for tracing and monitoring
- MCP Tool Execution Feedback: Visual feedback for MCP tool calls across CLI, SSE API, WebSocket, and logging with
TOOL_CALLING,TOOL_SUCCESS,TOOL_FAILEDevents - Skills Progressive Disclosure: 95% context reduction by showing only skill summaries in prompts, with auto-extraction of "When to Use" sections from skill instructions
- Agent Explanation Display: Show model's reasoning between
</intent>and<plan>/<code>tags in CLI
Fixes
- Gemini 3.0 Support: Fix
thought_signatureerrors when using Gemini models with function calling - Prompt Refactoring: Modular prompt system with
PromptBuilderand reusable sections, plus tool priority rules - CLI Display Order: Explanation now correctly appears before plan
New Modules
dsagent.observability- LLM tracing with ObservabilityConfig and ObservabilityManagerdsagent.prompts- Modular prompt builder with reusable sections
Configuration
Observability (optional)
# Enable Langfuse tracing
export LANGFUSE_PUBLIC_KEY=pk-...
export LANGFUSE_SECRET_KEY=sk-...
export LANGFUSE_HOST=https://cloud.langfuse.com # optionalSee .env.example for all supported providers.
Full Changelog: v0.8.1...v0.8.2
v0.8.1 - Agent Skills System
What's New
Agent Skills System
This release introduces the Agent Skills system, an extensible capability framework for DSAgent.
New Features
-
Skills Module - Full implementation of skill loading, registration, and installation
- Install skills from GitHub:
dsagent skills install github:dsagent-skills/eda-analysis - Install from local directory:
dsagent skills install ./my-skill - List installed skills:
dsagent skills list - Show skill details:
dsagent skills info <name>
- Install skills from GitHub:
-
CLI Slash Commands - New interactive commands in chat REPL:
/skills- List all installed skills/skill <name>- Show detailed skill information
-
Documentation - Comprehensive skills documentation at
docs/guide/skills.md
Other Improvements
- Intent classification for improved response matching
- Markdown rendering for assistant messages
- Fallback handling for unsupported LLM parameters
- Auto-create session when
/datacommand is used - Hide internal tags (intent, think) from CLI output
Full Changelog
v0.8.0 - API Enhancements & Multi-Provider Support
✨ Features
API Enhancements
- Granular SSE Events: Real-time streaming with detailed events (
thinking,plan,code_executing,code_result,answer,round_complete) /turnsEndpoint: Structured conversation history for consistent UI rendering- HITL API: Human-in-the-Loop support via REST endpoints (
/hitl/status,/hitl/approve,/hitl/reject) - Runtime Model Switching: Change LLM model mid-conversation via
PUT /sessions/{id}
Multi-Provider Support
Added validation and documentation for:
- Groq (
GROQ_API_KEY) - Together AI (
TOGETHER_API_KEY) - OpenRouter (
OPENROUTER_API_KEY) - Mistral (
MISTRAL_API_KEY) - Cohere (
COHERE_API_KEY) - Perplexity (
PERPLEXITYAI_API_KEY) - Fireworks (
FIREWORKS_API_KEY) - Hugging Face (
HUGGINGFACE_API_KEY)
🐛 Fixes
- Autonomous loop: Now stops correctly when plan is complete (no more infinite "next step" prompts)
- Config loading: Combined
.envfiles - global (~/.dsagent/.env) + local (./.env) with proper override - Summarization: Uses user's model by default (no longer requires OpenAI configured)
📚 Documentation
- Complete HTTP API reference for UI developers
- All supported LLM providers documented with API key variables
- Configuration guide updated with correct
.envloading order
🔧 CI/CD
- Docker images now build only on releases (not on every push to main)
Full Changelog: v0.7.0...v0.8.0
v0.7.0 - Docker Support & Expanded Libraries
What's New
Docker Support
- Official Docker images for easy deployment
- Two variants:
latest(lightweight) andfull(with LaTeX) - Multi-arch support:
linux/amd64andlinux/arm64 - Docker Compose configuration included
- GitHub Actions workflow for automatic Docker Hub publishing
Expanded Data Science Libraries
- Added:
scipy,polars,pyarrow,plotly,xgboost,lightgbm,boruta,tqdm
LaTeX & Bash Support (Docker)
- LaTeX compilation tools in
:fullvariant for PDF report generation - Bash command execution via IPython magic (
!command,%%bash)
CLI Improvements
dsagent --model gpt-4onow works without specifyingchatsubcommand- CLI respects
DSAGENT_WORKSPACEenvironment variable
Documentation
- Complete Docker deployment guide (
docs/DOCKER.md) - Updated model configuration guide with provider prefix table
- Clarified Gemini requires
gemini/prefix for Google AI Studio
Docker Quick Start
# Pull and run
docker pull nmlemus/dsagent:latest
docker run -it -e OPENAI_API_KEY=$OPENAI_API_KEY nmlemus/dsagent:latest dsagent chat
# Or use docker-compose
docker-compose up -dFull Changelog
DSAgent v0.6.2 - API Server & Provider Support
What's New
API Server (Phase 8)
DSAgent now includes a full WebSocket and REST API server for integration with web applications, mobile apps, and other systems.
# Start the server
dsagent serve --host 0.0.0.0 --port 8000
# With API key authentication
export DSAGENT_API_KEY=your-secret-key
dsagent serveNew Endpoints
| Category | Endpoints |
|---|---|
| Sessions | Create, list, get, update, delete, export |
| Chat | Sync and streaming (SSE) chat |
| Kernel | State, variables, execute, reset |
| Files | Upload, download, list, delete |
| Artifacts | List, download, delete generated outputs |
| WebSocket | Real-time bidirectional chat at /ws/chat/{session_id} |
| Health | /health and /health/ready |
Full API documentation available at /docs when server is running.
Google/Gemini Support
dsagent init now supports Google as a provider:
dsagent init
# Select "google"
# Default model: gemini/gemini-2.5-flashFixes
- LiteLLM compatibility: Pinned to
>=1.70.0,<1.80.0to avoid Pydantic serialization warnings in newer versions - OpenAI API base: Explicitly set default
OPENAI_API_BASEfor better compatibility across LiteLLM versions - Documentation: Clarified automatic model selection in
dsagent init
Documentation
- Added
docs/SCALING_PROPOSAL.mdwith production deployment strategies (PostgreSQL, S3, Redis, Kubernetes) - Updated CLI and README documentation
Installation
pip install datascience-agent
# With API server support
pip install "datascience-agent[api]"Full Changelog
New Features:
- WebSocket server for real-time chat
- REST API for sessions, chat, kernel, files, artifacts
- Server-Sent Events (SSE) for streaming responses
- Optional API key authentication
- Google/Gemini provider in setup wizard
Improvements:
- Better LiteLLM version compatibility
- Clearer documentation for model selection
DSAgent v0.6.1 - Conversational Agent & Interactive CLI
DSAgent v0.6.1 - Conversational Agent & Interactive CLI
This is a major feature release that transforms DSAgent into a fully conversational data science assistant with an interactive CLI, session persistence, and MCP tool integration.
Highlights
- Conversational Mode: Natural back-and-forth dialogue with context awareness
- Interactive CLI: Rich terminal interface with slash commands
- Session Persistence: Save and resume analysis sessions
- Live Notebook Sync: Bidirectional sync with Jupyter notebooks
- MCP Integration: Connect external tools via Model Context Protocol
- HITL Support: Human-in-the-loop approval workflows
New Features
Conversational Agent
- Hybrid execution modes: Switch between conversational (single response) and autonomous (plan-loop) modes
- Plan extraction: Automatic detection of
<plan>tags with[x]/[ ]step tracking - Context awareness: Remembers previous messages and analysis results
- NotebookBuilder integration: Auto-generates Jupyter notebooks from conversations
Interactive CLI (dsagent chat)
Unified entry point with subcommands:
dsagent # Start interactive chat (default)
dsagent chat # Same as above
dsagent run "task" # One-shot task execution
dsagent init # Setup wizard
dsagent mcp add # Add MCP server14 Slash Commands:
| Command | Description |
|---|---|
/help |
Show available commands |
/new |
Start new session |
/sessions |
List saved sessions |
/load <id> |
Load a previous session |
/context |
Show current kernel context |
/vars |
List variables in kernel |
/history |
Show conversation history |
/export |
Export notebook |
/clear |
Clear screen |
/quit |
Exit |
/model |
Show/change model |
/status |
Show session status |
/data |
List data files |
/workspace |
Open workspace folder |
Session Persistence
- SessionManager: Full CRUD operations for sessions
- ConversationHistory: Track all messages with timestamps
- KernelSnapshot: Save/restore kernel state (variables, DataFrames)
- Storage backends: SQLite and JSON stores
- Workspace structure:
runs/{session_id}/data/,artifacts/,notebooks/
Kernel State Management
- ExecutorBackend: Abstract interface for kernel backends
- LocalExecutor: IPython kernel with state persistence
- KernelIntrospector: Inspect variables, DataFrames, shapes, dtypes
- Context injection: Auto-inject kernel context into LLM prompts
Live Notebook Sync
- LiveNotebookBuilder: Saves notebook after each cell execution
- JupyterFileWatcher: Detects external changes via
watchdog - LiveNotebookSync: Bidirectional sync between agent and Jupyter
- CLI flags:
--live-notebookand--notebook-sync
HITL (Human-in-the-Loop) Support
Multiple approval modes via --hitl flag:
| Mode | Description |
|---|---|
none |
No approval required (default) |
plan |
Approve plans before execution |
full |
Approve both plans and code |
plan_answer |
Approve plans and final answers |
on_error |
Intervene only on errors |
Automatic Summarization
- Summarize old messages when conversation exceeds N messages
- Keep last K messages complete
- Store summary in memory for context continuity
MCP Tool Integration
- MCPManager: Connect external tools to the agent
- Built-in templates:
filesystem,fetch,brave-search,memory,bigquery - Environment variables: Pass secrets to MCP subprocesses
- CLI management:
dsagent mcp add/list/remove
Improvements
LiteLLM Proxy Support
- Fixed routing for non-OpenAI models (Claude, Gemini) through LiteLLM proxy
get_proxy_model_name(): Transform model names for proxy routing- Works with
LLM_API_BASEenvironment variable
Documentation
- New
docs/CLI.md: Complete CLI reference - New
docs/MCP.md: MCP configuration guide - New
docs/PYTHON_API.md: Python SDK documentation - Updated
README.md: Simplified with links to detailed docs
Developer Experience
- ASCII art banner with gradient colors on startup
- Rich-formatted output with syntax highlighting
- Command completion and history with
prompt_toolkit
New Dependencies
watchdog = ">=3.0.0" # File system monitoring
pyyaml = ">=6.0" # MCP config handlingStatistics
- 39 files changed
- +13,452 lines added
- 371+ tests passing
- 6 new test files with comprehensive coverage
Examples
Start Interactive Session
dsagentOne-Shot Task
dsagent run "analyze sales.csv and find top 10 products"With Live Notebook
dsagent --live-notebookWith HITL Approval
dsagent --hitl planFull Changelog
Thank you for using DSAgent!