@eddyskywalker/dsh-chatgpt-subscription 0.47.0 → 0.48.0

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.
@@ -0,0 +1,353 @@
1
+ /**
2
+ * 「计划模式」服务 —— ctx.planMode 的 **fork**(本包在 dispatch preset 里替换
3
+ * harness 官方的 @deepseek-ai/dsh-plan-mode)。
4
+ *
5
+ * ## 为什么必须 fork
6
+ *
7
+ * 官方实现在**进入**与**离开**计划模式的那一步同时改两样东西,而这两样都是请求
8
+ * 前缀的一部分,于是每进一次计划模式就烧掉一整次前缀缓存重建:
9
+ *
10
+ * 1. 动态 plan:policy 段:systemPrompt.section(...) 的文本在 section 与 '' 之间翻转
11
+ * —— system 段在请求最前面,改一个字就是全前缀作废;
12
+ * 2. exit_plan_mode 用 { when } 逐步准入 —— 工具表一变,native tools 与 PTC
13
+ * tools:sdk 两边同时重建。
14
+ *
15
+ * Kimi 线路按内容前缀命中,这两次重建是**计划模式必经**的固定税。这个 fork 把税
16
+ * 取消掉,靠的是同一个观察:**末尾追加不破坏前缀**。
17
+ *
18
+ * ## 三个决定(每一个都对应上面一处重建)
19
+ *
20
+ * 1. **不注册任何动态 system 段。** system 段在整个会话里逐字节恒定。
21
+ * 2. **exit_plan_mode 无条件注册。** 没有 { when },它从会话第一步就在工具表里,
22
+ * 进出计划模式都不改工具表;「只在计划模式可用」由 execute 里的 loggedActive
23
+ * 判定执行(报错文案与官方一致)。代价是每一步多带一个工具声明,收益是
24
+ * native / PTC 两侧零重建。
25
+ * 3. **部署方的 section 走尾部用户消息**(agent/pre-step 的 decision.messages,
26
+ * 无回合时走 agent.inject),一次进入只投一次。手册性指引留在 enter_plan_mode
27
+ * 的工具返回里(见 entry-plan-mode-pipeline.ts)。
28
+ *
29
+ * ## 与官方实现的其余差别一律是「代次协商」,不是功能裁剪
30
+ *
31
+ * - plan 投影的 stateVersion 在 0.2.1-rc.5 及更早是 3(无 entered),0.2.2-alpha
32
+ * 起是 4(含 entered)。sessionProjections.register 对同一个 key 的版本不一致是
33
+ * **硬失败**,而同一个宿主里另一个 preset 可能已经注册过它,所以这里先按 4 注册,
34
+ * 失败时读错误里的 already registered at stateVersion N 用那个版本重试一次。
35
+ * - register() 在旧代是同步的、状态要经 ctx.sessionProjections.stateOf() 读;新代
36
+ * 返回可 await 的 ProjectionHandle。两种形状都在下面接住。
37
+ * - 没有 sessionProjections(老代宿主)时退回进程内 WeakMap:计划模式照常可用,
38
+ * 只是不随会话日志持久化。
39
+ *
40
+ * ## 不能 import 的东西
41
+ *
42
+ * @deepseek-ai/dsh-plan-mode / dsh-agent / dsh-session / dsh-commands /
43
+ * dsh-user-questions / dsh-session-projection 都不在本包 peerDependencies 里,所以
44
+ * 顶层**不 import 它们**,只按结构探测:ctx.get('sessionProjections')、
45
+ * ctx.get('userQuestions')、ctx.get('tools')、ctx.get('agents')、ctx.get('commands')。
46
+ *
47
+ * @module @eddyskywalker/dsh-chatgpt-subscription/plan-mode
48
+ */
49
+ import { Service } from '@deepseek-ai/cordis';
50
+ import type { Context } from '@deepseek-ai/cordis';
51
+ /** 组件行名;preset 里的行 id 与模块说明符另由 preset 文件决定。 */
52
+ export declare const name = "dsh-chatgpt-subscription-plan-mode";
53
+ /** 模型侧审批出口的工具名。冻结契约的一部分,不要改动。 */
54
+ export declare const EXIT_PLAN_MODE = "exit_plan_mode";
55
+ /** 官方实现用来承载计划指引的 prompt 段名(这个 fork 刻意**不注册**它)。 */
56
+ export declare const PLAN_POLICY_SECTION = "plan:policy";
57
+ /** plan 投影的 key。跨 preset 共享,不能改名。 */
58
+ export declare const PLAN_PROJECTION_KEY = "plan";
59
+ /** 会话日志里记录计划模式开关的事件类型(与官方同名,投影可互换折叠)。 */
60
+ export declare const PLAN_MODE_EVENT = "plan/mode";
61
+ /** 最新一代的投影状态版本(0.2.2-alpha 起:含 entered)。 */
62
+ export declare const PLAN_STATE_VERSION = 4;
63
+ /** 旧一代(≤0.2.1-rc.5)的投影状态版本:没有 entered。 */
64
+ export declare const LEGACY_PLAN_STATE_VERSION = 3;
65
+ /** 审批问题在答案里的 id。 */
66
+ export declare const REVIEW_ID = "plan-review";
67
+ /** 审批问题「批准」选项的文案。 */
68
+ export declare const APPROVE_LABEL = "Approve";
69
+ /** 审批问题「继续规划」选项的文案。 */
70
+ export declare const KEEP_PLANNING_LABEL = "Keep planning";
71
+ /** 尾部通知消息的来源 kind(本包自有,见下方 MessageSourceMap 增补)。 */
72
+ export declare const PLAN_NOTICE_SOURCE_KIND = "plan-mode-notice";
73
+ declare module '@deepseek-ai/dsh-llm' {
74
+ interface MessageSourceMap {
75
+ /** 本 fork 在 agent/pre-step 末尾追加的计划模式提示(不是新的用户回合)。 */
76
+ 'plan-mode-notice': {
77
+ kind: 'plan-mode-notice';
78
+ } & {
79
+ form?: 'notice';
80
+ summary?: string;
81
+ };
82
+ }
83
+ }
84
+ /** 部署方配置:一段计划模式指引。字段集与官方完全一致。 */
85
+ export interface PlanModeConfig {
86
+ /** 计划模式生效时交给模型的指引正文(这个 fork 走尾部消息,不进 system 段)。 */
87
+ section: string;
88
+ }
89
+ /**
90
+ * 校验部署方配置。缺失、空白、类型不符与未知字段都在**挂载时**失败,而不是被忽略。
91
+ * @param config - 原始插件配置。
92
+ * @returns 一份脱离入参的校验后配置。
93
+ * @throws {Error} 判定与文案与官方一致,便于既有部署配置与测试直接迁移。
94
+ */
95
+ export declare function resolveConfig(config: PlanModeConfig): PlanModeConfig;
96
+ /** plan 投影的宿主状态。字段与官方 0.2.2-alpha 起一致(entered 见 stateVersion)。 */
97
+ export interface PlanUnitState {
98
+ /** 已记录的计划模式开关。 */
99
+ active: boolean;
100
+ /** 尚未落到日志的选择目标;没有未决选择时是 null。 */
101
+ wanted: boolean | null;
102
+ /** 最近一次 /plan 命令等待配对结算的记录。 */
103
+ running: {
104
+ commandId: string;
105
+ wanted: boolean;
106
+ } | null;
107
+ /** 最近一次 request/header 时的 active 值;尚未发过请求时是 null。 */
108
+ activeAtLastHeader: boolean | null;
109
+ /** 本会话是否曾经进入过计划模式。 */
110
+ entered: boolean;
111
+ }
112
+ /** plan 投影的线上视图(客户端只读这两个字段)。 */
113
+ export interface PlanProjectionView {
114
+ /** 正生效的计划模式。 */
115
+ active: boolean;
116
+ /** 有一个尚未生效的选择。 */
117
+ pending: boolean;
118
+ }
119
+ /** 投影折叠时读到的事件形状(不绑定 @deepseek-ai/dsh-session 的类型)。 */
120
+ export interface PlanEventLike {
121
+ /** 事件类型。 */
122
+ readonly type: string;
123
+ /** 事件数据。 */
124
+ readonly data?: unknown;
125
+ }
126
+ /** 一个投影定义(结构化类型,不 import @deepseek-ai/dsh-session-projection)。 */
127
+ export interface PlanProjectionDefinition {
128
+ /** 投影 key。 */
129
+ key: string;
130
+ /** 持久化缓存的失效版本。 */
131
+ stateVersion: number;
132
+ /** 状态校验 schema(必须同时接受 v3 与 v4 的已存行)。 */
133
+ stateSchema: {
134
+ parse(value: unknown): PlanUnitState;
135
+ };
136
+ /** 空日志的初始状态。 */
137
+ init(): PlanUnitState;
138
+ /** 纯折叠:一条已提交事件 -> 新状态(无关事件原样返回同一个引用)。 */
139
+ apply(state: PlanUnitState, event: PlanEventLike): PlanUnitState;
140
+ /** 客户端视图。 */
141
+ wire: {
142
+ /** 视图校验 schema。 */
143
+ viewSchema: {
144
+ parse(value: unknown): PlanProjectionView;
145
+ };
146
+ /** 状态 -> 视图。 */
147
+ view(state: PlanUnitState): PlanProjectionView;
148
+ };
149
+ }
150
+ /**
151
+ * 造一份 plan 投影定义。
152
+ *
153
+ * 折叠逻辑与官方逐句等价:/plan 命令的生命周期(command/run -> command/done)、
154
+ * plan/mode 整值记录、request/header 记下「上一次告诉模型的模式」。等价是硬要求:
155
+ * 同一个宿主里另一份定义可能已经按别的 stateVersion 注册了同一个 key,两边折叠出的
156
+ * 状态必须是同一个东西,共享才安全。
157
+ * @param stateVersion - 投影状态版本,默认最新一代(4)。冲突时用冲突方的版本重试。
158
+ * @returns 投影定义。
159
+ */
160
+ export declare function createPlanProjectionDefinition(stateVersion?: number): PlanProjectionDefinition;
161
+ /** 最新一代(stateVersion 4)的 plan 投影定义。 */
162
+ export declare const planProjectionDefinition: PlanProjectionDefinition;
163
+ /** agent 里本模块会读的部分。 */
164
+ interface AgentLike {
165
+ /** 会话记录。 */
166
+ readonly session?: unknown;
167
+ /** 把一个尾部消息塞进本会话(无回合时用)。 */
168
+ inject?(message: unknown): void;
169
+ /** 把一条用户消息推进回合(/plan 带正文时用)。 */
170
+ steer?(message: unknown): void;
171
+ }
172
+ /** 一次切换的四个动作(冻结契约的一部分)。 */
173
+ export type PlanTransition = 'committed' | 'queued' | 'cancelled' | 'noop';
174
+ /** 一次切换的可选参数。 */
175
+ export interface PlanSetOptions {
176
+ /**
177
+ * 是否补一条尾部通知。省略即 true(/plan 命令、用户点击都要那句说明);
178
+ * false 只给「工具结果已经把话说完了」的调用方用。
179
+ */
180
+ narrate?: boolean;
181
+ }
182
+ /**
183
+ * ctx.planMode 的实现。
184
+ *
185
+ * 一个会话一份(agent plane),所以内部所有状态都按会话/agent 分桶:待投递选择按
186
+ * 会话 WeakMap,投影句柄一份(投影本身按会话折叠),内存兜底状态按会话 WeakMap。
187
+ */
188
+ export declare class PlanModeController extends Service {
189
+ /**
190
+ * 依赖:tools 注册审批出口,sessionProjections 折叠状态,agents 读回合边界。
191
+ *
192
+ * **故意不含 systemPrompt** —— 这个 fork 一个 prompt 段都不注册,system 段在
193
+ * 整个会话里逐字节恒定,进出计划模式都不重建前缀缓存。
194
+ */
195
+ static inject: string[];
196
+ /** 校验后的部署指引,只经尾部消息投递。 */
197
+ private readonly section;
198
+ /** plan 投影的读面;没有投影服务时 undefined。 */
199
+ private planProjectionHandle;
200
+ /** 尚未落到日志的选择,按会话。 */
201
+ private readonly pendingIntents;
202
+ /** 没有投影服务时的内存状态兜底(计划模式照常可用,只是不持久化)。 */
203
+ private readonly memoryStates;
204
+ /** 服务在自己脚下被卸载:此时批过的计划不能再被追加,必须让模型重新呈交。 */
205
+ private disposed;
206
+ /**
207
+ * @param ctx - 宿主上下文。
208
+ * @param config - 部署配置(默认空 section,会在挂载时被 resolveConfig 拒绝)。
209
+ */
210
+ constructor(ctx: Context, config?: PlanModeConfig);
211
+ /**
212
+ * 挂载主体:注册投影、订阅 pre-step、注册审批出口与 /plan 命令。
213
+ *
214
+ * 顺序有讲究:投影先就位,pre-step 与 exit_plan_mode 才能读到状态。
215
+ * @returns 挂载完成(投影注册可能是异步的)。
216
+ */
217
+ protected [Service.init](): Promise<void>;
218
+ /**
219
+ * 注册 plan 投影,并在版本冲突时按冲突方的 stateVersion 重试一次。
220
+ *
221
+ * 冲突本身是「同一个宿主里另一个 preset 已经注册了 plan」:那不是错误,而是
222
+ * 共享同一个折叠单元的前提。所以只读错误里的版本号,不按 harness 版本猜。
223
+ * @returns 投影读面;这一代没有投影注册面时 undefined。
224
+ */
225
+ private acquirePlanProjection;
226
+ /**
227
+ * 已记录的计划状态。
228
+ * @param session - 会话。
229
+ * @returns 状态;读不到时是空状态(绝不抛错 —— 一个读失败不该打断整步)。
230
+ */
231
+ private planState;
232
+ /**
233
+ * 已记录的计划模式开关。
234
+ * @param session - 会话。
235
+ * @returns 是否在计划模式。
236
+ */
237
+ loggedActive(session: unknown): boolean;
238
+ /**
239
+ * 本步会呈现给模型的状态:未决选择优先,否则是已记录状态。
240
+ * @param session - 会话。
241
+ * @returns 是否生效。
242
+ */
243
+ selectedActive(session: unknown): boolean;
244
+ /**
245
+ * 上一次告诉模型的模式;还没发过请求时 undefined。
246
+ * @param session - 会话。
247
+ * @returns true / false / undefined。
248
+ */
249
+ loggedActiveAtLastHeader(session: unknown): boolean | undefined;
250
+ /**
251
+ * 会话是否处在打开的回合里(决定「立刻落日志」还是「等下一个被接受的 pre-step」)。
252
+ *
253
+ * 三级降级,与官方等价:agents.turnBoundaryOf(新代)> 投影里的 turnBoundary
254
+ * 状态(旧代)> 判定为没有打开回合(无从判定时按回合结束处理,与官方的
255
+ * 「回合之外立刻提交」一致)。
256
+ * @param session - 会话。
257
+ * @returns 是否有打开回合。
258
+ */
259
+ hasOpenTurn(session: unknown): boolean;
260
+ /**
261
+ * 读当前计划模式(已记录 + 未决选择),供调用方展示。
262
+ * @param agent - 要读的 agent。
263
+ * @returns 已记录状态,以及在果有未决选择时的目标。
264
+ */
265
+ get(agent: AgentLike): {
266
+ active: boolean;
267
+ pending?: boolean;
268
+ };
269
+ /**
270
+ * 选择计划模式是否生效。
271
+ *
272
+ * 回合之外立刻落日志并补一句说明;回合之内留作未决选择,等下一个被接受的
273
+ * pre-step(那时才写日志、才补说明)。重复选择当前值或已未决的同值是 no-op。
274
+ * @param agent - 要切换的 agent。
275
+ * @param active - 目标状态。
276
+ * @param options - 可选:narrate=false 表示调用方的工具结果已经把话说完了。
277
+ * @returns 发生了什么。
278
+ */
279
+ set(agent: AgentLike, active: boolean, options?: PlanSetOptions): PlanTransition;
280
+ /**
281
+ * 把一个未决选择落进日志。
282
+ * @param session - 会话。
283
+ */
284
+ private onBoundary;
285
+ /**
286
+ * 追加一条 plan/mode 事件,并同步内存兜底状态。
287
+ *
288
+ * 只在 append 成功后更新内存:写失败要留下可重试的选择,而不是一个假状态。
289
+ * @param session - 会话。
290
+ * @param active - 目标状态。
291
+ */
292
+ private appendMode;
293
+ /**
294
+ * 把一条尾部消息塞进当前会话。
295
+ * @param agent - 调用方 agent。
296
+ * @param message - 用户角色消息。
297
+ */
298
+ private injectMessage;
299
+ /**
300
+ * 造一条「用户切换了模式」的尾部通知。
301
+ *
302
+ * 与官方的差别只有一处:进入时的通知**携带部署指引**(section)。官方把指引放在
303
+ * 动态 system 段里,那正是前缀重建的来源;改成一次性尾部消息后,指引只付一次
304
+ * 输入费,而且之后每一步都还在历史里(末尾追加不破坏前缀)。
305
+ *
306
+ * 触发条件也放宽了一点:官方只在「上一次请求头告诉过模型另一种模式」时才讲;
307
+ * 这里在进入方向还接受 told === undefined(用户在第一发请求之前就 /plan)。
308
+ * @param session - 会话。
309
+ * @param target - 目标状态。
310
+ * @returns 通知消息;不需要讲时 undefined。
311
+ */
312
+ narration(session: unknown, target: boolean): unknown;
313
+ /**
314
+ * 订阅 agent/pre-step:先 await next(),只对已经落定的决策动手。
315
+ *
316
+ * 三件事:把未决选择落进日志;在需要时把通知**追加到消息末尾**(末尾追加不改变
317
+ * 已发前缀,这是这个 fork 的全部意义所在)。
318
+ */
319
+ private subscribePreStep;
320
+ /**
321
+ * 注册 exit_plan_mode —— **不带 { when }**。
322
+ *
323
+ * 这是与官方唯一的工具面差别,也是 tools / tools:sdk 两边零重建的全部原因:
324
+ * 条件准入会让工具表在进入那一步变大,PTC 的 run_code 绑定与 native 声明同时重发。
325
+ * 无条件注册后,「只在计划模式可用」由 execute 里的 loggedActive 判定执行,报错
326
+ * 文案与官方一致。
327
+ */
328
+ private registerExitTool;
329
+ /**
330
+ * 造 exit_plan_mode 的定义。
331
+ * @returns 工具定义。
332
+ */
333
+ private exitDefinition;
334
+ /**
335
+ * 注册 /plan 命令(手动进入/离开计划模式的入口)。
336
+ *
337
+ * 命令面板在部分宿主里不存在,所以这里用运行时注入:有 commands 才注册,
338
+ * 没有就安静跳过 —— 缺一个可选服务不该让计划模式整体挂不上。
339
+ */
340
+ private registerPlanCommand;
341
+ }
342
+ /**
343
+ * 造一条计划模式尾部通知。
344
+ *
345
+ * 用 createUserMessage 而不是手写消息字面量:DSH 对每条被接纳的消息都校验 id 与
346
+ * source,手写字面量会在第一次 steer 时同步抛错(见 SKILL 的陷阱清单)。
347
+ * @param text - 通知正文;指引会接在它后面。
348
+ * @param section - 计划模式指引正文,接在通知之后。
349
+ * @returns 用户角色消息。
350
+ */
351
+ export declare function createPlanNotice(text: string, section?: string, summary?: string): unknown;
352
+ export default PlanModeController;
353
+ //# sourceMappingURL=entry-plan-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-plan-mode.d.ts","sourceRoot":"","sources":["../../src/entry-plan-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * 「工具结果修剪器」的宿主入口 —— 本包自己的 loader 行(fork 版)。
3
+ *
4
+ * DSH 官方的 `@deepseek-ai/dsh-compaction-tool-result-pruner` 只按**字符预算**
5
+ * 修剪历史工具结果:超过 `thresholdChars` 的文本按码点保留头部与尾部、中间换成
6
+ * 固定标记,再以 `surfaceOp: replace` 追加一条新的 `tool/result`,并紧挨着写一条
7
+ * `compaction/prune` 计价事件。这套语义本身与 provider 无关,本文件逐字照搬,
8
+ * 因此行为可以与官方实现一一对照。
9
+ *
10
+ * 与官方实现的两点差别,也正是 "fork" 的全部理由:
11
+ *
12
+ * 1. **provider 感知的跳过**。缓存前缀型 provider(`kimi-code`)上,改写历史工具
13
+ * 结果会把 provider 侧的 content-prefix 缓存从被改写点一直作废到对话末尾:
14
+ * 实测 838k token 的会话里,一次修剪省下约 418k token 的上下文,却要按全价
15
+ * 重建约 414k token 的前缀,比摘要式压缩贵得多。所以对这类 provider 直接跳过,
16
+ * 一次都不改历史。
17
+ * 2. **不 import 任何 harness 的 compaction/session/token-meter 包**。本包的
18
+ * `peerDependencies` 里没有它们(也不该有:装不装它们不该由本包决定),
19
+ * 所以全部按**结构契约**描述:`SessionLike` / `SessionEventLike` /
20
+ * `ToolResultMessageLike` 都是本文件里的局部接口,`deepFreeze` 也是本地实现。
21
+ * 这样从 0.1.2-alpha.5 到 0.2.1-rc.3 的每一代 harness 都能解析这个模块。
22
+ *
23
+ * 与官方实现的一致性以测试锁定:`test/tool-result-pruner.test.ts` 覆盖配置校验、
24
+ * 代理对不劈开、非文本块不计价、以及 `compaction/prune` 与替换事件的先后顺序。
25
+ *
26
+ * @module @eddyskywalker/dsh-chatgpt-subscription/tool-result-pruner
27
+ */
28
+ import { Service } from '@deepseek-ai/cordis';
29
+ import type { Context } from '@deepseek-ai/cordis';
30
+ import type { ContentBlock } from '@deepseek-ai/dsh-llm';
31
+ import z from '@deepseek-ai/schemastery';
32
+ /** 替换被删除中间段的固定标记。与官方实现逐字一致。 */
33
+ export declare const PRUNE_MARKER = "\n\n[... tool result middle pruned ...]\n\n";
34
+ /** 编码代理工具输出的低摩擦默认值。与官方实现逐字一致。 */
35
+ export declare const DEFAULTS: ResolvedConfig;
36
+ /**
37
+ * 默认跳过的 provider。
38
+ *
39
+ * `kimi-code` 是缓存前缀型 provider:改写历史工具结果会让 provider 侧的前缀
40
+ * 缓存从改写点失效到对话末尾,重建成本高于修剪省下的输入。这个名单可以通过
41
+ * 配置 `skipProviders` 整体替换(传空数组即恢复"对所有 provider 都修剪")。
42
+ */
43
+ export declare const DEFAULT_SKIP_PROVIDERS: readonly string[];
44
+ /** 字符预算策略;额外带一个 provider 跳过名单。 */
45
+ export interface ToolResultPruneConfig {
46
+ /** 合并文本超过这么多 Unicode 码点时修剪。默认 8192。 */
47
+ thresholdChars?: number;
48
+ /** 保留的最大头部码点数。默认 4096。 */
49
+ headChars?: number;
50
+ /** 保留的最大尾部码点数。默认 1024。 */
51
+ tailChars?: number;
52
+ /**
53
+ * 命中即整场跳过修剪的 provider id 名单。默认 `['kimi-code']`。
54
+ *
55
+ * 与官方实现的三个数值配置项并列接受,因此把官方配置原样搬过来不会因为
56
+ * "未知键" 报错。
57
+ */
58
+ skipProviders?: readonly string[];
59
+ }
60
+ /** 校验后、已脱离原对象且深冻结的修剪配置。 */
61
+ export interface ResolvedConfig {
62
+ /** 修剪阈值(Unicode 码点数)。 */
63
+ readonly thresholdChars: number;
64
+ /** 头部保留码点数。 */
65
+ readonly headChars: number;
66
+ /** 尾部保留码点数。 */
67
+ readonly tailChars: number;
68
+ }
69
+ /** 一条已落地的替换:被遮蔽的原事件与它的大小账。 */
70
+ export interface PrunedEntry {
71
+ /** 被替换事件遮蔽的完整保真工具结果事件。 */
72
+ readonly originalSeq: number;
73
+ /** 新追加的已修剪工具结果事件。 */
74
+ readonly replacementSeq: number;
75
+ /** 原事件与替换事件共享的工具调用 id(运行期是字符串)。 */
76
+ readonly callId: string;
77
+ /** 原文本大小(Unicode 码点数)。 */
78
+ readonly charsBefore: number;
79
+ /** 替换文本大小(Unicode 码点数)。 */
80
+ readonly charsAfter: number;
81
+ }
82
+ /** 一次稳定表层修剪的汇总结果。 */
83
+ export interface PruneResult {
84
+ /** 按表层快照顺序排列的替换。 */
85
+ readonly pruned: readonly PrunedEntry[];
86
+ /** 所有替换合计省下的 Unicode 码点数。 */
87
+ readonly charsRemoved: number;
88
+ }
89
+ /**
90
+ * 服务名契约。
91
+ *
92
+ * 宿主级守卫要按名字在 `ctx.reflect.store` 与 `agent.ctx.get()` 里找实例,
93
+ * 所以这个名字必须导出一份,不能在两处各写一个字符串字面量。
94
+ */
95
+ export declare const PRUNER_SERVICE_NAME = "toolResultPruner";
96
+ /** 与 `@deepseek-ai/dsh-llm` 的 `ToolResultMessage` 结构对齐的局部形状。 */
97
+ export interface ToolResultMessageLike {
98
+ /** 工具结果内容块。 */
99
+ readonly content?: readonly ContentBlock[];
100
+ /** 消息来源;工具结果带 `callId`。 */
101
+ readonly source?: {
102
+ readonly callId?: unknown;
103
+ };
104
+ /** 其余字段原样保留(meta、isError、未来新增字段等)。 */
105
+ readonly [key: string]: unknown;
106
+ }
107
+ /** 一条会话事件的结构形状(只用到 `type` / `data`)。 */
108
+ export interface SessionEventLike {
109
+ /** 事件类型标签。 */
110
+ readonly type?: string;
111
+ /** 事件在日志里的序号。 */
112
+ readonly seq?: number;
113
+ /** 事件负载;`tool/result` 带 `message`。 */
114
+ readonly data?: unknown;
115
+ }
116
+ /** 会话表层:被当前请求实际引用的节点序号。 */
117
+ export interface SessionSurfaceLike {
118
+ /** 当前表层节点序号(有序)。 */
119
+ readonly nodes?: readonly number[];
120
+ }
121
+ /**
122
+ * 会话的最小结构契约。
123
+ *
124
+ * 刻意保留 `eventAt` / `deriveEventMessage` / `append` 的**宽松签名**:
125
+ * 各代 harness 的 `Session` 实现签名不同(品牌化的 `SessionSeq`、不同的负载
126
+ * 联合类型),把它们写成硬约束会让真会话反而"不满足"这个接口。
127
+ */
128
+ export interface SessionLike {
129
+ /** 当前表层。 */
130
+ readonly surface?: SessionSurfaceLike;
131
+ /** 按序号取事件。 */
132
+ eventAt(seq: number): SessionEventLike | undefined;
133
+ /** 把事件还原成一条消息。 */
134
+ deriveEventMessage(event: SessionEventLike): unknown;
135
+ /** 追加一条事件并返回它的落点。 */
136
+ append(type: string, data: unknown, options?: unknown): {
137
+ readonly seq: number;
138
+ };
139
+ }
140
+ /**
141
+ * 按 Unicode 码点计数,不劈开代理对。
142
+ *
143
+ * @param text - 待测量的文本。
144
+ * @returns 码点数。
145
+ */
146
+ export declare function codePointLength(text: string): number;
147
+ /**
148
+ * 校验并解析字符预算。
149
+ *
150
+ * 校验规则与官方实现逐字对齐:未知键报错、`thresholdChars` 必须为正整数、
151
+ * 头尾必须为非负整数、且 `headChars + marker + tailChars` 不得超过阈值。
152
+ *
153
+ * @param config - 原始配置。
154
+ * @returns 已脱离原对象且深冻结的配置。
155
+ */
156
+ export declare function resolveConfig(config?: ToolResultPruneConfig): ResolvedConfig;
157
+ /**
158
+ * 把跳过名单解析成一个只读集合。
159
+ *
160
+ * @param skipProviders - 配置里的名单;省略时用 {@link DEFAULT_SKIP_PROVIDERS}。
161
+ * @returns 只读集合(每次调用都是新的实例)。
162
+ */
163
+ export declare function resolveSkipProviders(skipProviders?: readonly string[]): ReadonlySet<string>;
164
+ /**
165
+ * 读会话的 provider id。
166
+ *
167
+ * 先读 `requestHeader().config.provider`(新代的权威来源),读不到再退回扁平
168
+ * 的 `session.provider`(跨代兼容形状)。任何一步抛错都只是"读不到",不影响
169
+ * 修剪本身。
170
+ *
171
+ * @param session - 任意会话对象。
172
+ * @returns provider id,读不到时为 `undefined`。
173
+ */
174
+ export declare function readSessionProvider(session: unknown): string | undefined;
175
+ /**
176
+ * 判断这一场会话是否应当整场跳过修剪。
177
+ *
178
+ * 判定只依赖会话本身,不读事件、不写日志:命中时 {@link ToolResultPruner.pruneSession}
179
+ * 会在任何读写之前直接返回空结果。
180
+ *
181
+ * @param session - 任意会话对象。
182
+ * @param skipProviders - 跳过名单;省略时用默认的 `['kimi-code']`。
183
+ * @returns 命中名单时为 `true`。
184
+ */
185
+ export declare function shouldSkipPruningForSession(session: unknown, skipProviders?: ReadonlySet<string>): boolean;
186
+ /**
187
+ * 确定性的、免模型的工具结果修剪服务(provider 感知版)。
188
+ *
189
+ * 与官方实现的差别只在两处:`pruneSession` 先按 provider 判定是否整场跳过,
190
+ * 且 token 计价走结构探测(`ctx.tokenMeter` 缺失时按 0 计),因此这一行在没有
191
+ * token-meter 的宿主上也能工作。
192
+ */
193
+ export declare class ToolResultPruner extends Service {
194
+ /**
195
+ * 每个被遮蔽节点都要计价,所以修剪确实需要计价能力。
196
+ *
197
+ * 声明成注入依赖是为了拿到 harness 提供的 meter;实现里仍按结构探测读取,
198
+ * 这样直接 `new` 出来的实例(测试、宿主自建)不会因为缺服务而炸掉。
199
+ */
200
+ static inject: string[];
201
+ /** loader 侧的配置 schema:与官方实现同样的三个数值项。 */
202
+ static Config: z<ToolResultPruneConfig>;
203
+ /** 解析后不可变的字符预算。 */
204
+ readonly config: ResolvedConfig;
205
+ /** 命中即整场跳过的 provider 集合。 */
206
+ readonly skipProviders: ReadonlySet<string>;
207
+ /**
208
+ * @param ctx - 宿主上下文(服务自注册为 `toolResultPruner`)。
209
+ * @param config - 原始配置。
210
+ */
211
+ constructor(ctx: Context, config?: ToolResultPruneConfig);
212
+ /**
213
+ * 只统计文本块的码点数;非文本块不计价。
214
+ *
215
+ * @param blocks - 待测量的工具结果内容。
216
+ * @returns 所有 text 块的码点数合计。
217
+ */
218
+ measureContent(blocks: readonly ContentBlock[]): number;
219
+ /**
220
+ * 把超预算的文本中间段换成标记,同时保留富内容块的顺序。
221
+ *
222
+ * 切片按 Unicode 码点而不是 UTF-16 码元,因此保留边界不会劈开代理对;
223
+ * 字素簇仍可能被切开(与官方实现一致)。
224
+ *
225
+ * @param blocks - 原始工具结果内容。
226
+ * @returns 已修剪的内容;文本在预算内时为 `null`。
227
+ */
228
+ pruneContent(blocks: readonly ContentBlock[]): ContentBlock[] | null;
229
+ /**
230
+ * 从当前稳定表层快照修剪所有超预算的工具结果。
231
+ *
232
+ * **provider 判定在最前面**:命中跳过名单时直接返回空结果,既不读事件也不
233
+ * 追加事件,所以缓存前缀型 provider 的会话日志一次都不会被动过。
234
+ *
235
+ * 每条替换原样保留除 `content` 之外的全部事件数据,引用被遮蔽的节点让回放
236
+ * 能还原替换输入,并在它之前紧挨着写一条 `compaction/prune` 计价事件,让纯
237
+ * 消费者不需要按节点保存状态就能减掉被遮蔽节点的启发式价格。
238
+ *
239
+ * @param session - 表层会被改写的会话。
240
+ * @returns 已落地的替换与合计省下的码点数。
241
+ */
242
+ pruneSession(session: SessionLike): PruneResult;
243
+ /**
244
+ * 用宿主注入的 token meter 估计一条消息的价格。
245
+ *
246
+ * 按结构探测而不是按注入硬取:token-meter 在部分宿主上不存在,而修剪必须在
247
+ * 那种宿主上照常工作;读不到就按 0 计。
248
+ *
249
+ * @param message - 被遮蔽的消息。
250
+ * @returns 估计的 token 数;不可用时为 0。
251
+ */
252
+ private estimateMessageTokens;
253
+ }
254
+ export default ToolResultPruner;
255
+ //# sourceMappingURL=entry-tool-result-pruner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-tool-result-pruner.d.ts","sourceRoot":"","sources":["../../src/entry-tool-result-pruner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../../src/host/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,kCAAkC,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uCAAuC,CAAA;AAE7E,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA;CACxC;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;CACvC;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC5E,yBAAyB;IACzB,MAAM,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;AAE9D,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,gBA6T7B,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAoC,GAAG,gBAAgB,CAkBtG;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,iBAAoC,GAC7C,aAAa,CAuBf"}
1
+ {"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../../src/host/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,kCAAkC,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uCAAuC,CAAA;AAE7E,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA;CACxC;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;CACvC;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC5E,yBAAyB;IACzB,MAAM,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;AAE9D,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,gBA8V7B,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAoC,GAAG,gBAAgB,CAkBtG;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,iBAAoC,GAC7C,aAAa,CAuBf"}