@whispering233/ai-editor-shared 0.0.33 → 0.0.38

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.
Files changed (54) hide show
  1. package/dist/constants/backup.d.ts +14 -0
  2. package/dist/constants/backup.d.ts.map +1 -1
  3. package/dist/constants/backup.js +5 -0
  4. package/dist/constants/backup.js.map +1 -1
  5. package/dist/constants/delta.d.ts +25 -0
  6. package/dist/constants/delta.d.ts.map +1 -0
  7. package/dist/constants/delta.js +37 -0
  8. package/dist/constants/delta.js.map +1 -0
  9. package/dist/constants/entity.d.ts +17 -0
  10. package/dist/constants/entity.d.ts.map +1 -1
  11. package/dist/constants/entity.js +26 -0
  12. package/dist/constants/entity.js.map +1 -1
  13. package/dist/constants/index.d.ts +1 -0
  14. package/dist/constants/index.d.ts.map +1 -1
  15. package/dist/constants/index.js +2 -1
  16. package/dist/constants/index.js.map +1 -1
  17. package/dist/constants/tool.d.ts +2 -2
  18. package/dist/constants/tool.d.ts.map +1 -1
  19. package/dist/constants/tool.js +2 -2
  20. package/dist/constants/tool.js.map +1 -1
  21. package/dist/types/ability-panel.d.ts +16 -0
  22. package/dist/types/ability-panel.d.ts.map +1 -0
  23. package/dist/types/ability-panel.js +9 -0
  24. package/dist/types/ability-panel.js.map +1 -0
  25. package/dist/types/api.d.ts +34 -24
  26. package/dist/types/api.d.ts.map +1 -1
  27. package/dist/types/api.js +65 -9
  28. package/dist/types/api.js.map +1 -1
  29. package/dist/types/cloud.d.ts +200 -0
  30. package/dist/types/cloud.d.ts.map +1 -0
  31. package/dist/types/cloud.js +7 -0
  32. package/dist/types/cloud.js.map +1 -0
  33. package/dist/types/entity.d.ts +1 -1
  34. package/dist/types/entity.d.ts.map +1 -1
  35. package/dist/types/index.d.ts +2 -0
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/types/project.d.ts +1 -1
  38. package/dist/utils/ability-panel.d.ts +67 -0
  39. package/dist/utils/ability-panel.d.ts.map +1 -0
  40. package/dist/utils/ability-panel.js +159 -0
  41. package/dist/utils/ability-panel.js.map +1 -0
  42. package/dist/utils/backup.d.ts +50 -16
  43. package/dist/utils/backup.d.ts.map +1 -1
  44. package/dist/utils/backup.js +92 -59
  45. package/dist/utils/backup.js.map +1 -1
  46. package/dist/utils/index.d.ts +2 -0
  47. package/dist/utils/index.d.ts.map +1 -1
  48. package/dist/utils/index.js +2 -0
  49. package/dist/utils/index.js.map +1 -1
  50. package/dist/utils/relation-type.d.ts +10 -0
  51. package/dist/utils/relation-type.d.ts.map +1 -0
  52. package/dist/utils/relation-type.js +33 -0
  53. package/dist/utils/relation-type.js.map +1 -0
  54. package/package.json +1 -1
@@ -6,6 +6,20 @@ export declare const DEFAULT_BACKUP_FREQUENCY_MINUTES = 10;
6
6
  export declare const MAX_BACKUPS_PER_PROJECT = 20;
7
7
  /** 手动备份自定义名称最大长度(trim 后 1-30 字符;超出 → 400 VALIDATION_ERROR) */
8
8
  export declare const MAX_BACKUP_NAME_LENGTH = 30;
9
+ /**
10
+ * 设备名最大长度(trim 后 1-16 字符)。设备段是文件名的第 3 段,不得出现 `-`
11
+ * (段分隔符)——主机名里的 `-` 在派生时转写为 `_`,用户手工配置时非法 → 400 VALIDATION_ERROR。
12
+ */
13
+ export declare const MAX_DEVICE_NAME_LENGTH = 16;
9
14
  /** 备份类型:auto = 自动(定时器/覆盖前快照)/ manual = 手动(立即备份触发);文件名 kind 标记段来源 */
10
15
  export type BackupKind = "auto" | "manual";
16
+ /**
17
+ * 备份包内容规模快照(写入文件名的尾部三段统计,`人物N-设定N-章N`)。
18
+ * 口径:**未软删**存量(实体表不含回收站;章 = outline.json 中未软删 `chapter` 节点)。
19
+ */
20
+ export interface BackupStats {
21
+ characters: number;
22
+ settings: number;
23
+ chapters: number;
24
+ }
11
25
  //# sourceMappingURL=backup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/constants/backup.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,iCAAkC,CAAC;AAElE,kDAAkD;AAClD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,6CAA6C;AAC7C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/constants/backup.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,iCAAkC,CAAC;AAElE,kDAAkD;AAClD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD,6CAA6C;AAC7C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -8,4 +8,9 @@ export const DEFAULT_BACKUP_FREQUENCY_MINUTES = 10;
