/** * @license * Copyright 2026 Alibaba Group Holding Limited * SPDX-License-Identifier: Apache-2.0 */ export declare const SCHEMA_VERSION = 1; export declare const LTM_FIELDS: readonly [readonly ["name", "Name"], readonly ["occupation_or_role", "Occupation/Role"], readonly ["long_term_goals", "Long-term Goals"], readonly ["routines", "Routines"], readonly ["appearance", "Appearance"], readonly ["preferences", "Preferences"], readonly ["interests", "Interests"], readonly ["relationships", "Relationships"]]; export type LtmField = (typeof LTM_FIELDS)[number][0]; export declare const LTM_FIELD_NAMES: Set; export declare const LTM_SINGLE_VALUE: Set; export declare const LTM_TRIM_ORDER: LtmField[]; export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS library_sessions (\n session_id TEXT PRIMARY KEY,\n session_name TEXT,\n first_seen_at TEXT NOT NULL,\n last_seen_at TEXT NOT NULL,\n n_turns INTEGER NOT NULL DEFAULT 0,\n n_segments INTEGER NOT NULL DEFAULT 0,\n active INTEGER NOT NULL DEFAULT 1,\n deactivated_at TEXT,\n deactivate_reason TEXT\n);\nCREATE INDEX IF NOT EXISTS idx_libsess_active ON library_sessions(active);\nCREATE TABLE IF NOT EXISTS turns (\n id INTEGER PRIMARY KEY,\n session_id TEXT NOT NULL,\n turn_idx INTEGER NOT NULL,\n user_text TEXT NOT NULL,\n user_ts TEXT NOT NULL,\n user_epoch INTEGER NOT NULL,\n asst_text TEXT NOT NULL,\n asst_ts TEXT NOT NULL,\n asst_epoch INTEGER NOT NULL,\n interrupted INTEGER NOT NULL DEFAULT 0,\n seg_id INTEGER,\n UNIQUE(session_id, turn_idx)\n);\nCREATE INDEX IF NOT EXISTS idx_turns_session ON turns(session_id, turn_idx);\nCREATE TABLE IF NOT EXISTS dialogue_segments (\n id INTEGER PRIMARY KEY,\n session_id TEXT NOT NULL,\n turn_from INTEGER NOT NULL,\n turn_to INTEGER NOT NULL,\n n_turns INTEGER NOT NULL,\n start_ts TEXT NOT NULL,\n end_ts TEXT NOT NULL,\n start_epoch INTEGER NOT NULL,\n end_epoch INTEGER NOT NULL,\n body TEXT NOT NULL,\n cut_reason TEXT NOT NULL,\n n_chars INTEGER NOT NULL,\n UNIQUE(session_id, turn_from)\n);\nCREATE INDEX IF NOT EXISTS idx_seg_epoch ON dialogue_segments(start_epoch DESC);\nCREATE VIRTUAL TABLE IF NOT EXISTS dialogue_fts USING fts5(\n index_text, seg_id UNINDEXED, tokenize='unicode61'\n);\nCREATE TABLE IF NOT EXISTS embeddings (\n kind TEXT NOT NULL,\n ref_id INTEGER NOT NULL,\n dim INTEGER NOT NULL,\n model TEXT NOT NULL,\n vec BLOB NOT NULL,\n created_at TEXT NOT NULL,\n PRIMARY KEY(kind, ref_id)\n);\nCREATE TABLE IF NOT EXISTS schema_meta (k TEXT PRIMARY KEY, v TEXT);\nCREATE TABLE IF NOT EXISTS wm_snapshots (\n id INTEGER PRIMARY KEY,\n session_id TEXT NOT NULL,\n seq INTEGER NOT NULL,\n wm_json TEXT NOT NULL,\n ops_json TEXT NOT NULL,\n applied_json TEXT NOT NULL,\n created_at TEXT NOT NULL,\n UNIQUE(session_id, seq)\n);\nCREATE INDEX IF NOT EXISTS idx_wm_session ON wm_snapshots(session_id, seq DESC);\nCREATE TABLE IF NOT EXISTS ltm_entries (\n id INTEGER PRIMARY KEY,\n field TEXT NOT NULL,\n content TEXT NOT NULL,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n src_session TEXT,\n UNIQUE(field, content)\n);\nCREATE INDEX IF NOT EXISTS idx_ltm_field ON ltm_entries(field, updated_at DESC);\nCREATE TABLE IF NOT EXISTS stm_items (\n id INTEGER PRIMARY KEY,\n content TEXT NOT NULL,\n status TEXT NOT NULL CHECK(status IN ('ongoing', 'upcoming')),\n created_at TEXT NOT NULL,\n created_ts INTEGER NOT NULL,\n event_date TEXT,\n expires_at TEXT,\n src_session TEXT,\n active INTEGER NOT NULL DEFAULT 1,\n expired_at TEXT,\n UNIQUE(content, created_at)\n);\nCREATE INDEX IF NOT EXISTS idx_stm_active ON stm_items(active, created_ts DESC);\nCREATE TABLE IF NOT EXISTS preload_log (\n session_id TEXT PRIMARY KEY,\n created_at TEXT NOT NULL,\n payload_json TEXT NOT NULL\n);\nCREATE TABLE IF NOT EXISTS stm_env (\n id INTEGER PRIMARY KEY,\n content TEXT NOT NULL,\n created_at TEXT NOT NULL,\n created_ts INTEGER NOT NULL,\n src_session TEXT,\n active INTEGER NOT NULL DEFAULT 1,\n expired_at TEXT,\n UNIQUE(content)\n);\nCREATE INDEX IF NOT EXISTS idx_stm_env_active ON stm_env(active, created_ts DESC);\nCREATE VIRTUAL TABLE IF NOT EXISTS env_fts USING fts5(\n index_text, env_id UNINDEXED, tokenize='unicode61'\n);\nCREATE TABLE IF NOT EXISTS updater_log (\n session_id TEXT PRIMARY KEY,\n created_at TEXT NOT NULL,\n status TEXT NOT NULL,\n attempts INTEGER NOT NULL DEFAULT 1,\n model TEXT,\n wm_json TEXT,\n patch_json TEXT,\n report_json TEXT,\n detail TEXT\n);\nCREATE INDEX IF NOT EXISTS idx_updater_status ON updater_log(status, created_at);\n";