dsh-plugin-om 0.0.28 → 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/types.d.ts CHANGED
@@ -75,7 +75,7 @@ export type CompleteMessage = {
75
75
  export type CompactionSummaryPayload = SessionEventMap['compaction/summary'] & {
76
76
  /** 被压缩内容的字符数(压缩前文本长度合计;UI 标题统计用)。 */
77
77
  shadowedCharCount?: number;
78
- /** 摘要重试次数(观察分块为各块重试之和,反思为尝试次数 - 1)。 */
78
+ /** 压缩循环的模型请求轮数(旧会话载荷为重试次数,读取时按可选处理)。 */
79
79
  attemptCount?: number;
80
80
  };
81
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-om",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "type": "module",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",
@@ -1,125 +0,0 @@
1
- /**
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
- * 结果或报错始终写入日志(成功 info / 失败 warn,失败原因说明具体问题而非解析器
10
- * 原始报错);全部耗尽返回失败结果(携带最后一次尝试的实际报错)。最终失败
11
- * (含 signal 中止)时把每次尝试的完整提示词与模型原始输出经 compaction-log.ts
12
- * 原样落盘为诊断子会话,sessionId 随失败结果向上传播进主会话日志。每次请求前
13
- * 过全局限流等待门;token usage 归入主会话记录。
14
- */
15
- import type { Agent, Context, Session, TokenUsage } from './types.ts';
16
- import { type RoutedTarget } from './utils.ts';
17
- /**
18
- * 共享压缩提示词(观察/反思同一套):定义 history 块(模型消息 + index 的表达形式)、
19
- * 完整消息定义、压缩要求、输出格式与数据源说明。
20
- * skipReasoning=true(默认,与 compressSkipReasoning 默认一致)时压缩输入不含
21
- * <reasoning> 参考条目,提示词相应省略 <reasoning> 的说明两行。
22
- */
23
- export declare function buildHistoryPrompt(skipReasoning?: boolean): string;
24
- /**
25
- * 渲染完整消息记录(观察输入):输出一个合法的 <history> 块——
26
- * user → <user_message>(文本原样、图片注释)、sys → <sys> 空块、
27
- * assistant/toolcall → <assistant>(原样文本);skipReasoning=false 时另把
28
- * assistant 的 reasoning → <reasoning>(参考条目)。
29
- * 文本经 XML 序列化自动转义;仅渲染 seqs 全部落在给定集合内的完整消息。
30
- */
31
- export declare function renderMessages(session: Session, seqs: readonly number[], skipReasoning?: boolean): string;
32
- /** 摘要调用成功结果:文本 + 可选 token usage + 尝试次数 + 诊断子会话 id。 */
33
- export type SummarySuccess = {
34
- ok: true;
35
- text: string;
36
- usage?: TokenUsage;
37
- /** 成功时的尝试次数(1 起;载荷层换算为重试次数 = 该值 - 1)。 */
38
- attemptCount: number;
39
- /** 本次成功尝试落盘的诊断子会话 id(落盘失败时缺失)。 */
40
- diagnosticSessionId?: string;
41
- };
42
- /** 摘要调用失败结果:最后一次尝试的实际报错/具体问题 + 是否因 signal 中止 + 诊断子会话 id。 */
43
- export type SummaryFailure = {
44
- ok: false;
45
- /** 最后一次尝试的实际报错(异常消息)或未通过校验的具体问题说明。 */
46
- error: string;
47
- /** 因 signal 中止(含限流等待被中止)而放弃;此时 error 为 COMPACTION_ABORTED_ERROR。 */
48
- aborted: boolean;
49
- /** 最后一次尝试落盘的诊断子会话 id(每次尝试各自落盘;该次未发出请求或落盘失败时缺失)。 */
50
- diagnosticSessionId?: string;
51
- };
52
- /** 摘要调用结果(成功/失败二选一)。 */
53
- export type SummaryOutcome = SummarySuccess | SummaryFailure;
54
- /** 日志最小有效长度:<history> 中间内容小于该长度视为不合法。 */
55
- export declare const MIN_HISTORY_LENGTH = 10;
56
- /** 产出日志后插入首个 <history> 后的格式说明(XML 注释,完整消息定义 + 条目标签语义)。 */
57
- export declare const HISTORY_FORMAT_NOTE = "<!-- \u5B8C\u6574\u6D88\u606F\uFF1A`\u5B8C\u6574\u6D88\u606F`\u6307\u4E00\u6761`\u7528\u6237\u6D88\u606F`\u3001`\u7CFB\u7EDF\u6D88\u606F`\u3001`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u6216`\u5177\u6709result\u7684toolcall`\uFF1B\u9996\u6761 index \u4E3A 0\uFF0C\u6309\u4F1A\u8BDD\u987A\u5E8F\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 -->";
58
- /**
59
- * 剥离 <history> 块内文块首的格式说明注释(HISTORY_FORMAT_NOTE 整体精确匹配,仅块首
60
- * 一处);正文条目内出现的同名注释串不动。非块首或不匹配时原样返回。
61
- */
62
- export declare function stripLeadingFormatNote(inner: string): string;
63
- /** history 块内条目(单条 index 或模块 start/end)。 */
64
- export type HistoryEntryRange = {
65
- kind: 'user' | 'assistant' | 'sys';
66
- index?: number;
67
- start?: number;
68
- end?: number;
69
- };
70
- /**
71
- * 解析文本中全部 <history> 块内的条目(逐块解析提取,兼容多块拼接文本)。
72
- * 非法块跳过;仅提取不校验顺序(连续性由 historyContinuity 校验)。
73
- */
74
- export declare function parseHistoryEntries(text: string): HistoryEntryRange[];
75
- /**
76
- * 校验条目 index/start/end 连续性:每条给出覆盖区间,按出现顺序相邻条目必须首尾相接,
77
- * 返回整体覆盖区间;空条目 / 非法范围 / 跳号、重叠或乱序 → 返回 null。
78
- */
79
- export declare function historyContinuity(entries: HistoryEntryRange[]): {
80
- start: number;
81
- end: number;
82
- } | null;
83
- /** 校验期望覆盖区间(外部传入;仅校验提供的字段,缺省字段跳过)。 */
84
- export type SummaryValidationRange = {
85
- start?: number;
86
- end?: number;
87
- };
88
- /**
89
- * 从 AI 摘要输出中提取合法日志(不信任 AI 的总结结果):
90
- * 取首个 <history> 开标签(允许带属性)到最后一个 </history> 切为候选块,
91
- * 找不到或内容过短返回具体原因;候选块经 XML 结构校验,整块非法时按条目模糊
92
- * 提取重建为合法块(不要求模型输出整体合法 XML);随后统一校验:无 reasoning、
93
- * index 连续且与 expected 覆盖区间一致;通过后统一改写为带 tip 属性的开标签
94
- * 并在块顶插入格式说明注释。所有失败原因均为说明性描述,不携带解析器原始报错。
95
- */
96
- export declare function extractSummaryDetailed(raw: string, expected?: SummaryValidationRange): {
97
- log: string;
98
- } | {
99
- error: string;
100
- };
101
- /**
102
- * extractSummaryDetailed 的简便形式:提取成功返回合法日志块,失败返回 null
103
- * (具体失败原因经 extractSummaryDetailed 获取)。
104
- */
105
- export declare function extractSummaryLog(raw: string, expected?: SummaryValidationRange): string | null;
106
- /** 摘要调用总尝试次数兜底(无 options.maxAttempts 时;实际由 config.compressRetryCount + 1 传入)。 */
107
- export declare const SUMMARY_DEFAULT_MAX_ATTEMPTS = 11;
108
- /**
109
- * 直连 LLM 执行一次摘要(观察或反思),返回文本与可选 token usage。
110
- * 每次实际发出的 LLM 调用(无论成功、校验不通过、非 stop 结束还是异常)完成后,
111
- * 立即把该次尝试的完整提示词与模型原始输出原样落盘为诊断子会话(phase 标注观察
112
- * 或反思),子会话 id 写入该次尝试的主会话日志;请求发出前被中止的尝试(无实际
113
- * 调用)不落盘。失败(抛异常 / 空输出 / 非 stop 结束 / 校验不通过)记录日志并重试;
114
- * 全部尝试耗尽返回失败结果(携带最后一次尝试的实际报错/具体问题与其诊断子会话 id)。
115
- * signal 中止(含限流等待被中止)立即放弃并标记 aborted。每次请求发出前先过全局
116
- * 限流等待门。
117
- */
118
- export declare function runSummarySubagent(ctx: Context, agent: Agent, instruction: string, contextText: string | undefined, maxTokens: number | undefined, target: RoutedTarget, debug: boolean, signal?: AbortSignal, options?: {
119
- maxAttempts?: number;
120
- expected?: SummaryValidationRange;
121
- rateLimitWaitMs?: number;
122
- /** 压缩 pass(诊断子会话 label 标注观察/反思;未提供时 label 回落「压缩」)。 */
123
- phase?: 'observe' | 'reflect';
124
- }): Promise<SummaryOutcome>;
125
- //# sourceMappingURL=summarize.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"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"}