@whispering233/ai-editor-tools 0.0.26 → 0.0.30
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 +2 -2
- package/dist/analysis/conflict.d.ts.map +1 -1
- package/dist/analysis/conflict.js +1 -1
- package/dist/analysis/consistency.d.ts +2 -2
- package/dist/analysis/consistency.d.ts.map +1 -1
- package/dist/analysis/consistency.js +4 -4
- package/dist/analysis/consistency.js.map +1 -1
- package/dist/analysis/hook.d.ts +12 -12
- package/dist/analysis/hook.d.ts.map +1 -1
- package/dist/analysis/hook.js +9 -9
- package/dist/analysis/hook.js.map +1 -1
- package/dist/analysis/orphan.d.ts +2 -2
- package/dist/analysis/orphan.d.ts.map +1 -1
- package/dist/analysis/orphan.js +3 -3
- package/dist/analysis/orphan.js.map +1 -1
- package/dist/analysis/path.d.ts +3 -3
- package/dist/analysis/path.d.ts.map +1 -1
- package/dist/analysis/path.js +4 -4
- package/dist/analysis/path.js.map +1 -1
- package/dist/analysis/suggest.d.ts +2 -2
- package/dist/analysis/suggest.d.ts.map +1 -1
- package/dist/analysis/suggest.js +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +1 -1
- package/dist/context.js.map +1 -1
- package/dist/executor/delta.d.ts +1 -1
- package/dist/executor/delta.d.ts.map +1 -1
- package/dist/executor/delta.js +1 -1
- package/dist/executor/delta.js.map +1 -1
- package/dist/executor/entity.d.ts +3 -3
- package/dist/executor/entity.d.ts.map +1 -1
- package/dist/executor/entity.js +5 -5
- package/dist/executor/entity.js.map +1 -1
- package/dist/executor/hook.d.ts +3 -3
- package/dist/executor/hook.d.ts.map +1 -1
- package/dist/executor/hook.js +12 -12
- 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/outline.d.ts +3 -3
- package/dist/executor/outline.d.ts.map +1 -1
- package/dist/executor/outline.js +4 -4
- package/dist/executor/outline.js.map +1 -1
- package/dist/executor/reference.js +2 -2
- package/dist/executor/reference.js.map +1 -1
- package/dist/executor/relation.d.ts +2 -2
- package/dist/executor/relation.d.ts.map +1 -1
- package/dist/executor/relation.js +3 -3
- package/dist/executor/relation.js.map +1 -1
- package/dist/executor/reorder-timepoints.d.ts +1 -1
- package/dist/executor/reorder-timepoints.d.ts.map +1 -1
- package/dist/executor/reorder-timepoints.js +2 -2
- package/dist/executor/reorder-timepoints.js.map +1 -1
- package/dist/executor/types.d.ts +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/proposal/delta.js +1 -1
- package/dist/proposal/delta.js.map +1 -1
- package/dist/proposal/entity.js +1 -1
- package/dist/proposal/entity.js.map +1 -1
- package/dist/proposal/hook.js +1 -1
- package/dist/proposal/hook.js.map +1 -1
- package/dist/proposal/outline.js +2 -2
- package/dist/proposal/outline.js.map +1 -1
- package/dist/proposal/reference.js +1 -1
- package/dist/proposal/reference.js.map +1 -1
- package/dist/proposal/reorder-timepoints.d.ts +1 -1
- package/dist/proposal/reorder-timepoints.d.ts.map +1 -1
- package/dist/proposal/reorder-timepoints.js +4 -4
- package/dist/proposal/reorder-timepoints.js.map +1 -1
- package/dist/proposal/types.d.ts +4 -4
- package/dist/proposal/types.d.ts.map +1 -1
- package/dist/proposal/types.js +2 -2
- package/dist/proposal/types.js.map +1 -1
- package/dist/query/delta.d.ts +2 -2
- package/dist/query/delta.js +3 -3
- package/dist/query/delta.js.map +1 -1
- package/dist/query/entity.d.ts +3 -3
- package/dist/query/entity.js +3 -3
- package/dist/query/outline.d.ts +2 -2
- package/dist/query/outline.js +3 -3
- package/dist/query/outline.js.map +1 -1
- package/dist/query/reference.d.ts +1 -1
- package/dist/query/reference.d.ts.map +1 -1
- package/dist/query/reference.js +2 -2
- package/dist/query/reference.js.map +1 -1
- package/dist/query/relation.d.ts +1 -1
- package/dist/query/relation.js +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/executor/delta.ts"],"names":[],"mappings":"AAUA,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,
|
|
1
|
+
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/executor/delta.ts"],"names":[],"mappings":"AAUA,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,0DAA0D;AAC1D,eAAO,MAAM,eAAe,EAAE,UAU7B,CAAC"}
|
package/dist/executor/delta.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// - order 由 db 层全局单调生成(insertDelta 事务内 MAX+1),此处无 order 入参
|
|
8
8
|
import { insertDelta } from "@whispering233/ai-editor-db";
|
|
9
9
|
import { requireArray, requireString } from "./types.js";
|
|
10
|
-
/** add_delta
|
|
10
|
+
/** add_delta(add_delta(node_id, target, changes) → id) */
|
|
11
11
|
export const executeAddDelta = (ctx, proposal) => {
|
|
12
12
|
const args = proposal.args;
|
|
13
13
|
const row = insertDelta(ctx.db, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/executor/delta.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,YAAY;AACZ,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,kEAAkE;AAClE,2DAA2D;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE1E,
|
|
1
|
+
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/executor/delta.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,YAAY;AACZ,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,kEAAkE;AAClE,2DAA2D;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE1E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;QAC9B,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;QACtC,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;QAC9C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,CAAkB,EAAE,mCAAmC;QAC5F,WAAW,EAAE,QAAQ,CAAC,OAAO;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ExecutorFn } from "./types.js";
|
|
2
|
-
/** create_entity
|
|
2
|
+
/** create_entity(create_entity(type, name, data) → id) */
|
|
3
3
|
export declare const executeCreateEntity: ExecutorFn;
|
|
4
|
-
/** update_entity
|
|
4
|
+
/** update_entity(update_entity(id, patches) → updated;patches 浅合并进 data) */
|
|
5
5
|
export declare const executeUpdateEntity: ExecutorFn;
|
|
6
|
-
/** delete_entity
|
|
6
|
+
/** delete_entity(delete_entity(id) → void;软删 + 级联,可回收站还原) */
|
|
7
7
|
export declare const executeDeleteEntity: ExecutorFn;
|
|
8
8
|
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/executor/entity.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgD,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3F,
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/executor/entity.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgD,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3F,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,EAAE,UAQjC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,EAAE,UASjC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,EAAE,UAOjC,CAAC"}
|
package/dist/executor/entity.js
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
//
|
|
8
8
|
// 语义对齐:
|
|
9
9
|
// - create_entity:type/name 必填 + data 可选,id 由 db 层生成(char-/set-/loc-/hook- 前缀)
|
|
10
|
-
// - update_entity:patches 为 data
|
|
10
|
+
// - update_entity:patches 为 data **浅合并**字段(未传字段保留);
|
|
11
11
|
// 软删实体不可更新(getEntity 过滤 → null → 抛错)
|
|
12
12
|
// - delete_entity:软删 + 级联关系与 Delta(本体保留可回收站还原)
|
|
13
13
|
// 参数形态:与 S6.6 proposal.args 对齐(propose_create_entity → { type, name, data? } 等),
|
|
14
14
|
// 由 executeProposal 按 proposal.type 映射后直接消费。
|
|
15
15
|
import { createEntity, nowIso, softDeleteEntity, updateEntity } from "@whispering233/ai-editor-db";
|
|
16
16
|
import { optionalRecord, requireRecord, requireString } from "./types.js";
|
|
17
|
-
/** create_entity
|
|
17
|
+
/** create_entity(create_entity(type, name, data) → id) */
|
|
18
18
|
export const executeCreateEntity = (ctx, proposal) => {
|
|
19
19
|
const args = proposal.args;
|
|
20
20
|
const row = createEntity(ctx.db, {
|
|
@@ -24,18 +24,18 @@ export const executeCreateEntity = (ctx, proposal) => {
|
|
|
24
24
|
});
|
|
25
25
|
return { id: row.id };
|
|
26
26
|
};
|
|
27
|
-
/** update_entity
|
|
27
|
+
/** update_entity(update_entity(id, patches) → updated;patches 浅合并进 data) */
|
|
28
28
|
export const executeUpdateEntity = (ctx, proposal) => {
|
|
29
29
|
const args = proposal.args;
|
|
30
30
|
const entityId = requireString(args, "entity_id");
|
|
31
31
|
const patches = requireRecord(args, "patches");
|
|
32
|
-
const row = updateEntity(ctx.db, entityId, { data: patches }); // data
|
|
32
|
+
const row = updateEntity(ctx.db, entityId, { data: patches }); // data 浅合并(同语义)
|
|
33
33
|
if (row === null) {
|
|
34
34
|
throw new Error(`实体不存在或已软删: ${entityId}`);
|
|
35
35
|
}
|
|
36
36
|
return { id: row.id, updated: true };
|
|
37
37
|
};
|
|
38
|
-
/** delete_entity
|
|
38
|
+
/** delete_entity(delete_entity(id) → void;软删 + 级联,可回收站还原) */
|
|
39
39
|
export const executeDeleteEntity = (ctx, proposal) => {
|
|
40
40
|
const entityId = requireString(proposal.args, "entity_id");
|
|
41
41
|
const result = softDeleteEntity(ctx.db, entityId, nowIso());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/executor/entity.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,gDAAgD;AAChD,EAAE;AACF,4DAA4D;AAC5D,oDAAoD;AACpD,+CAA+C;AAC/C,EAAE;AACF,QAAQ;AACR,+EAA+E;AAC/E,
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/executor/entity.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,gDAAgD;AAChD,EAAE;AACF,4DAA4D;AAC5D,oDAAoD;AACpD,+CAA+C;AAC/C,EAAE;AACF,QAAQ;AACR,+EAA+E;AAC/E,oDAAoD;AACpD,qCAAqC;AACrC,+CAA+C;AAC/C,iFAAiF;AACjF,6CAA6C;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEnG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE3F,0DAA0D;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;QAC/B,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAe,EAAE,gCAAgC;QACjF,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;KACnC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB;IAC/E,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvC,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC,CAAC"}
|
package/dist/executor/hook.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ExecutorFn } from "./types.js";
|
|
2
|
-
/** advance_hook
|
|
2
|
+
/** advance_hook(advance_hook(hook_id, node_id, description) → id) */
|
|
3
3
|
export declare const executeAdvanceHook: ExecutorFn;
|
|
4
|
-
/** resolve_hook
|
|
4
|
+
/** resolve_hook(resolve_hook(hook_id, node_id, description) → id) */
|
|
5
5
|
export declare const executeResolveHook: ExecutorFn;
|
|
6
|
-
/** abandon_hook
|
|
6
|
+
/** abandon_hook(abandon_hook(hook_id, description) → id;仅 delta 记 status=abandoned) */
|
|
7
7
|
export declare const executeAbandonHook: ExecutorFn;
|
|
8
8
|
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/executor/hook.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAiB,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAuJjF,
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/executor/hook.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAiB,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAuJjF,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAE,UACsC,CAAC;AAExE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAE,UACmC,CAAC;AAErE,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,EAAE,UAC8B,CAAC"}
|
package/dist/executor/hook.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// 两步写为**一次提交**(withTransaction),失败整体回滚、不产生半状态。
|
|
6
6
|
// - advance_hook:delta_records 记 status → progressing + relation_records 插 advances
|
|
7
7
|
// - resolve_hook:delta_records 记 status → resolved + relation_records 插 resolves
|
|
8
|
-
// - abandon_hook:仅 delta_records 记 status → abandoned
|
|
8
|
+
// - abandon_hook:仅 delta_records 记 status → abandoned(无 relation;args 无 node_id)
|
|
9
9
|
//
|
|
10
10
|
// **幂等**:先查 (node_id, hook_id, relation_type) 是否已有未软删记录,存在即返回已有 id
|
|
11
11
|
// (不重复写)——重复确认/重复提案均不重复推进;abandon 无关系可查,改查「已记
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
// from: 当前状态, to: 目标状态 }]——from 取 hook.data.status(缺省 planted,
|
|
20
20
|
// 状态缺失视为 planted),保证 computeState 的 update 校验正常累积;
|
|
21
21
|
// description 取 proposal.args.description(delta_records.description NOT NULL)。
|
|
22
|
-
// 终态守卫:resolved/abandoned
|
|
22
|
+
// 终态守卫:resolved/abandoned 为生命周期终态,终态伏笔不可再推进/回收/废弃。
|
|
23
23
|
//
|
|
24
24
|
// **状态同步(S6.7 修复轮必须改)**:复合写事务内插入 delta 后**同步更新
|
|
25
25
|
// entities.data.status**(浅合并 + 刷新 updated_at,与 快照比对语义兼容)——
|
|
26
26
|
// 终态守卫(assertNotTerminal)、delta 的 from(currentHookStatus)与 S6.5 hookStatuses
|
|
27
27
|
// (analysis/hook.ts collectHooks 读 entity.data.status)均以 data.status 为唯一事实来源
|
|
28
|
-
|
|
28
|
+
//;不同步则 resolved/abandoned 后仍可推进、同 hook 二次推进 from 断裂
|
|
29
29
|
// (computeState conflicts)、已回收伏笔仍计 active。**幂等命中路径不更新**(首次执行已同步)。
|
|
30
30
|
//
|
|
31
31
|
// 执行类是短同步事务,不做 signal 检查(长工具才要求执行中检查;入口检查由
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
import { createRelation, findOutlineNode, insertDelta, readOutlineFile, readProjectFile, updateEntity, withTransaction } from "@whispering233/ai-editor-db";
|
|
34
34
|
import { requireHook, requireOutlineNode } from "../proposal/types.js";
|
|
35
35
|
import { requireString } from "./types.js";
|
|
36
|
-
/**
|
|
36
|
+
/** 伏笔生命周期终态(planted → progressing → resolved 或 abandoned) */
|
|
37
37
|
const TERMINAL_STATUSES = ["resolved", "abandoned"];
|
|
38
38
|
/** 取伏笔当前状态(data.status 缺失/空串 → planted——创建即埋设) */
|
|
39
39
|
function currentHookStatus(hook) {
|
|
40
40
|
const status = hook.data.status;
|
|
41
41
|
return typeof status === "string" && status !== "" ? status : "planted";
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/** 终态守卫:终态伏笔不可再推进/回收/废弃(生命周期语义) */
|
|
44
44
|
function assertNotTerminal(hook, actionLabel) {
|
|
45
45
|
const status = currentHookStatus(hook);
|
|
46
46
|
if (TERMINAL_STATUSES.includes(status)) {
|
|
@@ -49,7 +49,7 @@ function assertNotTerminal(hook, actionLabel) {
|
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* 幂等查询(advance/resolve):同 (node_id, hook_id, relation_type) 已有**未软删**记录
|
|
52
|
-
* → 返回其 id
|
|
52
|
+
* → 返回其 id(复合写说明:重复确认/重复提案均不重复推进;含端点软删后还原的
|
|
53
53
|
* 记录——deleted_at 置 NULL 后仍命中)。
|
|
54
54
|
*/
|
|
55
55
|
function findExistingLifecycleRelation(db, nodeId, hookId, relationType) {
|
|
@@ -132,7 +132,7 @@ function executeHookTransition(ctx, proposal, relationType, toStatus, actionLabe
|
|
|
132
132
|
const args = proposal.args;
|
|
133
133
|
const hookId = requireString(args, "hook_id");
|
|
134
134
|
const nodeId = relationType === null ? null : requireString(args, "node_id");
|
|
135
|
-
const description = requireString(args, "description"); // delta_records.description NOT NULL
|
|
135
|
+
const description = requireString(args, "description"); // delta_records.description NOT NULL
|
|
136
136
|
return withTransaction(ctx.db, () => {
|
|
137
137
|
// 幂等(含未软删记录):命中即返回已有 id,不重复写
|
|
138
138
|
if (relationType !== null) {
|
|
@@ -151,7 +151,7 @@ function executeHookTransition(ctx, proposal, relationType, toStatus, actionLabe
|
|
|
151
151
|
requireOutlineNode(ctx, nodeId);
|
|
152
152
|
// 终态守卫(resolved/abandoned 不可再推进/回收;废弃时不可再废弃)
|
|
153
153
|
assertNotTerminal(hook, actionLabel);
|
|
154
|
-
// delta:记 status 变化(from=当前状态,
|
|
154
|
+
// delta:记 status 变化(from=当前状态,update 语义,computeState 正常累积)
|
|
155
155
|
const changes = [{ field: "status", op: "update", from: currentHookStatus(hook), to: toStatus }];
|
|
156
156
|
const delta = insertDelta(ctx.db, {
|
|
157
157
|
nodeId: nodeId ?? anchorNodeForAbandon(ctx),
|
|
@@ -166,7 +166,7 @@ function executeHookTransition(ctx, proposal, relationType, toStatus, actionLabe
|
|
|
166
166
|
// 仍可推进(守卫失效)、同 hook 二次推进 from 断裂(computeState conflicts)、
|
|
167
167
|
// 已回收伏笔仍计 active。幂等命中路径(上方 early return)不更新——首次执行已同步。
|
|
168
168
|
updateEntity(ctx.db, hookId, { data: { status: toStatus } });
|
|
169
|
-
// relation:advances / resolves(大纲节点 → hook
|
|
169
|
+
// relation:advances / resolves(大纲节点 → hook;方向约定)
|
|
170
170
|
if (relationType !== null) {
|
|
171
171
|
const relation = createRelation(ctx.db, { sourceType: "outline_node", sourceId: nodeId, targetType: "hook", targetId: hookId, relationType }, ctx.outlineDir);
|
|
172
172
|
return { id: relation.id };
|
|
@@ -174,10 +174,10 @@ function executeHookTransition(ctx, proposal, relationType, toStatus, actionLabe
|
|
|
174
174
|
return { id: delta.id };
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
|
-
/** advance_hook
|
|
177
|
+
/** advance_hook(advance_hook(hook_id, node_id, description) → id) */
|
|
178
178
|
export const executeAdvanceHook = (ctx, proposal) => executeHookTransition(ctx, proposal, "advances", "progressing", "推进");
|
|
179
|
-
/** resolve_hook
|
|
179
|
+
/** resolve_hook(resolve_hook(hook_id, node_id, description) → id) */
|
|
180
180
|
export const executeResolveHook = (ctx, proposal) => executeHookTransition(ctx, proposal, "resolves", "resolved", "回收");
|
|
181
|
-
/** abandon_hook
|
|
181
|
+
/** abandon_hook(abandon_hook(hook_id, description) → id;仅 delta 记 status=abandoned) */
|
|
182
182
|
export const executeAbandonHook = (ctx, proposal) => executeHookTransition(ctx, proposal, null, "abandoned", "废弃");
|
|
183
183
|
//# sourceMappingURL=hook.js.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/executor/hook.ts"],"names":[],"mappings":"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"}
|
package/dist/executor/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// propose_advance_hook → advance_hook 等(15 提案 → 13 执行);
|
|
6
6
|
// propose_create_hook / propose_update_hook 为适配器(hook 即 type=hook 的实体):
|
|
7
7
|
// - propose_create_hook → create_entity 注入 type="hook" + plant_at_node_id 时
|
|
8
|
-
// 同事务补插 plants 关系(提案承诺「确认后建立 plants
|
|
8
|
+
// 同事务补插 plants 关系(提案承诺「确认后建立 plants 关系」,生命周期「埋下」)
|
|
9
9
|
// - propose_update_hook → update_entity(hook_id 即 entity_id,patches 浅合并进 data)
|
|
10
10
|
// propose_reorder_timepoints → reorder_timepoints(G2:批量重排 sort_order,见 executor/reorder-timepoints.ts,
|
|
11
11
|
// 取代 F9 的 propose_reorder_events——事件不再带 time_label,语义序载体变为时间点实体)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// (「核心设计原则」——AI 不可以调用执行类工具)。
|
|
15
15
|
// 映射表类型安全:key 为 15 个提案类型字面量联合(Record 缺键编译期报错);
|
|
16
16
|
// 运行时未知 type → 查表 undefined → 抛错(防静默,S7.5 转错误响应)。
|
|
17
|
-
// signal
|
|
17
|
+
// signal:执行类是短同步事务,不做中止检查(只要求长工具执行中检查;
|
|
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";
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type ExecutorFn } from "./types.js";
|
|
2
|
-
/** create_outline_node
|
|
2
|
+
/** create_outline_node(create_outline_node(type, title, parent) → id) */
|
|
3
3
|
export declare const executeCreateOutlineNode: ExecutorFn;
|
|
4
|
-
/** move_node
|
|
4
|
+
/** move_node(move_node(node_id, parent, order) → void;parent 可为 root) */
|
|
5
5
|
export declare const executeMoveNode: ExecutorFn;
|
|
6
|
-
/** delete_node
|
|
6
|
+
/** delete_node(delete_node(node_id) → void;软删 + 递归子树) */
|
|
7
7
|
export declare const executeDeleteNode: ExecutorFn;
|
|
8
8
|
//# sourceMappingURL=outline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/executor/outline.ts"],"names":[],"mappings":"AAWA,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3E,
|
|
1
|
+
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/executor/outline.ts"],"names":[],"mappings":"AAWA,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3E,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,EAAE,UAUtC,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,eAAe,EAAE,UAa7B,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAE,UAI/B,CAAC"}
|
package/dist/executor/outline.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
//
|
|
4
4
|
// 写路径:直接调 db outline-ops(唯一写路径;outline.json 原子写由 db 层保证);
|
|
5
5
|
// updatedAt 由应用层 nowIso 传入(时间约定:ISO 8601 应用层写入,模块不生成时间)。
|
|
6
|
-
//
|
|
6
|
+
// 层级约束(严格三层)由 db assertCanHold 兜底:scene 挂 chapter、chapter 挂卷/根、
|
|
7
7
|
// volume 挂根;parent_id 缺省挂 root(volume/chapter 可挂根,scene 缺省即拒绝——与提案层同语义)。
|
|
8
8
|
// 软删语义:delete_node 软删 + 递归子树(本体保留可回收站还原)。
|
|
9
9
|
import { createOutlineNode, deleteOutlineNode, moveOutlineNode, nowIso } from "@whispering233/ai-editor-db";
|
|
10
10
|
import { requireNumber, requireString } from "./types.js";
|
|
11
|
-
/** create_outline_node
|
|
11
|
+
/** create_outline_node(create_outline_node(type, title, parent) → id) */
|
|
12
12
|
export const executeCreateOutlineNode = (ctx, proposal) => {
|
|
13
13
|
const args = proposal.args;
|
|
14
14
|
const parentId = args.parent_id === undefined ? "root" : requireString(args, "parent_id"); // 缺省挂根
|
|
@@ -20,7 +20,7 @@ export const executeCreateOutlineNode = (ctx, proposal) => {
|
|
|
20
20
|
});
|
|
21
21
|
return { id: node.id };
|
|
22
22
|
};
|
|
23
|
-
/** move_node
|
|
23
|
+
/** move_node(move_node(node_id, parent, order) → void;parent 可为 root) */
|
|
24
24
|
export const executeMoveNode = (ctx, proposal) => {
|
|
25
25
|
const args = proposal.args;
|
|
26
26
|
const nodeId = requireString(args, "node_id");
|
|
@@ -30,7 +30,7 @@ export const executeMoveNode = (ctx, proposal) => {
|
|
|
30
30
|
}, nowIso());
|
|
31
31
|
return { id: nodeId, ...result };
|
|
32
32
|
};
|
|
33
|
-
/** delete_node
|
|
33
|
+
/** delete_node(delete_node(node_id) → void;软删 + 递归子树) */
|
|
34
34
|
export const executeDeleteNode = (ctx, proposal) => {
|
|
35
35
|
const nodeId = requireString(proposal.args, "node_id");
|
|
36
36
|
const { children } = deleteOutlineNode(ctx.outlineDir, nodeId, nowIso());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/executor/outline.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,gDAAgD;AAChD,EAAE;AACF,0DAA0D;AAC1D,yDAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/executor/outline.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,gDAAgD;AAChD,EAAE;AACF,0DAA0D;AAC1D,yDAAyD;AACzD,gEAAgE;AAChE,yEAAyE;AACzE,0CAA0C;AAE1C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAE5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE3E,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO;IAClG,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE;QAC7C,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,MAAM,CAAqC;QACrE,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;QACnC,QAAQ;QACR,SAAS,EAAE,MAAM,EAAE;KACpB,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,eAAe,CAC5B,GAAG,CAAC,UAAU,EACd,MAAM,EACN;QACE,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,mCAAmC;KACzE,EACD,MAAM,EAAE,CACT,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;IAC7D,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACnE,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// 执行类工具:参考资料
|
|
2
2
|
// execute_create_reference——propose_create_reference 确认后经 executeProposal 调度,
|
|
3
3
|
// 复用 executeCreateEntity(type='reference' + data 合并),补 data.type 缺省 material。
|
|
4
4
|
// 与 S6.7 其他执行工具同:不注册 registry(LLM 不可见)。
|
|
@@ -12,7 +12,7 @@ export const executeCreateReference = (ctx, proposal) => {
|
|
|
12
12
|
return executeCreateEntity(ctx, {
|
|
13
13
|
...proposal,
|
|
14
14
|
args: {
|
|
15
|
-
type: "reference", //
|
|
15
|
+
type: "reference", // 固定实体类型(第 7 种实体)
|
|
16
16
|
name,
|
|
17
17
|
data: { ...data, type: data.type ?? "material" }, // data.type 缺省 material(schema 容错默认)
|
|
18
18
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/executor/reference.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/executor/reference.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,8EAA8E;AAC9E,8EAA8E;AAC9E,wCAAwC;AAGxC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAe,CAAC,GAAG,EAAE,QAAQ,EAAkB,EAAE;IAClF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAA4B,CAAC;IACpE,OAAO,mBAAmB,CAAC,GAAG,EAAE;QAC9B,GAAG,QAAQ;QACX,IAAI,EAAE;YACJ,IAAI,EAAE,WAAW,EAAE,kBAAkB;YACrC,IAAI;YACJ,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,EAAE,qCAAqC;SACxF;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ExecutorFn } from "./types.js";
|
|
2
|
-
/** add_relation
|
|
2
|
+
/** add_relation(add_relation(source, target, type) → id) */
|
|
3
3
|
export declare const executeAddRelation: ExecutorFn;
|
|
4
|
-
/** remove_relation
|
|
4
|
+
/** remove_relation(remove_relation(id) → void;物理删) */
|
|
5
5
|
export declare const executeRemoveRelation: ExecutorFn;
|
|
6
6
|
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5E,
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/executor/relation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5E,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,EAAE,UAehC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,EAAE,UAOnC,CAAC"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
//
|
|
4
4
|
// - add_relation:端点类型(source_type/target_type)已由 S6.6 提案层派生规范化到 args,
|
|
5
5
|
// 此处直接透传 db createRelation(判重 RELATION_EXISTS / 端点存在性校验 db 层负责);
|
|
6
|
-
// 重复确认同一 add_relation 提案 → RELATION_EXISTS 抛错(幂等只保证 hook
|
|
6
|
+
// 重复确认同一 add_relation 提案 → RELATION_EXISTS 抛错(幂等只保证 hook 复合写)
|
|
7
7
|
// - remove_relation:手动删关系 = **物理删**(不置 deleted_at、不进回收站);
|
|
8
8
|
// 0 行影响(关系不存在)→ 抛错(fail-fast,S7.5 转错误响应)
|
|
9
9
|
import { createRelation, deleteRelation } from "@whispering233/ai-editor-db";
|
|
10
10
|
import { optionalRecord, requireString } from "./types.js";
|
|
11
|
-
/** add_relation
|
|
11
|
+
/** add_relation(add_relation(source, target, type) → id) */
|
|
12
12
|
export const executeAddRelation = (ctx, proposal) => {
|
|
13
13
|
const args = proposal.args;
|
|
14
14
|
const row = createRelation(ctx.db, {
|
|
@@ -21,7 +21,7 @@ export const executeAddRelation = (ctx, proposal) => {
|
|
|
21
21
|
}, ctx.outlineDir);
|
|
22
22
|
return { id: row.id };
|
|
23
23
|
};
|
|
24
|
-
/** remove_relation
|
|
24
|
+
/** remove_relation(remove_relation(id) → void;物理删) */
|
|
25
25
|
export const executeRemoveRelation = (ctx, proposal) => {
|
|
26
26
|
const relationId = requireString(proposal.args, "relation_id");
|
|
27
27
|
const changes = deleteRelation(ctx.db, relationId);
|
|
@@ -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
|
|
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,GAAG,GAAG,cAAc,CACxB,GAAG,CAAC,EAAE,EACN;QACE,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;QAC9C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;QAC9C,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1C,YAAY,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC;QAClD,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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ToolContext } from "../context.js";
|
|
2
2
|
import type { Proposal } from "../proposal/types.js";
|
|
3
3
|
import { type ExecutorResult } from "./types.js";
|
|
4
|
-
/** reorder_timepoints
|
|
4
|
+
/** reorder_timepoints(reorder_timepoints(timepoint_ids) → { reordered }) */
|
|
5
5
|
export declare function executeReorderTimepoints(ctx: ToolContext, proposal: Proposal): ExecutorResult;
|
|
6
6
|
//# sourceMappingURL=reorder-timepoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder-timepoints.d.ts","sourceRoot":"","sources":["../../src/executor/reorder-timepoints.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,
|
|
1
|
+
{"version":3,"file":"reorder-timepoints.d.ts","sourceRoot":"","sources":["../../src/executor/reorder-timepoints.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAkC7F"}
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
// 非空去重校验 → 读当前全部未软删时间点(listTimepoints)→ **集合相等校验**(缺/多/重复 →
|
|
9
9
|
// 抛错,与提案层同款:防御纵深,兜底「S7.5 references 快照校验已拦截但确认前用户又拖拽
|
|
10
10
|
// 增删」的竞态)→ 调 db reorderTimepoints 按新序事务内重写 sort_order 0..n-1(拖拽权威语义
|
|
11
|
-
// 不变,
|
|
11
|
+
// 不变,G2 修订:排序结果即 timepoint.sort_order 线性序;不改其下事件序——
|
|
12
12
|
// 双独立线性序)→ 返回 { reordered: n }。
|
|
13
13
|
import { listTimepoints, nowIso, reorderTimepoints } from "@whispering233/ai-editor-db";
|
|
14
14
|
import { requireArray } from "./types.js";
|
|
15
|
-
/** reorder_timepoints
|
|
15
|
+
/** reorder_timepoints(reorder_timepoints(timepoint_ids) → { reordered }) */
|
|
16
16
|
export function executeReorderTimepoints(ctx, proposal) {
|
|
17
17
|
const raw = requireArray(proposal.args, "timepoint_ids");
|
|
18
18
|
// 元素防御:提案层 zod 已校验为 string[],此处防脏调用(与 requireString 同风格)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder-timepoints.js","sourceRoot":"","sources":["../../src/executor/reorder-timepoints.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,qBAAqB;AACrB,EAAE;AACF,6DAA6D;AAC7D,4CAA4C;AAC5C,EAAE;AACF,0DAA0D;AAC1D,4DAA4D;AAC5D,qDAAqD;AACrD,oEAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"reorder-timepoints.js","sourceRoot":"","sources":["../../src/executor/reorder-timepoints.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,qBAAqB;AACrB,EAAE;AACF,6DAA6D;AAC7D,4CAA4C;AAC5C,EAAE;AACF,0DAA0D;AAC1D,4DAA4D;AAC5D,qDAAqD;AACrD,oEAAoE;AACpE,oDAAoD;AACpD,gCAAgC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,YAAY,EAAuB,MAAM,YAAY,CAAC;AAE/D,4EAA4E;AAC5E,MAAM,UAAU,wBAAwB,CAAC,GAAgB,EAAE,QAAkB;IAC3E,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC1D,yDAAyD;IACxD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACF,yCAAyC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACF,+DAA+D;IAC/D,wDAAwD;IACxD,8BAA8B;IAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,CAAC,GAAa,EAAU,EAAE;YACxC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC;QACF,MAAM,IAAI,KAAK,CACb,sBAAsB,OAAO,CAAC,MAAM,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC,MAAM,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CACtG,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
|
package/dist/executor/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { ToolContext } from "../context.js";
|
|
|
2
2
|
import type { Proposal } from "../proposal/types.js";
|
|
3
3
|
/**
|
|
4
4
|
* 执行结果(统一携带 id:新对象 id 或操作对象 id;扩展字段 camelCase)。
|
|
5
|
-
* duplicated=true:幂等命中——(node_id, hook_id, relation_type)
|
|
5
|
+
* duplicated=true:幂等命中——(node_id, hook_id, relation_type) 已有记录,未重复写(复合写说明)。
|
|
6
6
|
* id 可选(F9/G2):reorder_timepoints 是批量操作无单对象 id,返回 { reordered: n } 即可;
|
|
7
7
|
* 其余执行器均携带 id(S7.5 响应 result 透传,未要求 id 必在)。
|
|
8
8
|
*/
|
package/dist/index.js
CHANGED
|
@@ -114,7 +114,7 @@ const queryToolDefs = [
|
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
name: "search_references",
|
|
117
|
-
description: "
|
|
117
|
+
description: "参考资料搜索:按关键词搜索标题+标签命中的参考资料摘要列表(type 分类可选过滤:自由文本分类," +
|
|
118
118
|
"建议沿用项目内已有分类;tags 标签 AND 过滤)。" +
|
|
119
119
|
"返回摘要(content 截断 120 字)——取全文请用 get_entity 的 reference 类型。用于 AI 不知道书里有哪些参考资料时先检索。",
|
|
120
120
|
argsSchema: searchReferencesArgsSchema,
|
|
@@ -182,14 +182,14 @@ const analysisToolDefs = [
|
|
|
182
182
|
registerTools(analysisToolDefs);
|
|
183
183
|
import { analyzeHookHealthArgsSchema, detectHookConflictsArgsSchema, findHookOpportunitiesArgsSchema, suggestHookPayoffArgsSchema, traceHookLifecycleArgsSchema, } from "@whispering233/ai-editor-shared/schemas/tools";
|
|
184
184
|
import { runAnalyzeHookHealth, runDetectHookConflicts, runFindHookOpportunities, runSuggestHookPayoff, runTraceHookLifecycle } from "./analysis/hook.js";
|
|
185
|
-
/** 伏笔分析工具定义(S6.5
|
|
185
|
+
/** 伏笔分析工具定义(S6.5,「工具扩展」+;权限全为 AUTO) */
|
|
186
186
|
const hookToolDefs = [
|
|
187
187
|
{
|
|
188
188
|
name: "analyze_hook_health",
|
|
189
189
|
description: "伏笔健康总览(无参):统计全部活跃伏笔(planted/progressing)——stale(休眠超过半衰期)、" +
|
|
190
190
|
"overdue(埋设超过两倍半衰期)、blocked(依赖尚未回收)及人类可读 warnings。" +
|
|
191
191
|
"返回 { current_chapter, active_count, stale, overdue, blocked_chains, warnings };" +
|
|
192
|
-
"半衰期显式 half_life 优先、缺省按 payoff_timing 映射(immediate=3/near_term=8/mid_arc=15/slow_burn=25/endgame=40
|
|
192
|
+
"半衰期显式 half_life 优先、缺省按 payoff_timing 映射(immediate=3/near_term=8/mid_arc=15/slow_burn=25/endgame=40)。",
|
|
193
193
|
argsSchema: analyzeHookHealthArgsSchema,
|
|
194
194
|
permission: TOOL_PERMISSION.AUTO,
|
|
195
195
|
run: runAnalyzeHookHealth,
|
|
@@ -242,7 +242,7 @@ import { runProposeCreateReference } from "./proposal/reference.js";
|
|
|
242
242
|
/** 提案类工具定义(S6.6 + F9 重排 + G2 时间点重排,「提案类」+ 「工具扩展」提案类,共 15 个;权限全为 PROPOSAL)
|
|
243
243
|
* 语义:AI 不能直接修改数据——propose_* 仅产出提案(tool_result 只有 proposal_id + 一句话摘要,
|
|
244
244
|
* 不含预览细节,2026-08 修订;完整预览经 SSE proposal 事件推送 GUI);用户确认后由 S7.5 路由
|
|
245
|
-
* 快照重校验并调用 S6.7
|
|
245
|
+
* 快照重校验并调用 S6.7 执行工具落库。*/
|
|
246
246
|
const proposalToolDefs = [
|
|
247
247
|
{
|
|
248
248
|
name: "propose_create_entity",
|
|
@@ -310,7 +310,7 @@ const proposalToolDefs = [
|
|
|
310
310
|
{
|
|
311
311
|
name: "propose_move_node",
|
|
312
312
|
description: "移动大纲节点提案:node_id 移到 parent_id 下的 order 位置(0 起计数)。" +
|
|
313
|
-
"
|
|
313
|
+
"仅生成提案,需用户确认后生效;目标父层级非法(严格三层)、" +
|
|
314
314
|
"节点或父不存在/已软删返回错误。",
|
|
315
315
|
argsSchema: proposeMoveNodeArgsSchema,
|
|
316
316
|
permission: TOOL_PERMISSION.PROPOSAL,
|
|
@@ -382,7 +382,7 @@ const proposalToolDefs = [
|
|
|
382
382
|
},
|
|
383
383
|
{
|
|
384
384
|
name: "propose_create_reference",
|
|
385
|
-
description: "
|
|
385
|
+
description: "创建参考资料提案:向用户提议把读到/总结的素材、灵感或写作要点保存为参考资料(外部素材/灵感笔记," +
|
|
386
386
|
"非本书正文)。name 标题必填,type 分类可选(自由文本,建议沿用项目内已有分类,缺省 material),content 全文长文本,source 来源(URL/书名/作者)可选,tags 标签数组可选。" +
|
|
387
387
|
"仅生成提案(返回 proposal_id + 一句话摘要),需用户在界面确认后才写入——请勿重复提案或视为已保存。",
|
|
388
388
|
argsSchema: proposeCreateReferenceArgsSchema,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/proposal/delta.js
CHANGED
|
@@ -24,7 +24,7 @@ export function buildProposeAddDelta(ctx, args) {
|
|
|
24
24
|
// event(时间轴事件)不产生 Delta——AI 提案通道与 REST 创建路径一致拒绝
|
|
25
25
|
//(outline_node 有 S13.3 显式豁免,event 无豁免)
|
|
26
26
|
if (target.type === "event") {
|
|
27
|
-
throw new Error(`event(时间轴事件)不产生 Delta
|
|
27
|
+
throw new Error(`event(时间轴事件)不产生 Delta,变更目标无效: ${args.target}`);
|
|
28
28
|
}
|
|
29
29
|
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
30
|
}
|
|
@@ -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;IACnD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,gDAAgD;IAChD,uCAAuC;IACtC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,
|
|
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;IACnD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,gDAAgD;IAChD,uCAAuC;IACtC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,aAAa,CAClB,GAAG,EACH,mBAAmB,EACnB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAClG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAClC,OAAO,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,cAAc,IAAI,CAAC,MAAM,GAAG,CACxE,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,kBAAkB,CAChC,GAAgB,EAChB,IAAyB,EACzB,MAAoB;IAEpB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1E,CAAC"}
|
package/dist/proposal/entity.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// propose_create_entity / propose_update_entity / propose_delete_entity
|
|
3
3
|
//
|
|
4
4
|
// 语义:AI 不能直接修改数据——build 函数只**产出提案对象**(buildProposal,prop_ 运行时 id),
|
|
5
|
-
// run 返回 { proposal_id, summary }(
|
|
5
|
+
// run 返回 { proposal_id, summary }(2026-08 修订:tool_result 不含预览细节,
|
|
6
6
|
// 防 LLM 误以为提案已生效而重复提案);**不落盘、不写任何数据**(与 S6.7 执行工具的核心差异——
|
|
7
7
|
// 本模块零写操作)。
|
|
8
8
|
// 生成时校验:引用实体存在且未软删(getEntity 已过滤软删),
|