@whispering233/ai-editor-shared 0.0.14 → 0.0.17

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.
@@ -1,7 +1,11 @@
1
- /** 实体类型(entities 表 type 列 CHECK 约束,schema.md)——event 为时间轴事件(决策 26);timepoint 为 G2 时间标签点(name=时间标签文本,data 空,决策 26 G2 修订) */
2
- export declare const ENTITY_TYPES: readonly ["character", "setting", "location", "hook", "event", "timepoint"];
1
+ /** 实体类型(entities 表 type 列 CHECK 约束,schema.md)——event 为时间轴事件(决策 26);timepoint 为 G2 时间标签点(name=时间标签文本,data 空,决策 26 G2 修订);reference 为参考资料(决策 36) */
2
+ export declare const ENTITY_TYPES: readonly ["character", "setting", "location", "hook", "event", "timepoint", "reference"];
3
3
  /** 实体类型(单数,从常量派生;与 types/entity.ts 的 EntityType 一致,测试断言保证) */
4
4
  export type EntityTypeValue = (typeof ENTITY_TYPES)[number];
5
+ /** 参考资料分类枚举(决策 36:外部素材/灵感笔记,非本书正文;data.type 取值) */
6
+ export declare const REFERENCE_TYPES: readonly ["material", "inspiration", "theory", "reference"];
7
+ /** 参考资料分类(从 REFERENCE_TYPES 派生) */
8
+ export type ReferenceTypeValue = (typeof REFERENCE_TYPES)[number];
5
9
  /**
6
10
  * 预定义关系类型(schema.md 关系类型表,共 17 个)
7
11
  * belongs_to 所属 / owns 拥有 / masters 掌握 / ally·rival·mentor·family 人物间 /
@@ -1 +1 @@
1
- {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAIA,2HAA2H;AAC3H,eAAO,MAAM,YAAY,6EAA8E,CAAC;AAExG,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,2MAkBjB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AAEnD,0CAA0C;AAC1C,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":"AAIA,kJAAkJ;AAClJ,eAAO,MAAM,YAAY,0FAA2F,CAAC;AAErH,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,mDAAmD;AACnD,eAAO,MAAM,eAAe,6DAA8D,CAAC;AAE3F,mCAAmC;AACnC,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,2MAkBjB,CAAC;AAEX,gCAAgC;AAChC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAG,WAAoB,CAAC;AAEnD,0CAA0C;AAC1C,eAAO,MAAM,mBAAmB,6CAA8C,CAAC;AAE/E,eAAe;AACf,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -1,8 +1,10 @@
1
1
  // 实体 / 关系常量
2
2
  // 契约来源:doc/database/schema.md(entities 表 type CHECK、预定义关系类型表第 66-80 行)
3
3
  // 常量命名 UPPER_SNAKE_CASE,as const 保持字面量类型
4
- /** 实体类型(entities 表 type 列 CHECK 约束,schema.md)——event 为时间轴事件(决策 26);timepoint 为 G2 时间标签点(name=时间标签文本,data 空,决策 26 G2 修订) */
5
- export const ENTITY_TYPES = ["character", "setting", "location", "hook", "event", "timepoint"];
4
+ /** 实体类型(entities 表 type 列 CHECK 约束,schema.md)——event 为时间轴事件(决策 26);timepoint 为 G2 时间标签点(name=时间标签文本,data 空,决策 26 G2 修订);reference 为参考资料(决策 36) */
5
+ export const ENTITY_TYPES = ["character", "setting", "location", "hook", "event", "timepoint", "reference"];
6
+ /** 参考资料分类枚举(决策 36:外部素材/灵感笔记,非本书正文;data.type 取值) */
7
+ export const REFERENCE_TYPES = ["material", "inspiration", "theory", "reference"];
6
8
  /**
7
9
  * 预定义关系类型(schema.md 关系类型表,共 17 个)
8
10
  * belongs_to 所属 / owns 拥有 / masters 掌握 / ally·rival·mentor·family 人物间 /
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/constants/entity.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,uEAAuE;AACvE,yCAAyC;AAEzC,2HAA2H;AAC3H,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAU,CAAC;AAKxG;;;;;;;;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,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD,0CAA0C;AAC1C,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,uEAAuE;AACvE,yCAAyC;AAEzC,kJAAkJ;AAClJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAU,CAAC;AAKrH,mDAAmD;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAK3F;;;;;;;;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,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAoB,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAU,CAAC"}
@@ -9,17 +9,17 @@ export declare const TOOL_PERMISSION: {
9
9
  /** 工具权限级别 */
