-- PostgreSQL Database Schema
-- Database: database
-- Generated by RelSpec

-- Sequences for schema: public
CREATE SEQUENCE IF NOT EXISTS public.identity_thoughts_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_projects_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_thought_links_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_embeddings_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_stored_files_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_chat_histories_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_tool_annotations_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_learnings_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_plans_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_plan_dependencies_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_plan_related_plans_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_plan_skills_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_plan_guardrails_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_agent_skills_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_agent_guardrails_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_project_skills_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

CREATE SEQUENCE IF NOT EXISTS public.identity_project_guardrails_id
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

-- Tables for schema: public
CREATE TABLE IF NOT EXISTS public.thoughts (
  archived_at timestamptz,
  content text NOT NULL,
  created_at timestamptz DEFAULT now(),
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  metadata jsonb DEFAULT '{}'::jsonb,
  project_id bigint,
  updated_at timestamptz DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.projects (
  created_at timestamptz DEFAULT now(),
  description text,
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  last_active_at timestamptz DEFAULT now(),
  name text NOT NULL
);

CREATE TABLE IF NOT EXISTS public.thought_links (
  created_at timestamptz DEFAULT now(),
  from_id bigint NOT NULL,
  id bigserial NOT NULL,
  relation text NOT NULL,
  to_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.embeddings (
  created_at timestamptz DEFAULT now(),
  dim integer NOT NULL,
  embedding vector NOT NULL,
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  model text NOT NULL,
  thought_id bigint NOT NULL,
  updated_at timestamptz DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.stored_files (
  content bytea NOT NULL,
  created_at timestamptz NOT NULL DEFAULT now(),
  encoding text NOT NULL DEFAULT 'base64',
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  kind text NOT NULL DEFAULT 'file',
  media_type text NOT NULL,
  name text NOT NULL,
  project_id bigint,
  sha256 text NOT NULL,
  size_bytes bigint NOT NULL,
  thought_id bigint,
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.chat_histories (
  agent_id text,
  channel text,
  created_at timestamptz NOT NULL DEFAULT now(),
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  messages jsonb NOT NULL DEFAULT '[]',
  metadata jsonb NOT NULL DEFAULT '{}',
  project_id bigint,
  session_id text NOT NULL,
  summary text,
  title text,
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.tool_annotations (
  created_at timestamptz NOT NULL DEFAULT now(),
  id bigserial NOT NULL,
  notes text NOT NULL DEFAULT '',
  tool_name text NOT NULL,
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.learnings (
  action_required boolean NOT NULL DEFAULT false,
  area text NOT NULL DEFAULT 'other',
  category text NOT NULL DEFAULT 'insight',
  confidence text NOT NULL DEFAULT 'hypothesis',
  created_at timestamptz NOT NULL DEFAULT now(),
  details text NOT NULL DEFAULT '',
  duplicate_of_learning_id bigint,
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  priority text NOT NULL DEFAULT 'medium',
  project_id bigint,
  related_skill_id bigint,
  related_thought_id bigint,
  reviewed_at timestamptz,
  reviewed_by text,
  source_ref text,
  source_type text,
  status text NOT NULL DEFAULT 'pending',
  summary text NOT NULL,
  supersedes_learning_id bigint,
  tags text[] NOT NULL DEFAULT '{}',
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.plans (
  completed_at timestamptz,
  created_at timestamptz NOT NULL DEFAULT now(),
  description text NOT NULL DEFAULT '',
  due_date timestamptz,
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  last_reviewed_at timestamptz,
  owner text,
  priority text NOT NULL DEFAULT 'medium',
  project_id bigint,
  reviewed_by text,
  status text NOT NULL DEFAULT 'draft',
  supersedes_plan_id bigint,
  tags text[] NOT NULL DEFAULT '{}',
  title text NOT NULL,
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.plan_dependencies (
  created_at timestamptz NOT NULL DEFAULT now(),
  depends_on_plan_id bigint NOT NULL,
  id bigserial NOT NULL,
  plan_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.plan_related_plans (
  created_at timestamptz NOT NULL DEFAULT now(),
  id bigserial NOT NULL,
  plan_a_id bigint NOT NULL,
  plan_b_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.plan_skills (
  created_at timestamptz NOT NULL DEFAULT now(),
  id bigserial NOT NULL,
  plan_id bigint NOT NULL,
  skill_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.plan_guardrails (
  created_at timestamptz NOT NULL DEFAULT now(),
  guardrail_id bigint NOT NULL,
  id bigserial NOT NULL,
  plan_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.agent_skills (
  content text NOT NULL,
  created_at timestamptz NOT NULL DEFAULT now(),
  description text NOT NULL DEFAULT '',
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  name text NOT NULL,
  tags text[] NOT NULL DEFAULT '{}',
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.agent_guardrails (
  content text NOT NULL,
  created_at timestamptz NOT NULL DEFAULT now(),
  description text NOT NULL DEFAULT '',
  guid uuid NOT NULL DEFAULT gen_random_uuid(),
  id bigserial NOT NULL,
  name text NOT NULL,
  severity text NOT NULL DEFAULT 'medium',
  tags text[] NOT NULL DEFAULT '{}',
  updated_at timestamptz NOT NULL DEFAULT now()
);

CREATE TABLE IF NOT EXISTS public.project_skills (
  created_at timestamptz NOT NULL DEFAULT now(),
  id bigserial NOT NULL,
  project_id bigint NOT NULL,
  skill_id bigint NOT NULL
);

CREATE TABLE IF NOT EXISTS public.project_guardrails (
  created_at timestamptz NOT NULL DEFAULT now(),
  guardrail_id bigint NOT NULL,
  id bigserial NOT NULL,
  project_id bigint NOT NULL
);

-- Add missing columns for schema: public
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'archived_at'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN archived_at timestamptz;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'content'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN content text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN created_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'metadata'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN metadata jsonb DEFAULT '{}'::jsonb;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN project_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.thoughts ADD COLUMN updated_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN created_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'description'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN description text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'last_active_at'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN last_active_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND column_name = 'name'
  ) THEN
    ALTER TABLE public.projects ADD COLUMN name text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.thought_links ADD COLUMN created_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND column_name = 'from_id'
  ) THEN
    ALTER TABLE public.thought_links ADD COLUMN from_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.thought_links ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND column_name = 'relation'
  ) THEN
    ALTER TABLE public.thought_links ADD COLUMN relation text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND column_name = 'to_id'
  ) THEN
    ALTER TABLE public.thought_links ADD COLUMN to_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN created_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'dim'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN dim integer NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'embedding'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN embedding vector NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'model'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN model text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'thought_id'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN thought_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.embeddings ADD COLUMN updated_at timestamptz DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'content'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN content bytea NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'encoding'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN encoding text NOT NULL DEFAULT 'base64';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'kind'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN kind text NOT NULL DEFAULT 'file';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'media_type'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN media_type text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'name'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN name text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN project_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'sha256'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN sha256 text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'size_bytes'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN size_bytes bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'thought_id'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN thought_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.stored_files ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'agent_id'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN agent_id text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'channel'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN channel text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'messages'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN messages jsonb NOT NULL DEFAULT '[]';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'metadata'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN metadata jsonb NOT NULL DEFAULT '{}';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN project_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'session_id'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN session_id text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'summary'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN summary text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'title'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN title text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.chat_histories ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.tool_annotations ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.tool_annotations ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND column_name = 'notes'
  ) THEN
    ALTER TABLE public.tool_annotations ADD COLUMN notes text NOT NULL DEFAULT '';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND column_name = 'tool_name'
  ) THEN
    ALTER TABLE public.tool_annotations ADD COLUMN tool_name text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.tool_annotations ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'action_required'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN action_required boolean NOT NULL DEFAULT false;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'area'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN area text NOT NULL DEFAULT 'other';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'category'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN category text NOT NULL DEFAULT 'insight';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'confidence'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN confidence text NOT NULL DEFAULT 'hypothesis';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'details'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN details text NOT NULL DEFAULT '';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'duplicate_of_learning_id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN duplicate_of_learning_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'priority'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN priority text NOT NULL DEFAULT 'medium';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN project_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'related_skill_id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN related_skill_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'related_thought_id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN related_thought_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'reviewed_at'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN reviewed_at timestamptz;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'reviewed_by'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN reviewed_by text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'source_ref'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN source_ref text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'source_type'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN source_type text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'status'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN status text NOT NULL DEFAULT 'pending';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'summary'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN summary text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'supersedes_learning_id'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN supersedes_learning_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'tags'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN tags text[] NOT NULL DEFAULT '{}';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.learnings ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'completed_at'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN completed_at timestamptz;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'description'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN description text NOT NULL DEFAULT '';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'due_date'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN due_date timestamptz;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'last_reviewed_at'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN last_reviewed_at timestamptz;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'owner'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN owner text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'priority'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN priority text NOT NULL DEFAULT 'medium';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN project_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'reviewed_by'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN reviewed_by text;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'status'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN status text NOT NULL DEFAULT 'draft';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'supersedes_plan_id'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN supersedes_plan_id bigint;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'tags'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN tags text[] NOT NULL DEFAULT '{}';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'title'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN title text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.plans ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.plan_dependencies ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND column_name = 'depends_on_plan_id'
  ) THEN
    ALTER TABLE public.plan_dependencies ADD COLUMN depends_on_plan_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.plan_dependencies ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND column_name = 'plan_id'
  ) THEN
    ALTER TABLE public.plan_dependencies ADD COLUMN plan_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.plan_related_plans ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.plan_related_plans ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND column_name = 'plan_a_id'
  ) THEN
    ALTER TABLE public.plan_related_plans ADD COLUMN plan_a_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND column_name = 'plan_b_id'
  ) THEN
    ALTER TABLE public.plan_related_plans ADD COLUMN plan_b_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.plan_skills ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.plan_skills ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND column_name = 'plan_id'
  ) THEN
    ALTER TABLE public.plan_skills ADD COLUMN plan_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND column_name = 'skill_id'
  ) THEN
    ALTER TABLE public.plan_skills ADD COLUMN skill_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.plan_guardrails ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND column_name = 'guardrail_id'
  ) THEN
    ALTER TABLE public.plan_guardrails ADD COLUMN guardrail_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.plan_guardrails ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND column_name = 'plan_id'
  ) THEN
    ALTER TABLE public.plan_guardrails ADD COLUMN plan_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'content'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN content text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'description'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN description text NOT NULL DEFAULT '';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'name'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN name text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'tags'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN tags text[] NOT NULL DEFAULT '{}';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.agent_skills ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'content'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN content text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'description'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN description text NOT NULL DEFAULT '';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'guid'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN guid uuid NOT NULL DEFAULT gen_random_uuid();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'name'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN name text NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'severity'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN severity text NOT NULL DEFAULT 'medium';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'tags'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN tags text[] NOT NULL DEFAULT '{}';
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND column_name = 'updated_at'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.project_skills ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.project_skills ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.project_skills ADD COLUMN project_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND column_name = 'skill_id'
  ) THEN
    ALTER TABLE public.project_skills ADD COLUMN skill_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND column_name = 'created_at'
  ) THEN
    ALTER TABLE public.project_guardrails ADD COLUMN created_at timestamptz NOT NULL DEFAULT now();
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND column_name = 'guardrail_id'
  ) THEN
    ALTER TABLE public.project_guardrails ADD COLUMN guardrail_id bigint NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND column_name = 'id'
  ) THEN
    ALTER TABLE public.project_guardrails ADD COLUMN id bigserial NOT NULL;
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.columns
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND column_name = 'project_id'
  ) THEN
    ALTER TABLE public.project_guardrails ADD COLUMN project_id bigint NOT NULL;
  END IF;
