Database & Workflow Catalog Planning¶
Current MVP Baseline (April 2026)¶
An initial local SQLite implementation is now available via src/solidworks_mcp/agents/history_db.py.
Implemented tables:
agent_runstool_eventserror_catalog
This provides immediate value for provenance and troubleshooting by capturing where failures originated and recommended remediation, before adding full template/replay orchestration.
Objective: Create a stateful workflow system that catalogs all SolidWorks MCP operations, enables workflow reuse, supports undo/redo, and provides crash recovery. This is a TODO and just planning.
Problem Statement¶
Current limitations: 1. No persistent record of executed commands 2. Difficult to replay/reuse successful workflows 3. No undo capability without manual intervention 4. Server crash loses context; hard to resume 5. No way to build reusable scripts from ad-hoc AI commands
Vision¶
Enable users to: - Record successful design sequences as templates - Replay workflows on new parts - Branch workflows at any step - Undo/redo individual or batch operations - Resume interrupted sessions from state snapshot - Export workflows as Python/VBA scripts
Core Data Model¶
Database Schema (SQLModel + SQLite)¶
# Core entities
class Workflow(Base):
"""A named sequence of operations"""
id: UUID
name: str
description: str
tags: list[str] # for categorization
created_at: datetime
updated_at: datetime
is_template: bool # if True, available for reuse
icon_class: str # for UI representation
class Operation(Base):
"""A single MCP tool invocation"""
id: UUID
workflow_id: UUID # foreign key
sequence_num: int # order within workflow
tool_name: str # e.g., "create_part", "add_constraint"
input_params: dict # full input JSON
output_result: dict # full result JSON
status: str # "pending", "running", "success", "error"
error_message: str | None
duration_ms: int
timestamp: datetime
class WorkflowSnapshot(Base):
"""Recovery point / state snapshot"""
id: UUID
workflow_id: UUID
operation_id: UUID # after which operation
solidworks_file: dict # {path, hash, metadata}
session_state: dict # server state at this point
created_at: datetime
is_checkpoint: bool # user-created or auto
class WorkflowTemplate(Base):
"""Reusable workflow template"""
id: UUID
source_workflow_id: UUID # derived from this workflow
template_name: str
parameter_mappings: dict # input placeholders
description: str
category: str # "bracket", "assembly", "drawing", etc.
difficulty: str # "beginner", "intermediate", "advanced"
class ExecutionHistory(Base):
"""Track all historical executions for audit/learning"""
id: UUID
workflow_template_id: UUID
execution_time: datetime
success: bool
notes: str | None
output_files: list[str] # generated files
performance_metrics: dict
Database Location¶
project_root/
.solidworks_mcp/
data.db # Main SQLite database
workflows/ # Exported workflow files
template_1.json
template_2.json
snapshots/ # Recovery snapshots
snapshot_xyz_001.json
snapshot_xyz_002.json
Feature Roadmap¶
Phase 1: Basic Recording & Replay (Weeks 1-2)¶
Goal: Record all MCP operations, enable simple replay
Implementation:
1. Create SQLModel database schema
2. Add operation logging to MCP tool handler
3. Create replay_workflow(workflow_id) tool
4. Add basic UI for workflow list
Not included: - State snapshots - Undo/redo - Template parameterization
Phase 2: State Management & Recovery (Weeks 3-4)¶
Goal: Support crash recovery and state awareness
Implementation:
1. Create operation/workflow snapshots after each step
2. Add resume_from_checkpoint(workflow_id, operation_id) tool
3. Store SolidWorks file hash as checkpoint
4. Implement state mismatch detection
Features: - Auto-checkpoint every 5 operations - Manual checkpoint creation - Recovery wizard on server restart
Phase 3: Workflow Templating (Weeks 5-6)¶
Goal: Convert workflows into reusable templates
Implementation:
1. Add parameter mapping system (Jinja2 templates)
2. Create create_template_from_workflow() tool
3. Add template marketplace/catalog
4. Implement execute_template_with_params() tool
Example:
{
"workflow": "create_bracket",
"parameters": {
"width": 80.0,
"height": 60.0,
"material": "Steel AISI 1020",
"output_format": "STEP"
}
}
Phase 4: Undo/Redo System (Weeks 7-8)¶
Goal: Enable operation-level undo/redo
Implementation: 1. Add operation reversibility metadata 2. Implement inverse operations for reversible tools 3. Create undo/redo stack management 4. Add UI for undo tree visualization
Reversible operations: - Create → Delete (with file save before delete) - Add Feature → Rollback (suppress feature) - Modify Property → Store original value
Non-reversible (logged but not undoable): - Export operations - Complex macro executions - Third-party integrations
Phase 5: Batch Scripting (Weeks 9-10)¶
Goal: Export workflows as executable scripts
Implementation: 1. Add Python script generator 2. Add VBA macro script generator 3. Create git-friendly workflow format (YAML?) 4. Implement dry-run mode
Generated Script:
# Generated from workflow: simple_bracket_v2
from solidworks_mcp.client import MCP
async def create_bracket_workflow():
# Step 1: Create part
await mcp.create_part(template="Part Template", ...)
# Step 2: Create sketch
await mcp.create_sketch(plane="Front Plane", ...)
# ... more operations
Data Flow Architecture¶
User Action in Dashboard
↓
LLM Request via Copilot ← → VS Code (prompting)
↓
MCP Tool Handler
↓
Operation Logger (new)
├─ Store in database
├─ Create checkpoint (if needed)
└─ Emit event to UI
↓
SolidWorks COM Call
↓
Result + State Update
↓
Dashboard & History View Update
API Additions¶
New MCP Tools¶
Workflow Management:
- list_workflows(filter: "all" | "templates" | "recent")
- get_workflow_detail(workflow_id)
- delete_workflow(workflow_id)
- rename_workflow(workflow_id, new_name)
Replay & Recovery:
- replay_workflow(workflow_id, skip_steps: list[int])
- resume_from_checkpoint(workflow_id, checkpoint_id)
- get_workflow_status(workflow_id)
- list_recovery_points(workflow_id)
Templating:
- create_template_from_workflow(workflow_id, template_name, params)
- list_templates(category: str)
- execute_template(template_id, parameters: dict)
- export_template_as_yaml(template_id)
Batch/Script:
- export_workflow_as_python(workflow_id)
- export_workflow_as_vba(workflow_id)
- export_workflow_as_yaml(workflow_id)
- validate_workflow(workflow_id, dry_run: bool)
UI/UX Integration¶
Workflow Browser Panel¶
┌─ Workflows (sidebar panel in VS Code)
├─ Recent
│ ├─ ✓ bracket_v2 (1h ago)
│ ├─ ✓ assembly_test (3h ago)
│ └─ ✗ failed_export (6h ago)
├─ Templates
│ ├─ 📋 L-Bracket (beginner)
│ ├─ 📋 Box Assembly (intermediate)
│ └─ 📋 Drawing Package (advanced)
└─ Recovery
└─ 🔄 Resume last interrupted (2 steps ago)
Workflow Detail View¶
Workflow: bracket_v2
Created: 2026-03-20 14:32
Steps: 8
Success Rate: 87.5% (7/8)
History:
[1] ✓ 0.32s create_part(template="Part")
[2] ✓ 0.18s create_sketch(plane="Front Plane")
[3] ✓ 0.25s sketch_line(...)
[4] ✓ 0.41s create_extrusion(depth=15.0)
[5] ✗ 2.15s create_revolve(...) - Error: COM exception
[6] ℹ SKIPPED (on user request)
[7] ✓ 0.18s create_fillet(radius=3.0)
[8] ⏳ PENDING
Actions:
[↷] Undo [↶] Redo [⏸] Pause [⏹] Stop [💾] Save as Template
Undo/Redo Visualization¶
Timeline View:
○─ create_part
├─○─ create_sketch
│ ├─○─ sketch_line
│ ├─○─ sketch_line
│ └─○─ create_extrusion
└─○─ create_fillet
└─→ (current: can redo to ✗ create_revolve)
Undo Stack: [...], create_fillet, create_extrusion
Redo Stack: create_revolve, ...
Implementation Priorities¶
Must Have (MVP)¶
- SQLModel schema design
- Operation logging middleware
- Basic replay_workflow tool
- Simple navigation UI
- Auto-checkpoint logic
Should Have (v1)¶
- State snapshots
- Resume from checkpoint
- Template creation from workflow
- Export to Python script
Nice to Have (v2+)¶
- Full undo/redo system
- Collaborative workflow editing
- Workflow marketplace
- Performance analytics
Risk Mitigation¶
| Risk | Mitigation |
|---|---|
| Large DB size if many operations | Implement archival strategy, compress old workflows |
| State divergence on crash | Regular checksums, validation on restore |
| Complex undo dependencies | Pre-analyze reversibility, document limitations |
| Replay failure due to part changes | State validation, branching instead of replay |
Success Metrics¶
✅ MVP (4 weeks) - [ ] All MCP operations logged to DB - [ ] Can replay simple 3-4 step workflow - [ ] Can recover from checkpoint - [ ] DB file < 10MB for 1000 operations
✅ V1 (8 weeks) - [ ] Create template from workflow works - [ ] Execute template with parameters - [ ] Export as Python script works - [ ] Undo/redo for basic operations
✅ V2 (12 weeks) - [ ] Full undo tree visualization - [ ] Workflow marketplace - [ ] Performance profiling per operation - [ ] Collaborative features
Integration Points¶
With GUI Dashboard (Plan_GUI_Visualization.md)¶
- Workflow list in side panel
- Execution history display
- One-click template creation from running workflow
With Pydantic-AI Agent (Plan_PydanticAI_Integration.md)¶
- Agent auto-creates workflow from multi-step tasks
- Agent suggests template reuse
- Agent learns from workflow success rate
With VBA Generation¶
- Export workflow as VBA macro
- Run macro directly in SolidWorks
- Bi-directional: import recorded VBA as workflow
Timeline¶
Week 1-2: Database schema + operation logging
Week 3-4: State snapshots + recovery
Week 5-6: Template system
Week 7-8: Undo/redo
Week 9-10: Batch scripting + export
Week 11-12: Integration + polish
Estimated total effort: 12 developer-weeks