@whispering233/ai-editor-tools 0.0.33 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analysis/conflict.d.ts.map +1 -1
- package/dist/analysis/conflict.js +4 -3
- package/dist/analysis/conflict.js.map +1 -1
- package/dist/analysis/hook.d.ts +16 -8
- package/dist/analysis/hook.d.ts.map +1 -1
- package/dist/analysis/hook.js +75 -27
- package/dist/analysis/hook.js.map +1 -1
- package/dist/analysis/utils.d.ts +2 -1
- package/dist/analysis/utils.d.ts.map +1 -1
- package/dist/analysis/utils.js +9 -2
- package/dist/analysis/utils.js.map +1 -1
- package/dist/executor/delta.d.ts.map +1 -1
- package/dist/executor/delta.js +22 -3
- package/dist/executor/delta.js.map +1 -1
- package/dist/executor/hook.d.ts.map +1 -1
- package/dist/executor/hook.js +45 -33
- package/dist/executor/hook.js.map +1 -1
- package/dist/executor/index.js +2 -2
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/relation.d.ts.map +1 -1
- package/dist/executor/relation.js +18 -3
- package/dist/executor/relation.js.map +1 -1
- package/dist/index.js +38 -25
- package/dist/index.js.map +1 -1
- package/dist/proposal/delta.d.ts +12 -0
- package/dist/proposal/delta.d.ts.map +1 -1
- package/dist/proposal/delta.js +68 -0
- package/dist/proposal/delta.js.map +1 -1
- package/dist/proposal/hook.d.ts +3 -3
- package/dist/proposal/hook.d.ts.map +1 -1
- package/dist/proposal/hook.js +9 -9
- package/dist/proposal/hook.js.map +1 -1
- package/dist/proposal/relation.d.ts.map +1 -1
- package/dist/proposal/relation.js +13 -1
- package/dist/proposal/relation.js.map +1 -1
- package/dist/proposal/types.d.ts +11 -0
- package/dist/proposal/types.d.ts.map +1 -1
- package/dist/proposal/types.js +17 -0
- package/dist/proposal/types.js.map +1 -1
- package/dist/query/delta.d.ts +3 -2
- package/dist/query/delta.d.ts.map +1 -1
- package/dist/query/delta.js +4 -3
- package/dist/query/delta.js.map +1 -1
- package/dist/query/entity.d.ts +2 -2
- package/dist/query/entity.js +2 -2
- package/dist/schemas/delta.d.ts +2 -1
- package/dist/schemas/delta.d.ts.map +1 -1
- package/dist/schemas/delta.js +2 -1
- package/dist/schemas/delta.js.map +1 -1
- package/dist/schemas/proposal.d.ts +3 -2
- package/dist/schemas/proposal.d.ts.map +1 -1
- package/dist/schemas/proposal.js +3 -2
- package/dist/schemas/proposal.js.map +1 -1
- package/dist/schemas/relation.d.ts +2 -1
- package/dist/schemas/relation.d.ts.map +1 -1
- package/dist/schemas/relation.js +2 -1
- package/dist/schemas/relation.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/executor/hook.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,6CAA6C;AAC7C,EAAE;AACF,4DAA4D;AAC5D,+CAA+C;AAC/C,oFAAoF;AACpF,iFAAiF;AACjF,iFAAiF;AACjF,EAAE;AACF,mEAAmE;AACnE,8CAA8C;AAC9C,2DAA2D;AAC3D,6DAA6D;AAC7D,0DAA0D;AAC1D,qDAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/executor/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/executor/index.js
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// S7.5 确认路由在调用前做取消判定)。
|
|
19
19
|
import { createEntity, createRelation, withTransaction } from "@whispering233/ai-editor-db";
|
|
20
20
|
import { EXECUTOR_TOOLS } from "@whispering233/ai-editor-shared";
|
|
21
|
-
import {
|
|
21
|
+
import { requireChapterNode, requireHook } from "../proposal/types.js";
|
|
22
22
|
import { executeAddDelta } from "./delta.js";
|
|
23
23
|
import { executeCreateEntity, executeDeleteEntity, executeUpdateEntity } from "./entity.js";
|
|
24
24
|
import { executeAddRelation, executeRemoveRelation } from "./relation.js";
|
|
@@ -36,7 +36,7 @@ const executeCreateHook = (ctx, proposal) => {
|
|
|
36
36
|
return withTransaction(ctx.db, () => {
|
|
37
37
|
const row = createEntity(ctx.db, { type: "hook", name, data });
|
|
38
38
|
if (plantAtNodeId !== undefined) {
|
|
39
|
-
|
|
39
|
+
requireChapterNode(ctx, plantAtNodeId); // 埋设章节点存在且未软删(伏笔锚点仅章);createRelation 亦校验存在性
|
|
40
40
|
createRelation(ctx.db, { sourceType: "outline_node", sourceId: plantAtNodeId, targetType: "hook", targetId: row.id, relationType: "plants" }, ctx.outlineDir);
|
|
41
41
|
}
|
|
42
42
|
return { id: row.id };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,+DAA+D;AAC/D,6EAA6E;AAC7E,wDAAwD;AACxD,wEAAwE;AACxE,4EAA4E;AAC5E,kDAAkD;AAClD,+EAA+E;AAC/E,uGAAuG;AACvG,iEAAiE;AACjE,EAAE;AACF,sDAAsD;AACtD,6BAA6B;AAC7B,+CAA+C;AAC/C,kDAAkD;AAClD,uCAAuC;AACvC,uBAAuB;AAEvB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5E,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,EAAE,UAyBhC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,UAOnC,CAAC"}
|
|
@@ -4,19 +4,34 @@
|
|
|
4
4
|
// - add_relation:端点类型(source_type/target_type)已由 S6.6 提案层派生规范化到 args,
|
|
5
5
|
// 此处直接透传 db createRelation(判重 RELATION_EXISTS / 端点存在性校验 db 层负责);
|
|
6
6
|
// 重复确认同一 add_relation 提案 → RELATION_EXISTS 抛错(幂等只保证 hook 复合写)
|
|
7
|
+
// - **伏笔关系源端仅章(卡片 1.3 + 5.2)**:executor **直写 db 绕过 REST 校验**,此处再拦一道
|
|
8
|
+
// (与 `executor/delta.ts` 的 requireChapterNode 同模式)——plants/advances/resolves 无条件要求
|
|
9
|
+
// 源端为章大纲节点(实体反向组合同样拒);手工构造的越权 proposal 不会落库
|
|
7
10
|
// - remove_relation:手动删关系 = **物理删**(不置 deleted_at、不进回收站);
|
|
8
11
|
// 0 行影响(关系不存在)→ 抛错(fail-fast,S7.5 转错误响应)
|
|
9
12
|
import { createRelation, deleteRelation } from "@whispering233/ai-editor-db";
|
|
13
|
+
import { HOOK_RELATION_TYPES } from "@whispering233/ai-editor-shared";
|
|
14
|
+
import { requireChapterNode } from "../proposal/types.js";
|
|
10
15
|
import { optionalRecord, requireString } from "./types.js";
|
|
11
16
|
/** add_relation(add_relation(source, target, type) → id) */
|
|
12
17
|
export const executeAddRelation = (ctx, proposal) => {
|
|
13
18
|
const args = proposal.args;
|
|
19
|
+
const sourceType = requireString(args, "source_type");
|
|
20
|
+
const sourceId = requireString(args, "source_id");
|
|
21
|
+
const relationType = requireString(args, "relation_type");
|
|
22
|
+
// 伏笔关系源端仅章(卡片 1.3 + 5.2):executor 直写 db 绕过 REST 校验,故此处再拦一道
|
|
23
|
+
if (HOOK_RELATION_TYPES.includes(relationType)) {
|
|
24
|
+
if (sourceType !== "outline_node") {
|
|
25
|
+
throw new Error(`伏笔关系(${relationType})的源端须为章大纲节点,当前为 ${sourceType}: ${sourceId}`);
|
|
26
|
+
}
|
|
27
|
+
requireChapterNode(ctx, sourceId);
|
|
28
|
+
}
|
|
14
29
|
const row = createRelation(ctx.db, {
|
|
15
|
-
sourceType
|
|
16
|
-
sourceId
|
|
30
|
+
sourceType,
|
|
31
|
+
sourceId,
|
|
17
32
|
targetType: requireString(args, "target_type"),
|
|
18
33
|
targetId: requireString(args, "target_id"),
|
|
19
|
-
relationType
|
|
34
|
+
relationType,
|
|
20
35
|
metadata: optionalRecord(args, "metadata"),
|
|
21
36
|
}, ctx.outlineDir);
|
|
22
37
|
return { id: row.id };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,iEAAiE;AACjE,8DAA8D;AAC9D,0DAA0D;AAC1D,yCAAyC;AAEzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE5E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"relation.js","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,iEAAiE;AACjE,8DAA8D;AAC9D,oEAAoE;AACpE,mFAAmF;AACnF,4CAA4C;AAC5C,0DAA0D;AAC1D,yCAAyC;AAEzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE5E,4DAA4D;AAC5D,MAAM,CAAC,MAAM,kBAAkB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC3D,2DAA2D;IAC1D,IAAK,mBAAyC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtE,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,QAAQ,YAAY,mBAAmB,UAAU,KAAK,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAG,cAAc,CACxB,GAAG,CAAC,EAAE,EACN;QACE,UAAU;QACV,QAAQ;QACR,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;QAC9C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,YAAY;QACZ,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC;KAC3C,EACD,GAAG,CAAC,UAAU,CACf,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,qBAAqB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IACjE,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3C,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,7 @@ export * from "./proposal/reorder-timepoints.js";
|
|
|
35
35
|
export * from "./proposal/reference.js";
|
|
36
36
|
// S6.7 执行层:导出 executor 门面与 13 个执行函数(不注册工具——见文件头注释)
|
|
37
37
|
export * from "./executor/index.js";
|
|
38
|
-
import { TOOL_PERMISSION } from "@whispering233/ai-editor-shared";
|
|
38
|
+
import { RELATION_TYPES, TOOL_PERMISSION } from "@whispering233/ai-editor-shared";
|
|
39
39
|
import { computeStateArgsSchema, getDeltaHistoryArgsSchema, getEntityArgsSchema, getEntitySummaryArgsSchema, getOutlineArgsSchema, getOutlinePathArgsSchema, queryRelationshipsArgsSchema, searchEntitiesArgsSchema, searchReferencesArgsSchema, } from "./schemas/index.js";
|
|
40
40
|
import { registerTools } from "./registry.js";
|
|
41
41
|
import { runGetEntity, runGetEntitySummary, runSearchEntities } from "./query/entity.js";
|
|
@@ -56,7 +56,8 @@ const queryToolDefs = [
|
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
name: "search_entities",
|
|
59
|
-
description: "实体搜索:按类型 + 名称关键词模糊匹配(可附 filters:status 精确匹配 data.status
|
|
59
|
+
description: "实体搜索:按类型 + 名称关键词模糊匹配(可附 filters:status 精确匹配 data.status——" +
|
|
60
|
+
"**仅伏笔(hook)生命周期有意义**(character 已无该字段);" +
|
|
60
61
|
"tags 要求 data.tags 数组包含全部指定标签)。返回匹配实体列表(名称 + 类型 + 关键字段摘要)。",
|
|
61
62
|
parameters: searchEntitiesArgsSchema,
|
|
62
63
|
permission: TOOL_PERMISSION.AUTO,
|
|
@@ -65,9 +66,11 @@ const queryToolDefs = [
|
|
|
65
66
|
{
|
|
66
67
|
name: "query_relationships",
|
|
67
68
|
description: "关系图查询:按端点/关系类型过滤(depth 1=紧邻直接关系、2=k跳路径、3=全量遍历)。" +
|
|
68
|
-
"端点可为实体或大纲节点(outline_node);relation_type 取值限定预定义
|
|
69
|
-
|
|
70
|
-
"
|
|
69
|
+
"端点可为实体或大纲节点(outline_node);relation_type 取值限定预定义 " +
|
|
70
|
+
RELATION_TYPES.length +
|
|
71
|
+
" 种:" +
|
|
72
|
+
RELATION_TYPES.join("/") +
|
|
73
|
+
";端点软删的关系不可见。",
|
|
71
74
|
parameters: queryRelationshipsArgsSchema,
|
|
72
75
|
permission: TOOL_PERMISSION.AUTO,
|
|
73
76
|
run: runQueryRelationships,
|
|
@@ -91,7 +94,9 @@ const queryToolDefs = [
|
|
|
91
94
|
{
|
|
92
95
|
name: "compute_state",
|
|
93
96
|
description: "状态计算:实体(target_id)到达指定大纲节点(at_node_id)时的累积状态——" +
|
|
94
|
-
"
|
|
97
|
+
"按**章序前缀**累积已确认 Delta(状态 = 初始 data + 章序 ≤ 目标进度章的全部章,跨卷/跨章;" +
|
|
98
|
+
"at_node_id 不限层级:章→自身、场景→所属章、卷→该卷最后一个未软删章)。" +
|
|
99
|
+
"若存在 update 冲突(from 不匹配)该 change 被跳过," +
|
|
95
100
|
"结果在 conflicts 字段标注 { field, expected, actual },请据此向用户提示修复。",
|
|
96
101
|
parameters: computeStateArgsSchema,
|
|
97
102
|
permission: TOOL_PERMISSION.AUTO,
|
|
@@ -107,7 +112,7 @@ const queryToolDefs = [
|
|
|
107
112
|
},
|
|
108
113
|
{
|
|
109
114
|
name: "get_entity_summary",
|
|
110
|
-
description: "实体聚合统计:指定类型实体的总数与分布(character
|
|
115
|
+
description: "实体聚合统计:指定类型实体的总数与分布(character→角色分布/能力面板分组分布、hook→状态/兑现时机分布、" +
|
|
111
116
|
"setting→分类分布、location→类型分布)。用于全局概览。",
|
|
112
117
|
parameters: getEntitySummaryArgsSchema,
|
|
113
118
|
permission: TOOL_PERMISSION.AUTO,
|
|
@@ -143,7 +148,7 @@ const analysisToolDefs = [
|
|
|
143
148
|
},
|
|
144
149
|
{
|
|
145
150
|
name: "detect_conflicts",
|
|
146
|
-
description: "跨实体设定矛盾检测:扫描关系图发现不一致——对称关系(ally/family)单向缺失、" +
|
|
151
|
+
description: "跨实体设定矛盾检测:扫描关系图发现不一致——对称关系(ally/rival/family)单向缺失、" +
|
|
147
152
|
"同一对实体互斥关系并存(ally+rival)、互相击杀(双向 kills)。" +
|
|
148
153
|
"types 限定实体类型、relation_filter 限定参与检测的关系类型(缺省全量)。" +
|
|
149
154
|
"返回 conflicts: [{ entity_a, entity_b, field, description }]。",
|
|
@@ -206,18 +211,18 @@ const hookToolDefs = [
|
|
|
206
211
|
},
|
|
207
212
|
{
|
|
208
213
|
name: "suggest_hook_payoff",
|
|
209
|
-
description: "
|
|
210
|
-
"(节奏匹配 top 3
|
|
211
|
-
"hook 不存在/已软删返回 null
|
|
214
|
+
description: "伏笔回收建议:基于埋设章与半衰期(显式优先、缺省按 payoff_timing 映射)推荐理想回收**章**" +
|
|
215
|
+
"(节奏匹配 top 3,候选为当前章节之后的未回收章;伏笔锚点仅章)。返回 { suggestions: [{ at_node, reason }] };" +
|
|
216
|
+
"hook 不存在/已软删返回 null,无埋设记录或大纲无候选章返回空建议。",
|
|
212
217
|
parameters: suggestHookPayoffArgsSchema,
|
|
213
218
|
permission: TOOL_PERMISSION.AUTO,
|
|
214
219
|
run: runSuggestHookPayoff,
|
|
215
220
|
},
|
|
216
221
|
{
|
|
217
222
|
name: "find_hook_opportunities",
|
|
218
|
-
description: "
|
|
219
|
-
"
|
|
220
|
-
"返回 { opportunities: [{ category, reason }] }
|
|
223
|
+
description: "伏笔埋设机会发现:分析指定**章**节点的叙事特征(**本章及其场景**聚合:尚无伏笔埋设、角色在场数、" +
|
|
224
|
+
"场景冲突层次、价值转向)建议适合的伏笔类别(mystery/relationship/world_building/character_growth)。" +
|
|
225
|
+
"返回 { opportunities: [{ category, reason }] };输入为卷/场景报错(仅章),章不存在或已软删返回 null。",
|
|
221
226
|
parameters: findHookOpportunitiesArgsSchema,
|
|
222
227
|
permission: TOOL_PERMISSION.AUTO,
|
|
223
228
|
run: runFindHookOpportunities,
|
|
@@ -274,9 +279,14 @@ const proposalToolDefs = [
|
|
|
274
279
|
{
|
|
275
280
|
name: "propose_add_relation",
|
|
276
281
|
description: "新增关系提案:source/target 为端点 id(实体 id 如 char-xxx,或大纲节点 id 如 ch-xxx," +
|
|
277
|
-
"类型自动识别),type 为预定义关系类型(
|
|
278
|
-
"
|
|
279
|
-
"
|
|
282
|
+
"类型自动识别),type 为预定义关系类型(" +
|
|
283
|
+
RELATION_TYPES.join("/") +
|
|
284
|
+
",共 " +
|
|
285
|
+
RELATION_TYPES.length +
|
|
286
|
+
" 种;**作者在界面自定义的类型 AI 不可创建**)," +
|
|
287
|
+
"metadata 可选。**伏笔三类关系(plants/advances/resolves)的源端必须是章大纲节点**" +
|
|
288
|
+
"(卷/场景报错;源端为实体等反向组合同样拒绝——无消费者属数据卫生)。" +
|
|
289
|
+
"仅生成提案,需用户确认后生效;端点不存在或已软删返回错误。",
|
|
280
290
|
parameters: proposeAddRelationArgsSchema,
|
|
281
291
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
282
292
|
run: runProposeAddRelation,
|
|
@@ -291,9 +301,12 @@ const proposalToolDefs = [
|
|
|
291
301
|
},
|
|
292
302
|
{
|
|
293
303
|
name: "propose_add_delta",
|
|
294
|
-
description: "追加属性变更提案:node_id
|
|
304
|
+
description: "追加属性变更提案:node_id 为触发变更的大纲节点(**仅章**——卷/场景拒绝),target 为变更目标(实体 id 或大纲节点 id," +
|
|
295
305
|
"类型自动识别),changes 为变更列表(op 取值 set/update/add/remove,至少一项;" +
|
|
296
|
-
"update 需 from 旧值,add/remove 用 value
|
|
306
|
+
"update 需 from 旧值,add/remove 用 value)。**character 的不可变字段(role/description)不可作为变更字段**" +
|
|
307
|
+
"(与前端字段下拉同源;请直接编辑实体)。**hook 的 status 是写路径同步的事实字段,只能用 op=set**" +
|
|
308
|
+
"(用 update+from 重放会与已同步的当前值冲突,产生虚假冲突标注)。" +
|
|
309
|
+
"仅生成提案,需用户确认后生效;" +
|
|
297
310
|
"触发节点或目标不存在/已软删返回错误。",
|
|
298
311
|
parameters: proposeAddDeltaArgsSchema,
|
|
299
312
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
@@ -328,8 +341,8 @@ const proposalToolDefs = [
|
|
|
328
341
|
{
|
|
329
342
|
name: "propose_create_hook",
|
|
330
343
|
description: "创建伏笔提案:name 必填,data 可选(伏笔字段:payoff_timing、half_life、expected_resolve_node_id、category 等)," +
|
|
331
|
-
"plant_at_node_id
|
|
332
|
-
"
|
|
344
|
+
"plant_at_node_id 可选指定埋设**章**节点(确认后建立 plants 关系)。" +
|
|
345
|
+
"仅生成提案,需用户确认后生效;埋设节点非章/不存在/已软删返回错误。",
|
|
333
346
|
parameters: proposeCreateHookArgsSchema,
|
|
334
347
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
335
348
|
run: runProposeCreateHook,
|
|
@@ -345,18 +358,18 @@ const proposalToolDefs = [
|
|
|
345
358
|
},
|
|
346
359
|
{
|
|
347
360
|
name: "propose_advance_hook",
|
|
348
|
-
description: "推进伏笔提案:hook_id 指定伏笔,node_id
|
|
361
|
+
description: "推进伏笔提案:hook_id 指定伏笔,node_id 为推进发生的**章**节点,description 描述推进内容。" +
|
|
349
362
|
"确认后复合写一次提交(Delta 记 status=progressing + advances 关系,幂等)。" +
|
|
350
|
-
"
|
|
363
|
+
"仅生成提案,需用户确认后生效;伏笔或节点不存在/已软删/非章返回错误。",
|
|
351
364
|
parameters: proposeAdvanceHookArgsSchema,
|
|
352
365
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
353
366
|
run: runProposeAdvanceHook,
|
|
354
367
|
},
|
|
355
368
|
{
|
|
356
369
|
name: "propose_resolve_hook",
|
|
357
|
-
description: "回收伏笔提案:hook_id 指定伏笔,node_id
|
|
370
|
+
description: "回收伏笔提案:hook_id 指定伏笔,node_id 为回收**章**节点,description 描述回收内容。" +
|
|
358
371
|
"确认后复合写一次提交(Delta 记 status=resolved + resolves 关系,幂等)。" +
|
|
359
|
-
"
|
|
372
|
+
"仅生成提案,需用户确认后生效;伏笔或节点不存在/已软删/非章返回错误。",
|
|
360
373
|
parameters: proposeResolveHookArgsSchema,
|
|
361
374
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
362
375
|
run: runProposeResolveHook,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,kDAAkD;AAClD,iEAAiE;AACjE,oDAAoD;AACpD,kDAAkD;AAClD,EAAE;AACF,0DAA0D;AAC1D,0DAA0D;AAC1D,mEAAmE;AAEnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,mDAAmD;AACnD,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/proposal/delta.d.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { ProposeAddDeltaArgs } from "../schemas/index.js";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
3
|
import { type Proposal, type ToolProposalResult } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* 事实字段守卫:`targetType` 的事实字段(shared `SET_ONLY_FIELDS`)出现非 `set` 的 op → 抛错。
|
|
6
|
+
* **提案层与 executor 层共用同一实现**(executor 直写 db、绕过提案层;两处白名单/文案不得漂移)。
|
|
7
|
+
* 防御:非对象 change 项静默跳过(与 `computeState` 的坏项防御同风格)。
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertFactFieldsSetOnly(targetType: string, changes: readonly unknown[]): void;
|
|
10
|
+
/**
|
|
11
|
+
* character 已移除字段守卫(卡片 5.4 / 5.5):field ∈ shared `REMOVED_CHARACTER_FIELDS` → 抛错。
|
|
12
|
+
* **提案层与 executor 层共用同一实现**(同 `assertFactFieldsSetOnly` 模式);
|
|
13
|
+
* 防御:非对象 change 项静默跳过。
|
|
14
|
+
*/
|
|
15
|
+
export declare function assertRemovedCharacterFields(targetType: string, changes: readonly unknown[]): void;
|
|
4
16
|
/** 产出追加 Delta 提案 */
|
|
5
17
|
export declare function buildProposeAddDelta(ctx: ToolContext, args: ProposeAddDeltaArgs): Proposal;
|
|
6
18
|
/** propose_add_delta run */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/proposal/delta.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/proposal/delta.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAA4F,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9J;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAY7F;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CASlG;AAED,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,QAAQ,CAmC1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,mBAAmB,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB"}
|
package/dist/proposal/delta.js
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
//
|
|
7
7
|
// 生成时校验:
|
|
8
8
|
// - 触发节点(node_id)存在且未软删(requireOutlineNode)——节点级 updated_at 快照
|
|
9
|
+
// - **触发节点仅章(卡片 1.2)**:卷/场景拒绝(与 REST 创建路径 server delta.ts
|
|
10
|
+
// assertDeltaAnchorChapter 一致)——一章一个状态变化点才是叙事粒度;
|
|
11
|
+
// **只限写入侧**:compute_state 的 at_node_id 不限层级
|
|
9
12
|
// - 变更目标(target)存在且未软删(resolveEndpoint:实体或大纲节点)——端点 updated_at 快照
|
|
10
13
|
// **target 可为大纲节点**:S13.3 收紧的是 UI 创建入口(仅实体);AI 提案通道保持大纲
|
|
11
14
|
// target 是 「提案类」/get_delta_history(target_type 含 outline_node)的既有
|
|
@@ -13,19 +16,84 @@
|
|
|
13
16
|
// - **target 不可为 event(event 不产生 Delta,oracle 审查口径)**:与 REST 创建
|
|
14
17
|
// 路径(server delta.ts assertDeltaTargetType)一致拒绝;outline_node 有 S13.3 显式豁免
|
|
15
18
|
// (UI 收紧、AI 通道保持),event 无豁免——resolveEndpoint 解析出 event 即抛错
|
|
19
|
+
// - **character 不可变字段(卡片 5.2)**:目标为 character 时,changes 不得包含
|
|
20
|
+
// `role`/`description`(与前端字段下拉白名单同源)——二者是列表摘要与 AI 检索的依据,
|
|
21
|
+
// 允许 Delta 改会与 `entities.name`/摘要读取面产生“同一人物两个值”(见
|
|
22
|
+
// `docs/db/schema.md`「人物 data 分层」/`docs/design/10-data-model.md` §14 不变式 1)
|
|
23
|
+
// - **character 已移除字段(卡片 5.4 / 5.5)**:`status`/`abilities` 已从 schema 移除(status 无展示面、
|
|
24
|
+
// abilities 经 007 迁为 `ability_panel`)——允许写入只是脏键残留;白名单单一事实源 = shared
|
|
25
|
+
// `constants/delta.ts` 的 `REMOVED_CHARACTER_FIELDS`(提案层与 executor 同源,见下)
|
|
26
|
+
// - **事实字段只能用 set(卡片 5.3 / 5.5)**:hook 的 `status` 是物化事实字段(写路径同步当前值、
|
|
27
|
+
// 终态守卫/列表分组/AI 统计直接读它)——用 `op=update`+`from` 重放必然假冲突
|
|
28
|
+
// (重放基座即最新值);白名单单一事实源 = shared `constants/delta.ts` 的 `SET_ONLY_FIELDS`
|
|
16
29
|
// - changes 由 schema 校验(复用 deltaChangeSchema,至少一项)
|
|
17
30
|
// args 规范化为执行形态 { node_id, target_type, target_id, changes }(S6.7 add_delta 直接消费);
|
|
18
31
|
// delta_records.description(NOT NULL)在确认后由 S6.7 执行器取 proposal.summary 作为人类可读描述。
|
|
32
|
+
// 白名单单一事实源(卡片 5.5 / 5.6):client 与 tools 共消费 shared 常量,禁止各自手抄
|
|
33
|
+
import { IMMUTABLE_FIELDS, REMOVED_CHARACTER_FIELDS, SET_ONLY_FIELDS } from "@whispering233/ai-editor-shared";
|
|
19
34
|
import { buildProposal, checkProposalAborted, refOutlineNode, requireOutlineNode, resolveEndpoint } from "./types.js";
|
|
35
|
+
/**
|
|
36
|
+
* 事实字段守卫:`targetType` 的事实字段(shared `SET_ONLY_FIELDS`)出现非 `set` 的 op → 抛错。
|
|
37
|
+
* **提案层与 executor 层共用同一实现**(executor 直写 db、绕过提案层;两处白名单/文案不得漂移)。
|
|
38
|
+
* 防御:非对象 change 项静默跳过(与 `computeState` 的坏项防御同风格)。
|
|
39
|
+
*/
|
|
40
|
+
export function assertFactFieldsSetOnly(targetType, changes) {
|
|
41
|
+
const setOnlyFields = SET_ONLY_FIELDS[targetType];
|
|
42
|
+
if (setOnlyFields === undefined)
|
|
43
|
+
return;
|
|
44
|
+
for (const change of changes) {
|
|
45
|
+
const c = change;
|
|
46
|
+
const field = c === null || typeof c !== "object" ? undefined : c.field;
|
|
47
|
+
if (typeof field === "string" && setOnlyFields.includes(field) && c?.op !== "set") {
|
|
48
|
+
throw new Error(`${targetType} 的 ${field} 是写路径同步的事实字段,变更记录只能用 op=set(当前 op=${String(c?.op ?? "(缺失)")})`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* character 已移除字段守卫(卡片 5.4 / 5.5):field ∈ shared `REMOVED_CHARACTER_FIELDS` → 抛错。
|
|
54
|
+
* **提案层与 executor 层共用同一实现**(同 `assertFactFieldsSetOnly` 模式);
|
|
55
|
+
* 防御:非对象 change 项静默跳过。
|
|
56
|
+
*/
|
|
57
|
+
export function assertRemovedCharacterFields(targetType, changes) {
|
|
58
|
+
if (targetType !== "character")
|
|
59
|
+
return;
|
|
60
|
+
for (const change of changes) {
|
|
61
|
+
const c = change;
|
|
62
|
+
const field = c === null || typeof c !== "object" ? undefined : c.field;
|
|
63
|
+
if (typeof field === "string" && REMOVED_CHARACTER_FIELDS.includes(field)) {
|
|
64
|
+
throw new Error(`character 的 ${field} 字段已移除(请改用可变字段/能力面板)`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
20
68
|
/** 产出追加 Delta 提案 */
|
|
21
69
|
export function buildProposeAddDelta(ctx, args) {
|
|
22
70
|
const node = requireOutlineNode(ctx, args.node_id);
|
|
71
|
+
// 锚点仅章(卡片 1.2):卷/场景拒绝——与 REST 路径 assertDeltaAnchorChapter 同口径
|
|
72
|
+
if (node.type !== "chapter") {
|
|
73
|
+
throw new Error(`变更记录的触发节点须为章(卷/场景不承载变更记录): ${args.node_id}`);
|
|
74
|
+
}
|
|
23
75
|
const target = resolveEndpoint(ctx, args.target);
|
|
24
76
|
// event(时间轴事件)不产生 Delta——AI 提案通道与 REST 创建路径一致拒绝
|
|
25
77
|
//(outline_node 有 S13.3 显式豁免,event 无豁免)
|
|
26
78
|
if (target.type === "event") {
|
|
27
79
|
throw new Error(`event(时间轴事件)不产生 Delta,变更目标无效: ${args.target}`);
|
|
28
80
|
}
|
|
81
|
+
// character 不可变字段(卡片 5.2 / 5.6):role/description 不参与变更记录(请直接编辑)
|
|
82
|
+
// 白名单单一事实源 = shared `IMMUTABLE_FIELDS`(与前端字段下拉同源,禁止手抄)
|
|
83
|
+
if (target.type === "character") {
|
|
84
|
+
const immutable = IMMUTABLE_FIELDS.character ?? [];
|
|
85
|
+
for (const change of args.changes) {
|
|
86
|
+
const field = change?.field;
|
|
87
|
+
if (typeof field === "string" && immutable.includes(field)) {
|
|
88
|
+
throw new Error(`character 的不可变字段不参与变更记录(请直接编辑): ${field}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// character 已移除字段(卡片 5.4 / 5.5):status/abilities 已从 schema 移除——写入只是脏键残留
|
|
93
|
+
// (守卫实现与 executor 同源,白名单来自 shared `REMOVED_CHARACTER_FIELDS`)
|
|
94
|
+
assertRemovedCharacterFields(target.type, args.changes);
|
|
95
|
+
// 事实字段只能用 set(卡片 5.3):hook.status 用 update/from 重放必然假冲突(写路径同步了最新值)
|
|
96
|
+
assertFactFieldsSetOnly(target.type, args.changes);
|
|
29
97
|
return buildProposal(ctx, "propose_add_delta", { node_id: args.node_id, target_type: target.type, target_id: args.target, changes: args.changes }, [refOutlineNode(node), target.ref], `为节点「${node.title}」追加 ${args.changes.length} 项属性变更(目标: ${args.target})`);
|
|
30
98
|
}
|
|
31
99
|
/** propose_add_delta run */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/proposal/delta.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,oBAAoB;AACpB,EAAE;AACF,uEAAuE;AACvE,4CAA4C;AAC5C,EAAE;AACF,SAAS;AACT,+DAA+D;AAC/D,kEAAkE;AAClE,wDAAwD;AACxD,kEAAkE;AAClE,cAAc;AACd,gEAAgE;AAChE,0EAA0E;AAC1E,2DAA2D;AAC3D,mDAAmD;AACnD,mFAAmF;AACnF,gFAAgF;AAIhF,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAA0C,MAAM,YAAY,CAAC;AAE9J,oBAAoB;AACpB,MAAM,UAAU,oBAAoB,CAAC,GAAgB,EAAE,IAAyB;IAC9E,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/proposal/delta.ts"],"names":[],"mappings":"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"}
|
package/dist/proposal/hook.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ProposeAbandonHookArgs, ProposeAdvanceHookArgs, ProposeCreateHookArgs, ProposeResolveHookArgs, ProposeUpdateHookArgs } from "../schemas/index.js";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
3
|
import { type Proposal, type ToolProposalResult } from "./types.js";
|
|
4
|
-
/** 产出创建伏笔提案(plant_at_node_id
|
|
4
|
+
/** 产出创建伏笔提案(plant_at_node_id 可选指定埋设章节点) */
|
|
5
5
|
export declare function buildProposeCreateHook(ctx: ToolContext, args: ProposeCreateHookArgs): Proposal;
|
|
6
6
|
/** propose_create_hook run */
|
|
7
7
|
export declare function runProposeCreateHook(ctx: ToolContext, args: ProposeCreateHookArgs, signal?: AbortSignal): ToolProposalResult;
|
|
@@ -9,11 +9,11 @@ export declare function runProposeCreateHook(ctx: ToolContext, args: ProposeCrea
|
|
|
9
9
|
export declare function buildProposeUpdateHook(ctx: ToolContext, args: ProposeUpdateHookArgs): Proposal;
|
|
10
10
|
/** propose_update_hook run */
|
|
11
11
|
export declare function runProposeUpdateHook(ctx: ToolContext, args: ProposeUpdateHookArgs, signal?: AbortSignal): ToolProposalResult;
|
|
12
|
-
/** 产出推进伏笔提案(确认后复合写:delta 记 status=progressing + advances
|
|
12
|
+
/** 产出推进伏笔提案(确认后复合写:delta 记 status=progressing + advances 关系;node_id 仅章) */
|
|
13
13
|
export declare function buildProposeAdvanceHook(ctx: ToolContext, args: ProposeAdvanceHookArgs): Proposal;
|
|
14
14
|
/** propose_advance_hook run */
|
|
15
15
|
export declare function runProposeAdvanceHook(ctx: ToolContext, args: ProposeAdvanceHookArgs, signal?: AbortSignal): ToolProposalResult;
|
|
16
|
-
/** 产出回收伏笔提案(确认后复合写:delta 记 status=resolved + resolves
|
|
16
|
+
/** 产出回收伏笔提案(确认后复合写:delta 记 status=resolved + resolves 关系;node_id 仅章) */
|
|
17
17
|
export declare function buildProposeResolveHook(ctx: ToolContext, args: ProposeResolveHookArgs): Proposal;
|
|
18
18
|
/** propose_resolve_hook run */
|
|
19
19
|
export declare function runProposeResolveHook(ctx: ToolContext, args: ProposeResolveHookArgs, signal?: AbortSignal): ToolProposalResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/proposal/hook.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAmG,KAAK,QAAQ,EAA0B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7L,
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/proposal/hook.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAmG,KAAK,QAAQ,EAA0B,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7L,2CAA2C;AAC3C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAgB9F;AAED,8BAA8B;AAC9B,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB;AAED,qCAAqC;AACrC,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAU9F;AAED,8BAA8B;AAC9B,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAUhG;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB;AAED,wEAAwE;AACxE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAUhG;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB;AAED,gDAAgD;AAChD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAShG;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB"}
|
package/dist/proposal/hook.js
CHANGED
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
// 生成时校验:
|
|
9
9
|
// - 伏笔即 type=hook 的实体(用户手动创建或 AI 提案创建)——requireHook 校验
|
|
10
10
|
// 存在、未软删且类型一致,采集实体自身 updated_at 快照
|
|
11
|
-
// - 推进/回收的节点(node_id)与埋设节点(plant_at_node_id
|
|
12
|
-
//
|
|
11
|
+
// - 推进/回收的节点(node_id)与埋设节点(plant_at_node_id)为**章**(存在且未软删——
|
|
12
|
+
// requireChapterNode,卡片 1.3:伏笔锚点仅章,卷/场景拒绝)——节点级 updated_at 快照
|
|
13
13
|
// - 确认后的复合写(delta_records 记 status + relation_records 插 advances/resolves,
|
|
14
14
|
// 一次提交、幂等)由 S6.7 执行工具承担,本模块只产出提案
|
|
15
|
-
import { buildProposal, checkProposalAborted, refEntity, refOutlineNode,
|
|
16
|
-
/** 产出创建伏笔提案(plant_at_node_id
|
|
15
|
+
import { buildProposal, checkProposalAborted, refEntity, refOutlineNode, requireChapterNode, requireHook } from "./types.js";
|
|
16
|
+
/** 产出创建伏笔提案(plant_at_node_id 可选指定埋设章节点) */
|
|
17
17
|
export function buildProposeCreateHook(ctx, args) {
|
|
18
18
|
const references = [];
|
|
19
19
|
if (args.plant_at_node_id !== undefined) {
|
|
20
|
-
references.push(refOutlineNode(
|
|
20
|
+
references.push(refOutlineNode(requireChapterNode(ctx, args.plant_at_node_id)));
|
|
21
21
|
}
|
|
22
22
|
return buildProposal(ctx, "propose_create_hook", {
|
|
23
23
|
name: args.name,
|
|
@@ -43,10 +43,10 @@ export function runProposeUpdateHook(ctx, args, signal) {
|
|
|
43
43
|
const proposal = buildProposeUpdateHook(ctx, args);
|
|
44
44
|
return { proposal_id: proposal.proposal_id, summary: proposal.summary };
|
|
45
45
|
}
|
|
46
|
-
/** 产出推进伏笔提案(确认后复合写:delta 记 status=progressing + advances
|
|
46
|
+
/** 产出推进伏笔提案(确认后复合写:delta 记 status=progressing + advances 关系;node_id 仅章) */
|
|
47
47
|
export function buildProposeAdvanceHook(ctx, args) {
|
|
48
48
|
const hook = requireHook(ctx, args.hook_id);
|
|
49
|
-
const node =
|
|
49
|
+
const node = requireChapterNode(ctx, args.node_id);
|
|
50
50
|
return buildProposal(ctx, "propose_advance_hook", { hook_id: args.hook_id, node_id: args.node_id, description: args.description }, [refEntity(hook), refOutlineNode(node)], `推进伏笔「${hook.name}」到节点 ${args.node_id}`);
|
|
51
51
|
}
|
|
52
52
|
/** propose_advance_hook run */
|
|
@@ -55,10 +55,10 @@ export function runProposeAdvanceHook(ctx, args, signal) {
|
|
|
55
55
|
const proposal = buildProposeAdvanceHook(ctx, args);
|
|
56
56
|
return { proposal_id: proposal.proposal_id, summary: proposal.summary };
|
|
57
57
|
}
|
|
58
|
-
/** 产出回收伏笔提案(确认后复合写:delta 记 status=resolved + resolves
|
|
58
|
+
/** 产出回收伏笔提案(确认后复合写:delta 记 status=resolved + resolves 关系;node_id 仅章) */
|
|
59
59
|
export function buildProposeResolveHook(ctx, args) {
|
|
60
60
|
const hook = requireHook(ctx, args.hook_id);
|
|
61
|
-
const node =
|
|
61
|
+
const node = requireChapterNode(ctx, args.node_id);
|
|
62
62
|
return buildProposal(ctx, "propose_resolve_hook", { hook_id: args.hook_id, node_id: args.node_id, description: args.description }, [refEntity(hook), refOutlineNode(node)], `回收伏笔「${hook.name}」于节点 ${args.node_id}`);
|
|
63
63
|
}
|
|
64
64
|
/** propose_resolve_hook run */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/proposal/hook.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,qEAAqE;AACrE,8CAA8C;AAC9C,EAAE;AACF,uEAAuE;AACvE,4EAA4E;AAC5E,EAAE;AACF,SAAS;AACT,uDAAuD;AACvD,mCAAmC;AACnC,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/proposal/hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/proposal/relation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/proposal/relation.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAyF,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3J,0CAA0C;AAC1C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CA2BhG;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB;AAED,6BAA6B;AAC7B,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,GAAG,QAAQ,CAYtG;AAED,kCAAkC;AAClC,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,yBAAyB,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB"}
|