mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
feat: add session info panel with message count, context usage, cache stats, and skills
Add GET /bots/:bot_id/sessions/:session_id/info API endpoint that returns per-session message count, latest input token usage with model context window, aggregated KV cache hit rate, and skills invoked via use_skill tool calls. Frontend Info tab in the right sidebar now displays this data in a compact key-value layout with a context usage progress bar and clickable skill links.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
-- name: CountMessagesBySession :one
|
||||
SELECT COUNT(*)::bigint AS message_count
|
||||
FROM bot_history_messages
|
||||
WHERE session_id = sqlc.arg(session_id);
|
||||
|
||||
-- name: GetLatestAssistantUsage :one
|
||||
SELECT
|
||||
COALESCE((m.usage->>'inputTokens')::bigint, 0)::bigint AS input_tokens
|
||||
FROM bot_history_messages m
|
||||
WHERE m.session_id = sqlc.arg(session_id)
|
||||
AND m.role = 'assistant'
|
||||
AND m.usage IS NOT NULL
|
||||
ORDER BY m.created_at DESC
|
||||
LIMIT 1;
|
||||
|
||||
-- name: GetSessionCacheStats :one
|
||||
SELECT
|
||||
COALESCE(SUM((m.usage->>'inputTokens')::bigint), 0)::bigint AS total_input_tokens,
|
||||
COALESCE(SUM((m.usage->'inputTokenDetails'->>'cacheReadTokens')::bigint), 0)::bigint AS cache_read_tokens,
|
||||
COALESCE(SUM((m.usage->'inputTokenDetails'->>'cacheWriteTokens')::bigint), 0)::bigint AS cache_write_tokens
|
||||
FROM bot_history_messages m
|
||||
WHERE m.session_id = sqlc.arg(session_id)
|
||||
AND m.usage IS NOT NULL;
|
||||
|
||||
-- name: GetSessionUsedSkills :many
|
||||
SELECT DISTINCT
|
||||
(part->'input'->>'skillName')::text AS skill_name
|
||||
FROM bot_history_messages m,
|
||||
jsonb_array_elements(
|
||||
CASE WHEN jsonb_typeof(m.content->'content') = 'array'
|
||||
THEN m.content->'content'
|
||||
ELSE '[]'::jsonb
|
||||
END
|
||||
) AS part
|
||||
WHERE m.session_id = sqlc.arg(session_id)
|
||||
AND m.role = 'assistant'
|
||||
AND part->>'type' = 'tool-call'
|
||||
AND part->>'toolName' = 'use_skill'
|
||||
AND part->'input'->>'skillName' IS NOT NULL
|
||||
AND part->'input'->>'skillName' != ''
|
||||
ORDER BY skill_name;
|
||||
Reference in New Issue
Block a user