END;
$$;

-- Primary keys for schema: public
DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'thoughts'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('thoughts_pkey', 'public_thoughts_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.thoughts DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND constraint_name = 'pk_public_thoughts'
  ) THEN
    ALTER TABLE public.thoughts ADD CONSTRAINT pk_public_thoughts PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'projects'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('projects_pkey', 'public_projects_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.projects DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND constraint_name = 'pk_public_projects'
  ) THEN
    ALTER TABLE public.projects ADD CONSTRAINT pk_public_projects PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'thought_links'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('thought_links_pkey', 'public_thought_links_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.thought_links DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND constraint_name = 'pk_public_thought_links'
  ) THEN
    ALTER TABLE public.thought_links ADD CONSTRAINT pk_public_thought_links PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'embeddings'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('embeddings_pkey', 'public_embeddings_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.embeddings DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND constraint_name = 'pk_public_embeddings'
  ) THEN
    ALTER TABLE public.embeddings ADD CONSTRAINT pk_public_embeddings PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'stored_files'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('stored_files_pkey', 'public_stored_files_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.stored_files DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND constraint_name = 'pk_public_stored_files'
  ) THEN
    ALTER TABLE public.stored_files ADD CONSTRAINT pk_public_stored_files PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'chat_histories'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('chat_histories_pkey', 'public_chat_histories_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.chat_histories DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND constraint_name = 'pk_public_chat_histories'
  ) THEN
    ALTER TABLE public.chat_histories ADD CONSTRAINT pk_public_chat_histories PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'tool_annotations'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('tool_annotations_pkey', 'public_tool_annotations_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.tool_annotations DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND constraint_name = 'pk_public_tool_annotations'
  ) THEN
    ALTER TABLE public.tool_annotations ADD CONSTRAINT pk_public_tool_annotations PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'learnings'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('learnings_pkey', 'public_learnings_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.learnings DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'pk_public_learnings'
  ) THEN
    ALTER TABLE public.learnings ADD CONSTRAINT pk_public_learnings PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'plans'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('plans_pkey', 'public_plans_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.plans DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND constraint_name = 'pk_public_plans'
  ) THEN
    ALTER TABLE public.plans ADD CONSTRAINT pk_public_plans PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'plan_dependencies'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('plan_dependencies_pkey', 'public_plan_dependencies_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.plan_dependencies DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND constraint_name = 'pk_public_plan_dependencies'
  ) THEN
    ALTER TABLE public.plan_dependencies ADD CONSTRAINT pk_public_plan_dependencies PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'plan_related_plans'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('plan_related_plans_pkey', 'public_plan_related_plans_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.plan_related_plans DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND constraint_name = 'pk_public_plan_related_plans'
  ) THEN
    ALTER TABLE public.plan_related_plans ADD CONSTRAINT pk_public_plan_related_plans PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'plan_skills'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('plan_skills_pkey', 'public_plan_skills_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.plan_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND constraint_name = 'pk_public_plan_skills'
  ) THEN
    ALTER TABLE public.plan_skills ADD CONSTRAINT pk_public_plan_skills PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'plan_guardrails'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('plan_guardrails_pkey', 'public_plan_guardrails_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.plan_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND constraint_name = 'pk_public_plan_guardrails'
  ) THEN
    ALTER TABLE public.plan_guardrails ADD CONSTRAINT pk_public_plan_guardrails PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'agent_skills'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('agent_skills_pkey', 'public_agent_skills_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.agent_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND constraint_name = 'pk_public_agent_skills'
  ) THEN
    ALTER TABLE public.agent_skills ADD CONSTRAINT pk_public_agent_skills PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'agent_guardrails'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('agent_guardrails_pkey', 'public_agent_guardrails_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.agent_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND constraint_name = 'pk_public_agent_guardrails'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD CONSTRAINT pk_public_agent_guardrails PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'project_skills'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('project_skills_pkey', 'public_project_skills_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.project_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND constraint_name = 'pk_public_project_skills'
  ) THEN
    ALTER TABLE public.project_skills ADD CONSTRAINT pk_public_project_skills PRIMARY KEY (id);
  END IF;
END;
$$;

DO $$
DECLARE
  auto_pk_name text;
BEGIN
  -- Drop auto-generated primary key if it exists
  SELECT constraint_name INTO auto_pk_name
  FROM information_schema.table_constraints
  WHERE table_schema = 'public'
    AND table_name = 'project_guardrails'
    AND constraint_type = 'PRIMARY KEY'
    AND constraint_name IN ('project_guardrails_pkey', 'public_project_guardrails_pkey');

  IF auto_pk_name IS NOT NULL THEN
    EXECUTE 'ALTER TABLE public.project_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name);
  END IF;

  -- Add named primary key if it doesn't exist
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND constraint_name = 'pk_public_project_guardrails'
  ) THEN
    ALTER TABLE public.project_guardrails ADD CONSTRAINT pk_public_project_guardrails PRIMARY KEY (id);
  END IF;
END;
$$;

-- Indexes for schema: public
CREATE INDEX IF NOT EXISTS idx_thought_links_from_id_to_id_relation
  ON public.thought_links USING btree (from_id, to_id, relation);

CREATE UNIQUE INDEX IF NOT EXISTS uidx_embeddings_thought_id_model
  ON public.embeddings USING btree (thought_id, model);

CREATE INDEX IF NOT EXISTS idx_learnings_details
  ON public.learnings USING gin (details gin_trgm_ops);

CREATE INDEX IF NOT EXISTS idx_learnings_summary
  ON public.learnings USING gin (summary gin_trgm_ops);

CREATE INDEX IF NOT EXISTS idx_learnings_tags
  ON public.learnings USING gin (tags);

CREATE INDEX IF NOT EXISTS idx_plans_tags
  ON public.plans USING gin (tags);

CREATE INDEX IF NOT EXISTS idx_plans_title
  ON public.plans USING gin (title gin_trgm_ops);

CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_dependencies_plan_id_depends_on_plan_id
  ON public.plan_dependencies USING btree (plan_id, depends_on_plan_id);

CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_related_plans_plan_a_id_plan_b_id
  ON public.plan_related_plans USING btree (plan_a_id, plan_b_id);

CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_skills_plan_id_skill_id
  ON public.plan_skills USING btree (plan_id, skill_id);

CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_guardrails_plan_id_guardrail_id
  ON public.plan_guardrails USING btree (plan_id, guardrail_id);

CREATE INDEX IF NOT EXISTS idx_project_skills_project_id_skill_id
  ON public.project_skills USING btree (project_id, skill_id);

CREATE INDEX IF NOT EXISTS idx_project_guardrails_project_id_guardrail_id
  ON public.project_guardrails USING btree (project_id, guardrail_id);

-- Unique constraints for schema: public
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND constraint_name = 'ukey_thoughts_guid'
  ) THEN
    ALTER TABLE public.thoughts ADD CONSTRAINT ukey_thoughts_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND constraint_name = 'ukey_projects_guid'
  ) THEN
    ALTER TABLE public.projects ADD CONSTRAINT ukey_projects_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'projects'
      AND constraint_name = 'ukey_projects_name'
  ) THEN
    ALTER TABLE public.projects ADD CONSTRAINT ukey_projects_name UNIQUE (name);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND constraint_name = 'ukey_embeddings_guid'
  ) THEN
    ALTER TABLE public.embeddings ADD CONSTRAINT ukey_embeddings_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND constraint_name = 'ukey_stored_files_guid'
  ) THEN
    ALTER TABLE public.stored_files ADD CONSTRAINT ukey_stored_files_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND constraint_name = 'ukey_chat_histories_guid'
  ) THEN
    ALTER TABLE public.chat_histories ADD CONSTRAINT ukey_chat_histories_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'tool_annotations'
      AND constraint_name = 'ukey_tool_annotations_tool_name'
  ) THEN
    ALTER TABLE public.tool_annotations ADD CONSTRAINT ukey_tool_annotations_tool_name UNIQUE (tool_name);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'ukey_learnings_guid'
  ) THEN
    ALTER TABLE public.learnings ADD CONSTRAINT ukey_learnings_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND constraint_name = 'ukey_plans_guid'
  ) THEN
    ALTER TABLE public.plans ADD CONSTRAINT ukey_plans_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND constraint_name = 'ukey_agent_skills_guid'
  ) THEN
    ALTER TABLE public.agent_skills ADD CONSTRAINT ukey_agent_skills_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_skills'
      AND constraint_name = 'ukey_agent_skills_name'
  ) THEN
    ALTER TABLE public.agent_skills ADD CONSTRAINT ukey_agent_skills_name UNIQUE (name);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND constraint_name = 'ukey_agent_guardrails_guid'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD CONSTRAINT ukey_agent_guardrails_guid UNIQUE (guid);
  END IF;
END;
$$;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'agent_guardrails'
      AND constraint_name = 'ukey_agent_guardrails_name'
  ) THEN
    ALTER TABLE public.agent_guardrails ADD CONSTRAINT ukey_agent_guardrails_name UNIQUE (name);
  END IF;
END;
$$;

