- 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>
187 lines
9.3 KiB
SQL
187 lines
9.3 KiB
SQL
-- ============================================================================
|
|
-- LSP Tables for Descomplicar Meta-Plugin
|
|
-- Database: ealmeida_desk24
|
|
-- Version: 1.1.0
|
|
-- ============================================================================
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- Core LSP Table
|
|
-- -----------------------------------------------------------------------------
|
|
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,
|
|
INDEX idx_language (language),
|
|
INDEX idx_status (status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- Agent-LSP Relationship Table
|
|
-- -----------------------------------------------------------------------------
|
|
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),
|
|
INDEX idx_agent (agent_id),
|
|
INDEX idx_lsp (lsp_id),
|
|
INDEX idx_relationship (relationship_type)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- LSP Usage Telemetry Table
|
|
-- -----------------------------------------------------------------------------
|
|
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,
|
|
INDEX idx_lsp (lsp_id),
|
|
INDEX idx_created (created_at),
|
|
INDEX idx_success (success)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- Insert Default LSPs
|
|
-- -----------------------------------------------------------------------------
|
|
INSERT INTO cr_lsps (slug, name, language, package_manager, package_name, capabilities, status) VALUES
|
|
('typescript-language-server', 'TypeScript Language Server', 'TypeScript', 'npm', 'typescript-language-server',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "codeActionProvider": true, "renameProvider": true}', 'active'),
|
|
|
|
('intelephense', 'Intelephense PHP', 'PHP', 'npm', 'intelephense',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "workspaceSymbolProvider": true, "codeActionProvider": true, "renameProvider": true}', 'active'),
|
|
|
|
('pyright', 'Pyright Python', 'Python', 'pip', 'pyright',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "renameProvider": true}', 'active'),
|
|
|
|
('gopls', 'Go Language Server', 'Go', 'go', 'golang.org/x/tools/gopls',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "codeActionProvider": true, "renameProvider": true, "foldingRangeProvider": true}', 'active'),
|
|
|
|
('rust-analyzer', 'Rust Analyzer', 'Rust', 'cargo', 'rust-analyzer',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true, "codeActionProvider": true, "renameProvider": true, "inlayHintProvider": true}', 'active'),
|
|
|
|
('yaml-language-server', 'YAML Language Server', 'YAML', 'npm', 'yaml-language-server',
|
|
'{"completionProvider": true, "hoverProvider": true, "documentSymbolProvider": true, "validationProvider": true}', 'active'),
|
|
|
|
('bash-language-server', 'Bash Language Server', 'Bash', 'npm', 'bash-language-server',
|
|
'{"completionProvider": true, "hoverProvider": true, "definitionProvider": true, "referencesProvider": true, "documentSymbolProvider": true}', 'active'),
|
|
|
|
('sql-language-server', 'SQL Language Server', 'SQL', 'npm', 'sql-language-server',
|
|
'{"completionProvider": true, "hoverProvider": true, "documentSymbolProvider": true}', 'active'),
|
|
|
|
('vscode-css-languageserver', 'CSS Language Server', 'CSS', 'npm', 'vscode-css-languageserver-bin',
|
|
'{"completionProvider": true, "hoverProvider": true, "documentSymbolProvider": true, "colorProvider": true}', 'active'),
|
|
|
|
('vscode-html-languageserver', 'HTML Language Server', 'HTML', 'npm', 'vscode-html-languageserver-bin',
|
|
'{"completionProvider": true, "hoverProvider": true, "documentSymbolProvider": true, "foldingRangeProvider": true}', 'active'),
|
|
|
|
('vscode-json-languageserver', 'JSON Language Server', 'JSON', 'npm', 'vscode-json-languageserver-bin',
|
|
'{"completionProvider": true, "hoverProvider": true, "documentSymbolProvider": true, "validationProvider": true}', 'active')
|
|
|
|
ON DUPLICATE KEY UPDATE
|
|
name = VALUES(name),
|
|
capabilities = VALUES(capabilities),
|
|
updated_at = NOW();
|
|
|
|
-- -----------------------------------------------------------------------------
|
|
-- Default Agent-LSP Mappings for Development Agents
|
|
-- -----------------------------------------------------------------------------
|
|
|
|
-- PHP Agents → intelephense
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority, auto_start)
|
|
SELECT a.id, l.id, 'primary', 1, TRUE
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug IN ('php-fullstack-engineer', 'wordpress-plugin-developer', 'perfex-crm-module-developer')
|
|
AND l.slug = 'intelephense'
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'primary', auto_start = TRUE;
|
|
|
|
-- WordPress Agents → typescript-language-server (for Gutenberg/React)
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
|
SELECT a.id, l.id, 'recommended', 2
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug IN ('wordpress-plugin-developer', 'elementor-specialist')
|
|
AND l.slug = 'typescript-language-server'
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'recommended';
|
|
|
|
-- JavaScript Agent → typescript-language-server
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority, auto_start)
|
|
SELECT a.id, l.id, 'primary', 1, TRUE
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug = 'javascript-fullstack-specialist'
|
|
AND l.slug = 'typescript-language-server'
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'primary', auto_start = TRUE;
|
|
|
|
-- Database Agent → sql-language-server
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority, auto_start)
|
|
SELECT a.id, l.id, 'primary', 1, TRUE
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug = 'database-design-specialist'
|
|
AND l.slug = 'sql-language-server'
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'primary', auto_start = TRUE;
|
|
|
|
-- Infrastructure Agents → yaml-language-server, bash-language-server
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
|
SELECT a.id, l.id, 'primary', 1
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug IN ('easypanel-specialist', 'cwp-server-manager', 'backup-specialist')
|
|
AND l.slug IN ('yaml-language-server', 'bash-language-server')
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'primary';
|
|
|
|
-- Web Design Agents → CSS, HTML
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
|
SELECT a.id, l.id, 'primary', 1
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug IN ('web-designer', 'ui-designer', 'elementor-specialist')
|
|
AND l.slug IN ('vscode-css-languageserver', 'vscode-html-languageserver')
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'primary';
|
|
|
|
-- N8N Automation → yaml-language-server, json-language-server
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
|
SELECT a.id, l.id, 'recommended', 1
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug = 'n8n-automation-expert'
|
|
AND l.slug IN ('yaml-language-server', 'vscode-json-languageserver')
|
|
ON DUPLICATE KEY UPDATE relationship_type = 'recommended';
|
|
|
|
-- Dev Helper → Multiple LSPs available
|
|
INSERT INTO cr_agent_lsps (agent_id, lsp_id, relationship_type, priority)
|
|
SELECT a.id, l.id, 'available', 3
|
|
FROM cr_agents a, cr_lsps l
|
|
WHERE a.slug = 'dev-helper'
|
|
AND l.status = 'active'
|
|
ON DUPLICATE KEY UPDATE priority = 3;
|
|
|
|
-- ============================================================================
|
|
-- Verification Query
|
|
-- ============================================================================
|
|
-- SELECT
|
|
-- l.slug as lsp,
|
|
-- l.language,
|
|
-- COUNT(DISTINCT al.agent_id) as agents_mapped
|
|
-- FROM cr_lsps l
|
|
-- LEFT JOIN cr_agent_lsps al ON l.id = al.lsp_id
|
|
-- GROUP BY l.id
|
|
-- ORDER BY agents_mapped DESC;
|