8
8
  export const MAX_BACKUPS_PER_PROJECT = 20;
9
9
  /** 手动备份自定义名称最大长度(trim 后 1-30 字符;超出 → 400 VALIDATION_ERROR) */
10
10
  export const MAX_BACKUP_NAME_LENGTH = 30;
11
+ /**
12
+ * 设备名最大长度(trim 后 1-16 字符)。设备段是文件名的第 3 段,不得出现 `-`
13
+ * (段分隔符)——主机名里的 `-` 在派生时转写为 `_`,用户手工配置时非法 → 400 VALIDATION_ERROR。
14
+ */
15
+ export const MAX_DEVICE_NAME_LENGTH = 16;
11
16
  //# sourceMappingURL=backup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/constants/backup.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,4DAA4D;AAE5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAElE,kDAAkD;AAClD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/constants/backup.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,4DAA4D;AAE5D,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAElE,kDAAkD;AAClD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AAEnD,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 事实字段(写路径已把当前值同步进 `data`)→ 变更记录**只能用 `op=set`**。
3
+ *
4
+ * `hook.status` 由复合写(推进/回收/废弃)同步为最新值:终态守卫、列表分组、AI 统计都直接读它,
5
+ * 因此用 `op=update` + `from` 重放必然假冲突(重放基座即最新值,`from` 永远对不上)。
6
+ */
7
+ export declare const SET_ONLY_FIELDS: Record<string, readonly string[]>;
8
+ /**
9
+ * character 不可变字段(**不参与 Delta**——人工经 `PUT` 直接编辑):按实体类型。
10
+ *
11
+ * `role`/`description` 同时是列表摘要与 AI 检索的依据,允许 Delta 改会与 `entities.name`/
12
+ * 摘要其它读取面产生“同一人物两个值”的语义裂缝(见 `docs/db/schema.md`「人物 data 分层」/
13
+ * `docs/design/10-data-model.md` §14 不变式 1)。
14
+ *
15
+ * 消费方:client(`lib/delta-create` 字段下拉排除、`lib/character-detail` 基础信息区字段集)
16
+ * 与 tools(`proposal/delta` 提案层守卫)。
17
+ */
18
+ export declare const IMMUTABLE_FIELDS: Record<string, readonly string[]>;
19
+ /**
20
+ * character 已移除字段(schema 已删——`status` 无展示面、`abilities` 经 007 迁移为 `ability_panel`):
21
+ * 写入只会留下脏键(不参与展示与状态累积),故提案层与 executor 均拒绝;
22
+ * 旧项目的存量脏值由 `.passthrough()` 容错,不迁移。
23
+ */
24
+ export declare const REMOVED_CHARACTER_FIELDS: readonly string[];
25
+ //# sourceMappingURL=delta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/constants/delta.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAE7D,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAE9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAA4B,CAAC"}
@@ -0,0 +1,37 @@
1
+ // Delta(变更记录)字段约束常量
2
+ //
3
+ // **单一定义**:client(`lib/delta-create`:字段下拉 / op 选项)与 tools(`proposal/delta`、
4
+ // `executor/delta`:写入守卫)双向消费——client 不能 import tools,各手抄一份必然漂移。
5
+ // 纯常量(无 schema / TypeBox),可安全进客户端包。
6
+ //
7
+ // 依据:`docs/design/10-data-model.md` §4「物化事实字段不用 CAS」与 §14 不变式 1、
8
+ // `docs/db/schema.md`「人物 data 分层」。
9
+ /**
10
+ * 事实字段(写路径已把当前值同步进 `data`)→ 变更记录**只能用 `op=set`**。
11
+ *
12
+ * `hook.status` 由复合写(推进/回收/废弃)同步为最新值:终态守卫、列表分组、AI 统计都直接读它,
13
+ * 因此用 `op=update` + `from` 重放必然假冲突(重放基座即最新值,`from` 永远对不上)。
14
+ */
15
+ export const SET_ONLY_FIELDS = {
16
+ hook: ["status"],
17
+ };
18
+ /**
19
+ * character 不可变字段(**不参与 Delta**——人工经 `PUT` 直接编辑):按实体类型。
20
+ *
21
+ * `role`/`description` 同时是列表摘要与 AI 检索的依据,允许 Delta 改会与 `entities.name`/
22
+ * 摘要其它读取面产生“同一人物两个值”的语义裂缝(见 `docs/db/schema.md`「人物 data 分层」/
23
+ * `docs/design/10-data-model.md` §14 不变式 1)。
24
+ *
25
+ * 消费方:client(`lib/delta-create` 字段下拉排除、`lib/character-detail` 基础信息区字段集)
26
+ * 与 tools(`proposal/delta` 提案层守卫)。
27
+ */
28
+ export const IMMUTABLE_FIELDS = {
29
+ character: ["role", "description"],
30
+ };
31
+ /**
32
+ * character 已移除字段(schema 已删——`status` 无展示面、`abilities` 经 007 迁移为 `ability_panel`):
33
+ * 写入只会留下脏键(不参与展示与状态累积),故提案层与 executor 均拒绝;
34
+ * 旧项目的存量脏值由 `.passthrough()` 容错,不迁移。
35
+ */
36
+ export const REMOVED_CHARACTER_FIELDS = ["status", "abilities"];
37
+ //# sourceMappingURL=delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/constants/delta.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,EAAE;AACF,4EAA4E;AAC5E,gEAAgE;AAChE,oCAAoC;AACpC,EAAE;AACF,iEAAiE;AACjE,mCAAmC;AAEnC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,IAAI,EAAE,CAAC,QAAQ,CAAC;CACjB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAsC;IACjE,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC"}
@@ -16,6 +16,23 @@ export declare const ENTITY_TYPE_LABELS: Record<EntityTypeValue, string>;
16
16
  export declare const RELATION_TYPES: readonly ["belongs_to", "owns", "masters", "ally", "rival", "mentor", "family", "kills", "appears_in", "occurs_at", "plot_edge", "plants", "advances", "resolves", "depends_on", "involves", "occurs_in"];
