dsh-plugin-om 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +69 -159
  2. package/dist/client/OmCompactionCard.d.ts +5 -11
  3. package/dist/client/OmCompactionCard.d.ts.map +1 -1
  4. package/dist/client/definition.d.ts +17 -19
  5. package/dist/client/definition.d.ts.map +1 -1
  6. package/dist/client/format.d.ts +2 -2
  7. package/dist/client/format.d.ts.map +1 -1
  8. package/dist/client/index.d.ts +5 -11
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/locales.d.ts +2 -4
  11. package/dist/client/locales.d.ts.map +1 -1
  12. package/dist/client.js +17 -26
  13. package/dist/client.js.map +1 -1
  14. package/dist/compress.d.ts +15 -47
  15. package/dist/compress.d.ts.map +1 -1
  16. package/dist/config.d.ts +12 -21
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/constants.d.ts +10 -10
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/embedding.d.ts +19 -36
  21. package/dist/embedding.d.ts.map +1 -1
  22. package/dist/index.d.ts +1 -22
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.mjs +436 -722
  25. package/dist/json-schema.d.ts +4 -7
  26. package/dist/json-schema.d.ts.map +1 -1
  27. package/dist/log-index.d.ts +19 -12
  28. package/dist/log-index.d.ts.map +1 -1
  29. package/dist/logger.d.ts +3 -3
  30. package/dist/logger.d.ts.map +1 -1
  31. package/dist/model-download.d.ts +7 -11
  32. package/dist/model-download.d.ts.map +1 -1
  33. package/dist/rate-limit.d.ts +9 -14
  34. package/dist/rate-limit.d.ts.map +1 -1
  35. package/dist/recall-output.d.ts +37 -0
  36. package/dist/recall-output.d.ts.map +1 -0
  37. package/dist/recall.d.ts +7 -17
  38. package/dist/recall.d.ts.map +1 -1
  39. package/dist/semantic-recall.d.ts +10 -19
  40. package/dist/semantic-recall.d.ts.map +1 -1
  41. package/dist/summarize.d.ts +29 -46
  42. package/dist/summarize.d.ts.map +1 -1
  43. package/dist/types.d.ts +22 -35
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/utils.d.ts +9 -8
  46. package/dist/utils.d.ts.map +1 -1
  47. package/package.json +1 -1
@@ -1,12 +1,9 @@
1
1
  /**
2
- * zod schema → 工具 wire 参数 JSON Schema 的转换工具。
3
- *
4
- * 官方 API(如 api.deepseek.com /chat/completions)要求 tools[].function.parameters
5
- * 为根级带 type:'object' 的标准 JSON Schema;工具的参数定义统一由 zod 的 toJSONSchema
6
- * 生成,避免手写属性 map 与执行期解析 schema 双份定义漂移。剥除 $schema 元键与
7
- * additionalProperties:未知键不在 wire 层拒绝,执行期仍由 zod 解析剥离。
2
+ * zod schema → 工具 wire 参数 JSON Schema 的转换工具。导出 parametersFromZod。
3
+ * 工具参数定义统一由 zod 的 toJSONSchema 生成(.describe() 描述透传),剥除
4
+ * $schema 元键与 additionalProperties(未知键在执行期由 zod 解析剥离)。
8
5
  */
9
6
  import { type $ZodType } from 'zod/v4/core';
10
- /** 由 zod schema 生成 wire 参数 JSON Schema(根 type:'object',含 properties/required 与 describe 描述)。 */
7
+ /** 由 zod schema 生成 wire 参数 JSON Schema(根 type:'object',含 properties/required)。 */
11
8
  export declare function parametersFromZod<T extends $ZodType>(schema: T): Record<string, unknown>;
12
9
  //# sourceMappingURL=json-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIxF"}
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIxF"}
@@ -1,29 +1,36 @@
1
+ import type { ImageRefValue } from './recall-output.ts';
1
2
  import type { CompleteMessage, MessageIndex, Session, SessionEvent } from './types.ts';
2
3
  /** 工具结果裁剪器结构(tool-result-pruner;超大结果渲染前裁剪)。 */
3
4
  export type PrunerLike = {
4
5
  pruneContent?: (blocks: readonly unknown[]) => unknown[] | null;
5
6
  };
6
- /**
7
- * 查找 seq 在表层节点序列中的下标(不在则返回 -1)。
8
- * 表层节点按日志顺序排列,用于压缩边界定位与遮蔽范围计算。
9
- */
7
+ /** 查找 seq 在表层节点序列中的下标(不在则返回 -1)。 */
10
8
  export declare function surfaceIndexOf(nodes: readonly number[], seq: number): number;
11
- /** 提取一条消息事件的 message_iduser/assistant/tool-result 消息均有稳定 id;其余事件无)。 */
9
+ /** 提取一条消息事件的 message_id(仅 user/assistant/tool-result 消息事件有)。 */
12
10
  export declare function messageIdOfEvent(event: SessionEvent | undefined): string | undefined;
13
- /** 消息索引:按日志顺序列出全部消息事件,并按 message_id 定位其在消息序列中的下标。 */
11
+ /** 消息索引:按日志顺序列出全部消息事件,并按 message_id 定位下标。 */
14
12
  export declare function indexMessages(session: Session): MessageIndex;
15
13
  /**
16
14
  * 完整消息索引:按日志顺序把消息事件折叠为完整消息序列(四类,见文件头)。
17
15
  * 工具调用结果按 source.callId 匹配其 tool-call 并入该条;未匹配的 result 独立成条(防御)。
18
- * 插件在 agent/pre-step 触发压缩(日志 call-result 完备),因此压缩时不存在未闭合的
19
- * tool-call;索引对未闭合调用不设特殊处理。
16
+ * 本插件自产消息不占位;压缩在 agent/pre-step 触发(call-result 完备),不存在未闭合调用。
20
17
  */
21
18
  export declare function indexCompleteMessages(session: Session): CompleteMessage[];
