Skip to content

Releases: nmlemus/dsagent

v0.9.1

19 Feb 04:47
ff21778

Choose a tag to compare

Fixes

  • CLI: Fix Configuration Error: 'NoneType' object has no attribute lower' when running dsagent, dsagent chat, or dsagent run without --model or config. The effective model is now resolved with get_default_model() before validation. (#47, #48)

Other

  • Validation: validate_configuration() now guards against None/empty model and raises a clear ConfigurationError instead of AttributeError.
  • Workflow: Added .cursor/rules/workflow-branch-pr.mdc and updated AGENTS.md (issue → branch → fix → test → PR; no direct commits to main).
  • Test: ConversationalAgentConfig default model is None (resolved at runtime).

v0.9.0

19 Feb 00:31
c857794

Choose a tag to compare

What's changed

Security & robustness

  • Path traversal guards in file and artifact download/delete; session paths validated under workspace
  • session_id validation 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

05 Feb 01:44
40d2da4

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix model configuration: Sessions now correctly use DSAGENT_DEFAULT_MODEL environment variable instead of hardcoded gpt-4o

New Features

  • Centralized configuration module (dsagent/config.py)
  • Model resolution cascade with clear priority:
    1. Explicit parameter (API/CLI --model)
    2. Session-stored model
    3. DSAGENT_DEFAULT_MODEL env var
    4. LLM_MODEL env var (backward compatible)
    5. Fallback: gpt-4o

Improvements

  • Better documentation in .env.example for model configuration
  • Consistent model handling across CLI, API server, and agents

Full Changelog: v0.8.3...v0.8.4

v0.8.3

29 Jan 19:54
c7f7975

Choose a tag to compare

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

27 Jan 23:54

Choose a tag to compare

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_FAILED events
  • 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_signature errors when using Gemini models with function calling
  • Prompt Refactoring: Modular prompt system with PromptBuilder and reusable sections, plus tool priority rules
  • CLI Display Order: Explanation now correctly appears before plan

New Modules

  • dsagent.observability - LLM tracing with ObservabilityConfig and ObservabilityManager
  • dsagent.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  # optional

See .env.example for all supported providers.

Full Changelog: v0.8.1...v0.8.2

v0.8.1 - Agent Skills System

21 Jan 05:46

Choose a tag to compare

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>
  • 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 /data command is used
  • Hide internal tags (intent, think) from CLI output

Full Changelog

v0.8.0...v0.8.1

v0.8.0 - API Enhancements & Multi-Provider Support

20 Jan 04:45

Choose a tag to compare

✨ Features

API Enhancements

  • Granular SSE Events: Real-time streaming with detailed events (thinking, plan, code_executing, code_result, answer, round_complete)
  • /turns Endpoint: 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 .env files - 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 .env loading 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

11 Jan 18:24

Choose a tag to compare

What's New

Docker Support

  • Official Docker images for easy deployment
  • Two variants: latest (lightweight) and full (with LaTeX)
  • Multi-arch support: linux/amd64 and linux/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 :full variant for PDF report generation
  • Bash command execution via IPython magic (!command, %%bash)

CLI Improvements

  • dsagent --model gpt-4o now works without specifying chat subcommand
  • CLI respects DSAGENT_WORKSPACE environment 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 -d

Full Changelog

v0.6.2...v0.7.0

DSAgent v0.6.2 - API Server & Provider Support

11 Jan 00:12

Choose a tag to compare

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 serve

New 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-flash

Fixes

  • LiteLLM compatibility: Pinned to >=1.70.0,<1.80.0 to avoid Pydantic serialization warnings in newer versions
  • OpenAI API base: Explicitly set default OPENAI_API_BASE for better compatibility across LiteLLM versions
  • Documentation: Clarified automatic model selection in dsagent init

Documentation

  • Added docs/SCALING_PROPOSAL.md with 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

09 Jan 20:48

Choose a tag to compare

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 server

14 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-notebook and --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_BASE environment 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 handling

Statistics

  • 39 files changed
  • +13,452 lines added
  • 371+ tests passing
  • 6 new test files with comprehensive coverage

Examples

Start Interactive Session

dsagent

One-Shot Task

dsagent run "analyze sales.csv and find top 10 products"

With Live Notebook

dsagent --live-notebook

With HITL Approval

dsagent --hitl plan

Full Changelog

v0.5.1...v0.6.1


Thank you for using DSAgent!