-- Check constraints for schema: public
-- Foreign keys for schema: public
DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thoughts'
      AND constraint_name = 'fk_thoughts_project_id'
  ) THEN
    ALTER TABLE public.thoughts
      ADD CONSTRAINT fk_thoughts_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND constraint_name = 'fk_thought_links_from_id'
  ) THEN
    ALTER TABLE public.thought_links
      ADD CONSTRAINT fk_thought_links_from_id
      FOREIGN KEY (from_id)
      REFERENCES public.thoughts (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'thought_links'
      AND constraint_name = 'fk_thought_links_to_id'
  ) THEN
    ALTER TABLE public.thought_links
      ADD CONSTRAINT fk_thought_links_to_id
      FOREIGN KEY (to_id)
      REFERENCES public.thoughts (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'embeddings'
      AND constraint_name = 'fk_embeddings_thought_id'
  ) THEN
    ALTER TABLE public.embeddings
      ADD CONSTRAINT fk_embeddings_thought_id
      FOREIGN KEY (thought_id)
      REFERENCES public.thoughts (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND constraint_name = 'fk_stored_files_project_id'
  ) THEN
    ALTER TABLE public.stored_files
      ADD CONSTRAINT fk_stored_files_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'stored_files'
      AND constraint_name = 'fk_stored_files_thought_id'
  ) THEN
    ALTER TABLE public.stored_files
      ADD CONSTRAINT fk_stored_files_thought_id
      FOREIGN KEY (thought_id)
      REFERENCES public.thoughts (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'chat_histories'
      AND constraint_name = 'fk_chat_histories_project_id'
  ) THEN
    ALTER TABLE public.chat_histories
      ADD CONSTRAINT fk_chat_histories_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'fk_learnings_duplicate_of_learning_id'
  ) THEN
    ALTER TABLE public.learnings
      ADD CONSTRAINT fk_learnings_duplicate_of_learning_id
      FOREIGN KEY (duplicate_of_learning_id)
      REFERENCES public.learnings (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'fk_learnings_project_id'
  ) THEN
    ALTER TABLE public.learnings
      ADD CONSTRAINT fk_learnings_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'fk_learnings_related_skill_id'
  ) THEN
    ALTER TABLE public.learnings
      ADD CONSTRAINT fk_learnings_related_skill_id
      FOREIGN KEY (related_skill_id)
      REFERENCES public.agent_skills (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'fk_learnings_related_thought_id'
  ) THEN
    ALTER TABLE public.learnings
      ADD CONSTRAINT fk_learnings_related_thought_id
      FOREIGN KEY (related_thought_id)
      REFERENCES public.thoughts (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'learnings'
      AND constraint_name = 'fk_learnings_supersedes_learning_id'
  ) THEN
    ALTER TABLE public.learnings
      ADD CONSTRAINT fk_learnings_supersedes_learning_id
      FOREIGN KEY (supersedes_learning_id)
      REFERENCES public.learnings (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND constraint_name = 'fk_plans_project_id'
  ) THEN
    ALTER TABLE public.plans
      ADD CONSTRAINT fk_plans_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plans'
      AND constraint_name = 'fk_plans_supersedes_plan_id'
  ) THEN
    ALTER TABLE public.plans
      ADD CONSTRAINT fk_plans_supersedes_plan_id
      FOREIGN KEY (supersedes_plan_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND constraint_name = 'fk_plan_dependencies_depends_on_plan_id'
  ) THEN
    ALTER TABLE public.plan_dependencies
      ADD CONSTRAINT fk_plan_dependencies_depends_on_plan_id
      FOREIGN KEY (depends_on_plan_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_dependencies'
      AND constraint_name = 'fk_plan_dependencies_plan_id'
  ) THEN
    ALTER TABLE public.plan_dependencies
      ADD CONSTRAINT fk_plan_dependencies_plan_id
      FOREIGN KEY (plan_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND constraint_name = 'fk_plan_related_plans_plan_a_id'
  ) THEN
    ALTER TABLE public.plan_related_plans
      ADD CONSTRAINT fk_plan_related_plans_plan_a_id
      FOREIGN KEY (plan_a_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_related_plans'
      AND constraint_name = 'fk_plan_related_plans_plan_b_id'
  ) THEN
    ALTER TABLE public.plan_related_plans
      ADD CONSTRAINT fk_plan_related_plans_plan_b_id
      FOREIGN KEY (plan_b_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND constraint_name = 'fk_plan_skills_plan_id'
  ) THEN
    ALTER TABLE public.plan_skills
      ADD CONSTRAINT fk_plan_skills_plan_id
      FOREIGN KEY (plan_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_skills'
      AND constraint_name = 'fk_plan_skills_skill_id'
  ) THEN
    ALTER TABLE public.plan_skills
      ADD CONSTRAINT fk_plan_skills_skill_id
      FOREIGN KEY (skill_id)
      REFERENCES public.agent_skills (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND constraint_name = 'fk_plan_guardrails_guardrail_id'
  ) THEN
    ALTER TABLE public.plan_guardrails
      ADD CONSTRAINT fk_plan_guardrails_guardrail_id
      FOREIGN KEY (guardrail_id)
      REFERENCES public.agent_guardrails (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'plan_guardrails'
      AND constraint_name = 'fk_plan_guardrails_plan_id'
  ) THEN
    ALTER TABLE public.plan_guardrails
      ADD CONSTRAINT fk_plan_guardrails_plan_id
      FOREIGN KEY (plan_id)
      REFERENCES public.plans (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND constraint_name = 'fk_project_skills_project_id'
  ) THEN
    ALTER TABLE public.project_skills
      ADD CONSTRAINT fk_project_skills_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_skills'
      AND constraint_name = 'fk_project_skills_skill_id'
  ) THEN
    ALTER TABLE public.project_skills
      ADD CONSTRAINT fk_project_skills_skill_id
      FOREIGN KEY (skill_id)
      REFERENCES public.agent_skills (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND constraint_name = 'fk_project_guardrails_guardrail_id'
  ) THEN
    ALTER TABLE public.project_guardrails
      ADD CONSTRAINT fk_project_guardrails_guardrail_id
      FOREIGN KEY (guardrail_id)
      REFERENCES public.agent_guardrails (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM information_schema.table_constraints
    WHERE table_schema = 'public'
      AND table_name = 'project_guardrails'
      AND constraint_name = 'fk_project_guardrails_project_id'
  ) THEN
    ALTER TABLE public.project_guardrails
      ADD CONSTRAINT fk_project_guardrails_project_id
      FOREIGN KEY (project_id)
      REFERENCES public.projects (id)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION;
  END IF;