22
19
  /**
23
- * 渲染一条完整消息的文本(recall 输出 / new 模式输入共用):
24
- * - user / sys:消息原文;
25
- * - assistant:仅文本块;
26
- * - toolcall:调用块(工具名 + 参数)+ 结果文本(pruner 裁剪超大结果)。
20
+ * 递归收集内容块中的图片附件元数据(recall 输出保留图片用):
21
+ * image 块按附件元数据收集(字段不全则忽略);tool-result 块递归收集其 content。
27
22
  */
23
+ export declare function collectImageRefs(content: unknown, out: ImageRefValue[]): void;
24
+ /**
25
+ * 渲染一条完整消息为「文本 + 图片」(recall / recall-semantic 输出用):
26
+ * user/sys 取消息原文,assistant 取文本块,toolcall 为调用块 + 结果文本
27
+ * (pruner 裁剪超大结果);同时收集该条完整消息携带的图片附件(含 tool-result 嵌套,
28
+ * pruner 裁剪掉的图片不收集)。
29
+ */
30
+ export declare function renderCompleteMessageParts(session: Session, cm: CompleteMessage, pruner?: PrunerLike): {
31
+ text: string;
32
+ images: ImageRefValue[];
33
+ };
34
+ /** 渲染一条完整消息的文本(压缩输入与语义嵌入共用):renderCompleteMessageParts 的纯文本投影。 */
28
35
  export declare function renderCompleteMessage(session: Session, cm: CompleteMessage, pruner?: PrunerLike): string;
29
36
  //# sourceMappingURL=log-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-index.d.ts","sourceRoot":"","sources":["../src/log-index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EAEZ,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE7F;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMpF;AAED,qDAAqD;AACrD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CA0B5D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CA2EzE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,eAAe,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAgER"}
1
+ {"version":3,"file":"log-index.d.ts","sourceRoot":"","sources":["../src/log-index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EAEZ,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE7F,oCAAoC;AACpC,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMpF;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CA+DzE;AACD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,CA+B7E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,eAAe,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAuD3C;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,eAAe,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAER"}
package/dist/logger.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type { Context } from './types.ts';
2
- /** 插件日志门面:step=步骤级(debug,dev 输出);info/warn 始终输出(失败必达)。 */
2
+ /** 插件日志门面:step=步骤级(debug);info/warn 始终输出。 */
3
3
  export type PluginLogger = {
4
- /** 步骤级日志(debug 级,仅 dev/调试环境输出)。 */
4
+ /** 步骤级日志(仅 debug 开启时输出)。 */
5
5
  step(message: string): void;
6
6
  /** 常规信息(始终输出)。 */
7
7
  info(message: string): void;
8
- /** 警告/失败(始终输出,重试与失败诊断依赖)。 */
8
+ /** 警告/失败(始终输出)。 */
9
9
  warn(message: string): void;
10
10
  };
11
11
  /** 构建插件日志门面:统一加 PLUGIN_LABEL 前缀,step 按 debug 开关过滤。 */
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,mCAAmC;IACnC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,6BAA6B;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAYrE"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG;IACzB,4BAA4B;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB;IACnB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAYrE"}
@@ -1,8 +1,8 @@
1
1
  /** 模型标识(models/ 下目录名 = 模型 id;transformers.js 加载时的模型名)。 */
2
2
  export declare const EMBEDDING_MODEL_ID = "paraphrase-multilingual-MiniLM-L12-v2";
3
- /** transformers.js 转换仓库(Xenova org)中量化 ONNX 文件的相对路径(相对模型目录)。 */
3
+ /** 量化 ONNX 文件的相对路径(相对模型目录)。 */
4
4
  export declare const ONNX_REL = "onnx/model_quantized.onnx";
5
- /** 随 npm 包分发的小模型文件(相对模型目录;onnx 二进制不随包分发,见 tests/package-pack.test.ts)。 */
5
+ /** 随 npm 包分发的小模型文件(相对模型目录;onnx 二进制不随包分发)。 */
6
6
  export declare const MODEL_SMALL_FILES: string[];
7
7
  /** 下载返回结果。 */
