Skip to content

Conversation

@dependabot
Copy link

@dependabot dependabot bot commented on behalf of github Oct 6, 2025

Bumps github.com/pressly/goose/v3 from 3.24.3 to 3.26.0.

Release notes

Sourced from github.com/pressly/goose/v3's releases.

v3.26.0

What's Changed

  • Add *slog.Logger support to goose provider via option WithSlog (#989)
  • Add convenience WithTableName provider option (#985)
  • Minor bug fixes and dependency upgrades
  • Add general purpose Locker interface to support DB locking with a table-based Postgres implementation via lock.NewPostgresTableLocker (#993 for more details)
    • Unlike SessionLocker, this uses the *sql.DB connection pool
    • Add WithLocker option to goose provider

New Contributors

Full Changelog: pressly/goose@v3.25.0...v3.26.0

v3.25.0

What's Changed

  • Upgrade go deps (#976)
  • Remove references/tests for vertica and add deprecation warnings (#978)
  • Add Aurora DSQL as a new database dialect to goose Provider (#971)
  • Add DDL isolation support for Aurora DSQL compatibility (#970)
  • Update Apply to respect no versioning option (#950)
  • Expose dialect Querier (#939)

New Contributors

Full Changelog: pressly/goose@v3.24.3...v3.25.0

Changelog

Sourced from github.com/pressly/goose/v3's changelog.

[v3.26.0] - 2025-10-03

  • Add *slog.Logger support to goose provider via option WithSlog (#989)
  • Add convenience WithTableName provider option (#985)
  • Minor bug fixes and dependency upgrades
  • Add general purpose Locker interface to support DB locking with a table-based Postgres implementation via lock.NewPostgresTableLocker (#993 for more details)
    • Unlike SessionLocker, this uses the *sql.DB connection pool
    • Add WithLocker option to goose provider

[v3.25.0] - 2025-08-24

  • Upgrade go deps (#976)
  • Remove references/tests for vertica and add deprecation warnings (#978)
  • Add Aurora DSQL as a new database dialect to goose Provider (#971)
  • Add DDL isolation support for Aurora DSQL compatibility (#970)
  • Update Apply to respect no versioning option (#950)
  • Expose dialect Querier (#939)
Commits
  • 3d1474d Release v3.26.0
  • 174efa7 testing: remove store tests
  • 7e0db47 Fix lint
  • 2715478 testing: add lock/locktesting
  • ebcf1ac ci: fix GH action workflow and Makefile
  • 57d20f1 Add Locker interface with Postgres table-based locking implementation (#993)
  • e91830f Update changelog
  • 975cfb4 Add slog support (#989)
  • 4bfe721 docs: add information about using different schema for migration (#982)
  • ae5fcb9 Add convenience WithTableName provider option (#985)
  • Additional commits viewable in compare view

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

epuerta9 and others added 30 commits August 18, 2025 20:34
- Add ExecutionQueueService initialization and startup to stdio.go
- Pass ExecutionQueueService to MCP server instead of nil
- Remove debug logging from MCP handlers
- Ensures MCP agent calls take queue execution path for proper run storage
- Standardizes execution paths across API, CLI, and MCP interfaces

Fixes issue where MCP agent calls returned run_id: 0 and weren't stored in database.
Now all MCP calls via stdio properly store runs with full execution metadata.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Bundle Naming Improvements:
- Replace hardcoded "bundle-5" with dynamic names based on URL content
- Extract repository names from GitHub URLs (e.g., "repo-name" from github.com/user/repo-name)
- Use meaningful path components for other URLs
- Fallback to timestamp-based naming for edge cases
- Clean bundle names (lowercase, replace spaces with dashes, remove special chars)

UI/UX Improvements:
- Remove "🚀 Dotprompt + GenKit Execution:" prefix from agent responses
- Provides cleaner, more professional agent output without execution engine branding

This resolves the issue where all bundles showed the same generic "bundle-5" name,
making it impossible to distinguish between different installed bundles.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Change success modal background from solid green to transparent
- Maintains visible border and text while fixing readability issues
- Resolves conflict with transparent text approach used throughout UI

The modal was using `bg-tokyo-green bg-opacity-10` which created a solid
background that interfered with text visibility. Now uses `bg-transparent`
for consistent transparent design language.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add copy buttons for sync commands in environment nodes and bundle install modal
- Add eye icon and detailed modal for bundle information
- Fix transparency issues in bundle install success modal sections
- Improve bundle naming system with meaningful names from URLs
- Add hover-based action buttons with consistent Tokyo theme styling

UI improvements:
- Environment nodes now show copy button on hover for quick sync command access
- Bundle cards display copy and eye action buttons on hover
- Bundle details modal shows comprehensive information and copy actions
- Fixed transparent backgrounds in success modals for consistency
- Bundle naming now extracts meaningful names instead of generic "bundle-5"

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The `stn agent export` command was only including the basic `userInput: string`
in exported .prompt files, ignoring any custom input schemas defined on agents.

Fixed by:
- Updated generateDotpromptContent() to use schema.ExportHelper
- Added proper GenerateInputSchemaSection() call to merge custom schemas
- Added schema package import to agent handlers
- Now exports include both userInput and all user-defined schema fields

This ensures that when agents with custom input schemas are exported to
.prompt files, all their schema fields are preserved correctly.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add agent_export_reminder prompt resource to MCP server
- Explains importance of exporting agents after creation to disk
- Provides CLI and MCP export methods with examples
- Add TROUBLESHOOTING.md with MCP schema conversion panic solution
- Documents known AWS Cost Explorer MCP server schema issues
- Include agent export requirements and performance issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add missing mcpConnStartTime variable declaration to prevent compilation failure
- Add minimal performance timing for legacy MCP connection path
- Update embedded UI assets from latest build

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add *.db-shm and *.db-wal to prevent SQLite temporary files from being committed
- These files are automatically generated by SQLite for performance and crash recovery

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive chat interface with message display and input editor
- Implement agent selection dialog with list-based UI
- Create modular component architecture with messages, editor, and dialogs
- Add theme system with Station branding and OpenCode-inspired styles
- Integrate with Station's agent execution system via ExecutionQueueService
- Support real-time agent communication with tool call visualization
- Add overlay system for modal dialogs and selections
- Replace SSH TUI with chat interface while maintaining bubbletea architecture

Key components:
- internal/tui/chat/: Core chat functionality and agent integration
- internal/tui/components/: Reusable UI components (messages, editor)
- internal/tui/dialogs/: Modal dialogs for agent selection
- internal/tui/theme/: Color schemes and styling system
- internal/tui/layout/: Layout utilities and overlay rendering

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Create internal/mcp_agents package with DynamicAgentServer
- Implement environment-based agent filtering using ListByEnvironment
- Add dynamic MCP server startup on port MCPPort+1
- Support JSON schema through agent input schema system
- Each database agent exposed as individual MCP tool
- Support variables parameter for dotprompt rendering

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix lipgloss Darker method compatibility issue
- Remove unused strings import
- Fix boolean Alt field usage in editor
- Remove unsupported SelectAll method call

Remaining issues: duplicate type declarations and database API mismatches need resolution

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update SSH server to pass repositories to TUI
- Fix AgentClient to use repository pattern instead of direct DB calls
- Update ExecutionRequest usage to match current service API
- Fix AgentRun field references (FinalResponse, CompletedAt)
- Remove duplicate message type declarations
- Add proper imports and type conversions

The chat-TUI now builds successfully with the current Station architecture
and can communicate with agents through the ExecutionQueueService.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add --confirm flag to skip interactive prompts for automation
- Interactive prompts warn users about orphaned agents before deletion
- Clear messaging about file-based config being source of truth
- Helpful tips to export agents before they're deleted
- Prevents accidental loss of dynamically created agents

Usage:
  stn mcp sync                # Interactive prompts for deletions
  stn mcp sync --confirm      # Auto-confirm all deletions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Adds user-friendly prompts when sync would delete agents that aren't exported to .prompt files.

Features:
- Interactive y/N prompts for each orphaned agent
- Warning messages about agents being deleted
- Helpful export command suggestions
- --confirm flag for automation/CI scenarios
- Safe defaults (N = skip deletion)

Prevents accidental loss of dynamically created agents when users forget to export before syncing.
This commit adds a complete progressive logging system that captures agent
execution steps in real-time, enabling precise debugging of failed runs.

Key Features:
- Real-time logging during agent execution with detailed LLM API call tracking
- Database migration adding debug_logs column to agent_runs table
- Progressive log capture in OpenAI plugin with timing and token usage
- Enhanced error detection with specific failure types (timeout, turn limits, tool failures)
- Turn limit enforcement (25 max) with early warning detection
- Improved log messages with specific tool names and actionable solutions
- API endpoint for accessing runtime logs with filtering capabilities
- Frontend integration for real-time log viewing during execution

Critical Debug Capabilities:
- Pinpoints exact failure location (LLM API vs MCP tool execution)
- Captures "broken pipe" errors in MCP tool calls (root cause identified)
- Provides clear error categorization: TIMEOUT, CONTEXT_LIMIT, TURN_LIMIT, RATE_LIMIT
- Shows conversation progression with turn counting and context warnings
- Real-time visibility replaces silent hanging with actionable error messages

Technical Implementation:
- SQLite schema update with debug_logs JSON array column
- Progressive logging callbacks through execution pipeline
- Enhanced OpenAI plugin with 2-minute timeouts and failure detection
- Turn limit enforcement in both GenKit layer and OpenAI plugin
- Structured error analysis with solution recommendations

Result: Transforms debugging from "mysterious hanging" to "specific tool failure
with exact error message" - providing complete visibility into agent execution.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…imits

This commit resolves the UI's hardcoded "Tool response data" placeholder and
adds sophisticated tool calling limits to prevent agents from hanging in
obsessive tool-calling loops.

UI Tool Response Improvements:
- Replace hardcoded "Tool response data" with actual MCP tool response content
- Extract real tool response data from OpenAI conversation history
- Add tool call ID traceability for better debugging
- UI now displays complete directory listings and actual tool outputs

Agent Execution Intelligence:
- Add ToolCallTracker to monitor tool usage patterns in real-time
- Implement 15 tool call limit and 3 consecutive same-tool limit
- Detect mass tool calling (>5 tools in one message) with warnings
- Add completion signal detection for information gathering vs action balance
- Identify repetitive patterns and excessive information gathering (>80% ratio)
- Force completion suggestions when approaching turn limits (20+ messages)

MCP Connection Management:
- Fix connection lifecycle to prevent broken pipe errors
- Move cleanup to after execution completes rather than using defer
- Add detailed error logging for execution failures
- Maintain connection stability during tool execution

Progressive Logging Enhancements:
- Real-time tool pattern violation detection and logging
- Completion recommendation logging with specific reasons
- High tool usage pattern warnings with conversation metrics
- Mass tool calling detection with tool lists and message indices

The system now transforms from mysterious hanging agents to complete execution
visibility with intelligent completion detection and graceful tool limiting.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…and ensure final responses

Major fixes to resolve two critical agent execution issues:

## 1. Parallel Tool Call Prevention
- Add `ParallelToolCalls: openai.Bool(false)` to OpenAI API requests
- Prevents AI from making 16+ simultaneous tool calls that overwhelm MCP connections
- Forces sequential tool execution for better reliability and debugging

## 2. Turn Limit Final Response Handling
- Implement custom turn limit logic that provides final responses after 25 tool calls
- Remove hard turn limit failures that left users with "No response available"
- Generate tool-free summary responses when conversation reaches message limits

## 3. Enhanced Turn Limit Management
- Increase GenKit maxTurns to 30 to prevent interference with custom logic
- Move turn limit enforcement from OpenAI plugin to executor for proper handling
- Add comprehensive logging for turn limit detection and final response generation

## Technical Changes
- Modified `NewStationModelGenerator` to disable parallel tool calls
- Updated `generateWithCustomTurnLimit` to handle both success and error cases
- Enhanced turn limit warnings with detailed logging and recovery strategies
- Removed hardcoded maxTurns from dotprompt config for manual management

## Testing Results
- Simple tasks: Complete in ~20s with proper text responses
- Complex tasks: Complete in ~80s with sequential tool usage instead of hanging
- Turn limit cases: Provide final summaries instead of failing silently

Resolves obsessive tool calling behavior and ensures reliable agent execution.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…list

## UI Fixes

### 1. Steps Taken Counter ✅ FIXED
- **Issue**: Agent runs always showed "Steps Taken: 0" in UI
- **Root Cause**: ExecutionResponse.StepsUsed wasn't mapped to AgentExecutionResult.StepsTaken
- **Fix**: Added mapping in agent_execution_engine.go:194
- **Result**: Now shows correct step counts (e.g., "6 steps")

### 2. Duration and Time Display ✅ FIXED
- **Issue**: Runs list showed "Duration: Time:" with empty values
- **Root Cause**: UI tried to access non-existent fields (run.execution_time, run.timestamp)
- **Fix**: Updated App.tsx to use correct fields:
  - Duration: `run.duration_seconds?.toFixed(1)s`
  - Time: `new Date(run.started_at).toLocaleTimeString()`
- **Result**: Shows proper durations (21.4s, 79.0s) and start times (12:46:39 AM)

## Technical Details
- Fixed StepsUsed → StepsTaken mapping for database consistency
- Updated UI to use proper TypeScript types from station.ts
- Rebuilt and embedded UI with fixes

## Testing
- ✅ Steps counter shows correct values in both CLI and UI
- ✅ Duration displays properly in runs list and detail views
- ✅ Time shows formatted start times
- ✅ Backward compatibility maintained for existing runs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
## Major UI Enhancements

### 🏗️ Modular Component Architecture
- **Created** `/ui/src/components/runs/` directory structure
- **Split** large App.tsx into focused, reusable components:
  - `RunsList.tsx` - Individual run cards display
  - `Pagination.tsx` - Smart pagination with ellipsis
  - `StatsTab.tsx` - Comprehensive analytics dashboard
  - `RunsPage.tsx` - Main container with tab switcher

### 📊 Advanced Stats Dashboard
- **Dual-tab interface**: "Runs" and "Stats" with clean switcher
- **Agent filtering**: Dropdown to filter all stats by specific agent
- **4 KPI cards**: Total Runs, Total Tokens, Avg Duration, Tools Used
- **Professional charts** using Recharts library:
  - **Agent Performance**: Bar chart (runs + avg duration)
  - **Status Distribution**: Pie chart (completed/running/failed %)
  - **Duration Trends**: Line chart over last 30 runs
  - **Token Usage**: Stacked bar chart (input/output, last 20 runs)

### 📄 Improved Pagination
- **20 runs per page** for optimal list length
- **Smart navigation** with up to 5 visible page numbers
- **Ellipsis handling** for large datasets
- **Previous/Next controls** with disabled states

### 🎨 Visual Enhancements
- **Tokyo Night themed charts** matching app color scheme
- **Interactive tooltips** with enhanced styling and shadows
- **Responsive design** adapting to different screen sizes
- **Hover states** and smooth transitions throughout

### 🔧 Technical Improvements
- **Added Recharts dependency** for professional chart rendering
- **Proper TypeScript interfaces** for all components
- **Context-aware refresh** maintaining data consistency
- **Performance optimized** with proper React patterns

## New Dependencies
- `recharts: ^3.1.2` - Professional chart library

## Testing Results
- ✅ Stats show real data: 25 runs, 81,415 tokens, 58.5s avg duration
- ✅ Charts render beautifully with proper Tokyo Night theming
- ✅ Agent filtering works across all dashboard components
- ✅ Pagination handles large datasets gracefully
- ✅ Tooltips display detailed information on hover
- ✅ Responsive design works on different screen sizes

The UI now provides enterprise-level analytics and much better user experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…outing

Implement comprehensive support for OpenAI-compatible APIs (Ollama, Anthropic, Together AI, etc.)
with automatic provider detection based on model names.

## New Features

### OpenAI-Compatible Endpoint Support
- Add `--base-url` flag to `stn init` command for custom API endpoints
- Update ProviderConfig struct to include BaseURL field
- Enhance configuration system to store and use `ai_base_url`
- Display base URL in init output when configured

### Intelligent Model Routing
- Auto-detect provider based on model name patterns:
  - gemini-* models → Google Gemini provider
  - All other models → OpenAI-compatible provider
- Override configured provider when model name clearly indicates different provider
- Support for OpenAI, Anthropic, Ollama, Together AI, and any OpenAI-compatible endpoint

### Enhanced Provider Descriptions
- Update provider descriptions to reflect OpenAI-compatible support
- Improve error messages with clear usage guidance
- Better help text and documentation

## Usage Examples

```bash
# Ollama local models
stn init --model llama3 --base-url http://localhost:11434/v1

# Anthropic Claude via OpenAI-compatible API
stn init --model claude-3-sonnet --base-url https://api.anthropic.com/v1

# Together AI
stn init --model meta-llama/Llama-2-7b-chat-hf --base-url https://api.together.xyz/v1

# Auto-detected Gemini (no base-url needed)
stn init --model gemini-2.5-flash

# Auto-detected OpenAI (no base-url needed)
stn init --model gpt-4o
```

## Technical Implementation

- Leverage existing OpenAI plugin BaseURL support in Station's genkit integration
- Add intelligent provider detection in GenKitProvider.Initialize()
- Maintain backward compatibility with existing configurations
- Production-ready with comprehensive error handling and logging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive interactive sync API endpoints for real-time variable resolution
- Create SyncModal component with variable forms, progress tracking, and polling
- Enhance DeclarativeSync service with custom VariableResolver integration
- Implement multi-variable detection to handle all missing variables at once
- Add graceful 404 error handling and automatic data refresh after sync completion
- Replace controlled inputs with uncontrolled inputs to fix input clearing issues
- Integrate Monaco Editor for enhanced JSON configuration editing
- Add proper success messaging and Tokyo Night UI theme consistency

The sync flow now detects missing variables, pauses execution, prompts through UI,
captures user input, saves variables, and continues sync with automatic UI refresh.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove develop branch from workflow, work directly on main
- Document interactive sync flow completion in system state
- Update branch strategy to main + feature/fix branches only
- Reflects simpler development workflow for faster iteration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…eout and error handling

Major fixes implemented:
- Extended timeout from 2min to 10min for complex analysis tasks
- Added 3-retry system with exponential backoff for API failures
- Implemented 40-tool limit per agent to prevent performance issues
- Enhanced final response generation on timeout/error scenarios
- Fixed tool assignment bloat causing silent execution failures

Technical changes:
- pkg/dotprompt/genkit_executor.go: 10-minute timeout, final response generation
- internal/genkit/generate.go: 3-retry logic with exponential backoff
- internal/db/repositories/agent_tools.go: 40-tool limit enforcement
- docs/AGENT_EXECUTION_FLOW.md: Complete execution flow documentation

Performance results:
- 6 consecutive successful runs (100% success rate)
- Ship Security Sandbox Agent: 96.7s-174.6s execution times
- Concurrent execution support: 3 simultaneous runs completed
- Proper error handling: Grype tool failures handled gracefully

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Relocate sync and add server buttons from MCP servers page to environments page
- Enhanced sync modal with validation, loading states, and error handling
- Improved user experience with comprehensive sync results display
- Better logical organization: sync operations are environment-specific
- Added form validation to prevent multiple submissions and require fields
- Fixed sync progress tracking with proper step counting (2/4 → 4/4)
- Enhanced UI feedback with loading spinners and disabled states

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Adds automatic export functionality that exports agents to file-based
config after every create/update operation across MCP, API, and CLI
interfaces. This eliminates manual export steps and prevents sync bugs.

Key changes:
- Created shared AgentExportService for consistent export behavior
- Added automatic export after DB save in API handlers (create/update)
- Added automatic export after DB save in MCP operations
- Added automatic export in CLI intelligent agent creation flow
- Export failures are logged but don't fail main operations
- Files generated in proper dotprompt format with YAML frontmatter

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
The CLI agent create flow used intelligent agent creation which had
dependency issues with the AI model configuration (gpt-5 not found).
Since users primarily create agents via API/MCP interfaces, removed
the CLI create functionality entirely.

Removed:
- agentCreateCmd command definition and registration
- runAgentCreate function and handler
- createAgentLocal function with intelligent agent creation
- Command flags and help text for create command

Automatic export functionality remains intact for API and MCP interfaces.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
…tion

- Add `stn build base` and `stn build env <name>` commands
- Dagger integration for programmatic Docker container creation
- Base image + runtime config injection architecture (286MB)
- Environment-specific builds with declarative configuration
- Automatic Docker daemon integration with proper image IDs
- Smart entrypoint script with config detection
- Complete deployment examples with Docker Compose
- Multi-environment stack configurations
- Production-ready container structure with SQLite database

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Replace hardcoded encryption key with template variable in test deployment
- Update Docker documentation to include ENCRYPTION_KEY requirement
- Clean up deployment examples to use proper template variables
- Document secure key generation with openssl command

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Jared Wolff and others added 28 commits October 13, 2025 18:09
…nd restore CloudShip status indicator

- Remove tool_calls and execution_steps from MCP inspect_run response (no longer used in GenKit execution)
- Remove tool_calls and execution_steps display from CLI runs inspect command
- Preserve database columns for historical data compatibility
- Restore CloudShip status indicator to sidebar footer with real-time polling
- Add CloudShip Integration settings section back to Settings page
- Clean up unused imports and variables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
… smart cleanup

- Increase MCP connection timeout from 10s to 30s for slower servers
- Add loading spinners to both Start Sync and Continue Sync buttons
- Implement smart cleanup for failed MCP configs:
  - New configs that fail on first sync: auto-delete file + DB records
  - Existing configs that break after edit: preserve with clear error messages
- Fix Continue Sync button spinner visibility during variable submission
- Clean up orphaned config files from disk when MCP server creation fails

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This change enables Station to build Docker images that work correctly on both x86_64 (Intel/AMD) and ARM64 (Apple M-series) architectures by automatically detecting the host platform.

**Changes:**
- Add getHostPlatform() to map Go runtime.GOARCH to Docker platform strings
- Add getDockerArch() to map Go arch to Docker CLI download names (x86_64/aarch64)
- Update buildContainer() to use platform detection with Dagger ContainerOpts
- Fix Docker CLI downloads in buildContainer() to use dynamic architecture
- Fix Docker CLI downloads in downloadDockerCLI() for consistency
- Add architecture logging for debugging build issues

**Impact:**
- Linux x86_64 users: No change in behavior
- Mac M-series users: Can now successfully build Docker images without architecture mismatches
- All Docker image builds now target the host's native architecture

Fixes issue where Mac users with Apple Silicon could not build Docker images due to hardcoded x86_64 architecture.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…riables

- Update MCP port from 3000 to 8586 across config and commands
- Fix BuildImageModal to remove SSH port 2222 and use correct MCP port 8586
- Implement provider-specific API key resolution from environment variables
- Support custom image names and tags in build-image API
- Fix CloudShip endpoint to lighthouse.cloudshipai.com:50051
- Include all variables.yml keys with actual environment values
- Simplify container command to 'stn serve' (uses env vars for ports)

This enables production-ready zero-config Docker deployments with
proper environment variable injection and port configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…eakage

SECURITY FIX: Docker image builds were copying variables.yml with actual
secrets (AWS keys, API keys) into the image layers. If pushed to a registry,
these credentials would be exposed.

Changes:
- Modified builder.go to exclude variables.yml when copying environment directories
- Credentials must now be passed exclusively via runtime environment variables
- Added docker-compose zero-config deployment example demonstrating secure credential handling

Docker images are now safe to push to public/private registries without risk
of embedded credentials.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Major documentation overhaul emphasizing Station's core value proposition of trust and control over infrastructure.

**README.md:**
- Complete rewrite focusing on trust/control (run on your infrastructure, keep data private)
- Added "Why Station?" section highlighting security and control benefits
- Expanded Quick Start with multiple provider examples (OpenAI, Anthropic, Gemini, Ollama)
- Added stn down command documentation
- Clarified workflow: UI for tools/bundling, Claude Code/Cursor for agent creation
- Added Zero-Config Deployments section with Docker/Kubernetes/ECS support
- Created comprehensive FinOps agent example in dotprompt format
- Added links to deeper documentation in docs/station/

**CLI Help Messages:**
- Fixed commands.go:636-638: Removed outdated stn mcp init and stn mcp env list suggestions
- Updated stn init next steps to reflect actual workflow (stn up, UI at :8585, Claude integration)
- Fixed develop.go:79-80: Removed non-existent stn agent create command
- Corrected agent creation guidance to use .prompt files or Claude Code/Cursor

**Documentation Structure:**
- Created docs/station/ directory with organized stub files
- Added README.md with complete table of contents
- Created 9 documentation stubs ready for detailed content

All CLI outputs now accurately reflect the documented workflow and available commands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
**Documentation Updates:**
- Complete README rewrite with trust/control messaging
- CLI help fixes: removed outdated commands (stn mcp init, stn mcp env list)
- Fixed agent creation guidance (removed non-existent stn agent create)
- Added comprehensive Quick Start with multiple provider examples

**UI Security Fix:**
- Removed MCP server config display from UI cards to prevent secret exposure
- MCP servers now show only names without command/args details

All documentation now accurately reflects available commands and workflows.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add architecture.md: complete design goals, components, data flow, security model, and design decisions
- Add deployment-modes.md: comprehensive guide for stn up, stdio, serve, standalone, and Docker modes
- Add examples.md: 17KB of real-world agent examples for FinOps, Security, and Deployment use cases
- Fix .gitignore to allow docs/station/ directory (was being ignored)
- Update docs/station/README.md table of contents

Note: Stub files (installation, agent-development, mcp-tools, templates, bundles, zero-config-deployments, docker-compose-deployments) still need content.
- Add Linux, macOS, Windows, Docker installation instructions
- Include troubleshooting section
- Add AI provider configuration
- Document system requirements
Track completion status:
- ✅ architecture.md, deployment-modes.md, examples.md, installation.md
- ⚠️  agent-development.md, mcp-tools.md, templates.md, bundles.md, zero-config-deployments.md, docker-compose-deployments.md

Priority docs (agent-development, mcp-tools, templates) should be completed next to resolve all README 404s.
User feedback: Don't add TODO trackers to git repository
…ctions

This commit completes the Station documentation with comprehensive deployment
guides and fixes critical inaccuracies in existing documentation.

## New Documentation (4 files completed)

1. **bundles.md** (13KB) - Bundle lifecycle documentation
   - MCP/UI/CLI workflows for creating and distributing bundles
   - Bundle installation and environment-specific configuration
   - Registry integration and sharing patterns
   - Complete bundle structure and manifest documentation

2. **templates.md** (13KB) - Go template variable system
   - Web UI Monaco editor workflow (recommended approach)
   - Interactive sync prompts for missing variables
   - MCP integration via Claude/Cursor
   - Multi-environment deployment patterns with variable resolution
   - Security best practices for secrets management

3. **docker-compose-deployments.md** (33KB) - Production deployment patterns
   - Zero-config deployment with automatic bundle installation
   - Environment-specific deployments (dev/staging/prod)
   - Multi-service stacks (FinOps, Security Scanner)
   - Environment variable injection methods
   - Monitoring, logging, scaling, and troubleshooting

4. **zero-config-deployments.md** (31KB) - IAM role-based deployments
   - Automatic credential discovery (AWS IAM roles, ECS task roles, K8s)
   - Deployment patterns for Docker Compose, ECS/Fargate, Kubernetes
   - Multi-environment with variable injection
   - Secrets management (AWS Secrets Manager, Vault, K8s Secrets)
   - Production deployment checklist

## Critical Fixes (3 files corrected)

**agent-development.md:**
- Fixed 15+ instances of wrong commands (`stn tools list` → `stn mcp tools`)
- Fixed agent run syntax (`stn agent run "Agent Name"` → `stn agent run agent-name`)
- Rewrote Method 1 to show MCP via Claude/Cursor as primary workflow
- Repositioned Web UI as Method 3 for MCP server management

**mcp-tools.md:**
- Fixed tool discovery commands (`stn tools list` → `stn mcp tools`)

**examples.md:**
- Fixed 12+ instances of agent run syntax throughout all examples

## Documentation Philosophy

All documentation follows user-facing workflow prioritization:
- **MCP via Claude/Cursor** - Primary interface for management
- **Web UI** - For MCP server config, bundles, syncing, Docker builds
- **CLI** - "Quick and dirty" operations, agent execution, scripting

All commands and examples verified against actual codebase implementation.
No filesystem internals or deep implementation details exposed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- Replace sequential run_x format with UUIDs to prevent collisions across multiple stations
- Add run_uuid and station_run_id to metadata for correlation tracking
- Update correlationID in IngestData calls to use UUIDs
- Enhance MCP create_agent tool descriptions for app/app_type parameters

Modified files:
- cmd/main/handlers/agent/local.go: UUID generation for CLI execution
- internal/mcp/lighthouse_integration.go: UUID generation for MCP execution
- internal/services/agent_execution_engine.go: UUID generation for agent engine
- internal/mcp/tools_setup.go: Enhanced tool parameter documentation

This ensures unique run IDs across distributed Station instances while
maintaining local DB correlation via station_run_id metadata field.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Problem:
When CloudShip management channel executed an agent, Station was sending TWO
run results with different IDs - one UUID from the execution engine and one
with CloudShip's provided run_id.

Root Cause:
The agent execution engine always calls sendToLighthouse() which generates a
UUID and sends via SendRun. The management handler then sends ANOTHER run via
ManagementChannel with CloudShip's original run_id, causing duplicate runs.

Solution:
- Add ExecuteWithOptions() method with skipLighthouse flag
- Management channel now calls ExecuteWithOptions(skipLighthouse=true)
- Execution engine skips its SendRun when skipLighthouse=true
- Management channel remains solely responsible for SendRun with CloudShip's run_id

This ensures CloudShip sees only ONE run result with their provided run_id,
enabling proper correlation and preventing duplicate telemetry.

Modified files:
- internal/services/agent_execution_engine.go: Add ExecuteWithOptions with skipLighthouse
- internal/lighthouse/services/management_handler_service.go: Use ExecuteWithOptions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Implements automatic conversion of OpenAPI 3.0 specifications into MCP servers,
allowing any REST API to be exposed as MCP tools for agent use.

Key Components:
- pkg/openapi: Complete OpenAPI parsing, conversion, and runtime
- Declarative sync integration for .openapi.json file detection
- stn openapi-runtime: MCP server that executes OpenAPI tools via HTTP
- Template variable support for environment-specific configuration
- Automatic MCP server and tool registration

Architecture:
- Parser: Validates OpenAPI 3.0 specs using kin-openapi library
- Converter: Transforms OpenAPI operations into MCP tool definitions
- Runtime: MCP protocol implementation over stdio for tool execution
- Service: Orchestrates parsing, conversion, and config generation

Integration Flow:
1. User adds .openapi.json files to environment directory
2. Sync detects and processes OpenAPI specs separately
3. Each spec converts to MCP server using 'stn openapi-runtime'
4. Tools are registered and available for agent assignment
5. Agents execute tools via standard MCP protocol
6. Runtime translates tool calls to HTTP requests

Features:
- No separate binaries - everything through 'stn' command
- Automatic tool discovery and registration
- Template variables for API endpoints and credentials
- Bundle support for sharing OpenAPI-based setups
- Full MCP protocol compliance

Fixed Issues:
- Updated all converter code for kin-openapi v0.127.0 compatibility
- Schema.Type changed from string to *Types slice
- Added helper functions for type handling

Known Issue:
- MCP client subprocess connection needs debugging
- Runtime works standalone but connection manager reports 'client not initialized'

Documentation:
- Complete workflow documentation in docs/features/openapi-to-mcp.md
- Includes end-to-end user scenarios and technical details
- Replaced manual JSON-RPC handling with server.ServeStdio() from mcp-go
- Added proper input schema parsing for tool parameters (string, number, boolean)
- Fixed protocol version negotiation (was hardcoded to 0.1.0, now uses client version)
- Added comprehensive debug logging for troubleshooting
- OpenAPI tools now successfully initialize and register with Station
- All 6 test tools (github and petstore) discovered and working correctly

Root cause: Original implementation manually handled JSON-RPC protocol and returned
hardcoded protocolVersion 0.1.0, which failed client validation. MCP clients only
accept protocol versions from the valid list: [2025-06-18, 2025-03-26, 2024-11-05].

Solution: Use mcp-go library's server.ServeStdio() which properly handles the
initialize handshake and protocol version negotiation automatically.
…secrets

BREAKING SECURITY FIX - OpenAPI configs now reference source files with template variables

Changes:
- OpenAPI runtime now accepts --spec filepath instead of embedding config in env var
- Generated -mcp.json files reference source .openapi.json (not embed it)
- Source .openapi.json files preserve template variables like {{ .GITHUB_TOKEN }}
- Template rendering happens at runtime, not during conversion
- Bundles can now safely include .openapi.json without exposing secrets

Before (INSECURE):
  github-openapi-mcp.json: { env: { OPENAPI_MCP_CONFIG: "<entire config with secrets>" } }

After (SECURE):
  github-openapi-mcp.json: { args: ["--spec", "github.openapi.json"] }
  github.openapi.json: { securitySchemes: { x-default-credential: "{{ .GITHUB_TOKEN }}" } }

Bundle export will now:
- ✅ Include .openapi.json (source with variables)
- ❌ Exclude -mcp.json (generated, ephemeral)
- ❌ Exclude variables.yml (user secrets)

Users can now share OpenAPI bundles safely without leaking API keys.
Runtime now automatically detects and converts OpenAPI specs to MCP configs

Changes:
- runtime.LoadConfigFromFile() detects OpenAPI specs by 'openapi' field
- runtime.LoadConfigFromOpenAPISpec() converts specs in-memory using parser+converter
- Uses absolute paths for spec files so runtime can find them from any directory
- No more need for separate MCP config files - .openapi.json is all you need

Working flow:
1. User creates github.openapi.json
2. Sync generates github-openapi-mcp.json with: args: ['--spec', '/path/to/github.openapi.json']
3. Runtime loads the OpenAPI spec and converts it on-the-fly
4. Tools are discovered and registered automatically

Tested: ✅ Both github and petstore OpenAPI servers discover 3 tools each
- Unified modal with MCP Config and OpenAPI Spec tabs
- Edit support for OpenAPI specs (detects and fetches .openapi.json source)
- Delete removes both .openapi.json and -openapi-mcp.json files
- Removed dead code (telemetry-test, duplicate AddOpenAPIModal)
- Complete end-to-end workflow tested with agent execution
- Skips API server startup in core mode
- Useful for running multiple stdio instances without port conflicts
- Helps isolate MCP server functionality for testing
- Note: Database locking still prevents recursive stdio (Station calling itself)
- Use relative paths for OpenAPI specs (environments/default/spec.openapi.json)
- Resolve paths using centralized config.GetStationConfigDir() for container compatibility
- Add YAML support to openapi-runtime (auto-converts YAML to JSON)
- Fix path resolution in declarative sync and API endpoints
- Enables OpenAPI MCP servers to work in both host and container environments
- Created comprehensive OpenAPI 3.0 spec for Station management API
- Focused on essential admin endpoints: agents, runs, environments, MCP servers, tools
- Added OpenAPI spec to mcp-servers directory for easy installation
- Supports template variables for flexible deployment ({{ .STATION_API_URL }})
- Embedded in binary - users can now install Station API as MCP tools
- Enables programmatic Station management via agents
- Add OpenAPI badge to MCP Directory cards
- Auto-populate ENVIRONMENT_NAME and STATION_API_URL variables
- Install OpenAPI spec file before MCP config
- Create variables.yml automatically during OpenAPI template installation
- Update Station Management API template with proper metadata
…onfig

- Skip auto-generation of OpenAPI MCP configs if manual config exists
- Prevents station-api and station-api-openapi duplicates
- Checks for {spec-name}.json before auto-generating {spec-name}-openapi-mcp.json
- Fix null mcp_servers response when agent has deleted tools
  - Initialize result as empty array instead of nil slice
  - Add extra nil check in getAgentWithTools to ensure we never return null
- Improve OpenAPI server detection in edit modal
  - Support both template format (mcpServers wrapper) and runtime format
  - Correctly detect OpenAPI servers with nested command/args structure
- Fixes forEach on null error in agent graph rendering
- Fixes OpenAPI edit modal not loading spec files for template-based configs
Implement comprehensive OpenAPI MCP server support with template
variable processing, enabling any REST API with an OpenAPI spec
to become Station agent tools.

Key Features:
- Template variable processing in OpenAPI specs ({{ .VARIABLE }})
- Multi-source variable resolution (env vars, variables.yml)
- Smart OpenAPI spec detection and conversion to MCP tools
- Complete template metadata preservation during installation
- Automatic tool sync on spec updates

Changes:
- cmd/main/openapi_runtime.go: Add template processing pipeline
- pkg/openapi/runtime/server.go: Detect OpenAPI specs in ConfigData
- internal/services/mcp_server_management_service.go: Add InstallTemplateFromDirectory
- internal/api/v1/mcp_management.go: Use new template installation method
- ui/src/App.tsx: Tabbed editor for MCP config and OpenAPI spec

Documentation:
- docs/station/openapi-mcp-servers.md: Complete OpenAPI MCP guide
- docs/station/station-admin-agent.md: Station Admin Agent tutorial
- README.md: Updated with OpenAPI section and examples

Testing:
- Comprehensive edge case validation (6/6 tests passed)
- Multiple OpenAPI servers with different variables
- Mixed MCP server integration (regular + OpenAPI)
- Variable resolution and error handling
- OpenAPI spec updates with smart sync
Bumps [github.com/pressly/goose/v3](https://github.com/pressly/goose) from 3.24.3 to 3.26.0.
- [Release notes](https://github.com/pressly/goose/releases)
- [Changelog](https://github.com/pressly/goose/blob/main/CHANGELOG.md)
- [Commits](pressly/goose@v3.24.3...v3.26.0)

---
updated-dependencies:
- dependency-name: github.com/pressly/goose/v3
  dependency-version: 3.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot force-pushed the dependabot/go_modules/github.com/pressly/goose/v3-3.26.0 branch from 315c610 to 9673162 Compare October 19, 2025 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants