diff --git a/backend/supabase/migrations/20250705161610_agent_workflows.sql b/backend/supabase/migrations/20250705161610_agent_workflows.sql index 9456d633..aab43f3a 100644 --- a/backend/supabase/migrations/20250705161610_agent_workflows.sql +++ b/backend/supabase/migrations/20250705161610_agent_workflows.sql @@ -99,13 +99,22 @@ CREATE INDEX IF NOT EXISTS idx_workflow_executions_started_at ON workflow_execut CREATE INDEX IF NOT EXISTS idx_workflow_step_executions_execution_id ON workflow_step_executions(execution_id); CREATE INDEX IF NOT EXISTS idx_workflow_step_executions_step_id ON workflow_step_executions(step_id); --- Row Level Security (RLS) Policies ALTER TABLE agent_workflows ENABLE ROW LEVEL SECURITY; ALTER TABLE workflow_steps ENABLE ROW LEVEL SECURITY; ALTER TABLE workflow_executions ENABLE ROW LEVEL SECURITY; ALTER TABLE workflow_step_executions ENABLE ROW LEVEL SECURITY; --- Agent workflows policies +DROP POLICY IF EXISTS "Users can view workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can create workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can update workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can delete workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can manage steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can view steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can view executions for their workflows" ON workflow_executions; +DROP POLICY IF EXISTS "Service role can manage executions" ON workflow_executions; +DROP POLICY IF EXISTS "Users can view step executions for their workflows" ON workflow_step_executions; +DROP POLICY IF EXISTS "Service role can manage step executions" ON workflow_step_executions; + CREATE POLICY "Users can view workflows for their agents" ON agent_workflows FOR SELECT USING ( agent_id IN ( @@ -203,7 +212,10 @@ BEGIN END; $$ LANGUAGE plpgsql; --- Create triggers for updated_at +-- Create triggers for updated_at (drop existing first to avoid conflicts) +DROP TRIGGER IF EXISTS update_agent_workflows_updated_at ON agent_workflows; +DROP TRIGGER IF EXISTS update_workflow_steps_updated_at ON workflow_steps; + CREATE TRIGGER update_agent_workflows_updated_at BEFORE UPDATE ON agent_workflows FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); diff --git a/backend/supabase/migrations/20250705164211_fix_agent_workflows.sql b/backend/supabase/migrations/20250705164211_fix_agent_workflows.sql index bb5c7f24..8351c3f2 100644 --- a/backend/supabase/migrations/20250705164211_fix_agent_workflows.sql +++ b/backend/supabase/migrations/20250705164211_fix_agent_workflows.sql @@ -1,11 +1,6 @@ --- Fix Agent Workflows Migration Issues --- This migration fixes foreign key references and RLS policies - --- Drop existing foreign key constraints that reference the wrong column ALTER TABLE agent_workflows DROP CONSTRAINT IF EXISTS agent_workflows_agent_id_fkey; ALTER TABLE workflow_executions DROP CONSTRAINT IF EXISTS workflow_executions_agent_id_fkey; --- Add correct foreign key constraints ALTER TABLE agent_workflows ADD CONSTRAINT agent_workflows_agent_id_fkey FOREIGN KEY (agent_id) REFERENCES agents(agent_id) ON DELETE CASCADE; @@ -14,7 +9,6 @@ ALTER TABLE workflow_executions ADD CONSTRAINT workflow_executions_agent_id_fkey FOREIGN KEY (agent_id) REFERENCES agents(agent_id) ON DELETE CASCADE; --- Drop existing RLS policies DROP POLICY IF EXISTS "Users can view workflows for their agents" ON agent_workflows; DROP POLICY IF EXISTS "Users can create workflows for their agents" ON agent_workflows; DROP POLICY IF EXISTS "Users can update workflows for their agents" ON agent_workflows; @@ -24,87 +18,6 @@ DROP POLICY IF EXISTS "Users can manage steps for their workflows" ON workflow_s DROP POLICY IF EXISTS "Users can view executions for their workflows" ON workflow_executions; DROP POLICY IF EXISTS "Users can view step executions for their workflows" ON workflow_step_executions; --- Create correct RLS policies -CREATE POLICY "Users can view workflows for their agents" ON agent_workflows - FOR SELECT USING ( - agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ); - -CREATE POLICY "Users can create workflows for their agents" ON agent_workflows - FOR INSERT WITH CHECK ( - agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ); - -CREATE POLICY "Users can update workflows for their agents" ON agent_workflows - FOR UPDATE USING ( - agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ); - -CREATE POLICY "Users can delete workflows for their agents" ON agent_workflows - FOR DELETE USING ( - agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ); - -CREATE POLICY "Users can view steps for their workflows" ON workflow_steps - FOR SELECT USING ( - workflow_id IN ( - SELECT id FROM agent_workflows - WHERE agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ) - ); - -CREATE POLICY "Users can manage steps for their workflows" ON workflow_steps - FOR ALL USING ( - workflow_id IN ( - SELECT id FROM agent_workflows - WHERE agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ) - ); - -CREATE POLICY "Users can view executions for their workflows" ON workflow_executions - FOR SELECT USING ( - workflow_id IN ( - SELECT id FROM agent_workflows - WHERE agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ) - ); - -CREATE POLICY "Users can view step executions for their workflows" ON workflow_step_executions - FOR SELECT USING ( - execution_id IN ( - SELECT id FROM workflow_executions - WHERE workflow_id IN ( - SELECT id FROM agent_workflows - WHERE agent_id IN ( - SELECT agent_id FROM agents - WHERE basejump.has_role_on_account(account_id) - ) - ) - ) - ); - --- Create missing function if it doesn't exist CREATE OR REPLACE FUNCTION update_updated_at_column() RETURNS TRIGGER AS $$ BEGIN @@ -112,14 +25,3 @@ BEGIN RETURN NEW; END; $$ LANGUAGE plpgsql; - --- Add missing triggers if they don't exist -DROP TRIGGER IF EXISTS update_agent_workflows_updated_at ON agent_workflows; -CREATE TRIGGER update_agent_workflows_updated_at - BEFORE UPDATE ON agent_workflows - FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); - -DROP TRIGGER IF EXISTS update_workflow_steps_updated_at ON workflow_steps; -CREATE TRIGGER update_workflow_steps_updated_at - BEFORE UPDATE ON workflow_steps - FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); \ No newline at end of file diff --git a/backend/supabase/migrations/20250706130554_simplify_workflow_steps.sql b/backend/supabase/migrations/20250706130554_simplify_workflow_steps.sql index 0c053e18..ce903f58 100644 --- a/backend/supabase/migrations/20250706130554_simplify_workflow_steps.sql +++ b/backend/supabase/migrations/20250706130554_simplify_workflow_steps.sql @@ -1 +1,6 @@ -ALTER TYPE workflow_step_type ADD VALUE 'instruction'; \ No newline at end of file +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_enum WHERE enumlabel = 'instruction' AND enumtypid = 'workflow_step_type'::regtype) THEN + ALTER TYPE workflow_step_type ADD VALUE 'instruction'; + END IF; +END $$; \ No newline at end of file diff --git a/backend/supabase/migrations/20250723093053_fix_workflow_policy_conflicts.sql b/backend/supabase/migrations/20250723093053_fix_workflow_policy_conflicts.sql new file mode 100644 index 00000000..0338e36b --- /dev/null +++ b/backend/supabase/migrations/20250723093053_fix_workflow_policy_conflicts.sql @@ -0,0 +1,22 @@ +DROP POLICY IF EXISTS "Users can view workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can create workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can update workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Users can delete workflows for their agents" ON agent_workflows; +DROP POLICY IF EXISTS "Service role can manage workflows" ON agent_workflows; + +DROP POLICY IF EXISTS "Users can view steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can create steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can update steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can delete steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Users can manage steps for their workflows" ON workflow_steps; +DROP POLICY IF EXISTS "Service role can manage workflow steps" ON workflow_steps; + +DROP POLICY IF EXISTS "Users can view executions for their workflows" ON workflow_executions; +DROP POLICY IF EXISTS "Service role can manage executions" ON workflow_executions; +DROP POLICY IF EXISTS "Service role can manage workflow executions" ON workflow_executions; + +DROP POLICY IF EXISTS "Users can view step executions for their workflows" ON workflow_step_executions; +DROP POLICY IF EXISTS "Service role can manage step executions" ON workflow_step_executions; + +DROP TRIGGER IF EXISTS update_agent_workflows_updated_at ON agent_workflows; +DROP TRIGGER IF EXISTS update_workflow_steps_updated_at ON workflow_steps;