17
17
  /** 关系类型(从 RELATION_TYPES 派生) */
18
18
  export type RelationType = (typeof RELATION_TYPES)[number];
19
+ /**
20
+ * 关系类型分组(UI 语义分区):character 人↔人 / structure 层级与归属 / anchor 大纲节点锚定 /
21
+ * hook 伏笔链路 / mount 时间轴挂载(由时间轴 UI 专管,通用对话框不暴露)/ canvas 画布推演。
22
+ */
23
+ export type RelationTypeGroup = "character" | "structure" | "anchor" | "hook" | "mount" | "canvas";
24
+ /**
25
+ * 关系类型属性注册表(**单一来源**):client 中文标签、人物页人↔人子集、对话框排除集、
26
+ * tools 冲突检测的对称口径一律由此派生,禁止手抄清单。`Record<RelationType, …>` ⇒
27
+ * 新增预定义类型必须补属性,否则编译失败。
28
+ * `symmetric` 仅对称类型(语义对等,展示层合并 + 冲突检测把单向存在报为缺口)标注——
29
+ * 未标注即有向;自定义类型一律有向。
30
+ */
31
+ export declare const RELATION_TYPE_META: Record<RelationType, {
32
+ label: string;
33
+ group: RelationTypeGroup;
34
+ symmetric?: true;
35
+ }>;
19
36
  /** 剧情连线关系类型(画布连线用 plot_edge,metadata 存连线标签) */
20
37
  export declare const PLOT_EDGE_TYPE: "plot_edge";
21
38
  /** 伏笔管理关系(伏笔关系约定:大纲节点 → hook) */
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAGA,oHAAoH;AACpH,eAAO,MAAM,YAAY,0FAA2F,CAAC;AAErH,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAQ9D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,2MAkBjB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,+CAA+C;AAC/C,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AAEnD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,6CAA8C,CAAC;AAE/E,eAAe;AACf,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAGA,oHAAoH;AACpH,eAAO,MAAM,YAAY,0FAA2F,CAAC;AAErH,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAQ9D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,2MAkBjB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,YAAY,EACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAmB9D,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AAEnD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,6CAA8C,CAAC;AAE/E,eAAe;AACf,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -40,6 +40,32 @@ export const RELATION_TYPES = [
40
40
  "involves",
41
41
  "occurs_in",
42
42
  ];
43
+ /**
44
+ * 关系类型属性注册表(**单一来源**):client 中文标签、人物页人↔人子集、对话框排除集、
45
+ * tools 冲突检测的对称口径一律由此派生,禁止手抄清单。`Record<RelationType, …>` ⇒
46
+ * 新增预定义类型必须补属性,否则编译失败。
47
+ * `symmetric` 仅对称类型(语义对等,展示层合并 + 冲突检测把单向存在报为缺口)标注——
48
+ * 未标注即有向;自定义类型一律有向。
49
+ */
50
+ export const RELATION_TYPE_META = {
51
+ belongs_to: { label: "所属", group: "structure" },
52
+ owns: { label: "拥有", group: "structure" },
53
+ masters: { label: "掌握", group: "structure" },
54
+ ally: { label: "盟友", group: "character", symmetric: true },
55
+ rival: { label: "对手", group: "character", symmetric: true },
56
+ mentor: { label: "师徒", group: "character" },
57
+ family: { label: "家族", group: "character", symmetric: true },
58
+ kills: { label: "击杀", group: "character" },
59
+ appears_in: { label: "出现于", group: "anchor" },
60
+ occurs_at: { label: "发生于", group: "mount" },
61
+ plot_edge: { label: "剧情连线", group: "canvas" },
62
+ plants: { label: "埋设", group: "hook" },
63
+ advances: { label: "推进", group: "hook" },
64
+ resolves: { label: "回收", group: "hook" },
65
+ depends_on: { label: "依赖", group: "hook" },
66
+ involves: { label: "涉及", group: "hook" },
67
+ occurs_in: { label: "锚定于", group: "anchor" },
68
+ };
43
69
  /** 剧情连线关系类型(画布连线用 plot_edge,metadata 存连线标签) */
