feat(v1.5.2): Execute database migrations and complete setup

- Execute all 6 migrations on Desk CRM production database
- Create missing tables: cr_lsps, cr_agent_lsps, cr_lsp_usage
- Create archive tables: cr_*_usage_archive (4 tables)
- Create system tables: cr_migrations, cr_maintenance_log
- Make all scripts executable (chmod +x)
- Total cr_* tables: 38

Migration files:
- 001_initial_schema.sql
- 002_add_lsps.sql
- 003_add_relationships.sql
- 004_add_telemetry.sql
- 005_add_archive_tables.sql
- 006_add_maintenance_log.sql

Scripts:
- session-init.sh, session-end.sh
- inject-context.sh, inject-agent-context.sh
- record-usage.sh, db-backup.sh, sync-to-mysql.sh

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 16:18:02 +00:00
commit 692475a315
55 changed files with 11950 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
-- Migration: 001_initial_schema
-- Author: Descomplicar®
-- Date: 2026-02-01
-- Description: Tabelas core da infraestrutura Claude Code
-- UP
-- Agentes especializados
CREATE TABLE IF NOT EXISTS cr_agents (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
model VARCHAR(50) DEFAULT 'sonnet',
category VARCHAR(50),
status ENUM('active', 'inactive', 'deprecated') DEFAULT 'active',
desk_task INT,
file_path VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Skills invocáveis
CREATE TABLE IF NOT EXISTS cr_skills (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
category VARCHAR(50),
status ENUM('active', 'inactive', 'deprecated') DEFAULT 'active',
desk_task INT,
file_path VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Servidores MCP
CREATE TABLE IF NOT EXISTS cr_mcps (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
transport ENUM('stdio', 'sse', 'http') DEFAULT 'stdio',
status ENUM('active', 'inactive', 'error') DEFAULT 'active',
gateway_url VARCHAR(255),
tools_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Software Development Kits
CREATE TABLE IF NOT EXISTS cr_sdks (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
category VARCHAR(50),
status ENUM('active', 'inactive', 'deprecated') DEFAULT 'active',
version VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Ferramentas por MCP
CREATE TABLE IF NOT EXISTS cr_mcp_tools (
id INT AUTO_INCREMENT PRIMARY KEY,
mcp_id INT NOT NULL,
name VARCHAR(100) NOT NULL,
description TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (mcp_id) REFERENCES cr_mcps(id) ON DELETE CASCADE,
UNIQUE KEY unique_mcp_tool (mcp_id, name)
);
-- Plugins instalados
CREATE TABLE IF NOT EXISTS cr_plugins (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
version VARCHAR(20),
marketplace VARCHAR(100),
status ENUM('active', 'disabled', 'pending') DEFAULT 'active',
installed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Hooks configurados
CREATE TABLE IF NOT EXISTS cr_hooks (
id INT AUTO_INCREMENT PRIMARY KEY,
event VARCHAR(50) NOT NULL,
plugin_name VARCHAR(100),
command TEXT NOT NULL,
description TEXT,
timeout INT DEFAULT 5000,
status ENUM('active', 'disabled') DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Índices
CREATE INDEX idx_agents_status ON cr_agents(status);
CREATE INDEX idx_agents_category ON cr_agents(category);
CREATE INDEX idx_skills_status ON cr_skills(status);
CREATE INDEX idx_skills_category ON cr_skills(category);
CREATE INDEX idx_mcps_status ON cr_mcps(status);
CREATE INDEX idx_sdks_status ON cr_sdks(status);
-- DOWN
DROP TABLE IF EXISTS cr_hooks;
DROP TABLE IF EXISTS cr_plugins;
DROP TABLE IF EXISTS cr_mcp_tools;
DROP TABLE IF EXISTS cr_sdks;
DROP TABLE IF EXISTS cr_mcps;
DROP TABLE IF EXISTS cr_skills;
DROP TABLE IF EXISTS cr_agents;

View File

@@ -0,0 +1,26 @@
-- Migration: 002_add_lsps
-- Author: Descomplicar®
-- Date: 2026-02-02
-- Description: Tabelas para Language Server Protocols
-- UP
-- Language Server Protocols
CREATE TABLE IF NOT EXISTS cr_lsps (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL UNIQUE,
description TEXT,
language VARCHAR(50),
command VARCHAR(255),
args JSON,
status ENUM('active', 'inactive', 'error') DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Índices
CREATE INDEX idx_lsps_status ON cr_lsps(status);
CREATE INDEX idx_lsps_language ON cr_lsps(language);
-- DOWN
DROP TABLE IF EXISTS cr_lsps;

View File

@@ -0,0 +1,116 @@
-- Migration: 003_add_relationships
-- Author: Descomplicar®
-- Date: 2026-02-01
-- Description: Tabelas de relacionamento entre componentes
-- UP
-- Agent ↔ MCP
CREATE TABLE IF NOT EXISTS cr_agent_mcps (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
mcp_id INT NOT NULL,
usage_type ENUM('primary', 'recommended', 'available') DEFAULT 'available',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
FOREIGN KEY (mcp_id) REFERENCES cr_mcps(id) ON DELETE CASCADE,
UNIQUE KEY unique_agent_mcp (agent_id, mcp_id)
);
-- Agent ↔ LSP
CREATE TABLE IF NOT EXISTS cr_agent_lsps (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
lsp_id INT NOT NULL,
usage_type ENUM('primary', 'recommended', 'available') DEFAULT 'available',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
FOREIGN KEY (lsp_id) REFERENCES cr_lsps(id) ON DELETE CASCADE,
UNIQUE KEY unique_agent_lsp (agent_id, lsp_id)
);
-- Agent ↔ Skill
CREATE TABLE IF NOT EXISTS cr_agent_skills (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
skill_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
FOREIGN KEY (skill_id) REFERENCES cr_skills(id) ON DELETE CASCADE,
UNIQUE KEY unique_agent_skill (agent_id, skill_id)
);
-- Skill ↔ MCP
CREATE TABLE IF NOT EXISTS cr_skill_mcps (
id INT AUTO_INCREMENT PRIMARY KEY,
skill_id INT NOT NULL,
mcp_id INT NOT NULL,
usage_type ENUM('primary', 'recommended', 'available') DEFAULT 'available',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (skill_id) REFERENCES cr_skills(id) ON DELETE CASCADE,
FOREIGN KEY (mcp_id) REFERENCES cr_mcps(id) ON DELETE CASCADE,
UNIQUE KEY unique_skill_mcp (skill_id, mcp_id)
);
-- SDK ↔ Agent
CREATE TABLE IF NOT EXISTS cr_sdk_agents (
id INT AUTO_INCREMENT PRIMARY KEY,
sdk_id INT NOT NULL,
agent_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sdk_id) REFERENCES cr_sdks(id) ON DELETE CASCADE,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
UNIQUE KEY unique_sdk_agent (sdk_id, agent_id)
);
-- SDK ↔ Skill
CREATE TABLE IF NOT EXISTS cr_sdk_skills (
id INT AUTO_INCREMENT PRIMARY KEY,
sdk_id INT NOT NULL,
skill_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sdk_id) REFERENCES cr_sdks(id) ON DELETE CASCADE,
FOREIGN KEY (skill_id) REFERENCES cr_skills(id) ON DELETE CASCADE,
UNIQUE KEY unique_sdk_skill (sdk_id, skill_id)
);
-- SDK ↔ MCP
CREATE TABLE IF NOT EXISTS cr_sdk_mcps (
id INT AUTO_INCREMENT PRIMARY KEY,
sdk_id INT NOT NULL,
mcp_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (sdk_id) REFERENCES cr_sdks(id) ON DELETE CASCADE,
FOREIGN KEY (mcp_id) REFERENCES cr_mcps(id) ON DELETE CASCADE,
UNIQUE KEY unique_sdk_mcp (sdk_id, mcp_id)
);
-- Agent ↔ Agent (Colaborações)
CREATE TABLE IF NOT EXISTS cr_agent_collaborations (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
collaborator_id INT NOT NULL,
collaboration_type VARCHAR(50) DEFAULT 'peer',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
FOREIGN KEY (collaborator_id) REFERENCES cr_agents(id) ON DELETE CASCADE,
UNIQUE KEY unique_collaboration (agent_id, collaborator_id)
);
-- Índices para performance
CREATE INDEX idx_agent_mcps_agent ON cr_agent_mcps(agent_id);
CREATE INDEX idx_agent_mcps_mcp ON cr_agent_mcps(mcp_id);
CREATE INDEX idx_agent_lsps_agent ON cr_agent_lsps(agent_id);
CREATE INDEX idx_agent_skills_agent ON cr_agent_skills(agent_id);
CREATE INDEX idx_skill_mcps_skill ON cr_skill_mcps(skill_id);
CREATE INDEX idx_sdk_agents_sdk ON cr_sdk_agents(sdk_id);
-- DOWN
DROP TABLE IF EXISTS cr_agent_collaborations;
DROP TABLE IF EXISTS cr_sdk_mcps;
DROP TABLE IF EXISTS cr_sdk_skills;
DROP TABLE IF EXISTS cr_sdk_agents;
DROP TABLE IF EXISTS cr_skill_mcps;
DROP TABLE IF EXISTS cr_agent_skills;
DROP TABLE IF EXISTS cr_agent_lsps;
DROP TABLE IF EXISTS cr_agent_mcps;

View File

@@ -0,0 +1,72 @@
-- Migration: 004_add_telemetry
-- Author: Descomplicar®
-- Date: 2026-02-01
-- Description: Tabelas de telemetria e uso
-- UP
-- Uso de agentes
CREATE TABLE IF NOT EXISTS cr_agent_usage (
id INT AUTO_INCREMENT PRIMARY KEY,
agent_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
total_duration_ms INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE CASCADE
);
-- Uso de skills
CREATE TABLE IF NOT EXISTS cr_skill_usage (
id INT AUTO_INCREMENT PRIMARY KEY,
skill_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (skill_id) REFERENCES cr_skills(id) ON DELETE CASCADE
);
-- Uso de ferramentas MCP
CREATE TABLE IF NOT EXISTS cr_mcp_tool_usage (
id INT AUTO_INCREMENT PRIMARY KEY,
mcp_id INT NOT NULL,
tool_name VARCHAR(100) NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
avg_latency_ms INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (mcp_id) REFERENCES cr_mcps(id) ON DELETE CASCADE
);
-- Uso de LSPs
CREATE TABLE IF NOT EXISTS cr_lsp_usage (
id INT AUTO_INCREMENT PRIMARY KEY,
lsp_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
completions INT DEFAULT 0,
diagnostics INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (lsp_id) REFERENCES cr_lsps(id) ON DELETE CASCADE
);
-- Índices para queries de telemetria
CREATE INDEX idx_agent_usage_date ON cr_agent_usage(created_at);
CREATE INDEX idx_agent_usage_agent ON cr_agent_usage(agent_id);
CREATE INDEX idx_skill_usage_date ON cr_skill_usage(created_at);
CREATE INDEX idx_skill_usage_skill ON cr_skill_usage(skill_id);
CREATE INDEX idx_mcp_tool_usage_date ON cr_mcp_tool_usage(created_at);
CREATE INDEX idx_mcp_tool_usage_mcp ON cr_mcp_tool_usage(mcp_id);
CREATE INDEX idx_lsp_usage_date ON cr_lsp_usage(created_at);
-- DOWN
DROP TABLE IF EXISTS cr_lsp_usage;
DROP TABLE IF EXISTS cr_mcp_tool_usage;
DROP TABLE IF EXISTS cr_skill_usage;
DROP TABLE IF EXISTS cr_agent_usage;

View File

@@ -0,0 +1,70 @@
-- Migration: 005_add_archive_tables
-- Author: Descomplicar®
-- Date: 2026-02-04
-- Description: Tabelas de arquivo para telemetria antiga
-- UP
-- Archive de uso de agentes
CREATE TABLE IF NOT EXISTS cr_agent_usage_archive (
id INT PRIMARY KEY,
agent_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
total_duration_ms INT DEFAULT 0,
created_at TIMESTAMP,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Archive de uso de skills
CREATE TABLE IF NOT EXISTS cr_skill_usage_archive (
id INT PRIMARY KEY,
skill_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
created_at TIMESTAMP,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Archive de uso de ferramentas MCP
CREATE TABLE IF NOT EXISTS cr_mcp_tool_usage_archive (
id INT PRIMARY KEY,
mcp_id INT NOT NULL,
tool_name VARCHAR(100) NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
success_count INT DEFAULT 0,
error_count INT DEFAULT 0,
avg_latency_ms INT DEFAULT 0,
created_at TIMESTAMP,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Archive de uso de LSPs
CREATE TABLE IF NOT EXISTS cr_lsp_usage_archive (
id INT PRIMARY KEY,
lsp_id INT NOT NULL,
session_id VARCHAR(100),
invocations INT DEFAULT 1,
completions INT DEFAULT 0,
diagnostics INT DEFAULT 0,
created_at TIMESTAMP,
archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Índices para consultas históricas
CREATE INDEX idx_agent_archive_date ON cr_agent_usage_archive(created_at);
CREATE INDEX idx_agent_archive_archived ON cr_agent_usage_archive(archived_at);
CREATE INDEX idx_skill_archive_date ON cr_skill_usage_archive(created_at);
CREATE INDEX idx_mcp_archive_date ON cr_mcp_tool_usage_archive(created_at);
CREATE INDEX idx_lsp_archive_date ON cr_lsp_usage_archive(created_at);
-- DOWN
DROP TABLE IF EXISTS cr_lsp_usage_archive;
DROP TABLE IF EXISTS cr_mcp_tool_usage_archive;
DROP TABLE IF EXISTS cr_skill_usage_archive;
DROP TABLE IF EXISTS cr_agent_usage_archive;

View File

@@ -0,0 +1,39 @@
-- Migration: 006_add_maintenance_log
-- Author: Descomplicar®
-- Date: 2026-02-04
-- Description: Tabelas de controlo de migrations e log de manutenção
-- UP
-- Controlo de migrations
CREATE TABLE IF NOT EXISTS cr_migrations (
id INT AUTO_INCREMENT PRIMARY KEY,
migration_name VARCHAR(100) NOT NULL UNIQUE,
applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
checksum VARCHAR(64),
status ENUM('applied', 'rolled_back', 'failed') DEFAULT 'applied',
execution_time_ms INT DEFAULT 0
);
-- Log de operações de manutenção
CREATE TABLE IF NOT EXISTS cr_maintenance_log (
id INT AUTO_INCREMENT PRIMARY KEY,
operation VARCHAR(50) NOT NULL,
table_name VARCHAR(100),
rows_affected INT DEFAULT 0,
details JSON,
executed_by VARCHAR(100) DEFAULT 'system',
executed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status ENUM('success', 'failed', 'rolled_back') DEFAULT 'success',
error_message TEXT
);
-- Índices
CREATE INDEX idx_migrations_status ON cr_migrations(status);
CREATE INDEX idx_maintenance_operation ON cr_maintenance_log(operation);
CREATE INDEX idx_maintenance_date ON cr_maintenance_log(executed_at);
CREATE INDEX idx_maintenance_status ON cr_maintenance_log(status);
-- DOWN
DROP TABLE IF EXISTS cr_maintenance_log;
DROP TABLE IF EXISTS cr_migrations;

51
migrations/README.md Normal file
View File

@@ -0,0 +1,51 @@
# Migrations
Schema migrations para as tabelas cr_* (Claude Resources) da infraestrutura Descomplicar.
## Ficheiros
| Migration | Descrição |
|-----------|-----------|
| `001_initial_schema.sql` | Tabelas core (agents, skills, mcps, sdks, plugins, hooks) |
| `002_add_lsps.sql` | Tabela de Language Server Protocols |
| `003_add_relationships.sql` | Tabelas de relacionamento (agent_mcps, skill_mcps, etc.) |
| `004_add_telemetry.sql` | Tabelas de uso/telemetria |
| `005_add_archive_tables.sql` | Tabelas de arquivo para telemetria antiga |
| `006_add_maintenance_log.sql` | Controlo de migrations e log de manutenção |
## Uso
### Ver status
```bash
/descomplicar:db-migrate status
```
### Aplicar todas
```bash
/descomplicar:db-migrate up --all
```
### Reverter última
```bash
/descomplicar:db-migrate down
```
## Formato
Cada ficheiro contém:
- Header com metadata (Author, Date, Description)
- Secção `-- UP` com SQL de criação
- Secção `-- DOWN` com SQL de reversão
## Criar Nova Migration
```bash
/descomplicar:db-migrate create nome_da_migration
```
## Notas
- As migrations são aplicadas em ordem numérica
- O checksum é verificado antes de aplicar
- Rollback automático em caso de erro
- Log completo em `cr_migrations`