Files
descomplicar-meta-plugin/commands/infra-sync.md
Emanuel Almeida 692475a315 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>
2026-02-04 16:18:02 +00:00

199 lines
9.5 KiB
Markdown

---
name: sync
description: >
Sincronização completa: entidades + relacionamentos.
Compara ficheiros locais com MySQL e corrige inconsistências.
argument-hint: "[--dry-run] [--force] [--entities-only] [--relationships-only]"
---
# /descomplicar:sync
Sincronização completa: entidades + relacionamentos.
## Objectivo
Garantir que ficheiros locais, BD MySQL e relacionamentos estão todos sincronizados e consistentes.
## Instruções
Quando invocado, deves:
### Fase 1: Sync Entidades Core
1. **Ler estado local** dos ficheiros JSON:
```
~/.claude/sdks/_resources/agents.json
~/.claude/sdks/_resources/skills.json
~/.claude/sdks/_resources/mcps.json
~/.claude/sdks/_registry.json
```
2. **Comparar com MySQL** (Core Tables):
```sql
SELECT slug, name, category, status FROM cr_agents;
SELECT slug, name, category, status FROM cr_skills;
SELECT slug, name, transport, status FROM cr_mcps;
SELECT slug, name, status FROM cr_sdks;
```
3. **Aplicar diferenças** nas entidades:
- Novos em ficheiros → INSERT
- Diferentes → UPDATE
- Removidos → Marcar inactive
### Fase 2: Sync Relacionamentos
4. **Verificar consistência de relacionamentos**:
**cr_agent_mcps (Agent ↔ MCP):**
```sql
-- Verificar órfãos (agent_id que não existe em cr_agents)
SELECT am.* FROM cr_agent_mcps am
LEFT JOIN cr_agents a ON am.agent_id = a.id
WHERE a.id IS NULL;
-- Verificar órfãos (mcp_id que não existe em cr_mcps)
SELECT am.* FROM cr_agent_mcps am
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
WHERE m.id IS NULL;
```
**cr_sdk_agents (SDK ↔ Agent):**
```sql
SELECT sa.* FROM cr_sdk_agents sa
LEFT JOIN cr_sdks s ON sa.sdk_id = s.id
LEFT JOIN cr_agents a ON sa.agent_id = a.id
WHERE s.id IS NULL OR a.id IS NULL;
```
**cr_sdk_skills (SDK ↔ Skill):**
```sql
SELECT ss.* FROM cr_sdk_skills ss
LEFT JOIN cr_sdks s ON ss.sdk_id = s.id
LEFT JOIN cr_skills sk ON ss.skill_id = sk.id
WHERE s.id IS NULL OR sk.id IS NULL;
```
**cr_sdk_mcps (SDK ↔ MCP):**
```sql
SELECT sm.* FROM cr_sdk_mcps sm
LEFT JOIN cr_sdks s ON sm.sdk_id = s.id
LEFT JOIN cr_mcps m ON sm.mcp_id = m.id
WHERE s.id IS NULL OR m.id IS NULL;
```
5. **Limpar órfãos** (com confirmação se > 10):
```sql
DELETE FROM cr_agent_mcps WHERE agent_id NOT IN (SELECT id FROM cr_agents);
DELETE FROM cr_agent_mcps WHERE mcp_id NOT IN (SELECT id FROM cr_mcps);
-- Repetir para todas as tabelas de relacionamento
```
### Fase 3: Sync MCP Tools
6. **Actualizar cr_mcp_tools**:
```sql
-- Para cada MCP activo, verificar se tools estão mapeadas
SELECT m.slug, COUNT(mt.id) as tools_count
FROM cr_mcps m
LEFT JOIN cr_mcp_tools mt ON m.id = mt.mcp_id
WHERE m.status = 'active'
GROUP BY m.id;
```
### Fase 4: Verificar Intelligence Layer
7. **Validar Decision Trees**:
```sql
-- Verificar se agentes referenciados existem
SELECT dt.* FROM cr_decision_trees dt
LEFT JOIN cr_agents a ON dt.agent_id = a.id
WHERE a.id IS NULL;
```
8. **Actualizar recommendations** se necessário:
```sql
-- Marcar recommendations implementadas
UPDATE cr_recommendations
SET status = 'implemented', implemented_at = NOW()
WHERE status = 'pending'
AND component_type = 'agent'
AND component_id IN (SELECT slug FROM cr_agents WHERE status = 'active');
```
### Fase 5: Registar Sync
9. **Log da operação**:
```sql
INSERT INTO cr_infrastructure_sync
(sync_type, entities_synced, relationships_checked, orphans_removed, status, created_at)
VALUES ('full', X, Y, Z, 'success', NOW());
```
10. **Apresentar relatório**:
```
╔══════════════════════════════════════════════════════════════════════╗
║ SYNC REPORT - 2026-02-04 15:35 ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 1: ENTIDADES CORE ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Componente │ Local │ MySQL │ Adicionados │ Actualizados │ Status ║
║ Agents │ 46 │ 46 │ 0 │ 2 │ ✓ ║
║ Skills │ 54 │ 54 │ 0 │ 0 │ ✓ ║
║ MCPs │ 33 │ 33 │ 0 │ 1 │ ✓ ║
║ SDKs │ 29 │ 29 │ 0 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 2: RELACIONAMENTOS ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Tabela │ Total │ Órfãos │ Removidos │ Status ║
║ cr_agent_mcps │ 483 │ 0 │ 0 │ ✓ ║
║ cr_sdk_agents │ 131 │ 0 │ 0 │ ✓ ║
║ cr_sdk_skills │ 75 │ 0 │ 0 │ ✓ ║
║ cr_sdk_mcps │ 56 │ 0 │ 0 │ ✓ ║
║ cr_agent_skills │ 23 │ 0 │ 0 │ ✓ ║
║ cr_skill_mcps │ 45 │ 0 │ 0 │ ✓ ║
║ cr_agent_collabs │ 12 │ 0 │ 0 │ ✓ ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 3: MCP TOOLS ║
║ ─────────────────────────────────────────────────────────────────── ║
║ MCPs com tools mapeadas: 33/33 (822 tools total) ║
╠══════════════════════════════════════════════════════════════════════╣
║ FASE 4: INTELLIGENCE ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Decision Trees válidas: 5/5 ║
║ Recommendations actualizadas: 1 ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: Sync completo, 0 problemas ║
║ PRÓXIMO SYNC: Automático em 6h (cron) ║
╚══════════════════════════════════════════════════════════════════════╝
```
## Sintaxe
```
/descomplicar:sync [options]
```
| Opção | Descrição | Default |
|-------|-----------|---------|
| `--dry-run` | Mostrar alterações sem aplicar | false |
| `--force` | Aplicar sem confirmação | false |
| `--entities-only` | Sync apenas entidades core | false |
| `--relationships-only` | Sync apenas relacionamentos | false |
| `--fix-orphans` | Remover órfãos automaticamente | false |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ SYNC REPORT - 2026-02-04 15:35 ║
╠══════════════════════════════════════════════════════════════════════╣
║ ENTIDADES: Agents 46 ✓ | Skills 54 ✓ | MCPs 33 ✓ | SDKs 29 ✓ ║
║ RELACIONAMENTOS: 825 verificados, 0 órfãos removidos ║
║ INTELLIGENCE: 5 decision trees válidas ║
╠══════════════════════════════════════════════════════════════════════╣
║ RESULTADO: Sync completo, 0 problemas ║
╚══════════════════════════════════════════════════════════════════════╝
```