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 <noreply@anthropic.com>
This commit is contained in:
Proudlock
2026-09-11 16:42:19 -04:00
parent 1e8c6a513a
commit a03fd3de4f
20 changed files with 362 additions and 359 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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