@whispering233/ai-editor-tools 0.0.29 → 0.0.32
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 +3 -3
- package/dist/analysis/conflict.d.ts.map +1 -1
- package/dist/analysis/conflict.js +1 -1
- package/dist/analysis/consistency.d.ts +3 -3
- 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 +13 -13
- 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 +3 -3
- 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 +4 -4
- 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 +3 -3
- 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.d.ts +0 -2
- package/dist/executor/index.d.ts.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 -3
- package/dist/executor/types.d.ts.map +1 -1
- package/dist/executor/types.js +0 -7
- package/dist/executor/types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -49
- package/dist/index.js.map +1 -1
- package/dist/proposal/delta.d.ts +1 -1
- package/dist/proposal/delta.d.ts.map +1 -1
- package/dist/proposal/delta.js +1 -1
- package/dist/proposal/delta.js.map +1 -1
- package/dist/proposal/entity.d.ts +1 -1
- package/dist/proposal/entity.d.ts.map +1 -1
- package/dist/proposal/entity.js +1 -1
- package/dist/proposal/entity.js.map +1 -1
- package/dist/proposal/hook.d.ts +1 -1
- package/dist/proposal/hook.d.ts.map +1 -1
- package/dist/proposal/hook.js +1 -1
- package/dist/proposal/hook.js.map +1 -1
- package/dist/proposal/outline.d.ts +1 -1
- package/dist/proposal/outline.d.ts.map +1 -1
- package/dist/proposal/outline.js +2 -2
- package/dist/proposal/outline.js.map +1 -1
- package/dist/proposal/reference.d.ts +1 -1
- package/dist/proposal/reference.d.ts.map +1 -1
- package/dist/proposal/reference.js +1 -1
- package/dist/proposal/reference.js.map +1 -1
- package/dist/proposal/relation.d.ts +1 -1
- package/dist/proposal/relation.d.ts.map +1 -1
- package/dist/proposal/reorder-timepoints.d.ts +2 -2
- package/dist/proposal/reorder-timepoints.d.ts.map +1 -1
- package/dist/proposal/reorder-timepoints.js +5 -5
- package/dist/proposal/reorder-timepoints.js.map +1 -1
- package/dist/proposal/types.d.ts +5 -5
- package/dist/proposal/types.d.ts.map +1 -1
- package/dist/proposal/types.js +4 -4
- package/dist/proposal/types.js.map +1 -1
- package/dist/query/delta.d.ts +3 -3
- package/dist/query/delta.d.ts.map +1 -1
- package/dist/query/delta.js +3 -3
- package/dist/query/delta.js.map +1 -1
- package/dist/query/entity.d.ts +4 -4
- package/dist/query/entity.d.ts.map +1 -1
- package/dist/query/entity.js +3 -3
- package/dist/query/outline.d.ts +3 -3
- package/dist/query/outline.d.ts.map +1 -1
- package/dist/query/outline.js +3 -3
- package/dist/query/outline.js.map +1 -1
- package/dist/query/reference.d.ts +2 -2
- 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 +2 -2
- package/dist/query/relation.d.ts.map +1 -1
- package/dist/query/relation.js +1 -1
- package/dist/registry.d.ts +21 -14
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +23 -9
- package/dist/registry.js.map +1 -1
- package/dist/schemas/analysis.d.ts +51 -0
- package/dist/schemas/analysis.d.ts.map +1 -0
- package/dist/schemas/analysis.js +46 -0
- package/dist/schemas/analysis.js.map +1 -0
- package/dist/schemas/delta.d.ts +31 -0
- package/dist/schemas/delta.d.ts.map +1 -0
- package/dist/schemas/delta.js +35 -0
- package/dist/schemas/delta.js.map +1 -0
- package/dist/schemas/entity.d.ts +28 -0
- package/dist/schemas/entity.d.ts.map +1 -0
- package/dist/schemas/entity.js +31 -0
- package/dist/schemas/entity.js.map +1 -0
- package/dist/schemas/helpers.d.ts +8 -0
- package/dist/schemas/helpers.d.ts.map +1 -0
- package/dist/schemas/helpers.js +27 -0
- package/dist/schemas/helpers.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +12 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/outline.d.ts +11 -0
- package/dist/schemas/outline.d.ts.map +1 -0
- package/dist/schemas/outline.js +12 -0
- package/dist/schemas/outline.js.map +1 -0
- package/dist/schemas/proposal.d.ts +125 -0
- package/dist/schemas/proposal.d.ts.map +1 -0
- package/dist/schemas/proposal.js +123 -0
- package/dist/schemas/proposal.js.map +1 -0
- package/dist/schemas/reference.d.ts +13 -0
- package/dist/schemas/reference.d.ts.map +1 -0
- package/dist/schemas/reference.js +13 -0
- package/dist/schemas/reference.js.map +1 -0
- package/dist/schemas/relation.d.ts +17 -0
- package/dist/schemas/relation.d.ts.map +1 -0
- package/dist/schemas/relation.js +19 -0
- package/dist/schemas/relation.js.map +1 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/proposal/reference.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/proposal/reference.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAwB,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE1F;;2CAE2C;AAC3C,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,0BAA0B,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAchI;AAED,+CAA+C;AAC/C,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,0BAA0B,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/proposal/reference.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/proposal/reference.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,kEAAkE;AAClE,EAAE;AACF,oEAAoE;AACpE,wDAAwD;AACxD,2FAA2F;AAC3F,6EAA6E;AAI7E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAA2B,MAAM,YAAY,CAAC;AAE1F;;2CAE2C;AAC3C,MAAM,UAAU,2BAA2B,CAAC,GAAgB,EAAE,IAAgC;IAC5F,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACvD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7D,6DAA6D;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnD,OAAO,aAAa,CAClB,GAAG,EACH,0BAA0B,EAC1B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EACzB,EAAE,EACF,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzE,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,yBAAyB,CACvC,GAAgB,EAChB,IAAgC,EAChC,MAAoB;IAEpB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,2BAA2B,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProposeAddRelationArgs, ProposeRemoveRelationArgs } from "
|
|
1
|
+
import type { ProposeAddRelationArgs, ProposeRemoveRelationArgs } from "../schemas/index.js";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
3
|
import { type Proposal, type ToolProposalResult } from "./types.js";
|
|
4
4
|
/** 产出新增关系提案(端点类型生成时自动识别,执行形态规范化到 args) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/proposal/relation.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/proposal/relation.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAqE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvI,0CAA0C;AAC1C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,QAAQ,CAmBhG;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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProposeReorderTimepointsArgs } from "
|
|
1
|
+
import type { ProposeReorderTimepointsArgs } from "../schemas/index.js";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
3
|
import { type Proposal, type ToolProposalResult } from "./types.js";
|
|
4
4
|
/**
|
|
@@ -10,6 +10,6 @@ import { type Proposal, type ToolProposalResult } from "./types.js";
|
|
|
10
10
|
* 4. preview.changes:仅列位置变化时间点(「「<name>」从第 X 位移到第 Y 位」,1-based)
|
|
11
11
|
*/
|
|
12
12
|
export declare function buildProposeReorderTimepoints(ctx: ToolContext, args: ProposeReorderTimepointsArgs): Proposal;
|
|
13
|
-
/** propose_reorder_timepoints run:中止检查 + 产出裁剪结果(tool_result 不含预览,
|
|
13
|
+
/** propose_reorder_timepoints run:中止检查 + 产出裁剪结果(tool_result 不含预览,2026-08 修订) */
|
|
14
14
|
export declare function runProposeReorderTimepoints(ctx: ToolContext, args: ProposeReorderTimepointsArgs, signal?: AbortSignal): ToolProposalResult;
|
|
15
15
|
//# sourceMappingURL=reorder-timepoints.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder-timepoints.d.ts","sourceRoot":"","sources":["../../src/proposal/reorder-timepoints.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"reorder-timepoints.d.ts","sourceRoot":"","sources":["../../src/proposal/reorder-timepoints.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAkD,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAuBpH;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,4BAA4B,GAAG,QAAQ,CA8B5G;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,4BAA4B,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,kBAAkB,CAIpB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// 提案类工具:时间轴时间点批量重排(G2,「提案类」propose_reorder_timepoints)
|
|
2
2
|
//
|
|
3
|
-
// 语义(
|
|
3
|
+
// 语义(G2 修订注记 + 权限分级):AI 按时间点 name(时间标签文本,如
|
|
4
4
|
// 「第二天黄昏」「少年时」)语义识别先后 → 产出**有序时间点 id 全量序列**(args.timepoint_ids,
|
|
5
5
|
// 顺序 = 建议新序)→ 本工具只产出提案对象(buildProposal,prop_ 运行时 id),**不落盘、
|
|
6
6
|
// 不写任何数据**——排序由用户确认后 S6.7 reorder_timepoints 执行器落库(与 moveTimepoint
|
|
7
7
|
// 拖拽权威语义不变:排序结果即 timepoint.sort_order 线性序;重排时间点**不改其下事件序**——
|
|
8
|
-
// 双独立线性序,
|
|
8
|
+
// 双独立线性序,G2 修订)。
|
|
9
9
|
//
|
|
10
10
|
// 生成时校验(延伸):
|
|
11
11
|
// - args.timepoint_ids 与当前**全部未软删时间点** id 集合**完全相等**(缺/多/重复 → 抛错——
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
// 存在性 + updated_at(用户拖拽改序后 AI 提案自动失效,409 PROPOSAL_STALE)
|
|
15
15
|
// - preview = { changes: [...] }(Proposal.preview,F9 起可选字段):仅列**位置变化**的
|
|
16
16
|
// 时间点(对比当前序与新序,1-based 位置,人类可读;name 缺失/空串用 id 兜底)——
|
|
17
|
-
//
|
|
17
|
+
// 完整预览随 tool_execution_end 帧的 result.details 推送 GUI 展示提案卡
|
|
18
18
|
//
|
|
19
|
-
// tool_result 语义(
|
|
19
|
+
// tool_result 语义(2026-08 修订):run 只返回 { proposal_id, summary },不含预览细节。
|
|
20
20
|
import { listTimepoints } from "@whispering233/ai-editor-db";
|
|
21
21
|
import { buildProposal, checkProposalAborted, refEntity } from "./types.js";
|
|
22
22
|
/**
|
|
@@ -70,7 +70,7 @@ export function buildProposeReorderTimepoints(ctx, args) {
|
|
|
70
70
|
return buildProposal(ctx, "propose_reorder_timepoints", { timepoint_ids: args.timepoint_ids }, references, // 全部时间点 updated_at 快照
|
|
71
71
|
`按时间标签语义排序 ${timepoints.length} 个时间点`, { changes });
|
|
72
72
|
}
|
|
73
|
-
/** propose_reorder_timepoints run:中止检查 + 产出裁剪结果(tool_result 不含预览,
|
|
73
|
+
/** propose_reorder_timepoints run:中止检查 + 产出裁剪结果(tool_result 不含预览,2026-08 修订) */
|
|
74
74
|
export function runProposeReorderTimepoints(ctx, args, signal) {
|
|
75
75
|
checkProposalAborted(signal);
|
|
76
76
|
const proposal = buildProposeReorderTimepoints(ctx, args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorder-timepoints.js","sourceRoot":"","sources":["../../src/proposal/reorder-timepoints.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"reorder-timepoints.js","sourceRoot":"","sources":["../../src/proposal/reorder-timepoints.ts"],"names":[],"mappings":"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"}
|
package/dist/proposal/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { EntityRow, OutlineFileNode, RelationRow } from "@whispering233/ai-
|
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
3
|
/** 被引用对象种类(确认时按 kind 走对应存在性 + updated_at 重校验路径) */
|
|
4
4
|
export type ProposalReferenceKind = "entity" | "relation" | "delta" | "outline_node";
|
|
5
|
-
/** 单个引用快照:被引用对象 id + updated_at
|
|
5
|
+
/** 单个引用快照:被引用对象 id + updated_at(快照比对) */
|
|
6
6
|
export interface ProposalReference {
|
|
7
7
|
kind: ProposalReferenceKind;
|
|
8
8
|
id: string;
|
|
@@ -11,7 +11,7 @@ export interface ProposalReference {
|
|
|
11
11
|
}
|
|
12
12
|
/** 提案对象(仅内存;S7.4 提案仓存储,S7.5 confirm/reject 消费) */
|
|
13
13
|
export interface Proposal {
|
|
14
|
-
/** 运行时 id(prop_ 前缀,
|
|
14
|
+
/** 运行时 id(prop_ 前缀,id 约定) */
|
|
15
15
|
proposal_id: string;
|
|
16
16
|
/** 工具名(propose_*,PROPOSAL_TOOLS 一员) */
|
|
17
17
|
type: string;
|
|
@@ -25,14 +25,14 @@ export interface Proposal {
|
|
|
25
25
|
summary: string;
|
|
26
26
|
/**
|
|
27
27
|
* 结构化预览细节(F9 起可选):如 propose_reorder_timepoints 的 { changes: string[] }(顺序变化
|
|
28
|
-
* 说明,供前端提案卡 JSON
|
|
28
|
+
* 说明,供前端提案卡 JSON 展示);随 tool_execution_end 帧的 result.details 推送 GUI。未设置时
|
|
29
29
|
* 回退为 { type, summary, args }(既有提案工具默认预览形态,行为不变)。
|
|
30
30
|
*/
|
|
31
31
|
preview?: Record<string, unknown>;
|
|
32
32
|
/** ISO 8601 创建时间(应用层写入约定;TTL 计算基准,S7.4) */
|
|
33
33
|
createdAt: string;
|
|
34
34
|
}
|
|
35
|
-
/** propose_* tool_result(
|
|
35
|
+
/** propose_* tool_result(2026-08 修订:仅「提案已发出」提示,不含预览细节) */
|
|
36
36
|
export interface ToolProposalResult {
|
|
37
37
|
proposal_id: string;
|
|
38
38
|
summary: string;
|
|
@@ -70,7 +70,7 @@ export declare function resolveEndpoint(ctx: ToolContext, id: string): {
|
|
|
70
70
|
export declare function requireOutlineNode(ctx: ToolContext, nodeId: string): OutlineFileNode;
|
|
71
71
|
/**
|
|
72
72
|
* 按 id 取伏笔实体(type === "hook" 且未软删,类型一致性校验);否则抛错。
|
|
73
|
-
* 伏笔即 type=hook
|
|
73
|
+
* 伏笔即 type=hook 的实体(用户手动创建或 AI 提案创建),快照用实体自身 updated_at。
|
|
74
74
|
*/
|
|
75
75
|
export declare function requireHook(ctx: ToolContext, hookId: string): EntityRow;
|
|
76
76
|
/** 提案工具入口统一中止检查(长工具执行中检查 signal;提案生成是同步短操作,入口检查一次即可) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/proposal/types.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;AAErF,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/proposal/types.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;AAErF,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACZ,iDAAiD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACxB,6BAA6B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACtC,IAAI,EAAE,MAAM,CAAC;IACd,gDAAgD;IAC/C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,qCAAqC;IACpC,UAAU,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC9B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACjC,kCAAkC;IACjC,OAAO,EAAE,MAAM,CAAC;IACjB;;;;MAIE;IACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,2CAA2C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,iBAAiB,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,QAAQ,CAWV;AAED,+BAA+B;AAC/B,wBAAgB,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,iBAAiB,CAE3D;AAED,+BAA+B;AAC/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,iBAAiB,CAE/D;AAED,gCAAgC;AAChC,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,WAAW,EAChB,EAAE,EAAE,MAAM,GACT;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,iBAAiB,CAAA;CAAE,CAa1C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAMpF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAMvE;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAE/D"}
|
package/dist/proposal/types.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// 属 S7.4 范围,本模块只负责**产出提案对象结构**。
|
|
6
6
|
//
|
|
7
7
|
// 提案对象结构:
|
|
8
|
-
// - proposal_id:prop_ 前缀(generateRuntimeId,
|
|
8
|
+
// - proposal_id:prop_ 前缀(generateRuntimeId,id 约定)
|
|
9
9
|
// - type:工具名(PROPOSAL_TOOLS 一员,S7.4 executor 按名调度)
|
|
10
10
|
// - args:**执行信息**——确认后调用 S6.7 执行工具所需的全部参数(端点类工具已把
|
|
11
11
|
// id 解析为 {source_type, source_id} 等规范化形态,执行时可直接透传)
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
// - summary:一句话摘要(tool_result + GUI 展示)
|
|
17
17
|
// - createdAt:ISO 8601(应用层写入约定;TTL 计算基准)
|
|
18
18
|
// - preview(F9 起可选):结构化预览细节(如 propose_reorder_timepoints 的 { changes: [...] })——
|
|
19
|
-
//
|
|
19
|
+
// 随 tool_execution_end 帧的 result.details 推送 GUI 展示提案卡;未设置时回退为
|
|
20
20
|
// { type, summary, args }(既有提案工具的默认预览形态)。
|
|
21
21
|
//
|
|
22
22
|
// tool_result 语义(「返回语义」2026-08 修订):propose_* 的 run 只返回
|
|
23
23
|
// { proposal_id, summary },**不含预览细节**——避免 LLM 误以为提案已生效而重复提案;
|
|
24
|
-
//
|
|
24
|
+
// 完整预览随 tool_execution_end 帧的 result.details 推送 GUI。
|
|
25
25
|
import { getEntity } from "@whispering233/ai-editor-db";
|
|
26
26
|
import { nowIso } from "@whispering233/ai-editor-db";
|
|
27
27
|
import { generateRuntimeId } from "@whispering233/ai-editor-shared";
|
|
@@ -93,7 +93,7 @@ export function requireOutlineNode(ctx, nodeId) {
|
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
95
|
* 按 id 取伏笔实体(type === "hook" 且未软删,类型一致性校验);否则抛错。
|
|
96
|
-
* 伏笔即 type=hook
|
|
96
|
+
* 伏笔即 type=hook 的实体(用户手动创建或 AI 提案创建),快照用实体自身 updated_at。
|
|
97
97
|
*/
|
|
98
98
|
export function requireHook(ctx, hookId) {
|
|
99
99
|
const entity = getEntity(ctx.db, hookId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/proposal/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,uDAAuD;AACvD,iEAAiE;AACjE,gCAAgC;AAChC,EAAE;AACF,UAAU;AACV,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/proposal/types.ts"],"names":[],"mappings":"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"}
|
package/dist/query/delta.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ComputeStateResult, DeltaRecord } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
|
-
import type { ComputeStateArgs, GetDeltaHistoryArgs } from "
|
|
3
|
+
import type { ComputeStateArgs, GetDeltaHistoryArgs } from "../schemas/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* 实体到达指定节点时的累积状态(
|
|
5
|
+
* 实体到达指定节点时的累积状态(compute_state(target_type, target_id, at_node_id))。
|
|
6
6
|
* 透传 db computeState:只沿大纲树父链(根 → at_node_id)累积已确认 Delta,
|
|
7
7
|
* 节点间按树路径序、节点内按 order 双层排序;plot_edge 不参与;op=update from 校验失败
|
|
8
8
|
* **跳过该 change 并继续累积**,结果在 conflicts 中标注 { field, expected, actual }
|
|
@@ -11,7 +11,7 @@ import type { ComputeStateArgs, GetDeltaHistoryArgs } from "@whispering233/ai-ed
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function runComputeState(ctx: ToolContext, args: ComputeStateArgs): ComputeStateResult | null;
|
|
13
13
|
/**
|
|
14
|
-
* 目标实体的全部属性变更记录(
|
|
14
|
+
* 目标实体的全部属性变更记录(get_delta_history(target_type, target_id))。
|
|
15
15
|
* 透传 db listDeltasByTarget:按 target_id 查询 + 全局 order ASC(时间序)排序 +
|
|
16
16
|
* 可见性三态过滤(delta 自身 / 触发节点 / 目标端点任一软删即不可见)+
|
|
17
17
|
* targetName 联表填充。target_type 仅由 db 侧用于判定目标端点类型(实体/大纲节点)。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/query/delta.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"delta.d.ts","sourceRoot":"","sources":["../../src/query/delta.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIjF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,IAAI,CAMnG;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,GAAG,WAAW,EAAE,CAE7F"}
|
package/dist/query/delta.js
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
// 工具层参数映射透传;at_node_id 不存在时 db 抛错(视为调用方 bug,路由层前置校验
|
|
8
8
|
// 的约定),工具层不捕获——executor 统一转结构化错误喂回 LLM 自纠
|
|
9
9
|
// - get_delta_history:db listDeltasByTarget(S6.3 下沉)已实现按目标端点查询 +
|
|
10
|
-
// 可见性三态过滤(delta
|
|
10
|
+
// 可见性三态过滤(delta 自身/触发节点/目标端点软删,与 listDeltasByNode
|
|
11
11
|
// 共享 filterVisibleDeltas 实现)——工具层一行透传
|
|
12
12
|
import { computeState as dbComputeState, listDeltasByTarget } from "@whispering233/ai-editor-db";
|
|
13
13
|
// ============ compute_state ============
|
|
14
14
|
/**
|
|
15
|
-
* 实体到达指定节点时的累积状态(
|
|
15
|
+
* 实体到达指定节点时的累积状态(compute_state(target_type, target_id, at_node_id))。
|
|
16
16
|
* 透传 db computeState:只沿大纲树父链(根 → at_node_id)累积已确认 Delta,
|
|
17
17
|
* 节点间按树路径序、节点内按 order 双层排序;plot_edge 不参与;op=update from 校验失败
|
|
18
18
|
* **跳过该 change 并继续累积**,结果在 conflicts 中标注 { field, expected, actual }
|
|
@@ -28,7 +28,7 @@ export function runComputeState(ctx, args) {
|
|
|
28
28
|
}
|
|
29
29
|
// ============ get_delta_history ============
|
|
30
30
|
/**
|
|
31
|
-
* 目标实体的全部属性变更记录(
|
|
31
|
+
* 目标实体的全部属性变更记录(get_delta_history(target_type, target_id))。
|
|
32
32
|
* 透传 db listDeltasByTarget:按 target_id 查询 + 全局 order ASC(时间序)排序 +
|
|
33
33
|
* 可见性三态过滤(delta 自身 / 触发节点 / 目标端点任一软删即不可见)+
|
|
34
34
|
* targetName 联表填充。target_type 仅由 db 侧用于判定目标端点类型(实体/大纲节点)。
|
package/dist/query/delta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/query/delta.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,sDAAsD;AACtD,EAAE;AACF,mDAAmD;AACnD,kEAAkE;AAClE,qDAAqD;AACrD,oDAAoD;AACpD,0CAA0C;AAC1C,iEAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"delta.js","sourceRoot":"","sources":["../../src/query/delta.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,sDAAsD;AACtD,EAAE;AACF,mDAAmD;AACnD,kEAAkE;AAClE,qDAAqD;AACrD,oDAAoD;AACpD,0CAA0C;AAC1C,iEAAiE;AACjE,kDAAkD;AAClD,sCAAsC;AAEtC,OAAO,EAAE,YAAY,IAAI,cAAc,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKjG,0CAA0C;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,GAAgB,EAAE,IAAsB;IACtE,OAAO,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE;QAC5C,UAAU,EAAE,IAAI,CAAC,WAAW;QAC5B,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,QAAQ,EAAE,IAAI,CAAC,UAAU;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,8CAA8C;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAgB,EAAE,IAAyB;IAC5E,OAAO,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/query/entity.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Entity } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import type { EntityListResult, EntitySummaryStats } from "@whispering233/ai-editor-db";
|
|
3
3
|
import type { ToolContext } from "../context.js";
|
|
4
|
-
import type { GetEntityArgs, GetEntitySummaryArgs, SearchEntitiesArgs } from "
|
|
4
|
+
import type { GetEntityArgs, GetEntitySummaryArgs, SearchEntitiesArgs } from "../schemas/index.js";
|
|
5
5
|
/**
|
|
6
|
-
* 实体详情(
|
|
6
|
+
* 实体详情(get_entity(type, id) → 实体详情,含 data JSON 解析后的字段)。
|
|
7
7
|
* - db 层 getEntity 默认过滤软删(回收站对象不可见)
|
|
8
8
|
* - type 与行内实际类型不一致 → null(参数错误,id 前缀体系下正常调用不会出现;
|
|
9
9
|
* LLM 传错类型时得到「不存在」而非脏数据)
|
|
@@ -13,14 +13,14 @@ export declare function runGetEntity(ctx: ToolContext, args: GetEntityArgs): Ent
|
|
|
13
13
|
/** search_entities 结果:匹配实体摘要列表 + 过滤后总数(db listEntities 同构) */
|
|
14
14
|
export type SearchEntitiesResult = EntityListResult;
|
|
15
15
|
/**
|
|
16
|
-
* 实体搜索(
|
|
16
|
+
* 实体搜索(search_entities(type, query, filters?) → 匹配实体列表)。
|
|
17
17
|
* 透传 db listEntities:type + name LIKE 模糊匹配 + **软删过滤**
|
|
18
18
|
* + filters(tags AND / status 精确匹配,data 字段 JS 过滤)+ 摘要提取(db 单一实现)。
|
|
19
19
|
* limit 传 200(db clamp 上限):搜索结果尽量全(token 截断由上层按 处理)。
|
|
20
20
|
*/
|
|
21
21
|
export declare function runSearchEntities(ctx: ToolContext, args: SearchEntitiesArgs): SearchEntitiesResult;
|
|
22
22
|
/**
|
|
23
|
-
* 实体聚合统计(
|
|
23
|
+
* 实体聚合统计(get_entity_summary(type) → 总数、角色分布、能力分布等)。
|
|
24
24
|
* 透传 db getEntitySummaryStats:仅统计非软删实体;分布字段按类型
|
|
25
25
|
* 稀疏出现(character→byRole/byStatus/topAbilities、setting→byTags(分类由
|
|
26
26
|
* rules 标签承接)、location→byType、hook→byStatus/byPayoffTiming),缺字段不报错。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/query/entity.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/query/entity.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAInG;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAIjF;AAID,8DAA8D;AAC9D,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,CAOlG;AAID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,GAAG,kBAAkB,CAEpG"}
|
package/dist/query/entity.js
CHANGED
|
@@ -12,7 +12,7 @@ import { getEntity as dbGetEntity, getEntitySummaryStats, listEntities } from "@
|
|
|
12
12
|
import { mapRowToEntity } from "@whispering233/ai-editor-shared";
|
|
13
13
|
// ============ get_entity ============
|
|
14
14
|
/**
|
|
15
|
-
* 实体详情(
|
|
15
|
+
* 实体详情(get_entity(type, id) → 实体详情,含 data JSON 解析后的字段)。
|
|
16
16
|
* - db 层 getEntity 默认过滤软删(回收站对象不可见)
|
|
17
17
|
* - type 与行内实际类型不一致 → null(参数错误,id 前缀体系下正常调用不会出现;
|
|
18
18
|
* LLM 传错类型时得到「不存在」而非脏数据)
|
|
@@ -25,7 +25,7 @@ export function runGetEntity(ctx, args) {
|
|
|
25
25
|
return mapRowToEntity(row);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* 实体搜索(
|
|
28
|
+
* 实体搜索(search_entities(type, query, filters?) → 匹配实体列表)。
|
|
29
29
|
* 透传 db listEntities:type + name LIKE 模糊匹配 + **软删过滤**
|
|
30
30
|
* + filters(tags AND / status 精确匹配,data 字段 JS 过滤)+ 摘要提取(db 单一实现)。
|
|
31
31
|
* limit 传 200(db clamp 上限):搜索结果尽量全(token 截断由上层按 处理)。
|
|
@@ -40,7 +40,7 @@ export function runSearchEntities(ctx, args) {
|
|
|
40
40
|
}
|
|
41
41
|
// ============ get_entity_summary ============
|
|
42
42
|
/**
|
|
43
|
-
* 实体聚合统计(
|
|
43
|
+
* 实体聚合统计(get_entity_summary(type) → 总数、角色分布、能力分布等)。
|
|
44
44
|
* 透传 db getEntitySummaryStats:仅统计非软删实体;分布字段按类型
|
|
45
45
|
* 稀疏出现(character→byRole/byStatus/topAbilities、setting→byTags(分类由
|
|
46
46
|
* rules 标签承接)、location→byType、hook→byStatus/byPayoffTiming),缺字段不报错。
|
package/dist/query/outline.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { OutlineTree } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
|
-
import type { GetOutlinePathArgs } from "
|
|
3
|
+
import type { GetOutlinePathArgs } from "../schemas/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* 完整大纲树(
|
|
5
|
+
* 完整大纲树(get_outline → 严格三层树)。
|
|
6
6
|
* - 默认不含 metadata 统计(省 token;需统计走 API GET /outline?with_metadata=)
|
|
7
7
|
* - 软删节点过滤
|
|
8
8
|
* - 返回 API 形态 OutlineTree(camelCase;data 嵌套字段原样透传)
|
|
@@ -10,7 +10,7 @@ import type { GetOutlinePathArgs } from "@whispering233/ai-editor-shared";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function runGetOutline(ctx: ToolContext): OutlineTree;
|
|
12
12
|
/**
|
|
13
|
-
* 根 → 目标节点的路径 ID 列表(
|
|
13
|
+
* 根 → 目标节点的路径 ID 列表(get_outline_path(node_id),含 root,
|
|
14
14
|
* 如 ["root", "vol-1", "ch-3", "sc-15"];严格三层下路径唯一)。
|
|
15
15
|
* - 节点不存在 → null(db getOutlinePathIds 抛错,工具层转查询无结果)
|
|
16
16
|
* - 路径上任一节点软删 → null(软删对象不可见——目标节点软删时
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/query/outline.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"outline.d.ts","sourceRoot":"","sources":["../../src/query/outline.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkB9D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAI3D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,EAAE,GAAG,IAAI,CAc7F"}
|
package/dist/query/outline.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// db 层能力确认与分工:
|
|
5
5
|
// - get_outline:db readOutlineFile 返回存储形态 OutlineFileTree——
|
|
6
6
|
// 工具层 mapOutlineFileToTree 映射为 API 形态(camelCase);**默认不含 metadata**
|
|
7
|
-
// (省 token
|
|
7
|
+
// (省 token,明确:需统计走 API with_metadata);软删节点整棵剔除
|
|
8
8
|
// (查询类工具不返回回收站中的对象)
|
|
9
9
|
// - get_outline_path:db getOutlinePathIds 返回根 → 目标节点路径(含 root);
|
|
10
10
|
// 节点不存在抛错——工具层转 null(查询无结果);路径上任一节点软删 → null(不可见)
|
|
@@ -27,7 +27,7 @@ function stripDeletedNodes(nodes) {
|
|
|
27
27
|
return out;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* 完整大纲树(
|
|
30
|
+
* 完整大纲树(get_outline → 严格三层树)。
|
|
31
31
|
* - 默认不含 metadata 统计(省 token;需统计走 API GET /outline?with_metadata=)
|
|
32
32
|
* - 软删节点过滤
|
|
33
33
|
* - 返回 API 形态 OutlineTree(camelCase;data 嵌套字段原样透传)
|
|
@@ -39,7 +39,7 @@ export function runGetOutline(ctx) {
|
|
|
39
39
|
return mapOutlineFileToTree(stripped);
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* 根 → 目标节点的路径 ID 列表(
|
|
42
|
+
* 根 → 目标节点的路径 ID 列表(get_outline_path(node_id),含 root,
|
|
43
43
|
* 如 ["root", "vol-1", "ch-3", "sc-15"];严格三层下路径唯一)。
|
|
44
44
|
* - 节点不存在 → null(db getOutlinePathIds 抛错,工具层转查询无结果)
|
|
45
45
|
* - 路径上任一节点软删 → null(软删对象不可见——目标节点软删时
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/query/outline.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,yCAAyC;AACzC,EAAE;AACF,eAAe;AACf,4DAA4D;AAC5D,mEAAmE;AACnE
|
|
1
|
+
{"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/query/outline.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,yCAAyC;AACzC,EAAE;AACF,eAAe;AACf,4DAA4D;AAC5D,mEAAmE;AACnE,+CAA+C;AAC/C,oBAAoB;AACpB,gEAAgE;AAChE,kDAAkD;AAElD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAKvE;;;;;GAKG;AACH,SAAS,iBAAiB,CAA4B,KAAmB;IACvE,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,SAAS;QACpC,MAAM,QAAQ,GAAI,IAAkD,CAAC,QAAQ,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAQ,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB,EAAE,IAAwB;IAC1E,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,wCAAwC;IACvD,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,MAAM,KAAK,MAAM;YAAE,SAAS,CAAC,iBAAiB;QAClD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EntityListResult } from "@whispering233/ai-editor-db";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
|
-
import type { SearchReferencesArgs } from "
|
|
4
|
-
/** 参考资料搜索(
|
|
3
|
+
import type { SearchReferencesArgs } from "../schemas/index.js";
|
|
4
|
+
/** 参考资料搜索(search_references(query, type?, tags?) → 摘要列表) */
|
|
5
5
|
export declare function runSearchReferences(ctx: ToolContext, args: SearchReferencesArgs): EntityListResult;
|
|
6
6
|
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/query/reference.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/query/reference.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CAalG"}
|
package/dist/query/reference.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// 查询类工具:参考资料
|
|
2
2
|
// search_references——AI 不知道书里有哪些参考资料时先搜索(标题+tags 关键词命中)再按需取全文
|
|
3
3
|
//
|
|
4
4
|
// 靠工具按需拉取保护 token 预算)。全文取详情走 get_entity('reference', id) 的 reference 分支。
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// search 的 type 参数指「参考资料分类」(data.type 枚举),非实体类型——listEntities 的
|
|
10
10
|
// filters 不支持 data.type 过滤(仅 tags/status),故在结果层做 JS 过滤(total 同步修正)。
|
|
11
11
|
import { listEntities } from "@whispering233/ai-editor-db";
|
|
12
|
-
/** 参考资料搜索(
|
|
12
|
+
/** 参考资料搜索(search_references(query, type?, tags?) → 摘要列表) */
|
|
13
13
|
export function runSearchReferences(ctx, args) {
|
|
14
14
|
const result = listEntities(ctx.db, {
|
|
15
15
|
type: "reference",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/query/reference.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/query/reference.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,8DAA8D;AAC9D,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,+BAA+B;AAC/B,gEAAgE;AAChE,oEAAoE;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CAAC,GAAgB,EAAE,IAA0B;IAC9E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;QAClC,IAAI,EAAE,WAAW;QACjB,CAAC,EAAE,IAAI,CAAC,KAAK;QACb,OAAO,EAAE,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QAClE,KAAK,EAAE,GAAG;KACX,CAAC,CAAC;IACJ,6EAA6E;IAC5E,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/query/relation.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RelationQueryResult } from "@whispering233/ai-editor-shared";
|
|
2
2
|
import type { ToolContext } from "../context.js";
|
|
3
|
-
import type { QueryRelationshipsArgs } from "
|
|
3
|
+
import type { QueryRelationshipsArgs } from "../schemas/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* 关系图子图(
|
|
5
|
+
* 关系图子图(query_relationships → [{source,target,type,metadata}] 简写;
|
|
6
6
|
* 实际透传 db 的 RelationQueryResult 完整形态:relations: RelationRecord[](含
|
|
7
7
|
* sourceName/targetName 联表名)+ depth>=2 时 paths: RelationPath[])。
|
|
8
8
|
* 参数映射:snake_case 工具参数 → db 层 camelCase RelationQuery(字段一一对应);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/query/relation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/query/relation.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,CAazG"}
|
package/dist/query/relation.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// 工具层仅做参数映射透传,无额外过滤逻辑。
|
|
11
11
|
import { listRelations } from "@whispering233/ai-editor-db";
|
|
12
12
|
/**
|
|
13
|
-
* 关系图子图(
|
|
13
|
+
* 关系图子图(query_relationships → [{source,target,type,metadata}] 简写;
|
|
14
14
|
* 实际透传 db 的 RelationQueryResult 完整形态:relations: RelationRecord[](含
|
|
15
15
|
* sourceName/targetName 联表名)+ depth>=2 时 paths: RelationPath[])。
|
|
16
16
|
* 参数映射:snake_case 工具参数 → db 层 camelCase RelationQuery(字段一一对应);
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,40 +1,47 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Static, type TSchema } from "@earendil-works/pi-ai";
|
|
2
2
|
import type { ToolPermission } from "@whispering233/ai-editor-shared";
|
|
3
3
|
import type { ToolContext } from "./context.js";
|
|
4
4
|
/**
|
|
5
|
-
* 工具定义(
|
|
5
|
+
* 工具定义(parameters 的推断类型约束 run 的 args 入参)。
|
|
6
6
|
* run 声明为**方法**(而非函数属性):方法参数双变检查——具体 schema 的
|
|
7
|
-
* ToolDefinition<X> 可赋给容器默认的 ToolDefinition<
|
|
8
|
-
*
|
|
9
|
-
* 运行时由
|
|
7
|
+
* ToolDefinition<X> 可赋给容器默认的 ToolDefinition<TSchema>(run args 为 unknown),
|
|
8
|
+
* executor 从注册表取出后先校验(validateToolArgs 返回 unknown)再执行,
|
|
9
|
+
* 运行时由 parameters 兜底,类型层面双变无实际风险。
|
|
10
10
|
*/
|
|
11
|
-
export interface ToolDefinition<
|
|
12
|
-
/**
|
|
11
|
+
export interface ToolDefinition<TSchema_ extends TSchema = TSchema> {
|
|
12
|
+
/** 工具名(工具目录,如 get_entity;LLM tool_call 的 tool 字段) */
|
|
13
13
|
name: string;
|
|
14
14
|
/** 人类可读描述(注入 LLM 工具列表,说明用途与参数语义) */
|
|
15
15
|
description: string;
|
|
16
|
-
/** 参数
|
|
17
|
-
|
|
16
|
+
/** 参数 TypeBox schema(入参校验;`Static<>` 即 run 的 args 类型) */
|
|
17
|
+
parameters: TSchema_;
|
|
18
18
|
/** 权限级别(TOOL_PERMISSION.AUTO / PROPOSAL) */
|
|
19
19
|
permission: ToolPermission;
|
|
20
20
|
/**
|
|
21
21
|
* 执行函数:注入 ToolContext(db/outlineDir/projectId),返回可序列化结果或抛错。
|
|
22
|
-
* signal:可选取消通道(「长工具执行中检查 signal
|
|
23
|
-
*
|
|
22
|
+
* signal:可选取消通道(「长工具执行中检查 signal」)——分析类长任务在 executor
|
|
23
|
+
* 中止在途工具时命中;同步短工具可不检查。
|
|
24
24
|
*/
|
|
25
|
-
run(ctx: ToolContext, args:
|
|
25
|
+
run(ctx: ToolContext, args: Static<TSchema_>, signal?: AbortSignal): unknown;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* 参数校验(执行前 preflight;校验语义与 pi agent 循环一致——pi-ai 的
|
|
29
|
+
* validateToolArguments:先做原始类型 coerce,再按 schema 检查,失败抛错)。
|
|
30
|
+
* 校验通过返回(可能被 coerce 的)参数对象。
|
|
31
|
+
* @throws Error 校验失败(消息含工具名 + 字段路径 + 原始参数)
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateToolArgs(def: ToolDefinition, args: unknown): unknown;
|
|
27
34
|
/**
|
|
28
35
|
* 注册单个工具:重复注册同名工具抛错——防后续切片扩展时撞名,
|
|
29
36
|
* 保证「注册表 = 工具目录唯一事实来源」。
|
|
30
|
-
* 防呆:name
|
|
37
|
+
* 防呆:name 必须为非空字符串(拼错名不应静默注册新工具)。
|
|
31
38
|
*/
|
|
32
39
|
export declare function registerTool(def: ToolDefinition): void;
|
|
33
40
|
/** 批量注册(各工具模块组装定义数组后统一挂载;内部逐个调 registerTool 保证判重) */
|
|
34
41
|
export declare function registerTools(defs: readonly ToolDefinition[]): void;
|
|
35
42
|
/** 按名查询工具;未注册返回 undefined(executor 收到未知工具名时按失败处理) */
|
|
36
43
|
export declare function getTool(name: string): ToolDefinition | undefined;
|
|
37
|
-
/**
|
|
44
|
+
/** 全部已注册工具(按名称排序,稳定输出;供上下文组装注入 LLM 工具列表) */
|
|
38
45
|
export declare function listTools(): ToolDefinition[];
|
|
39
46
|
/** 当前注册的工具数量(冒烟/测试断言用) */
|
|
40
47
|
export declare function toolCount(): number;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAWA,OAAO,EAAyB,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO;IACjE,qDAAqD;IACpD,IAAI,EAAE,MAAM,CAAC;IACd,oCAAoC;IACnC,WAAW,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACxD,UAAU,EAAE,QAAQ,CAAC;IACtB,4CAA4C;IAC3C,UAAU,EAAE,cAAc,CAAC;IAC5B;;;;MAIE;IACD,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CAC9E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAU5E;AAKD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAQtD;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAEnE;AAED,qDAAqD;AACrD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEhE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,IAAI,cAAc,EAAE,CAE5C;AAED,0BAA0B;AAC1B,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
|