@whispering233/ai-editor-shared 0.0.1

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 (69) hide show
  1. package/dist/constants/entity.d.ts +21 -0
  2. package/dist/constants/entity.d.ts.map +1 -0
  3. package/dist/constants/entity.js +35 -0
  4. package/dist/constants/entity.js.map +1 -0
  5. package/dist/constants/hook.d.ts +21 -0
  6. package/dist/constants/hook.d.ts.map +1 -0
  7. package/dist/constants/hook.js +35 -0
  8. package/dist/constants/hook.js.map +1 -0
  9. package/dist/constants/index.d.ts +5 -0
  10. package/dist/constants/index.d.ts.map +1 -0
  11. package/dist/constants/index.js +7 -0
  12. package/dist/constants/index.js.map +1 -0
  13. package/dist/constants/outline.d.ts +5 -0
  14. package/dist/constants/outline.d.ts.map +1 -0
  15. package/dist/constants/outline.js +7 -0
  16. package/dist/constants/outline.js.map +1 -0
  17. package/dist/constants/tool.d.ts +35 -0
  18. package/dist/constants/tool.d.ts.map +1 -0
  19. package/dist/constants/tool.js +82 -0
  20. package/dist/constants/tool.js.map +1 -0
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +5 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/types/api.d.ts +728 -0
  26. package/dist/types/api.d.ts.map +1 -0
  27. package/dist/types/api.js +693 -0
  28. package/dist/types/api.js.map +1 -0
  29. package/dist/types/chat.d.ts +42 -0
  30. package/dist/types/chat.d.ts.map +1 -0
  31. package/dist/types/chat.js +4 -0
  32. package/dist/types/chat.js.map +1 -0
  33. package/dist/types/entity.d.ts +179 -0
  34. package/dist/types/entity.d.ts.map +1 -0
  35. package/dist/types/entity.js +6 -0
  36. package/dist/types/entity.js.map +1 -0
  37. package/dist/types/index.d.ts +7 -0
  38. package/dist/types/index.d.ts.map +1 -0
  39. package/dist/types/index.js +2 -0
  40. package/dist/types/index.js.map +1 -0
  41. package/dist/types/outline.d.ts +99 -0
  42. package/dist/types/outline.d.ts.map +1 -0
  43. package/dist/types/outline.js +6 -0
  44. package/dist/types/outline.js.map +1 -0
  45. package/dist/types/project.d.ts +33 -0
  46. package/dist/types/project.d.ts.map +1 -0
  47. package/dist/types/project.js +4 -0
  48. package/dist/types/project.js.map +1 -0
  49. package/dist/types/tool.d.ts +304 -0
  50. package/dist/types/tool.d.ts.map +1 -0
  51. package/dist/types/tool.js +296 -0
  52. package/dist/types/tool.js.map +1 -0
  53. package/dist/utils/format.d.ts +23 -0
  54. package/dist/utils/format.d.ts.map +1 -0
  55. package/dist/utils/format.js +57 -0
  56. package/dist/utils/format.js.map +1 -0
  57. package/dist/utils/id.d.ts +28 -0
  58. package/dist/utils/id.d.ts.map +1 -0
  59. package/dist/utils/id.js +48 -0
  60. package/dist/utils/id.js.map +1 -0
  61. package/dist/utils/index.d.ts +4 -0
  62. package/dist/utils/index.d.ts.map +1 -0
  63. package/dist/utils/index.js +6 -0
  64. package/dist/utils/index.js.map +1 -0
  65. package/dist/utils/mapping.d.ts +28 -0
  66. package/dist/utils/mapping.d.ts.map +1 -0
  67. package/dist/utils/mapping.js +223 -0
  68. package/dist/utils/mapping.js.map +1 -0
  69. package/package.json +42 -0