8
8
  export type DownloadResult = {
@@ -12,19 +12,16 @@ export type DownloadResult = {
12
12
  };
13
13
  /**
14
14
  * HuggingFace 原始文件 URL(resolve 会 302 到 CDN,fetch 自动跟随重定向)。
15
- * base 默认 huggingface.co,可用环境变量 HF_ENDPOINT 覆盖(直连受限时改用镜像,如 https://hf-mirror.com)。
15
+ * base 可用环境变量 HF_ENDPOINT 覆盖(直连受限时改用镜像,如 https://hf-mirror.com)。
16
16
  */
17
17
  export declare function modelSourceUrl(id?: string, rel?: string, base?: string): string;
18
- /** 本地目标文件绝对路径(<modelDir>/<rel>,缺省 <modelDir>/onnx/model_quantized.onnx)。 */
18
+ /** 本地目标文件绝对路径(<modelDir>/<rel>)。 */
19
19
  export declare function modelTargetPath(modelDir: string, rel?: string): string;
20
- /**
21
- * 是否需要下载(纯函数,供测试)。
22
- * force 强制下载;否则目标已存在即跳过。
23
- */
20
+ /** 是否需要下载:force 强制;否则目标已存在即跳过。 */
24
21
  export declare function needsDownload(target: string, { force }?: {
25
22
  force?: boolean;
26
23
  }): boolean;
27
- /** fetch 最小可用接口(全局 fetch 满足;测试注入替身,无需完整 Response)。 */
24
+ /** fetch 最小可用接口(全局 fetch 满足;测试注入替身)。 */
28
25
  export type ModelFetch = (url: string) => Promise<{
29
26
  ok: boolean;
30
27
  status: number;
@@ -33,8 +30,7 @@ export type ModelFetch = (url: string) => Promise<{
33
30
  }>;
34
31
  /**
35
32
  * 下载模型到 <modelDir>/onnx/model_quantized.onnx。
36
- * 开始/结束(含跳过)经 log 回调输出(默认 console.log);失败时清理临时文件,
37
- * 并在错误消息中附带镜像建议(直连受限时设置 HF_ENDPOINT=https://hf-mirror.com)。
33
+ * 开始/结束(含跳过)经 log 回调输出;失败时清理临时文件并在错误消息中附带镜像建议。
38
34
  * 可注入 fetchImpl / log(供测试)。
39
35
  */
40
36
  export declare function downloadModel(modelDir: string, { force, fetchImpl, log, }?: {
@@ -1 +1 @@
1
- {"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../src/model-download.ts"],"names":[],"mappings":"AAmBA,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,0CAA0C,CAAC;AAE1E,gEAAgE;AAChE,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,UAK7B,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,EAAE,GAAE,MAA2B,EAC/B,GAAG,GAAE,MAAiB,EACtB,IAAI,GAAE,MAA4D,GACjE,MAAM,CAER;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,GAAG,MAAM,CAEhF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAQT;AAED,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,EACE,KAAa,EACb,SAAiB,EACjB,GAAiB,GAClB,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GACL,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
1
+ {"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../src/model-download.ts"],"names":[],"mappings":"AAYA,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,0CAA0C,CAAC;AAE1E,+BAA+B;AAC/B,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,UAK7B,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,EAAE,GAAE,MAA2B,EAC/B,GAAG,GAAE,MAAiB,EACtB,IAAI,GAAE,MAA4D,GACjE,MAAM,CAER;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,GAAG,MAAM,CAEhF;AAED,kCAAkC;AAClC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAQT;AAED,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,EACE,KAAa,EACb,SAAiB,EACjB,GAAiB,GAClB,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GACL,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
@@ -1,24 +1,19 @@
1
1
  /**
2
- * 全局限流门(插件进程级共享状态):任一摘要请求遇 429 限流后记录时间戳,
3
- * 此后所有摘要请求在发出前先等待到「最近一次 429 + rateLimitWaitMs」之后——
4
- * 并行压缩时其他块的下一次请求同样受限。等待期间 signal 中止则立即放弃。
5
- *
6
- * 门在进入时与等待结束时都会重读最近限流时间戳:等待期间发生新的 429 会顺延
7
- * 冷却期(循环等待直到通过或中止)。
2
+ * 全局限流门(插件进程级共享状态):任一摘要请求遇 429 后进入冷却期,
3
+ * 此后所有摘要请求发出前先等待到「最近一次 429 + rateLimitWaitMs」之后。
4
+ * 等待期间 signal 中止则立即放弃;等待期间的新 429 顺延冷却期。
5
+ * 导出 isRateLimitError / noteRateLimit / gateRateLimit / RATE_LIMIT_WAIT_MS_DEFAULT /
6
+ * resetRateLimitGate。
8
7
  */
9
- /** 默认限流冷却时长(ms):调用方未传 rateLimitWaitMs 时的兜底值(与配置默认一致)。 */
8
+ /** 默认限流冷却时长(ms):调用方未传 rateLimitWaitMs 时的兜底值。 */
10
9
  export declare const RATE_LIMIT_WAIT_MS_DEFAULT = 60000;
11
- /**
12
- * 判定错误信息是否为 429 限流:匹配 429(独立数字)或 rate limit(空格/连字符/
13
- * 下划线分隔与 camelCase 均可),大小写不敏感。
14
- */
10
+ /** 判定错误信息是否为 429 限流(匹配 429 或 rate limit,大小写不敏感)。 */
15
11
  export declare function isRateLimitError(message: string): boolean;
16
12
  /** 记录一次 429 限流:把冷却期起点更新为当前时间。 */
17
13
  export declare function noteRateLimit(): void;
18
14
  /**
19
- * 限流等待门:处于 429 冷却期(最近一次 429 + waitMs 未到)时等待到期限,
20
- * 通过后返回 true;等待期间 signal 中止返回 false。未遇过限流或冷却期已过
21
- * 立即放行。waitMs ≤ 0 视为不限流。
15
+ * 限流等待门:处于 429 冷却期时等待到期限再放行(返回 true);
16
+ * 等待期间 signal 中止返回 false。未遇过限流或冷却期已过立即放行。waitMs ≤ 0 视为不限流。
22
17
  */
23
18
  export declare function gateRateLimit(waitMs: number, signal?: AbortSignal): Promise<boolean>;
24
19
  /** 重置限流门状态(仅测试使用:用例间隔离)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,iCAAiC;AACjC,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AA4BD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAW1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,iCAAiC;AACjC,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAyBD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAS1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * recall / recall-semantic 共享输出契约:输出值为固定形态 { text, images }。
3
+ * text 为完整消息的文本内容(带图消息附图片标注行),images 为图片附件元数据
4
+ * (按 attachmentId 引用,不含字节)。导出 ImageRefValue / RecallOutputValue /
5
+ * RECALL_OUTPUT_SCHEMA / textOnly / imageNote / renderRecallOutput。
6
+ */
7
+ import type { ContentBlock } from '@deepseek-ai/dsh-llm';
8
+ import type { JsonSchemaNode } from '@deepseek-ai/dsh-tools';
9
+ /** 一张图片的持久元数据(与宿主 ImageAttachmentRef 同构的无损 JSON 形态)。 */
10
+ export type ImageRefValue = {
11
+ /** attachment 服务的持久图片 id(宿主按此解析图片字节)。 */
12
+ attachmentId: string;
13
+ /** 图片媒体类型(image/png 等)。 */
14
+ mediaType: string;
15
+ /** 字节数。 */
16
+ bytes: number;
17
+ /** 固有显示宽度(px)。 */
18
+ width: number;
19
+ /** 固有显示高度(px)。 */
20
+ height: number;
21
+ /** 原始文件名(可选)。 */
22
+ name?: string;
23
+ };
24
+ /** recall / recall-semantic 的输出值:text 为文本部分,images 按出现顺序。 */
25
+ export type RecallOutputValue = {
26
+ text: string;
27
+ images: ImageRefValue[];
28
+ };
29
+ /** 纯文本结果(无图片)的便捷构造。 */
30
+ export declare function textOnly(text: string): RecallOutputValue;
31
+ /** 一张图片的文本标注行:[图片附件:name(mediaType W×H,N bytes)]。 */
32
+ export declare function imageNote(ref: ImageRefValue): string;
33
+ /** 输出值 wire schema:宿主按此校验 execute 返回值。 */
34
+ export declare const RECALL_OUTPUT_SCHEMA: JsonSchemaNode;
35
+ /** 把输出值投影为模型内容:text 块在前,images 逐个投影为 image 块。 */
36
+ export declare function renderRecallOutput(value: RecallOutputValue): ContentBlock[];
37
+ //# sourceMappingURL=recall-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recall-output.d.ts","sourceRoot":"","sources":["../src/recall-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AAEF,uBAAuB;AACvB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAExD;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAGpD;AAED,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,EAAE,cA4BlC,CAAC;AAEF,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,EAAE,CAY3E"}
package/dist/recall.d.ts CHANGED
@@ -1,21 +1,14 @@
1
1
  /**
2
- * recall 工具:按「完整消息」序号(index)回看原始会话(start/end 为完整消息 index,
3
- * offset 为相对 start 的完整消息步数)。完整消息即 `用户消息`(user_message kind 为 user
4
- * 的部分)、`系统消息`(user_message 中其余 kind 的部分)、`模型输出文本`和`具有result的
5
- * toolcall`;首条完整消息的 index 为 0,后续递增、会话内全局稳定,与摘要日志条目同一套编号。
6
- * recall 自身不设输出上限:超大的工具结果由 tool-result-pruner 裁剪(pruneContent),
7
- * 输出 token 由 pruner 配置控制。
8
- *
9
- * 参数由 zod schema(recallArgsSchema)统一描述:wire 参数 JSON Schema(根 type:'object',
10
- * 各字段描述来自 .describe())直接发给模型,execute 入口再做运行时校验(start 必填;
11
- * end/offset 至少提供一个;非法参数抛出可读错误)。
2
+ * recall 工具:按完整消息 index 区间回看原始会话(含被压缩内容)。
3
+ * 导出 recallArgsSchema / RecallArgs / parseRecallArgs / buildRecallTool。
4
+ * 输出值为 { text, images }(契约见 recall-output.ts);recall 自身不设输出上限,
5
+ * 超大工具结果由 tool-result-pruner 裁剪。
12
6
  */
13
7
  import { z } from 'zod';
14
8
  import type { ToolDefinition } from './types.ts';
15
9
  /**
16
- * recall 工具参数 schema:start 必填(number);end 与 offset 至少提供一个
17
- * (二者同时给出时 end 优先,与 execute 语义一致);未知键自动剥离。
18
- * 各字段描述经 .describe() 透传到 wire JSON Schema(生成见 json-schema.ts)。
10
+ * recall 工具参数 schema:start 必填;end 与 offset 至少提供一个(同时给出时 end 优先)。
11
+ * 各字段描述经 .describe() 透传到 wire JSON Schema。
19
12
  */
20
13
  export declare const recallArgsSchema: z.ZodObject<{
21
14
  start: z.ZodNumber;
@@ -24,10 +17,7 @@ export declare const recallArgsSchema: z.ZodObject<{
24
17
  }, z.core.$strip>;
25
18
  /** recall 工具调用参数(由 recallArgsSchema 推断)。 */
26
19
  export type RecallArgs = z.infer<typeof recallArgsSchema>;
27
- /**
28
- * 解析并校验 recall 调用参数:校验失败时抛出首个校验问题的可读消息
29
- * (普通 Error 而非 ZodError,兼容 SDK 展示)。
30
- */
20
+ /** 解析并校验 recall 调用参数:失败时抛出首个校验问题的可读消息(普通 Error,兼容 SDK 展示)。 */
31
21
  export declare function parseRecallArgs(raw: unknown): RecallArgs;
32
22
  /**
33
23
  * 构建 recall 工具定义:按 start/end/offset 定位完整消息区间并渲染原始内容(标 index)。
@@ -1 +1 @@
1
- {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGjE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;iBAYzB,CAAC;AAEL,4CAA4C;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAYxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,GAAG,cAAc,CAsEzE"}
1
+ {"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;iBAYzB,CAAC;AAEL,4CAA4C;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAUxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,GAAG,cAAc,CAoEzE"}
@@ -1,19 +1,11 @@
1
1
  /**
2
- * recall-semantic 工具:按自然语言 query 对会话全部完整消息(含被压缩/遮蔽的)做语义
3
- * 检索,返回最匹配的完整消息与匹配说明。完整消息即 `用户消息`(user_message 中 kind 为 user
4
- * 的部分)、`系统消息`(user_message 中其余 kind 的部分)、`模型输出文本`和`具有result的
5
- * toolcall`;首条完整消息的 index 0,后续递增、会话内全局稳定。
6
- *
7
- * - 参数:query 必填;top_k(默认 3,1-10);start/end/offset 限定检索区间
8
- * (意义同 recall:start 为基准边界,end offset 二选一;end 优先)。
9
- * wire 参数 JSON Schema 由本 schema 经 toJSONSchema 生成(各字段描述来自 .describe(),
10
- * 见 json-schema.ts)。
11
- * - 区间缺省(start 未提供)→ 检索全部消息;区间不合法(start/end 越界等)→
12
- * 不报错,回退全量检索并在输出中明确告知(模型可见)。
13
- * - 向量:本地 ONNX embedding(embedding.ts,懒加载 + 批量);相似度 = cosine。
14
- * - 输出:命中消息的 index/类型(toolcall 附调用 id)+ 完整渲染文本 + 匹配说明(相似度、
15
- * 命中的关键词);超大结果由 tool-result-pruner 裁剪(同 recall)。
16
- * - 仅主会话可用(subagent 拒绝,与 recall 一致)。
2
+ * recall-semantic 工具:按自然语言 query 对会话全部完整消息(含被压缩/遮蔽的)做
3
+ * 语义检索,返回最匹配的完整消息与匹配说明。
4
+ * 导出 semanticRecallArgsSchema / SemanticRecallArgs / parseSemanticRecallArgs /
5
+ * resolveSemanticRange / tokenize / matchExplanation / buildSemanticRecallTool。
6
+ * 向量为本地 ONNX 嵌入(cosine 相似度);只匹配文本,纯图片消息不进候选池;
7
+ * 区间缺省检索全部、区间不合法回退全量并在输出中告知;输出契约同 recall
8
+ * ({ text, images },超大结果由 tool-result-pruner 裁剪);仅主会话可用。
17
9
  */
18
10
  import { z } from 'zod';
19
11
  import { type EmbedFn, type ModelStatus } from './embedding.ts';
@@ -38,16 +30,15 @@ export type RangeResult = {
38
30
  };
39
31
  /**
40
32
  * 解析检索区间(完整消息 index,含端点)。
41
- * - start 未提供 → 全量(fallback=false)。
42
- * - start 提供:end/offset 计算终点(语义同 recall,end 优先);
43
- * start/end 越界或区间为空 → fallback=true(全量 + 提示)。
33
+ * start 未提供 → 全量(fallback=false);start/end 越界或区间为空 → fallback=true
34
+ * (回退全量并在输出中告知)。
44
35
  */
45
36
  export declare function resolveSemanticRange(total: number, args: Pick<SemanticRecallArgs, 'start' | 'end' | 'offset'>): RangeResult;
46
37
  /** 简易分词:按非字母数字切分为小写词元(匹配要点用,非检索核心)。 */
47
38
  export declare function tokenize(text: string): Set<string>;
48
39
  /** 命中消息的匹配说明行:相似度 + 与 query 共有的关键词(最多 8 个)。 */
49
40
  export declare function matchExplanation(query: string, text: string, score: number): string;
50
- /** 模型未就绪时返回给模型的文案(告知即可;下载完成后无需另行通知,直接再次调用)。 */
41
+ /** 模型未就绪时返回给模型的文案(下载完成后直接再次调用即可)。 */
51
42
  export declare const SEMANTIC_MODEL_NOT_READY_MESSAGE = "\u8BED\u4E49\u68C0\u7D22\u6682\u4E0D\u53EF\u7528\uFF0C\u672C\u5730\u5411\u91CF\u6A21\u578B\u5C1A\u672A\u5C31\u7EEA\u3002";
52
43
  /** 构建 recall-semantic 工具定义(embedder/modelStatus 可注入,测试传替身;缺省用本地模型)。 */
53
44
  export declare function buildSemanticRecallTool(options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-recall.d.ts","sourceRoot":"","sources":["../src/semantic-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG/F,OAAO,KAAK,EAAmB,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGlF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB;;;;;;iBA6BjC,CAAC;AAEL,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAWxE;AAED,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,GACzD,WAAW,CA2Bb;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOlD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAcnF;AAED,+CAA+C;AAC/C,eAAO,MAAM,gCAAgC,6HAAyB,CAAC;AAEvE,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACxD,GAAG,cAAc,CA8FjB"}
1
+ {"version":3,"file":"semantic-recall.d.ts","sourceRoot":"","sources":["../src/semantic-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgB/F,OAAO,KAAK,EAAmB,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGlF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB;;;;;;iBA6BjC,CAAC;AAEL,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAUxE;AAED,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,GACzD,WAAW,CAqBb;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAMlD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUnF;AAED,qCAAqC;AACrC,eAAO,MAAM,gCAAgC,6HAAyB,CAAC;AAEvE,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACxD,GAAG,cAAc,CA+EjB"}
@@ -1,46 +1,36 @@
1
1
  /**
2
- * 摘要调用(OM 观察/反思):直连 ctx.llm.stream(),始终以 new 方式开启观察——
3
- * 新开会话:指令(共享提示词)作为 system 提示词,被压缩消息(由 compress.ts 渲染传入)
4
- * 作为 user 消息输入模型压缩。观察与反思共用同一套系统提示词(buildHistoryPrompt):
5
- * 输入与输出都是合法的 <history> 块(模型消息 + index 的表达形式),先定义块、要求压缩、
6
- * 再给出数据源(下方 <history> 消息记录)。
7
- *
8
- * 观察输入由 renderMessages 渲染为 <history> 块:用户消息文本原样(图片/文件以
9
- * 注释补充)、系统消息(user_message 中非 kind:user 的部分)渲染为
10
- * <sys type="KIND" index="N"> 空块(内容不进入输入)、<reasoning> 参考条目
11
- * (产物中没有)、assistant 文本与 toolcall&result 原样。
12
- * 输出经 extractSummaryLog 校验:合法 <history> 块、不含 <reasoning>、index/start/end 连续
13
- * (与预期覆盖区间一致),失败按 config.compressRetryCount 重试。
14
- * token usage 从流式响应的 usage chunk 提取,归入主会话记录。仅主会话生效(index.ts 守卫)。
2
+ * 摘要调用:共享压缩提示词、<history> 块渲染与输出校验、LLM 摘要执行。
3
+ * 导出 buildHistoryPrompt / renderMessages / extractSummaryLog / parseHistoryEntries /
4
+ * historyContinuity / runSummarySubagent 及相关类型与常量。
5
+ * 摘要以新会话方式直连 ctx.llm.stream():指令(共享提示词)作为 system、被压缩消息
6
+ * (renderMessages 渲染为合法 <history> 块)作为 user 输入;输出经 extractSummaryLog
7
+ * 定位与校验(首个 <history> 开标签到最后一个 </history>;整块 XML 非法时按条目标签
8
+ * 模糊提取重建 / reasoning / index 连续),失败按 maxAttempts 重试;每次请求前
9
+ * 过全局限流等待门;token usage 归入主会话记录。
15
10
  */
16
11
  import type { Agent, Context, Session, TokenUsage } from './types.ts';
17
12
  import { type RoutedTarget } from './utils.ts';
18
13
  /**
19
14
  * 共享压缩提示词(观察/反思同一套):定义 history 块(模型消息 + index 的表达形式)、
20
- * 完整消息定义、要求压缩(完整保留用户消息 / reasoning 仅参考 / 关联 assistant 合并 /
21
- * index/start/end 连续)、输出格式(一个合法 <history> 块,无 reasoning)、数据源说明。
22
- * mode 控制【摘要粒度】:无参为通用提示词(反思调用);'summary' 要求简单摘要(较早分块);
23
- * 'detailed' 要求越往后越细(最后一块保留细节)。观察分块时除最后一块外均用 'summary'。
15
+ * 完整消息定义、压缩要求(完整保留用户/系统消息、reasoning 仅参考、关联 assistant
16
+ * 合并为模块、index 连续)、输出格式与数据源说明。
24
17
  */
25
- export declare function buildHistoryPrompt(mode?: 'summary' | 'detailed'): string;
18
+ export declare function buildHistoryPrompt(): string;
26
19
  /**
27
- * 渲染完整消息记录(观察输入,new 模式):输出一个合法的 <history> 块——
28
- * - user → <user_message index="N">(文本原样;图片/文件注释);
29
- * - sys → <sys type="KIND" index="N"></sys>(系统消息空块,内容不进入压缩输入);
30
- * - 每条 assistant 消息的 reasoning → <reasoning>(参考条目,产物中没有);
31
- * - assistant / toolcall → <assistant index="N">(模型输出文本 / toolcall&result 原样)。
32
- * 文本经 XML 序列化自动转义(用户输入 / 文本 / reasoning 中的特殊字符不破坏 XML 合法性)。
33
- * 仅渲染 seqs 全部落在给定集合内的完整消息(本插件自产消息天然不占位)。
20
+ * 渲染完整消息记录(观察输入):输出一个合法的 <history> 块——
21
+ * user → <user_message>(文本原样、图片注释)、sys → <sys> 空块、assistant 的
22
+ * reasoning → <reasoning>(参考条目)、assistant/toolcall <assistant>(原样文本)。
23
+ * 文本经 XML 序列化自动转义;仅渲染 seqs 全部落在给定集合内的完整消息。
34
24
  */
35
25
  export declare function renderMessages(session: Session, seqs: readonly number[]): string;
36
- /** 摘要调用结果:文本 + 可选 token usage(摘要请求自身消耗,随 compaction/summary 归入主会话记录)。 */
26
+ /** 摘要调用结果:文本 + 可选 token usage + 成功时的尝试次数。 */
37
27
  export type SummarySubagentResult = {
38
28
  text: string;
39
29
  usage?: TokenUsage;
40
- /** 成功时的尝试次数(1 起;1=首次即成功,>1 表示重试后成功;载荷层换算为重试次数 = 该值 - 1)。 */
30
+ /** 成功时的尝试次数(1 起;载荷层换算为重试次数 = 该值 - 1)。 */
41
31
  attemptCount: number;
42
32
  };
43
- /** 日志最小有效长度:<history> 中间内容小于该长度视为不合法(C 段校验)。 */
33
+ /** 日志最小有效长度:<history> 中间内容小于该长度视为不合法。 */
44
34
  export declare const MIN_HISTORY_LENGTH = 10;
45
35
  /** 产出日志后插入首个 <history> 后的格式说明(XML 注释,完整消息定义 + 条目标签语义)。 */
46
36
  export declare const HISTORY_FORMAT_NOTE = "<!-- \u5B8C\u6574\u6D88\u606F\uFF1A`\u5B8C\u6574\u6D88\u606F`\u88AB\u5B9A\u4E49\u4E3A`\u7528\u6237\u6D88\u606F`\uFF0C`\u7CFB\u7EDF\u6D88\u606F`\uFF0C`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u548C`\u5177\u6709result\u7684toolcall`\u7684\u96C6\u5408\u3002\u9996\u6761`\u5B8C\u6574\u6D88\u606F`\u7684index\u662F0\uFF0C\u540E\u7EED\u7684index\u9012\u589E\u3002 <TAG index=\"N\">\u8868\u793A\u5355\u6761\u5B8C\u6574\u6D88\u606F\uFF0C<TAG start=\"A\" end=\"B\"> \u8868\u793A\u8FDE\u7EED\u6A21\u5757\uFF0Cstart/end \u662F\u9996\u5C3E\u5B8C\u6574\u6D88\u606F\u7684 index\uFF1B<sys type=\"KIND\" index=\"N\"> \u8868\u793A\u88AB\u538B\u7F29\u7684\u7CFB\u7EDF\u6D88\u606F\uFF0C\u5757\u4E2D\u4E3A\u7A7A -->";
@@ -53,13 +43,12 @@ export type HistoryEntryRange = {
53
43
  };
54
44
  /**
55
45
  * 解析文本中全部 <history> 块内的条目(反思输入为多个块拼接:逐块解析提取)。
56
- * 非法块(结构错误 / 根非 history)跳过;仅提取不校验顺序(连续性由 historyContinuity 校验)。
46
+ * 非法块跳过;仅提取不校验顺序(连续性由 historyContinuity 校验)。
57
47
  */
58
48
  export declare function parseHistoryEntries(text: string): HistoryEntryRange[];
59
49
  /**
60
- * 校验条目 index/start/end 连续性:每条给出覆盖区间 [lo, hi](单条 index 为自身),
61
- * 按块内出现顺序,相邻条目必须首尾相接(后一条 lo = 前一条 hi + 1),返回整体覆盖区间;
62
- * 空条目 / 非法范围(start > end) / 跳号、重叠或乱序 → 返回 null。
50
+ * 校验条目 index/start/end 连续性:每条给出覆盖区间,按出现顺序相邻条目必须首尾相接,
51
+ * 返回整体覆盖区间;空条目 / 非法范围 / 跳号、重叠或乱序 返回 null。
63
52
  */
64
53
  export declare function historyContinuity(entries: HistoryEntryRange[]): {
65
54
  start: number;
@@ -72,26 +61,20 @@ export type SummaryValidationRange = {
72
61
  };
73
62
  /**
74
63
  * 从 AI 摘要输出中提取合法日志(不信任 AI 的总结结果):
75
- * - 取首个 <history> 到最后一个 </history>(含两个首尾)切为日志;
76
- * - 找不到、顺序颠倒(首个开标签在最后一个闭标签之后)或中间内容长度 < MIN_HISTORY_LENGTH
77
- * 视为不合法(返回 null,调用方按失败重试);
78
- * - XML 解析器校验结构合法性(非法 XML / 多块输出 / 根非 <history> → 不合法);
79
- * - 产物不允许包含 <reasoning> 块(仅作参考);
80
- * - index/start/end 连续性校验(historyContinuity + 与 expected 覆盖区间一致);
81
- * - 产出后把首个开标签改写为带 tip 属性的版本(对 AI 的提醒),并在其后插入
82
- * 格式说明注释(HISTORY_FORMAT_NOTE,块顶)。
64
+ * 取首个 <history> 开标签(允许带属性)到最后一个 </history> 切为候选块,
65
+ * 找不到或内容过短返回 null;候选块经 XML 结构校验,整块非法时按条目模糊
66
+ * 提取重建为合法块(不要求模型输出整体合法 XML);随后统一校验:无 reasoning、
67
+ * index 连续且与 expected 覆盖区间一致;通过后统一改写为带 tip 属性的开标签
68
+ * 并在块顶插入格式说明注释。
83
69
  */
84
70
  export declare function extractSummaryLog(raw: string, expected?: SummaryValidationRange): string | null;
85
71
  /** 摘要调用总尝试次数兜底(无 options.maxAttempts 时;实际由 config.compressRetryCount + 1 传入)。 */
86
72
  export declare const SUMMARY_DEFAULT_MAX_ATTEMPTS = 11;
87
73
  /**
88
74
  * 直连 LLM 执行一次摘要(观察或反思),返回文本与可选 token usage。
89
- * 失败(抛异常 / 空输出 / 非 stop 结束 / 校验不通过)均记录日志并重试,总共最多尝试
90
- * options.maxAttempts 次(默认 SUMMARY_DEFAULT_MAX_ATTEMPTS);全部尝试失败返回 null
91
- * (不产生任何日志变更)。输出长度受 maxTokens 限制。
92
- * 每次请求发出前先过全局限流等待门(gateRateLimit):任一请求遇 429 后,后续所有
93
- * 摘要请求(含并行中的其他调用方)在「最近一次 429 + options.rateLimitWaitMs」之前
94
- * 不会发出(缺省 RATE_LIMIT_WAIT_MS_DEFAULT)。
75
+ * 失败(抛异常 / 空输出 / 非 stop 结束 / 校验不通过)均记录日志并重试,最多尝试
76
+ * options.maxAttempts 次;全部失败返回 null(不产生任何日志变更)。每次请求发出前
77
+ * 先过全局限流等待门。
95
78
  */
96
79
  export declare function runSummarySubagent(ctx: Context, agent: Agent, instruction: string, contextText: string | undefined, maxTokens: number, target: RoutedTarget, debug: boolean, signal?: AbortSignal, options?: {
97
80
  maxAttempts?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,OAAO,KAAK,EAAE,KAAK,EAAmB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,YAAY,CAAC;AAErD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAiDxE;AA0CD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAqEhF;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AA8EF,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,yrBAA6K,CAAC;AAE9M,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAoFF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAYrE;AACD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAAE,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuBvC;AAED,sCAAsC;AACtC,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAiC/F;AACD,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAK/C;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9F,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAgGvC"}
1
+ {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,OAAO,KAAK,EAAE,KAAK,EAAmB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAuC3C;AAkCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAsDhF;AAED,6CAA6C;AAC7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AA2EF,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,yrBAA6K,CAAC;AAE9M,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAoEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASrE;AACD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAAE,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBvC;AAED,sCAAsC;AACtC,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA+EtE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAsB/F;AAED,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAK/C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9F,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAiFvC"}
package/dist/types.d.ts CHANGED
@@ -1,31 +1,24 @@
1
1
  /**
2
- * 共享类型:全部来自 deepseek-ai 官方包(type-only 导入,编译期擦除,运行时零依赖)。
3
- *
4
- * 各 dsh-* 包通过 declare module '@deepseek-ai/cordis' 增强 Context/Events,
5
- * 使 ctx.tools / ctx.tokenMeter / ctx.sessions 等获得与真实宿主一致的类型;
6
- * ctx.on / ctx.get 等 mixin 方法由 cordis 自身声明,无需本地补充。
2
+ * 共享类型:宿主类型再导出(type-only,编译期擦除)+ 插件领域类型。
3
+ * 导出官方包宿主类型(Context/Agent/Session 等)、PluginConfig、
4
+ * MessageNode/MessageIndex/CompleteMessage(完整消息索引)与 compaction 载荷扩展。
5
+ * dsh-* 包通过 declare module 增强 Context/Events,使 ctx.tools 等获得宿主一致类型。
7
6
  */
8
7
  import type { Context, EventOptions, Events } from '@deepseek-ai/cordis';
9
8
  import type { Agent } from '@deepseek-ai/dsh-agent';
10
9
  import type { CompactionId } from '@deepseek-ai/dsh-compaction';
11
10
  import type { ToolResultPruner } from '@deepseek-ai/dsh-compaction-tool-result-pruner';
12
- import type { Message, TokenUsage, UserMessage } from '@deepseek-ai/dsh-llm';
11
+ import type { ContentBlock, ImageBlock, Message, TokenUsage, UserMessage } from '@deepseek-ai/dsh-llm';
13
12
  import type { Session, SessionEvent, SessionEventMap } from '@deepseek-ai/dsh-session';
14
13
  import type { SubagentResult, SubagentRun, SubagentStartRequest } from '@deepseek-ai/dsh-subagent';
15
14
  import type { SystemPrompt } from '@deepseek-ai/dsh-system-prompt';
16
15
  import type { TokenMeter } from '@deepseek-ai/dsh-token-meter';
17
- import type { ToolDefinition, ToolRunContext } from '@deepseek-ai/dsh-tools';
18
- /** 插件配置类型(来自 config.ts,供外部 preset 与类型使用者引用)。 */
16
+ import type { JsonSchemaNode, ToolDefinition, ToolRunContext } from '@deepseek-ai/dsh-tools';
17
+ /** 插件配置类型(来自 config.ts)。 */
19
18
  export type { PluginConfig } from './config.ts';
20
- /**
21
- * 官方包宿主类型再导出:插件 API 与工具签名统一从这里取型,
22
- * 避免各模块直接依赖不同版本的 dsh-* 包类型面。
23
- */
24
- export type { Agent, CompactionId, Context, EventOptions, Events, Message, Session, SessionEvent, SessionEventMap, SubagentResult, SubagentRun, SubagentStartRequest, SystemPrompt, TokenMeter, TokenUsage, ToolDefinition, ToolResultPruner, ToolRunContext, UserMessage, };
25
- /**
26
- * 一条消息事件(user/assistant/tool-result),带稳定 message_id;
27
- * 消息级索引(indexMessages)的节点,按 message_id 定位消息序列下标。
28
- */
19
+ /** 官方包宿主类型再导出:插件 API 与工具签名统一从这里取型。 */
20
+ export type { Agent, CompactionId, ContentBlock, Context, EventOptions, Events, ImageBlock, JsonSchemaNode, Message, Session, SessionEvent, SessionEventMap, SubagentResult, SubagentRun, SubagentStartRequest, SystemPrompt, TokenMeter, TokenUsage, ToolDefinition, ToolResultPruner, ToolRunContext, UserMessage, };
21
+ /** 一条消息事件(user/assistant/tool-result),带稳定 message_id;消息级索引的节点。 */
29
22
  export type MessageNode = {
30
23
  /** 事件在日志中的 seq。 */
31
24
  seq: number;
@@ -43,43 +36,37 @@ export type MessageIndex = {
43
36
  };
44
37
  /**
45
38
  * 一条完整消息:摘要日志与 recall 共用的定位单位,分四类——
46
- * user(用户消息,user_message source.kind === 'user')、
47
- * sys(系统消息,user_message 中其余 source.kind 的部分,如宿主注入的上下文)、
39
+ * user(用户消息)、sys(系统消息,user_message 中非 user 来源的部分)、
48
40
  * assistant(模型输出文本)、toolcall(单个工具调用及其结果)。
49
- * index 从 0 起、按日志顺序递增、只追加不重排 → 会话内全局稳定
50
- * (压缩后旧摘要条目引用的 index 仍然有效);本插件自产的压缩日志消息不占位。
41
+ * index 从 0 起、按日志顺序递增、只追加不重排(会话内全局稳定);
42
+ * 本插件自产的压缩日志消息不占位。
51
43
  */
52
44
  export type CompleteMessage = {
53
45
  /** 完整消息序号(0 起,全局稳定)。 */
54
46
  index: number;
55
- /**
56
- * 类别:user=用户消息;sys=系统消息(压缩日志中以 <sys type="KIND" index="N"> 空块
57
- * 表示);assistant=模型输出文本;toolcall=单个工具调用及其结果。
58
- */
47
+ /** 类别:user=用户消息;sys=系统消息;assistant=模型输出文本;toolcall=工具调用及其结果。 */
59
48
  type: 'user' | 'sys' | 'assistant' | 'toolcall';
60
- /** 系统消息的 source.kind(仅 sys 类;如 agent-instructions / skill-catalog)。 */
49
+ /** 系统消息的 source.kind(仅 sys 类)。 */
61
50
  kind?: string;
62
51
  /** 关联的消息事件 seq(user/sys/assistant=1 个;toolcall=assistant 消息 + 结果)。 */
63
52
  seqs: number[];
64
- /** 工具调用 id(仅 toolcall 类;关联 tool/result 用)。 */
53
+ /** 工具调用 id(仅 toolcall 类)。 */
65
54
  callId?: string;
66
55
  };
67
56
  /**
68
- * 插件扩展的 compaction/summary 载荷:宿主类型 + shadowedCharCount(压缩前字符数)。
69
- * 宿主 append 不做 schema 剥离,扩展字段原样持久化;旧会话载荷可能缺失该字段,
70
- * 客户端读取时按可选处理。宿主类型是 union(rawOutput 分支),无法直接声明合并,
71
- * 故用交叉类型 + 读取处收窄。
57
+ * 插件扩展的 compaction/summary 载荷:宿主类型 + shadowedCharCount/attemptCount。
58
+ * 宿主 append 不做 schema 剥离,扩展字段原样持久化;旧会话载荷可能缺失,
59
+ * 客户端读取时按可选处理。宿主类型是 union,无法声明合并,故用交叉类型 + 读取处收窄。
72
60
  */
73
61
  export type CompactionSummaryPayload = SessionEventMap['compaction/summary'] & {
74
- /** 被压缩内容的字符数(压缩前文本长度合计;UI 标题统计用),旧载荷可能缺失。 */
62
+ /** 被压缩内容的字符数(压缩前文本长度合计;UI 标题统计用)。 */
75
63
  shadowedCharCount?: number;
76
- /** 摘要重试次数(0 起;观察分块为各块重试之和,反思为尝试次数 - 1),旧载荷可能缺失。 */
64
+ /** 摘要重试次数(观察分块为各块重试之和,反思为尝试次数 - 1)。 */
77
65
  attemptCount?: number;
78
66
  };
79
67
  /**
80
68
  * 插件扩展的 compaction/start 载荷:宿主类型 + phase(压缩 pass)。
81
- * 宿主 append 不做 schema 剥离,扩展字段原样持久化;客户端读取时按可选处理,
82
- * 缺失(旧版本会话)回落通用压缩中文案。
69
+ * 客户端读取时按可选处理,缺失回落通用压缩中文案。
83
70
  */
84
71
  export type CompactionStartPayload = SessionEventMap['compaction/start'] & {
85
72
  /** 压缩 pass(观察/反思;UI 压缩中提示行区分文案)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7E,gDAAgD;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;;GAGG;AACH,YAAY,EACV,KAAK,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,cAAc,GAAG,mBAAmB,GAAG,aAAa,CAAC;CAC5D,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,kCAAkC;IAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC7E,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG;IACzE,oCAAoC;IACpC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7F,4BAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,sCAAsC;AACtC,YAAY,EACV,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG;IACxB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,cAAc,GAAG,mBAAmB,GAAG,aAAa,CAAC;CAC5D,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,kCAAkC;IAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC7E,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG;IACzE,oCAAoC;IACpC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B,CAAC"}