feat(prompts): implement Phase 5 - Dependency Tracking (FR-6)
Add directed dependency graph with cycle detection, topological sort, and query service for finding dependents/dependencies transitively. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
36
migrations/prompts/004_create_dependencies.sql
Normal file
36
migrations/prompts/004_create_dependencies.sql
Normal file
@@ -0,0 +1,36 @@
|
||||
-- Migration 004: Create prompt dependencies table
|
||||
-- Implements FR-6: Dependency Tracking
|
||||
-- FR-6.1: Directed dependency edges between artifacts
|
||||
-- FR-6.2: Cross-space dependency graph
|
||||
-- Date: 2026-02-08
|
||||
|
||||
-- Prompt dependency edges table
|
||||
CREATE TABLE IF NOT EXISTS prompt_dependencies (
|
||||
id TEXT PRIMARY KEY,
|
||||
source_artifact_id TEXT NOT NULL,
|
||||
target_artifact_id TEXT NOT NULL,
|
||||
run_id TEXT NOT NULL,
|
||||
edge_type TEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(source_artifact_id, target_artifact_id, run_id)
|
||||
);
|
||||
|
||||
-- Note: Foreign keys documented but not enforced (matches existing pattern)
|
||||
-- source_artifact_id REFERENCES prompt_artifacts(id)
|
||||
-- target_artifact_id REFERENCES prompt_artifacts(id)
|
||||
-- run_id REFERENCES prompt_runs(id)
|
||||
|
||||
-- Indexes for performance
|
||||
CREATE INDEX IF NOT EXISTS idx_deps_source ON prompt_dependencies(source_artifact_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_deps_target ON prompt_dependencies(target_artifact_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_deps_run ON prompt_dependencies(run_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_deps_type ON prompt_dependencies(edge_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_deps_source_target ON prompt_dependencies(source_artifact_id, target_artifact_id);
|
||||
|
||||
-- Column documentation:
|
||||
-- id: Unique UUID for this dependency edge
|
||||
-- source_artifact_id: Artifact that depends on the target
|
||||
-- target_artifact_id: Artifact that is depended upon
|
||||
-- run_id: The execution run that established this dependency
|
||||
-- edge_type: requires, generates, includes
|
||||
-- created_at: When this dependency was recorded
|
||||
Reference in New Issue
Block a user