44
70
  export const PLOT_EDGE_TYPE = "plot_edge";
45
71
  /** 伏笔管理关系(伏笔关系约定:大纲节点 → hook) */
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,yCAAyC;AAEzC,oHAAoH;AACpH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAKrH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAoC;IACjE,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY;IACZ,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;IACZ,UAAU;IACV,WAAW;CACH,CAAC;AAKX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,yCAAyC;AAEzC,oHAAoH;AACpH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAKrH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAoC;IACjE,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY;IACZ,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,WAAW;IACX,WAAW;IACX,QAAQ;IACR,UAAU;IACV,UAAU;IACV,YAAY;IACZ,UAAU;IACV,WAAW;CACH,CAAC;AAWX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;IAC/C,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;IAC5C,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;IAC3C,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5D,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;IAC1C,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7C,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3C,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC7C,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACxC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACxC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IAC1C,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACxC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC7C,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC"}
@@ -3,4 +3,5 @@ export * from "./hook.js";
3
3
  export * from "./tool.js";
4
4
  export * from "./outline.js";
5
5
  export * from "./backup.js";
6
+ export * from "./delta.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,8 +1,9 @@
1
1
  // 常量聚合出口
2
- // 文件划分见 (constants/:entity.ts / hook.ts / tool.ts / outline.ts / backup.ts)
2
+ // 文件划分见 (constants/:entity.ts / hook.ts / tool.ts / outline.ts / backup.ts / delta.ts
3
3
  export * from "./entity.js";
4
4
  export * from "./hook.js";
5
5
  export * from "./tool.js";
6
6
  export * from "./outline.js";
7
7
  export * from "./backup.js";
8
+ export * from "./delta.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,4EAA4E;AAC5E,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,uFAAuF;AACvF,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -27,9 +27,9 @@ export declare const PROPOSAL_TOOLS: readonly ["propose_create_entity", "propose
27
27
  * reorder_timepoints 为批量重排(G2:按新序事务内重写 sort_order 0..n-1,取代 F9 reorder_events)
28
28
  */
29
29
  export declare const EXECUTOR_TOOLS: readonly ["create_entity", "update_entity", "delete_entity", "add_relation", "remove_relation", "add_delta", "create_outline_node", "move_node", "delete_node", "advance_hook", "resolve_hook", "abandon_hook", "reorder_timepoints"];
30
- /** 自动级工具(查询 + 分析 + 伏笔分析,共 18 个) */
30
+ /** 自动级工具(查询 9 + 分析 5 + 伏笔分析 5,共 19 个) */
31
31
  export declare const AUTO_TOOLS: readonly ["get_entity", "search_entities", "search_references", "query_relationships", "get_outline", "get_outline_path", "compute_state", "get_delta_history", "get_entity_summary", "analyze_consistency", "detect_conflicts", "trace_plot_paths", "find_orphan_elements", "suggest_connections", "analyze_hook_health", "trace_hook_lifecycle", "suggest_hook_payoff", "find_hook_opportunities", "detect_hook_conflicts"];
32
- /** 全部工具名(自动 18 + 提案 15 + 执行 13 = 46 个) */
32
+ /** 全部工具名(自动 19 + 提案 16 + 执行 13 = 48 个) */
33
33
  export declare const TOOL_NAMES: readonly ["get_entity", "search_entities", "search_references", "query_relationships", "get_outline", "get_outline_path", "compute_state", "get_delta_history", "get_entity_summary", "analyze_consistency", "detect_conflicts", "trace_plot_paths", "find_orphan_elements", "suggest_connections", "analyze_hook_health", "trace_hook_lifecycle", "suggest_hook_payoff", "find_hook_opportunities", "detect_hook_conflicts", "propose_create_entity", "propose_update_entity", "propose_delete_entity", "propose_add_relation", "propose_remove_relation", "propose_add_delta", "propose_outline_node", "propose_move_node", "propose_delete_node", "propose_create_hook", "propose_update_hook", "propose_advance_hook", "propose_resolve_hook", "propose_abandon_hook", "propose_reorder_timepoints", "propose_create_reference", "create_entity", "update_entity", "delete_entity", "add_relation", "remove_relation", "add_delta", "create_outline_node", "move_node", "delete_node", "advance_hook", "resolve_hook", "abandon_hook", "reorder_timepoints"];
34
34
  /** 工具名(从 TOOL_NAMES 派生) */
