openAgent
gitlabThe open source UNIVERSAL agent.
clone
https://gitlab.com/bitzzdev/openAgent.gitAIagentautomationopen-sourceuniversal-agent
import { Effect } from "effect"import type { DatabaseMigration } from "./migration"export default {up(tx) {return Effect.gen(function* () {yield* tx.run(`CREATE TABLE \`workspace\` (\`id\` text PRIMARY KEY,\`type\` text NOT NULL,\`name\` text DEFAULT '' NOT NULL,\`branch\` text,\`directory\` text,\`extra\` text,\`project_id\` text NOT NULL,\`time_used\` integer NOT NULL,CONSTRAINT \`fk_workspace_project_id_project_id_fk\` FOREIGN KEY (\`project_id\`) REFERENCES \`project\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`data_migration\` (\`name\` text PRIMARY KEY,\`time_completed\` integer NOT NULL);`)yield* tx.run(`CREATE TABLE \`account_state\` (\`id\` integer PRIMARY KEY,\`active_account_id\` text,\`active_org_id\` text,CONSTRAINT \`fk_account_state_active_account_id_account_id_fk\` FOREIGN KEY (\`active_account_id\`) REFERENCES \`account\`(\`id\`) ON DELETE SET NULL);`)yield* tx.run(`CREATE TABLE \`account\` (\`id\` text PRIMARY KEY,\`email\` text NOT NULL,\`url\` text NOT NULL,\`access_token\` text NOT NULL,\`refresh_token\` text NOT NULL,\`token_expiry\` integer,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL);`)yield* tx.run(`CREATE TABLE \`control_account\` (\`email\` text NOT NULL,\`url\` text NOT NULL,\`access_token\` text NOT NULL,\`refresh_token\` text NOT NULL,\`token_expiry\` integer,\`active\` integer NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,CONSTRAINT \`control_account_pk\` PRIMARY KEY(\`email\`, \`url\`));`)yield* tx.run(`CREATE TABLE \`credential\` (\`id\` text PRIMARY KEY,\`integration_id\` text,\`label\` text NOT NULL,\`value\` text NOT NULL,\`connector_id\` text,\`method_id\` text,\`active\` integer,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL);`)yield* tx.run(`CREATE TABLE \`event_sequence\` (\`aggregate_id\` text PRIMARY KEY,\`seq\` integer NOT NULL,\`owner_id\` text);`)yield* tx.run(`CREATE TABLE \`event\` (\`id\` text PRIMARY KEY,\`aggregate_id\` text NOT NULL,\`seq\` integer NOT NULL,\`type\` text NOT NULL,\`data\` text NOT NULL,CONSTRAINT \`fk_event_aggregate_id_event_sequence_aggregate_id_fk\` FOREIGN KEY (\`aggregate_id\`) REFERENCES \`event_sequence\`(\`aggregate_id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`permission\` (\`id\` text PRIMARY KEY,\`project_id\` text NOT NULL,\`action\` text NOT NULL,\`resource\` text NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,CONSTRAINT \`fk_permission_project_id_project_id_fk\` FOREIGN KEY (\`project_id\`) REFERENCES \`project\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`project_directory\` (\`project_id\` text NOT NULL,\`directory\` text NOT NULL,\`type\` text,\`strategy\` text,\`time_created\` integer NOT NULL,CONSTRAINT \`project_directory_pk\` PRIMARY KEY(\`project_id\`, \`directory\`),CONSTRAINT \`fk_project_directory_project_id_project_id_fk\` FOREIGN KEY (\`project_id\`) REFERENCES \`project\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`project\` (\`id\` text PRIMARY KEY,\`worktree\` text NOT NULL,\`vcs\` text,\`name\` text,\`icon_url\` text,\`icon_url_override\` text,\`icon_color\` text,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,\`time_initialized\` integer,\`sandboxes\` text NOT NULL,\`commands\` text);`)yield* tx.run(`CREATE TABLE \`message\` (\`id\` text PRIMARY KEY,\`session_id\` text NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,\`data\` text NOT NULL,CONSTRAINT \`fk_message_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`part\` (\`id\` text PRIMARY KEY,\`message_id\` text NOT NULL,\`session_id\` text NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,\`data\` text NOT NULL,CONSTRAINT \`fk_part_message_id_message_id_fk\` FOREIGN KEY (\`message_id\`) REFERENCES \`message\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`session_context_epoch\` (\`session_id\` text PRIMARY KEY,\`baseline\` text NOT NULL,\`snapshot\` text NOT NULL,\`baseline_seq\` integer NOT NULL,CONSTRAINT \`fk_session_context_epoch_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`session_input\` (\`id\` text PRIMARY KEY,\`session_id\` text NOT NULL,\`prompt\` text NOT NULL,\`delivery\` text NOT NULL,\`admitted_seq\` integer NOT NULL,\`promoted_seq\` integer,\`time_created\` integer NOT NULL,CONSTRAINT \`fk_session_input_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`session_message\` (\`id\` text PRIMARY KEY,\`session_id\` text NOT NULL,\`type\` text NOT NULL,\`seq\` integer NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,\`data\` text NOT NULL,CONSTRAINT \`fk_session_message_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`session\` (\`id\` text PRIMARY KEY,\`project_id\` text NOT NULL,\`workspace_id\` text,\`parent_id\` text,\`slug\` text NOT NULL,\`directory\` text NOT NULL,\`path\` text,\`title\` text NOT NULL,\`version\` text NOT NULL,\`share_url\` text,\`summary_additions\` integer,\`summary_deletions\` integer,\`summary_files\` integer,\`summary_diffs\` text,\`metadata\` text,\`cost\` real DEFAULT 0 NOT NULL,\`tokens_input\` integer DEFAULT 0 NOT NULL,\`tokens_output\` integer DEFAULT 0 NOT NULL,\`tokens_reasoning\` integer DEFAULT 0 NOT NULL,\`tokens_cache_read\` integer DEFAULT 0 NOT NULL,\`tokens_cache_write\` integer DEFAULT 0 NOT NULL,\`revert\` text,\`permission\` text,\`agent\` text,\`model\` text,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,\`time_compacting\` integer,\`time_archived\` integer,CONSTRAINT \`fk_session_project_id_project_id_fk\` FOREIGN KEY (\`project_id\`) REFERENCES \`project\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`todo\` (\`session_id\` text NOT NULL,\`content\` text NOT NULL,\`status\` text NOT NULL,\`priority\` text NOT NULL,\`position\` integer NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,CONSTRAINT \`todo_pk\` PRIMARY KEY(\`session_id\`, \`position\`),CONSTRAINT \`fk_todo_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE TABLE \`session_share\` (\`session_id\` text PRIMARY KEY,\`id\` text NOT NULL,\`secret\` text NOT NULL,\`url\` text NOT NULL,\`time_created\` integer NOT NULL,\`time_updated\` integer NOT NULL,CONSTRAINT \`fk_session_share_session_id_session_id_fk\` FOREIGN KEY (\`session_id\`) REFERENCES \`session\`(\`id\`) ON DELETE CASCADE);`)yield* tx.run(`CREATE UNIQUE INDEX \`event_aggregate_seq_idx\` ON \`event\` (\`aggregate_id\`,\`seq\`);`)yield* tx.run(`CREATE INDEX \`event_aggregate_type_seq_idx\` ON \`event\` (\`aggregate_id\`,\`type\`,\`seq\`);`)yield* tx.run(`CREATE UNIQUE INDEX \`permission_project_action_resource_idx\` ON \`permission\` (\`project_id\`,\`action\`,\`resource\`);`,)yield* tx.run(`CREATE INDEX \`message_session_time_created_id_idx\` ON \`message\` (\`session_id\`,\`time_created\`,\`id\`);`,)yield* tx.run(`CREATE INDEX \`part_message_id_id_idx\` ON \`part\` (\`message_id\`,\`id\`);`)yield* tx.run(`CREATE INDEX \`part_session_idx\` ON \`part\` (\`session_id\`);`)yield* tx.run(`CREATE INDEX \`session_input_session_pending_delivery_seq_idx\` ON \`session_input\` (\`session_id\`,\`promoted_seq\`,\`delivery\`,\`admitted_seq\`);`,)yield* tx.run(`CREATE UNIQUE INDEX \`session_input_session_admitted_seq_idx\` ON \`session_input\` (\`session_id\`,\`admitted_seq\`);`,)yield* tx.run(`CREATE UNIQUE INDEX \`session_input_session_promoted_seq_idx\` ON \`session_input\` (\`session_id\`,\`promoted_seq\`);`,)yield* tx.run(`CREATE UNIQUE INDEX \`session_message_session_seq_idx\` ON \`session_message\` (\`session_id\`,\`seq\`);`,)yield* tx.run(`CREATE INDEX \`session_message_session_type_seq_idx\` ON \`session_message\` (\`session_id\`,\`type\`,\`seq\`);`,)yield* tx.run(`CREATE INDEX \`session_message_session_time_created_id_idx\` ON \`session_message\` (\`session_id\`,\`time_created\`,\`id\`);`,)yield* tx.run(`CREATE INDEX \`session_message_time_created_idx\` ON \`session_message\` (\`time_created\`);`)yield* tx.run(`CREATE INDEX \`session_project_idx\` ON \`session\` (\`project_id\`);`)yield* tx.run(`CREATE INDEX \`session_workspace_idx\` ON \`session\` (\`workspace_id\`);`)yield* tx.run(`CREATE INDEX \`session_parent_idx\` ON \`session\` (\`parent_id\`);`)yield* tx.run(`CREATE INDEX \`todo_session_idx\` ON \`todo\` (\`session_id\`);`)})},} satisfies Omit<DatabaseMigration.Migration, "id">