mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-06-11 14:11:29 +00:00
49 lines
2.6 KiB
SQL
49 lines
2.6 KiB
SQL
-- ============================================================
|
|
-- Agent frontmatter (short expertise/capability summary for delegation + UI display).
|
|
-- NOTE: This is NOT the same as other_config.description which is the
|
|
-- LLM summoning prompt used to initialize the agent's identity.
|
|
-- ============================================================
|
|
|
|
ALTER TABLE agents ADD COLUMN IF NOT EXISTS frontmatter TEXT;
|
|
|
|
-- Search support: FTS (tsvector) + semantic (pgvector) for agent discovery.
|
|
-- Pattern follows skills table: hybrid BM25 + cosine similarity.
|
|
-- tsv is auto-generated from display_name + frontmatter.
|
|
-- embedding is populated on create/update when an embedding provider is available.
|
|
ALTER TABLE agents ADD COLUMN IF NOT EXISTS tsv tsvector
|
|
GENERATED ALWAYS AS (to_tsvector('simple', COALESCE(display_name, '') || ' ' || COALESCE(frontmatter, ''))) STORED;
|
|
ALTER TABLE agents ADD COLUMN IF NOT EXISTS embedding vector(1536);
|
|
CREATE INDEX IF NOT EXISTS idx_agents_tsv ON agents USING GIN(tsv);
|
|
CREATE INDEX IF NOT EXISTS idx_agents_embedding ON agents USING hnsw(embedding vector_cosine_ops);
|
|
|
|
-- ============================================================
|
|
-- Agent Links (inter-agent delegation permissions)
|
|
-- ============================================================
|
|
|
|
CREATE TABLE agent_links (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v7(),
|
|
source_agent_id UUID NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
target_agent_id UUID NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
|
|
direction VARCHAR(20) NOT NULL DEFAULT 'outbound',
|
|
description TEXT,
|
|
max_concurrent INT NOT NULL DEFAULT 3,
|
|
settings JSONB NOT NULL DEFAULT '{}',
|
|
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
|
created_by VARCHAR(255) NOT NULL,
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
UNIQUE(source_agent_id, target_agent_id),
|
|
CHECK (source_agent_id != target_agent_id)
|
|
);
|
|
|
|
CREATE INDEX idx_agent_links_source ON agent_links(source_agent_id) WHERE status = 'active';
|
|
CREATE INDEX idx_agent_links_target ON agent_links(target_agent_id) WHERE status = 'active';
|
|
|
|
-- ============================================================
|
|
-- Linked traces for delegation: parent_trace_id on traces table
|
|
-- allows navigating between caller and delegate traces.
|
|
-- ============================================================
|
|
|
|
ALTER TABLE traces ADD COLUMN IF NOT EXISTS parent_trace_id UUID;
|
|
CREATE INDEX IF NOT EXISTS idx_traces_parent ON traces(parent_trace_id) WHERE parent_trace_id IS NOT NULL;
|