35
35
  export type ToolName = (typeof TOOL_NAMES)[number];
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,aAAa;AACb,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEpF,+BAA+B;AAC/B,eAAO,MAAM,WAAW,uLAUd,CAAC;AAEX,kCAAkC;AAClC,eAAO,MAAM,cAAc,yHAMjB,CAAC;AAEX,2BAA2B;AAC3B,eAAO,MAAM,mBAAmB,qIAMtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,cAAc,kZAiBjB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,cAAc,uOAcjB,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,UAAU,+ZAAuE,CAAC;AAE/F,0CAA0C;AAC1C,eAAO,MAAM,UAAU,kgCAAiE,CAAC;AAEzF,2BAA2B;AAC3B,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAEX,aAAa;AACb,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEpF,+BAA+B;AAC/B,eAAO,MAAM,WAAW,uLAUd,CAAC;AAEX,kCAAkC;AAClC,eAAO,MAAM,cAAc,yHAMjB,CAAC;AAEX,2BAA2B;AAC3B,eAAO,MAAM,mBAAmB,qIAMtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,cAAc,kZAiBjB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,cAAc,uOAcjB,CAAC;AAEX,yCAAyC;AACzC,eAAO,MAAM,UAAU,+ZAAuE,CAAC;AAE/F,0CAA0C;AAC1C,eAAO,MAAM,UAAU,kgCAAiE,CAAC;AAEzF,2BAA2B;AAC3B,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -79,8 +79,8 @@ export const EXECUTOR_TOOLS = [
79
79
  "abandon_hook",
80
80
  "reorder_timepoints",
81
81
  ];
82
- /** 自动级工具(查询 + 分析 + 伏笔分析,共 18 个) */
82
+ /** 自动级工具(查询 9 + 分析 5 + 伏笔分析 5,共 19 个) */
83
83
  export const AUTO_TOOLS = [...QUERY_TOOLS, ...ANALYSIS_TOOLS, ...HOOK_ANALYSIS_TOOLS];
84
- /** 全部工具名(自动 18 + 提案 15 + 执行 13 = 46 个) */
84
+ /** 全部工具名(自动 19 + 提案 16 + 执行 13 = 48 个) */
85
85
  export const TOOL_NAMES = [...AUTO_TOOLS, ...PROPOSAL_TOOLS, ...EXECUTOR_TOOLS];
86
86
  //# sourceMappingURL=tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,iBAAiB;IACjB,mBAAmB,EAAE,eAAe;IACpC,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;CACb,CAAC;AAEX,2BAA2B;AAC3B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,uBAAuB;CACf,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,4BAA4B,EAAE,wCAAwC;IACtE,0BAA0B,EAAE,yBAAyB;CAC7C,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,iBAAiB;IACjB,WAAW;IACX,qBAAqB;IACrB,WAAW;IACX,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,oBAAoB;CACZ,CAAC;AAEX,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,mBAAmB,CAAU,CAAC;AAE/F,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAU,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAAA,uBAAuB;AAEvB;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX,+BAA+B;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,iBAAiB;IACjB,mBAAmB,EAAE,eAAe;IACpC,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;CACb,CAAC;AAEX,2BAA2B;AAC3B,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,yBAAyB;IACzB,uBAAuB;CACf,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,yBAAyB;IACzB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,4BAA4B,EAAE,wCAAwC;IACtE,0BAA0B,EAAE,yBAAyB;CAC7C,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,iBAAiB;IACjB,WAAW;IACX,qBAAqB;IACrB,WAAW;IACX,aAAa;IACb,cAAc;IACd,cAAc;IACd,cAAc;IACd,oBAAoB;CACZ,CAAC;AAEX,yCAAyC;AACzC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,mBAAmB,CAAU,CAAC;AAE/F,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,cAAc,EAAE,GAAG,cAAc,CAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** 能力面板节点(分支 = 带非空 `children`;叶子 = 带可选 `value`) */
