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:
rob 2026-01-04 01:06:37 -04:00
parent 51633f1e0b
commit 3fb46c2111
9 changed files with 56 additions and 56 deletions

View File

@ -28,7 +28,7 @@ Artifact Editor is a standalone PyQt6-based GUI for creating visual artifacts (d
### Project Ecosystem ### Project Ecosystem
This is part of a three-project stack: 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) 2. **Orchestrated Discussions** - Conversation orchestration (launches this editor)
3. **Artifact Editor** (this) - Visual artifact creation 3. **Artifact Editor** (this) - Visual artifact creation
@ -101,7 +101,7 @@ src/artifact_editor/
### AI Integration ### AI Integration
Uses the `artifact-ai` SmartTool for AI-powered generation: Uses the `artifact-ai` CmdForge tool for AI-powered generation:
```python ```python
subprocess.run( subprocess.run(
["artifact-ai", "--format", format_type, "--instruction", instruction], ["artifact-ai", "--format", format_type, "--instruction", instruction],
@ -112,12 +112,12 @@ subprocess.run(
No direct AI provider imports - follows Unix philosophy. 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 ├── artifact-ai/ # AI-powered artifact generation/modification
│ └── config.yaml # Supports all formats: plantuml, mermaid, openscad, svg, excalidraw, code │ └── config.yaml # Supports all formats: plantuml, mermaid, openscad, svg, excalidraw, code
└── artifact-export/ # Render source to binary formats (PNG, SVG, PDF) └── 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 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 ### Supported Formats

View File

@ -1,23 +1,23 @@
# Artifact Editor - AI-enhanced visual artifact creation # Artifact Editor - AI-enhanced visual artifact creation
# #
# Multi-stage build: # Multi-stage build:
# Stage 1: Build SmartTools base # Stage 1: Build CmdForge base
# Stage 2: Build Artifact Editor with SmartTools # Stage 2: Build Artifact Editor with CmdForge
# #
# Build: docker build -t artifact-editor . # Build: docker build -t artifact-editor .
# Run: docker run -it --rm artifact-editor artifact-ai --help # Run: docker run -it --rm artifact-editor artifact-ai --help
# GUI: See usage examples at bottom # 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 && \ 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" echo "Clone failed - will need COPY in next stage"
RUN pip install --no-cache-dir -e . || true 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 WORKDIR /app
# Copy SmartTools from stage 1 # Copy CmdForge from stage 1
COPY --from=smarttools /smarttools /smarttools COPY --from=cmdforge /cmdforge /cmdforge
# Install SmartTools # Install CmdForge
RUN pip install --no-cache-dir -e /smarttools RUN pip install --no-cache-dir -e /cmdforge
# Copy Artifact Editor files # Copy Artifact Editor files
COPY pyproject.toml README.md ./ COPY pyproject.toml README.md ./
COPY src/ ./src/ COPY src/ ./src/
COPY smarttools/ ./smarttools/ COPY cmdforge/ ./cmdforge/
COPY install.sh ./ COPY install.sh ./
# Install Artifact Editor and dependencies # Install Artifact Editor and dependencies
@ -76,14 +76,14 @@ RUN pip install --no-cache-dir -e . && \
pip install --no-cache-dir PyQt6 pygments pip install --no-cache-dir PyQt6 pygments
# Create directories # 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 RUN ./install.sh
# Install SmartTools example tools # Install CmdForge example tools
RUN python /smarttools/examples/install.py 2>/dev/null || true && \ RUN python /cmdforge/examples/install.py 2>/dev/null || true && \
smarttools refresh 2>/dev/null || true cmdforge refresh 2>/dev/null || true
# Add local bin to PATH # Add local bin to PATH
ENV PATH="/root/.local/bin:${PATH}" ENV PATH="/root/.local/bin:${PATH}"
@ -91,7 +91,7 @@ ENV PATH="/root/.local/bin:${PATH}"
# Healthcheck - verify CLI tools work # Healthcheck - verify CLI tools work
RUN artifact-ai --help && \ RUN artifact-ai --help && \
artifact-export --help && \ artifact-export --help && \
smarttools list | head -5 cmdforge list | head -5
# Default: show help # Default: show help
CMD ["artifact-ai", "--help"] CMD ["artifact-ai", "--help"]

View File

@ -59,7 +59,7 @@ Run without installing anything locally (all dependencies included):
git clone https://gitea.brrd.tech/rob/artifact-editor.git git clone https://gitea.brrd.tech/rob/artifact-editor.git
cd artifact-editor cd artifact-editor
# Build (automatically clones SmartTools from Gitea) # Build (automatically clones CmdForge from Gitea)
docker-compose build docker-compose build
# Run tests # Run tests
@ -164,14 +164,14 @@ artifact-editor/
│ ├── code.py # Pygments-based syntax highlighting │ ├── code.py # Pygments-based syntax highlighting
│ ├── svg.py # Direct SVG editing with UI components │ ├── svg.py # Direct SVG editing with UI components
│ └── excalidraw.py # Hand-drawn style diagrams │ └── 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-ai/ # AI-powered artifact generation/modification
└── artifact-export/ # Render source to binary formats └── 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 ### 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 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 ## Keyboard Shortcuts

View File

@ -1,12 +1,12 @@
# Artifact Editor - AI-enhanced diagram and artifact creation # Artifact Editor - AI-enhanced diagram and artifact creation
# #
# Quick Start: # 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 test # Run tests
# docker-compose run --rm cli artifact-ai --help # docker-compose run --rm cli artifact-ai --help
# #
# Dependencies: # Dependencies:
# - SmartTools (cloned automatically from Gitea during build) # - CmdForge (cloned automatically from Gitea during build)
version: '3.8' version: '3.8'
@ -19,10 +19,10 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
image: artifact-editor:latest image: artifact-editor:latest
volumes: volumes:
- smarttools-data:/root/.smarttools - cmdforge-data:/root/.cmdforge
- /tmp/artifacts:/tmp/artifacts - /tmp/artifacts:/tmp/artifacts
command: ["artifact-ai", "--help"] command: ["artifact-ai", "--help"]
@ -34,16 +34,16 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
image: artifact-editor:latest image: artifact-editor:latest
volumes: volumes:
- smarttools-data:/root/.smarttools - cmdforge-data:/root/.cmdforge
command: > command: >
bash -c " bash -c "
echo '=== Artifact Editor Tests ===' echo '=== Artifact Editor Tests ==='
echo '' echo ''
echo '1. Checking SmartTools...' echo '1. Checking CmdForge...'
smarttools list | head -5 cmdforge list | head -5
echo '' echo ''
echo '2. Checking artifact-ai...' echo '2. Checking artifact-ai...'
artifact-ai --help > /dev/null && echo 'artifact-ai: OK' artifact-ai --help > /dev/null && echo 'artifact-ai: OK'
@ -65,13 +65,13 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
image: artifact-editor:latest image: artifact-editor:latest
environment: environment:
- DISPLAY=${DISPLAY:-:0} - DISPLAY=${DISPLAY:-:0}
- QT_QPA_PLATFORM=xcb - QT_QPA_PLATFORM=xcb
volumes: volumes:
- smarttools-data:/root/.smarttools - cmdforge-data:/root/.cmdforge
- /tmp/artifacts:/tmp/artifacts - /tmp/artifacts:/tmp/artifacts
- /tmp/.X11-unix:/tmp/.X11-unix:ro - /tmp/.X11-unix:/tmp/.X11-unix:ro
command: ["artifact-editor"] command: ["artifact-editor"]
@ -85,24 +85,24 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
SMARTTOOLS_REPO: https://gitea.brrd.tech/rob/SmartTools.git CMDFORGE_REPO: https://gitea.brrd.tech/rob/CmdForge.git
image: artifact-editor:latest image: artifact-editor:latest
volumes: volumes:
- smarttools-data:/root/.smarttools - cmdforge-data:/root/.cmdforge
- /tmp/artifacts:/tmp/artifacts - /tmp/artifacts:/tmp/artifacts
command: ["/bin/bash"] command: ["/bin/bash"]
stdin_open: true stdin_open: true
tty: true tty: true
volumes: volumes:
smarttools-data: cmdforge-data:
# Persists ~/.smarttools between container runs # Persists ~/.cmdforge between container runs
# ============================================================================== # ==============================================================================
# Usage Examples # Usage Examples
# ============================================================================== # ==============================================================================
# #
# Build (fetches SmartTools from Gitea automatically): # Build (fetches CmdForge from Gitea automatically):
# docker-compose build # docker-compose build
# #
# Run tests: # Run tests:

View File

@ -5,10 +5,10 @@ set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_DIR="$HOME/.local/bin" INSTALL_DIR="$HOME/.local/bin"
SMARTTOOLS_DIR="$HOME/.smarttools" CMDFORGE_DIR="$HOME/.cmdforge"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
mkdir -p "$SMARTTOOLS_DIR" mkdir -p "$CMDFORGE_DIR"
# Create wrapper script for artifact-editor GUI # Create wrapper script for artifact-editor GUI
cat > "$INSTALL_DIR/artifact-editor" << 'WRAPPER' cat > "$INSTALL_DIR/artifact-editor" << 'WRAPPER'
@ -23,19 +23,19 @@ WRAPPER
sed -i "s|PLACEHOLDER_DIR|$SCRIPT_DIR|g" "$INSTALL_DIR/artifact-editor" sed -i "s|PLACEHOLDER_DIR|$SCRIPT_DIR|g" "$INSTALL_DIR/artifact-editor"
chmod +x "$INSTALL_DIR/artifact-editor" chmod +x "$INSTALL_DIR/artifact-editor"
# Install SmartTools # Install CmdForge tools
if [ -d "$SCRIPT_DIR/smarttools" ]; then if [ -d "$SCRIPT_DIR/cmdforge" ]; then
echo "Installing SmartTools..." echo "Installing CmdForge tools..."
for tool in "$SCRIPT_DIR/smarttools"/*/; do for tool in "$SCRIPT_DIR/cmdforge"/*/; do
tool_name=$(basename "$tool") tool_name=$(basename "$tool")
cp -r "$tool" "$SMARTTOOLS_DIR/" cp -r "$tool" "$CMDFORGE_DIR/"
# Create CLI wrapper # Create CLI wrapper
cat > "$INSTALL_DIR/$tool_name" << WRAPPER cat > "$INSTALL_DIR/$tool_name" << WRAPPER
#!/bin/bash #!/bin/bash
# SmartTools wrapper for '$tool_name' # CmdForge wrapper for '$tool_name'
# Auto-generated # Auto-generated
exec /usr/bin/python3 -m smarttools.runner $tool_name "\$@" exec /usr/bin/python3 -m cmdforge.runner $tool_name "\$@"
WRAPPER WRAPPER
chmod +x "$INSTALL_DIR/$tool_name" chmod +x "$INSTALL_DIR/$tool_name"
echo " Installed: $tool_name" echo " Installed: $tool_name"
@ -49,7 +49,7 @@ echo "Usage:"
echo " artifact-editor diagram.puml # Edit existing file" echo " artifact-editor diagram.puml # Edit existing file"
echo " artifact-editor -o new.puml # Create new file" echo " artifact-editor -o new.puml # Create new file"
echo "" echo ""
echo "SmartTools:" echo "CmdForge tools:"
echo " artifact-ai --format plantuml --instruction 'Create a class diagram'" echo " artifact-ai --format plantuml --instruction 'Create a class diagram'"
echo " artifact-export --format plantuml --to output.svg" echo " artifact-export --format plantuml --to output.svg"
echo "" echo ""

View File

@ -28,7 +28,7 @@ classifiers = [
] ]
dependencies = [ dependencies = [
"PyYAML>=6.0", "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 # GUI is required for the editor - include by default
"PyQt6>=6.4.0", "PyQt6>=6.4.0",
"QScintilla>=2.14.0", "QScintilla>=2.14.0",

View File

@ -2410,7 +2410,7 @@ class ArtifactEditorWindow(QMainWindow):
"• Structured element/relationship dialogs<br>" "• Structured element/relationship dialogs<br>"
"• AI-powered diagram generation<br>" "• AI-powered diagram generation<br>"
"• Voice input via dictation<br><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.setStandardButtons(QMessageBox.StandardButton.Ok)
msg.exec() msg.exec()