- 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>
199 lines
9.5 KiB
Markdown
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 ║
|
|
╚══════════════════════════════════════════════════════════════════════╝
|
|
```
|