@@ -0,0 +1,304 @@
1
+ import { z } from "zod";
2
+ /** get_entity 入参:type(实体类型)+ id;id 前缀体系全局唯一,type 用于回显与一致性校验 */
3
+ export declare const getEntityArgsSchema: z.ZodObject<{
4
+ type: z.ZodEnum<{
5
+ character: "character";
6
+ setting: "setting";
7
+ location: "location";
8
+ hook: "hook";
9
+ }>;
10
+ id: z.ZodString;
11
+ }, z.core.$strict>;
12
+ export type GetEntityArgs = z.infer<typeof getEntityArgsSchema>;
13
+ /**
14
+ * search_entities 入参:type + query(name 模糊匹配)+ filters(data 字段过滤)
15
+ * filters.status:data.status 字符串相等匹配;filters.tags:data.tags 数组须包含全部指定 tags(AND)
16
+ */
17
+ export declare const searchEntitiesArgsSchema: z.ZodObject<{
18
+ type: z.ZodEnum<{
19
+ character: "character";
20
+ setting: "setting";
21
+ location: "location";
22
+ hook: "hook";
23
+ }>;
24
+ query: z.ZodString;
25
+ filters: z.ZodOptional<z.ZodObject<{
26
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ status: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>>;
29
+ }, z.core.$strict>;
30
+ export type SearchEntitiesArgs = z.infer<typeof searchEntitiesArgsSchema>;
31
+ /**
32
+ * query_relationships 入参:source_type/target_type 为自由字符串(实体类型或 outline_node);
33
+ * relation_type 用 z.enum(RELATION_TYPES) **白名单校验**(schema.md 预定义 16 种,
34
+ * 与 REST relationQuerySchema 的宽松 string 不同——工具参数由 LLM 生成,枚举提前拦非法值);
35
+ * depth 1=紧邻 / 2=k跳 / 3=全量(必填,与 API 层一致)
36
+ */
37
+ export declare const queryRelationshipsArgsSchema: z.ZodObject<{
38
+ source_type: z.ZodOptional<z.ZodString>;
39
+ source_id: z.ZodOptional<z.ZodString>;
40
+ target_type: z.ZodOptional<z.ZodString>;
41
+ target_id: z.ZodOptional<z.ZodString>;
42
+ relation_type: z.ZodOptional<z.ZodEnum<{
43
+ belongs_to: "belongs_to";
44
+ owns: "owns";
45
+ masters: "masters";
46
+ ally: "ally";
47
+ rival: "rival";
48
+ mentor: "mentor";
49
+ family: "family";
50
+ kills: "kills";
51
+ appears_in: "appears_in";
52
+ occurs_at: "occurs_at";
53
+ plot_edge: "plot_edge";
54
+ plants: "plants";
55
+ advances: "advances";
56
+ resolves: "resolves";
57
+ depends_on: "depends_on";
58
+ involves: "involves";
59
+ }>>;
60
+ depth: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
61
+ }, z.core.$strict>;
62
+ export type QueryRelationshipsArgs = z.infer<typeof queryRelationshipsArgsSchema>;
63
+ /** get_outline 入参:无参;默认不含 metadata 统计(省 token,需统计走 API with_metadata) */
64
+ export declare const getOutlineArgsSchema: z.ZodObject<{}, z.core.$strict>;
65
+ export type GetOutlineArgs = z.infer<typeof getOutlineArgsSchema>;
66
+ /** get_outline_path 入参:node_id(根 → 该节点的路径 ID 列表,含 root) */
67
+ export declare const getOutlinePathArgsSchema: z.ZodObject<{
68
+ node_id: z.ZodString;
69
+ }, z.core.$strict>;
70
+ export type GetOutlinePathArgs = z.infer<typeof getOutlinePathArgsSchema>;
71
+ /**
72
+ * compute_state 入参(与 POST /api/v1/delta/compute 同构,api.ts deltaComputeReqSchema):
73
+ * 目标实体到达 at_node_id 时的累积状态(只沿大纲树父链累积已确认 Delta,决策 9)
74
+ */
75
+ export declare const computeStateArgsSchema: z.ZodObject<{
76
+ target_type: z.ZodString;
77
+ target_id: z.ZodString;
78
+ at_node_id: z.ZodString;
79
+ }, z.core.$strict>;
80
+ export type ComputeStateArgs = z.infer<typeof computeStateArgsSchema>;
81
+ /** get_delta_history 入参:target_type + target_id(该实体的全部属性变更记录,按时间/节点排序) */
82
+ export declare const getDeltaHistoryArgsSchema: z.ZodObject<{
83
+ target_type: z.ZodString;
84
+ target_id: z.ZodString;
85
+ }, z.core.$strict>;
86
+ export type GetDeltaHistoryArgs = z.infer<typeof getDeltaHistoryArgsSchema>;
87
+ /** get_entity_summary 入参:type(指定类型实体的统计数据:总数 + 类型专属分布) */
88
+ export declare const getEntitySummaryArgsSchema: z.ZodObject<{
89
+ type: z.ZodEnum<{
90
+ character: "character";
91
+ setting: "setting";
92
+ location: "location";
93
+ hook: "hook";
94
+ }>;
95
+ }, z.core.$strict>;
96
+ export type GetEntitySummaryArgs = z.infer<typeof getEntitySummaryArgsSchema>;
97
+ /** analyze_consistency 入参:entity_id(检查该实体档案内部的矛盾,如性格反义词对/状态冲突) */
98
+ export declare const analyzeConsistencyArgsSchema: z.ZodObject<{
99
+ entity_id: z.ZodString;
100
+ }, z.core.$strict>;
101
+ export type AnalyzeConsistencyArgs = z.infer<typeof analyzeConsistencyArgsSchema>;
102
+ /**
103
+ * detect_conflicts 入参:types 限定参与检测的实体类型(缺省全部);
104
+ * relation_filter 限定参与检测的关系类型(缺省用内置对称/互斥/互杀规则集)。
105
+ * 检测对象:对称关系单向缺失(ally/family)、互斥关系并存(ally+rival)、互杀(kills×2)。
106
+ */
107
+ export declare const detectConflictsArgsSchema: z.ZodObject<{
108
+ types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
109
+ character: "character";
110
+ setting: "setting";
111
+ location: "location";
112
+ hook: "hook";
113
+ }>>>;
114
+ relation_filter: z.ZodOptional<z.ZodArray<z.ZodEnum<{
115
+ belongs_to: "belongs_to";
116
+ owns: "owns";
117
+ masters: "masters";
118
+ ally: "ally";
119
+ rival: "rival";
120
+ mentor: "mentor";
121
+ family: "family";
122
+ kills: "kills";
123
+ appears_in: "appears_in";
124
+ occurs_at: "occurs_at";
125
+ plot_edge: "plot_edge";
126
+ plants: "plants";
127
+ advances: "advances";
128
+ resolves: "resolves";
129
+ depends_on: "depends_on";
130
+ involves: "involves";
131
+ }>>>;
132
+ }, z.core.$strict>;
133
+ export type DetectConflictsArgs = z.infer<typeof detectConflictsArgsSchema>;
134
+ /** trace_plot_paths 入参:from_node_id → to_node_id(大纲节点;输出树路径 + plot_edge 连线路径) */
135
+ export declare const tracePlotPathsArgsSchema: z.ZodObject<{
136
+ from_node_id: z.ZodString;
137
+ to_node_id: z.ZodString;
138
+ }, z.core.$strict>;
139
+ export type TracePlotPathsArgs = z.infer<typeof tracePlotPathsArgsSchema>;
140
+ /** find_orphan_elements 入参:无参(全项目扫描:闲置角色/未解决变更/悬空关系/跨存储软删不一致) */
141
+ export declare const findOrphanElementsArgsSchema: z.ZodObject<{}, z.core.$strict>;
142
+ export type FindOrphanElementsArgs = z.infer<typeof findOrphanElementsArgsSchema>;
143
+ /** suggest_connections 入参:entity_id(基于共享场景/共同邻居/同分类等信号建议潜在关联) */
144
+ export declare const suggestConnectionsArgsSchema: z.ZodObject<{
145
+ entity_id: z.ZodString;
146
+ }, z.core.$strict>;
147
+ export type SuggestConnectionsArgs = z.infer<typeof suggestConnectionsArgsSchema>;
148
+ /** analyze_hook_health 入参:无参(全项目活跃伏笔健康总览:stale/overdue/blocked/warnings) */
149
+ export declare const analyzeHookHealthArgsSchema: z.ZodObject<{}, z.core.$strict>;
150
+ export type AnalyzeHookHealthArgs = z.infer<typeof analyzeHookHealthArgsSchema>;
151
+ /** trace_hook_lifecycle 入参:hook_id(埋设/推进/回收节点 + 休眠章数 + 时间线图) */
152
+ export declare const traceHookLifecycleArgsSchema: z.ZodObject<{
153
+ hook_id: z.ZodString;
154
+ }, z.core.$strict>;
155
+ export type TraceHookLifecycleArgs = z.infer<typeof traceHookLifecycleArgsSchema>;
156
+ /** suggest_hook_payoff 入参:hook_id(基于埋设章节与半衰期推荐理想回收场景,top 3) */
157
+ export declare const suggestHookPayoffArgsSchema: z.ZodObject<{
158
+ hook_id: z.ZodString;
159
+ }, z.core.$strict>;
160
+ export type SuggestHookPayoffArgs = z.infer<typeof suggestHookPayoffArgsSchema>;
161
+ /** find_hook_opportunities 入参:outline_node_id(分析节点叙事特征,建议适合的伏笔类别) */
162
+ export declare const findHookOpportunitiesArgsSchema: z.ZodObject<{
163
+ outline_node_id: z.ZodString;
164
+ }, z.core.$strict>;
165
+ export type FindHookOpportunitiesArgs = z.infer<typeof findHookOpportunitiesArgsSchema>;
166
+ /** detect_hook_conflicts 入参:无参(依赖循环/依赖废弃/时间悖论检测) */
167
+ export declare const detectHookConflictsArgsSchema: z.ZodObject<{}, z.core.$strict>;
168
+ export type DetectHookConflictsArgs = z.infer<typeof detectHookConflictsArgsSchema>;
169
+ /** 入参:type(实体类型)+ name(必填)+ data(可选自定义字段) */
170
+ export declare const proposeCreateEntityArgsSchema: z.ZodObject<{
171
+ type: z.ZodEnum<{
172
+ character: "character";
173
+ setting: "setting";
174
+ location: "location";
175
+ hook: "hook";
176
+ }>;
177
+ name: z.ZodString;
178
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
179
+ }, z.core.$strict>;
180
+ export type ProposeCreateEntityArgs = z.infer<typeof proposeCreateEntityArgsSchema>;
181
+ /** 入参:entity_id + patches(data 部分字段,至少一项);快照校验基于实体自身 updated_at(决策 14) */
182
+ export declare const proposeUpdateEntityArgsSchema: z.ZodObject<{
183
+ entity_id: z.ZodString;
184
+ patches: z.ZodRecord<z.ZodString, z.ZodUnknown>;
185
+ }, z.core.$strict>;
186
+ export type ProposeUpdateEntityArgs = z.infer<typeof proposeUpdateEntityArgsSchema>;
187
+ /** 入参:entity_id(软删 + 级联,可回收站还原,决策 12) */
188
+ export declare const proposeDeleteEntityArgsSchema: z.ZodObject<{
189
+ entity_id: z.ZodString;
190
+ }, z.core.$strict>;
191
+ export type ProposeDeleteEntityArgs = z.infer<typeof proposeDeleteEntityArgsSchema>;
192
+ /**
193
+ * 入参:source/target 为端点 id(实体 id 或大纲节点 id,类型生成时自动识别);
194
+ * type 白名单(RELATION_TYPES 16 种,含 plot_edge/plants/advances/resolves);metadata 可选
195
+ */
196
+ export declare const proposeAddRelationArgsSchema: z.ZodObject<{
197
+ source: z.ZodString;
198
+ target: z.ZodString;
199
+ type: z.ZodEnum<{
200
+ belongs_to: "belongs_to";
201
+ owns: "owns";
202
+ masters: "masters";
203
+ ally: "ally";
204
+ rival: "rival";
205
+ mentor: "mentor";
206
+ family: "family";
207
+ kills: "kills";
208
+ appears_in: "appears_in";
209
+ occurs_at: "occurs_at";
210
+ plot_edge: "plot_edge";
211
+ plants: "plants";
212
+ advances: "advances";
213
+ resolves: "resolves";
214
+ depends_on: "depends_on";
215
+ involves: "involves";
216
+ }>;
217
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
218
+ }, z.core.$strict>;
219
+ export type ProposeAddRelationArgs = z.infer<typeof proposeAddRelationArgsSchema>;
220
+ /** 入参:relation_id(手动删关系 = 物理删,不进回收站,决策 12) */
221
+ export declare const proposeRemoveRelationArgsSchema: z.ZodObject<{
222
+ relation_id: z.ZodString;
223
+ }, z.core.$strict>;
224
+ export type ProposeRemoveRelationArgs = z.infer<typeof proposeRemoveRelationArgsSchema>;
225
+ /** 入参:node_id(触发节点)+ target(变更目标 id,实体或大纲节点)+ changes(至少一项,复用 deltaChangeSchema) */
226
+ export declare const proposeAddDeltaArgsSchema: z.ZodObject<{
227
+ node_id: z.ZodString;
228
+ target: z.ZodString;
229
+ changes: z.ZodArray<z.ZodObject<{
230
+ field: z.ZodString;
231
+ op: z.ZodEnum<{
232
+ set: "set";
233
+ update: "update";
234
+ add: "add";
235
+ remove: "remove";
236
+ }>;
237
+ from: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
238
+ to: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
239
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
240
+ }, z.core.$strip>>;
241
+ }, z.core.$strict>;
242
+ export type ProposeAddDeltaArgs = z.infer<typeof proposeAddDeltaArgsSchema>;
243
+ /** 入参:type(volume|chapter|scene)+ title + parent_id(缺省挂根;scene 必须挂 chapter,决策 19) */
244
+ export declare const proposeOutlineNodeArgsSchema: z.ZodObject<{
245
+ type: z.ZodEnum<{
246
+ volume: "volume";
247
+ chapter: "chapter";
248
+ scene: "scene";
249
+ }>;
250
+ title: z.ZodString;
251
+ parent_id: z.ZodOptional<z.ZodString>;
252
+ }, z.core.$strict>;
253
+ export type ProposeOutlineNodeArgs = z.infer<typeof proposeOutlineNodeArgsSchema>;
254
+ /**
255
+ * 入参:node_id + parent_id(目标父节点,**可为 "root"**——决策 19 允许 volume/chapter 挂根,
256
+ * db moveOutlineNode 支持 parentId === "root")+ order(目标位置,0 起)。
257
+ * order 无范围上限:超出目标父 children 长度的行为(clamp 或抛错)由 S6.7/db 执行时定义,
258
+ * 生成时校验不做上限(提案只承载意图,合法性由执行层兜底)。
259
+ */
260
+ export declare const proposeMoveNodeArgsSchema: z.ZodObject<{
261
+ node_id: z.ZodString;
262
+ parent_id: z.ZodString;
263
+ order: z.ZodNumber;
264
+ }, z.core.$strict>;
265
+ export type ProposeMoveNodeArgs = z.infer<typeof proposeMoveNodeArgsSchema>;
266
+ /** 入参:node_id(软删 + 递归子树,可回收站还原,决策 12) */
267
+ export declare const proposeDeleteNodeArgsSchema: z.ZodObject<{
268
+ node_id: z.ZodString;
269
+ }, z.core.$strict>;
270
+ export type ProposeDeleteNodeArgs = z.infer<typeof proposeDeleteNodeArgsSchema>;
271
+ /** 入参:name + data(可选伏笔字段,如 payoff_timing/half_life/expected_resolve_node_id)+ plant_at_node_id(可选埋设节点) */
272
+ export declare const proposeCreateHookArgsSchema: z.ZodObject<{
273
+ name: z.ZodString;
274
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
275
+ plant_at_node_id: z.ZodOptional<z.ZodString>;
276
+ }, z.core.$strict>;
277
+ export type ProposeCreateHookArgs = z.infer<typeof proposeCreateHookArgsSchema>;
278
+ /** 入参:hook_id + patches(data 部分字段,至少一项);快照校验基于伏笔实体自身 updated_at(决策 14) */
279
+ export declare const proposeUpdateHookArgsSchema: z.ZodObject<{
280
+ hook_id: z.ZodString;
281
+ patches: z.ZodRecord<z.ZodString, z.ZodUnknown>;
282
+ }, z.core.$strict>;
283
+ export type ProposeUpdateHookArgs = z.infer<typeof proposeUpdateHookArgsSchema>;
284
+ /** 入参:hook_id + node_id(推进发生的节点)+ description(推进内容描述;确认后复合写 delta+relations,tools.md) */
285
+ export declare const proposeAdvanceHookArgsSchema: z.ZodObject<{
286
+ hook_id: z.ZodString;
287
+ node_id: z.ZodString;
288
+ description: z.ZodString;
289
+ }, z.core.$strict>;
290
+ export type ProposeAdvanceHookArgs = z.infer<typeof proposeAdvanceHookArgsSchema>;
291
+ /** 入参:hook_id + node_id(回收节点)+ description(回收内容描述;确认后复合写 delta+relations,tools.md) */
292
+ export declare const proposeResolveHookArgsSchema: z.ZodObject<{
293
+ hook_id: z.ZodString;
294
+ node_id: z.ZodString;
295
+ description: z.ZodString;
296
+ }, z.core.$strict>;
297
+ export type ProposeResolveHookArgs = z.infer<typeof proposeResolveHookArgsSchema>;
298
+ /** 入参:hook_id + description(废弃原因;确认后复合写 delta 记 status=abandoned,tools.md) */
299
+ export declare const proposeAbandonHookArgsSchema: z.ZodObject<{
300
+ hook_id: z.ZodString;
301
+ description: z.ZodString;
302
+ }, z.core.$strict>;
303
+ export type ProposeAbandonHookArgs = z.infer<typeof proposeAbandonHookArgsSchema>;
304
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,296 @@
1
+ // AI 工具参数 Zod schema(@whispering233/ai-editor-shared/types/tool.ts,S6.3)
2
+ // 契约来源:doc/api/tools.md「查询类(自动)」——8 个查询工具的入参/返回语义;
3
+ // 字段名沿用 tools.md 的 snake_case 参数约定(工具参数由 LLM 直接生成,snake_case 与
4
+ // REST 请求体一致);取值范围引用 constants/entity.ts 既有枚举(EntityType/RelationType),
5
+ // 不另造类型。
6
+ // **导出边界**:运行时 schema 仅经 @whispering233/ai-editor-shared/schemas/tools 子路径导出(供服务端
7
+ // tools 包/executor 使用);types/index.ts 的 type-only barrel 只导出推断类型——
8
+ // client 浏览器包不打包 zod 校验函数(与 types/api.ts 同款约束,见 index.ts 头注释)。
9
+ import { z } from "zod";
10
+ import { ENTITY_TYPES, RELATION_TYPES } from "../constants/entity.js";
11
+ import { deltaChangeSchema } from "./api.js"; // 复用 delta 单条变更 schema(api.ts 已导出)
12
+ // ============ get_entity(实体详情,tools.md「实体查询」) ============
13
+ /** get_entity 入参:type(实体类型)+ id;id 前缀体系全局唯一,type 用于回显与一致性校验 */
14
+ export const getEntityArgsSchema = z
15
+ .object({
16
+ type: z.enum(ENTITY_TYPES),
17
+ id: z.string(),
18
+ })
19
+ .strict();
20
+ // ============ search_entities(实体搜索,tools.md「实体查询」) ============
21
+ /**
22
+ * search_entities 入参:type + query(name 模糊匹配)+ filters(data 字段过滤)
23
+ * filters.status:data.status 字符串相等匹配;filters.tags:data.tags 数组须包含全部指定 tags(AND)
24
+ */
25
+ export const searchEntitiesArgsSchema = z
26
+ .object({
27
+ type: z.enum(ENTITY_TYPES),
28
+ query: z.string(),
29
+ filters: z
30
+ .object({
31
+ tags: z.array(z.string()).optional(),
32
+ status: z.string().optional(),
33
+ })
34
+ .optional(),
35
+ })
36
+ .strict();
37
+ // ============ query_relationships(关系图子图,tools.md「关系查询」) ============
38
+ /**
39
+ * query_relationships 入参:source_type/target_type 为自由字符串(实体类型或 outline_node);
40
+ * relation_type 用 z.enum(RELATION_TYPES) **白名单校验**(schema.md 预定义 16 种,
41
+ * 与 REST relationQuerySchema 的宽松 string 不同——工具参数由 LLM 生成,枚举提前拦非法值);
42
+ * depth 1=紧邻 / 2=k跳 / 3=全量(必填,与 API 层一致)
43
+ */
44
+ export const queryRelationshipsArgsSchema = z
45
+ .object({
46
+ source_type: z.string().optional(),
47
+ source_id: z.string().optional(),
48
+ target_type: z.string().optional(),
49
+ target_id: z.string().optional(),
50
+ relation_type: z.enum(RELATION_TYPES).optional(),
51
+ depth: z.union([z.literal(1), z.literal(2), z.literal(3)]),
52
+ })
53
+ .strict();
54
+ // ============ get_outline(完整大纲树,tools.md「大纲查询」) ============
55
+ /** get_outline 入参:无参;默认不含 metadata 统计(省 token,需统计走 API with_metadata) */
56
+ export const getOutlineArgsSchema = z.object({}).strict();
57
+ // ============ get_outline_path(节点路径,tools.md「大纲查询」) ============
58
+ /** get_outline_path 入参:node_id(根 → 该节点的路径 ID 列表,含 root) */
59
+ export const getOutlinePathArgsSchema = z
60
+ .object({
61
+ node_id: z.string(),
62
+ })
63
+ .strict();
64
+ // ============ compute_state(状态计算,tools.md「状态查询」) ============
65
+ /**
66
+ * compute_state 入参(与 POST /api/v1/delta/compute 同构,api.ts deltaComputeReqSchema):
67
+ * 目标实体到达 at_node_id 时的累积状态(只沿大纲树父链累积已确认 Delta,决策 9)
68
+ */
69
+ export const computeStateArgsSchema = z
70
+ .object({
71
+ target_type: z.string(),
72
+ target_id: z.string(),
73
+ at_node_id: z.string(),
74
+ })
75
+ .strict();
76
+ // ============ get_delta_history(Delta 历史,tools.md「状态查询」) ============
77
+ /** get_delta_history 入参:target_type + target_id(该实体的全部属性变更记录,按时间/节点排序) */
78
+ export const getDeltaHistoryArgsSchema = z
79
+ .object({
80
+ target_type: z.string(),
81
+ target_id: z.string(),
82
+ })
83
+ .strict();
84
+ // ============ get_entity_summary(聚合统计,tools.md「聚合分析」) ============
85
+ /** get_entity_summary 入参:type(指定类型实体的统计数据:总数 + 类型专属分布) */
86
+ export const getEntitySummaryArgsSchema = z
87
+ .object({
88
+ type: z.enum(ENTITY_TYPES),
89
+ })
90
+ .strict();
91
+ // ============ 分析类工具(tools.md「分析类(自动)」,S6.4) ============
92
+ // === analyze_consistency(一致性分析) ===
93
+ /** analyze_consistency 入参:entity_id(检查该实体档案内部的矛盾,如性格反义词对/状态冲突) */
94
+ export const analyzeConsistencyArgsSchema = z
95
+ .object({
96
+ entity_id: z.string(),
97
+ })
98
+ .strict();
99
+ // === detect_conflicts(跨实体矛盾检测) ===
100
+ /**
101
+ * detect_conflicts 入参:types 限定参与检测的实体类型(缺省全部);
102
+ * relation_filter 限定参与检测的关系类型(缺省用内置对称/互斥/互杀规则集)。
103
+ * 检测对象:对称关系单向缺失(ally/family)、互斥关系并存(ally+rival)、互杀(kills×2)。
104
+ */
105
+ export const detectConflictsArgsSchema = z
106
+ .object({
107
+ types: z.array(z.enum(ENTITY_TYPES)).optional(),
108
+ relation_filter: z.array(z.enum(RELATION_TYPES)).optional(),
109
+ })
110
+ .strict();
111
+ // === trace_plot_paths(剧情路径推演) ===
112
+ /** trace_plot_paths 入参:from_node_id → to_node_id(大纲节点;输出树路径 + plot_edge 连线路径) */
113
+ export const tracePlotPathsArgsSchema = z
114
+ .object({
115
+ from_node_id: z.string(),
116
+ to_node_id: z.string(),
117
+ })
118
+ .strict();
119
+ // === find_orphan_elements(孤立元素诊断) ===
120
+ /** find_orphan_elements 入参:无参(全项目扫描:闲置角色/未解决变更/悬空关系/跨存储软删不一致) */
121
+ export const findOrphanElementsArgsSchema = z.object({}).strict();
122
+ // === suggest_connections(关系发现) ===
123
+ /** suggest_connections 入参:entity_id(基于共享场景/共同邻居/同分类等信号建议潜在关联) */
124
+ export const suggestConnectionsArgsSchema = z
125
+ .object({
126
+ entity_id: z.string(),
127
+ })
128
+ .strict();
129
+ // ============ 伏笔分析工具(hooks.md「工具扩展」+ 决策 21,S6.5) ============
130
+ // === analyze_hook_health(伏笔健康总览) ===
131
+ /** analyze_hook_health 入参:无参(全项目活跃伏笔健康总览:stale/overdue/blocked/warnings) */
132
+ export const analyzeHookHealthArgsSchema = z.object({}).strict();
133
+ // === trace_hook_lifecycle(生命周期追踪) ===
134
+ /** trace_hook_lifecycle 入参:hook_id(埋设/推进/回收节点 + 休眠章数 + 时间线图) */
135
+ export const traceHookLifecycleArgsSchema = z
136
+ .object({
137
+ hook_id: z.string(),
138
+ })
139
+ .strict();
140
+ // === suggest_hook_payoff(回收建议) ===
141
+ /** suggest_hook_payoff 入参:hook_id(基于埋设章节与半衰期推荐理想回收场景,top 3) */
142
+ export const suggestHookPayoffArgsSchema = z
143
+ .object({
144
+ hook_id: z.string(),
145
+ })
146
+ .strict();
147
+ // === find_hook_opportunities(埋设机会发现) ===
148
+ /** find_hook_opportunities 入参:outline_node_id(分析节点叙事特征,建议适合的伏笔类别) */
149
+ export const findHookOpportunitiesArgsSchema = z
150
+ .object({
151
+ outline_node_id: z.string(),
152
+ })
153
+ .strict();
154
+ // === detect_hook_conflicts(伏笔矛盾检测) ===
155
+ /** detect_hook_conflicts 入参:无参(依赖循环/依赖废弃/时间悖论检测) */
156
+ export const detectHookConflictsArgsSchema = z.object({}).strict();
157
+ // ============ 提案类工具(tools.md「提案类(需确认)」+ hooks.md「工具扩展」提案类,S6.6) ============
158
+ //
159
+ // 语义(tools.md「返回语义」2026-08 修订):AI **不能直接修改数据**——propose_* 仅产出
160
+ // 提案对象(proposal_id + 一句话摘要),tool_result 不含预览细节(避免 LLM 误以为提案已生效
161
+ // 而重复提案);完整预览只经 SSE proposal 事件推送 GUI(S7 实现)。
162
+ // 参数签名与 tools.md 逐字对齐(propose_add_relation(source, target, type, metadata?) 等):
163
+ // 端点 id(source/target/plant_at_node_id 等)由服务端在生成时自动识别实体/大纲节点类型
164
+ // 并采集 updated_at 快照(决策 14/19),故入参只需 id 字符串。
165
+ // patches(部分更新字段)拒绝空对象——空补丁提案无意义(生成时校验)。
166
+ // === propose_create_entity(创建实体提案) ===
167
+ /** 入参:type(实体类型)+ name(必填)+ data(可选自定义字段) */
168
+ export const proposeCreateEntityArgsSchema = z
169
+ .object({
170
+ type: z.enum(ENTITY_TYPES),
171
+ name: z.string().min(1),
172
+ data: z.record(z.string(), z.unknown()).optional(),
173
+ })
174
+ .strict();
175
+ // === propose_update_entity(更新实体提案) ===
176
+ /** 入参:entity_id + patches(data 部分字段,至少一项);快照校验基于实体自身 updated_at(决策 14) */
177
+ export const proposeUpdateEntityArgsSchema = z
178
+ .object({
179
+ entity_id: z.string(),
180
+ patches: z.record(z.string(), z.unknown()).refine((p) => Object.keys(p).length > 0, {
181
+ message: "patches 不能为空(至少一项变更)",
182
+ }),
183
+ })
184
+ .strict();
185
+ // === propose_delete_entity(删除实体提案) ===
186
+ /** 入参:entity_id(软删 + 级联,可回收站还原,决策 12) */
187
+ export const proposeDeleteEntityArgsSchema = z
188
+ .object({
189
+ entity_id: z.string(),
190
+ })
191
+ .strict();
192
+ // === propose_add_relation(新增关系提案) ===
193
+ /**
194
+ * 入参:source/target 为端点 id(实体 id 或大纲节点 id,类型生成时自动识别);
195
+ * type 白名单(RELATION_TYPES 16 种,含 plot_edge/plants/advances/resolves);metadata 可选
196
+ */
197
+ export const proposeAddRelationArgsSchema = z
198
+ .object({
199
+ source: z.string(),
200
+ target: z.string(),
201
+ type: z.enum(RELATION_TYPES),
202
+ metadata: z.record(z.string(), z.unknown()).optional(),
203
+ })
204
+ .strict();
205
+ // === propose_remove_relation(移除关系提案) ===
206
+ /** 入参:relation_id(手动删关系 = 物理删,不进回收站,决策 12) */
207
+ export const proposeRemoveRelationArgsSchema = z
208
+ .object({
209
+ relation_id: z.string(),
210
+ })
211
+ .strict();
212
+ // === propose_add_delta(追加属性变更提案) ===
213
+ /** 入参:node_id(触发节点)+ target(变更目标 id,实体或大纲节点)+ changes(至少一项,复用 deltaChangeSchema) */
214
+ export const proposeAddDeltaArgsSchema = z
215
+ .object({
216
+ node_id: z.string(),
217
+ target: z.string(),
218
+ changes: z.array(deltaChangeSchema).min(1),
219
+ })
220
+ .strict();
221
+ // === propose_outline_node(新增大纲节点提案) ===
222
+ /** 入参:type(volume|chapter|scene)+ title + parent_id(缺省挂根;scene 必须挂 chapter,决策 19) */
223
+ export const proposeOutlineNodeArgsSchema = z
224
+ .object({
225
+ type: z.enum(["volume", "chapter", "scene"]),
226
+ title: z.string().min(1),
227
+ parent_id: z.string().optional(),
228
+ })
229
+ .strict();
230
+ // === propose_move_node(移动大纲节点提案) ===
231
+ /**
232
+ * 入参:node_id + parent_id(目标父节点,**可为 "root"**——决策 19 允许 volume/chapter 挂根,
233
+ * db moveOutlineNode 支持 parentId === "root")+ order(目标位置,0 起)。
234
+ * order 无范围上限:超出目标父 children 长度的行为(clamp 或抛错)由 S6.7/db 执行时定义,
235
+ * 生成时校验不做上限(提案只承载意图,合法性由执行层兜底)。
236
+ */
237
+ export const proposeMoveNodeArgsSchema = z
238
+ .object({
239
+ node_id: z.string(),
240
+ parent_id: z.string(),
241
+ order: z.number().int().min(0),
242
+ })
243
+ .strict();
244
+ // === propose_delete_node(删除大纲节点提案) ===
245
+ /** 入参:node_id(软删 + 递归子树,可回收站还原,决策 12) */
246
+ export const proposeDeleteNodeArgsSchema = z
247
+ .object({
248
+ node_id: z.string(),
249
+ })
250
+ .strict();
251
+ // === propose_create_hook(创建伏笔提案,hooks.md「工具扩展」提案类) ===
252
+ /** 入参:name + data(可选伏笔字段,如 payoff_timing/half_life/expected_resolve_node_id)+ plant_at_node_id(可选埋设节点) */
253
+ export const proposeCreateHookArgsSchema = z
254
+ .object({
255
+ name: z.string().min(1),
256
+ data: z.record(z.string(), z.unknown()).optional(),
257
+ plant_at_node_id: z.string().optional(),
258
+ })
259
+ .strict();
260
+ // === propose_update_hook(更新伏笔提案) ===
261
+ /** 入参:hook_id + patches(data 部分字段,至少一项);快照校验基于伏笔实体自身 updated_at(决策 14) */
262
+ export const proposeUpdateHookArgsSchema = z
263
+ .object({
264
+ hook_id: z.string(),
265
+ patches: z.record(z.string(), z.unknown()).refine((p) => Object.keys(p).length > 0, {
266
+ message: "patches 不能为空(至少一项变更)",
267
+ }),
268
+ })
269
+ .strict();
270
+ // === propose_advance_hook(推进伏笔提案) ===
271
+ /** 入参:hook_id + node_id(推进发生的节点)+ description(推进内容描述;确认后复合写 delta+relations,tools.md) */
272
+ export const proposeAdvanceHookArgsSchema = z
273
+ .object({
274
+ hook_id: z.string(),
275
+ node_id: z.string(),
276
+ description: z.string().min(1),
277
+ })
278
+ .strict();
279
+ // === propose_resolve_hook(回收伏笔提案) ===
280
+ /** 入参:hook_id + node_id(回收节点)+ description(回收内容描述;确认后复合写 delta+relations,tools.md) */
281
+ export const proposeResolveHookArgsSchema = z
282
+ .object({
283
+ hook_id: z.string(),
284
+ node_id: z.string(),
285
+ description: z.string().min(1),
286
+ })
287
+ .strict();
288
+ // === propose_abandon_hook(废弃伏笔提案) ===
289
+ /** 入参:hook_id + description(废弃原因;确认后复合写 delta 记 status=abandoned,tools.md) */
290
+ export const proposeAbandonHookArgsSchema = z
291
+ .object({
292
+ hook_id: z.string(),
293
+ description: z.string().min(1),
294
+ })
295
+ .strict();
296
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/types/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ISO 8601 时间戳 → 本地化 `YYYY-MM-DD HH:mm`(schema.md 时间约定:统一 ISO 8601 字符串)
3
+ * 非法输入(含空串)原样返回,防御性处理
4
+ */
5
+ export declare function formatTimestamp(iso: string): string;
6
+ /**
7
+ * 截断文本:返回总长(含省略号)不超过 maxLen 的字符串;未超长原样返回
8
+ * 用途:会话列表 lastMessage、长文本展示(endpoints.md)
9
+ * 边界:maxLen <= 0 返回空串;maxLen = 1 时返回单个省略号
10
+ */
11
+ export declare function truncate(text: string, maxLen: number): string;
12
+ /**
13
+ * API key 掩码展示(endpoints.md settings apiKeyMasked 示例 `sk-****1234`:保留前 3 后 4)
14
+ * 过短 key(<= 7 字符,前后缀重叠)整体掩码为 "****";空串返回 "****"
15
+ */
16
+ export declare function maskApiKey(key: string): string;
17
+ /**
18
+ * 相对时间(会话行/概览最近更新展示):刚刚 / n 分钟前 / n 小时前 / n 天前;
19
+ * ≥30 天回退绝对时间(formatTimestamp);非法输入(含空串)原样返回
20
+ * 说明:从 client Dashboard/Sidebar 抽离(U4 oracle L1:两处重复实现 → shared 共享可单测)
21
+ */
22
+ export declare function formatRelativeTime(iso: string): string;
23
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWtD"}