END;
$$;-- Set sequence values for schema: public
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_thoughts_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.thoughts
    INTO m_cnt;
    
    PERFORM setval('public.identity_thoughts_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_projects_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.projects
    INTO m_cnt;
    
    PERFORM setval('public.identity_projects_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_thought_links_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.thought_links
    INTO m_cnt;
    
    PERFORM setval('public.identity_thought_links_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_embeddings_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.embeddings
    INTO m_cnt;
    
    PERFORM setval('public.identity_embeddings_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_stored_files_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.stored_files
    INTO m_cnt;
    
    PERFORM setval('public.identity_stored_files_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_chat_histories_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.chat_histories
    INTO m_cnt;
    
    PERFORM setval('public.identity_chat_histories_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_tool_annotations_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.tool_annotations
    INTO m_cnt;
    
    PERFORM setval('public.identity_tool_annotations_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_learnings_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.learnings
    INTO m_cnt;
    
    PERFORM setval('public.identity_learnings_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_plans_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.plans
    INTO m_cnt;
    
    PERFORM setval('public.identity_plans_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_plan_dependencies_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.plan_dependencies
    INTO m_cnt;
    
    PERFORM setval('public.identity_plan_dependencies_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_plan_related_plans_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.plan_related_plans
    INTO m_cnt;
    
    PERFORM setval('public.identity_plan_related_plans_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_plan_skills_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.plan_skills
    INTO m_cnt;
    
    PERFORM setval('public.identity_plan_skills_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_plan_guardrails_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.plan_guardrails
    INTO m_cnt;
    
    PERFORM setval('public.identity_plan_guardrails_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_agent_skills_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.agent_skills
    INTO m_cnt;
    
    PERFORM setval('public.identity_agent_skills_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_agent_guardrails_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.agent_guardrails
    INTO m_cnt;
    
    PERFORM setval('public.identity_agent_guardrails_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_project_skills_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.project_skills
    INTO m_cnt;
    
    PERFORM setval('public.identity_project_skills_id'::regclass, m_cnt);
  END IF;
END;
$$;
DO $$
DECLARE
  m_cnt bigint;
BEGIN
  IF EXISTS (
    SELECT 1 FROM pg_class c
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    WHERE c.relname = 'identity_project_guardrails_id'
      AND n.nspname = 'public'
      AND c.relkind = 'S'
  ) THEN
    SELECT COALESCE(MAX(id), 0) + 1
    FROM public.project_guardrails
    INTO m_cnt;
    
    PERFORM setval('public.identity_project_guardrails_id'::regclass, m_cnt);
  END IF;
END;
$$;
-- Comments for schema: public

















