AkurAI Build
Menu

popagent

public

Latest change 6edc7e928c57dab23c0973ed3f7ee70b3ebb72d5 - Initial popagent baseline by AkurAI Build

CREATE TABLE IF NOT EXISTS popagent_channel_settings (
  singleton BOOLEAN PRIMARY KEY CHECK (singleton),
  enabled BOOLEAN NOT NULL,
  dispatch_mode TEXT NOT NULL CHECK (dispatch_mode IN ('every-message', 'mentions')),
  context_messages INTEGER NOT NULL CHECK (context_messages BETWEEN 0 AND 100),
  streaming BOOLEAN NOT NULL,
  tool_display TEXT NOT NULL CHECK (tool_display IN ('compact', 'timeline')),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS popagent_channels (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL CHECK (name ~ '^#[a-z0-9][a-z0-9_-]{0,63}$'),
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS popagent_channel_messages (
  id TEXT PRIMARY KEY,
  channel_id TEXT NOT NULL REFERENCES popagent_channels(id) ON DELETE CASCADE,
  workspace_id TEXT NOT NULL,
  author_id TEXT NOT NULL,
  author_name TEXT NOT NULL,
  content TEXT NOT NULL CHECK (char_length(content) BETWEEN 1 AND 8000),
  task_id TEXT UNIQUE,
  created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS popagent_channel_messages_channel_created_idx
  ON popagent_channel_messages (channel_id, created_at DESC, id DESC);

CREATE TABLE IF NOT EXISTS popagent_data_migrations (
  id TEXT PRIMARY KEY,
  applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

DO $migration$
BEGIN
  IF NOT EXISTS (
    SELECT 1 FROM popagent_data_migrations
    WHERE id = '2026-08-14-native-channels-v1'
  ) THEN
    INSERT INTO popagent_channel_settings
      (singleton, enabled, dispatch_mode, context_messages, streaming, tool_display)
    VALUES (TRUE, TRUE, 'every-message', 20, TRUE, 'timeline')
    ON CONFLICT (singleton) DO NOTHING;

    INSERT INTO popagent_channels (id, name)
    VALUES ('general', '#general')
    ON CONFLICT (id) DO NOTHING;

    INSERT INTO popagent_data_migrations (id)
    VALUES ('2026-08-14-native-channels-v1')
    ON CONFLICT DO NOTHING;
  END IF;
END
$migration$;

ALTER TABLE popagent_channel_settings ALTER COLUMN enabled DROP DEFAULT;
ALTER TABLE popagent_channel_settings ALTER COLUMN dispatch_mode DROP DEFAULT;
ALTER TABLE popagent_channel_settings ALTER COLUMN context_messages DROP DEFAULT;
ALTER TABLE popagent_channel_settings ALTER COLUMN streaming DROP DEFAULT;
ALTER TABLE popagent_channel_settings ALTER COLUMN tool_display DROP DEFAULT;