@musnows/scriverse 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai.js +185 -17
- package/dist/ai.js.map +1 -1
- package/dist/app.js +2 -0
- package/dist/app.js.map +1 -1
- package/dist/database.js +48 -2
- package/dist/database.js.map +1 -1
- package/dist/im-orchestrator.js +118 -50
- package/dist/im-orchestrator.js.map +1 -1
- package/dist/im.js +79 -16
- package/dist/im.js.map +1 -1
- package/dist/public/app.js +83 -5
- package/dist/public/im.d.ts +4 -0
- package/dist/public/im.js +126 -5
- package/dist/public/index.html +2 -2
- package/dist/public/styles.css +32 -0
- package/dist/store.js +12 -5
- package/dist/store.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/database.js
CHANGED
|
@@ -8,9 +8,9 @@ import { documentShortSearchTerms, id, normalizeDocumentSearchText, splitDocumen
|
|
|
8
8
|
import { createChapterLineIds, parseChapterAnnotationLineHashes, parseChapterLineIds } from "./chapter-annotation-anchor.js";
|
|
9
9
|
export const PLATFORM_AI_WORK_ID = "__scriverse_platform_ai__";
|
|
10
10
|
export const SYSTEM_USER_ID = "__scriverse_system_user__";
|
|
11
|
-
// 版本 81 用于列表查询索引;版本 82 由 Store 写入实体版本基线标记;版本 83 创建协作状态表;版本 84 创建备份加密表;版本 85 持久化协作变更动作;版本 86 扩展直接图片上传格式;版本 87 增加作品与分卷回收站;版本 88 持久化 AI 对话分支幂等键;版本 89 持久化 AI 对话流请求锁与幂等状态;版本 90 持久化 AI 连通性测试冷却状态;版本 91 建立章节段落行号索引;版本 92 增加 AI 对话收藏状态;版本 93 优化伏笔计划回收章节查询;版本 94 增加模型思考强度;版本 95 增加供应商最大输出参数选择;版本 96 扩展模型思考强度档位;版本 97 增加人物性别字段;版本 98 增加正文稳定等待配置;版本 99 持久化关系扮演中的用户角色;版本 100 增加平台 AI 流事件空闲超时配置;版本 101 将平台 AI 流事件空闲超时上限提升至 600 秒;版本 102 创建角色头像元数据表;版本 103 回填历史 AI 对话归属并建立用户列表索引;版本 104 扩大供应商协议约束以支持 OpenAI Responses;版本 105 增加独立分卷剧情顺序;版本 106 增加供应商思考类型配置;版本 107 增加 AI Cache Write 输入 Token 统计;版本 108 增加作品 AI 每月 Token 额度;版本 109 增加供应商日、月 Token 额度;版本 110 将日、月 Token 额度下限调整为大于 0;版本 111 扩展模型思考强度为 auto;版本 112 为 CLI API Key 增加可复制的加密密文;版本 113 增加角色收藏状态与列表索引;版本 114 增加组织、设定档案与想法收藏状态及列表索引;版本 115 增加 AI 对话会话级场景钉;版本 116 增加可持久化且可撤销的 Desktop Bearer 会话;版本 117 增加作品离线授权、同步变更游标与幂等变更结果;版本 118 增加供应商分析请求超时配置;版本 119 记录分析任务是否由 API Key 创建;版本 120 将书籍资料收藏按用户隔离并增加书籍级共享置顶;版本 121 强制作品 Owner 非空并建立用户外键约束;版本 122 创建 AI 写入审批与持久化提问表,并增加按角色归属的共享角色扮演记忆及作品级正文编辑偏好;版本 123 为正文评论持久化逐行哈希锚点;版本 124 为正文行和评论锚点持久化稳定行身份;版本 125 增加显式语义检索配置、分片索引、模型类型与上下文快照;版本 126 为作品增加加密的远程 MCP 配置与工具目录;版本 127 创建跨作品 IM 会话、成员、消息、角色上下文与 AI 链路状态;版本 128 为退出成员冻结会话快照;版本 129 持久化 IM 历史头像版本;版本 130 为 IM 手动重试增加幂等来源;版本 131 限定迁移期回填已有 IM 头像版本;版本 132 优化 IM 会话成员范围查询;版本 133 优化 IM 历史头像授权查询;版本 134 为 IM 历史头像哈希建立表达式索引;版本 135 为 AI
|
|
11
|
+
// 版本 81 用于列表查询索引;版本 82 由 Store 写入实体版本基线标记;版本 83 创建协作状态表;版本 84 创建备份加密表;版本 85 持久化协作变更动作;版本 86 扩展直接图片上传格式;版本 87 增加作品与分卷回收站;版本 88 持久化 AI 对话分支幂等键;版本 89 持久化 AI 对话流请求锁与幂等状态;版本 90 持久化 AI 连通性测试冷却状态;版本 91 建立章节段落行号索引;版本 92 增加 AI 对话收藏状态;版本 93 优化伏笔计划回收章节查询;版本 94 增加模型思考强度;版本 95 增加供应商最大输出参数选择;版本 96 扩展模型思考强度档位;版本 97 增加人物性别字段;版本 98 增加正文稳定等待配置;版本 99 持久化关系扮演中的用户角色;版本 100 增加平台 AI 流事件空闲超时配置;版本 101 将平台 AI 流事件空闲超时上限提升至 600 秒;版本 102 创建角色头像元数据表;版本 103 回填历史 AI 对话归属并建立用户列表索引;版本 104 扩大供应商协议约束以支持 OpenAI Responses;版本 105 增加独立分卷剧情顺序;版本 106 增加供应商思考类型配置;版本 107 增加 AI Cache Write 输入 Token 统计;版本 108 增加作品 AI 每月 Token 额度;版本 109 增加供应商日、月 Token 额度;版本 110 将日、月 Token 额度下限调整为大于 0;版本 111 扩展模型思考强度为 auto;版本 112 为 CLI API Key 增加可复制的加密密文;版本 113 增加角色收藏状态与列表索引;版本 114 增加组织、设定档案与想法收藏状态及列表索引;版本 115 增加 AI 对话会话级场景钉;版本 116 增加可持久化且可撤销的 Desktop Bearer 会话;版本 117 增加作品离线授权、同步变更游标与幂等变更结果;版本 118 增加供应商分析请求超时配置;版本 119 记录分析任务是否由 API Key 创建;版本 120 将书籍资料收藏按用户隔离并增加书籍级共享置顶;版本 121 强制作品 Owner 非空并建立用户外键约束;版本 122 创建 AI 写入审批与持久化提问表,并增加按角色归属的共享角色扮演记忆及作品级正文编辑偏好;版本 123 为正文评论持久化逐行哈希锚点;版本 124 为正文行和评论锚点持久化稳定行身份;版本 125 增加显式语义检索配置、分片索引、模型类型与上下文快照;版本 126 为作品增加加密的远程 MCP 配置与工具目录;版本 127 创建跨作品 IM 会话、成员、消息、角色上下文与 AI 链路状态;版本 128 为退出成员冻结会话快照;版本 129 持久化 IM 历史头像版本;版本 130 为 IM 手动重试增加幂等来源;版本 131 限定迁移期回填已有 IM 头像版本;版本 132 优化 IM 会话成员范围查询;版本 133 优化 IM 历史头像授权查询;版本 134 为 IM 历史头像哈希建立表达式索引;版本 135 为 AI 提问增加批量问题与回答字段;版本 136 为 IM 链路轮次记录来源消息;版本 137 增加平台与作品系统提示词覆写开关。
|
|
12
12
|
export const ENTITY_VERSION_BASELINE_MIGRATION_VERSION = 82;
|
|
13
|
-
export const DATABASE_SCHEMA_VERSION =
|
|
13
|
+
export const DATABASE_SCHEMA_VERSION = 137;
|
|
14
14
|
export const SQLITE_IOERR_SHMSIZE = 4874;
|
|
15
15
|
const IM_SCHEMA_SQL = `
|
|
16
16
|
CREATE TABLE IF NOT EXISTS im_user_settings (
|
|
@@ -192,6 +192,7 @@ const IM_SCHEMA_SQL = `
|
|
|
192
192
|
id TEXT PRIMARY KEY,
|
|
193
193
|
chain_id TEXT NOT NULL REFERENCES im_chains(id) ON DELETE CASCADE,
|
|
194
194
|
character_membership_id TEXT NOT NULL REFERENCES im_character_memberships(id) ON DELETE CASCADE,
|
|
195
|
+
source_message_id TEXT REFERENCES im_messages(id) ON DELETE SET NULL,
|
|
195
196
|
kind TEXT NOT NULL CHECK(kind IN ('judge', 'reply', 'compact')),
|
|
196
197
|
score INTEGER CHECK(score IS NULL OR score BETWEEN 0 AND 100),
|
|
197
198
|
selected INTEGER NOT NULL DEFAULT 0 CHECK(selected IN (0, 1)),
|
|
@@ -753,6 +754,7 @@ export class Database {
|
|
|
753
754
|
CREATE TABLE IF NOT EXISTS platform_ai_settings (
|
|
754
755
|
id INTEGER PRIMARY KEY CHECK(id = 1),
|
|
755
756
|
system_prompt TEXT NOT NULL DEFAULT '',
|
|
757
|
+
system_prompt_override_enabled INTEGER NOT NULL DEFAULT 0 CHECK(system_prompt_override_enabled IN (0, 1)),
|
|
756
758
|
image_tool_model_id TEXT REFERENCES models(id) ON DELETE SET NULL,
|
|
757
759
|
stream_idle_timeout_seconds INTEGER NOT NULL DEFAULT 90 CHECK(stream_idle_timeout_seconds BETWEEN 30 AND 600),
|
|
758
760
|
updated_at TEXT NOT NULL
|
|
@@ -769,6 +771,7 @@ export class Database {
|
|
|
769
771
|
CREATE TABLE IF NOT EXISTS work_ai_settings (
|
|
770
772
|
work_id TEXT PRIMARY KEY REFERENCES works(id) ON DELETE CASCADE,
|
|
771
773
|
system_prompt TEXT NOT NULL DEFAULT '',
|
|
774
|
+
system_prompt_override_enabled INTEGER NOT NULL DEFAULT 0 CHECK(system_prompt_override_enabled IN (0, 1)),
|
|
772
775
|
daily_token_quota INTEGER CHECK(daily_token_quota IS NULL OR daily_token_quota >= 1),
|
|
773
776
|
monthly_token_quota INTEGER CHECK(monthly_token_quota IS NULL OR monthly_token_quota >= 1),
|
|
774
777
|
auto_run_enabled INTEGER NOT NULL DEFAULT 0,
|
|
@@ -5517,6 +5520,49 @@ export class Database {
|
|
|
5517
5520
|
if (foreignKeys.length > 0)
|
|
5518
5521
|
throw new Error(`数据库外键检查失败:发现 ${foreignKeys.length} 条异常记录`);
|
|
5519
5522
|
}
|
|
5523
|
+
const imChainTurnColumns = new Set(this.all("PRAGMA table_info(im_chain_turns)").map((column) => column.name));
|
|
5524
|
+
const imChainTurnSourceMessageIndexPresent = this.get("SELECT 1 AS present FROM sqlite_master WHERE type = 'index' AND name = 'idx_im_chain_turns_source_message'") !== undefined;
|
|
5525
|
+
if (!applied.has(136) || !imChainTurnColumns.has("source_message_id") || !imChainTurnSourceMessageIndexPresent) {
|
|
5526
|
+
this.transaction(() => {
|
|
5527
|
+
if (!imChainTurnColumns.has("source_message_id")) {
|
|
5528
|
+
this.run("ALTER TABLE im_chain_turns ADD COLUMN source_message_id TEXT REFERENCES im_messages(id) ON DELETE SET NULL");
|
|
5529
|
+
this.run(`UPDATE im_chain_turns
|
|
5530
|
+
SET source_message_id = (
|
|
5531
|
+
SELECT chain.trigger_message_id FROM im_chains chain WHERE chain.id = im_chain_turns.chain_id
|
|
5532
|
+
)
|
|
5533
|
+
WHERE source_message_id IS NULL`);
|
|
5534
|
+
}
|
|
5535
|
+
this.run("CREATE INDEX IF NOT EXISTS idx_im_chain_turns_source_message ON im_chain_turns(source_message_id, kind, created_at, id)");
|
|
5536
|
+
this.run("INSERT OR IGNORE INTO schema_migrations (version, applied_at) VALUES (136, ?)", new Date().toISOString());
|
|
5537
|
+
});
|
|
5538
|
+
const integrity = this.all("PRAGMA integrity_check");
|
|
5539
|
+
if (integrity.some((row) => row.integrity_check !== "ok")) {
|
|
5540
|
+
throw new Error(`数据库完整性检查失败:${integrity.map((row) => row.integrity_check).join(";")}`);
|
|
5541
|
+
}
|
|
5542
|
+
const foreignKeys = this.all("PRAGMA foreign_key_check");
|
|
5543
|
+
if (foreignKeys.length > 0)
|
|
5544
|
+
throw new Error(`数据库外键检查失败:发现 ${foreignKeys.length} 条异常记录`);
|
|
5545
|
+
}
|
|
5546
|
+
if (!applied.has(137)) {
|
|
5547
|
+
this.transaction(() => {
|
|
5548
|
+
const platformColumns = new Set(this.all("PRAGMA table_info(platform_ai_settings)").map((row) => String(row.name)));
|
|
5549
|
+
if (!platformColumns.has("system_prompt_override_enabled")) {
|
|
5550
|
+
this.run("ALTER TABLE platform_ai_settings ADD COLUMN system_prompt_override_enabled INTEGER NOT NULL DEFAULT 0 CHECK(system_prompt_override_enabled IN (0, 1))");
|
|
5551
|
+
}
|
|
5552
|
+
const workColumns = new Set(this.all("PRAGMA table_info(work_ai_settings)").map((row) => String(row.name)));
|
|
5553
|
+
if (!workColumns.has("system_prompt_override_enabled")) {
|
|
5554
|
+
this.run("ALTER TABLE work_ai_settings ADD COLUMN system_prompt_override_enabled INTEGER NOT NULL DEFAULT 0 CHECK(system_prompt_override_enabled IN (0, 1))");
|
|
5555
|
+
}
|
|
5556
|
+
this.run("INSERT OR IGNORE INTO schema_migrations (version, applied_at) VALUES (137, ?)", new Date().toISOString());
|
|
5557
|
+
});
|
|
5558
|
+
const integrity = this.all("PRAGMA integrity_check");
|
|
5559
|
+
if (integrity.some((row) => row.integrity_check !== "ok")) {
|
|
5560
|
+
throw new Error(`数据库完整性检查失败:${integrity.map((row) => row.integrity_check).join(";")}`);
|
|
5561
|
+
}
|
|
5562
|
+
const foreignKeys = this.all("PRAGMA foreign_key_check");
|
|
5563
|
+
if (foreignKeys.length > 0)
|
|
5564
|
+
throw new Error(`数据库外键检查失败:发现 ${foreignKeys.length} 条异常记录`);
|
|
5565
|
+
}
|
|
5520
5566
|
}
|
|
5521
5567
|
normalizeCharacterName(value) {
|
|
5522
5568
|
return value.normalize("NFKC").trim().replace(/\s+/gu, " ").toLocaleLowerCase("zh-CN");
|