2
+ export interface AbilityPanelNode {
3
+ name: string;
4
+ /** 叶子值(仅叶子出现——分支不可赋值,规范形状下分支不携带该键) */
5
+ value?: string | number;
6
+ /** 子节点(非空数组 = 分支;缺省 = 叶子) */
7
+ children?: AbilityPanelNode[];
8
+ }
9
+ /** 叶子枚举项(panelLeafPaths 返回值):`path` = 祖先名点分拼接,供 Delta 字段路径使用 */
10
+ export interface AbilityPanelLeaf {
11
+ /** 点分路径(如 `火系.等级`)——逐字拼接不做转义 */
12
+ path: string;
13
+ name: string;
14
+ value?: string | number;
15
+ }
16
+ //# sourceMappingURL=ability-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability-panel.d.ts","sourceRoot":"","sources":["../../src/types/ability-panel.ts"],"names":[],"mappings":"AAQA,mDAAmD;AACnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACd,sCAAsC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,6BAA6B;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAChC,gCAAgC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB"}
@@ -0,0 +1,9 @@
1
+ // 能力面板(character.data.ability_panel)数据类型
2
+ // 结构契约见 docs/db/schema.md「人物 data 分层」;解析/枚举/派生纯函数见 utils/ability-panel.ts。
3
+ //
4
+ // 不变式(单一来源,调用方不得各写一套拼写):
5
+ // - **分支 ⇔ `children` 为非空数组**:有 children = 分支(**不可赋值**);无 children = 叶子(**可赋值**)
6
+ // - 叶子 `value` ∈ `string | number`(与 DeltaChange 的 from/to/value 同域);缺省 = 空值
7
+ // - 顺序 = 数组顺序(**无 sort_order 列、无迁移**);嵌套层数不限
8
+ export {};
9
+ //# sourceMappingURL=ability-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ability-panel.js","sourceRoot":"","sources":["../../src/types/ability-panel.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,2EAA2E;AAC3E,EAAE;AACF,yBAAyB;AACzB,iFAAiF;AACjF,6EAA6E;AAC7E,6CAA6C"}
@@ -87,17 +87,26 @@ export declare const apiErrorSchema: z.ZodObject<{
87
87
  /** 错误响应类型 */
88
88
  export type ApiError = z.infer<typeof apiErrorSchema>;
89
89
  /**
90
- * character 专属字段(role/gender/age/personality[]/motivation/abilities[]/status/custom_fields)
90
+ * character 专属字段(**不可变**:role/description;**可变**:alias/gender/age/race/motivation/personality[]/ability_panel;
91
+ * custom_fields)——分层与不变式见 `docs/db/schema.md`「人物 data 分层」。
91
92
  * 注意:data 嵌套对象内部字段原样透传(snake_case,如 custom_fields),顶层字段才是 camelCase
93
+ *
94
+ * **2026-09 修订**:`status` 彻底移除(旧残留由 `.passthrough()` 容错,不再解析/展示);
95
+ * `abilities[]` → `ability_panel`(007 迁移);`description` 为必填(**仅前端校验**——服务端不硬校验,
96
+ * 保护 AI 提案/旧数据/备份导入三条路径)。
97
+ * `ability_panel` 为**宽校验**声明(`z.unknown()`,不约束结构):面板是用户自定义字段树,
98
+ * 结构防御在读取端(shared `parseAbilityPanel`)——服务端绝不因面板结构问题拒绝写入。
92
99
  */
93
100
  export declare const characterDataSchema: z.ZodObject<{
94
101
  role: z.ZodOptional<z.ZodString>;
102
+ description: z.ZodOptional<z.ZodString>;
103
+ alias: z.ZodOptional<z.ZodString>;
95
104
  gender: z.ZodOptional<z.ZodString>;
96
105
  age: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
106
+ race: z.ZodOptional<z.ZodString>;
97
107
  personality: z.ZodOptional<z.ZodArray<z.ZodString>>;
98
108
  motivation: z.ZodOptional<z.ZodString>;
99
- abilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
100
- status: z.ZodOptional<z.ZodString>;
109
+ ability_panel: z.ZodOptional<z.ZodUnknown>;
101
110
  custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
102
111
  }, z.core.$loose>;
103
112
  /** setting 专属字段(description/tags/rules/custom_fields;
@@ -172,12 +181,14 @@ export declare const referenceDataSchema: z.ZodObject<{
172
181
  export declare const ENTITY_DATA_SCHEMAS: {
173
182
  readonly character: z.ZodObject<{
174
183
  role: z.ZodOptional<z.ZodString>;
184
+ description: z.ZodOptional<z.ZodString>;
185
+ alias: z.ZodOptional<z.ZodString>;
175
186
  gender: z.ZodOptional<z.ZodString>;
176
187
  age: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
188
+ race: z.ZodOptional<z.ZodString>;
177
189
  personality: z.ZodOptional<z.ZodArray<z.ZodString>>;
178
190
  motivation: z.ZodOptional<z.ZodString>;
179
- abilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
180
- status: z.ZodOptional<z.ZodString>;
191
+ ability_panel: z.ZodOptional<z.ZodUnknown>;
181
192
  custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
182
193
  }, z.core.$loose>;
183
194
  readonly setting: z.ZodObject<{
@@ -454,25 +465,7 @@ export declare const relationCreateReqSchema: z.ZodObject<{
454
465
  source_id: z.ZodString;
455
466
  target_type: z.ZodString;
456
467
  target_id: z.ZodString;
457
- relation_type: z.ZodEnum<{
458
- belongs_to: "belongs_to";
459
- owns: "owns";
460
- masters: "masters";
461
- ally: "ally";
462
- rival: "rival";
463
- mentor: "mentor";
464
- family: "family";
465
- kills: "kills";
466
- appears_in: "appears_in";
467
- occurs_at: "occurs_at";
468
- plot_edge: "plot_edge";
469
- plants: "plants";
470
- advances: "advances";
471
- resolves: "resolves";
472
- depends_on: "depends_on";
473
- involves: "involves";
474
- occurs_in: "occurs_in";
475
- }>;
468
+ relation_type: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
476
469
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
477
470
  }, z.core.$strict>;
478
471
  export declare const relationCreateResSchema: z.ZodObject<{
@@ -874,4 +867,21 @@ export declare const namesResolveResSchema: z.ZodObject<{
874
867
  }, z.core.$strip>>>;
875
868
  }, z.core.$strip>;
876
869
  export type NamesResolveResult = z.infer<typeof namesResolveResSchema>;
870
+ export declare const cloudConfigPutReqSchema: z.ZodObject<{
871
+ url: z.ZodOptional<z.ZodString>;
872
+ username: z.ZodOptional<z.ZodString>;
873
+ password: z.ZodOptional<z.ZodString>;
874
+ device: z.ZodOptional<z.ZodString>;
875
+ autoPush: z.ZodOptional<z.ZodBoolean>;
876
+ }, z.core.$strict>;
877
+ export type CloudConfigPutReq = z.infer<typeof cloudConfigPutReqSchema>;
878
+ export declare const cloudPushReqSchema: z.ZodObject<{
879
+ file_name: z.ZodOptional<z.ZodString>;
880
+ force: z.ZodOptional<z.ZodBoolean>;
881
+ }, z.core.$strict>;
882
+ export type CloudPushReq = z.infer<typeof cloudPushReqSchema>;
883
+ export declare const cloudPullReqSchema: z.ZodObject<{
884
+ file_name: z.ZodOptional<z.ZodString>;
885
+ }, z.core.$strict>;
886
+ export type CloudPullReq = z.infer<typeof cloudPullReqSchema>;
877
887
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"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"}
package/dist/types/api.js CHANGED
@@ -5,7 +5,8 @@
5
5
  // client 只消费推断出的类型与常量,不打包校验函数(避免 50KB 级依赖进浏览器包)。
6
6
  // zod 版本:^4(注意 v4 API:z.record 必须两参、z.enum 接受 readonly 数组)
7
7
  import { z } from "zod";
8
- import { ENTITY_TYPES, RELATION_TYPES } from "../constants/entity.js";
8
+ import { ENTITY_TYPES } from "../constants/entity.js";
9
+ import { normalizeRelationType, relationTypeSyntaxError } from "../utils/relation-type.js";
9
10
  import { HOOK_STATUSES, PAYOFF_TIMING } from "../constants/hook.js";
10
11
  import { CONFLICT_LEVELS } from "../constants/outline.js";
11
12
  import { BACKUP_FREQUENCIES } from "../constants/backup.js";
@@ -68,18 +69,27 @@ export const apiErrorSchema = z.object({
68
69
  });
69
70
  // ============ 实体 data 字段 schema(创建接口 + +) ============
70
71
  /**
71
- * character 专属字段(role/gender/age/personality[]/motivation/abilities[]/status/custom_fields)
72
+ * character 专属字段(**不可变**:role/description;**可变**:alias/gender/age/race/motivation/personality[]/ability_panel;
73
+ * custom_fields)——分层与不变式见 `docs/db/schema.md`「人物 data 分层」。
72
74
  * 注意:data 嵌套对象内部字段原样透传(snake_case,如 custom_fields),顶层字段才是 camelCase
75
+ *
76
+ * **2026-09 修订**:`status` 彻底移除(旧残留由 `.passthrough()` 容错,不再解析/展示);
77
+ * `abilities[]` → `ability_panel`(007 迁移);`description` 为必填(**仅前端校验**——服务端不硬校验,
78
+ * 保护 AI 提案/旧数据/备份导入三条路径)。
79
+ * `ability_panel` 为**宽校验**声明(`z.unknown()`,不约束结构):面板是用户自定义字段树,
80
+ * 结构防御在读取端(shared `parseAbilityPanel`)——服务端绝不因面板结构问题拒绝写入。
73
81
  */
74
82
  export const characterDataSchema = z
75
83
  .object({
76
84
  role: z.string().optional(),
85
+ description: z.string().optional(),
86
+ alias: z.string().optional(), // 假名/化名(单值:当前位置时这个人的化名)
77
87
  gender: z.string().optional(),
78
88
  age: z.union([z.string(), z.number()]).optional(), // 年龄文本或数字皆可(未定死类型)
89
+ race: z.string().optional(),
79
90
  personality: z.array(z.string()).optional(),
80
91
  motivation: z.string().optional(),
81
- abilities: z.array(z.string()).optional(),
82
- status: z.string().optional(),
92
+ ability_panel: z.unknown().optional(), // 能力面板树(宽校验;解析见 shared parseAbilityPanel)
83
93
  custom_fields: z.record(z.string(), z.unknown()).optional(),
84
94
  })
85
95
  .passthrough(); // 允许未知字段(创作工具,用户自定义字段自由)
@@ -431,14 +441,22 @@ export const relationQueryResSchema = z.object({
431
441
  relations: z.array(relationRecordSchema),
432
442
  paths: z.array(relationPathSchema).optional(), // depth>=2 时返回
433
443
  });
434
- // POST /api/v1/relation(relation_type 限定 预定义 16 种)
444
+ // POST /api/v1/relation(relation_type 自由字符串:预定义 17 ∪ 自定义类型,语法校验单一来源 =
445
+ // shared `utils/relation-type.ts`;收窄为枚举的只剩 AI 工具层,见 packages/tools/src/schemas/relation.ts)
435
446
  export const relationCreateReqSchema = z
436
447
  .object({
437
448
  source_type: z.string(),
438
449
  source_id: z.string(),
439
450
  target_type: z.string(),
440
451
  target_id: z.string(),
441
- relation_type: z.enum(RELATION_TYPES),
452
+ relation_type: z
453
+ .string()
454
+ .transform(normalizeRelationType)
455
+ .superRefine((value, ctx) => {
456
+ const message = relationTypeSyntaxError(value);
457
+ if (message !== null)
458
+ ctx.addIssue({ code: "custom", message });
459
+ }),
442
460
  metadata: z.record(z.string(), z.unknown()).optional(),
443
461
  })
444
462
  .strict();
@@ -504,19 +522,19 @@ export const deltaByNodeResSchema = z.object({
504
522
  nodeId: z.string(),
505
523
  deltas: z.array(deltaRecordSchema),
506
524
  });
507
- // POST /api/v1/delta/compute(只沿大纲树父链累积)
525
+ // POST /api/v1/delta/compute(章序前缀累积:章序 ≤ 目标进度章的全部章)
508
526
  export const deltaComputeReqSchema = z
509
527
  .object({
510
528
  target_type: z.string(),
511
529
  target_id: z.string(),
512
- at_node_id: z.string(), // 服务端自动计算根 at_node 的树路径
530
+ at_node_id: z.string(), // 目标节点(不限层级)——映射为进度章:章→自身 / 场景→所属章 / 卷→该卷最后一个未软删章
513
531
  })
514
532
  .strict();
515
533
  export const deltaComputeResSchema = z.object({
516
534
  targetType: z.string(),
517
535
  targetId: z.string(),
518
536
  atNodeId: z.string(),
519
- state: z.record(z.string(), z.unknown()), // 初始 data + 路径上所有 Delta 累积
537
+ state: z.record(z.string(), z.unknown()), // 初始 data + 章序前缀(章序 ≤ 进度章)的全部 Delta 累积
520
538
  appliedDeltas: z.array(z.object({
521
539
  nodeId: z.string(),
522
540
  description: z.string(),
@@ -845,6 +863,44 @@ export const namesResolveReqSchema = z
845
863
  export const namesResolveResSchema = z.object({
846
864
  names: z.record(z.string(), z.object({ label: z.string(), name: z.string() }).nullable()),
847
865
  });
866
+ // ============ 云端存档(卡 2:账号配置段) ============
867
+ //
868
+ // PUT /api/v1/cloud/config:写入云端账号配置与设备名、自动推送开关
869
+ // - url / username:**空串 = 清空该项**(url+username+password 三项齐空 → 回到「未配置」)
870
+ // - **凭据三件套要么齐、要么全无**:url 与 username 皆为空 ⇒ **password 一并丢弃**(避免磁盘留下已失效的密码)
871
+ // - password:**缺省或空串 = 不修改**(响应从不回传,设置页表单留空即保留原值)
872
+ // - **URL 内嵌 userinfo(`https://用户名:密码@host/dav`)直接 400 拒绝**(不静默剥离——那会让用户以为已生效)
873
+ // - device:空串 = 回到缺省(简化 hostname);语法规则执行点在 shared sanitizeDeviceName(非空时)
874
+ // - autoPush:缺省 = 不修改(本机级开关,缺省 false)
875
+ // - url 非空时的归一化(http(s) 绝对地址、去尾斜杠)在路由层校验(→ 400 VALIDATION_ERROR)
876
+ export const cloudConfigPutReqSchema = z
877
+ .object({
878
+ url: z.string().optional(),
879
+ username: z.string().optional(),
880
+ password: z.string().optional(),
881
+ device: z.string().optional(),
882
+ autoPush: z.boolean().optional(),
883
+ })
884
+ .strict();
885
+ // POST /api/v1/cloud/push:推送一份本地备份(卡 4)
886
+ // - file_name 缺省 = 最新一份;须通过 parseBackupFileName 白名单(服务端校验 → 400)
887
+ // - force 缺省 false:云端 head ≠ 本机 lastPushedFileName 时 409 CLOUD_CONFLICT;
888
+ // true = 先把云端那份下载存进本地 .backups/(两边都留档)再覆盖云端
889
+ export const cloudPushReqSchema = z
890
+ .object({
891
+ file_name: z.string().optional(),
892
+ force: z.boolean().optional(),
893
+ })
894
+ .strict();
895
+ // POST /api/v1/cloud/pull:从云端拉取一份备份应用到当前项目(卡 5)
896
+ // - file_name 缺省 = 云端 head;须通过 parseBackupFileName 白名单(服务端校验 → 400)
897
+ // - 语义 = 三文件覆盖 + references/ 与 sessions/ **并集合并**(基线三方比较、删除优先);
898
+ // 与本地 restore(整体覆盖)不同,见 docs/api/100-api-cloud.md
899
+ export const cloudPullReqSchema = z
900
+ .object({
901
+ file_name: z.string().optional(),
902
+ })
903
+ .strict();
848
904
  // ============ chat SSE 事件 ============
849
905
  //
850
906
  // 事件集(服务端→客户端的 pi 事件投影)以 docs/api/80-api-chat.md 为契约。本文件**不再镜像**