artifact-editor/README.md

136 lines
3.9 KiB
Markdown

# Artifact Editor
**AI-enhanced editor for creating diagrams, sketches, 3D models, and other artifacts from code.**
A standalone editor that can be launched from any application to create visual artifacts. Designed to integrate with discussion tools, documentation systems, and IDEs.
## Vision
Enable users to create rich visual artifacts through multiple input methods:
- **Code editing** - Write Mermaid, PlantUML, OpenSCAD, SVG directly
- **Graphical interface** - Drag-and-drop, visual editing
- **Voice input** - Describe what you want, AI generates the code
- **AI assistance** - "Add a database to this diagram", "Make the cube hollow"
## Supported Artifact Types
| Type | Description | Output Formats |
|------|-------------|----------------|
| `mermaid` | Flowcharts, sequence, ER, state diagrams | SVG, PNG, PDF |
| `plantuml` | UML diagrams (class, sequence, etc.) | SVG, PNG |
| `openscad` | 3D parametric CAD models | STL, PNG, SVG |
| `solidpython` | Python-based 3D CAD (via SolidPython) | STL, PNG, SCAD |
| `svg` | Raw SVG vector graphics | SVG |
| `asciiart` | ASCII/Unicode box drawing | TXT, PNG |
| `excalidraw` | Hand-drawn style diagrams | SVG, PNG |
| `code` | Syntax-highlighted code snippets | SVG, PNG, HTML |
## Installation
```bash
pip install artifact-editor
# Optional renderers
npm install -g @mermaid-js/mermaid-cli # For Mermaid
sudo apt install openscad # For 3D CAD
pip install solidpython2 # For SolidPython
```
## Usage
### As a Standalone Editor
```bash
# Launch editor for a new Mermaid diagram
artifact-editor --type mermaid --output diagram.svg
# Edit an existing artifact
artifact-editor --type openscad --output model.stl --initial-file model.scad
# Headless AI generation
artifact-editor --type mermaid --output flow.svg --headless \
--prompt "Create a flowchart for user authentication"
```
### Integration with Other Applications
The editor follows a simple contract for integration:
```bash
# Launch
artifact-editor --type TYPE --output /path/to/output.svg [--project NAME]
# Exit behavior:
# - Exit code 0: Saved successfully
# stdout: "ARTIFACT_SAVED:/path/to/output.svg"
#
# - Exit code 1: Cancelled by user
# (no output)
#
# - Exit code 2: Error
# stderr: error message
```
Example integration (Python):
```python
import subprocess
result = subprocess.run([
"artifact-editor",
"--type", "mermaid",
"--output", "/tmp/diagram.svg",
"--project", "my-project"
], capture_output=True, text=True)
if result.returncode == 0:
# Parse output to get file path
for line in result.stdout.split('\n'):
if line.startswith("ARTIFACT_SAVED:"):
artifact_path = line.split(":", 1)[1]
print(f"Created: {artifact_path}")
```
## Architecture
```
artifact-editor/
├── src/artifact_editor/
│ ├── cli.py # CLI entry point
│ ├── editor.py # TUI editor (urwid-based)
│ ├── ai_assist.py # AI generation/modification
│ ├── renderers/ # Convert source to visual output
│ │ ├── mermaid.py
│ │ ├── plantuml.py
│ │ ├── openscad.py
│ │ ├── svg.py
│ │ └── ...
│ └── ui/ # UI components
│ ├── code_editor.py
│ ├── preview.py
│ └── ai_panel.py
```
## Roadmap
- [ ] Basic TUI with code editor and preview
- [ ] Mermaid renderer
- [ ] OpenSCAD/SolidPython renderer
- [ ] AI assistance integration (via SmartTools)
- [ ] Voice input (via SmartTools dictate)
- [ ] PlantUML renderer
- [ ] SVG direct editing
- [ ] Excalidraw-style sketching
- [ ] Plugin system for custom renderers
## Integration Goals
This editor is designed to integrate with:
- **orchestrated-discussions** - Add artifacts to discussion comments
- **Documentation systems** - Embed diagrams in docs
- **IDEs** - Quick diagram creation from code
- **Chat applications** - Share visual explanations
## License
MIT