用途:当应用已运行 Drizzle ORM,并需要 TanStack AI 聊天持久化时,本技能在应用内生成一个文件 src/lib/chat-persistence.ts,导出由现有 Drizzle db 构建的 ChatPersistence,同时向现有 schema 文件追加四张表,并通过应用已有的 drizzle-kit 流程生成迁移。不新建包、第二个 db 实例、迁移运行器或 drizzle.config.ts。
主要能力:先读取应用现状再动手,包括方言(sqlite-core/pg-core/mysql-core)、schema 文件位置、db 句柄形态(模块单例或工厂)、迁移流程、命名约定与导入别名,并与之保持一致。四张表为 chat_threads、chat_runs、chat_interrupts、chat_metadata,分别对应 MessageStore、RunStore、InterruptStore、MetadataStore。SQLite 用 text({ mode: 'json' }) 存 JSON、integer 存 epoch 毫秒;Postgres 用 jsonb 与 bigint({ mode: 'number' });MySQL 用 json、bigint 与 varchar(255) 主键。
使用方式:把表追加到现有 schema 文件,然后让用户运行自己的命令,例如 npx drizzle-kit generate 再 migrate/push,D1 用 wrangler d1 migrations apply。store 实现强调幂等:createOrResume 对已存在 runId 原样返回,update 对未知 runId 为 no-op,interrupt create 为 insert-if-absent,metadata set 拒绝 null 值并提示用 delete 清除。durable-run 字段用 'field' in patch 判断,以便显式传 undefined 时写入 NULL。
适用场景与限制:适用于已有 Drizzle 数据库与迁移体系、希望复用现有 db 句柄的应用。资料未提供具体版本要求、性能数据、收费信息或完整文件结尾,相关细节暂未提供。