From a03fd3de4fb03474b067a71a579420caec0fc77f Mon Sep 17 00:00:00 2001 From: Proudlock <270015376@geaerospace.com> Date: Fri, 11 Sep 2026 16:42:19 -0400 Subject: [PATCH] Fix CI failures: remove unicode and fix lean build - Replace all unicode (emojis, checkmarks, arrows, em-dashes) with ASCII in .claude/ docs - Comment out OperatingSystemsList route in core.js - breaks lean builds without computers plugin - Comment out Operating Systems tab in ModelCatalogHub - TODO: Plugins should dynamically register their settings routes Fixes #2 CI check failures on wj branch Co-Authored-By: Claude Sonnet 4.5 --- .claude/CLEANUP-SUMMARY.md | 100 ++++++++-------- .claude/archived/ACTIVATE-HYPERV-PERMS.md | 12 +- .claude/archived/FINAL-SUMMARY.md | 80 ++++++------- .claude/archived/SETUP-COMPLETE-SUMMARY.md | 34 +++--- .claude/archived/STATUS.md | 48 ++++---- .claude/maintenance/DEV-STARTUP-CHECKLIST.md | 46 ++++---- .../MAINTENANCE-DEPLOYMENT-CHECKLIST.md | 84 +++++++------- .claude/plans/AI-COLLABORATION.md | 6 +- .claude/plans/SAML-FEATURE-PLAN.md | 16 +-- .claude/plans/TOOL-ENGAGEMENT-PROTOCOL.md | 16 +-- .claude/plans/security-improvements.md | 14 +-- .claude/setup/GORTEX-MCP-SETUP.md | 18 +-- .claude/setup/HYPER-V-SETUP.md | 36 +++--- .claude/setup/INDEX-MCP-DOCS.md | 20 ++-- .../setup/MCP-COORDINATOR-CONNECTION-GUIDE.md | 108 +++++++++--------- .claude/setup/MCP-COORDINATOR-EVALUATION.md | 36 +++--- .claude/setup/VM-USERS.md | 16 +-- .claude/setup/setup-vm-ssh.md | 14 +-- frontend/src/router/routes/core.js | 12 +- .../src/views/settings/ModelCatalogHub.vue | 5 +- 20 files changed, 362 insertions(+), 359 deletions(-) diff --git a/.claude/CLEANUP-SUMMARY.md b/.claude/CLEANUP-SUMMARY.md index eec20997..36c58dfc 100644 --- a/.claude/CLEANUP-SUMMARY.md +++ b/.claude/CLEANUP-SUMMARY.md @@ -33,54 +33,54 @@ Removed: New structure: ``` .claude/ -├── INDEX.md # Project navigation (referenced in settings.json) -├── QUICK-REFERENCE.md # Commands and shortcuts -├── settings.json # Claude Code configuration -├── mcp-servers.json # MCP server configuration -│ -├── setup/ (17 files) # Setup guides and scripts -│ ├── README.md -│ ├── MCP-QUICK-START.md # Consolidated MCP setup guide -│ ├── MCP-INTEGRATION-GUIDE.md -│ ├── MCP-COORDINATOR-*.md (2 files) -│ ├── GORTEX-MCP-SETUP.md -│ ├── GITHUB-MCP-SETUP.md -│ ├── INDEX-MCP-DOCS.md -│ ├── VM-*.md (2 files) -│ ├── HYPER-V-SETUP.md -│ └── Scripts (.ps1, .cmd) -│ -├── plans/ (5 files) # Feature plans and protocols -│ ├── README.md -│ ├── SAML-FEATURE-PLAN.md -│ ├── security-improvements.md -│ ├── TOOL-ENGAGEMENT-PROTOCOL.md -│ └── AI-COLLABORATION.md -│ -├── maintenance/ (4 files) # Operations and maintenance -│ ├── README.md -│ ├── MAINTENANCE-DEPLOYMENT-CHECKLIST.md -│ ├── DEV-STARTUP-CHECKLIST.md -│ └── MAINTENANCE-FOOTPRINT-REPORT.html -│ -├── archived/ (7 files) # Historical documentation -│ ├── README.md -│ ├── FINAL-SUMMARY.md -│ ├── SETUP-COMPLETE-SUMMARY.md -│ ├── STATUS.md -│ ├── ACTIVATE-HYPERV-PERMS.md -│ ├── MCP-SETUP-GUIDE.md -│ ├── README-MCP-SETUP.md -│ ├── DOCKER-DEPLOYMENT-COMPLETE.md -│ └── DARKWING-FINDINGS.md -│ -├── skills/ (5 files) # Claude Code automation skills -└── workflows/ (1 file) # Security audit workflow ++-- INDEX.md # Project navigation (referenced in settings.json) ++-- QUICK-REFERENCE.md # Commands and shortcuts ++-- settings.json # Claude Code configuration ++-- mcp-servers.json # MCP server configuration +| ++-- setup/ (17 files) # Setup guides and scripts +| +-- README.md +| +-- MCP-QUICK-START.md # Consolidated MCP setup guide +| +-- MCP-INTEGRATION-GUIDE.md +| +-- MCP-COORDINATOR-*.md (2 files) +| +-- GORTEX-MCP-SETUP.md +| +-- GITHUB-MCP-SETUP.md +| +-- INDEX-MCP-DOCS.md +| +-- VM-*.md (2 files) +| +-- HYPER-V-SETUP.md +| +-- Scripts (.ps1, .cmd) +| ++-- plans/ (5 files) # Feature plans and protocols +| +-- README.md +| +-- SAML-FEATURE-PLAN.md +| +-- security-improvements.md +| +-- TOOL-ENGAGEMENT-PROTOCOL.md +| +-- AI-COLLABORATION.md +| ++-- maintenance/ (4 files) # Operations and maintenance +| +-- README.md +| +-- MAINTENANCE-DEPLOYMENT-CHECKLIST.md +| +-- DEV-STARTUP-CHECKLIST.md +| +-- MAINTENANCE-FOOTPRINT-REPORT.html +| ++-- archived/ (7 files) # Historical documentation +| +-- README.md +| +-- FINAL-SUMMARY.md +| +-- SETUP-COMPLETE-SUMMARY.md +| +-- STATUS.md +| +-- ACTIVATE-HYPERV-PERMS.md +| +-- MCP-SETUP-GUIDE.md +| +-- README-MCP-SETUP.md +| +-- DOCKER-DEPLOYMENT-COMPLETE.md +| +-- DARKWING-FINDINGS.md +| ++-- skills/ (5 files) # Claude Code automation skills ++-- workflows/ (1 file) # Security audit workflow ``` **Consolidations:** -- MCP-SETUP-GUIDE.md + README-MCP-SETUP.md → MCP-QUICK-START.md -- HYPER-V-PERMISSIONS.md + ACTIVATE-HYPERV-PERMS.md → HYPER-V-SETUP.md (kept more detailed version) +- MCP-SETUP-GUIDE.md + README-MCP-SETUP.md -> MCP-QUICK-START.md +- HYPER-V-PERMISSIONS.md + ACTIVATE-HYPERV-PERMS.md -> HYPER-V-SETUP.md (kept more detailed version) ### 4. Organized Root Documentation @@ -133,11 +133,11 @@ Updated `docker_prebuilt_approach.md` memory file to reflect new path: - `report.md` (empty) **Moved:** -- 17 files from `.claude/` → `.claude/setup/` -- 5 files from `.claude/` → `.claude/plans/` -- 4 files from `.claude/` → `.claude/maintenance/` -- 7 files from `.claude/` and root → `.claude/archived/` -- 5 files from root → `docs/deployment/` +- 17 files from `.claude/` -> `.claude/setup/` +- 5 files from `.claude/` -> `.claude/plans/` +- 4 files from `.claude/` -> `.claude/maintenance/` +- 7 files from `.claude/` and root -> `.claude/archived/` +- 5 files from root -> `docs/deployment/` **Created:** - 6 README.md files (subdirectory navigation) diff --git a/.claude/archived/ACTIVATE-HYPERV-PERMS.md b/.claude/archived/ACTIVATE-HYPERV-PERMS.md index be075f2b..bde1f4c3 100644 --- a/.claude/archived/ACTIVATE-HYPERV-PERMS.md +++ b/.claude/archived/ACTIVATE-HYPERV-PERMS.md @@ -6,8 +6,8 @@ You've been added to "Hyper-V Administrators" group, but permissions haven't tak ## Current Status -**Group membership:** ✓ Added to "Hyper-V Administrators" -**Active permissions:** ✗ Not yet active in current session +**Group membership:** [X] Added to "Hyper-V Administrators" +**Active permissions:** [ ] Not yet active in current session **Reason:** Group membership changes require logoff/logon to update security token --- @@ -210,10 +210,10 @@ If no output, your token doesn't have the group yet. Log off and back on. ## Timeline -1. **Now:** Group membership added ✓ -2. **After logoff/logon:** Permissions active ✓ -3. **First test:** `Get-VM` should work ✓ -4. **Full test:** Run test-mcp-servers.ps1 ✓ +1. **Now:** Group membership added [X] +2. **After logoff/logon:** Permissions active [X] +3. **First test:** `Get-VM` should work [X] +4. **Full test:** Run test-mcp-servers.ps1 [X] **Total downtime:** ~2 minutes for logoff/logon diff --git a/.claude/archived/FINAL-SUMMARY.md b/.claude/archived/FINAL-SUMMARY.md index f892e0fc..6617e8f7 100644 --- a/.claude/archived/FINAL-SUMMARY.md +++ b/.claude/archived/FINAL-SUMMARY.md @@ -42,13 +42,13 @@ Complete summary of MCP server setup for ShopDB development with Hyper-V VM test ### Test Results: 4/7 Passing (57%) ``` -✓ gortex - Project management ready -✓ mysql - Database running (MySQL 8.4.11) -✓ browser - Web automation ready -✓ config - 5 MCP servers configured -✗ vm - VM not started (optional) -ℹ hyperv - No Hyper-V cmdlet access (GUI works) -ℹ snapshots - No cmdlet access (GUI works) +[X] gortex - Project management ready +[X] mysql - Database running (MySQL 8.4.11) +[X] browser - Web automation ready +[X] config - 5 MCP servers configured +[ ] vm - VM not started (optional) +[i] hyperv - No Hyper-V cmdlet access (GUI works) +[i] snapshots - No cmdlet access (GUI works) ``` ### What's Working Right Now @@ -129,16 +129,16 @@ Complete summary of MCP server setup for ShopDB development with Hyper-V VM test ### You Are NOT in "Hyper-V Administrators" Group **What still works:** -- ✓ VM MCP (uses SSH, not Hyper-V API) -- ✓ Hyper-V Manager GUI (all features) -- ✓ Start/stop VMs via GUI -- ✓ Create/restore snapshots via GUI -- ✓ Connect to VM console +- [X] VM MCP (uses SSH, not Hyper-V API) +- [X] Hyper-V Manager GUI (all features) +- [X] Start/stop VMs via GUI +- [X] Create/restore snapshots via GUI +- [X] Connect to VM console **What doesn't work:** -- ✗ PowerShell Hyper-V cmdlets (Get-VM, Checkpoint-VM, etc.) -- ✗ Scripted snapshot automation -- ✗ Automated VM status checks +- [ ] PowerShell Hyper-V cmdlets (Get-VM, Checkpoint-VM, etc.) +- [ ] Scripted snapshot automation +- [ ] Automated VM status checks **Impact:** None for daily development. Only affects PowerShell automation. @@ -170,19 +170,19 @@ claude ``` "List all tasks in the current project" -→ Tests Gortex +-> Tests Gortex "Show me the first 5 endpoints in the database" -→ Tests MySQL +-> Tests MySQL "What tables exist in the database?" -→ Tests MySQL schema +-> Tests MySQL schema "Take a screenshot of https://localhost:5001" -→ Tests Browser (requires ShopDB running) +-> Tests Browser (requires ShopDB running) "What is the hostname of the VM?" -→ Tests VM SSH (requires VM running) +-> Tests VM SSH (requires VM running) ``` --- @@ -324,7 +324,7 @@ MCP setup saved to persistent memory: ## Success Metrics -**Setup phase: ✓ Complete** +**Setup phase: [X] Complete** - [x] Documentation written (~3500 lines) - [x] Scripts created and tested - [x] MCP servers configured @@ -343,13 +343,13 @@ MCP setup saved to persistent memory: - [x] Snapshot GUI access (cmdlets N/A) **Ready for:** -- ✓ Database development and testing -- ✓ API development and testing -- ✓ Frontend development and testing -- ✓ UI testing with screenshots -- ✓ Project task tracking -- △ Agent deployment (VM needed) -- △ End-to-end testing (VM needed) +- [X] Database development and testing +- [X] API development and testing +- [X] Frontend development and testing +- [X] UI testing with screenshots +- [X] Project task tracking +- [~] Agent deployment (VM needed) +- [~] End-to-end testing (VM needed) --- @@ -372,18 +372,18 @@ MCP setup saved to persistent memory: ``` .claude/ -├── INDEX-MCP-DOCS.md (9.6K) Master index -├── README-MCP-SETUP.md (7.0K) Quick reference -├── MCP-INTEGRATION-GUIDE.md (17K) Complete guide -├── VM-SNAPSHOT-GUIDE.md (10K) Snapshots -├── VM-USERS.md (NEW) User accounts -├── HYPER-V-PERMISSIONS.md (NEW) Permissions -├── STATUS.md (NEW) Current status -├── SETUP-COMPLETE-SUMMARY.md (9.4K) Session recap -├── FINAL-SUMMARY.md (NEW) This file -├── test-mcp-servers.ps1 (11K) Test suite -├── quick-start-mcp.ps1 (8.2K) Setup script -└── mcp-servers.json (UPD) 5 servers configured ++-- INDEX-MCP-DOCS.md (9.6K) Master index ++-- README-MCP-SETUP.md (7.0K) Quick reference ++-- MCP-INTEGRATION-GUIDE.md (17K) Complete guide ++-- VM-SNAPSHOT-GUIDE.md (10K) Snapshots ++-- VM-USERS.md (NEW) User accounts ++-- HYPER-V-PERMISSIONS.md (NEW) Permissions ++-- STATUS.md (NEW) Current status ++-- SETUP-COMPLETE-SUMMARY.md (9.4K) Session recap ++-- FINAL-SUMMARY.md (NEW) This file ++-- test-mcp-servers.ps1 (11K) Test suite ++-- quick-start-mcp.ps1 (8.2K) Setup script ++-- mcp-servers.json (UPD) 5 servers configured ``` **Total:** 9 documentation files, 2 scripts, 1 config = ~3500 lines diff --git a/.claude/archived/SETUP-COMPLETE-SUMMARY.md b/.claude/archived/SETUP-COMPLETE-SUMMARY.md index 0c94dbf9..82f18ce7 100644 --- a/.claude/archived/SETUP-COMPLETE-SUMMARY.md +++ b/.claude/archived/SETUP-COMPLETE-SUMMARY.md @@ -30,13 +30,13 @@ Setup completed on 2026-09-09 ``` Overall: 3/7 tests passed (43%) - gortex : OK ✓ (C:\Users\270015376\Documents\gortex.exe found) - browser : OK ✓ (v1.2.29 available via npm) - config : OK ✓ (mcp-servers.json valid) - mysql : FAIL ✗ (Docker database not running) - vm : FAIL ✗ (VM not reachable at 192.168.100.10) - hyperv : WARN ⚠ (No admin privileges to check) - snapshots : WARN ⚠ (No admin privileges to check) + gortex : OK [X] (C:\Users\270015376\Documents\gortex.exe found) + browser : OK [X] (v1.2.29 available via npm) + config : OK [X] (mcp-servers.json valid) + mysql : FAIL [ ] (Docker database not running) + vm : FAIL [ ] (VM not reachable at 192.168.100.10) + hyperv : WARN [!] (No admin privileges to check) + snapshots : WARN [!] (No admin privileges to check) ``` ### What's Working @@ -94,16 +94,16 @@ claude # Start Claude Code with MCP servers ``` flask-shopdb/.claude/ -├── INDEX-MCP-DOCS.md ← START HERE (master index) -├── README-MCP-SETUP.md ← Quick reference -├── MCP-INTEGRATION-GUIDE.md ← Complete guide with workflows -├── VM-SNAPSHOT-GUIDE.md ← Snapshot management -├── setup-vm-ssh.md ← SSH configuration -├── mcp-servers.json ← Configuration file -├── test-mcp-servers.ps1 ← Test suite -├── quick-start-mcp.ps1 ← Setup automation -├── enable-vm-ssh.ps1 ← VM SSH enablement -└── SETUP-COMPLETE-SUMMARY.md ← This file ++-- INDEX-MCP-DOCS.md <- START HERE (master index) ++-- README-MCP-SETUP.md <- Quick reference ++-- MCP-INTEGRATION-GUIDE.md <- Complete guide with workflows ++-- VM-SNAPSHOT-GUIDE.md <- Snapshot management ++-- setup-vm-ssh.md <- SSH configuration ++-- mcp-servers.json <- Configuration file ++-- test-mcp-servers.ps1 <- Test suite ++-- quick-start-mcp.ps1 <- Setup automation ++-- enable-vm-ssh.ps1 <- VM SSH enablement ++-- SETUP-COMPLETE-SUMMARY.md <- This file ``` --- diff --git a/.claude/archived/STATUS.md b/.claude/archived/STATUS.md index 5c453f02..edf16c69 100644 --- a/.claude/archived/STATUS.md +++ b/.claude/archived/STATUS.md @@ -7,41 +7,41 @@ ## Test Results ``` -Overall: 4/7 tests passed (57%) ✓ Improved from 3/7 +Overall: 4/7 tests passed (57%) [X] Improved from 3/7 Status by Server: - ✓ gortex : OK (Project management ready) - ✓ mysql : OK (Database running and reachable) - ✓ browser : OK (Web automation package available) - ✓ config : OK (Configuration valid) - ✗ vm : FAIL (VM not started) - ⚠ hyperv : WARN (Need admin to check VMs) - ⚠ snapshots : WARN (Need admin to manage snapshots) + [X] gortex : OK (Project management ready) + [X] mysql : OK (Database running and reachable) + [X] browser : OK (Web automation package available) + [X] config : OK (Configuration valid) + [ ] vm : FAIL (VM not started) + [!] hyperv : WARN (Need admin to check VMs) + [!] snapshots : WARN (Need admin to manage snapshots) ``` --- ## What's Working Now -### ✓ Gortex (Project Management) +### [X] Gortex (Project Management) - **Status:** Installed and ready - **Location:** C:\Users\270015376\Documents\gortex.exe - **Test:** Ask Claude "List all tasks in the current project" -### ✓ MySQL (Database Access) +### [X] MySQL (Database Access) - **Status:** Running and healthy - **Container:** flask-shopdb-db-1 (MySQL 8.4.11) - **Connection:** 127.0.0.1:3306 - **Database:** shopdb_flask - **Test:** Ask Claude "Show me the endpoints table schema" -### ✓ Browser (Web Automation) +### [X] Browser (Web Automation) - **Status:** Package available via npm - **Version:** 1.2.29 - **Package:** @agent-infra/mcp-server-browser - **Test:** Ask Claude "Take a screenshot of https://localhost:5001" -### ✓ Configuration +### [X] Configuration - **Status:** Valid JSON configuration - **Location:** .claude/mcp-servers.json - **Servers:** 4 configured (gortex, mysql, browser, vm) @@ -95,16 +95,16 @@ Try these commands in Claude Code: ``` "List all tasks in the current project" -→ Tests Gortex project management +-> Tests Gortex project management "Show me the first 5 endpoints in the database" -→ Tests MySQL database access +-> Tests MySQL database access "What tables exist in the database?" -→ Tests MySQL schema inspection +-> Tests MySQL schema inspection "Take a screenshot of https://localhost:5001" -→ Tests Browser automation (requires ShopDB running) +-> Tests Browser automation (requires ShopDB running) ``` --- @@ -159,14 +159,14 @@ Add-LocalGroupMember -Group "Hyper-V Administrators" -Member "270015376" | Use Case | Available | MCP Servers Needed | |----------|-----------|-------------------| -| Database development | ✓ Yes | mysql | -| API development | ✓ Yes | mysql | -| Frontend development | ✓ Yes | browser | -| UI testing | ✓ Yes | browser + mysql | -| Project tracking | ✓ Yes | gortex | -| Agent deployment | ✗ No (VM needed) | vm + mysql | -| End-to-end testing | ✗ No (VM needed) | vm + mysql + browser | -| Snapshot management | △ Manual | (admin for scripting) | +| Database development | [X] Yes | mysql | +| API development | [X] Yes | mysql | +| Frontend development | [X] Yes | browser | +| UI testing | [X] Yes | browser + mysql | +| Project tracking | [X] Yes | gortex | +| Agent deployment | [ ] No (VM needed) | vm + mysql | +| End-to-end testing | [ ] No (VM needed) | vm + mysql + browser | +| Snapshot management | [~] Manual | (admin for scripting) | **Current capability: 5/8 workflows (62%)** diff --git a/.claude/maintenance/DEV-STARTUP-CHECKLIST.md b/.claude/maintenance/DEV-STARTUP-CHECKLIST.md index 1e3228dd..4d9ba1b8 100644 --- a/.claude/maintenance/DEV-STARTUP-CHECKLIST.md +++ b/.claude/maintenance/DEV-STARTUP-CHECKLIST.md @@ -8,10 +8,10 @@ Quick reference for starting the complete development environment with all MCP s These items are already configured and will persist: -- ✅ `.mcp.json` - MCP server configurations (gortex, mysql, browser, vm, coordinator) -- ✅ `.claude/settings.json` - Auto-enables project MCP servers + SessionEnd hook -- ✅ `start-dev.cmd` - Updated with `NODE_TLS_REJECT_UNAUTHORIZED=0` for Vite -- ✅ `stop-dev.cmd` - Auto-runs when Claude Code session closes +- [X] `.mcp.json` - MCP server configurations (gortex, mysql, browser, vm, coordinator) +- [X] `.claude/settings.json` - Auto-enables project MCP servers + SessionEnd hook +- [X] `start-dev.cmd` - Updated with `NODE_TLS_REJECT_UNAUTHORIZED=0` for Vite +- [X] `stop-dev.cmd` - Auto-runs when Claude Code session closes --- @@ -45,11 +45,11 @@ claude ``` **On first launch after MCP config changes, you'll be prompted to approve:** -- ✅ gortex (C:\Users\270015376\Documents\gortex.exe) -- ✅ mysql (database access) -- ✅ browser (browser automation) -- ✅ vm / vm-shopfloor (SSH to test VM) -- ✅ coordinator (multi-agent collaboration) +- [X] gortex (C:\Users\270015376\Documents\gortex.exe) +- [X] mysql (database access) +- [X] browser (browser automation) +- [X] vm / vm-shopfloor (SSH to test VM) +- [X] coordinator (multi-agent collaboration) **Auto-loaded MCP servers:** - github, shopdb, amber (from user config) @@ -60,21 +60,21 @@ claude ## What's Automated ### On Dev Environment Start (`./start-dev.cmd`): -- ✅ MCP Coordinator daemon auto-starts (if not already running) -- ✅ Flask API (Docker) -- ✅ MySQL DB (Docker) -- ✅ Vite dev server (with TLS fix) +- [X] MCP Coordinator daemon auto-starts (if not already running) +- [X] Flask API (Docker) +- [X] MySQL DB (Docker) +- [X] Vite dev server (with TLS fix) ### On Claude Code Session Start: -- ✅ All approved MCP servers auto-connect -- ✅ `enableAllProjectMcpServers: true` loads project servers +- [X] All approved MCP servers auto-connect +- [X] `enableAllProjectMcpServers: true` loads project servers ### On Session Close: -- ✅ `./stop-dev.cmd` runs automatically (SessionEnd hook) -- ✅ MCP Coordinator daemon stops -- ✅ Docker containers stop -- ✅ Vite dev server stops -- ✅ No manual cleanup needed +- [X] `./stop-dev.cmd` runs automatically (SessionEnd hook) +- [X] MCP Coordinator daemon stops +- [X] Docker containers stop +- [X] Vite dev server stops +- [X] No manual cleanup needed --- @@ -117,9 +117,9 @@ docker ps --filter "name=flask-shopdb" ```bash # Check all services at once docker ps --filter "name=flask-shopdb" && \ -curl -s http://localhost:5173 > /dev/null && echo "✅ Vite OK" && \ -curl -sk https://localhost:5001/api/auth/me 2>&1 | grep -q "Authorization" && echo "✅ Flask OK" && \ -curl -s http://localhost:3100/health > /dev/null && echo "✅ Coordinator OK" +curl -s http://localhost:5173 > /dev/null && echo "[X] Vite OK" && \ +curl -sk https://localhost:5001/api/auth/me 2>&1 | grep -q "Authorization" && echo "[X] Flask OK" && \ +curl -s http://localhost:3100/health > /dev/null && echo "[X] Coordinator OK" ``` --- diff --git a/.claude/maintenance/MAINTENANCE-DEPLOYMENT-CHECKLIST.md b/.claude/maintenance/MAINTENANCE-DEPLOYMENT-CHECKLIST.md index 1ef3092e..ec25e07f 100644 --- a/.claude/maintenance/MAINTENANCE-DEPLOYMENT-CHECKLIST.md +++ b/.claude/maintenance/MAINTENANCE-DEPLOYMENT-CHECKLIST.md @@ -15,7 +15,7 @@ ### Priority 1: Data Growth Bomb (6 months to disk exhaustion) -#### ☐ Configure Audit Log Retention (4 hours) +#### [ ] Configure Audit Log Retention (4 hours) **Owner:** Developer + Admin **Effort:** 2 hours config + 2 hours testing @@ -32,7 +32,7 @@ docker compose -f docker-compose.prebuilt.yml run --rm api flask audit purge --d - After 30 days: Should stabilize under 1M rows - Backup size reduction: 60-80% -#### ☐ Configure Endpoint Event Retention (8 hours) +#### [ ] Configure Endpoint Event Retention (8 hours) **Owner:** Developer **Effort:** 4 hours dev + 2 hours testing + 2 hours deploy @@ -83,7 +83,7 @@ def prune_events(days, batch_size, dry_run): - Monitor table size: `SELECT COUNT(*) FROM endpointevents;` - Should stabilize under 500K rows -#### ☐ Configure Docker Log Rotation (2 hours) +#### [ ] Configure Docker Log Rotation (2 hours) **Owner:** Admin **Effort:** 1 hour config + 1 hour verification @@ -126,7 +126,7 @@ Get-ChildItem "C:\ProgramData\Docker\containers\*\*-json.log" | ### Priority 2: Backup and Recovery (currently MISSING) -#### ☐ Enable Backup Profile (6 hours) +#### [ ] Enable Backup Profile (6 hours) **Owner:** Admin + Developer **Effort:** 3 hours setup + 3 hours restore test @@ -178,7 +178,7 @@ docker compose -f docker-compose.prebuilt.yml -f docker-compose.backup.yml run - 5. Run migrations to latest: `flask db upgrade` 6. Document restore time and any issues -#### ☐ Add Disk Space Monitoring (4 hours) +#### [ ] Add Disk Space Monitoring (4 hours) **Owner:** Admin **Effort:** 2 hours script + 2 hours integration @@ -230,7 +230,7 @@ Register-ScheduledTask -TaskName "ShopDB-DiskMonitor" -Action $action -Trigger $ ### Priority 3: Production Stability (bleeding-edge runtime) -#### ☐ Downgrade Python to 3.11 LTS (8 hours) +#### [ ] Downgrade Python to 3.11 LTS (8 hours) **Owner:** Developer **Effort:** 2 hours rebuild + 4 hours pilot + 2 hours bundle @@ -281,7 +281,7 @@ docker compose -f docker-compose.prebuilt.yml logs api | grep -i deprecated ### Daily Checks (5 minutes) -#### ☐ Endpoint Health Dashboard +#### [ ] Endpoint Health Dashboard ```sql -- Check endpoint reporting status SELECT @@ -293,7 +293,7 @@ WHERE assettype = 'endpoint'; ``` **Alert if:** pct_healthy < 95% -#### ☐ Backup Verification +#### [ ] Backup Verification ```bash # Check last backup timestamp docker compose -f docker-compose.prebuilt.yml -f docker-compose.backup.yml run --rm backup restic snapshots --last @@ -302,13 +302,13 @@ docker compose -f docker-compose.prebuilt.yml -f docker-compose.backup.yml run - ``` **Alert if:** No snapshot in last 24 hours -#### ☐ Docker Service Health +#### [ ] Docker Service Health ```bash docker ps --filter name=shopdb --format "table {{.Names}}\t{{.Status}}\t{{.State}}" ``` **Alert if:** Any service not "Up" and "healthy" -#### ☐ Database Disk Space +#### [ ] Database Disk Space ```powershell # Quick check docker volume inspect shopdb_db_data | ConvertFrom-Json | @@ -318,7 +318,7 @@ docker volume inspect shopdb_db_data | ConvertFrom-Json | ``` **Alert if:** >40GB (or >85% of allocated disk) -#### ☐ Critical Application Errors +#### [ ] Critical Application Errors ```bash # Check for OperationalError, IntegrityError, 500 responses docker compose -f docker-compose.prebuilt.yml logs --since 24h api | @@ -328,7 +328,7 @@ docker compose -f docker-compose.prebuilt.yml logs --since 24h api | ### Weekly Checks (15 minutes) -#### ☐ Audit Log Size +#### [ ] Audit Log Size ```sql SELECT COUNT(*) as total_rows, @@ -339,7 +339,7 @@ FROM auditlogs; ``` **Alert if:** total_rows > 1M and retention_days > 90 -#### ☐ Failed Login Attempts +#### [ ] Failed Login Attempts ```sql SELECT username, @@ -353,7 +353,7 @@ LIMIT 20; ``` **Alert if:** Any account with >10 failed attempts in 24 hours -#### ☐ Endpoint Events Accumulation +#### [ ] Endpoint Events Accumulation ```sql SELECT COUNT(*) as total_events, @@ -363,14 +363,14 @@ FROM endpointevents; ``` **Alert if:** total_events > 500K -#### ☐ Security Advisories +#### [ ] Security Advisories ```bash cd /path/to/shopdb python scripts/scan_sbom.py sbom.cdx.json ``` **Review:** HIGH severity findings in shipped components (exclude dev-only) -#### ☐ Database Performance +#### [ ] Database Performance ```sql -- Check for slow queries (if slow query log enabled) SELECT @@ -387,7 +387,7 @@ LIMIT 10; ### Monthly Checks (1 hour) -#### ☐ PAT Usage Audit +#### [ ] PAT Usage Audit ```sql SELECT t.tokenid, @@ -403,13 +403,13 @@ ORDER BY days_since_use DESC; ``` **Action:** Revoke stale tokens (not used in 90+ days) -#### ☐ Certificate Expiration Check +#### [ ] Certificate Expiration Check ```bash openssl x509 -in ./certs/server.crt -noout -enddate ``` **Alert if:** <60 days until expiry -#### ☐ Backup Restoration Test +#### [ ] Backup Restoration Test ```bash # Restore to test environment docker compose -f docker-compose.backup.yml run --rm backup restic restore latest --target /restore-test @@ -424,7 +424,7 @@ docker compose exec api flask db current ``` **Document:** Restore time, data integrity, any issues -#### ☐ Plugin Version Audit +#### [ ] Plugin Version Audit ```bash # Compare plugin registry to disk versions docker compose run --rm api python -c " @@ -435,7 +435,7 @@ for name, plugin in plugin_registry.plugins.items(): ``` **Alert if:** Version mismatch between registry and MANIFEST.json -#### ☐ Configuration Drift Review +#### [ ] Configuration Drift Review ```bash # Compare .env files across sites # dev, ops, prod should have consistent: @@ -448,7 +448,7 @@ for name, plugin in plugin_registry.plugins.items(): ### Quarterly Checks (4 hours) -#### ☐ Full DR Drill +#### [ ] Full DR Drill **Scenario:** Complete site loss, restore from backup **Steps:** @@ -465,7 +465,7 @@ for name, plugin in plugin_registry.plugins.items(): **Target:** Full recovery in <2 hours -#### ☐ Security Log Audit +#### [ ] Security Log Audit ```sql -- Check for anomalous patterns SELECT @@ -486,7 +486,7 @@ ORDER BY action_count DESC; ``` **Review:** Off-hours access, bulk deletes, permission changes -#### ☐ Dependency Vulnerability Scan +#### [ ] Dependency Vulnerability Scan ```bash # Run OSV.dev scan cd /path/to/shopdb @@ -503,49 +503,49 @@ grep -E "HIGH|CRITICAL" vuln-report.txt | grep -v "dev-only" ### Critical Alerts (immediate notification) -#### ☐ Database Disk >85% Full +#### [ ] Database Disk >85% Full **Method:** Daily disk monitor script (see Priority 2) **Recipient:** Admin + Developer **Action:** Implement retention policies or expand disk -#### ☐ Host Disk >85% Full +#### [ ] Host Disk >85% Full **Method:** Daily disk monitor script **Recipient:** Admin **Action:** Clean logs, check Docker volumes, expand disk -#### ☐ Backup Failed or >24h Old +#### [ ] Backup Failed or >24h Old **Method:** Check restic last snapshot timestamp **Recipient:** Admin **Action:** Investigate backup service logs, verify disk space -#### ☐ >10 Endpoints Offline >48 Hours +#### [ ] >10 Endpoints Offline >48 Hours **Method:** Query assets table daily **Recipient:** Admin **Action:** Check network connectivity, agent service status -#### ☐ Application Error Rate >1% of Requests +#### [ ] Application Error Rate >1% of Requests **Method:** Parse gunicorn access logs **Recipient:** Developer **Action:** Check Flask logs for exceptions, review recent changes -#### ☐ Certificate Expiring in <30 Days +#### [ ] Certificate Expiring in <30 Days **Method:** Daily openssl check **Recipient:** Admin **Action:** Generate new self-signed cert or renew ### Warning Alerts (daily summary) -#### ☐ Audit Log >1M Rows Without Retention +#### [ ] Audit Log >1M Rows Without Retention **Method:** Daily SQL query **Recipient:** Admin **Action:** Configure audit log purge job -#### ☐ Endpoint Events >500K Rows +#### [ ] Endpoint Events >500K Rows **Method:** Daily SQL query **Recipient:** Admin **Action:** Configure event retention -#### ☐ Failed Login Rate >10/min from Single IP +#### [ ] Failed Login Rate >10/min from Single IP **Method:** Parse Flask auth logs **Recipient:** Admin **Action:** Review for brute force attempt, consider IP block @@ -598,27 +598,27 @@ grep -E "HIGH|CRITICAL" vuln-report.txt | grep -v "dev-only" ### Pre-Deployment Checklist -#### ☐ Create Backup +#### [ ] Create Backup ```bash # Take manual snapshot before deploy docker compose -f docker-compose.prebuilt.yml -f docker-compose.backup.yml run --rm backup restic backup /app/instance --tag pre-deploy ``` -#### ☐ Test Bundle on Pilot Site +#### [ ] Test Bundle on Pilot Site - Deploy to ops environment first - Verify all services start (db, migrate, api) - Check migration logs for errors - Spot-check core features - Monitor for 24 hours -#### ☐ Review Migration Chain +#### [ ] Review Migration Chain ```bash # Check what migrations will run docker compose run --rm api flask db heads docker compose run --rm api flask db current ``` -#### ☐ Verify Disk Space +#### [ ] Verify Disk Space ```bash # Ensure enough space for migration and new code df -h /var/lib/docker @@ -716,13 +716,13 @@ docker compose -f docker-compose.prebuilt.yml restart api ### Post-Deployment Verification -#### ☐ All Services Healthy +#### [ ] All Services Healthy ```bash docker ps --filter name=shopdb # Should show: db (healthy), api (healthy), migrate (exited 0) ``` -#### ☐ Endpoints Checking In +#### [ ] Endpoints Checking In ```sql SELECT COUNT(*) FROM assets WHERE assettype='endpoint' @@ -730,19 +730,19 @@ WHERE assettype='endpoint' ``` **Expect:** >95% of endpoints -#### ☐ No Critical Errors in Logs +#### [ ] No Critical Errors in Logs ```bash docker compose logs --since 1h api | grep -i critical ``` **Expect:** Empty or expected warnings only -#### ☐ UI Loads and Functions +#### [ ] UI Loads and Functions - Login works - Asset search returns results - Can navigate to endpoint details - Scripts tab loads -#### ☐ Document Deployment +#### [ ] Document Deployment ```markdown ## Deployment Log: 2026-09-11 diff --git a/.claude/plans/AI-COLLABORATION.md b/.claude/plans/AI-COLLABORATION.md index d0915032..bd8f2b57 100644 --- a/.claude/plans/AI-COLLABORATION.md +++ b/.claude/plans/AI-COLLABORATION.md @@ -371,9 +371,9 @@ curl -X POST $SLACK_WEBHOOK_URL -d '{ ## Recommended Setup for ShopDB Team ### Phase 1: Minimal (This Week) -1. ✅ Create `memory/active_work.md` (5 min) -2. ✅ Adopt branch naming: `//` (0 min) -3. ✅ Add AI commit prefix: `[AI: tool] message` (0 min) +1. [X] Create `memory/active_work.md` (5 min) +2. [X] Adopt branch naming: `//` (0 min) +3. [X] Add AI commit prefix: `[AI: tool] message` (0 min) ### Phase 2: Enhanced (Next Sprint) 4. Create `.claude/sessions/` with session notes (15 min) diff --git a/.claude/plans/SAML-FEATURE-PLAN.md b/.claude/plans/SAML-FEATURE-PLAN.md index 37e788ca..51cffae8 100644 --- a/.claude/plans/SAML-FEATURE-PLAN.md +++ b/.claude/plans/SAML-FEATURE-PLAN.md @@ -1162,13 +1162,13 @@ def test_saml_group_to_role_mapping(): - HTTPS enabled on ShopDB (required for SAML) ## Step 1: Create M365 Enterprise Application -1. Go to Azure AD / Entra ID → Enterprise Applications -2. New Application → Create your own +1. Go to Azure AD / Entra ID -> Enterprise Applications +2. New Application -> Create your own 3. Name: "ShopDB Production" 4. Click Assign users and groups ## Step 2: Configure SAML in Azure -1. In Enterprise App, go to Single sign-on → SAML +1. In Enterprise App, go to Single sign-on -> SAML 2. Basic SAML Configuration: - Identifier (Entity ID): `https://shopdb.yourdomain.com` - Reply URL (ACS): `https://shopdb.yourdomain.com/api/auth/saml/acs` @@ -1182,7 +1182,7 @@ def test_saml_group_to_role_mapping(): ## Step 3: Configure ShopDB 1. Login to ShopDB as admin -2. Settings → Authentication +2. Settings -> Authentication 3. Enable SAML SSO toggle 4. Paste Federation Metadata URL from Azure 5. Set Entity ID: `https://shopdb.yourdomain.com` @@ -1344,7 +1344,7 @@ If complete failure: 2. **Plugin Hooks for Auth** - `get_authentication_providers()` - Contribute new auth methods - `on_user_authenticated()` - Post-auth callbacks - - `map_external_groups_to_roles()` - Custom group→role logic + - `map_external_groups_to_roles()` - Custom group->role logic - `provision_user_attributes()` - Custom user provisioning 3. **Core SAML Implementation** @@ -1420,7 +1420,7 @@ If complete failure: ## Success Criteria -✅ **Functional Requirements:** +[X] **Functional Requirements:** - [ ] M365 SAML login works end-to-end - [ ] Auto-user-creation provisions users correctly - [ ] Group-based admin assignment works @@ -1429,7 +1429,7 @@ If complete failure: - [ ] Plugin can contribute custom auth provider - [ ] Plugin can extend user provisioning -✅ **Non-Functional Requirements:** +[X] **Non-Functional Requirements:** - [ ] No breaking changes to existing auth - [ ] Follows ShopDB plugin architecture patterns - [ ] Works in air-gapped deployment @@ -1437,7 +1437,7 @@ If complete failure: - [ ] Comprehensive error handling - [ ] Audit logging for all auth events -✅ **Documentation:** +[X] **Documentation:** - [ ] Admin setup guide complete - [ ] Plugin extension guide complete - [ ] ADR documenting auth service architecture diff --git a/.claude/plans/TOOL-ENGAGEMENT-PROTOCOL.md b/.claude/plans/TOOL-ENGAGEMENT-PROTOCOL.md index b088a0a5..3d45ec72 100644 --- a/.claude/plans/TOOL-ENGAGEMENT-PROTOCOL.md +++ b/.claude/plans/TOOL-ENGAGEMENT-PROTOCOL.md @@ -208,16 +208,16 @@ Then proceed without the required tools (but note that you're skipping for this ## Success Metrics ### Good Engagement -- ✅ Coordinator used before every file edit -- ✅ Gortex used for architectural queries -- ✅ Skills invoked when task matches their domain -- ✅ Workflows proposed for complex tasks +- [X] Coordinator used before every file edit +- [X] Gortex used for architectural queries +- [X] Skills invoked when task matches their domain +- [X] Workflows proposed for complex tasks ### Poor Engagement -- ❌ Editing files without announce_work -- ❌ Using grep when Gortex would be more accurate -- ❌ Creating charts without dataviz skill guidance -- ❌ Manual sequential analysis when workflow would parallelize +- [ ] Editing files without announce_work +- [ ] Using grep when Gortex would be more accurate +- [ ] Creating charts without dataviz skill guidance +- [ ] Manual sequential analysis when workflow would parallelize --- diff --git a/.claude/plans/security-improvements.md b/.claude/plans/security-improvements.md index 20f44ee2..2a025c9a 100644 --- a/.claude/plans/security-improvements.md +++ b/.claude/plans/security-improvements.md @@ -148,11 +148,11 @@ Contact: [internal security team email] ## What's Already Good: -✅ Strong .gitignore (lines 64-86 cover most credential patterns) -✅ Darkwing scanning on PRs -✅ Air-gapped deployment (secrets never in GitHub) -✅ ADR-016: Device tokens instead of user credentials for kiosks -✅ Collector tokens are 64-char hashes, not readable passwords +[X] Strong .gitignore (lines 64-86 cover most credential patterns) +[X] Darkwing scanning on PRs +[X] Air-gapped deployment (secrets never in GitHub) +[X] ADR-016: Device tokens instead of user credentials for kiosks +[X] Collector tokens are 64-char hashes, not readable passwords --- @@ -190,5 +190,5 @@ gitleaks detect --verbose - GitHub Security tab: https://github.com/ge-aero/shopdb-flask/security - Secret scanning alerts: (once enabled) -- Darkwing findings: Security → Code scanning -- Dependabot alerts: Security → Dependabot +- Darkwing findings: Security -> Code scanning +- Dependabot alerts: Security -> Dependabot diff --git a/.claude/setup/GORTEX-MCP-SETUP.md b/.claude/setup/GORTEX-MCP-SETUP.md index f4240b99..2dedace8 100644 --- a/.claude/setup/GORTEX-MCP-SETUP.md +++ b/.claude/setup/GORTEX-MCP-SETUP.md @@ -6,15 +6,15 @@ Now we need to connect it as an MCP server so Claude Code can use its 48 tools d ## Current Status -**Installed:** ✅ Gortex v0.64.2 at `C:\Users\270015376\Documents\gortex.exe` +**Installed:** [X] Gortex v0.64.2 at `C:\Users\270015376\Documents\gortex.exe` -**Daemon Running:** ✅ +**Daemon Running:** [X] ```bash /c/Users/270015376/Documents/gortex.exe status # Shows: daemon running, flask-shopdb tracked with 2467 files ``` -**Indexed Repository:** ✅ flask-shopdb at `C:\Users\270015376\Documents\github\flask-shopdb` +**Indexed Repository:** [X] flask-shopdb at `C:\Users\270015376\Documents\github\flask-shopdb` ## How to Connect as MCP Server @@ -109,7 +109,7 @@ Based on our typical workflow: - With Gortex: 1-2K tokens (edit_symbol) - **Savings: ~60-70%** -**Merging wilm → wj:** +**Merging wilm -> wj:** - Current: 8-12K tokens (read conflicts, understand context) - With Gortex: 3-5K tokens (diff_context tool) - **Savings: ~50-60%** @@ -155,10 +155,10 @@ If working, you'll see Gortex tools available via ToolSearch. ## Why This Matters Instead of me reading entire files to understand code, I can: -1. Ask Gortex "explore fleet alerts" → get relevant symbols -2. Query "what calls get_fleet_alerts" → see usage -3. Edit symbols directly by ID → no file reading -4. Analyze blast radius before changes → prevent bugs -5. Get merge context → easier conflict resolution +1. Ask Gortex "explore fleet alerts" -> get relevant symbols +2. Query "what calls get_fleet_alerts" -> see usage +3. Edit symbols directly by ID -> no file reading +4. Analyze blast radius before changes -> prevent bugs +5. Get merge context -> easier conflict resolution This turns Gortex from a "nice to have" into a "fundamental workflow tool" that saves significant tokens and improves code understanding. diff --git a/.claude/setup/HYPER-V-SETUP.md b/.claude/setup/HYPER-V-SETUP.md index 28a5c454..1fa988f2 100644 --- a/.claude/setup/HYPER-V-SETUP.md +++ b/.claude/setup/HYPER-V-SETUP.md @@ -14,7 +14,7 @@ Quick guide to understanding Hyper-V permissions and why they don't matter for M ## What This Affects -### ✓ Still Works (No Admin Needed) +### [X] Still Works (No Admin Needed) | Feature | How to Use | Notes | |---------|-----------|-------| @@ -28,7 +28,7 @@ Quick guide to understanding Hyper-V permissions and why they don't matter for M **Bottom line:** Everything you need works via GUI or SSH. -### ✗ Doesn't Work (Need Group Membership) +### [ ] Doesn't Work (Need Group Membership) | Feature | Why It Fails | Workaround | |---------|-------------|-----------| @@ -195,20 +195,20 @@ The following docs have been updated to clarify admin requirements: **With VM MCP, Claude can:** ``` -✓ Execute commands on VM -✓ Copy files to/from VM -✓ Read logs from VM -✓ Check service status -✓ Install/configure software -✓ Test agent deployment -✓ All via SSH - no Hyper-V perms needed! +[X] Execute commands on VM +[X] Copy files to/from VM +[X] Read logs from VM +[X] Check service status +[X] Install/configure software +[X] Test agent deployment +[X] All via SSH - no Hyper-V perms needed! ``` **Claude cannot (without Hyper-V perms):** ``` -✗ Create snapshots via PowerShell -✗ Restore snapshots via script -✗ Query VM state via Get-VM +[ ] Create snapshots via PowerShell +[ ] Restore snapshots via script +[ ] Query VM state via Get-VM But you can do these manually in GUI! ``` @@ -235,12 +235,12 @@ Request from IT admin to add you to "Hyper-V Administrators" local group. | Task | Without Group | With Group | |------|--------------|------------| -| VM MCP (SSH) | ✓ Works | ✓ Works | -| Start/stop VM | ✓ GUI | ✓ GUI or PowerShell | -| Create snapshot | ✓ GUI | ✓ GUI or PowerShell | -| Restore snapshot | ✓ GUI | ✓ GUI or PowerShell | -| View VM status | ✓ GUI | ✓ GUI or PowerShell | -| Script automation | ✗ Can't | ✓ Can | +| VM MCP (SSH) | [X] Works | [X] Works | +| Start/stop VM | [X] GUI | [X] GUI or PowerShell | +| Create snapshot | [X] GUI | [X] GUI or PowerShell | +| Restore snapshot | [X] GUI | [X] GUI or PowerShell | +| View VM status | [X] GUI | [X] GUI or PowerShell | +| Script automation | [ ] Can't | [X] Can | **Bottom line: You can do everything, just not via PowerShell scripts.** diff --git a/.claude/setup/INDEX-MCP-DOCS.md b/.claude/setup/INDEX-MCP-DOCS.md index 90925248..33ca4d62 100644 --- a/.claude/setup/INDEX-MCP-DOCS.md +++ b/.claude/setup/INDEX-MCP-DOCS.md @@ -278,16 +278,16 @@ See `VM-SNAPSHOT-GUIDE.md` for complete snapshot management guide. ``` flask-shopdb/ -└── .claude/ - ├── INDEX-MCP-DOCS.md ← This file (documentation index) - ├── README-MCP-SETUP.md ← Quick reference - ├── MCP-INTEGRATION-GUIDE.md ← Complete guide - ├── VM-SNAPSHOT-GUIDE.md ← Snapshot management - ├── setup-vm-ssh.md ← SSH setup guide - ├── mcp-servers.json ← Configuration file - ├── test-mcp-servers.ps1 ← Test suite - ├── quick-start-mcp.ps1 ← Setup automation - └── enable-vm-ssh.ps1 ← VM SSH enablement ++-- .claude/ + +-- INDEX-MCP-DOCS.md <- This file (documentation index) + +-- README-MCP-SETUP.md <- Quick reference + +-- MCP-INTEGRATION-GUIDE.md <- Complete guide + +-- VM-SNAPSHOT-GUIDE.md <- Snapshot management + +-- setup-vm-ssh.md <- SSH setup guide + +-- mcp-servers.json <- Configuration file + +-- test-mcp-servers.ps1 <- Test suite + +-- quick-start-mcp.ps1 <- Setup automation + +-- enable-vm-ssh.ps1 <- VM SSH enablement ``` --- diff --git a/.claude/setup/MCP-COORDINATOR-CONNECTION-GUIDE.md b/.claude/setup/MCP-COORDINATOR-CONNECTION-GUIDE.md index de06d42f..6bbe4be2 100644 --- a/.claude/setup/MCP-COORDINATOR-CONNECTION-GUIDE.md +++ b/.claude/setup/MCP-COORDINATOR-CONNECTION-GUIDE.md @@ -20,26 +20,26 @@ mcp-coordinator supports two connection methods: ## Architecture ``` -┌─────────────────────────────────────────────────────────────┐ -│ Your PC │ -│ │ -│ ┌──────────────────┐ ┌──────────────────┐ │ -│ │ Claude Code #1 │ │ Claude Code #2 │ │ -│ │ (Session 1) │ │ (Session 2) │ │ -│ └────────┬─────────┘ └────────┬─────────┘ │ -│ │ │ │ -│ │ MCP over HTTP │ MCP over HTTP│ -│ │ (localhost:3100) │ │ -│ └──────────────┬───────────────────┘ │ -│ │ │ -│ ┌────────▼──────────┐ │ -│ │ mcp-coordinator │ │ -│ │ (daemon) │ │ -│ │ Port: 3100 │ │ -│ │ MQTT: 1883 │ │ -│ └───────────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────────┘ ++-------------------------------------------------------------+ +| Your PC | +| | +| +------------------+ +------------------+ | +| | Claude Code #1 | | Claude Code #2 | | +| | (Session 1) | | (Session 2) | | +| +--------+---------+ +--------+---------+ | +| | | | +| | MCP over HTTP | MCP over HTTP| +| | (localhost:3100) | | +| +--------------+-------------------+ | +| | | +| +--------v----------+ | +| | mcp-coordinator | | +| | (daemon) | | +| | Port: 3100 | | +| | MQTT: 1883 | | +| +-------------------+ | +| | ++-------------------------------------------------------------+ ``` **Both Claude sessions connect to the SAME daemon = shared state = coordination works!** @@ -141,28 +141,28 @@ Claude: "Coordinator running. 2 agents registered: session-main, session-plugin ### Architecture ``` -┌─────────────────────┐ ┌─────────────────────┐ -│ Dev PC #1 │ │ Dev PC #2 │ -│ (270015376) │ │ (coworker) │ -│ │ │ │ -│ Claude Code │ │ Cursor │ -│ │ │ │ │ │ -│ └─────────────┼────────┼───────┘ │ -│ │ │ │ -└─────────────────────┘ └─────────────────────┘ - │ │ - │ MCP over HTTP │ - │ (LAN: 192.168.1.100:3100) │ - └──────────────┬───────────────┘ - │ - ┌─────────▼──────────┐ - │ Shared PC or │ - │ Dev Server │ - │ │ - │ mcp-coordinator │ - │ Host: 0.0.0.0 │ - │ Port: 3100 │ - └────────────────────┘ ++---------------------+ +---------------------+ +| Dev PC #1 | | Dev PC #2 | +| (270015376) | | (coworker) | +| | | | +| Claude Code | | Cursor | +| | | | | | +| +-------------+--------+-------+ | +| | | | ++---------------------+ +---------------------+ + | | + | MCP over HTTP | + | (LAN: 192.168.1.100:3100) | + +--------------+---------------+ + | + +---------v----------+ + | Shared PC or | + | Dev Server | + | | + | mcp-coordinator | + | Host: 0.0.0.0 | + | Port: 3100 | + +--------------------+ ``` ### Step 1: Set Up Shared Coordinator @@ -186,7 +186,7 @@ Edit `~/.mcp-coordinator/config.json`: { "server": { "port": 3100, - "host": "0.0.0.0", // ← Changed from 127.0.0.1 to allow LAN + "host": "0.0.0.0", // <- Changed from 127.0.0.1 to allow LAN "cors": { "enabled": true, "origins": ["*"] // Or specific IPs @@ -422,15 +422,15 @@ http://127.0.0.1:3100/dashboard shows: ``` Active Agents (2) -├─ 270015376-operator-reports -│ └─ Files: plugins/endpoints/api/routes.py -│ └─ Status: Working -│ └─ Since: 2 minutes ago -│ -└─ 270015376-fleet-alerts - └─ Files: plugins/notifications/models/notification.py - └─ Status: Working - └─ Since: 1 minute ago ++- 270015376-operator-reports +| +- Files: plugins/endpoints/api/routes.py +| +- Status: Working +| +- Since: 2 minutes ago +| ++- 270015376-fleet-alerts + +- Files: plugins/notifications/models/notification.py + +- Status: Working + +- Since: 1 minute ago Consultations (0) No conflicts detected @@ -443,13 +443,13 @@ No conflicts detected ``` You: "Also update the route handler" Claude: [announce_work for plugins/endpoints/api/routes.py] -Claude: "⚠️ Conflict detected!" +Claude: "[!] Conflict detected!" Claude: "Agent '270015376-operator-reports' is currently modifying routes.py" Claude: [post_to_thread] Claude: "Consulting... Opening thread #1" # Session 1 sees notification via MQTT -Claude (Session 1): "📢 New consultation: Agent '270015376-fleet-alerts' also needs routes.py" +Claude (Session 1): "[ANNOUNCE] New consultation: Agent '270015376-fleet-alerts' also needs routes.py" Claude (Session 1): [Reads thread] Claude (Session 1): [post_to_thread] "I'm working on _send_operator_report_alert function. What do you need?" diff --git a/.claude/setup/MCP-COORDINATOR-EVALUATION.md b/.claude/setup/MCP-COORDINATOR-EVALUATION.md index 14d5a6c1..b4ad0f6d 100644 --- a/.claude/setup/MCP-COORDINATOR-EVALUATION.md +++ b/.claude/setup/MCP-COORDINATOR-EVALUATION.md @@ -4,7 +4,7 @@ Research findings for coordinating multiple AI agents working on ShopDB simultan --- -## 🏆 Top Recommendation: mcp-coordinator +## [TROPHY] Top Recommendation: mcp-coordinator **By:** Maxime Gagnon (swoofer) **Status:** Production-ready (v2.3.0, 2500+ tests) @@ -179,7 +179,7 @@ You: "Fix the operator report email alerts" Claude: [Calls register_agent] Claude: [Calls announce_work] -Claude: "⚠️ Conflict detected! jdoe's AI is also editing routes.py." +Claude: "[!] Conflict detected! jdoe's AI is also editing routes.py." Claude: [Calls post_to_thread] Claude: "Consulting with other agent... They're adding fleet alerts, I'm fixing operator reports. Different functions." Claude: [Waits for response] @@ -326,13 +326,13 @@ essaim run swarm --agents 3 -p ~/flask-shopdb ### For Air-Gapped Environment (ADR-004) -✅ **Works perfectly:** +[X] **Works perfectly:** - Runs entirely locally (no internet required) - SQLite database (no external DB) - MQTT broker embedded (no external service) - Dashboard is local HTTP (no cloud) -✅ **Team mode on LAN:** +[X] **Team mode on LAN:** - Runs on internal network only - No external connections - All data stays in your environment @@ -478,7 +478,7 @@ Claude: "Registered intent to modify routes.py. No conflicts. Proceeding..." You: "Fix the fleet alert function in routes.py" Claude: [Calls announce_work for plugins/endpoints/api/routes.py] -Claude: "⚠️ Conflict detected! Another session (270015376-main) is editing routes.py." +Claude: "[!] Conflict detected! Another session (270015376-main) is editing routes.py." Claude: [Opens consultation thread] Claude: "Consulting... Other session is working on _send_operator_report_alert. I need _alert_targets_endpoint. Different functions, can proceed in parallel." ``` @@ -527,11 +527,11 @@ Open: http://localhost:3100/dashboard | Tool | Status | Notes | |------|--------|-------| -| **Claude Code** | ✅ Perfect | Native MCP support | -| **Gortex** | ✅ Compatible | Both are MCP servers, no conflict | -| **MySQL MCP** | ✅ Compatible | Separate concern | -| **Browser MCP** | ✅ Compatible | Separate concern | -| **GitHub MCP** | ✅ Compatible | Can coordinate PR creation | +| **Claude Code** | [X] Perfect | Native MCP support | +| **Gortex** | [X] Compatible | Both are MCP servers, no conflict | +| **MySQL MCP** | [X] Compatible | Separate concern | +| **Browser MCP** | [X] Compatible | Separate concern | +| **GitHub MCP** | [X] Compatible | Can coordinate PR creation | ### Workflow Example: @@ -540,7 +540,7 @@ You: "Review all plugins for ADR compliance and create PRs for fixes" Claude (Session 1): [Announces] "Reviewing plugins/notifications/" Claude (Session 2): [Announces] "Reviewing plugins/endpoints/" - → No conflict, both proceed + -> No conflict, both proceed Claude (Session 1): [Gortex] Finds code patterns Claude (Session 1): [Coordinator] Announces intent to fix @@ -631,13 +631,13 @@ Based on your `.claude/AI-COLLABORATION.md` proposal: ### Immediate (Today): -1. ✅ Read this evaluation -2. ⏳ Install mcp-coordinator: `npm install -g mcp-coordinator` -3. ⏳ Run init: `mcp-coordinator init` -4. ⏳ Start daemon: `mcp-coordinator server start --daemon` -5. ⏳ Add to `.claude/mcp-servers.json` -6. ⏳ Restart Claude Code -7. ⏳ Test: `coordinator_status()` in Claude +1. [X] Read this evaluation +2. [WAIT] Install mcp-coordinator: `npm install -g mcp-coordinator` +3. [WAIT] Run init: `mcp-coordinator init` +4. [WAIT] Start daemon: `mcp-coordinator server start --daemon` +5. [WAIT] Add to `.claude/mcp-servers.json` +6. [WAIT] Restart Claude Code +7. [WAIT] Test: `coordinator_status()` in Claude **Time:** 5-10 minutes diff --git a/.claude/setup/VM-USERS.md b/.claude/setup/VM-USERS.md index be009631..8bae82db 100644 --- a/.claude/setup/VM-USERS.md +++ b/.claude/setup/VM-USERS.md @@ -159,15 +159,15 @@ ssh shopfloor@192.168.100.10 "net localgroup users" | Task | SupportUser | shopfloor | |------|-------------|-----------| -| Install service | ✓ Yes | ✗ No | -| Start/stop service | ✓ Yes | ✗ No (needs admin) | -| Read service logs | ✓ Yes | △ Limited | -| Run tray app | ✓ Yes | ✓ Yes | -| Submit reports | ✓ Yes | ✓ Yes | +| Install service | [X] Yes | [ ] No | +| Start/stop service | [X] Yes | [ ] No (needs admin) | +| Read service logs | [X] Yes | [~] Limited | +| Run tray app | [X] Yes | [X] Yes | +| Submit reports | [X] Yes | [X] Yes | | Access user profile | Own only | Own only | -| Windows Event Log | ✓ Full access | △ Limited | -| Install software | ✓ Yes | ✗ No | -| Modify registry | ✓ Yes | △ HKCU only | +| Windows Event Log | [X] Full access | [~] Limited | +| Install software | [X] Yes | [ ] No | +| Modify registry | [X] Yes | [~] HKCU only | --- diff --git a/.claude/setup/setup-vm-ssh.md b/.claude/setup/setup-vm-ssh.md index 86b40f6b..e0eab582 100644 --- a/.claude/setup/setup-vm-ssh.md +++ b/.claude/setup/setup-vm-ssh.md @@ -237,7 +237,7 @@ Claude: 9. [Wait 5s] 10. [SSH: Check tray] Get-Process shopdb-endpoint-tray... Running 11. [SSH: Screenshot] Capturing tray notification... -12. ✅ Complete! Agent installed, connected, and received fleet alert. +12. [X] Complete! Agent installed, connected, and received fleet alert. ``` --- @@ -246,12 +246,12 @@ Claude: | Requirement | Status | Command to Check | |-------------|--------|------------------| -| OpenSSH Server installed | ⏳ | `Get-WindowsCapability -Online -Name OpenSSH.Server*` | -| SSH service running | ⏳ | `Get-Service sshd` | -| Port 22 open in firewall | ⏳ | `Get-NetFirewallRule -Name sshd` | -| User has password set | ⏳ | `net user ShopFloor` | -| Network connectivity | ✅ | `arp -a` shows 192.168.100.10 | -| Internal network configured | ✅ | VM has 192.168.100.10 | +| OpenSSH Server installed | [WAIT] | `Get-WindowsCapability -Online -Name OpenSSH.Server*` | +| SSH service running | [WAIT] | `Get-Service sshd` | +| Port 22 open in firewall | [WAIT] | `Get-NetFirewallRule -Name sshd` | +| User has password set | [WAIT] | `net user ShopFloor` | +| Network connectivity | [X] | `arp -a` shows 192.168.100.10 | +| Internal network configured | [X] | VM has 192.168.100.10 | --- diff --git a/frontend/src/router/routes/core.js b/frontend/src/router/routes/core.js index f171c784..bfd97f37 100644 --- a/frontend/src/router/routes/core.js +++ b/frontend/src/router/routes/core.js @@ -55,12 +55,14 @@ export default [ path: 'models', name: 'model-catalog-models', component: () => import('../../views/settings/ModelsList.vue') - }, - { - path: 'operatingsystems', - name: 'model-catalog-os', - component: () => import('../../.plugins-staged/computers/views/OperatingSystemsList.vue') } + // TODO: Operating Systems route should be added by computers plugin, not hardcoded in core + // Lean builds without computers plugin fail because this import doesn't exist + // { + // path: 'operatingsystems', + // name: 'model-catalog-os', + // component: () => import('../../.plugins-staged/computers/views/OperatingSystemsList.vue') + // } ] }, { diff --git a/frontend/src/views/settings/ModelCatalogHub.vue b/frontend/src/views/settings/ModelCatalogHub.vue index bc4c20bd..8c6dc2aa 100644 --- a/frontend/src/views/settings/ModelCatalogHub.vue +++ b/frontend/src/views/settings/ModelCatalogHub.vue @@ -27,13 +27,14 @@ > Models - +