refactor: Rename SmartTools to CmdForge
The SmartTools project was renamed to CmdForge due to name conflict with another project. This updates all references throughout the codebase: - Renamed smarttools/ directory to cmdforge/ - Updated pyproject.toml dependency URL - Updated Dockerfile build stages and paths - Updated docker-compose.yml service configs - Updated install.sh paths and comments - Updated documentation (README.md, CLAUDE.md) - Updated gui.py ecosystem reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
51633f1e0b
commit
3fb46c2111
12
CLAUDE.md
12
CLAUDE.md
|
|
@ -28,7 +28,7 @@ Artifact Editor is a standalone PyQt6-based GUI for creating visual artifacts (d
|
|||
### Project Ecosystem
|
||||
|
||||
This is part of a three-project stack:
|
||||
1. **SmartTools** - AI provider abstraction and tool execution (dependency)
|
||||
1. **CmdForge** - AI provider abstraction and tool execution (dependency)
|
||||
2. **Orchestrated Discussions** - Conversation orchestration (launches this editor)
|
||||
3. **Artifact Editor** (this) - Visual artifact creation
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ src/artifact_editor/
|
|||
|
||||
### AI Integration
|
||||
|
||||
Uses the `artifact-ai` SmartTool for AI-powered generation:
|
||||
Uses the `artifact-ai` CmdForge tool for AI-powered generation:
|
||||
```python
|
||||
subprocess.run(
|
||||
["artifact-ai", "--format", format_type, "--instruction", instruction],
|
||||
|
|
@ -112,12 +112,12 @@ subprocess.run(
|
|||
|
||||
No direct AI provider imports - follows Unix philosophy.
|
||||
|
||||
### SmartTools
|
||||
### CmdForge Tools
|
||||
|
||||
Artifact Editor includes SmartTools for CLI/scripting use:
|
||||
Artifact Editor includes CmdForge tools for CLI/scripting use:
|
||||
|
||||
```
|
||||
smarttools/
|
||||
cmdforge/
|
||||
├── artifact-ai/ # AI-powered artifact generation/modification
|
||||
│ └── config.yaml # Supports all formats: plantuml, mermaid, openscad, svg, excalidraw, code
|
||||
└── artifact-export/ # Render source to binary formats (PNG, SVG, PDF)
|
||||
|
|
@ -139,7 +139,7 @@ cat diagram.puml | artifact-export --format plantuml --to output.svg
|
|||
cat model.scad | artifact-export --format openscad --to output.png
|
||||
```
|
||||
|
||||
These tools are installed to `~/.smarttools/` and `~/.local/bin/` by `./install.sh`.
|
||||
These tools are installed to `~/.cmdforge/` and `~/.local/bin/` by `./install.sh`.
|
||||
|
||||
### Supported Formats
|
||||
|
||||
|
|
|
|||
36
Dockerfile
36
Dockerfile
|
|
@ -1,23 +1,23 @@
|
|||
# Artifact Editor - AI-enhanced visual artifact creation
|
||||
#
|
||||
# Multi-stage build:
|
||||
# Stage 1: Build SmartTools base
|
||||
# Stage 2: Build Artifact Editor with SmartTools
|
||||
# Stage 1: Build CmdForge base
|
||||
# Stage 2: Build Artifact Editor with CmdForge
|
||||
#
|
||||
# Build: docker build -t artifact-editor .
|
||||
# Run: docker run -it --rm artifact-editor artifact-ai --help
|
||||
# GUI: See usage examples at bottom
|
||||
|
||||
# ==============================================================================
|
||||
# Stage 1: SmartTools Base
|
||||
# Stage 1: CmdForge Base
|
||||
# ==============================================================================
|
||||
FROM python:3.12-slim AS smarttools
|
||||
FROM python:3.12-slim AS cmdforge
|
||||
|
||||
WORKDIR /smarttools
|
||||
WORKDIR /cmdforge
|
||||
|
||||
ARG SMARTTOOLS_REPO=https://gitea.brrd.tech/rob/SmartTools.git
|
||||
ARG CMDFORGE_REPO=https://gitea.brrd.tech/rob/CmdForge.git
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends git && \
|
||||
git clone ${SMARTTOOLS_REPO} . || \
|
||||
git clone ${CMDFORGE_REPO} . || \
|
||||
echo "Clone failed - will need COPY in next stage"
|
||||
|
||||
RUN pip install --no-cache-dir -e . || true
|
||||
|
|
@ -59,16 +59,16 @@ RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
|||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy SmartTools from stage 1
|
||||
COPY --from=smarttools /smarttools /smarttools
|
||||
# Copy CmdForge from stage 1
|
||||
COPY --from=cmdforge /cmdforge /cmdforge
|
||||
|
||||
# Install SmartTools
|
||||
RUN pip install --no-cache-dir -e /smarttools
|
||||
# Install CmdForge
|
||||
RUN pip install --no-cache-dir -e /cmdforge
|
||||
|
||||
# Copy Artifact Editor files
|
||||
COPY pyproject.toml README.md ./
|
||||
COPY src/ ./src/
|
||||
COPY smarttools/ ./smarttools/
|
||||
COPY cmdforge/ ./cmdforge/
|
||||
COPY install.sh ./
|
||||
|
||||
# Install Artifact Editor and dependencies
|
||||
|
|
@ -76,14 +76,14 @@ RUN pip install --no-cache-dir -e . && \
|
|||
pip install --no-cache-dir PyQt6 pygments
|
||||
|
||||
# Create directories
|
||||
RUN mkdir -p /root/.smarttools /root/.local/bin
|
||||
RUN mkdir -p /root/.cmdforge /root/.local/bin
|
||||
|
||||
# Install artifact SmartTools
|
||||
# Install artifact CmdForge tools
|
||||
RUN ./install.sh
|
||||
|
||||
# Install SmartTools example tools
|
||||
RUN python /smarttools/examples/install.py 2>/dev/null || true && \
|
||||
smarttools refresh 2>/dev/null || true
|
||||
# Install CmdForge example tools
|
||||
RUN python /cmdforge/examples/install.py 2>/dev/null || true && \
|
||||
cmdforge refresh 2>/dev/null || true
|
||||
|
||||
# Add local bin to PATH
|
||||
ENV PATH="/root/.local/bin:${PATH}"
|
||||
|
|
@ -91,7 +91,7 @@ ENV PATH="/root/.local/bin:${PATH}"
|
|||
# Healthcheck - verify CLI tools work
|
||||
RUN artifact-ai --help && \
|
||||
artifact-export --help && \
|
||||
smarttools list | head -5
|
||||
cmdforge list | head -5
|
||||
|
||||
# Default: show help
|
||||
CMD ["artifact-ai", "--help"]
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -59,7 +59,7 @@ Run without installing anything locally (all dependencies included):
|
|||
git clone https://gitea.brrd.tech/rob/artifact-editor.git
|
||||
cd artifact-editor
|
||||
|
||||
# Build (automatically clones SmartTools from Gitea)
|
||||
# Build (automatically clones CmdForge from Gitea)
|
||||
docker-compose build
|
||||
|
||||
# Run tests
|
||||
|
|
@ -164,14 +164,14 @@ artifact-editor/
|
|||
│ ├── code.py # Pygments-based syntax highlighting
|
||||
│ ├── svg.py # Direct SVG editing with UI components
|
||||
│ └── excalidraw.py # Hand-drawn style diagrams
|
||||
└── smarttools/ # CLI tools following Unix philosophy
|
||||
└── cmdforge/ # CLI tools following Unix philosophy
|
||||
├── artifact-ai/ # AI-powered artifact generation/modification
|
||||
└── artifact-export/ # Render source to binary formats
|
||||
```
|
||||
|
||||
## CLI SmartTools
|
||||
## CLI CmdForge Tools
|
||||
|
||||
In addition to the GUI, artifact-editor provides command-line SmartTools:
|
||||
In addition to the GUI, artifact-editor provides command-line CmdForge tools:
|
||||
|
||||
### artifact-ai
|
||||
|
||||
|
|
@ -202,7 +202,7 @@ cat model.scad | artifact-export --format openscad --to output.png
|
|||
cat flowchart.mmd | artifact-export --format mermaid --to output.pdf
|
||||
```
|
||||
|
||||
Install SmartTools with `./install.sh` (requires SmartTools framework).
|
||||
Install CmdForge tools with `./install.sh` (requires CmdForge framework).
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
# Artifact Editor - AI-enhanced diagram and artifact creation
|
||||
#
|
||||
# Quick Start:
|
||||
# docker-compose build # Build the image (clones SmartTools from Gitea)
|
||||
# docker-compose build # Build the image (clones CmdForge from Gitea)
|
||||
# docker-compose run --rm test # Run tests
|
||||
# docker-compose run --rm cli artifact-ai --help
|
||||
#
|
||||
# Dependencies:
|
||||
# - SmartTools (cloned automatically from Gitea during build)
|
||||
# - CmdForge (cloned automatically from Gitea during build)
|
||||
|
||||
version: '3.8'
|
||||
|
||||
|
|
@ -19,10 +19,10 @@ services:
|
|||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git
|
||||
CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
|
||||
image: artifact-editor:latest
|
||||
volumes:
|
||||
- smarttools-data:/root/.smarttools
|
||||
- cmdforge-data:/root/.cmdforge
|
||||
- /tmp/artifacts:/tmp/artifacts
|
||||
command: ["artifact-ai", "--help"]
|
||||
|
||||
|
|
@ -34,16 +34,16 @@ services:
|
|||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git
|
||||
CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
|
||||
image: artifact-editor:latest
|
||||
volumes:
|
||||
- smarttools-data:/root/.smarttools
|
||||
- cmdforge-data:/root/.cmdforge
|
||||
command: >
|
||||
bash -c "
|
||||
echo '=== Artifact Editor Tests ==='
|
||||
echo ''
|
||||
echo '1. Checking SmartTools...'
|
||||
smarttools list | head -5
|
||||
echo '1. Checking CmdForge...'
|
||||
cmdforge list | head -5
|
||||
echo ''
|
||||
echo '2. Checking artifact-ai...'
|
||||
artifact-ai --help > /dev/null && echo 'artifact-ai: OK'
|
||||
|
|
@ -65,13 +65,13 @@ services:
|
|||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git
|
||||
CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
|
||||
image: artifact-editor:latest
|
||||
environment:
|
||||
- DISPLAY=${DISPLAY:-:0}
|
||||
- QT_QPA_PLATFORM=xcb
|
||||
volumes:
|
||||
- smarttools-data:/root/.smarttools
|
||||
- cmdforge-data:/root/.cmdforge
|
||||
- /tmp/artifacts:/tmp/artifacts
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:ro
|
||||
command: ["artifact-editor"]
|
||||
|
|
@ -85,24 +85,24 @@ services:
|
|||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git
|
||||
CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
|
||||
image: artifact-editor:latest
|
||||
volumes:
|
||||
- smarttools-data:/root/.smarttools
|
||||
- cmdforge-data:/root/.cmdforge
|
||||
- /tmp/artifacts:/tmp/artifacts
|
||||
command: ["/bin/bash"]
|
||||
stdin_open: true
|
||||
tty: true
|
||||
|
||||
volumes:
|
||||
smarttools-data:
|
||||
# Persists ~/.smarttools between container runs
|
||||
cmdforge-data:
|
||||
# Persists ~/.cmdforge between container runs
|
||||
|
||||
# ==============================================================================
|
||||
# Usage Examples
|
||||
# ==============================================================================
|
||||
#
|
||||
# Build (fetches SmartTools from Gitea automatically):
|
||||
# Build (fetches CmdForge from Gitea automatically):
|
||||
# docker-compose build
|
||||
#
|
||||
# Run tests:
|
||||
|
|
|
|||
20
install.sh
20
install.sh
|
|
@ -5,10 +5,10 @@ set -e
|
|||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
INSTALL_DIR="$HOME/.local/bin"
|
||||
SMARTTOOLS_DIR="$HOME/.smarttools"
|
||||
CMDFORGE_DIR="$HOME/.cmdforge"
|
||||
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
mkdir -p "$SMARTTOOLS_DIR"
|
||||
mkdir -p "$CMDFORGE_DIR"
|
||||
|
||||
# Create wrapper script for artifact-editor GUI
|
||||
cat > "$INSTALL_DIR/artifact-editor" << 'WRAPPER'
|
||||
|
|
@ -23,19 +23,19 @@ WRAPPER
|
|||
sed -i "s|PLACEHOLDER_DIR|$SCRIPT_DIR|g" "$INSTALL_DIR/artifact-editor"
|
||||
chmod +x "$INSTALL_DIR/artifact-editor"
|
||||
|
||||
# Install SmartTools
|
||||
if [ -d "$SCRIPT_DIR/smarttools" ]; then
|
||||
echo "Installing SmartTools..."
|
||||
for tool in "$SCRIPT_DIR/smarttools"/*/; do
|
||||
# Install CmdForge tools
|
||||
if [ -d "$SCRIPT_DIR/cmdforge" ]; then
|
||||
echo "Installing CmdForge tools..."
|
||||
for tool in "$SCRIPT_DIR/cmdforge"/*/; do
|
||||
tool_name=$(basename "$tool")
|
||||
cp -r "$tool" "$SMARTTOOLS_DIR/"
|
||||
cp -r "$tool" "$CMDFORGE_DIR/"
|
||||
|
||||
# Create CLI wrapper
|
||||
cat > "$INSTALL_DIR/$tool_name" << WRAPPER
|
||||
#!/bin/bash
|
||||
# SmartTools wrapper for '$tool_name'
|
||||
# CmdForge wrapper for '$tool_name'
|
||||
# Auto-generated
|
||||
exec /usr/bin/python3 -m smarttools.runner $tool_name "\$@"
|
||||
exec /usr/bin/python3 -m cmdforge.runner $tool_name "\$@"
|
||||
WRAPPER
|
||||
chmod +x "$INSTALL_DIR/$tool_name"
|
||||
echo " Installed: $tool_name"
|
||||
|
|
@ -49,7 +49,7 @@ echo "Usage:"
|
|||
echo " artifact-editor diagram.puml # Edit existing file"
|
||||
echo " artifact-editor -o new.puml # Create new file"
|
||||
echo ""
|
||||
echo "SmartTools:"
|
||||
echo "CmdForge tools:"
|
||||
echo " artifact-ai --format plantuml --instruction 'Create a class diagram'"
|
||||
echo " artifact-export --format plantuml --to output.svg"
|
||||
echo ""
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ classifiers = [
|
|||
]
|
||||
dependencies = [
|
||||
"PyYAML>=6.0",
|
||||
"smarttools @ git+https://gitea.brrd.tech/rob/SmartTools.git",
|
||||
"cmdforge @ git+https://gitea.brrd.tech/rob/CmdForge.git",
|
||||
# GUI is required for the editor - include by default
|
||||
"PyQt6>=6.4.0",
|
||||
"QScintilla>=2.14.0",
|
||||
|
|
|
|||
|
|
@ -2410,7 +2410,7 @@ class ArtifactEditorWindow(QMainWindow):
|
|||
"• Structured element/relationship dialogs<br>"
|
||||
"• AI-powered diagram generation<br>"
|
||||
"• Voice input via dictation<br><br>"
|
||||
"<i>Part of the SmartTools ecosystem</i>"
|
||||
"<i>Part of the CmdForge ecosystem</i>"
|
||||
)
|
||||
msg.setStandardButtons(QMessageBox.StandardButton.Ok)
|
||||
msg.exec()
|
||||
|
|
|
|||
Loading…
Reference in New Issue