10
10
  export type ToolPermission = (typeof TOOL_PERMISSION)[keyof typeof TOOL_PERMISSION];
11
11
  /** 查询类工具(自动,tools.md「查询类」):默认过滤软删对象(决策 12 修订) */
12
- export declare const QUERY_TOOLS: readonly ["get_entity", "search_entities", "query_relationships", "get_outline", "get_outline_path", "compute_state", "get_delta_history", "get_entity_summary"];
12
+ export declare const QUERY_TOOLS: readonly ["get_entity", "search_entities", "search_references", "query_relationships", "get_outline", "get_outline_path", "compute_state", "get_delta_history", "get_entity_summary"];
13
13
  /** 分析类工具(自动,tools.md「分析类」):结构化分析,不操作数据 */
14
14
  export declare const ANALYSIS_TOOLS: readonly ["analyze_consistency", "detect_conflicts", "trace_plot_paths", "find_orphan_elements", "suggest_connections"];
15
15
  /** 伏笔分析工具(自动,hooks.md「工具扩展」分析类) */
16
16
  export declare const HOOK_ANALYSIS_TOOLS: readonly ["analyze_hook_health", "trace_hook_lifecycle", "suggest_hook_payoff", "find_hook_opportunities", "detect_hook_conflicts"];
17
17
  /**
18
- * 提案类工具(需确认,tools.md「提案类」+ hooks.md「工具扩展」提案类,共 15 个)
18
+ * 提案类工具(需确认,tools.md「提案类」+ hooks.md「工具扩展」提案类,共 16 个)
19
19
  * AI 不能直接修改数据,propose_* 仅发出提案(proposal_id + 一句话摘要),
20
20
  * tool_result 不含预览细节(2026-08 修订);完整预览经 SSE proposal 事件推送 GUI
21
21
  */
22
- export declare const PROPOSAL_TOOLS: readonly ["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"];
22
+ export declare const PROPOSAL_TOOLS: readonly ["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"];
23
23
  /**
24
24
  * 执行类工具(不暴露给 LLM,tools.md「执行类」,共 13 个)
25
25
  * 用户确认提案后由 Tool Executor 调用;advance_hook/resolve_hook/abandon_hook 为复合写
@@ -28,9 +28,9 @@ export declare const PROPOSAL_TOOLS: readonly ["propose_create_entity", "propose
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
30
  /** 自动级工具(查询 + 分析 + 伏笔分析,共 18 个) */
31
- export declare const AUTO_TOOLS: readonly ["get_entity", "search_entities", "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"];
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
32
  /** 全部工具名(自动 18 + 提案 15 + 执行 13 = 46 个) */
33
- export declare const TOOL_NAMES: readonly ["get_entity", "search_entities", "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", "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"];
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];
36
36
  //# sourceMappingURL=tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAGA;;;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,iDAAiD;AACjD,eAAO,MAAM,WAAW,kKASd,CAAC;AAEX,0CAA0C;AAC1C,eAAO,MAAM,cAAc,yHAMjB,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,qIAMtB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,cAAc,sXAgBjB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,cAAc,uOAcjB,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,UAAU,0YAAuE,CAAC;AAE/F,0CAA0C;AAC1C,eAAO,MAAM,UAAU,i9BAAiE,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":"AAGA;;;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,iDAAiD;AACjD,eAAO,MAAM,WAAW,uLAUd,CAAC;AAEX,0CAA0C;AAC1C,eAAO,MAAM,cAAc,yHAMjB,CAAC;AAEX,mCAAmC;AACnC,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"}
