INSERT INTO ias_upgrade_logs (
    version,
    released_at,
    title,
    description,
    changes,
    modules
) VALUES (
    '0.2.19',
    '2026-07-08T00:00:00+08:00',
    '上下文 raw 记录与工具调用说明',
    '上下文消息支持 raw JSON 朔源入库，/new 可打断当前工具操作；动态附加系统提示词改为随能力列表展示的工具调用说明。',
    '[
        "/new 现在会取消同一用户作用域正在运行的 LLM/工具任务，清除当前 turn，并丢弃迟到的 assistant、工具提醒或工具结果。",
        "上下文消息新增 raw_message JSONB 原文记录；读取上下文时优先从 raw JSON 重建 content、tool_calls 和 tool_call_id，旧字段继续兼容历史数据。",
        "微信入口会把 message_id、session_id、group_id 和 create_time_ms 带入 raw 记录；同一 session 内相同外部消息 ID 的重复用户消息会自动去重。",
        "群聊上下文 scope 现在优先使用 group_id，避免同一发送者在私聊和不同群聊之间串上下文；私聊继续保持原有 channel:account_id:from_user_id 形式。",
        "数据库会先自动结束同一 scope 中较旧的重复活跃会话，再新增同一 scope 仅允许一个活跃上下文会话的唯一约束，避免异常重试或多实例情况下产生隐性多活会话。",
        "模型响应兼容 content=null 的纯工具调用场景，请求消息不再序列化空 tool_call_id/tool_calls 字段。",
        "动态附加系统提示词改为工具调用说明，不再进入系统提示词，只随 query_capabilities 展示。",
        "新增内部接口 POST/PATCH /v1/context/tool-instructions 和 API 能力 record_tool_call_instruction，用于记录用户提供的工具调用规则、稳定调用顺序和 AI 总结出的调用经验。",
        "上下文模拟器展示独立工具调用说明，并在 messages 预览中保留 tool_calls、tool_call_id 和 raw_message，便于观察上下文组成。",
        "数据库新增 ias_context_messages.raw_message、ias_context_messages.external_message_id、ias_context_sessions 活跃会话唯一约束和 ias_tool_call_instructions 表，并迁移旧 ias_additional_system_prompts 中已有内容。"
    ]'::jsonb,
    '{
        "ias-common": "0.1.2",
        "ias-ai": "0.1.9",
        "ias-wechat": "0.1.0",
        "ias-context": "0.1.4",
        "ias-http": "0.1.12",
        "ias-mail": "0.1.15",
        "ias-service": "0.1.16",
        "ias-main": "0.2.19"
    }'::jsonb
) ON CONFLICT (version) DO UPDATE SET
    released_at = EXCLUDED.released_at,
    title = EXCLUDED.title,
    description = EXCLUDED.description,
    changes = EXCLUDED.changes,
    modules = EXCLUDED.modules;
