CI / CI (pull_request) Canceled after 8m27s
knowledge_* namespace reserved for future agentic learning tables. memory_* namespace used for facts, events, and entity graph. - knowledge_node → memory_entity (reverted) - knowledge_edge → memory_edge (reverted) - Old provenance DAG (child_sha/parent_sha) renamed to memory_edge_provenance via migration 009 - Kept: runtime queries in versioning.rs, UUID casts, init_schema additions
73 lines
3.3 KiB
SQL
73 lines
3.3 KiB
SQL
-- Phase 6: Temporal Workflow Service Integration
|
|
--
|
|
-- Adds reference/linking table for external Temporal.io workflows.
|
|
-- Temporal Service owns execution state; Memory DB owns reasoning traces.
|
|
--
|
|
-- This is a minimal linking schema - no duplication of workflow logic.
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────
|
|
-- Temporal Workflow Links (External Service Reference)
|
|
-- ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
CREATE TABLE IF NOT EXISTS temporal_workflow_links (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
|
|
-- Temporal Service Reference (Required)
|
|
workflow_id VARCHAR(255) NOT NULL, -- Temporal workflow ID
|
|
workflow_type VARCHAR(255), -- e.g., "entity_extraction", "synthesis"
|
|
run_id VARCHAR(255), -- Temporal run ID
|
|
|
|
-- Memory Entity References (Optional - NULL until linked)
|
|
entity_id UUID REFERENCES memory_entity(id) ON DELETE SET NULL,
|
|
edge_id UUID REFERENCES memory_edge(id) ON DELETE SET NULL,
|
|
node_id BIGINT REFERENCES memory_node(id) ON DELETE SET NULL,
|
|
|
|
-- Sync Status
|
|
status VARCHAR(50) NOT NULL DEFAULT 'active'
|
|
CHECK (status IN ('active', 'completed', 'failed', 'archived')),
|
|
|
|
-- Timestamps
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
last_synced_at TIMESTAMPTZ,
|
|
|
|
-- Metadata (Extra context, error details, etc.)
|
|
metadata JSONB
|
|
);
|
|
|
|
-- Indexes for common queries
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_workflow_id
|
|
ON temporal_workflow_links(workflow_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_entity_id
|
|
ON temporal_workflow_links(entity_id)
|
|
WHERE entity_id IS NOT NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_edge_id
|
|
ON temporal_workflow_links(edge_id)
|
|
WHERE edge_id IS NOT NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_node_id
|
|
ON temporal_workflow_links(node_id)
|
|
WHERE node_id IS NOT NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_status
|
|
ON temporal_workflow_links(status, created_at DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_temporal_workflow_type
|
|
ON temporal_workflow_links(workflow_type)
|
|
WHERE status = 'active';
|
|
|
|
-- ─────────────────────────────────────────────────────────────────────────────
|
|
-- Rollback Instructions
|
|
-- ─────────────────────────────────────────────────────────────────────────────
|
|
|
|
-- To rollback this migration:
|
|
--
|
|
-- DROP INDEX IF EXISTS idx_temporal_workflow_type;
|
|
-- DROP INDEX IF EXISTS idx_temporal_status;
|
|
-- DROP INDEX IF EXISTS idx_temporal_node_id;
|
|
-- DROP INDEX IF EXISTS idx_temporal_edge_id;
|
|
-- DROP INDEX IF EXISTS idx_temporal_entity_id;
|
|
-- DROP INDEX IF EXISTS idx_temporal_workflow_id;
|
|
-- DROP TABLE IF EXISTS temporal_workflow_links;
|