@@ -12,6 +12,7 @@ export const TOOL_PERMISSION = {
12
12
  export const QUERY_TOOLS = [
13
13
  "get_entity",
14
14
  "search_entities",
15
+ "search_references", // 决策 36(批次九):参考资料搜索(自动权限)
15
16
  "query_relationships",
16
17
  "get_outline",
17
18
  "get_outline_path",
@@ -36,7 +37,7 @@ export const HOOK_ANALYSIS_TOOLS = [
36
37
  "detect_hook_conflicts",
37
38
  ];
38
39
  /**
39
- * 提案类工具(需确认,tools.md「提案类」+ hooks.md「工具扩展」提案类,共 15 个)
40
+ * 提案类工具(需确认,tools.md「提案类」+ hooks.md「工具扩展」提案类,共 16 个)
40
41
  * AI 不能直接修改数据,propose_* 仅发出提案(proposal_id + 一句话摘要),
41
42
  * tool_result 不含预览细节(2026-08 修订);完整预览经 SSE proposal 事件推送 GUI
42
43
  */
@@ -56,6 +57,7 @@ export const PROPOSAL_TOOLS = [
56
57
  "propose_resolve_hook",
57
58
  "propose_abandon_hook",
58
59
  "propose_reorder_timepoints", // G2(决策 26 修订注记):LLM 按时间点 name(时间标签)语义排序 → 提案确认
60
+ "propose_create_reference", // 决策 36(批次九):AI 建议保存参考资料(外部素材/灵感笔记)
59
61
  ];
60
62
  /**
61
63
  * 执行类工具(不暴露给 LLM,tools.md「执行类」,共 13 个)
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/constants/tool.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,iBAAiB;IACjB,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;CACb,CAAC;AAEX,mCAAmC;AACnC,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,gDAAgD;CACtE,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;AACvB,oEAAoE;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAKX,iDAAiD;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;IACZ,iBAAiB;IACjB,mBAAmB,EAAE,0BAA0B;IAC/C,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,0CAA0C;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,sBAAsB;IACtB,qBAAqB;CACb,CAAC;AAEX,mCAAmC;AACnC,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,gDAAgD;IAC9E,0BAA0B,EAAE,oCAAoC;CACxD,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,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { ComputeStateResult, DeltaRecord, EntitySummary, ProjectConfig, RelationRecord } from "./index.js";
2
+ import type { ComputeStateResult, DeltaRecord, EntitySummary, ProjectAgents, ProjectConfig, RelationRecord } from "./index.js";
3
3
  /** 实体类型(schema.md entities 表 CHECK 约束;与 ENTITY_TYPES 常量对齐) */
4
4
  export declare const entityTypeSchema: z.ZodEnum<{
5
5
  character: "character";
@@ -8,6 +8,7 @@ export declare const entityTypeSchema: z.ZodEnum<{
8
8
  hook: "hook";
9
9
  event: "event";
10
10
  timepoint: "timepoint";
11
+ reference: "reference";
11
12
  }>;
12
13
  /** 项目语言(schema.md project.json 契约) */
13
14
  export declare const projectLanguageSchema: z.ZodEnum<{
@@ -20,7 +21,7 @@ export declare const projectLanguageSchema: z.ZodEnum<{
20
21
  * (computeState 改为 skipped/conflicts 字段呈现,不再返回 409——保留枚举兼容历史引用);
21
22
  * 末尾四个为 tools.md 决策 15/16 补充命名(文档未给具体码名,按语义命名,供 SSE error 事件使用)
22
23
  */
23
- export declare const ERROR_CODES: readonly ["VALIDATION_ERROR", "ENTITY_NOT_FOUND", "RELATION_EXISTS", "EVENT_ALREADY_MOUNTED", "RELATION_NOT_FOUND", "OUTLINE_NODE_NOT_FOUND", "OUTLINE_ANCESTOR_DELETED", "INVALID_PROJECT_PATH", "PROPOSAL_STALE", "PROPOSAL_NOT_FOUND", "PROPOSAL_PROJECT_MISMATCH", "SCHEMA_VERSION_MISMATCH", "PROJECT_VERSION_NEWER", "BACKUP_TARGET_EXISTS", "DELTA_CONFLICT", "TOOL_RESULT_TOO_LARGE", "AGENT_DISPATCH_ERROR", "AGENT_INTERNAL_ERROR", "AGENT_MAX_ITERATIONS", "AGENT_TIMEOUT", "AGENT_TOKEN_BUDGET"];
24
+ export declare const ERROR_CODES: readonly ["VALIDATION_ERROR", "ENTITY_NOT_FOUND", "RELATION_EXISTS", "EVENT_ALREADY_MOUNTED", "RELATION_NOT_FOUND", "OUTLINE_NODE_NOT_FOUND", "OUTLINE_ANCESTOR_DELETED", "INVALID_PROJECT_PATH", "PROPOSAL_STALE", "PROPOSAL_NOT_FOUND", "PROPOSAL_PROJECT_MISMATCH", "SCHEMA_VERSION_MISMATCH", "PROJECT_VERSION_NEWER", "BACKUP_TARGET_EXISTS", "REFERENCE_FILE_MISSING", "DELTA_CONFLICT", "TOOL_RESULT_TOO_LARGE", "AGENT_DISPATCH_ERROR", "AGENT_INTERNAL_ERROR", "AGENT_MAX_ITERATIONS", "AGENT_TIMEOUT", "AGENT_TOKEN_BUDGET"];
24
25
  /** ErrorCode 枚举 schema */
25
26
  export declare const errorCodeSchema: z.ZodEnum<{
26
27
  VALIDATION_ERROR: "VALIDATION_ERROR";
@@ -37,6 +38,7 @@ export declare const errorCodeSchema: z.ZodEnum<{
37
38
  SCHEMA_VERSION_MISMATCH: "SCHEMA_VERSION_MISMATCH";
38
39
  PROJECT_VERSION_NEWER: "PROJECT_VERSION_NEWER";
39
40
  BACKUP_TARGET_EXISTS: "BACKUP_TARGET_EXISTS";
41
+ REFERENCE_FILE_MISSING: "REFERENCE_FILE_MISSING";
40
42
  DELTA_CONFLICT: "DELTA_CONFLICT";
41
43
  TOOL_RESULT_TOO_LARGE: "TOOL_RESULT_TOO_LARGE";
42
44
  AGENT_DISPATCH_ERROR: "AGENT_DISPATCH_ERROR";
@@ -71,6 +73,7 @@ export declare const apiErrorSchema: z.ZodObject<{
71
73
  SCHEMA_VERSION_MISMATCH: "SCHEMA_VERSION_MISMATCH";
72
74
  PROJECT_VERSION_NEWER: "PROJECT_VERSION_NEWER";
73
75
  BACKUP_TARGET_EXISTS: "BACKUP_TARGET_EXISTS";
76
+ REFERENCE_FILE_MISSING: "REFERENCE_FILE_MISSING";
74
77
  DELTA_CONFLICT: "DELTA_CONFLICT";
75
78
  TOOL_RESULT_TOO_LARGE: "TOOL_RESULT_TOO_LARGE";
76
79
  AGENT_DISPATCH_ERROR: "AGENT_DISPATCH_ERROR";
@@ -145,6 +148,28 @@ export declare const eventDataSchema: z.ZodObject<{
145
148
  }, z.core.$loose>;
146
149
  /** timepoint 专属字段(G2 时间标签点,决策 26 修订):data 空——时间标签文本 = name,可重命名,YAGNI 不加 data 字段 */
147
150
  export declare const timepointDataSchema: z.ZodObject<{}, z.core.$loose>;
151
+ /** reference 专属字段(决策 36 参考资料:type 分类枚举 / content 全文长文本 / source 来源 / tags 标签数组;
152
+ * 决策 43 修订:两类承载——kind = file(本地 md 文档:file_name 相对路径 + content 正文镜像 + file_mtime
153
+ * 上次同步快照)/ link(外源链接:url 必填 + content 可选备注);kind 缺省视为 link(存量条目运行时兼容);
154
+ * source 仅存量旧条目使用(新建不再写入)) */
155
+ export declare const referenceDataSchema: z.ZodObject<{
156
+ type: z.ZodOptional<z.ZodEnum<{
157
+ reference: "reference";
158
+ material: "material";
159
+ inspiration: "inspiration";
160
+ theory: "theory";
161
+ }>>;
162
+ kind: z.ZodOptional<z.ZodEnum<{
163
+ file: "file";
164
+ link: "link";
165
+ }>>;
166
+ file_name: z.ZodOptional<z.ZodString>;
167
+ file_mtime: z.ZodOptional<z.ZodString>;
168
+ url: z.ZodOptional<z.ZodString>;
169
+ content: z.ZodOptional<z.ZodString>;
170
+ source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
171
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
172
+ }, z.core.$loose>;
148
173
  /**
149
174
  * 各类型 data schema 注册表(服务端按实体 type 选用精确 schema 校验)
150
175
  * 创建/更新请求中的 data 本体使用宽松 record(entityCreateReqSchema),
@@ -199,8 +224,27 @@ export declare const ENTITY_DATA_SCHEMAS: {
199
224
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
200
225
  }, z.core.$loose>;
201
226
  readonly timepoint: z.ZodObject<{}, z.core.$loose>;
227
+ readonly reference: z.ZodObject<{
228
+ type: z.ZodOptional<z.ZodEnum<{
229
+ reference: "reference";
230
+ material: "material";
231
+ inspiration: "inspiration";
232
+ theory: "theory";
233
+ }>>;
234
+ kind: z.ZodOptional<z.ZodEnum<{
235
+ file: "file";
236
+ link: "link";
237
+ }>>;
238
+ file_name: z.ZodOptional<z.ZodString>;
239
+ file_mtime: z.ZodOptional<z.ZodString>;
240
+ url: z.ZodOptional<z.ZodString>;
241
+ content: z.ZodOptional<z.ZodString>;
242
+ source: z.ZodOptional<z.ZodNullable<z.ZodString>>;
243
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
244
+ }, z.core.$loose>;
202
245
  };
203
- /** ProjectConfig 响应(GET /api/v1/project/config;与 types/project.ts 的 ProjectConfig 对齐) */
246
+ /** ProjectConfig 响应(GET /api/v1/project/config;与 types/project.ts 的 ProjectConfig 对齐;
247
+ * `prompt` 已废弃(决策 41)不再返回——项目规则唯一事实源改为项目目录 AGENTS.md) */
204
248
  export declare const projectConfigSchema: z.ZodType<ProjectConfig>;
205
249
  export declare const projectCreateReqSchema: z.ZodObject<{
206
250
  path: z.ZodString;
@@ -210,8 +254,7 @@ export declare const projectCreateReqSchema: z.ZodObject<{
210
254
  zh: "zh";
211
255
  en: "en";
212
256
  }>>;
213
- prompt: z.ZodOptional<z.ZodString>;
214
- }, z.core.$strip>>;
257
+ }, z.core.$strict>>;
215
258
  }, z.core.$strict>;
216
259
  export declare const projectCreateResSchema: z.ZodObject<{
217
260
  id: z.ZodString;
@@ -249,13 +292,20 @@ export declare const projectConfigUpdateReqSchema: z.ZodObject<{
249
292
  zh: "zh";
250
293
  en: "en";
251
294
  }>>;
252
- prompt: z.ZodOptional<z.ZodString>;
253
295
  current_position: z.ZodOptional<z.ZodNullable<z.ZodString>>;
254
296
  backup_frequency_minutes: z.ZodOptional<z.ZodNullable<z.ZodUnion<z.ZodLiteral<5 | 15 | 10 | 30 | 60>[]>>>;
255
297
  }, z.core.$strict>;
256
298
  export declare const projectConfigUpdateResSchema: z.ZodObject<{
257
299
  updated: z.ZodLiteral<true>;
258
300
  }, z.core.$strip>;
301
+ export declare const projectAgentsGetResSchema: z.ZodType<ProjectAgents>;
302
+ export declare const projectAgentsPutReqSchema: z.ZodObject<{
303
+ content: z.ZodString;
304
+ }, z.core.$strict>;
305
+ export declare const projectAgentsPutResSchema: z.ZodObject<{
306
+ saved: z.ZodLiteral<true>;
307
+ updatedAt: z.ZodString;
308
+ }, z.core.$strip>;
259
309
  export declare const projectBackupReqSchema: z.ZodObject<{
260
310
  name: z.ZodOptional<z.ZodString>;
261
311
  }, z.core.$strict>;
@@ -331,6 +381,7 @@ export declare const entityDetailResSchema: z.ZodObject<{
331
381
  hook: "hook";
332
382
  event: "event";
333
383
  timepoint: "timepoint";
384
+ reference: "reference";
334
385
  }>;
335
386
  name: z.ZodString;
336
387
  data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -352,6 +403,7 @@ export declare const entityCreateResSchema: z.ZodObject<{
352
403
  hook: "hook";
353
404
  event: "event";
354
405
  timepoint: "timepoint";
406
+ reference: "reference";
355
407
  }>;
356
408
  name: z.ZodString;
357
409
  data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -673,6 +725,7 @@ export declare const chatSendReqSchema: z.ZodObject<{
673
725
  hook: "hook";
674
726
  event: "event";
675
727
  timepoint: "timepoint";
728
+ reference: "reference";
676
729
  }>>;
677
730
  focus_entity_id: z.ZodOptional<z.ZodString>;
678
731
  focus_node_id: z.ZodOptional<z.ZodString>;
@@ -716,13 +769,52 @@ export declare const proposalConfirmResSchema: z.ZodObject<{
716
769
  export declare const proposalRejectResSchema: z.ZodObject<{
717
770
  rejected: z.ZodLiteral<true>;
718
771
  }, z.core.$strip>;
772
+ /** 思考强度(决策 34:参考 pi 的 ThinkingLevel 档位——off / minimal / low / medium / high / xhigh / max;off = 不加 reasoning 参数) */
773
+ export declare const THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
774
+ export type ThinkingLevel = (typeof THINKING_LEVELS)[number];
775
+ /** 模型目录条目(GET /settings/llm 返回,供前端模型下拉与上下文占用分母) */
776
+ export declare const modelInfoSchema: z.ZodObject<{
777
+ id: z.ZodString;
778
+ provider: z.ZodString;
779
+ displayName: z.ZodString;
780
+ contextWindow: z.ZodNumber;
781
+ maxTokens: z.ZodNumber;
782
+ reasoning: z.ZodBoolean;
783
+ }, z.core.$strip>;
784
+ export type LlmModelInfo = z.infer<typeof modelInfoSchema>;
719
785
  export declare const settingsLlmGetResSchema: z.ZodObject<{
720
786
  model: z.ZodString;
787
+ thinkingLevel: z.ZodEnum<{
788
+ off: "off";
789
+ minimal: "minimal";
790
+ low: "low";
791
+ medium: "medium";
792
+ high: "high";
793
+ xhigh: "xhigh";
794
+ max: "max";
795
+ }>;
721
796
  apiKeySet: z.ZodBoolean;
722
797
  apiKeyMasked: z.ZodOptional<z.ZodString>;
798
+ models: z.ZodArray<z.ZodObject<{
799
+ id: z.ZodString;
800
+ provider: z.ZodString;
801
+ displayName: z.ZodString;
802
+ contextWindow: z.ZodNumber;
803
+ maxTokens: z.ZodNumber;
804
+ reasoning: z.ZodBoolean;
805
+ }, z.core.$strip>>;
723
806
  }, z.core.$strip>;
724
807
  export declare const settingsLlmPutReqSchema: z.ZodObject<{
725
808
  model: z.ZodOptional<z.ZodString>;
809
+ thinking_level: z.ZodOptional<z.ZodEnum<{
810
+ off: "off";
811
+ minimal: "minimal";
812
+ low: "low";
813
+ medium: "medium";
814
+ high: "high";
815
+ xhigh: "xhigh";
816
+ max: "max";
817
+ }>>;
726
818
  api_key: z.ZodOptional<z.ZodString>;
727
819
  }, z.core.$strict>;
728
820
  export declare const settingsLlmPutResSchema: z.ZodObject<{
@@ -773,6 +865,7 @@ export declare const sseErrorEventSchema: z.ZodObject<{
773
865
  SCHEMA_VERSION_MISMATCH: "SCHEMA_VERSION_MISMATCH";
774
866
  PROJECT_VERSION_NEWER: "PROJECT_VERSION_NEWER";
775
867
  BACKUP_TARGET_EXISTS: "BACKUP_TARGET_EXISTS";
868
+ REFERENCE_FILE_MISSING: "REFERENCE_FILE_MISSING";
776
869
  DELTA_CONFLICT: "DELTA_CONFLICT";
777
870
  TOOL_RESULT_TOO_LARGE: "TOOL_RESULT_TOO_LARGE";
778
871
  AGENT_DISPATCH_ERROR: "AGENT_DISPATCH_ERROR";
@@ -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
@@ -7,7 +7,7 @@
7
7
  // client 只消费推断出的类型与常量,不打包校验函数(避免 50KB 级依赖进浏览器包)。
8
8
  // zod 版本:^4(注意 v4 API:z.record 必须两参、z.enum 接受 readonly 数组)
9
9
  import { z } from "zod";
10
- import { ENTITY_TYPES, RELATION_TYPES } from "../constants/entity.js";
10
+ import { ENTITY_TYPES, REFERENCE_TYPES, RELATION_TYPES } from "../constants/entity.js";
11
11
  import { HOOK_STATUSES, PAYOFF_TIMING } from "../constants/hook.js";
12
12
  import { CONFLICT_LEVELS } from "../constants/outline.js";
13
13
  import { BACKUP_FREQUENCIES } from "../constants/backup.js";
@@ -39,6 +39,7 @@ export const ERROR_CODES = [
39
39
  "SCHEMA_VERSION_MISMATCH", // 409 导入 zip 的 data.db user_version 与当前程序版本不匹配(E2;拒绝导入,不静默重建,release-review §二)
40
40
  "PROJECT_VERSION_NEWER", // 409 open 时项目 data.db user_version 高于当前程序版本(E4;拒绝打开并提示升级程序,堵降级数据丢失,release-review §一)
41
41
  "BACKUP_TARGET_EXISTS", // 409 重命名备份目标文件名已存在(决策 29,B2.6:renameSync 目标存在会静默覆盖——显式拒绝防数据丢失)
42
+ "REFERENCE_FILE_MISSING", // 409 参考资料 file 类文件缺失(决策 43:PUT 更新时读原文件失败——外部删除,提示先扫描同步)
42
43
  // ---- 废弃(保留兼容)----
43
44
  "DELTA_CONFLICT", // 已废弃(2026-08 修订:computeState 以 conflicts 字段替代 409)
44
45
  // ---- tools.md 决策 15/16 补充命名(SSE error 事件用)----
@@ -128,6 +129,22 @@ export const eventDataSchema = z
128
129
  .passthrough(); // 允许未知字段(创作工具,用户自定义字段自由)
129
130
  /** timepoint 专属字段(G2 时间标签点,决策 26 修订):data 空——时间标签文本 = name,可重命名,YAGNI 不加 data 字段 */
130
131
  export const timepointDataSchema = z.object({}).passthrough();
132
+ /** reference 专属字段(决策 36 参考资料:type 分类枚举 / content 全文长文本 / source 来源 / tags 标签数组;
133
+ * 决策 43 修订:两类承载——kind = file(本地 md 文档:file_name 相对路径 + content 正文镜像 + file_mtime
134
+ * 上次同步快照)/ link(外源链接:url 必填 + content 可选备注);kind 缺省视为 link(存量条目运行时兼容);
135
+ * source 仅存量旧条目使用(新建不再写入)) */
136
+ export const referenceDataSchema = z
137
+ .object({
138
+ type: z.enum(REFERENCE_TYPES).optional(), // 缺省 material(写入侧兜底)
139
+ kind: z.enum(["file", "link"]).optional(), // 决策 43:缺省视为 link
140
+ file_name: z.string().optional(), // file 类:references/ 下相对路径(服务端写入,客户端只读)
141
+ file_mtime: z.string().optional(), // file 类:上次同步时文件 mtime(scan 比对基准,服务端写入)
142
+ url: z.string().optional(), // link 类:外源链接 URL(创建时必填校验在服务端 route 层)
143
+ content: z.string().optional(),
144
+ source: z.string().nullable().optional(), // 存量旧条目兼容(决策 43:新建不再写入)
145
+ tags: z.array(z.string()).optional(),
146
+ })
147
+ .passthrough(); // 允许未知字段(创作工具,用户自定义字段自由)
131
148
  /**
132
149
  * 各类型 data schema 注册表(服务端按实体 type 选用精确 schema 校验)
133
150
  * 创建/更新请求中的 data 本体使用宽松 record(entityCreateReqSchema),
@@ -140,14 +157,15 @@ export const ENTITY_DATA_SCHEMAS = {
140
157
  hook: hookDataSchema,
141
158
  event: eventDataSchema,
142
159
  timepoint: timepointDataSchema, // G2 时间标签点:data 空
160
+ reference: referenceDataSchema, // 参考资料(决策 36)
143
161
  };
144
162
  // ============ project 端点(endpoints.md「项目管理」) ============
145
- /** ProjectConfig 响应(GET /api/v1/project/config;与 types/project.ts 的 ProjectConfig 对齐) */
163
+ /** ProjectConfig 响应(GET /api/v1/project/config;与 types/project.ts 的 ProjectConfig 对齐;
164
+ * `prompt` 已废弃(决策 41)不再返回——项目规则唯一事实源改为项目目录 AGENTS.md) */
146
165
  export const projectConfigSchema = z.object({
147
166
  id: z.string(),
148
167
  name: z.string(),
149
168
  language: projectLanguageSchema,
150
- prompt: z.string(), // 项目级提示词(决策 7)
151
169
  schemaVersion: z.number().int(), // 决策 13
152
170
  currentPosition: z.string().nullable(), // 「当前位置」节点 id;null = 未设置(决策 21)
153
171
  backupFrequencyMinutes: z.number().int().nullable(), // 自动备份频率(决策 27);null = 关闭;缺省 10 由读侧兜底
@@ -162,8 +180,10 @@ export const projectCreateReqSchema = z
162
180
  .object({
163
181
  name: z.string().optional(),
164
182
  language: projectLanguageSchema.optional(),
165
- prompt: z.string().optional(),
183
+ // prompt 已废弃(决策 41):不再接受(strict schema 传入 → 400 VALIDATION_ERROR);
184
+ // 项目规则改由 PUT /api/v1/project/agents 写入 AGENTS.md
166
185
  })
186
+ .strict()
167
187
  .optional(),
168
188
  })
169
189
  .strict();
@@ -209,7 +229,8 @@ export const projectConfigUpdateReqSchema = z
209
229
  .object({
210
230
  name: z.string().optional(),
211
231
  language: projectLanguageSchema.optional(),
212
- prompt: z.string().optional(),
232
+ // prompt 已废弃(决策 41):不再接受(strict schema 传入 → 400 VALIDATION_ERROR);
233
+ // 项目规则改由 PUT /api/v1/project/agents 写入 AGENTS.md
213
234
  current_position: z.string().nullable().optional(), // 须指向存在的非软删大纲节点(服务端校验)
214
235
  /**
215
236
  * 自动备份频率(决策 27):仅接受枚举 5/10/15/30/60(BACKUP_FREQUENCIES),其他(含 0)→ 400
@@ -221,6 +242,26 @@ export const projectConfigUpdateReqSchema = z
221
242
  export const projectConfigUpdateResSchema = z.object({
222
243
  updated: z.literal(true),
223
244
  });
245
+ // GET /api/v1/project/agents(决策 41:项目规则文件 AGENTS.md——唯一事实源,取代 project.json `prompt`)
246
+ // 语义:无当前项目 → 409 NO_PROJECT_OPEN;文件不存在不报错(exists:false + 空串);
247
+ // updatedAt = 文件 mtime(ISO 8601,外部修改检测依据);读取每次实时读文件不缓存
248
+ export const projectAgentsGetResSchema = z.object({
249
+ content: z.string(), // AGENTS.md 文件内容(文件不存在 → 空串)
250
+ exists: z.boolean(), // 文件是否存在(false 时 content 为空串)
251
+ updatedAt: z.string().nullable(), // 文件 mtime(ISO 8601;文件不存在 → null)
252
+ });
253
+ // PUT /api/v1/project/agents(决策 41:设置页直接编辑 AGENTS.md 文件内容)
254
+ // 语义:整体替换(非追加);空串 = 清空规则(保留空文件不删除);文件不存在自动创建;
255
+ // 写入走原子写(决策 11 同款);写入后返回新 mtime(前端更新本地比对基线)
256
+ export const projectAgentsPutReqSchema = z
257
+ .object({
258
+ content: z.string(), // AGENTS.md 完整内容(整体替换;空串 = 清空规则文件,保留空文件不删除)
259
+ })
260
+ .strict();
261
+ export const projectAgentsPutResSchema = z.object({
262
+ saved: z.literal(true),
263
+ updatedAt: z.string(), // 写入后的文件 mtime(ISO 8601)——前端更新本地比对基线
264
+ });
224
265
  // POST /api/v1/project/backup(决策 28 新增:手动备份可携带自定义名称)
225
266
  // - 请求体可选 `name`(string);空串/缺省 → 无自定义名称(纯时间戳文件名)。
226
267
  // - **形状校验仅限类型**(oracle 审核 P2-1:zod 与 sanitize 的「.zip 剥离 + 长度」判定
@@ -722,16 +763,30 @@ export const proposalRejectResSchema = z.object({
722
763
  rejected: z.literal(true),
723
764
  });
724
765
  // ============ settings 端点(endpoints.md「系统设置」,决策 17) ============
725
- // GET /api/v1/settings/llm(key 不回传明文)
766
+ /** 思考强度(决策 34:参考 pi 的 ThinkingLevel 档位——off / minimal / low / medium / high / xhigh / max;off = 不加 reasoning 参数) */
767
+ export const THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
768
+ /** 模型目录条目(GET /settings/llm 返回,供前端模型下拉与上下文占用分母) */
769
+ export const modelInfoSchema = z.object({
770
+ id: z.string(),
771
+ provider: z.string(),
772
+ displayName: z.string(),
773
+ contextWindow: z.number(),
774
+ maxTokens: z.number(),
775
+ reasoning: z.boolean(),
776
+ });
777
+ // GET /api/v1/settings/llm(key 不回传明文;models 为可用模型目录,当前 model 必在 list 内)
726
778
  export const settingsLlmGetResSchema = z.object({
727
779
  model: z.string(), // 默认 "deepseek-v4-flash"
780
+ thinkingLevel: z.enum(THINKING_LEVELS), // 思考强度(决策 34;缺省 high)
728
781
  apiKeySet: z.boolean(),
729
782
  apiKeyMasked: z.string().optional(), // 掩码展示(utils/format.ts maskApiKey)
783
+ models: z.array(modelInfoSchema), // 模型目录(决策 34 getAvailableModels)
730
784
  });
731
785
  // PUT /api/v1/settings/llm(写入 ~/.ai-editor/config.json,绝不入项目文件,决策 17)
732
786
  export const settingsLlmPutReqSchema = z
733
787
  .object({
734
788
  model: z.string().optional(),
789
+ thinking_level: z.enum(THINKING_LEVELS).optional(),
735
790
  api_key: z.string().optional(), // 空字符串 = 清除已保存 key
736
791
  })
737
792
  .strict();