Files
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

9.5 KiB

name, description, argument-hint
name description argument-hint
sync Sincronização completa: entidades + relacionamentos. Compara ficheiros locais com MySQL e corrige inconsistências. [--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):

    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

  1. Verificar consistência de relacionamentos:

    cr_agent_mcps (Agent ↔ MCP):

    -- 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):

    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):

    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):

    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;
    
  2. Limpar órfãos (com confirmação se > 10):

    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

  1. Actualizar cr_mcp_tools:
    -- 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

  1. Validar Decision Trees:

    -- 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;
    
  2. Actualizar recommendations se necessário:

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

  1. Log da operação:

    INSERT INTO cr_infrastructure_sync
    (sync_type, entities_synced, relationships_checked, orphans_removed, status, created_at)
    VALUES ('full', X, Y, Z, 'success', NOW());
    
  2. 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                               ║
╚══════════════════════════════════════════════════════════════════════╝