Merge branch 'main' into fix/provider-scoped-model-id-resolution

This commit is contained in:
ringotypowriter
2026-02-22 12:47:37 +08:00
82 changed files with 3574 additions and 1153 deletions
+6 -6
View File
@@ -1,21 +1,21 @@
-- name: CreateBot :one
INSERT INTO bots (owner_user_id, type, display_name, avatar_url, is_active, metadata, status)
VALUES ($1, $2, $3, $4, $5, $6, $7)
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, max_inbox_items, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
-- name: GetBotByID :one
SELECT id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at
SELECT id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, max_inbox_items, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at
FROM bots
WHERE id = $1;
-- name: ListBotsByOwner :many
SELECT id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at
SELECT id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, max_inbox_items, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at
FROM bots
WHERE owner_user_id = $1
ORDER BY created_at DESC;
-- name: ListBotsByMember :many
SELECT b.id, b.owner_user_id, b.type, b.display_name, b.avatar_url, b.is_active, b.status, b.max_context_load_time, b.max_context_tokens, b.language, b.allow_guest, b.chat_model_id, b.memory_model_id, b.embedding_model_id, b.search_provider_id, b.metadata, b.created_at, b.updated_at
SELECT b.id, b.owner_user_id, b.type, b.display_name, b.avatar_url, b.is_active, b.status, b.max_context_load_time, b.max_context_tokens, b.max_inbox_items, b.language, b.allow_guest, b.chat_model_id, b.memory_model_id, b.embedding_model_id, b.search_provider_id, b.metadata, b.created_at, b.updated_at
FROM bots b
JOIN bot_members m ON m.bot_id = b.id
WHERE m.user_id = $1
@@ -29,14 +29,14 @@ SET display_name = $2,
metadata = $5,
updated_at = now()
WHERE id = $1
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, max_inbox_items, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
-- name: UpdateBotOwner :one
UPDATE bots
SET owner_user_id = $2,
updated_at = now()
WHERE id = $1
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
RETURNING id, owner_user_id, type, display_name, avatar_url, is_active, status, max_context_load_time, max_context_tokens, max_inbox_items, language, allow_guest, chat_model_id, memory_model_id, embedding_model_id, search_provider_id, metadata, created_at, updated_at;
-- name: UpdateBotStatus :exec
UPDATE bots
+61
View File
@@ -0,0 +1,61 @@
-- name: CreateInboxItem :one
INSERT INTO bot_inbox (bot_id, source, content)
VALUES (sqlc.arg(bot_id), sqlc.arg(source), sqlc.arg(content))
RETURNING *;
-- name: GetInboxItemByID :one
SELECT * FROM bot_inbox
WHERE id = sqlc.arg(id)
AND bot_id = sqlc.arg(bot_id);
-- name: ListInboxItems :many
SELECT * FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id)
AND (sqlc.narg(is_read)::boolean IS NULL OR is_read = sqlc.narg(is_read)::boolean)
AND (sqlc.narg(source)::text IS NULL OR source = sqlc.narg(source)::text)
ORDER BY created_at DESC
LIMIT sqlc.arg(max_count)
OFFSET sqlc.arg(item_offset);
-- name: ListUnreadInboxItems :many
SELECT * FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id)
AND is_read = FALSE
ORDER BY created_at ASC
LIMIT sqlc.arg(max_count);
-- name: MarkInboxItemsRead :exec
UPDATE bot_inbox
SET is_read = TRUE,
read_at = now()
WHERE bot_id = sqlc.arg(bot_id)
AND id = ANY(sqlc.arg(ids)::uuid[])
AND is_read = FALSE;
-- name: SearchInboxItems :many
SELECT * FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id)
AND content::text ILIKE '%' || sqlc.arg(query) || '%'
AND (sqlc.narg(start_time)::timestamptz IS NULL OR created_at >= sqlc.narg(start_time)::timestamptz)
AND (sqlc.narg(end_time)::timestamptz IS NULL OR created_at <= sqlc.narg(end_time)::timestamptz)
AND (sqlc.narg(include_read)::boolean IS NULL OR sqlc.narg(include_read)::boolean = TRUE OR is_read = FALSE)
ORDER BY created_at DESC
LIMIT sqlc.arg(max_count);
-- name: CountUnreadInboxItems :one
SELECT count(*) FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id)
AND is_read = FALSE;
-- name: CountInboxItems :one
SELECT count(*) FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id);
-- name: DeleteInboxItem :exec
DELETE FROM bot_inbox
WHERE id = sqlc.arg(id)
AND bot_id = sqlc.arg(bot_id);
-- name: DeleteInboxItemsByBot :exec
DELETE FROM bot_inbox
WHERE bot_id = sqlc.arg(bot_id);
+24
View File
@@ -86,6 +86,30 @@ WHERE m.bot_id = sqlc.arg(bot_id)
AND m.created_at >= sqlc.arg(created_at)
ORDER BY m.created_at ASC;
-- name: ListActiveMessagesSince :many
SELECT
m.id,
m.bot_id,
m.route_id,
m.sender_channel_identity_id,
m.sender_account_user_id AS sender_user_id,
m.channel_type AS platform,
m.source_message_id AS external_message_id,
m.source_reply_to_message_id,
m.role,
m.content,
m.metadata,
m.usage,
m.created_at,
ci.display_name AS sender_display_name,
ci.avatar_url AS sender_avatar_url
FROM bot_history_messages m
LEFT JOIN channel_identities ci ON ci.id = m.sender_channel_identity_id
WHERE m.bot_id = sqlc.arg(bot_id)
AND m.created_at >= sqlc.arg(created_at)
AND (m.metadata->>'trigger_mode' IS NULL OR m.metadata->>'trigger_mode' != 'passive_sync')
ORDER BY m.created_at ASC;
-- name: ListMessagesBefore :many
SELECT
m.id,
+5 -1
View File
@@ -3,6 +3,7 @@ SELECT
bots.id AS bot_id,
bots.max_context_load_time,
bots.max_context_tokens,
bots.max_inbox_items,
bots.language,
bots.allow_guest,
chat_models.id AS chat_model_id,
@@ -21,6 +22,7 @@ WITH updated AS (
UPDATE bots
SET max_context_load_time = sqlc.arg(max_context_load_time),
max_context_tokens = sqlc.arg(max_context_tokens),
max_inbox_items = sqlc.arg(max_inbox_items),
language = sqlc.arg(language),
allow_guest = sqlc.arg(allow_guest),
chat_model_id = COALESCE(sqlc.narg(chat_model_id)::uuid, bots.chat_model_id),
@@ -29,12 +31,13 @@ WITH updated AS (
search_provider_id = COALESCE(sqlc.narg(search_provider_id)::uuid, bots.search_provider_id),
updated_at = now()
WHERE bots.id = sqlc.arg(id)
RETURNING bots.id, bots.max_context_load_time, bots.max_context_tokens, bots.language, bots.allow_guest, bots.chat_model_id, bots.memory_model_id, bots.embedding_model_id, bots.search_provider_id
RETURNING bots.id, bots.max_context_load_time, bots.max_context_tokens, bots.max_inbox_items, bots.language, bots.allow_guest, bots.chat_model_id, bots.memory_model_id, bots.embedding_model_id, bots.search_provider_id
)
SELECT
updated.id AS bot_id,
updated.max_context_load_time,
updated.max_context_tokens,
updated.max_inbox_items,
updated.language,
updated.allow_guest,
chat_models.id AS chat_model_id,
@@ -51,6 +54,7 @@ LEFT JOIN search_providers ON search_providers.id = updated.search_provider_id;
UPDATE bots
SET max_context_load_time = 1440,
max_context_tokens = 0,
max_inbox_items = 50,
language = 'auto',
allow_guest = false,
chat_model_id = NULL,