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
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

View File

@ -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"]

View File

@ -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

View File

@ -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:

View File

@ -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 ""

View File

@ -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",

View File

@ -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()