@whispering233/ai-editor-db 0.0.29 → 0.0.32
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/connection.js +1 -1
- package/dist/connection.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/migrations/003_timepoint.js +1 -1
- package/dist/migrations/003_timepoint.js.map +1 -1
- package/dist/migrations/004_setting_tags.js +2 -2
- package/dist/migrations/004_setting_tags.js.map +1 -1
- package/dist/migrations/005_reference.js +2 -2
- package/dist/migrations/005_reference.js.map +1 -1
- package/dist/migrations/006_sessions_jsonl.d.ts +4 -0
- package/dist/migrations/006_sessions_jsonl.d.ts.map +1 -0
- package/dist/migrations/006_sessions_jsonl.js +95 -0
- package/dist/migrations/006_sessions_jsonl.js.map +1 -0
- package/dist/migrations/index.d.ts +8 -3
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +13 -5
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/legacy-sessions.d.ts +24 -0
- package/dist/migrations/legacy-sessions.d.ts.map +1 -0
- package/dist/migrations/legacy-sessions.js +69 -0
- package/dist/migrations/legacy-sessions.js.map +1 -0
- package/dist/queries/compute-state.d.ts +3 -3
- package/dist/queries/compute-state.js +5 -5
- package/dist/queries/delta.d.ts +4 -4
- package/dist/queries/delta.d.ts.map +1 -1
- package/dist/queries/delta.js +5 -5
- package/dist/queries/delta.js.map +1 -1
- package/dist/queries/entity.d.ts +11 -11
- package/dist/queries/entity.d.ts.map +1 -1
- package/dist/queries/entity.js +30 -30
- package/dist/queries/entity.js.map +1 -1
- package/dist/queries/migration.d.ts +13 -9
- package/dist/queries/migration.d.ts.map +1 -1
- package/dist/queries/migration.js +16 -11
- package/dist/queries/migration.js.map +1 -1
- package/dist/queries/outline-ops.d.ts +11 -11
- package/dist/queries/outline-ops.d.ts.map +1 -1
- package/dist/queries/outline-ops.js +15 -15
- package/dist/queries/outline-ops.js.map +1 -1
- package/dist/queries/relation.d.ts +6 -6
- package/dist/queries/relation.d.ts.map +1 -1
- package/dist/queries/relation.js +9 -9
- package/dist/queries/relation.js.map +1 -1
- package/dist/queries/trash.d.ts +3 -3
- package/dist/queries/trash.d.ts.map +1 -1
- package/dist/queries/trash.js +3 -3
- package/dist/queries/trash.js.map +1 -1
- package/dist/query-db.js +1 -1
- package/dist/query-db.js.map +1 -1
- package/dist/schema.d.ts +5 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +6 -4
- package/dist/schema.js.map +1 -1
- package/dist/storage/atomic.d.ts +1 -1
- package/dist/storage/atomic.js +3 -3
- package/dist/storage/atomic.js.map +1 -1
- package/dist/storage/outline.js +1 -1
- package/dist/storage/project.d.ts +2 -2
- package/dist/storage/project.js +3 -3
- package/dist/storage/project.js.map +1 -1
- package/dist/tables.d.ts +3 -162
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +14 -40
- package/dist/tables.js.map +1 -1
- package/package.json +3 -4
- package/dist/queries/chat.d.ts +0 -85
- package/dist/queries/chat.d.ts.map +0 -1
- package/dist/queries/chat.js +0 -248
- package/dist/queries/chat.js.map +0 -1
package/dist/queries/trash.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EntityType } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import { type Db } from "../connection.js";
|
|
3
|
-
/** 回收站实体条目(GET /api/v1/trash entities
|
|
3
|
+
/** 回收站实体条目(GET /api/v1/trash entities 项) */
|
|
4
4
|
export interface DeletedEntityInfo {
|
|
5
5
|
id: string;
|
|
6
6
|
type: EntityType;
|
|
@@ -14,7 +14,7 @@ export interface DeletedEntityInfo {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function listDeletedEntities(db: Db): DeletedEntityInfo[];
|
|
16
16
|
/**
|
|
17
|
-
* 还原软删实体(POST /api/v1/trash/entity/:type/:id/restore
|
|
17
|
+
* 还原软删实体(POST /api/v1/trash/entity/:type/:id/restore):
|
|
18
18
|
* - 自身:deleted_at 置 NULL + **updated_at 刷新**(与常规编辑一致,
|
|
19
19
|
* 保证 提案快照比对语义统一——还原后基于旧快照的提案必然 PROPOSAL_STALE)
|
|
20
20
|
* - 关联关系:relation_records(source_id = id **或** target_id = id)deleted_at 置 NULL——
|
|
@@ -33,7 +33,7 @@ export declare function restoreEntity(db: Db, type: EntityType, id: string): {
|
|
|
33
33
|
restoredDeltas: number;
|
|
34
34
|
} | null;
|
|
35
35
|
/**
|
|
36
|
-
* 物理清除软删实体(DELETE /api/v1/trash/entity/:type/:id
|
|
36
|
+
* 物理清除软删实体(DELETE /api/v1/trash/entity/:type/:id):
|
|
37
37
|
* 不可恢复——DELETE 实体本体 + 关联 relations(source_id = id 或 target_id = id)+
|
|
38
38
|
* deltas(target_id = id)。单库事务。
|
|
39
39
|
* 幂等:实体不存在或类型不匹配 → 返回 null 且无副作用。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trash.d.ts","sourceRoot":"","sources":["../../src/queries/trash.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE,OAAO,EAAmB,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG5D,
|
|
1
|
+
{"version":3,"file":"trash.d.ts","sourceRoot":"","sources":["../../src/queries/trash.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlE,OAAO,EAAmB,KAAK,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAG5D,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,iBAAiB,EAAE,CAU/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,MAAM,GACT;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyB9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAU7E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAelG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAQ/D"}
|
package/dist/queries/trash.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// 级联 helper(cascadeRestore/cascadePurge)自 server/routes/outline.ts 下沉(trash.ts 注释
|
|
13
13
|
// 留痕的「S3 建模块后可下沉」项,S4.1 兑现):参数与 SQL 语义不变,仅补充单库事务包裹。
|
|
14
14
|
//
|
|
15
|
-
//
|
|
15
|
+
// (15.2 试点):**全部查询经 queryDb 走 drizzle 构建器**(本卡为试点模块,
|
|
16
16
|
// 混合风格 4A:本模块均为单一表条件更新/删除/查询,builder 表达清晰,无 sql 模板需求)。
|
|
17
17
|
// 语义逐句对照旧实现(git show d510f25^:packages/db/src/queries/trash.ts):
|
|
18
18
|
// - deleted_at IS NOT NULL ↔ isNotNull;排序 desc(deleted_at) ↔ ORDER BY deleted_at DESC
|
|
@@ -43,7 +43,7 @@ export function listDeletedEntities(db) {
|
|
|
43
43
|
return rows.map((r) => ({ id: r.id, type: r.type, name: r.name, deletedAt: r.deletedAt }));
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* 还原软删实体(POST /api/v1/trash/entity/:type/:id/restore
|
|
46
|
+
* 还原软删实体(POST /api/v1/trash/entity/:type/:id/restore):
|
|
47
47
|
* - 自身:deleted_at 置 NULL + **updated_at 刷新**(与常规编辑一致,
|
|
48
48
|
* 保证 提案快照比对语义统一——还原后基于旧快照的提案必然 PROPOSAL_STALE)
|
|
49
49
|
* - 关联关系:relation_records(source_id = id **或** target_id = id)deleted_at 置 NULL——
|
|
@@ -85,7 +85,7 @@ export function restoreEntity(db, type, id) {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* 物理清除软删实体(DELETE /api/v1/trash/entity/:type/:id
|
|
88
|
+
* 物理清除软删实体(DELETE /api/v1/trash/entity/:type/:id):
|
|
89
89
|
* 不可恢复——DELETE 实体本体 + 关联 relations(source_id = id 或 target_id = id)+
|
|
90
90
|
* deltas(target_id = id)。单库事务。
|
|
91
91
|
* 幂等:实体不存在或类型不匹配 → 返回 null 且无副作用。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trash.js","sourceRoot":"","sources":["../../src/queries/trash.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,EAAE;AACF,eAAe;AACf,4DAA4D;AAC5D,sCAAsC;AACtC,0CAA0C;AAC1C,4CAA4C;AAC5C,8DAA8D;AAC9D,+BAA+B;AAC/B,EAAE;AACF,kFAAkF;AAClF,oDAAoD;AACpD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"trash.js","sourceRoot":"","sources":["../../src/queries/trash.ts"],"names":[],"mappings":"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"}
|
package/dist/query-db.js
CHANGED
package/dist/query-db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-db.js","sourceRoot":"","sources":["../src/query-db.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"query-db.js","sourceRoot":"","sources":["../src/query-db.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,wDAAwD;AACxD,8CAA8C;AAC9C,EAAE;AACF,wDAAwD;AACxD,2DAA2D;AAC3D,6BAA6B;AAC7B,0EAA0E;AAC1E,iDAAiD;AAEjD,OAAO,EAAE,OAAO,EAA8B,MAAM,4BAA4B,CAAC;AAGjF,MAAM,KAAK,GAAG,IAAI,OAAO,EAA4C,CAAC;AAEtE,oEAAoE;AACpE,MAAM,UAAU,OAAO,CAAC,EAAqB;IAC3C,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type Database from "better-sqlite3";
|
|
2
2
|
/**
|
|
3
3
|
* data.db 当前 schema 版本(SCHEMA_VERSION = 2 起由增量迁移驱动)。
|
|
4
|
-
* v1 → v2
|
|
4
|
+
* v1 → v2(时间轴):entities 表 type CHECK 扩为 5 种(含 event)+ 新增
|
|
5
5
|
* sort_order 列——旧 v1 库经 migrations/002_event_timeline.ts 迁移,新库直接建 v2 结构。
|
|
6
6
|
* v2 → v3(G2 时间标签点实体化):entities 表 type CHECK 扩为 6 种
|
|
7
7
|
* (含 timepoint)+ 旧 event.data.time_label 由 migrations/003_timepoint.ts 迁移为
|
|
8
8
|
* timepoint 实体 + occurs_at 挂载关系(从 event.data 移除 time_label)。
|
|
9
|
-
* v3 → v4(
|
|
9
|
+
* v3 → v4(K2 修订,2026-08):**无 DDL**——仅 entities.data JSON 数据迁移
|
|
10
10
|
* (setting 的旧 rules 分类值复制到 data.tags 并移除 rules,migrations/004_setting_tags.ts)。
|
|
11
|
+
* v5 → v6(对话历史出库):chat_messages 导出为 `sessions/<id>.jsonl` 后 DROP 表
|
|
12
|
+
* (migrations/006_sessions_jsonl.ts;会话从此不入库)。
|
|
11
13
|
*/
|
|
12
|
-
export declare const SCHEMA_VERSION =
|
|
14
|
+
export declare const SCHEMA_VERSION = 6;
|
|
13
15
|
/**
|
|
14
16
|
* 建表:执行全部 DDL(CREATE TABLE/INDEX IF NOT EXISTS,定义于 tables.ts),幂等,可重复调用。
|
|
15
17
|
* 打开数据库后由 connection.openDatabase 自动调用。
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAExD;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAK3E"}
|
package/dist/schema.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
// @whispering233/ai-editor-db schema 版本管理与建表入口(T2.1)
|
|
2
2
|
//
|
|
3
3
|
// 建表 DDL 常量已迁至 tables.ts(双份声明 + 对齐断言),本文件只保留版本工具。
|
|
4
|
-
//
|
|
4
|
+
// 时间约定:所有时间列统一 ISO 8601 字符串、由应用层写入,
|
|
5
5
|
// 不使用 SQLite 内置 datetime('now')——回收站按 deleted_at 排序需跨 SQLite 与 outline.json 统一格式。
|
|
6
6
|
import { CREATE_TABLES_SQL } from "./tables.js";
|
|
7
7
|
/**
|
|
8
8
|
* data.db 当前 schema 版本(SCHEMA_VERSION = 2 起由增量迁移驱动)。
|
|
9
|
-
* v1 → v2
|
|
9
|
+
* v1 → v2(时间轴):entities 表 type CHECK 扩为 5 种(含 event)+ 新增
|
|
10
10
|
* sort_order 列——旧 v1 库经 migrations/002_event_timeline.ts 迁移,新库直接建 v2 结构。
|
|
11
11
|
* v2 → v3(G2 时间标签点实体化):entities 表 type CHECK 扩为 6 种
|
|
12
12
|
* (含 timepoint)+ 旧 event.data.time_label 由 migrations/003_timepoint.ts 迁移为
|
|
13
13
|
* timepoint 实体 + occurs_at 挂载关系(从 event.data 移除 time_label)。
|
|
14
|
-
* v3 → v4(
|
|
14
|
+
* v3 → v4(K2 修订,2026-08):**无 DDL**——仅 entities.data JSON 数据迁移
|
|
15
15
|
* (setting 的旧 rules 分类值复制到 data.tags 并移除 rules,migrations/004_setting_tags.ts)。
|
|
16
|
+
* v5 → v6(对话历史出库):chat_messages 导出为 `sessions/<id>.jsonl` 后 DROP 表
|
|
17
|
+
* (migrations/006_sessions_jsonl.ts;会话从此不入库)。
|
|
16
18
|
*/
|
|
17
|
-
export const SCHEMA_VERSION =
|
|
19
|
+
export const SCHEMA_VERSION = 6; // +会话 JSONL(006_sessions_jsonl.ts 导出后 DROP 表)
|
|
18
20
|
/**
|
|
19
21
|
* 建表:执行全部 DDL(CREATE TABLE/INDEX IF NOT EXISTS,定义于 tables.ts),幂等,可重复调用。
|
|
20
22
|
* 打开数据库后由 connection.openDatabase 自动调用。
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,kDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,kDAAkD;AAClD,oCAAoC;AACpC,kFAAkF;AAGlF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,8CAA8C;AAE/E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAqB;IAChD,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,EAAqB;IAClD,OAAO,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAW,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAqB,EAAE,OAAe;IACnE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/storage/atomic.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare function nowIso(): string;
|
|
|
28
28
|
*/
|
|
29
29
|
export declare function writeJsonAtomic(filePath: string, data: unknown): void;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* 文本文件原子写(同款流程:临时文件 + fsync + rename)。
|
|
32
32
|
* 与 writeJsonAtomic 的区别:内容为**原始文本**(不 JSON 序列化)—— 等
|
|
33
33
|
* 非 JSON 数据文件用(项目规则文件写入走原子写,防崩溃/断电损坏)。
|
|
34
34
|
*
|
package/dist/storage/atomic.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @whispering233/ai-editor-db JSON 原子写核心(T2.2)
|
|
2
2
|
//
|
|
3
3
|
// 「写临时文件 → fsync → rename 覆盖」,禁止直接 writeFileSync 覆盖原文件;
|
|
4
|
-
|
|
5
|
-
//
|
|
4
|
+
//:project.json 同款流程。
|
|
5
|
+
// 时间约定:所有时间由应用层写入(ISO 8601),模块内不生成时间。
|
|
6
6
|
import { closeSync, fsyncSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { basename, dirname, join } from "node:path";
|
|
8
8
|
/**
|
|
@@ -98,7 +98,7 @@ function fsyncDir(dir) {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
101
|
+
* 文本文件原子写(同款流程:临时文件 + fsync + rename)。
|
|
102
102
|
* 与 writeJsonAtomic 的区别:内容为**原始文本**(不 JSON 序列化)—— 等
|
|
103
103
|
* 非 JSON 数据文件用(项目规则文件写入走原子写,防崩溃/断电损坏)。
|
|
104
104
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,wDAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../src/storage/atomic.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/outline.js
CHANGED
|
@@ -40,7 +40,7 @@ export function readOutlineFile(dir) {
|
|
|
40
40
|
return validateOutlineFile(parsed);
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* 校验 outline.json
|
|
43
|
+
* 校验 outline.json 顶层结构(读时校验):
|
|
44
44
|
* 顶层必须是 { id:"root", type:"root", schema_version:number, children:[] }。
|
|
45
45
|
* 节点级字段(title/updated_at 等)不逐一校验——文件格式演进由 schema_version
|
|
46
46
|
* 判定,此处只拦「完全不是大纲树」的脏数据。
|
|
@@ -19,7 +19,7 @@ export declare const AGENTS_FILE_NAME = "AGENTS.md";
|
|
|
19
19
|
*/
|
|
20
20
|
export declare function readProjectFile(dir: string): ProjectFileConfig | null;
|
|
21
21
|
/**
|
|
22
|
-
* 原子写 project.json
|
|
22
|
+
* 原子写 project.json(同款流程:临时文件 + fsync + rename)。
|
|
23
23
|
* schema_version 随 config 原样写入——与 outline.json 同步写入是调用方职责。
|
|
24
24
|
*/
|
|
25
25
|
export declare function writeProjectFile(dir: string, config: ProjectFileConfig): void;
|
|
@@ -35,7 +35,7 @@ export declare function writeProjectFile(dir: string, config: ProjectFileConfig)
|
|
|
35
35
|
*/
|
|
36
36
|
export declare function readAgentsFile(dir: string): string | null;
|
|
37
37
|
/**
|
|
38
|
-
* 原子写项目规则文件
|
|
38
|
+
* 原子写项目规则文件 (同款流程:临时文件 + fsync + rename)。
|
|
39
39
|
* 文件不存在时自动创建;内容**整体替换**(空串 = 清空规则,保留空文件不删除——exists 语义稳定)。
|
|
40
40
|
*
|
|
41
41
|
* @param dir 项目根目录
|
package/dist/storage/project.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// id/name/language/prompt/schema_version/current_position/created_at/updated_at,
|
|
4
4
|
// 文件写入走 原子写同款流程(第 186 行),DeepSeek key 绝不写入本文件。
|
|
5
|
-
// (2026-08
|
|
5
|
+
// (2026-08):项目规则文件读写也收敛于此——
|
|
6
6
|
// 项目规则唯一事实源 = 项目目录 (取代 project.json `prompt` 字段,不再读写)。
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { statSync } from "node:fs";
|
|
@@ -50,7 +50,7 @@ function validateProjectFile(parsed) {
|
|
|
50
50
|
return parsed;
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
53
|
-
* 原子写 project.json
|
|
53
|
+
* 原子写 project.json(同款流程:临时文件 + fsync + rename)。
|
|
54
54
|
* schema_version 随 config 原样写入——与 outline.json 同步写入是调用方职责。
|
|
55
55
|
*/
|
|
56
56
|
export function writeProjectFile(dir, config) {
|
|
@@ -71,7 +71,7 @@ export function readAgentsFile(dir) {
|
|
|
71
71
|
return readTextFileOrNull(join(dir, AGENTS_FILE_NAME));
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
|
-
* 原子写项目规则文件
|
|
74
|
+
* 原子写项目规则文件 (同款流程:临时文件 + fsync + rename)。
|
|
75
75
|
* 文件不存在时自动创建;内容**整体替换**(空串 = 清空规则,保留空文件不删除——exists 语义稳定)。
|
|
76
76
|
*
|
|
77
77
|
* @param dir 项目根目录
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/storage/project.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,+CAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/storage/project.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,+CAA+C;AAC/C,4BAA4B;AAC5B,uDAAuD;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC7D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,MAAe;IAC1C,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,OAAQ,MAAkC,CAAC,EAAE,KAAK,QAAQ;QAC1D,OAAQ,MAAkC,CAAC,IAAI,KAAK,QAAQ;QAC5D,OAAQ,MAAkC,CAAC,cAAc,KAAK,QAAQ,EACtE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,MAA2B,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,MAAyB;IACrE,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,mCAAmC;AAEnC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,OAAe;IAC1D,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/tables.d.ts
CHANGED
|
@@ -550,169 +550,10 @@ export declare const deltaRecords: import("drizzle-orm/sqlite-core").SQLiteTable
|
|
|
550
550
|
};
|
|
551
551
|
dialect: "sqlite";
|
|
552
552
|
}>;
|
|
553
|
-
/** chat_messages
|
|
554
|
-
export declare const chatMessages: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
555
|
-
name: "chat_messages";
|
|
556
|
-
schema: undefined;
|
|
557
|
-
columns: {
|
|
558
|
-
id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
559
|
-
name: "id";
|
|
560
|
-
tableName: "chat_messages";
|
|
561
|
-
dataType: "string";
|
|
562
|
-
columnType: "SQLiteText";
|
|
563
|
-
data: string;
|
|
564
|
-
driverParam: string;
|
|
565
|
-
notNull: true;
|
|
566
|
-
hasDefault: false;
|
|
567
|
-
isPrimaryKey: true;
|
|
568
|
-
isAutoincrement: false;
|
|
569
|
-
hasRuntimeDefault: false;
|
|
570
|
-
enumValues: [string, ...string[]];
|
|
571
|
-
baseColumn: never;
|
|
572
|
-
identity: undefined;
|
|
573
|
-
generated: undefined;
|
|
574
|
-
}, {}, {
|
|
575
|
-
length: number | undefined;
|
|
576
|
-
}>;
|
|
577
|
-
session_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
578
|
-
name: "session_id";
|
|
579
|
-
tableName: "chat_messages";
|
|
580
|
-
dataType: "string";
|
|
581
|
-
columnType: "SQLiteText";
|
|
582
|
-
data: string;
|
|
583
|
-
driverParam: string;
|
|
584
|
-
notNull: true;
|
|
585
|
-
hasDefault: false;
|
|
586
|
-
isPrimaryKey: false;
|
|
587
|
-
isAutoincrement: false;
|
|
588
|
-
hasRuntimeDefault: false;
|
|
589
|
-
enumValues: [string, ...string[]];
|
|
590
|
-
baseColumn: never;
|
|
591
|
-
identity: undefined;
|
|
592
|
-
generated: undefined;
|
|
593
|
-
}, {}, {
|
|
594
|
-
length: number | undefined;
|
|
595
|
-
}>;
|
|
596
|
-
project_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
597
|
-
name: "project_id";
|
|
598
|
-
tableName: "chat_messages";
|
|
599
|
-
dataType: "string";
|
|
600
|
-
columnType: "SQLiteText";
|
|
601
|
-
data: string;
|
|
602
|
-
driverParam: string;
|
|
603
|
-
notNull: true;
|
|
604
|
-
hasDefault: false;
|
|
605
|
-
isPrimaryKey: false;
|
|
606
|
-
isAutoincrement: false;
|
|
607
|
-
hasRuntimeDefault: false;
|
|
608
|
-
enumValues: [string, ...string[]];
|
|
609
|
-
baseColumn: never;
|
|
610
|
-
identity: undefined;
|
|
611
|
-
generated: undefined;
|
|
612
|
-
}, {}, {
|
|
613
|
-
length: number | undefined;
|
|
614
|
-
}>;
|
|
615
|
-
role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
616
|
-
name: "role";
|
|
617
|
-
tableName: "chat_messages";
|
|
618
|
-
dataType: "string";
|
|
619
|
-
columnType: "SQLiteText";
|
|
620
|
-
data: string;
|
|
621
|
-
driverParam: string;
|
|
622
|
-
notNull: true;
|
|
623
|
-
hasDefault: false;
|
|
624
|
-
isPrimaryKey: false;
|
|
625
|
-
isAutoincrement: false;
|
|
626
|
-
hasRuntimeDefault: false;
|
|
627
|
-
enumValues: [string, ...string[]];
|
|
628
|
-
baseColumn: never;
|
|
629
|
-
identity: undefined;
|
|
630
|
-
generated: undefined;
|
|
631
|
-
}, {}, {
|
|
632
|
-
length: number | undefined;
|
|
633
|
-
}>;
|
|
634
|
-
content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
635
|
-
name: "content";
|
|
636
|
-
tableName: "chat_messages";
|
|
637
|
-
dataType: "string";
|
|
638
|
-
columnType: "SQLiteText";
|
|
639
|
-
data: string;
|
|
640
|
-
driverParam: string;
|
|
641
|
-
notNull: false;
|
|
642
|
-
hasDefault: false;
|
|
643
|
-
isPrimaryKey: false;
|
|
644
|
-
isAutoincrement: false;
|
|
645
|
-
hasRuntimeDefault: false;
|
|
646
|
-
enumValues: [string, ...string[]];
|
|
647
|
-
baseColumn: never;
|
|
648
|
-
identity: undefined;
|
|
649
|
-
generated: undefined;
|
|
650
|
-
}, {}, {
|
|
651
|
-
length: number | undefined;
|
|
652
|
-
}>;
|
|
653
|
-
tool_calls: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
654
|
-
name: "tool_calls";
|
|
655
|
-
tableName: "chat_messages";
|
|
656
|
-
dataType: "string";
|
|
657
|
-
columnType: "SQLiteText";
|
|
658
|
-
data: string;
|
|
659
|
-
driverParam: string;
|
|
660
|
-
notNull: false;
|
|
661
|
-
hasDefault: false;
|
|
662
|
-
isPrimaryKey: false;
|
|
663
|
-
isAutoincrement: false;
|
|
664
|
-
hasRuntimeDefault: false;
|
|
665
|
-
enumValues: [string, ...string[]];
|
|
666
|
-
baseColumn: never;
|
|
667
|
-
identity: undefined;
|
|
668
|
-
generated: undefined;
|
|
669
|
-
}, {}, {
|
|
670
|
-
length: number | undefined;
|
|
671
|
-
}>;
|
|
672
|
-
tool_call_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
673
|
-
name: "tool_call_id";
|
|
674
|
-
tableName: "chat_messages";
|
|
675
|
-
dataType: "string";
|
|
676
|
-
columnType: "SQLiteText";
|
|
677
|
-
data: string;
|
|
678
|
-
driverParam: string;
|
|
679
|
-
notNull: false;
|
|
680
|
-
hasDefault: false;
|
|
681
|
-
isPrimaryKey: false;
|
|
682
|
-
isAutoincrement: false;
|
|
683
|
-
hasRuntimeDefault: false;
|
|
684
|
-
enumValues: [string, ...string[]];
|
|
685
|
-
baseColumn: never;
|
|
686
|
-
identity: undefined;
|
|
687
|
-
generated: undefined;
|
|
688
|
-
}, {}, {
|
|
689
|
-
length: number | undefined;
|
|
690
|
-
}>;
|
|
691
|
-
created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
692
|
-
name: "created_at";
|
|
693
|
-
tableName: "chat_messages";
|
|
694
|
-
dataType: "string";
|
|
695
|
-
columnType: "SQLiteText";
|
|
696
|
-
data: string;
|
|
697
|
-
driverParam: string;
|
|
698
|
-
notNull: true;
|
|
699
|
-
hasDefault: false;
|
|
700
|
-
isPrimaryKey: false;
|
|
701
|
-
isAutoincrement: false;
|
|
702
|
-
hasRuntimeDefault: false;
|
|
703
|
-
enumValues: [string, ...string[]];
|
|
704
|
-
baseColumn: never;
|
|
705
|
-
identity: undefined;
|
|
706
|
-
generated: undefined;
|
|
707
|
-
}, {}, {
|
|
708
|
-
length: number | undefined;
|
|
709
|
-
}>;
|
|
710
|
-
};
|
|
711
|
-
dialect: "sqlite";
|
|
712
|
-
}>;
|
|
553
|
+
/** chat_messages:已删除(迁移 006:对话历史出库为 `sessions/*.jsonl`,表已 DROP) */
|
|
713
554
|
/**
|
|
714
|
-
*
|
|
555
|
+
* 三张业务表 + 索引的建表 SQL(幂等:CREATE TABLE/INDEX IF NOT EXISTS)——建表执行的事实来源。
|
|
715
556
|
* 与上方 sqliteTable 定义必须同步(schema.test.ts 对齐断言覆盖)。
|
|
716
557
|
*/
|
|
717
|
-
export declare const CREATE_TABLES_SQL = "\n-- entities\uFF1A\u5B9E\u4F53\u8868\uFF08\u4EBA\u7269/\u8BBE\u5B9A/\u5730\u70B9/\u4F0F\u7B14/\u65F6\u95F4\u8F74\u4E8B\u4EF6/\u65F6\u95F4\u6807\u7B7E\u70B9\uFF09\nCREATE TABLE IF NOT EXISTS entities (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL CHECK(type IN ('character', 'setting', 'location', 'hook', 'event', 'timepoint', 'reference')),\n name TEXT NOT NULL,\n data TEXT NOT NULL DEFAULT '{}', -- JSON: \u5404\u7C7B\u578B\u7684\u4E13\u5C5E\u5B57\u6BB5\n sort_order INTEGER, -- \u65F6\u95F4\u8F74\u7EBF\u6027\u5E8F\
|
|
558
|
+
export declare const CREATE_TABLES_SQL = "\n-- entities\uFF1A\u5B9E\u4F53\u8868\uFF08\u4EBA\u7269/\u8BBE\u5B9A/\u5730\u70B9/\u4F0F\u7B14/\u65F6\u95F4\u8F74\u4E8B\u4EF6/\u65F6\u95F4\u6807\u7B7E\u70B9\uFF09\nCREATE TABLE IF NOT EXISTS entities (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL CHECK(type IN ('character', 'setting', 'location', 'hook', 'event', 'timepoint', 'reference')),\n name TEXT NOT NULL,\n data TEXT NOT NULL DEFAULT '{}', -- JSON: \u5404\u7C7B\u578B\u7684\u4E13\u5C5E\u5B57\u6BB5\n sort_order INTEGER, -- \u65F6\u95F4\u8F74\u7EBF\u6027\u5E8F\uFF08G2 \u4FEE\u8BA2\uFF09\uFF1Aevent \u4E0E timepoint \u5404\u7C7B\u578B\u5185\u7EBF\u6027\uFF08\u5404\u81EA 0..n-1\uFF09\uFF0C\u5176\u4F59\u7C7B\u578B\u6052\u4E3A NULL\n created_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\n updated_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\uFF08\u63D0\u6848\u5FEB\u7167\u6BD4\u5BF9\uFF09\n deleted_at TEXT -- \u8F6F\u5220\u6807\u8BB0\uFF0CNULL \u8868\u793A\u672A\u5220\u9664\uFF1B\u975E NULL \u65F6\u8BE5\u5B9E\u4F53\u8FDB\u5165\u56DE\u6536\u7AD9\uFF0C\u672C\u4F53\u4FDD\u7559\u53EF\u8FD8\u539F\n);\n\n-- relation_records\uFF1A\u901A\u7528\u5173\u7CFB\u8868\nCREATE TABLE IF NOT EXISTS relation_records (\n id TEXT PRIMARY KEY,\n source_type TEXT NOT NULL, -- \u7AEF\u70B9\u7C7B\u578B\uFF1A\u5B9E\u4F53 'character'|'setting'|'location'|'hook'|'event'\uFF0C\u5927\u7EB2\u8282\u70B9 'outline_node'\n source_id TEXT NOT NULL,\n target_type TEXT NOT NULL,\n target_id TEXT NOT NULL,\n relation_type TEXT NOT NULL,\n metadata TEXT, -- JSON \u6269\u5C55\u5143\u6570\u636E\n created_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\n updated_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\uFF08\u63D0\u6848\u5FEB\u7167\u6BD4\u5BF9\uFF1B\u8F6F\u5220/\u8FD8\u539F\u4EA6\u66F4\u65B0\uFF09\n deleted_at TEXT -- \u7EA7\u8054\u8F6F\u5220\u6807\u8BB0\uFF1A\u4EC5\u5B9E\u4F53/\u8282\u70B9\u7EA7\u8054\u5220\u9664\u65F6\u5199\u5165\uFF1B\n -- \u624B\u52A8\u5220\u9664\u5173\u7CFB = \u7269\u7406\u5220\uFF08\u4E0D\u7F6E deleted_at\uFF0C\u4E0D\u8FDB\u5165\u56DE\u6536\u7AD9\uFF09\n);\n\n-- \u7D22\u5F15\uFF08\u8865\uFF09\uFF1Ak \u8DF3\u904D\u5386\u4E0E\u9AD8\u9891\u5173\u7CFB\u67E5\u8BE2\uFF08\u90E8\u5206\u7D22\u5F15\uFF0C\u4EC5\u8986\u76D6\u672A\u8F6F\u5220\u884C\uFF09\nCREATE INDEX IF NOT EXISTS idx_relation_source ON relation_records(source_id) WHERE deleted_at IS NULL;\nCREATE INDEX IF NOT EXISTS idx_relation_target ON relation_records(target_id) WHERE deleted_at IS NULL;\nCREATE INDEX IF NOT EXISTS idx_relation_type ON relation_records(relation_type) WHERE deleted_at IS NULL;\n\n-- delta_records\uFF1A\u5C5E\u6027\u53D8\u66F4\u8868\nCREATE TABLE IF NOT EXISTS delta_records (\n id TEXT PRIMARY KEY,\n node_id TEXT NOT NULL, -- \u89E6\u53D1\u53D8\u66F4\u7684\u5927\u7EB2\u8282\u70B9\n target_type TEXT NOT NULL,\n target_id TEXT NOT NULL,\n changes TEXT NOT NULL, -- JSON: [{field, op, from?, to?, value?}]\n description TEXT NOT NULL, -- \u4EBA\u7C7B\u53EF\u8BFB\u63CF\u8FF0\n \"order\" INTEGER NOT NULL DEFAULT 0, -- \u540C\u4E00\u8282\u70B9\u5185\u591A\u4E2A Delta \u7684\u6392\u5E8F\uFF08\u5168\u5C40\u5355\u8C03\u9012\u589E\uFF0C\u670D\u52A1\u7AEF\u751F\u6210\uFF09\n created_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\n updated_at TEXT NOT NULL, -- ISO 8601\uFF0C\u5E94\u7528\u5C42\u5199\u5165\uFF08\u63D0\u6848\u5FEB\u7167\u6BD4\u5BF9\uFF09\n deleted_at TEXT -- \u7EA7\u8054\u8F6F\u5220\u6807\u8BB0\uFF1A\u4EC5\u5B9E\u4F53/\u8282\u70B9\u7EA7\u8054\u5220\u9664\u65F6\u5199\u5165\u3002\n -- \u53EF\u89C1\u6027\u8054\u52A8\u89E6\u53D1\u8282\u70B9\u4E0E\u76EE\u6807\u5B9E\u4F53\uFF1A\u4EFB\u4E00\u7AEF\u8F6F\u5220\u5373\u4E0D\u53EF\u89C1\n);\n";
|
|
718
559
|
//# sourceMappingURL=tables.d.ts.map
|
package/dist/tables.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAiBA,iDAAiD;AACjD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBpB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB3B,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAEF,mEAAmE;AAEnE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,u+HA+C7B,CAAC"}
|
package/dist/tables.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
// @whispering233/ai-editor-db
|
|
1
|
+
// @whispering233/ai-editor-db 表结构声明
|
|
2
2
|
//
|
|
3
3
|
// **双份声明**:sqliteTable 定义(查询构建/行类型推断用)+ 同文件 CREATE_TABLES_SQL 常量
|
|
4
4
|
// (建表执行用,connection.openDatabase → schema.createTables 执行)——两处必须同步,
|
|
5
5
|
// 由 schema.test.ts「DDL 与定义对齐」断言锁住(列名/类型/notNull/主键机械比对)。
|
|
6
6
|
//
|
|
7
7
|
// 边界:
|
|
8
|
-
// - JSON 列(data/changes/metadata
|
|
8
|
+
// - JSON 列(data/changes/metadata)一律 **text 模式**,不用 drizzle `mode:'json'`——
|
|
9
9
|
// drizzle 的 json mode 对坏 JSON 直接 JSON.parse 抛错,会打挂整表查询;
|
|
10
10
|
// 防御在 queries 的 parseDataColumn 行映射层(坏行返回 {})。
|
|
11
|
+
// - 对话历史**不在库内**(项目目录 `sessions/*.jsonl`,见 sessions.ts / docs/db/schema.md)。
|
|
11
12
|
// - 标识符由 drizzle escapeName 双引号包裹输出(`"order"` 关键字列安全,无需特殊转义)。
|
|
12
13
|
// - CHECK 约束与部分索引两处都声明(drizzle 侧供对齐核对;真实建表以 DDL 常量为准)。
|
|
13
14
|
import { sql } from "drizzle-orm";
|
|
@@ -19,7 +20,7 @@ export const entities = sqliteTable("entities", {
|
|
|
19
20
|
name: text("name").notNull(),
|
|
20
21
|
// data 列保持 text 模式(坏 JSON 防御在行映射层,不用 drizzle json mode)
|
|
21
22
|
data: text("data").notNull().default("{}"),
|
|
22
|
-
// 时间轴线性序(
|
|
23
|
+
// 时间轴线性序(G2 修订):event 与 timepoint 各类型内线性(各自 0..n-1),其余类型恒为 NULL
|
|
23
24
|
sort_order: integer("sort_order"),
|
|
24
25
|
created_at: text("created_at").notNull(),
|
|
25
26
|
updated_at: text("updated_at").notNull(),
|
|
@@ -58,22 +59,9 @@ export const deltaRecords = sqliteTable("delta_records", {
|
|
|
58
59
|
updated_at: text("updated_at").notNull(),
|
|
59
60
|
deleted_at: text("deleted_at"),
|
|
60
61
|
});
|
|
61
|
-
/** chat_messages
|
|
62
|
-
export const chatMessages = sqliteTable("chat_messages", {
|
|
63
|
-
id: text("id").primaryKey(),
|
|
64
|
-
session_id: text("session_id").notNull(),
|
|
65
|
-
project_id: text("project_id").notNull(), // 会话按项目隔离
|
|
66
|
-
role: text("role").notNull(),
|
|
67
|
-
content: text("content"),
|
|
68
|
-
tool_calls: text("tool_calls"), // JSON(text 模式)
|
|
69
|
-
tool_call_id: text("tool_call_id"),
|
|
70
|
-
created_at: text("created_at").notNull(),
|
|
71
|
-
}, (t) => [
|
|
72
|
-
check("chat_messages_role_check", sql `${t.role} IN ('user', 'assistant', 'tool')`),
|
|
73
|
-
index("idx_chat_session").on(t.session_id, t.created_at),
|
|
74
|
-
]);
|
|
62
|
+
/** chat_messages:已删除(迁移 006:对话历史出库为 `sessions/*.jsonl`,表已 DROP) */
|
|
75
63
|
/**
|
|
76
|
-
*
|
|
64
|
+
* 三张业务表 + 索引的建表 SQL(幂等:CREATE TABLE/INDEX IF NOT EXISTS)——建表执行的事实来源。
|
|
77
65
|
* 与上方 sqliteTable 定义必须同步(schema.test.ts 对齐断言覆盖)。
|
|
78
66
|
*/
|
|
79
67
|
export const CREATE_TABLES_SQL = `
|
|
@@ -83,10 +71,10 @@ CREATE TABLE IF NOT EXISTS entities (
|
|
|
83
71
|
type TEXT NOT NULL CHECK(type IN ('character', 'setting', 'location', 'hook', 'event', 'timepoint', 'reference')),
|
|
84
72
|
name TEXT NOT NULL,
|
|
85
73
|
data TEXT NOT NULL DEFAULT '{}', -- JSON: 各类型的专属字段
|
|
86
|
-
sort_order INTEGER, -- 时间轴线性序(
|
|
74
|
+
sort_order INTEGER, -- 时间轴线性序(G2 修订):event 与 timepoint 各类型内线性(各自 0..n-1),其余类型恒为 NULL
|
|
87
75
|
created_at TEXT NOT NULL, -- ISO 8601,应用层写入
|
|
88
|
-
updated_at TEXT NOT NULL, -- ISO 8601
|
|
89
|
-
deleted_at TEXT --
|
|
76
|
+
updated_at TEXT NOT NULL, -- ISO 8601,应用层写入(提案快照比对)
|
|
77
|
+
deleted_at TEXT -- 软删标记,NULL 表示未删除;非 NULL 时该实体进入回收站,本体保留可还原
|
|
90
78
|
);
|
|
91
79
|
|
|
92
80
|
-- relation_records:通用关系表
|
|
@@ -99,8 +87,8 @@ CREATE TABLE IF NOT EXISTS relation_records (
|
|
|
99
87
|
relation_type TEXT NOT NULL,
|
|
100
88
|
metadata TEXT, -- JSON 扩展元数据
|
|
101
89
|
created_at TEXT NOT NULL, -- ISO 8601,应用层写入
|
|
102
|
-
updated_at TEXT NOT NULL, -- ISO 8601
|
|
103
|
-
deleted_at TEXT --
|
|
90
|
+
updated_at TEXT NOT NULL, -- ISO 8601,应用层写入(提案快照比对;软删/还原亦更新)
|
|
91
|
+
deleted_at TEXT -- 级联软删标记:仅实体/节点级联删除时写入;
|
|
104
92
|
-- 手动删除关系 = 物理删(不置 deleted_at,不进入回收站)
|
|
105
93
|
);
|
|
106
94
|
|
|
@@ -119,23 +107,9 @@ CREATE TABLE IF NOT EXISTS delta_records (
|
|
|
119
107
|
description TEXT NOT NULL, -- 人类可读描述
|
|
120
108
|
"order" INTEGER NOT NULL DEFAULT 0, -- 同一节点内多个 Delta 的排序(全局单调递增,服务端生成)
|
|
121
109
|
created_at TEXT NOT NULL, -- ISO 8601,应用层写入
|
|
122
|
-
updated_at TEXT NOT NULL, -- ISO 8601
|
|
123
|
-
deleted_at TEXT --
|
|
124
|
-
--
|
|
110
|
+
updated_at TEXT NOT NULL, -- ISO 8601,应用层写入(提案快照比对)
|
|
111
|
+
deleted_at TEXT -- 级联软删标记:仅实体/节点级联删除时写入。
|
|
112
|
+
-- 可见性联动触发节点与目标实体:任一端软删即不可见
|
|
125
113
|
);
|
|
126
|
-
|
|
127
|
-
-- chat_messages:对话历史表(,与 data.db 同库)
|
|
128
|
-
CREATE TABLE IF NOT EXISTS chat_messages (
|
|
129
|
-
id TEXT PRIMARY KEY,
|
|
130
|
-
session_id TEXT NOT NULL,
|
|
131
|
-
project_id TEXT NOT NULL, -- 会话按项目隔离()
|
|
132
|
-
role TEXT NOT NULL CHECK(role IN ('user','assistant','tool')),
|
|
133
|
-
content TEXT,
|
|
134
|
-
tool_calls TEXT, -- JSON: 助手消息的工具调用数组
|
|
135
|
-
tool_call_id TEXT, -- tool 消息关联的 assistant 工具调用 id()
|
|
136
|
-
created_at TEXT NOT NULL -- ISO 8601,应用层写入
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
CREATE INDEX IF NOT EXISTS idx_chat_session ON chat_messages(session_id, created_at);
|
|
140
114
|
`;
|
|
141
115
|
//# sourceMappingURL=tables.js.map
|
package/dist/tables.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whispering233/ai-editor-db",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "数据库层:better-sqlite3 连接 / 建表 / 查询",
|
|
6
6
|
"type": "module",
|
|
@@ -26,10 +26,9 @@
|
|
|
26
26
|
"postpack": "node ../../scripts/restore-package-json.mjs"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@whispering233/ai-editor-shared": "0.0.
|
|
29
|
+
"@whispering233/ai-editor-shared": "0.0.32",
|
|
30
30
|
"better-sqlite3": "^13.0.0",
|
|
31
|
-
"drizzle-orm": "0.45.2"
|
|
32
|
-
"nanoid": "^5.1.0"
|
|
31
|
+
"drizzle-orm": "0.45.2"
|
|
33
32
|
},
|
|
34
33
|
"devDependencies": {
|
|
35
34
|
"@types/better-sqlite3": "^7.6.13",
|