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:
391
commands/lsps.md
Normal file
391
commands/lsps.md
Normal file
@@ -0,0 +1,391 @@
|
||||
---
|
||||
name: lsps
|
||||
description: >
|
||||
Gestão de Language Server Protocols (LSPs) integrados.
|
||||
Listar, mapear, verificar instalação, sincronizar.
|
||||
argument-hint: "[list|show|add|map|check|install|sync] [args]"
|
||||
---
|
||||
|
||||
# /descomplicar:lsps
|
||||
|
||||
Gestão de Language Server Protocols (LSPs) integrados no sistema.
|
||||
|
||||
## Objectivo
|
||||
|
||||
Gerir os LSPs disponíveis, mapear para agentes de desenvolvimento, e monitorizar o seu estado.
|
||||
|
||||
## Sintaxe
|
||||
|
||||
```
|
||||
/descomplicar:lsps [action] [args]
|
||||
```
|
||||
|
||||
## Schema de Base de Dados
|
||||
|
||||
### Tabela Principal: cr_lsps
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS cr_lsps (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
slug VARCHAR(100) NOT NULL UNIQUE,
|
||||
name VARCHAR(200) NOT NULL,
|
||||
language VARCHAR(50) NOT NULL,
|
||||
package_manager ENUM('npm', 'pip', 'cargo', 'go', 'composer', 'gem', 'native') NOT NULL,
|
||||
package_name VARCHAR(200) NOT NULL,
|
||||
binary_path VARCHAR(500),
|
||||
config_file VARCHAR(200),
|
||||
capabilities JSON,
|
||||
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
|
||||
);
|
||||
```
|
||||
|
||||
### Tabela de Relacionamento: cr_agent_lsps
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS cr_agent_lsps (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
agent_id INT NOT NULL,
|
||||
lsp_id INT NOT NULL,
|
||||
relationship_type ENUM('primary', 'recommended', 'available') DEFAULT 'recommended',
|
||||
priority INT DEFAULT 1,
|
||||
auto_start BOOLEAN DEFAULT FALSE,
|
||||
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)
|
||||
);
|
||||
```
|
||||
|
||||
### Tabela de Telemetria: cr_lsp_usage
|
||||
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS cr_lsp_usage (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
lsp_id INT NOT NULL,
|
||||
agent_id INT,
|
||||
operation VARCHAR(50),
|
||||
response_time_ms INT,
|
||||
success BOOLEAN DEFAULT TRUE,
|
||||
error_message TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (lsp_id) REFERENCES cr_lsps(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (agent_id) REFERENCES cr_agents(id) ON DELETE SET NULL
|
||||
);
|
||||
```
|
||||
|
||||
## LSPs Predefinidos
|
||||
|
||||
| LSP | Linguagem | Package | Agentes Típicos |
|
||||
|-----|-----------|---------|-----------------|
|
||||
| typescript-language-server | TypeScript/JS | npm | javascript-fullstack-specialist |
|
||||
| pyright | Python | pip | dev-helper |
|
||||
| intelephense | PHP | npm | php-fullstack-engineer, wordpress-plugin-developer |
|
||||
| phpactor | PHP | composer | php-fullstack-engineer |
|
||||
| gopls | Go | go | dev-helper |
|
||||
| rust-analyzer | Rust | cargo | dev-helper |
|
||||
| vscode-css-languageserver | CSS | npm | web-designer, ui-designer |
|
||||
| vscode-html-languageserver | HTML | npm | web-designer, elementor-specialist |
|
||||
| yaml-language-server | YAML | npm | easypanel-specialist, n8n-automation-expert |
|
||||
| bash-language-server | Bash | npm | cwp-server-manager, backup-specialist |
|
||||
| sql-language-server | SQL | npm | database-design-specialist |
|
||||
|
||||
## Acções Disponíveis
|
||||
|
||||
### 1. Listar LSPs
|
||||
|
||||
```
|
||||
/descomplicar:lsps list
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
l.slug,
|
||||
l.name,
|
||||
l.language,
|
||||
l.status,
|
||||
l.version,
|
||||
COUNT(DISTINCT al.agent_id) as agents_using
|
||||
FROM cr_lsps l
|
||||
LEFT JOIN cr_agent_lsps al ON l.id = al.lsp_id
|
||||
GROUP BY l.id
|
||||
ORDER BY agents_using DESC, l.language;
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ LANGUAGE SERVER PROTOCOLS (11 configurados) ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ LSP │ Lang │ Status │ Agents │ Version ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ intelephense │ PHP │ active │ 8 │ 1.10.4 ║
|
||||
║ typescript-language-server │ TS/JS │ active │ 5 │ 4.3.3 ║
|
||||
║ pyright │ Python │ active │ 4 │ 1.1.350 ║
|
||||
║ yaml-language-server │ YAML │ active │ 3 │ 1.14.0 ║
|
||||
║ bash-language-server │ Bash │ active │ 2 │ 5.1.2 ║
|
||||
║ sql-language-server │ SQL │ active │ 2 │ 1.7.0 ║
|
||||
║ ... ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 2. Ver Detalhes de LSP
|
||||
|
||||
```
|
||||
/descomplicar:lsps show intelephense
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
l.*,
|
||||
GROUP_CONCAT(DISTINCT a.slug ORDER BY al.relationship_type, al.priority) as agents
|
||||
FROM cr_lsps l
|
||||
LEFT JOIN cr_agent_lsps al ON l.id = al.lsp_id
|
||||
LEFT JOIN cr_agents a ON al.agent_id = a.id
|
||||
WHERE l.slug = 'intelephense'
|
||||
GROUP BY l.id;
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ LSP: intelephense ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ Language: PHP ║
|
||||
║ Package: npm install intelephense ║
|
||||
║ Binary: node_modules/.bin/intelephense ║
|
||||
║ Version: 1.10.4 ║
|
||||
║ Status: active ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ CAPABILITIES ║
|
||||
║ ├── completionProvider: true ║
|
||||
║ ├── hoverProvider: true ║
|
||||
║ ├── definitionProvider: true ║
|
||||
║ ├── referencesProvider: true ║
|
||||
║ ├── documentSymbolProvider: true ║
|
||||
║ ├── workspaceSymbolProvider: true ║
|
||||
║ ├── codeActionProvider: true ║
|
||||
║ └── renameProvider: true ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ AGENTS (8) ║
|
||||
║ ├── PRIMARY: php-fullstack-engineer, wordpress-plugin-developer ║
|
||||
║ ├── RECOMMENDED: woocommerce-specialist, elementor-specialist ║
|
||||
║ └── AVAILABLE: perfex-crm-module-developer, dev-helper ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ TELEMETRY (30 dias) ║
|
||||
║ ├── Invocações: 1,234 ║
|
||||
║ ├── Avg Response: 45ms ║
|
||||
║ └── Success Rate: 99.8% ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 3. Adicionar LSP
|
||||
|
||||
```
|
||||
/descomplicar:lsps add
|
||||
```
|
||||
|
||||
Modo interactivo:
|
||||
1. Slug (identificador único)
|
||||
2. Nome
|
||||
3. Linguagem
|
||||
4. Package manager (npm/pip/cargo/go/composer/gem/native)
|
||||
5. Package name
|
||||
6. Capabilities (JSON)
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
INSERT INTO cr_lsps (slug, name, language, package_manager, package_name, capabilities, status)
|
||||
VALUES (
|
||||
'lua-language-server',
|
||||
'Lua Language Server',
|
||||
'Lua',
|
||||
'native',
|
||||
'lua-language-server',
|
||||
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true}',
|
||||
'active'
|
||||
);
|
||||
```
|
||||
|
||||
### 4. Mapear LSP para Agente
|
||||
|
||||
```
|
||||
/descomplicar:lsps map intelephense php-fullstack-engineer primary
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
||||
VALUES (
|
||||
(SELECT id FROM cr_agents WHERE slug = 'php-fullstack-engineer'),
|
||||
(SELECT id FROM cr_lsps WHERE slug = 'intelephense'),
|
||||
'primary',
|
||||
1
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
relationship_type = 'primary',
|
||||
priority = 1;
|
||||
```
|
||||
|
||||
### 5. Ver LSPs por Agente
|
||||
|
||||
```
|
||||
/descomplicar:lsps agent php-fullstack-engineer
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
l.slug,
|
||||
l.name,
|
||||
l.language,
|
||||
al.relationship_type,
|
||||
al.auto_start
|
||||
FROM cr_agent_lsps al
|
||||
JOIN cr_lsps l ON al.lsp_id = l.id
|
||||
WHERE al.agent_id = (SELECT id FROM cr_agents WHERE slug = 'php-fullstack-engineer')
|
||||
ORDER BY al.relationship_type, al.priority;
|
||||
```
|
||||
|
||||
### 6. Ver Agentes por Linguagem
|
||||
|
||||
```
|
||||
/descomplicar:lsps language PHP
|
||||
```
|
||||
|
||||
**Query:**
|
||||
```sql
|
||||
SELECT
|
||||
a.slug as agent,
|
||||
l.slug as lsp,
|
||||
al.relationship_type
|
||||
FROM cr_lsps l
|
||||
JOIN cr_agent_lsps al ON l.id = al.lsp_id
|
||||
JOIN cr_agents a ON al.agent_id = a.id
|
||||
WHERE l.language = 'PHP'
|
||||
ORDER BY al.relationship_type, a.slug;
|
||||
```
|
||||
|
||||
### 7. Verificar Instalação
|
||||
|
||||
```
|
||||
/descomplicar:lsps check
|
||||
```
|
||||
|
||||
Verifica se os LSPs estão instalados e funcionais:
|
||||
|
||||
```bash
|
||||
# TypeScript
|
||||
which typescript-language-server && typescript-language-server --version
|
||||
|
||||
# PHP
|
||||
which intelephense || npm list -g intelephense
|
||||
|
||||
# Python
|
||||
which pyright && pyright --version
|
||||
|
||||
# etc.
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ LSP HEALTH CHECK ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ LSP │ Status │ Version │ Path ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ typescript-language-server │ ✓ OK │ 4.3.3 │ /usr/bin/... ║
|
||||
║ intelephense │ ✓ OK │ 1.10.4 │ ~/.npm/... ║
|
||||
║ pyright │ ✗ MISSING │ - │ - ║
|
||||
║ gopls │ ✓ OK │ 0.15.3 │ ~/go/bin/... ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ RESULTADO: 3/4 instalados (75%) ║
|
||||
║ ACÇÃO: pip install pyright ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### 8. Instalar LSP em Falta
|
||||
|
||||
```
|
||||
/descomplicar:lsps install pyright
|
||||
```
|
||||
|
||||
Executa a instalação baseada no package_manager:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install -g <package>
|
||||
|
||||
# pip
|
||||
pip install <package>
|
||||
|
||||
# cargo
|
||||
cargo install <package>
|
||||
|
||||
# go
|
||||
go install <package>@latest
|
||||
```
|
||||
|
||||
### 9. Sincronizar com BD
|
||||
|
||||
```
|
||||
/descomplicar:lsps sync
|
||||
```
|
||||
|
||||
Sincroniza o estado local com a base de dados:
|
||||
1. Detecta LSPs instalados localmente
|
||||
2. Actualiza versões na BD
|
||||
3. Marca inactivos os não encontrados
|
||||
4. Reporta discrepâncias
|
||||
|
||||
## Integração com Injecção de Contexto
|
||||
|
||||
Quando um agente é iniciado, o contexto inclui os LSPs recomendados:
|
||||
|
||||
```markdown
|
||||
## Language Servers Disponíveis
|
||||
|
||||
### Primary LSPs (iniciar automaticamente)
|
||||
- **intelephense** (PHP) - Completions, hover, go-to-definition
|
||||
|
||||
### Recommended LSPs
|
||||
- **yaml-language-server** (YAML) - Para ficheiros de config
|
||||
|
||||
### Para Activar
|
||||
Se necessário LSP adicional, usar: /descomplicar:lsps install <nome>
|
||||
```
|
||||
|
||||
## Métricas
|
||||
|
||||
| Métrica | Descrição |
|
||||
|---------|-----------|
|
||||
| Coverage | % de agentes dev com LSP mapeado |
|
||||
| Response Time | Tempo médio de resposta LSP |
|
||||
| Availability | % de LSPs instalados vs configurados |
|
||||
| Usage | Invocações por LSP por período |
|
||||
|
||||
## Workflow de Setup
|
||||
|
||||
1. **Instalar LSP:** `/descomplicar:lsps install <slug>`
|
||||
2. **Mapear para agentes:** `/descomplicar:lsps map <lsp> <agent> <type>`
|
||||
3. **Verificar:** `/descomplicar:lsps check`
|
||||
4. **Sincronizar:** `/descomplicar:lsps sync`
|
||||
|
||||
## Output Esperado
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ LANGUAGE SERVER PROTOCOLS (11 configurados) ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ LSP │ Lang │ Status │ Agents │ Version ║
|
||||
║ intelephense │ PHP │ active │ 8 │ 1.10.4 ║
|
||||
║ typescript-language-server │ TS/JS │ active │ 5 │ 4.3.3 ║
|
||||
║ pyright │ Python │ active │ 4 │ 1.1.350 ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ Coverage: 85% | Avg Response: 45ms | Success: 99.8% ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
Reference in New Issue
Block a user