Refactor cockpit to use DockerTmuxController pattern
Based on claude-code-tools TmuxCLIController, this refactor: - Added DockerTmuxController class for robust tmux session management - Implements send_keys() with configurable delay_enter - Implements capture_pane() for output retrieval - Implements wait_for_prompt() for pattern-based completion detection - Implements wait_for_idle() for content-hash-based idle detection - Implements wait_for_shell_prompt() for shell prompt detection Also includes workflow improvements: - Pre-task git snapshot before agent execution - Post-task commit protocol in agent guidelines Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
467
config.json
Normal file
467
config.json
Normal file
@@ -0,0 +1,467 @@
|
||||
{
|
||||
"orchestrator": {
|
||||
"name": "sarlo-orchestrator",
|
||||
"description": "Central orchestrator for all Sarlo server projects",
|
||||
"model": "sonnet",
|
||||
"max_concurrent_subagents": 10
|
||||
},
|
||||
"qa_preflight": {
|
||||
"enabled": true,
|
||||
"check_timeout_seconds": 10,
|
||||
"timeout_categories": {
|
||||
"short": 300,
|
||||
"long": 600,
|
||||
"async": 0
|
||||
},
|
||||
"logging_level": "info",
|
||||
"block_on_service_unhealthy": false,
|
||||
"block_on_privilege_required": true,
|
||||
"block_on_capability_gap": true,
|
||||
"warn_on_timeout_mismatch": true,
|
||||
"use_historical_learning": true
|
||||
},
|
||||
"projects": {
|
||||
"admin": {
|
||||
"path": "/home/admin",
|
||||
"description": "System administration",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Server management, user admin, MCP servers",
|
||||
"color": "#FFFFFF"
|
||||
},
|
||||
"overbits": {
|
||||
"path": "/home/overbits",
|
||||
"description": "Digital Production Factory",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "React/TypeScript frontend development",
|
||||
"color": "#FFFF00"
|
||||
},
|
||||
"musica": {
|
||||
"path": "/home/musica",
|
||||
"description": "Digital Music Portal",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Music app, Strudel patterns, React frontend",
|
||||
"color": "#FF00FF"
|
||||
},
|
||||
"dss": {
|
||||
"path": "/home/dss",
|
||||
"description": "Digital Signature Service",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "TypeScript backend, cryptography",
|
||||
"color": "#00FFFF",
|
||||
"extra_mounts": [
|
||||
"/opt/dss:/opt/dss"
|
||||
]
|
||||
},
|
||||
"librechat": {
|
||||
"path": "/home/librechat",
|
||||
"description": "LibreChat AI Platform",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Chat platform operations",
|
||||
"color": "#00FF00"
|
||||
},
|
||||
"bbot": {
|
||||
"path": "/home/bbot",
|
||||
"description": "Trading Bot",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Trading automation",
|
||||
"color": "#FF6600"
|
||||
},
|
||||
"assistant": {
|
||||
"path": "/home/assistant",
|
||||
"description": "Bruno's Personal AI Assistant",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Bruno's Personal AI Assistant",
|
||||
"color": "#FF1493"
|
||||
},
|
||||
"botum": {
|
||||
"path": "/home/botum",
|
||||
"description": "Project user",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project user",
|
||||
"color": "#87CEEB"
|
||||
},
|
||||
"bruno": {
|
||||
"path": "/home/bruno",
|
||||
"description": "Project user",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project user",
|
||||
"color": "#DDA0DD"
|
||||
},
|
||||
"claude": {
|
||||
"path": "/home/claude",
|
||||
"description": "Claude Integration Agent",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Claude Integration Agent",
|
||||
"color": "#4169E1"
|
||||
},
|
||||
"collabook": {
|
||||
"path": "/home/collabook",
|
||||
"description": "Collaboration notebook",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Collaboration notebook",
|
||||
"color": "#90EE90"
|
||||
},
|
||||
"gemini": {
|
||||
"path": "/home/gemini",
|
||||
"description": "Gemini Integration Agent",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Gemini Integration Agent",
|
||||
"color": "#FFD700"
|
||||
},
|
||||
"luzia": {
|
||||
"path": "/opt/server-agents/orchestrator",
|
||||
"description": "Luzia Orchestrator (dogfooding)",
|
||||
"subagent_model": "sonnet",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep",
|
||||
"Write"
|
||||
],
|
||||
"focus": "Self-improvement, orchestration CLI, meta-development",
|
||||
"color": "#FF6B6B",
|
||||
"user": "admin"
|
||||
},
|
||||
"git": {
|
||||
"path": "/home/git",
|
||||
"description": "Project user",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project user"
|
||||
},
|
||||
"gitea": {
|
||||
"path": "/home/gitea",
|
||||
"description": "Gitea",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Gitea"
|
||||
},
|
||||
"guest": {
|
||||
"path": "/home/guest",
|
||||
"description": "Web Guest Account",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Web Guest Account"
|
||||
},
|
||||
"josito": {
|
||||
"path": "/home/josito",
|
||||
"description": "Josito (8 years old)",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Josito (8 years old)"
|
||||
},
|
||||
"liza": {
|
||||
"path": "/home/liza",
|
||||
"description": "Liza",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Liza"
|
||||
},
|
||||
"luzuy": {
|
||||
"path": "/home/luzuy",
|
||||
"description": "Luz.uy Operator",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Luz.uy Operator"
|
||||
},
|
||||
"miguel": {
|
||||
"path": "/home/miguel",
|
||||
"description": "Project user",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project user"
|
||||
},
|
||||
"nico": {
|
||||
"path": "/home/nico",
|
||||
"description": "Nico's operator workspace",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Nico's operator workspace"
|
||||
},
|
||||
"oscar": {
|
||||
"path": "/home/oscar",
|
||||
"description": "Oscar Sarlo",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Oscar Sarlo"
|
||||
},
|
||||
"presi": {
|
||||
"path": "/home/presi",
|
||||
"description": "Project presi",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project presi"
|
||||
},
|
||||
"rio": {
|
||||
"path": "/home/rio",
|
||||
"description": "Rio",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Rio"
|
||||
},
|
||||
"rut": {
|
||||
"path": "/home/rut",
|
||||
"description": "Ruth (Mother)",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Ruth (Mother)"
|
||||
},
|
||||
"sarlo": {
|
||||
"path": "/home/sarlo",
|
||||
"description": "Sarlo",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Sarlo"
|
||||
},
|
||||
"vita": {
|
||||
"path": "/home/vita",
|
||||
"description": "Project user",
|
||||
"subagent_model": "haiku",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep"
|
||||
],
|
||||
"focus": "Project user"
|
||||
},
|
||||
"livekit-agents": {
|
||||
"path": "/home/livekit-agents",
|
||||
"description": "LiveKit Agents - Real-time AI voice/video agent framework",
|
||||
"subagent_model": "sonnet",
|
||||
"tools": [
|
||||
"Read",
|
||||
"Write",
|
||||
"Edit",
|
||||
"Bash",
|
||||
"Glob",
|
||||
"Grep",
|
||||
"WebFetch",
|
||||
"WebSearch"
|
||||
]
|
||||
}
|
||||
},
|
||||
"shared_tools": {
|
||||
"zen": "Deep reasoning via PAL MCP",
|
||||
"sarlo-admin": "Server administration"
|
||||
},
|
||||
"routes": {
|
||||
"management": [
|
||||
"list",
|
||||
"status",
|
||||
"stop",
|
||||
"cleanup",
|
||||
"logs"
|
||||
],
|
||||
"project_execution": [
|
||||
"<project> <task>"
|
||||
],
|
||||
"special_operations": [
|
||||
"work on <project>",
|
||||
"think deep <topic>",
|
||||
"research <topic>",
|
||||
"fix <issue>"
|
||||
],
|
||||
"internal": [
|
||||
"--exec <project> <command>",
|
||||
"--write <project> <path> <content>",
|
||||
"--read <project> <path>",
|
||||
"--context <project>"
|
||||
]
|
||||
},
|
||||
"troubleshooting": {
|
||||
"config_corrupted": {
|
||||
"error_patterns": [
|
||||
"configuration corrupted",
|
||||
"invalid json",
|
||||
"corrupted",
|
||||
"config"
|
||||
],
|
||||
"fix": "Run restore script in user home: ~/restore-claude-config.sh",
|
||||
"source_script": "/home/dss/restore-claude-config.sh",
|
||||
"note": "Script should exist in each project home"
|
||||
},
|
||||
"build_failed": {
|
||||
"error_patterns": [
|
||||
"build failed",
|
||||
"build error",
|
||||
"build"
|
||||
],
|
||||
"fix": "Check npm/cargo logs, verify dependencies, run clean build",
|
||||
"source_script": null,
|
||||
"note": "Run: npm cache clean && npm install or cargo clean && cargo build"
|
||||
},
|
||||
"container_issue": {
|
||||
"error_patterns": [
|
||||
"container",
|
||||
"docker",
|
||||
"connection refused"
|
||||
],
|
||||
"fix": "Restart Docker daemon or check container logs: docker logs <container>",
|
||||
"source_script": null,
|
||||
"note": "Use: luzia stop <project> && luzia <project> <task>"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user