mirror of
https://github.com/myronblair/jarvis
synced 2026-06-30 17:50:23 -05:00
d3156b98b3
- db/schema.sql: full jarvis_db schema (15 tables) - agent/jarvis-agent.py: production agent script - config/vhost/: OpenLiteSpeed vhost configuration - deploy/jarvis-agent.service: systemd unit - deploy/cron-jarvis.txt: JARVIS cron entries - .gitignore: exclude system dirs and logs
251 lines
12 KiB
SQL
251 lines
12 KiB
SQL
/*M!999999\- enable the sandbox mode */
|
|
|
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
|
/*!40101 SET NAMES utf8mb4 */;
|
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
|
DROP TABLE IF EXISTS `agent_commands`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `agent_commands` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`agent_id` varchar(128) NOT NULL,
|
|
`command_type` varchar(64) NOT NULL,
|
|
`command_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`command_data`)),
|
|
`status` enum('pending','delivered','executed','failed') NOT NULL DEFAULT 'pending',
|
|
`created_at` datetime DEFAULT current_timestamp(),
|
|
`delivered_at` datetime DEFAULT NULL,
|
|
`executed_at` datetime DEFAULT NULL,
|
|
`result` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`result`)),
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_agent_pending` (`agent_id`,`status`),
|
|
KEY `idx_created` (`created_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `agent_metrics`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `agent_metrics` (
|
|
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
|
`agent_id` varchar(128) NOT NULL,
|
|
`metric_type` varchar(64) NOT NULL,
|
|
`metric_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`metric_data`)),
|
|
`recorded_at` datetime DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_agent_time` (`agent_id`,`recorded_at`),
|
|
KEY `idx_recorded` (`recorded_at`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=28329 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `alerts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `alerts` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`alert_type` varchar(50) NOT NULL,
|
|
`title` varchar(255) NOT NULL,
|
|
`message` text DEFAULT NULL,
|
|
`severity` enum('info','warning','critical') DEFAULT 'info',
|
|
`resolved` tinyint(1) DEFAULT 0,
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
`resolved_at` timestamp NULL DEFAULT NULL,
|
|
`source_key` varchar(100) DEFAULT NULL,
|
|
`auto_resolve` tinyint(1) DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_source_key` (`source_key`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `api_cache`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `api_cache` (
|
|
`cache_key` varchar(100) NOT NULL,
|
|
`data` mediumtext NOT NULL,
|
|
`updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
PRIMARY KEY (`cache_key`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `conversations`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `conversations` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`session_id` varchar(64) NOT NULL,
|
|
`role` enum('user','assistant','system') NOT NULL,
|
|
`content` text NOT NULL,
|
|
`tokens_used` int(11) DEFAULT 0,
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_session` (`session_id`),
|
|
KEY `idx_created` (`created_at`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=325 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `ha_entities`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `ha_entities` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`agent_id` varchar(128) NOT NULL,
|
|
`entity_id` varchar(255) NOT NULL,
|
|
`entity_name` varchar(255) DEFAULT NULL,
|
|
`domain` varchar(64) DEFAULT NULL,
|
|
`state` varchar(255) DEFAULT NULL,
|
|
`attributes` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`attributes`)),
|
|
`last_changed` datetime DEFAULT NULL,
|
|
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_agent_entity` (`agent_id`,`entity_id`),
|
|
KEY `idx_domain` (`domain`),
|
|
KEY `idx_updated` (`updated_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `kb_facts`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `kb_facts` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`category` varchar(64) NOT NULL COMMENT 'e.g. system, network, proxmox, ha, weather',
|
|
`fact_key` varchar(128) NOT NULL,
|
|
`fact_value` text NOT NULL,
|
|
`host` varchar(64) DEFAULT 'local',
|
|
`expires_at` datetime DEFAULT NULL,
|
|
`updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `unique_fact` (`category`,`fact_key`,`host`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=26088 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `kb_intents`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `kb_intents` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`intent_name` varchar(64) NOT NULL,
|
|
`pattern` varchar(512) NOT NULL COMMENT 'regex pattern to match user input',
|
|
`response_template` text NOT NULL COMMENT 'template with {fact_key} placeholders',
|
|
`fact_category` varchar(64) DEFAULT NULL,
|
|
`action_type` varchar(32) DEFAULT 'response' COMMENT 'response, action, ollama, claude',
|
|
`priority` int(11) DEFAULT 5,
|
|
`active` tinyint(1) DEFAULT 1,
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `kb_ollama_models`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `kb_ollama_models` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`model_name` varchar(128) NOT NULL,
|
|
`size_gb` decimal(6,1) DEFAULT NULL,
|
|
`context_length` int(11) DEFAULT 4096,
|
|
`is_active` tinyint(1) DEFAULT 0,
|
|
`pulled_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `model_name` (`model_name`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `kb_preferences`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `kb_preferences` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`pref_key` varchar(128) NOT NULL,
|
|
`pref_value` text NOT NULL,
|
|
`updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `pref_key` (`pref_key`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `known_commands`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `known_commands` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`phrase` varchar(255) NOT NULL,
|
|
`action` varchar(100) NOT NULL,
|
|
`params` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`params`)),
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `metrics_history`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `metrics_history` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`metric_name` varchar(100) NOT NULL,
|
|
`metric_value` float NOT NULL,
|
|
`host` varchar(100) DEFAULT 'jarvis',
|
|
`recorded_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_metric_time` (`metric_name`,`recorded_at`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=33415 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `network_devices`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `network_devices` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`ip` varchar(45) NOT NULL,
|
|
`mac` varchar(17) DEFAULT NULL,
|
|
`hostname` varchar(255) DEFAULT NULL,
|
|
`alias` varchar(100) DEFAULT NULL,
|
|
`device_type` varchar(50) DEFAULT NULL,
|
|
`last_seen` timestamp NULL DEFAULT NULL,
|
|
`status` enum('online','offline','unknown') DEFAULT 'unknown',
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_ip` (`ip`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=409 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `registered_agents`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `registered_agents` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`agent_id` varchar(128) NOT NULL,
|
|
`hostname` varchar(255) NOT NULL,
|
|
`agent_type` enum('linux','homeassistant','proxmox') NOT NULL DEFAULT 'linux',
|
|
`ip_address` varchar(45) DEFAULT NULL,
|
|
`api_key` varchar(64) NOT NULL,
|
|
`capabilities` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`capabilities`)),
|
|
`last_seen` datetime DEFAULT NULL,
|
|
`status` enum('online','offline','unknown') NOT NULL DEFAULT 'unknown',
|
|
`created_at` datetime DEFAULT current_timestamp(),
|
|
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_agent_id` (`agent_id`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
DROP TABLE IF EXISTS `users`;
|
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
|
/*!40101 SET character_set_client = utf8mb4 */;
|
|
CREATE TABLE `users` (
|
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
`username` varchar(50) NOT NULL,
|
|
`password_hash` varchar(255) NOT NULL,
|
|
`display_name` varchar(100) DEFAULT 'Mr. Blair',
|
|
`preferences` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`preferences`)),
|
|
`last_seen` timestamp NULL DEFAULT NULL,
|
|
`created_at` timestamp NULL DEFAULT current_timestamp(),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `username` (`username`)
|
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
|
|
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
|
|