Files
LangBot/tests/integration/persistence/fixtures/beta_schema.json
T
RockChinQ 273b1ea3cf Merge master into dev/4.11.x and preserve plugin runner architecture
Reconcile migration branches without rewriting published revisions; retain additive Codex, monitoring, provider and platform fixes. Keep dynamic runner schemas and Host ownership, restore compatibility regressions, and preserve safe model-test error handling.
2026-09-16 08:13:07 +00:00

380 lines
82 KiB
JSON

{
"source_commit": "03854b5d33d8b66fec4c86a77714e0e7512a31bd",
"source_path": "src/langbot/pkg/entity/persistence/",
"revision": "0025_bot_plugin_processors",
"dialects": {
"sqlite": [
"CREATE TABLE agent_interaction (\n\tid INTEGER NOT NULL, \n\tinteraction_id VARCHAR(255) NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tbinding_id VARCHAR(255) NOT NULL, \n\trunner_id VARCHAR(255) NOT NULL, \n\tprocessor_type VARCHAR(50) NOT NULL, \n\tprocessor_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_id VARCHAR(255), \n\tstatus VARCHAR(50) NOT NULL, \n\trequest_json TEXT NOT NULL, \n\tdelivery_target_json TEXT, \n\tdelivery_result_json TEXT, \n\treplaces_interaction_id VARCHAR(255), \n\tcallback_token_hash VARCHAR(64) NOT NULL, \n\texpires_at DATETIME, \n\tsubmitted_at DATETIME, \n\tsubmission_json TEXT, \n\tstatus_reason TEXT, \n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_agent_interaction_run_interaction UNIQUE (run_id, interaction_id)\n)",
"CREATE INDEX ix_agent_interaction_processor_id ON agent_interaction (processor_id)",
"CREATE INDEX ix_agent_interaction_binding_id ON agent_interaction (binding_id)",
"CREATE INDEX ix_agent_interaction_processor_type ON agent_interaction (processor_type)",
"CREATE INDEX ix_agent_interaction_scope_status ON agent_interaction (bot_id, conversation_id, actor_id, status)",
"CREATE UNIQUE INDEX ix_agent_interaction_callback_token_hash ON agent_interaction (callback_token_hash)",
"CREATE INDEX ix_agent_interaction_expires_at ON agent_interaction (expires_at)",
"CREATE INDEX ix_agent_interaction_actor_id ON agent_interaction (actor_id)",
"CREATE INDEX ix_agent_interaction_processor_status ON agent_interaction (processor_type, processor_id, status)",
"CREATE INDEX ix_agent_interaction_runner_id ON agent_interaction (runner_id)",
"CREATE INDEX ix_agent_interaction_bot_id ON agent_interaction (bot_id)",
"CREATE INDEX ix_agent_interaction_status ON agent_interaction (status)",
"CREATE INDEX ix_agent_interaction_run_id ON agent_interaction (run_id)",
"CREATE INDEX ix_agent_interaction_conversation_id ON agent_interaction (conversation_id)",
"CREATE TABLE agent_run (\n\tid INTEGER NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tevent_id VARCHAR(255), \n\tagent_id VARCHAR(255), \n\tbinding_id VARCHAR(255), \n\trunner_id VARCHAR(255) NOT NULL, \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tbot_id VARCHAR(255), \n\tstatus VARCHAR(50) NOT NULL, \n\tstatus_reason TEXT, \n\tqueue_name VARCHAR(255), \n\tpriority INTEGER NOT NULL, \n\trequested_runtime_id VARCHAR(255), \n\tclaimed_by_runtime_id VARCHAR(255), \n\tclaim_token VARCHAR(255), \n\tclaim_lease_expires_at DATETIME, \n\tdispatch_attempts INTEGER NOT NULL, \n\tlast_claimed_at DATETIME, \n\tcreated_at DATETIME NOT NULL, \n\tstarted_at DATETIME, \n\tfinished_at DATETIME, \n\tupdated_at DATETIME NOT NULL, \n\tdeadline_at DATETIME, \n\tcancel_requested_at DATETIME, \n\tusage_json TEXT, \n\tcost_json TEXT, \n\tauthorization_json TEXT, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_agent_run_queue_claim ON agent_run (queue_name, status, priority, id)",
"CREATE INDEX ix_agent_run_binding_id ON agent_run (binding_id)",
"CREATE INDEX ix_agent_run_bot_id ON agent_run (bot_id)",
"CREATE INDEX ix_agent_run_requested_runtime_id ON agent_run (requested_runtime_id)",
"CREATE INDEX ix_agent_run_claim_lease_expires_at ON agent_run (claim_lease_expires_at)",
"CREATE INDEX ix_agent_run_runner_id ON agent_run (runner_id)",
"CREATE INDEX ix_agent_run_status ON agent_run (status)",
"CREATE INDEX ix_agent_run_event_id ON agent_run (event_id)",
"CREATE INDEX ix_agent_run_scope_status ON agent_run (bot_id, workspace_id, conversation_id, thread_id, status)",
"CREATE INDEX ix_agent_run_claimed_by_runtime_id ON agent_run (claimed_by_runtime_id)",
"CREATE INDEX ix_agent_run_conversation_id ON agent_run (conversation_id)",
"CREATE INDEX ix_agent_run_runner_status ON agent_run (runner_id, status)",
"CREATE INDEX ix_agent_run_queue_name ON agent_run (queue_name)",
"CREATE UNIQUE INDEX ix_agent_run_run_id ON agent_run (run_id)",
"CREATE INDEX ix_agent_run_claim_token ON agent_run (claim_token)",
"CREATE TABLE agent_runtime (\n\tid INTEGER NOT NULL, \n\truntime_id VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tdisplay_name VARCHAR(255), \n\tendpoint VARCHAR(1024), \n\tversion VARCHAR(255), \n\tcapabilities_json TEXT, \n\tlabels_json TEXT, \n\tmetadata_json TEXT, \n\tlast_heartbeat_at DATETIME, \n\theartbeat_deadline_at DATETIME, \n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME NOT NULL, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_agent_runtime_heartbeat_deadline_at ON agent_runtime (heartbeat_deadline_at)",
"CREATE INDEX ix_agent_runtime_status ON agent_runtime (status)",
"CREATE UNIQUE INDEX ix_agent_runtime_runtime_id ON agent_runtime (runtime_id)",
"CREATE INDEX ix_agent_runtime_last_heartbeat_at ON agent_runtime (last_heartbeat_at)",
"CREATE TABLE agent_run_event (\n\tid INTEGER NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tsequence INTEGER NOT NULL, \n\ttype VARCHAR(100) NOT NULL, \n\tdata_json TEXT, \n\tusage_json TEXT, \n\tcreated_at DATETIME NOT NULL, \n\tsource VARCHAR(50), \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_agent_run_event_run_sequence UNIQUE (run_id, sequence)\n)",
"CREATE INDEX ix_agent_run_event_run_id ON agent_run_event (run_id)",
"CREATE INDEX ix_agent_run_event_run_sequence ON agent_run_event (run_id, sequence)",
"CREATE INDEX ix_agent_run_event_type ON agent_run_event (type)",
"CREATE TABLE directory_projection_states (\n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tcursor BIGINT DEFAULT '0' NOT NULL, \n\tsnapshot_coverage_cursor BIGINT DEFAULT '0' NOT NULL, \n\tsnapshot_fingerprint TEXT NOT NULL, \n\tlast_applied_at DATETIME NOT NULL, \n\tlease_expires_at DATETIME, \n\tPRIMARY KEY (instance_uuid), \n\tCONSTRAINT ck_directory_projection_state_cursor CHECK (cursor >= 0), \n\tCONSTRAINT ck_directory_projection_state_snapshot_coverage CHECK (snapshot_coverage_cursor >= 0 AND snapshot_coverage_cursor <= cursor), \n\tCONSTRAINT ck_directory_projection_state_fingerprint CHECK (length(snapshot_fingerprint) = 64)\n)",
"CREATE TABLE directory_projection_inbox (\n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tevent_uuid VARCHAR(36) NOT NULL, \n\tcursor BIGINT NOT NULL, \n\tevent_type VARCHAR(128) NOT NULL, \n\trevision BIGINT NOT NULL, \n\tfingerprint TEXT NOT NULL, \n\treceived_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tapplied_at DATETIME, \n\tPRIMARY KEY (instance_uuid, event_uuid), \n\tCONSTRAINT uq_directory_projection_inbox_cursor UNIQUE (instance_uuid, cursor), \n\tCONSTRAINT ck_directory_projection_inbox_cursor CHECK (cursor > 0), \n\tCONSTRAINT ck_directory_projection_inbox_revision CHECK (revision > 0), \n\tCONSTRAINT ck_directory_projection_inbox_fingerprint CHECK (length(fingerprint) = 64)\n)",
"CREATE INDEX ix_directory_projection_inbox_pending ON directory_projection_inbox (instance_uuid, applied_at, cursor)",
"CREATE TABLE event_log (\n\tid INTEGER NOT NULL, \n\tevent_id VARCHAR(255) NOT NULL, \n\tevent_type VARCHAR(100) NOT NULL, \n\tevent_time DATETIME, \n\tsource VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_type VARCHAR(50), \n\tactor_id VARCHAR(255), \n\tactor_name VARCHAR(255), \n\tsubject_type VARCHAR(50), \n\tsubject_id VARCHAR(255), \n\tinput_summary TEXT, \n\tinput_json TEXT, \n\traw_ref VARCHAR(255), \n\trun_id VARCHAR(255), \n\trunner_id VARCHAR(255), \n\tcreated_at DATETIME NOT NULL, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE UNIQUE INDEX ix_event_log_event_id ON event_log (event_id)",
"CREATE INDEX ix_event_log_event_type ON event_log (event_type)",
"CREATE INDEX ix_event_log_conversation_id ON event_log (conversation_id)",
"CREATE INDEX ix_event_log_run_id ON event_log (run_id)",
"CREATE INDEX ix_event_log_bot_id ON event_log (bot_id)",
"CREATE TABLE metadata (\n\t\"key\" VARCHAR(255) NOT NULL, \n\tvalue VARCHAR(255), \n\tPRIMARY KEY (\"key\")\n)",
"CREATE TABLE runner_state (\n\tid INTEGER NOT NULL, \n\trunner_id VARCHAR(255) NOT NULL, \n\tbinding_identity VARCHAR(255) NOT NULL, \n\tscope VARCHAR(50) NOT NULL, \n\tscope_key VARCHAR(512) NOT NULL, \n\tstate_key VARCHAR(255) NOT NULL, \n\tvalue_json TEXT, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_type VARCHAR(50), \n\tactor_id VARCHAR(255), \n\tsubject_type VARCHAR(50), \n\tsubject_id VARCHAR(255), \n\tcreated_at DATETIME NOT NULL, \n\tupdated_at DATETIME NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_runner_state_scope_key_state_key UNIQUE (scope_key, state_key)\n)",
"CREATE INDEX ix_runner_state_conversation_id ON runner_state (conversation_id)",
"CREATE INDEX ix_runner_state_scope ON runner_state (scope)",
"CREATE INDEX ix_runner_state_runner_id ON runner_state (runner_id)",
"CREATE INDEX ix_runner_state_actor_id ON runner_state (actor_id)",
"CREATE INDEX ix_runner_state_runner_binding ON runner_state (runner_id, binding_identity)",
"CREATE INDEX ix_runner_state_binding_identity ON runner_state (binding_identity)",
"CREATE INDEX ix_runner_state_bot_id ON runner_state (bot_id)",
"CREATE INDEX ix_runner_state_scope_key_lookup ON runner_state (scope_key)",
"CREATE TABLE transcript (\n\tid INTEGER NOT NULL, \n\ttranscript_id VARCHAR(255) NOT NULL, \n\tevent_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255) NOT NULL, \n\tthread_id VARCHAR(255), \n\trole VARCHAR(50) NOT NULL, \n\titem_type VARCHAR(50) NOT NULL, \n\tcontent TEXT, \n\tcontent_json TEXT, \n\tattachment_refs_json TEXT, \n\tseq INTEGER NOT NULL, \n\trun_id VARCHAR(255), \n\trunner_id VARCHAR(255), \n\tcreated_at DATETIME NOT NULL, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_transcript_conversation_id ON transcript (conversation_id)",
"CREATE UNIQUE INDEX ix_transcript_transcript_id ON transcript (transcript_id)",
"CREATE INDEX ix_transcript_event_id ON transcript (event_id)",
"CREATE INDEX ix_transcript_conversation_seq ON transcript (conversation_id, seq)",
"CREATE INDEX ix_transcript_bot_id ON transcript (bot_id)",
"CREATE INDEX ix_transcript_conversation_created ON transcript (conversation_id, created_at)",
"CREATE INDEX ix_transcript_scope_seq ON transcript (bot_id, workspace_id, conversation_id, thread_id, seq)",
"CREATE INDEX ix_transcript_run_id ON transcript (run_id)",
"CREATE TABLE users (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tuser VARCHAR(255) NOT NULL, \n\tnormalized_email VARCHAR(320) NOT NULL, \n\tpassword VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\taccount_type VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tspace_account_uuid VARCHAR(255), \n\tspace_access_token TEXT, \n\tspace_refresh_token TEXT, \n\tspace_access_token_expires_at DATETIME, \n\tspace_api_key VARCHAR(255), \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT ck_users_normalized_email CHECK (normalized_email = trim(normalized_email) AND length(normalized_email) > 0 AND length(normalized_email) <= 320), \n\tCONSTRAINT ck_users_status CHECK (status IN ('active', 'disabled', 'deleted')), \n\tCONSTRAINT ck_users_source CHECK (source IN ('local', 'cloud_projection'))\n)",
"CREATE UNIQUE INDEX uq_users_normalized_email ON users (normalized_email)",
"CREATE UNIQUE INDEX uq_users_uuid ON users (uuid)",
"CREATE TABLE workspaces (\n\tuuid VARCHAR(36) NOT NULL, \n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tslug VARCHAR(255) NOT NULL, \n\ttype VARCHAR(32) DEFAULT 'team' NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tcreated_by_account_uuid VARCHAR(36), \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_workspaces_instance_slug UNIQUE (instance_uuid, slug), \n\tCONSTRAINT ck_workspaces_type CHECK (type IN ('personal', 'team')), \n\tCONSTRAINT ck_workspaces_status CHECK (status IN ('provisioning', 'active', 'suspended', 'archived', 'deleted')), \n\tCONSTRAINT ck_workspaces_source CHECK (source IN ('local', 'cloud_projection')), \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE INDEX ix_workspaces_instance_status ON workspaces (instance_uuid, status)",
"CREATE UNIQUE INDEX uq_workspaces_local_instance ON workspaces (instance_uuid) WHERE source = 'local'",
"CREATE TABLE agents (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tuuid VARCHAR(255) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\temoji VARCHAR(10), \n\tkind VARCHAR(50) NOT NULL, \n\tcomponent_ref VARCHAR(255), \n\tconfig JSON NOT NULL, \n\tsupported_event_patterns JSON NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid)\n)",
"CREATE INDEX ix_agents_workspace_updated ON agents (workspace_uuid, updated_at)",
"CREATE INDEX ix_agents_workspace_name ON agents (workspace_uuid, name)",
"CREATE TABLE api_keys (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tcreated_by_account_uuid VARCHAR(36), \n\tname VARCHAR(255) NOT NULL, \n\tkey_hash VARCHAR(64) NOT NULL, \n\tscopes JSON DEFAULT '[]' NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\texpires_at DATETIME, \n\tlast_used_at DATETIME, \n\tdescription VARCHAR(512), \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT ck_api_keys_status CHECK (status IN ('active', 'revoked')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE UNIQUE INDEX uq_api_keys_uuid ON api_keys (uuid)",
"CREATE UNIQUE INDEX uq_api_keys_key_hash ON api_keys (key_hash)",
"CREATE INDEX ix_api_keys_workspace_status ON api_keys (workspace_uuid, status)",
"CREATE INDEX ix_api_keys_workspace_name ON api_keys (workspace_uuid, name)",
"CREATE TABLE bots (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\tadapter VARCHAR(255) NOT NULL, \n\tadapter_config JSON NOT NULL, \n\tenable BOOLEAN NOT NULL, \n\tevent_bindings JSON DEFAULT '[]' NOT NULL, \n\tplugin_processors JSON DEFAULT '[]' NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_bots_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_bots_workspace_name ON bots (workspace_uuid, name)",
"CREATE TABLE binary_storages (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tunique_key VARCHAR(255) NOT NULL, \n\t\"key\" VARCHAR(255) NOT NULL, \n\towner_type VARCHAR(255) NOT NULL, \n\towner VARCHAR(255) NOT NULL, \n\tvalue BLOB NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (workspace_uuid, unique_key), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_binary_storages_workspace_owner ON binary_storages (workspace_uuid, owner_type, owner)",
"CREATE TABLE mcp_servers (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tenable BOOLEAN NOT NULL, \n\tmode VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\treadme TEXT DEFAULT '' NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_mcp_servers_workspace_name UNIQUE (workspace_uuid, name), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_mcp_servers_workspace_enable ON mcp_servers (workspace_uuid, enable)",
"CREATE TABLE workspace_metadata (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\t\"key\" VARCHAR(255) NOT NULL, \n\tvalue VARCHAR(255), \n\tPRIMARY KEY (workspace_uuid, \"key\"), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE TABLE model_providers (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\trequester VARCHAR(255) NOT NULL, \n\tbase_url VARCHAR(512) NOT NULL, \n\tapi_keys JSON NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_model_providers_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_model_providers_workspace_name ON model_providers (workspace_uuid, name)",
"CREATE INDEX ix_model_providers_workspace_requester ON model_providers (workspace_uuid, requester)",
"CREATE TABLE monitoring_messages (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tmessage_content TEXT NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tlevel VARCHAR(50) NOT NULL, \n\tplatform VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tuser_name VARCHAR(255), \n\trunner_name VARCHAR(255), \n\tvariables TEXT, \n\trole VARCHAR(50), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_messages_pipeline_id ON monitoring_messages (pipeline_id)",
"CREATE INDEX ix_monitoring_messages_timestamp ON monitoring_messages (timestamp)",
"CREATE INDEX ix_monitoring_messages_workspace_session ON monitoring_messages (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_messages_session_id ON monitoring_messages (session_id)",
"CREATE INDEX ix_monitoring_messages_bot_id ON monitoring_messages (bot_id)",
"CREATE INDEX ix_monitoring_messages_workspace_timestamp ON monitoring_messages (workspace_uuid, timestamp)",
"CREATE TABLE monitoring_llm_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\tmodel_name VARCHAR(255) NOT NULL, \n\tinput_tokens INTEGER NOT NULL, \n\toutput_tokens INTEGER NOT NULL, \n\ttotal_tokens INTEGER NOT NULL, \n\tduration INTEGER NOT NULL, \n\tcost FLOAT, \n\tstatus VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\terror_message TEXT, \n\tmessage_id VARCHAR(255), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_llm_calls_workspace_session ON monitoring_llm_calls (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_llm_calls_timestamp ON monitoring_llm_calls (timestamp)",
"CREATE INDEX ix_monitoring_llm_calls_bot_id ON monitoring_llm_calls (bot_id)",
"CREATE INDEX ix_monitoring_llm_calls_message_id ON monitoring_llm_calls (message_id)",
"CREATE INDEX ix_monitoring_llm_calls_workspace_timestamp ON monitoring_llm_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_llm_calls_pipeline_id ON monitoring_llm_calls (pipeline_id)",
"CREATE TABLE monitoring_tool_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\ttool_name VARCHAR(255) NOT NULL, \n\ttool_source VARCHAR(50) NOT NULL, \n\tduration INTEGER NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\targuments TEXT, \n\tresult TEXT, \n\terror_message TEXT, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_tool_calls_pipeline_id ON monitoring_tool_calls (pipeline_id)",
"CREATE INDEX ix_monitoring_tool_calls_workspace_timestamp ON monitoring_tool_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_tool_calls_session_id ON monitoring_tool_calls (session_id)",
"CREATE INDEX ix_monitoring_tool_calls_workspace_session ON monitoring_tool_calls (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_tool_calls_timestamp ON monitoring_tool_calls (timestamp)",
"CREATE INDEX ix_monitoring_tool_calls_bot_id ON monitoring_tool_calls (bot_id)",
"CREATE INDEX ix_monitoring_tool_calls_message_id ON monitoring_tool_calls (message_id)",
"CREATE TABLE monitoring_sessions (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tmessage_count INTEGER NOT NULL, \n\tstart_time DATETIME NOT NULL, \n\tlast_activity DATETIME NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tplatform VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tuser_name VARCHAR(255), \n\tPRIMARY KEY (workspace_uuid, session_id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_sessions_bot_id ON monitoring_sessions (bot_id)",
"CREATE INDEX ix_monitoring_sessions_workspace_activity ON monitoring_sessions (workspace_uuid, last_activity)",
"CREATE INDEX ix_monitoring_sessions_last_activity ON monitoring_sessions (last_activity)",
"CREATE INDEX ix_monitoring_sessions_pipeline_id ON monitoring_sessions (pipeline_id)",
"CREATE INDEX ix_monitoring_sessions_workspace_active ON monitoring_sessions (workspace_uuid, is_active)",
"CREATE INDEX ix_monitoring_sessions_is_active ON monitoring_sessions (is_active)",
"CREATE INDEX ix_monitoring_sessions_start_time ON monitoring_sessions (start_time)",
"CREATE TABLE monitoring_errors (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\terror_type VARCHAR(255) NOT NULL, \n\terror_message TEXT NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255), \n\tstack_trace TEXT, \n\tmessage_id VARCHAR(255), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_errors_workspace_timestamp ON monitoring_errors (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_errors_message_id ON monitoring_errors (message_id)",
"CREATE INDEX ix_monitoring_errors_workspace_session ON monitoring_errors (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_errors_bot_id ON monitoring_errors (bot_id)",
"CREATE INDEX ix_monitoring_errors_timestamp ON monitoring_errors (timestamp)",
"CREATE INDEX ix_monitoring_errors_pipeline_id ON monitoring_errors (pipeline_id)",
"CREATE TABLE monitoring_embedding_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\tmodel_name VARCHAR(255) NOT NULL, \n\tprompt_tokens INTEGER NOT NULL, \n\ttotal_tokens INTEGER NOT NULL, \n\tduration INTEGER NOT NULL, \n\tinput_count INTEGER NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\terror_message TEXT, \n\tknowledge_base_id VARCHAR(255), \n\tquery_text TEXT, \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\tcall_type VARCHAR(50), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_embedding_calls_workspace_timestamp ON monitoring_embedding_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_embedding_calls_session_id ON monitoring_embedding_calls (session_id)",
"CREATE INDEX ix_monitoring_embedding_calls_workspace_kb ON monitoring_embedding_calls (workspace_uuid, knowledge_base_id)",
"CREATE INDEX ix_monitoring_embedding_calls_timestamp ON monitoring_embedding_calls (timestamp)",
"CREATE INDEX ix_monitoring_embedding_calls_message_id ON monitoring_embedding_calls (message_id)",
"CREATE INDEX ix_monitoring_embedding_calls_knowledge_base_id ON monitoring_embedding_calls (knowledge_base_id)",
"CREATE TABLE monitoring_feedback (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp DATETIME NOT NULL, \n\tfeedback_id VARCHAR(255) NOT NULL, \n\tfeedback_type INTEGER NOT NULL, \n\tfeedback_content TEXT, \n\tinaccurate_reasons TEXT, \n\tbot_id VARCHAR(255), \n\tbot_name VARCHAR(255), \n\tpipeline_id VARCHAR(255), \n\tpipeline_name VARCHAR(255), \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\tstream_id VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tplatform VARCHAR(255), \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_monitoring_feedback_workspace_feedback_id UNIQUE (workspace_uuid, feedback_id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_feedback_pipeline_id ON monitoring_feedback (pipeline_id)",
"CREATE INDEX ix_monitoring_feedback_stream_id ON monitoring_feedback (stream_id)",
"CREATE INDEX ix_monitoring_feedback_workspace_session ON monitoring_feedback (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_feedback_timestamp ON monitoring_feedback (timestamp)",
"CREATE INDEX ix_monitoring_feedback_session_id ON monitoring_feedback (session_id)",
"CREATE INDEX ix_monitoring_feedback_bot_id ON monitoring_feedback (bot_id)",
"CREATE INDEX ix_monitoring_feedback_message_id ON monitoring_feedback (message_id)",
"CREATE INDEX ix_monitoring_feedback_feedback_id ON monitoring_feedback (feedback_id)",
"CREATE INDEX ix_monitoring_feedback_workspace_timestamp ON monitoring_feedback (workspace_uuid, timestamp)",
"CREATE TABLE legacy_pipelines (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\temoji VARCHAR(10), \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tfor_version VARCHAR(255) NOT NULL, \n\tis_default BOOLEAN NOT NULL, \n\tstages JSON NOT NULL, \n\tconfig JSON NOT NULL, \n\textensions_preferences JSON NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_legacy_pipelines_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_legacy_pipelines_workspace_name ON legacy_pipelines (workspace_uuid, name)",
"CREATE INDEX ix_legacy_pipelines_workspace_default ON legacy_pipelines (workspace_uuid, is_default)",
"CREATE TABLE plugin_settings (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tplugin_author VARCHAR(255) NOT NULL, \n\tplugin_name VARCHAR(255) NOT NULL, \n\tinstallation_uuid VARCHAR(36) NOT NULL, \n\tartifact_digest VARCHAR(64) NOT NULL, \n\truntime_revision INTEGER NOT NULL, \n\tenabled BOOLEAN NOT NULL, \n\tpriority INTEGER NOT NULL, \n\tconfig JSON NOT NULL, \n\tinstall_source VARCHAR(255) NOT NULL, \n\tinstall_info JSON NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (workspace_uuid, plugin_author, plugin_name), \n\tCONSTRAINT uq_plugin_settings_installation_uuid UNIQUE (installation_uuid), \n\tCONSTRAINT ck_plugin_settings_runtime_revision_positive CHECK (runtime_revision >= 1), \n\tCONSTRAINT ck_plugin_settings_artifact_digest_length CHECK (length(artifact_digest) = 64), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_plugin_settings_workspace_enabled ON plugin_settings (workspace_uuid, enabled)",
"CREATE UNIQUE INDEX ix_plugin_settings_workspace_installation ON plugin_settings (workspace_uuid, installation_uuid)",
"CREATE TABLE knowledge_bases (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR, \n\tdescription TEXT, \n\temoji VARCHAR(10), \n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tknowledge_engine_plugin_id VARCHAR, \n\tcollection_id VARCHAR, \n\tlegacy_vector_collection BOOLEAN DEFAULT 0 NOT NULL, \n\tcreation_settings JSON, \n\tretrieval_settings JSON, \n\tembedding_dimension INTEGER, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_knowledge_bases_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tCONSTRAINT ck_knowledge_bases_embedding_dimension_positive CHECK (embedding_dimension IS NULL OR embedding_dimension > 0), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_bases_workspace_name ON knowledge_bases (workspace_uuid, name)",
"CREATE INDEX ix_knowledge_bases_name ON knowledge_bases (name)",
"CREATE UNIQUE INDEX uq_knowledge_bases_workspace_collection ON knowledge_bases (workspace_uuid, collection_id) WHERE collection_id IS NOT NULL",
"CREATE TABLE support_admin_temporary_sessions (\n\tgrant_jti_hash VARCHAR(64) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tactor_account_uuid VARCHAR(36) NOT NULL, \n\tissued_at DATETIME NOT NULL, \n\texpires_at DATETIME NOT NULL, \n\trevoked_at DATETIME, \n\tlast_used_at DATETIME, \n\tPRIMARY KEY (grant_jti_hash), \n\tCONSTRAINT ck_support_admin_sessions_grant_jti_hash CHECK (length(grant_jti_hash) = 64), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_support_admin_sessions_workspace_expiry ON support_admin_temporary_sessions (workspace_uuid, expires_at)",
"CREATE TABLE webhooks (\n\tid INTEGER NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\turl VARCHAR(1024) NOT NULL, \n\tdescription VARCHAR(512), \n\tenabled BOOLEAN NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_webhooks_workspace_name ON webhooks (workspace_uuid, name)",
"CREATE TABLE workspace_memberships (\n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\taccount_uuid VARCHAR(36) NOT NULL, \n\trole VARCHAR(32) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tinvited_by_account_uuid VARCHAR(36), \n\tjoined_at DATETIME, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_workspace_membership_account UNIQUE (workspace_uuid, account_uuid), \n\tCONSTRAINT ck_workspace_memberships_role CHECK (role IN ('owner', 'admin', 'developer', 'operator', 'viewer')), \n\tCONSTRAINT ck_workspace_memberships_status CHECK (status IN ('active', 'disabled', 'removed')), \n\tCONSTRAINT ck_workspace_memberships_source CHECK (source IN ('local', 'cloud_projection')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(account_uuid) REFERENCES users (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(invited_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE UNIQUE INDEX uq_workspace_memberships_one_active_owner ON workspace_memberships (workspace_uuid) WHERE role = 'owner' AND status = 'active'",
"CREATE INDEX ix_workspace_memberships_account_status ON workspace_memberships (account_uuid, status)",
"CREATE TABLE workspace_invitations (\n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tnormalized_email VARCHAR(320) NOT NULL, \n\trole VARCHAR(32) NOT NULL, \n\ttoken_hash VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'pending' NOT NULL, \n\texpires_at DATETIME NOT NULL, \n\taccepted_at DATETIME, \n\trevoked_at DATETIME, \n\tcreated_by_account_uuid VARCHAR(36) NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT ck_workspace_invitations_role CHECK (role IN ('admin', 'developer', 'operator', 'viewer')), \n\tCONSTRAINT ck_workspace_invitations_status CHECK (status IN ('pending', 'accepted', 'revoked', 'expired')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE CASCADE\n)",
"CREATE UNIQUE INDEX uq_workspace_invitations_token_hash ON workspace_invitations (token_hash)",
"CREATE UNIQUE INDEX uq_workspace_invitations_pending_email ON workspace_invitations (workspace_uuid, normalized_email) WHERE status = 'pending'",
"CREATE TABLE workspace_execution_states (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tactive_generation BIGINT DEFAULT '1' NOT NULL, \n\tstate VARCHAR(32) DEFAULT 'active' NOT NULL, \n\twrite_fenced BOOLEAN DEFAULT 0 NOT NULL, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tdesired_state_revision BIGINT DEFAULT '0' NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (workspace_uuid), \n\tCONSTRAINT ck_workspace_execution_generation CHECK (active_generation > 0), \n\tCONSTRAINT ck_workspace_execution_state CHECK (state IN ('provisioning', 'active', 'migrating', 'draining', 'inactive')), \n\tCONSTRAINT ck_workspace_execution_source CHECK (source IN ('local', 'cloud')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_workspace_execution_states_instance_state ON workspace_execution_states (instance_uuid, state)",
"CREATE TABLE bot_admins (\n\tid INTEGER NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tbot_uuid VARCHAR(255) NOT NULL, \n\tlauncher_type VARCHAR(64) NOT NULL, \n\tlauncher_id VARCHAR(255) NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_bot_admin UNIQUE (workspace_uuid, bot_uuid, launcher_type, launcher_id), \n\tCONSTRAINT fk_bot_admins_workspace_bot FOREIGN KEY(workspace_uuid, bot_uuid) REFERENCES bots (workspace_uuid, uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE TABLE llm_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\tabilities JSON NOT NULL, \n\tcontext_length INTEGER, \n\treasoning_config JSON DEFAULT '{\"level\":\"provider_default\"}' NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_llm_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_llm_models_workspace_name ON llm_models (workspace_uuid, name)",
"CREATE INDEX ix_llm_models_workspace_provider ON llm_models (workspace_uuid, provider_uuid)",
"CREATE TABLE embedding_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_embedding_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_embedding_models_workspace_name ON embedding_models (workspace_uuid, name)",
"CREATE INDEX ix_embedding_models_workspace_provider ON embedding_models (workspace_uuid, provider_uuid)",
"CREATE TABLE rerank_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_rerank_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_rerank_models_workspace_name ON rerank_models (workspace_uuid, name)",
"CREATE INDEX ix_rerank_models_workspace_provider ON rerank_models (workspace_uuid, provider_uuid)",
"CREATE TABLE pipeline_run_records (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tpipeline_uuid VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(255) NOT NULL, \n\tcreated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tupdated_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, \n\tstarted_at DATETIME NOT NULL, \n\tfinished_at DATETIME NOT NULL, \n\tresult JSON NOT NULL, \n\tknowledge_base_uuid VARCHAR(255), \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_pipeline_run_records_workspace_pipeline FOREIGN KEY(workspace_uuid, pipeline_uuid) REFERENCES legacy_pipelines (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_pipeline_run_records_workspace_created ON pipeline_run_records (workspace_uuid, created_at)",
"CREATE INDEX ix_pipeline_run_records_workspace_pipeline ON pipeline_run_records (workspace_uuid, pipeline_uuid)",
"CREATE TABLE knowledge_base_files (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tkb_id VARCHAR(255), \n\tfile_name VARCHAR, \n\textension VARCHAR, \n\tcreated_at DATETIME, \n\tstatus VARCHAR, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_knowledge_base_files_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tCONSTRAINT fk_knowledge_base_files_workspace_kb FOREIGN KEY(workspace_uuid, kb_id) REFERENCES knowledge_bases (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_base_files_workspace_kb ON knowledge_base_files (workspace_uuid, kb_id)",
"CREATE TABLE knowledge_base_chunks (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tfile_id VARCHAR(255), \n\ttext TEXT, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_knowledge_base_chunks_workspace_file FOREIGN KEY(workspace_uuid, file_id) REFERENCES knowledge_base_files (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_base_chunks_workspace_file ON knowledge_base_chunks (workspace_uuid, file_id)"
],
"postgresql": [
"CREATE TABLE agent_interaction (\n\tid SERIAL NOT NULL, \n\tinteraction_id VARCHAR(255) NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tbinding_id VARCHAR(255) NOT NULL, \n\trunner_id VARCHAR(255) NOT NULL, \n\tprocessor_type VARCHAR(50) NOT NULL, \n\tprocessor_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_id VARCHAR(255), \n\tstatus VARCHAR(50) NOT NULL, \n\trequest_json TEXT NOT NULL, \n\tdelivery_target_json TEXT, \n\tdelivery_result_json TEXT, \n\treplaces_interaction_id VARCHAR(255), \n\tcallback_token_hash VARCHAR(64) NOT NULL, \n\texpires_at TIMESTAMP WITHOUT TIME ZONE, \n\tsubmitted_at TIMESTAMP WITHOUT TIME ZONE, \n\tsubmission_json TEXT, \n\tstatus_reason TEXT, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_agent_interaction_run_interaction UNIQUE (run_id, interaction_id)\n)",
"CREATE INDEX ix_agent_interaction_processor_id ON agent_interaction (processor_id)",
"CREATE INDEX ix_agent_interaction_binding_id ON agent_interaction (binding_id)",
"CREATE INDEX ix_agent_interaction_processor_type ON agent_interaction (processor_type)",
"CREATE INDEX ix_agent_interaction_scope_status ON agent_interaction (bot_id, conversation_id, actor_id, status)",
"CREATE UNIQUE INDEX ix_agent_interaction_callback_token_hash ON agent_interaction (callback_token_hash)",
"CREATE INDEX ix_agent_interaction_expires_at ON agent_interaction (expires_at)",
"CREATE INDEX ix_agent_interaction_actor_id ON agent_interaction (actor_id)",
"CREATE INDEX ix_agent_interaction_processor_status ON agent_interaction (processor_type, processor_id, status)",
"CREATE INDEX ix_agent_interaction_runner_id ON agent_interaction (runner_id)",
"CREATE INDEX ix_agent_interaction_bot_id ON agent_interaction (bot_id)",
"CREATE INDEX ix_agent_interaction_status ON agent_interaction (status)",
"CREATE INDEX ix_agent_interaction_run_id ON agent_interaction (run_id)",
"CREATE INDEX ix_agent_interaction_conversation_id ON agent_interaction (conversation_id)",
"CREATE TABLE agent_run (\n\tid SERIAL NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tevent_id VARCHAR(255), \n\tagent_id VARCHAR(255), \n\tbinding_id VARCHAR(255), \n\trunner_id VARCHAR(255) NOT NULL, \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tbot_id VARCHAR(255), \n\tstatus VARCHAR(50) NOT NULL, \n\tstatus_reason TEXT, \n\tqueue_name VARCHAR(255), \n\tpriority INTEGER NOT NULL, \n\trequested_runtime_id VARCHAR(255), \n\tclaimed_by_runtime_id VARCHAR(255), \n\tclaim_token VARCHAR(255), \n\tclaim_lease_expires_at TIMESTAMP WITHOUT TIME ZONE, \n\tdispatch_attempts INTEGER NOT NULL, \n\tlast_claimed_at TIMESTAMP WITHOUT TIME ZONE, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tstarted_at TIMESTAMP WITHOUT TIME ZONE, \n\tfinished_at TIMESTAMP WITHOUT TIME ZONE, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tdeadline_at TIMESTAMP WITHOUT TIME ZONE, \n\tcancel_requested_at TIMESTAMP WITHOUT TIME ZONE, \n\tusage_json TEXT, \n\tcost_json TEXT, \n\tauthorization_json TEXT, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_agent_run_queue_claim ON agent_run (queue_name, status, priority, id)",
"CREATE INDEX ix_agent_run_binding_id ON agent_run (binding_id)",
"CREATE INDEX ix_agent_run_bot_id ON agent_run (bot_id)",
"CREATE INDEX ix_agent_run_requested_runtime_id ON agent_run (requested_runtime_id)",
"CREATE INDEX ix_agent_run_claim_lease_expires_at ON agent_run (claim_lease_expires_at)",
"CREATE INDEX ix_agent_run_runner_id ON agent_run (runner_id)",
"CREATE INDEX ix_agent_run_status ON agent_run (status)",
"CREATE INDEX ix_agent_run_event_id ON agent_run (event_id)",
"CREATE INDEX ix_agent_run_scope_status ON agent_run (bot_id, workspace_id, conversation_id, thread_id, status)",
"CREATE INDEX ix_agent_run_claimed_by_runtime_id ON agent_run (claimed_by_runtime_id)",
"CREATE INDEX ix_agent_run_conversation_id ON agent_run (conversation_id)",
"CREATE INDEX ix_agent_run_runner_status ON agent_run (runner_id, status)",
"CREATE INDEX ix_agent_run_queue_name ON agent_run (queue_name)",
"CREATE UNIQUE INDEX ix_agent_run_run_id ON agent_run (run_id)",
"CREATE INDEX ix_agent_run_claim_token ON agent_run (claim_token)",
"CREATE TABLE agent_runtime (\n\tid SERIAL NOT NULL, \n\truntime_id VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tdisplay_name VARCHAR(255), \n\tendpoint VARCHAR(1024), \n\tversion VARCHAR(255), \n\tcapabilities_json TEXT, \n\tlabels_json TEXT, \n\tmetadata_json TEXT, \n\tlast_heartbeat_at TIMESTAMP WITHOUT TIME ZONE, \n\theartbeat_deadline_at TIMESTAMP WITHOUT TIME ZONE, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_agent_runtime_heartbeat_deadline_at ON agent_runtime (heartbeat_deadline_at)",
"CREATE INDEX ix_agent_runtime_status ON agent_runtime (status)",
"CREATE UNIQUE INDEX ix_agent_runtime_runtime_id ON agent_runtime (runtime_id)",
"CREATE INDEX ix_agent_runtime_last_heartbeat_at ON agent_runtime (last_heartbeat_at)",
"CREATE TABLE agent_run_event (\n\tid SERIAL NOT NULL, \n\trun_id VARCHAR(255) NOT NULL, \n\tsequence INTEGER NOT NULL, \n\ttype VARCHAR(100) NOT NULL, \n\tdata_json TEXT, \n\tusage_json TEXT, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tsource VARCHAR(50), \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_agent_run_event_run_sequence UNIQUE (run_id, sequence)\n)",
"CREATE INDEX ix_agent_run_event_run_id ON agent_run_event (run_id)",
"CREATE INDEX ix_agent_run_event_run_sequence ON agent_run_event (run_id, sequence)",
"CREATE INDEX ix_agent_run_event_type ON agent_run_event (type)",
"CREATE TABLE directory_projection_states (\n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tcursor BIGINT DEFAULT '0' NOT NULL, \n\tsnapshot_coverage_cursor BIGINT DEFAULT '0' NOT NULL, \n\tsnapshot_fingerprint TEXT NOT NULL, \n\tlast_applied_at TIMESTAMP WITH TIME ZONE NOT NULL, \n\tlease_expires_at TIMESTAMP WITH TIME ZONE, \n\tPRIMARY KEY (instance_uuid), \n\tCONSTRAINT ck_directory_projection_state_cursor CHECK (cursor >= 0), \n\tCONSTRAINT ck_directory_projection_state_snapshot_coverage CHECK (snapshot_coverage_cursor >= 0 AND snapshot_coverage_cursor <= cursor), \n\tCONSTRAINT ck_directory_projection_state_fingerprint CHECK (length(snapshot_fingerprint) = 64)\n)",
"CREATE TABLE directory_projection_inbox (\n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tevent_uuid VARCHAR(36) NOT NULL, \n\tcursor BIGINT NOT NULL, \n\tevent_type VARCHAR(128) NOT NULL, \n\trevision BIGINT NOT NULL, \n\tfingerprint TEXT NOT NULL, \n\treceived_at TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL, \n\tapplied_at TIMESTAMP WITH TIME ZONE, \n\tPRIMARY KEY (instance_uuid, event_uuid), \n\tCONSTRAINT uq_directory_projection_inbox_cursor UNIQUE (instance_uuid, cursor), \n\tCONSTRAINT ck_directory_projection_inbox_cursor CHECK (cursor > 0), \n\tCONSTRAINT ck_directory_projection_inbox_revision CHECK (revision > 0), \n\tCONSTRAINT ck_directory_projection_inbox_fingerprint CHECK (length(fingerprint) = 64)\n)",
"CREATE INDEX ix_directory_projection_inbox_pending ON directory_projection_inbox (instance_uuid, applied_at, cursor)",
"CREATE TABLE event_log (\n\tid SERIAL NOT NULL, \n\tevent_id VARCHAR(255) NOT NULL, \n\tevent_type VARCHAR(100) NOT NULL, \n\tevent_time TIMESTAMP WITHOUT TIME ZONE, \n\tsource VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_type VARCHAR(50), \n\tactor_id VARCHAR(255), \n\tactor_name VARCHAR(255), \n\tsubject_type VARCHAR(50), \n\tsubject_id VARCHAR(255), \n\tinput_summary TEXT, \n\tinput_json TEXT, \n\traw_ref VARCHAR(255), \n\trun_id VARCHAR(255), \n\trunner_id VARCHAR(255), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE UNIQUE INDEX ix_event_log_event_id ON event_log (event_id)",
"CREATE INDEX ix_event_log_event_type ON event_log (event_type)",
"CREATE INDEX ix_event_log_conversation_id ON event_log (conversation_id)",
"CREATE INDEX ix_event_log_run_id ON event_log (run_id)",
"CREATE INDEX ix_event_log_bot_id ON event_log (bot_id)",
"CREATE TABLE metadata (\n\tkey VARCHAR(255) NOT NULL, \n\tvalue VARCHAR(255), \n\tPRIMARY KEY (key)\n)",
"CREATE TABLE runner_state (\n\tid SERIAL NOT NULL, \n\trunner_id VARCHAR(255) NOT NULL, \n\tbinding_identity VARCHAR(255) NOT NULL, \n\tscope VARCHAR(50) NOT NULL, \n\tscope_key VARCHAR(512) NOT NULL, \n\tstate_key VARCHAR(255) NOT NULL, \n\tvalue_json TEXT, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255), \n\tthread_id VARCHAR(255), \n\tactor_type VARCHAR(50), \n\tactor_id VARCHAR(255), \n\tsubject_type VARCHAR(50), \n\tsubject_id VARCHAR(255), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_runner_state_scope_key_state_key UNIQUE (scope_key, state_key)\n)",
"CREATE INDEX ix_runner_state_conversation_id ON runner_state (conversation_id)",
"CREATE INDEX ix_runner_state_scope ON runner_state (scope)",
"CREATE INDEX ix_runner_state_runner_id ON runner_state (runner_id)",
"CREATE INDEX ix_runner_state_actor_id ON runner_state (actor_id)",
"CREATE INDEX ix_runner_state_runner_binding ON runner_state (runner_id, binding_identity)",
"CREATE INDEX ix_runner_state_binding_identity ON runner_state (binding_identity)",
"CREATE INDEX ix_runner_state_bot_id ON runner_state (bot_id)",
"CREATE INDEX ix_runner_state_scope_key_lookup ON runner_state (scope_key)",
"CREATE TABLE transcript (\n\tid SERIAL NOT NULL, \n\ttranscript_id VARCHAR(255) NOT NULL, \n\tevent_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255), \n\tworkspace_id VARCHAR(255), \n\tconversation_id VARCHAR(255) NOT NULL, \n\tthread_id VARCHAR(255), \n\trole VARCHAR(50) NOT NULL, \n\titem_type VARCHAR(50) NOT NULL, \n\tcontent TEXT, \n\tcontent_json TEXT, \n\tattachment_refs_json TEXT, \n\tseq INTEGER NOT NULL, \n\trun_id VARCHAR(255), \n\trunner_id VARCHAR(255), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tmetadata_json TEXT, \n\tPRIMARY KEY (id)\n)",
"CREATE INDEX ix_transcript_conversation_id ON transcript (conversation_id)",
"CREATE UNIQUE INDEX ix_transcript_transcript_id ON transcript (transcript_id)",
"CREATE INDEX ix_transcript_event_id ON transcript (event_id)",
"CREATE INDEX ix_transcript_conversation_seq ON transcript (conversation_id, seq)",
"CREATE INDEX ix_transcript_bot_id ON transcript (bot_id)",
"CREATE INDEX ix_transcript_conversation_created ON transcript (conversation_id, created_at)",
"CREATE INDEX ix_transcript_scope_seq ON transcript (bot_id, workspace_id, conversation_id, thread_id, seq)",
"CREATE INDEX ix_transcript_run_id ON transcript (run_id)",
"CREATE TABLE users (\n\tid SERIAL NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\t\"user\" VARCHAR(255) NOT NULL, \n\tnormalized_email VARCHAR(320) NOT NULL, \n\tpassword VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\taccount_type VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tspace_account_uuid VARCHAR(255), \n\tspace_access_token TEXT, \n\tspace_refresh_token TEXT, \n\tspace_access_token_expires_at TIMESTAMP WITHOUT TIME ZONE, \n\tspace_api_key VARCHAR(255), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT ck_users_normalized_email CHECK (normalized_email = trim(normalized_email) AND length(normalized_email) > 0 AND length(normalized_email) <= 320), \n\tCONSTRAINT ck_users_status CHECK (status IN ('active', 'disabled', 'deleted')), \n\tCONSTRAINT ck_users_source CHECK (source IN ('local', 'cloud_projection'))\n)",
"CREATE UNIQUE INDEX uq_users_normalized_email ON users (normalized_email)",
"CREATE UNIQUE INDEX uq_users_uuid ON users (uuid)",
"CREATE TABLE workspaces (\n\tuuid VARCHAR(36) NOT NULL, \n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tslug VARCHAR(255) NOT NULL, \n\ttype VARCHAR(32) DEFAULT 'team' NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tcreated_by_account_uuid VARCHAR(36), \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_workspaces_instance_slug UNIQUE (instance_uuid, slug), \n\tCONSTRAINT ck_workspaces_type CHECK (type IN ('personal', 'team')), \n\tCONSTRAINT ck_workspaces_status CHECK (status IN ('provisioning', 'active', 'suspended', 'archived', 'deleted')), \n\tCONSTRAINT ck_workspaces_source CHECK (source IN ('local', 'cloud_projection')), \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE INDEX ix_workspaces_instance_status ON workspaces (instance_uuid, status)",
"CREATE UNIQUE INDEX uq_workspaces_local_instance ON workspaces (instance_uuid) WHERE source = 'local'",
"CREATE TABLE agents (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tuuid VARCHAR(255) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\temoji VARCHAR(10), \n\tkind VARCHAR(50) NOT NULL, \n\tcomponent_ref VARCHAR(255), \n\tconfig JSON NOT NULL, \n\tsupported_event_patterns JSON NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid)\n)",
"CREATE INDEX ix_agents_workspace_updated ON agents (workspace_uuid, updated_at)",
"CREATE INDEX ix_agents_workspace_name ON agents (workspace_uuid, name)",
"CREATE TABLE api_keys (\n\tid SERIAL NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tcreated_by_account_uuid VARCHAR(36), \n\tname VARCHAR(255) NOT NULL, \n\tkey_hash VARCHAR(64) NOT NULL, \n\tscopes JSON DEFAULT '[]' NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\texpires_at TIMESTAMP WITHOUT TIME ZONE, \n\tlast_used_at TIMESTAMP WITHOUT TIME ZONE, \n\tdescription VARCHAR(512), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT ck_api_keys_status CHECK (status IN ('active', 'revoked')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE UNIQUE INDEX uq_api_keys_uuid ON api_keys (uuid)",
"CREATE UNIQUE INDEX uq_api_keys_key_hash ON api_keys (key_hash)",
"CREATE INDEX ix_api_keys_workspace_status ON api_keys (workspace_uuid, status)",
"CREATE INDEX ix_api_keys_workspace_name ON api_keys (workspace_uuid, name)",
"CREATE TABLE bots (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\tadapter VARCHAR(255) NOT NULL, \n\tadapter_config JSON NOT NULL, \n\tenable BOOLEAN NOT NULL, \n\tevent_bindings JSON DEFAULT '[]' NOT NULL, \n\tplugin_processors JSON DEFAULT '[]' NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_bots_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_bots_workspace_name ON bots (workspace_uuid, name)",
"CREATE TABLE binary_storages (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tunique_key VARCHAR(255) NOT NULL, \n\tkey VARCHAR(255) NOT NULL, \n\towner_type VARCHAR(255) NOT NULL, \n\towner VARCHAR(255) NOT NULL, \n\tvalue BYTEA NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (workspace_uuid, unique_key), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_binary_storages_workspace_owner ON binary_storages (workspace_uuid, owner_type, owner)",
"CREATE TABLE mcp_servers (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tenable BOOLEAN NOT NULL, \n\tmode VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\treadme TEXT DEFAULT '' NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_mcp_servers_workspace_name UNIQUE (workspace_uuid, name), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_mcp_servers_workspace_enable ON mcp_servers (workspace_uuid, enable)",
"CREATE TABLE workspace_metadata (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tkey VARCHAR(255) NOT NULL, \n\tvalue VARCHAR(255), \n\tPRIMARY KEY (workspace_uuid, key), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE TABLE model_providers (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\trequester VARCHAR(255) NOT NULL, \n\tbase_url VARCHAR(512) NOT NULL, \n\tapi_keys JSON NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_model_providers_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_model_providers_workspace_name ON model_providers (workspace_uuid, name)",
"CREATE INDEX ix_model_providers_workspace_requester ON model_providers (workspace_uuid, requester)",
"CREATE TABLE monitoring_messages (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tmessage_content TEXT NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tlevel VARCHAR(50) NOT NULL, \n\tplatform VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tuser_name VARCHAR(255), \n\trunner_name VARCHAR(255), \n\tvariables TEXT, \n\trole VARCHAR(50), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_messages_pipeline_id ON monitoring_messages (pipeline_id)",
"CREATE INDEX ix_monitoring_messages_timestamp ON monitoring_messages (timestamp)",
"CREATE INDEX ix_monitoring_messages_workspace_session ON monitoring_messages (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_messages_session_id ON monitoring_messages (session_id)",
"CREATE INDEX ix_monitoring_messages_bot_id ON monitoring_messages (bot_id)",
"CREATE INDEX ix_monitoring_messages_workspace_timestamp ON monitoring_messages (workspace_uuid, timestamp)",
"CREATE TABLE monitoring_llm_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tmodel_name VARCHAR(255) NOT NULL, \n\tinput_tokens INTEGER NOT NULL, \n\toutput_tokens INTEGER NOT NULL, \n\ttotal_tokens INTEGER NOT NULL, \n\tduration INTEGER NOT NULL, \n\tcost FLOAT, \n\tstatus VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\terror_message TEXT, \n\tmessage_id VARCHAR(255), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_llm_calls_workspace_session ON monitoring_llm_calls (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_llm_calls_timestamp ON monitoring_llm_calls (timestamp)",
"CREATE INDEX ix_monitoring_llm_calls_bot_id ON monitoring_llm_calls (bot_id)",
"CREATE INDEX ix_monitoring_llm_calls_message_id ON monitoring_llm_calls (message_id)",
"CREATE INDEX ix_monitoring_llm_calls_workspace_timestamp ON monitoring_llm_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_llm_calls_pipeline_id ON monitoring_llm_calls (pipeline_id)",
"CREATE TABLE monitoring_tool_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\ttool_name VARCHAR(255) NOT NULL, \n\ttool_source VARCHAR(50) NOT NULL, \n\tduration INTEGER NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\targuments TEXT, \n\tresult TEXT, \n\terror_message TEXT, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_tool_calls_pipeline_id ON monitoring_tool_calls (pipeline_id)",
"CREATE INDEX ix_monitoring_tool_calls_workspace_timestamp ON monitoring_tool_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_tool_calls_session_id ON monitoring_tool_calls (session_id)",
"CREATE INDEX ix_monitoring_tool_calls_workspace_session ON monitoring_tool_calls (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_tool_calls_timestamp ON monitoring_tool_calls (timestamp)",
"CREATE INDEX ix_monitoring_tool_calls_bot_id ON monitoring_tool_calls (bot_id)",
"CREATE INDEX ix_monitoring_tool_calls_message_id ON monitoring_tool_calls (message_id)",
"CREATE TABLE monitoring_sessions (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tsession_id VARCHAR(255) NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tmessage_count INTEGER NOT NULL, \n\tstart_time TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tlast_activity TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tplatform VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tuser_name VARCHAR(255), \n\tPRIMARY KEY (workspace_uuid, session_id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_sessions_bot_id ON monitoring_sessions (bot_id)",
"CREATE INDEX ix_monitoring_sessions_workspace_activity ON monitoring_sessions (workspace_uuid, last_activity)",
"CREATE INDEX ix_monitoring_sessions_last_activity ON monitoring_sessions (last_activity)",
"CREATE INDEX ix_monitoring_sessions_pipeline_id ON monitoring_sessions (pipeline_id)",
"CREATE INDEX ix_monitoring_sessions_workspace_active ON monitoring_sessions (workspace_uuid, is_active)",
"CREATE INDEX ix_monitoring_sessions_is_active ON monitoring_sessions (is_active)",
"CREATE INDEX ix_monitoring_sessions_start_time ON monitoring_sessions (start_time)",
"CREATE TABLE monitoring_errors (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\terror_type VARCHAR(255) NOT NULL, \n\terror_message TEXT NOT NULL, \n\tbot_id VARCHAR(255) NOT NULL, \n\tbot_name VARCHAR(255) NOT NULL, \n\tpipeline_id VARCHAR(255) NOT NULL, \n\tpipeline_name VARCHAR(255) NOT NULL, \n\tsession_id VARCHAR(255), \n\tstack_trace TEXT, \n\tmessage_id VARCHAR(255), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_errors_workspace_timestamp ON monitoring_errors (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_errors_message_id ON monitoring_errors (message_id)",
"CREATE INDEX ix_monitoring_errors_workspace_session ON monitoring_errors (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_errors_bot_id ON monitoring_errors (bot_id)",
"CREATE INDEX ix_monitoring_errors_timestamp ON monitoring_errors (timestamp)",
"CREATE INDEX ix_monitoring_errors_pipeline_id ON monitoring_errors (pipeline_id)",
"CREATE TABLE monitoring_embedding_calls (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tmodel_name VARCHAR(255) NOT NULL, \n\tprompt_tokens INTEGER NOT NULL, \n\ttotal_tokens INTEGER NOT NULL, \n\tduration INTEGER NOT NULL, \n\tinput_count INTEGER NOT NULL, \n\tstatus VARCHAR(50) NOT NULL, \n\terror_message TEXT, \n\tknowledge_base_id VARCHAR(255), \n\tquery_text TEXT, \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\tcall_type VARCHAR(50), \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_embedding_calls_workspace_timestamp ON monitoring_embedding_calls (workspace_uuid, timestamp)",
"CREATE INDEX ix_monitoring_embedding_calls_session_id ON monitoring_embedding_calls (session_id)",
"CREATE INDEX ix_monitoring_embedding_calls_workspace_kb ON monitoring_embedding_calls (workspace_uuid, knowledge_base_id)",
"CREATE INDEX ix_monitoring_embedding_calls_timestamp ON monitoring_embedding_calls (timestamp)",
"CREATE INDEX ix_monitoring_embedding_calls_message_id ON monitoring_embedding_calls (message_id)",
"CREATE INDEX ix_monitoring_embedding_calls_knowledge_base_id ON monitoring_embedding_calls (knowledge_base_id)",
"CREATE TABLE monitoring_feedback (\n\tid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\ttimestamp TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tfeedback_id VARCHAR(255) NOT NULL, \n\tfeedback_type INTEGER NOT NULL, \n\tfeedback_content TEXT, \n\tinaccurate_reasons TEXT, \n\tbot_id VARCHAR(255), \n\tbot_name VARCHAR(255), \n\tpipeline_id VARCHAR(255), \n\tpipeline_name VARCHAR(255), \n\tsession_id VARCHAR(255), \n\tmessage_id VARCHAR(255), \n\tstream_id VARCHAR(255), \n\tuser_id VARCHAR(255), \n\tplatform VARCHAR(255), \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_monitoring_feedback_workspace_feedback_id UNIQUE (workspace_uuid, feedback_id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_monitoring_feedback_pipeline_id ON monitoring_feedback (pipeline_id)",
"CREATE INDEX ix_monitoring_feedback_stream_id ON monitoring_feedback (stream_id)",
"CREATE INDEX ix_monitoring_feedback_workspace_session ON monitoring_feedback (workspace_uuid, session_id)",
"CREATE INDEX ix_monitoring_feedback_timestamp ON monitoring_feedback (timestamp)",
"CREATE INDEX ix_monitoring_feedback_session_id ON monitoring_feedback (session_id)",
"CREATE INDEX ix_monitoring_feedback_bot_id ON monitoring_feedback (bot_id)",
"CREATE INDEX ix_monitoring_feedback_message_id ON monitoring_feedback (message_id)",
"CREATE INDEX ix_monitoring_feedback_feedback_id ON monitoring_feedback (feedback_id)",
"CREATE INDEX ix_monitoring_feedback_workspace_timestamp ON monitoring_feedback (workspace_uuid, timestamp)",
"CREATE TABLE legacy_pipelines (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tdescription VARCHAR(255) NOT NULL, \n\temoji VARCHAR(10), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tfor_version VARCHAR(255) NOT NULL, \n\tis_default BOOLEAN NOT NULL, \n\tstages JSON NOT NULL, \n\tconfig JSON NOT NULL, \n\textensions_preferences JSON NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_legacy_pipelines_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_legacy_pipelines_workspace_name ON legacy_pipelines (workspace_uuid, name)",
"CREATE INDEX ix_legacy_pipelines_workspace_default ON legacy_pipelines (workspace_uuid, is_default)",
"CREATE TABLE plugin_settings (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tplugin_author VARCHAR(255) NOT NULL, \n\tplugin_name VARCHAR(255) NOT NULL, \n\tinstallation_uuid VARCHAR(36) NOT NULL, \n\tartifact_digest VARCHAR(64) NOT NULL, \n\truntime_revision INTEGER NOT NULL, \n\tenabled BOOLEAN NOT NULL, \n\tpriority INTEGER NOT NULL, \n\tconfig JSON NOT NULL, \n\tinstall_source VARCHAR(255) NOT NULL, \n\tinstall_info JSON NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (workspace_uuid, plugin_author, plugin_name), \n\tCONSTRAINT uq_plugin_settings_installation_uuid UNIQUE (installation_uuid), \n\tCONSTRAINT ck_plugin_settings_runtime_revision_positive CHECK (runtime_revision >= 1), \n\tCONSTRAINT ck_plugin_settings_artifact_digest_length CHECK (length(artifact_digest) = 64), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_plugin_settings_workspace_enabled ON plugin_settings (workspace_uuid, enabled)",
"CREATE UNIQUE INDEX ix_plugin_settings_workspace_installation ON plugin_settings (workspace_uuid, installation_uuid)",
"CREATE TABLE knowledge_bases (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR, \n\tdescription TEXT, \n\temoji VARCHAR(10), \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE, \n\tknowledge_engine_plugin_id VARCHAR, \n\tcollection_id VARCHAR, \n\tlegacy_vector_collection BOOLEAN DEFAULT false NOT NULL, \n\tcreation_settings JSON, \n\tretrieval_settings JSON, \n\tembedding_dimension INTEGER, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_knowledge_bases_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tCONSTRAINT ck_knowledge_bases_embedding_dimension_positive CHECK (embedding_dimension IS NULL OR embedding_dimension > 0), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_bases_workspace_name ON knowledge_bases (workspace_uuid, name)",
"CREATE INDEX ix_knowledge_bases_name ON knowledge_bases (name)",
"CREATE UNIQUE INDEX uq_knowledge_bases_workspace_collection ON knowledge_bases (workspace_uuid, collection_id) WHERE collection_id IS NOT NULL",
"CREATE TABLE support_admin_temporary_sessions (\n\tgrant_jti_hash VARCHAR(64) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tactor_account_uuid VARCHAR(36) NOT NULL, \n\tissued_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\texpires_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\trevoked_at TIMESTAMP WITHOUT TIME ZONE, \n\tlast_used_at TIMESTAMP WITHOUT TIME ZONE, \n\tPRIMARY KEY (grant_jti_hash), \n\tCONSTRAINT ck_support_admin_sessions_grant_jti_hash CHECK (length(grant_jti_hash) = 64), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_support_admin_sessions_workspace_expiry ON support_admin_temporary_sessions (workspace_uuid, expires_at)",
"CREATE TABLE webhooks (\n\tid SERIAL NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\turl VARCHAR(1024) NOT NULL, \n\tdescription VARCHAR(512), \n\tenabled BOOLEAN NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_webhooks_workspace_name ON webhooks (workspace_uuid, name)",
"CREATE TABLE workspace_memberships (\n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\taccount_uuid VARCHAR(36) NOT NULL, \n\trole VARCHAR(32) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'active' NOT NULL, \n\tinvited_by_account_uuid VARCHAR(36), \n\tjoined_at TIMESTAMP WITHOUT TIME ZONE, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tprojection_revision BIGINT DEFAULT '0' NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_workspace_membership_account UNIQUE (workspace_uuid, account_uuid), \n\tCONSTRAINT ck_workspace_memberships_role CHECK (role IN ('owner', 'admin', 'developer', 'operator', 'viewer')), \n\tCONSTRAINT ck_workspace_memberships_status CHECK (status IN ('active', 'disabled', 'removed')), \n\tCONSTRAINT ck_workspace_memberships_source CHECK (source IN ('local', 'cloud_projection')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(account_uuid) REFERENCES users (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(invited_by_account_uuid) REFERENCES users (uuid) ON DELETE SET NULL\n)",
"CREATE UNIQUE INDEX uq_workspace_memberships_one_active_owner ON workspace_memberships (workspace_uuid) WHERE role = 'owner' AND status = 'active'",
"CREATE INDEX ix_workspace_memberships_account_status ON workspace_memberships (account_uuid, status)",
"CREATE TABLE workspace_invitations (\n\tuuid VARCHAR(36) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tnormalized_email VARCHAR(320) NOT NULL, \n\trole VARCHAR(32) NOT NULL, \n\ttoken_hash VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(32) DEFAULT 'pending' NOT NULL, \n\texpires_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\taccepted_at TIMESTAMP WITHOUT TIME ZONE, \n\trevoked_at TIMESTAMP WITHOUT TIME ZONE, \n\tcreated_by_account_uuid VARCHAR(36) NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT ck_workspace_invitations_role CHECK (role IN ('admin', 'developer', 'operator', 'viewer')), \n\tCONSTRAINT ck_workspace_invitations_status CHECK (status IN ('pending', 'accepted', 'revoked', 'expired')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(created_by_account_uuid) REFERENCES users (uuid) ON DELETE CASCADE\n)",
"CREATE UNIQUE INDEX uq_workspace_invitations_token_hash ON workspace_invitations (token_hash)",
"CREATE UNIQUE INDEX uq_workspace_invitations_pending_email ON workspace_invitations (workspace_uuid, normalized_email) WHERE status = 'pending'",
"CREATE TABLE workspace_execution_states (\n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tinstance_uuid VARCHAR(255) NOT NULL, \n\tactive_generation BIGINT DEFAULT '1' NOT NULL, \n\tstate VARCHAR(32) DEFAULT 'active' NOT NULL, \n\twrite_fenced BOOLEAN DEFAULT false NOT NULL, \n\tsource VARCHAR(32) DEFAULT 'local' NOT NULL, \n\tdesired_state_revision BIGINT DEFAULT '0' NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (workspace_uuid), \n\tCONSTRAINT ck_workspace_execution_generation CHECK (active_generation > 0), \n\tCONSTRAINT ck_workspace_execution_state CHECK (state IN ('provisioning', 'active', 'migrating', 'draining', 'inactive')), \n\tCONSTRAINT ck_workspace_execution_source CHECK (source IN ('local', 'cloud')), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_workspace_execution_states_instance_state ON workspace_execution_states (instance_uuid, state)",
"CREATE TABLE bot_admins (\n\tid SERIAL NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tbot_uuid VARCHAR(255) NOT NULL, \n\tlauncher_type VARCHAR(64) NOT NULL, \n\tlauncher_id VARCHAR(255) NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (id), \n\tCONSTRAINT uq_bot_admin UNIQUE (workspace_uuid, bot_uuid, launcher_type, launcher_id), \n\tCONSTRAINT fk_bot_admins_workspace_bot FOREIGN KEY(workspace_uuid, bot_uuid) REFERENCES bots (workspace_uuid, uuid) ON DELETE CASCADE, \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE TABLE llm_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\tabilities JSON NOT NULL, \n\tcontext_length INTEGER, \n\treasoning_config JSON DEFAULT '{\"level\":\"provider_default\"}' NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_llm_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_llm_models_workspace_name ON llm_models (workspace_uuid, name)",
"CREATE INDEX ix_llm_models_workspace_provider ON llm_models (workspace_uuid, provider_uuid)",
"CREATE TABLE embedding_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_embedding_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_embedding_models_workspace_name ON embedding_models (workspace_uuid, name)",
"CREATE INDEX ix_embedding_models_workspace_provider ON embedding_models (workspace_uuid, provider_uuid)",
"CREATE TABLE rerank_models (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tname VARCHAR(255) NOT NULL, \n\tprovider_uuid VARCHAR(255) NOT NULL, \n\textra_args JSON NOT NULL, \n\tprefered_ranking INTEGER NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_rerank_models_workspace_provider FOREIGN KEY(workspace_uuid, provider_uuid) REFERENCES model_providers (workspace_uuid, uuid), \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_rerank_models_workspace_name ON rerank_models (workspace_uuid, name)",
"CREATE INDEX ix_rerank_models_workspace_provider ON rerank_models (workspace_uuid, provider_uuid)",
"CREATE TABLE pipeline_run_records (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tpipeline_uuid VARCHAR(255) NOT NULL, \n\tstatus VARCHAR(255) NOT NULL, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tupdated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL, \n\tstarted_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tfinished_at TIMESTAMP WITHOUT TIME ZONE NOT NULL, \n\tresult JSON NOT NULL, \n\tknowledge_base_uuid VARCHAR(255), \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_pipeline_run_records_workspace_pipeline FOREIGN KEY(workspace_uuid, pipeline_uuid) REFERENCES legacy_pipelines (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_pipeline_run_records_workspace_created ON pipeline_run_records (workspace_uuid, created_at)",
"CREATE INDEX ix_pipeline_run_records_workspace_pipeline ON pipeline_run_records (workspace_uuid, pipeline_uuid)",
"CREATE TABLE knowledge_base_files (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tkb_id VARCHAR(255), \n\tfile_name VARCHAR, \n\textension VARCHAR, \n\tcreated_at TIMESTAMP WITHOUT TIME ZONE, \n\tstatus VARCHAR, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT uq_knowledge_base_files_workspace_uuid UNIQUE (workspace_uuid, uuid), \n\tCONSTRAINT fk_knowledge_base_files_workspace_kb FOREIGN KEY(workspace_uuid, kb_id) REFERENCES knowledge_bases (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_base_files_workspace_kb ON knowledge_base_files (workspace_uuid, kb_id)",
"CREATE TABLE knowledge_base_chunks (\n\tuuid VARCHAR(255) NOT NULL, \n\tworkspace_uuid VARCHAR(36) NOT NULL, \n\tfile_id VARCHAR(255), \n\ttext TEXT, \n\tPRIMARY KEY (uuid), \n\tCONSTRAINT fk_knowledge_base_chunks_workspace_file FOREIGN KEY(workspace_uuid, file_id) REFERENCES knowledge_base_files (workspace_uuid, uuid) ON DELETE CASCADE, \n\tUNIQUE (uuid), \n\tFOREIGN KEY(workspace_uuid) REFERENCES workspaces (uuid) ON DELETE CASCADE\n)",
"CREATE INDEX ix_knowledge_base_chunks_workspace_file ON knowledge_base_chunks (workspace_uuid, file_id)"
]
}
}