8795f2842b
Panels: Connection + Agents + Logs + Status Feed.
- HTTP GET /agents + POST /agents/{id}/{start,stop,restart}
- SSE streaming: /sse/agents/{id}/logs + /sse/status
- DPAPI/XOR credential storage in local_files/agents_dashboard.db
- data_table style agents table with filter + status icons
- SQLite migrations via sqlite3_exec at startup
- --self-test mode: db + secret_store round-trip + subsystem checks
- pytest mock server emulating agents_and_robots API
Registry functions: http_request_cpp_core, sse_client_cpp_core,
secret_store_cpp_infra, logger_cpp_core
App icon: robot phosphor violet-500 (#8b5cf6)
Issue: 0129
Co-Authored-By: fn-orquestador <noreply@fn-registry.local>
23 lines
991 B
SQL
23 lines
991 B
SQL
-- 001_init.sql — schema inicial de agents_dashboard.
|
|
-- Idempotente: usa IF NOT EXISTS. Nunca borrar ni modificar este archivo.
|
|
-- Aplica via embed.FS al arrancar la app (regla db_migrations.md).
|
|
|
|
CREATE TABLE IF NOT EXISTS connections (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL DEFAULT 'default',
|
|
base_url TEXT NOT NULL,
|
|
apikey_encrypted BLOB NOT NULL, -- DPAPI Windows / base64+xor Linux fallback
|
|
last_used INTEGER DEFAULT (strftime('%s', 'now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS app_state (
|
|
key TEXT PRIMARY KEY,
|
|
value TEXT
|
|
);
|
|
|
|
-- Semilla de app_state para valores por defecto
|
|
INSERT OR IGNORE INTO app_state (key, value) VALUES ('active_connection_id', '');
|
|
INSERT OR IGNORE INTO app_state (key, value) VALUES ('log_agent_id', '');
|
|
INSERT OR IGNORE INTO app_state (key, value) VALUES ('log_autoscroll', '1');
|
|
INSERT OR IGNORE INTO app_state (key, value) VALUES ('status_feed_open', '1');
|