@eddyskywalker/dsh-chatgpt-subscription 0.46.1 → 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.
- package/CHANGELOG.md +63 -0
- package/README.md +22 -1
- package/lib/client.js +2639 -571
- package/lib/client.js.map +1 -1
- package/lib/index.js +15598 -5902
- package/lib/plan-mode-pipeline.js +419 -0
- package/lib/plan-mode.js +783 -0
- package/lib/tool-result-pruner.js +400 -0
- package/lib/types/client/hub/brand-icons.d.ts +1 -1
- package/lib/types/client/hub/brand-icons.d.ts.map +1 -1
- package/lib/types/client/hub/brand-svg.d.ts +4 -0
- package/lib/types/client/hub/brand-svg.d.ts.map +1 -1
- package/lib/types/client/hub/providers.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +2 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales-ru/index.d.ts.map +1 -1
- package/lib/types/client/locales-ru/progress-updates.d.ts.map +1 -1
- package/lib/types/client/locales-ru/workbuddy.d.ts +10 -0
- package/lib/types/client/locales-ru/workbuddy.d.ts.map +1 -0
- package/lib/types/client/progress-updates/locales.d.ts +23 -5
- package/lib/types/client/progress-updates/locales.d.ts.map +1 -1
- package/lib/types/client/progress-updates/settings-binding.d.ts +13 -1
- package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
- package/lib/types/client/progress-updates/settings-section.d.ts +1 -1
- package/lib/types/client/progress-updates/settings-section.d.ts.map +1 -1
- package/lib/types/client/workbuddy/WorkBuddyComposerQuota.d.ts +34 -0
- package/lib/types/client/workbuddy/WorkBuddyComposerQuota.d.ts.map +1 -0
- package/lib/types/client/workbuddy/WorkBuddySection.d.ts +91 -0
- package/lib/types/client/workbuddy/WorkBuddySection.d.ts.map +1 -0
- package/lib/types/client/workbuddy/locales.d.ts +768 -0
- package/lib/types/client/workbuddy/locales.d.ts.map +1 -0
- package/lib/types/client/workbuddy/styles.d.ts +21 -0
- package/lib/types/client/workbuddy/styles.d.ts.map +1 -0
- package/lib/types/client/workbuddy/useWorkBuddySection.d.ts +149 -0
- package/lib/types/client/workbuddy/useWorkBuddySection.d.ts.map +1 -0
- package/lib/types/compat.d.ts +1 -1
- package/lib/types/entry-plan-mode-pipeline.d.ts +206 -0
- package/lib/types/entry-plan-mode-pipeline.d.ts.map +1 -0
- package/lib/types/entry-plan-mode.d.ts +353 -0
- package/lib/types/entry-plan-mode.d.ts.map +1 -0
- package/lib/types/entry-tool-result-pruner.d.ts +255 -0
- package/lib/types/entry-tool-result-pruner.d.ts.map +1 -0
- package/lib/types/host/agent-preset.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/contracts.d.ts +5 -1
- package/lib/types/host/cache-warmup/contracts.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/install.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/projection.d.ts.map +1 -1
- package/lib/types/host/cache-warmup/retrieval-intent.d.ts +18 -0
- package/lib/types/host/cache-warmup/retrieval-intent.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/settings.d.ts +9 -2
- package/lib/types/host/cache-warmup/settings.d.ts.map +1 -1
- package/lib/types/host/common/capabilities.d.ts.map +1 -1
- package/lib/types/host/common/model-request-control.d.ts +1 -1
- package/lib/types/host/common/model-request-control.d.ts.map +1 -1
- package/lib/types/host/common/request-diagnostics.d.ts +1 -1
- package/lib/types/host/common/request-diagnostics.d.ts.map +1 -1
- package/lib/types/host/compaction-policy-guard.d.ts +58 -0
- package/lib/types/host/compaction-policy-guard.d.ts.map +1 -0
- package/lib/types/host/compaction-prompt.d.ts +129 -0
- package/lib/types/host/compaction-prompt.d.ts.map +1 -0
- package/lib/types/host/plan-mode-cache-guard.d.ts +16 -0
- package/lib/types/host/plan-mode-cache-guard.d.ts.map +1 -0
- package/lib/types/host/preset-sync.d.ts.map +1 -1
- package/lib/types/host/ptc-sdk-cache-guard.d.ts +80 -0
- package/lib/types/host/ptc-sdk-cache-guard.d.ts.map +1 -0
- package/lib/types/host/tool-result-pruner-guard.d.ts +34 -0
- package/lib/types/host/tool-result-pruner-guard.d.ts.map +1 -0
- package/lib/types/host/workbuddy/account-pool.d.ts +389 -0
- package/lib/types/host/workbuddy/account-pool.d.ts.map +1 -0
- package/lib/types/host/workbuddy/adapter.d.ts +249 -0
- package/lib/types/host/workbuddy/adapter.d.ts.map +1 -0
- package/lib/types/host/workbuddy/atrest.d.ts +98 -0
- package/lib/types/host/workbuddy/atrest.d.ts.map +1 -0
- package/lib/types/host/workbuddy/checkin.d.ts +150 -0
- package/lib/types/host/workbuddy/checkin.d.ts.map +1 -0
- package/lib/types/host/workbuddy/client.d.ts +214 -0
- package/lib/types/host/workbuddy/client.d.ts.map +1 -0
- package/lib/types/host/workbuddy/dsml.d.ts +55 -0
- package/lib/types/host/workbuddy/dsml.d.ts.map +1 -0
- package/lib/types/host/workbuddy/guardrails.d.ts +111 -0
- package/lib/types/host/workbuddy/guardrails.d.ts.map +1 -0
- package/lib/types/host/workbuddy/identity.d.ts +71 -0
- package/lib/types/host/workbuddy/identity.d.ts.map +1 -0
- package/lib/types/host/workbuddy/mapper.d.ts +238 -0
- package/lib/types/host/workbuddy/mapper.d.ts.map +1 -0
- package/lib/types/host/workbuddy/model-catalog.d.ts +217 -0
- package/lib/types/host/workbuddy/model-catalog.d.ts.map +1 -0
- package/lib/types/host/workbuddy/oauth.d.ts +47 -0
- package/lib/types/host/workbuddy/oauth.d.ts.map +1 -0
- package/lib/types/host/workbuddy/outbound-identity.d.ts +139 -0
- package/lib/types/host/workbuddy/outbound-identity.d.ts.map +1 -0
- package/lib/types/host/workbuddy/routes.d.ts +56 -0
- package/lib/types/host/workbuddy/routes.d.ts.map +1 -0
- package/lib/types/host/workbuddy/token-store.d.ts +370 -0
- package/lib/types/host/workbuddy/token-store.d.ts.map +1 -0
- package/lib/types/host/workbuddy/types.d.ts +179 -0
- package/lib/types/host/workbuddy/types.d.ts.map +1 -0
- package/lib/types/index.d.ts +35 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/shared/workbuddy-contracts.d.ts +531 -0
- package/lib/types/shared/workbuddy-contracts.d.ts.map +1 -0
- package/package.json +14 -2
- package/presets/dispatch/README.md +57 -3
- package/presets/dispatch/agent.cordis.yml +63 -3
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import z from "@deepseek-ai/schemastery";
|
|
2
|
+
import { Service } from "@deepseek-ai/cordis";
|
|
3
|
+
//#region src/entry-tool-result-pruner.ts
|
|
4
|
+
/**
|
|
5
|
+
* 「工具结果修剪器」的宿主入口 —— 本包自己的 loader 行(fork 版)。
|
|
6
|
+
*
|
|
7
|
+
* DSH 官方的 `@deepseek-ai/dsh-compaction-tool-result-pruner` 只按**字符预算**
|
|
8
|
+
* 修剪历史工具结果:超过 `thresholdChars` 的文本按码点保留头部与尾部、中间换成
|
|
9
|
+
* 固定标记,再以 `surfaceOp: replace` 追加一条新的 `tool/result`,并紧挨着写一条
|
|
10
|
+
* `compaction/prune` 计价事件。这套语义本身与 provider 无关,本文件逐字照搬,
|
|
11
|
+
* 因此行为可以与官方实现一一对照。
|
|
12
|
+
*
|
|
13
|
+
* 与官方实现的两点差别,也正是 "fork" 的全部理由:
|
|
14
|
+
*
|
|
15
|
+
* 1. **provider 感知的跳过**。缓存前缀型 provider(`kimi-code`)上,改写历史工具
|
|
16
|
+
* 结果会把 provider 侧的 content-prefix 缓存从被改写点一直作废到对话末尾:
|
|
17
|
+
* 实测 838k token 的会话里,一次修剪省下约 418k token 的上下文,却要按全价
|
|
18
|
+
* 重建约 414k token 的前缀,比摘要式压缩贵得多。所以对这类 provider 直接跳过,
|
|
19
|
+
* 一次都不改历史。
|
|
20
|
+
* 2. **不 import 任何 harness 的 compaction/session/token-meter 包**。本包的
|
|
21
|
+
* `peerDependencies` 里没有它们(也不该有:装不装它们不该由本包决定),
|
|
22
|
+
* 所以全部按**结构契约**描述:`SessionLike` / `SessionEventLike` /
|
|
23
|
+
* `ToolResultMessageLike` 都是本文件里的局部接口,`deepFreeze` 也是本地实现。
|
|
24
|
+
* 这样从 0.1.2-alpha.5 到 0.2.1-rc.3 的每一代 harness 都能解析这个模块。
|
|
25
|
+
*
|
|
26
|
+
* 与官方实现的一致性以测试锁定:`test/tool-result-pruner.test.ts` 覆盖配置校验、
|
|
27
|
+
* 代理对不劈开、非文本块不计价、以及 `compaction/prune` 与替换事件的先后顺序。
|
|
28
|
+
*
|
|
29
|
+
* @module @eddyskywalker/dsh-chatgpt-subscription/tool-result-pruner
|
|
30
|
+
*/
|
|
31
|
+
/** 替换被删除中间段的固定标记。与官方实现逐字一致。 */
|
|
32
|
+
const PRUNE_MARKER = "\n\n[... tool result middle pruned ...]\n\n";
|
|
33
|
+
/** 编码代理工具输出的低摩擦默认值。与官方实现逐字一致。 */
|
|
34
|
+
const DEFAULTS = deepFreeze({
|
|
35
|
+
thresholdChars: 8192,
|
|
36
|
+
headChars: 4096,
|
|
37
|
+
tailChars: 1024
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* 默认跳过的 provider。
|
|
41
|
+
*
|
|
42
|
+
* `kimi-code` 是缓存前缀型 provider:改写历史工具结果会让 provider 侧的前缀
|
|
43
|
+
* 缓存从改写点失效到对话末尾,重建成本高于修剪省下的输入。这个名单可以通过
|
|
44
|
+
* 配置 `skipProviders` 整体替换(传空数组即恢复"对所有 provider 都修剪")。
|
|
45
|
+
*/
|
|
46
|
+
const DEFAULT_SKIP_PROVIDERS = deepFreeze(["kimi-code"]);
|
|
47
|
+
/**
|
|
48
|
+
* 服务名契约。
|
|
49
|
+
*
|
|
50
|
+
* 宿主级守卫要按名字在 `ctx.reflect.store` 与 `agent.ctx.get()` 里找实例,
|
|
51
|
+
* 所以这个名字必须导出一份,不能在两处各写一个字符串字面量。
|
|
52
|
+
*/
|
|
53
|
+
const PRUNER_SERVICE_NAME = "toolResultPruner";
|
|
54
|
+
/** 允许出现在配置里的键。 */
|
|
55
|
+
const CONFIG_KEYS = /* @__PURE__ */ new Set([
|
|
56
|
+
"thresholdChars",
|
|
57
|
+
"headChars",
|
|
58
|
+
"tailChars",
|
|
59
|
+
"skipProviders"
|
|
60
|
+
]);
|
|
61
|
+
/**
|
|
62
|
+
* 本地深冻结。
|
|
63
|
+
*
|
|
64
|
+
* 不 import `deepFreeze` 的 harness 实现(`@deepseek-ai/dsh-util-values` 不在
|
|
65
|
+
* 本包依赖里),但语义保持一致:冻结自身与所有对象型子值,返回同一个引用。
|
|
66
|
+
*
|
|
67
|
+
* @param value - 待冻结的值。
|
|
68
|
+
* @returns 同一个引用,已就地冻结。
|
|
69
|
+
*/
|
|
70
|
+
function deepFreeze(value) {
|
|
71
|
+
if (value === null || typeof value !== "object" || Object.isFrozen(value)) return value;
|
|
72
|
+
Object.freeze(value);
|
|
73
|
+
for (const key of Object.getOwnPropertyNames(value)) {
|
|
74
|
+
const child = value[key];
|
|
75
|
+
if (child !== null && typeof child === "object") deepFreeze(child);
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 按 Unicode 码点计数,不劈开代理对。
|
|
81
|
+
*
|
|
82
|
+
* @param text - 待测量的文本。
|
|
83
|
+
* @returns 码点数。
|
|
84
|
+
*/
|
|
85
|
+
function codePointLength(text) {
|
|
86
|
+
return Array.from(text).length;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 校验并解析字符预算。
|
|
90
|
+
*
|
|
91
|
+
* 校验规则与官方实现逐字对齐:未知键报错、`thresholdChars` 必须为正整数、
|
|
92
|
+
* 头尾必须为非负整数、且 `headChars + marker + tailChars` 不得超过阈值。
|
|
93
|
+
*
|
|
94
|
+
* @param config - 原始配置。
|
|
95
|
+
* @returns 已脱离原对象且深冻结的配置。
|
|
96
|
+
*/
|
|
97
|
+
function resolveConfig(config = {}) {
|
|
98
|
+
for (const key of Object.keys(config)) if (!CONFIG_KEYS.has(key)) throw new Error(`ToolResultPruneConfig: unknown key "${key}" (allowed: thresholdChars, headChars, tailChars, skipProviders)`);
|
|
99
|
+
const resolved = {
|
|
100
|
+
thresholdChars: config.thresholdChars ?? DEFAULTS.thresholdChars,
|
|
101
|
+
headChars: config.headChars ?? DEFAULTS.headChars,
|
|
102
|
+
tailChars: config.tailChars ?? DEFAULTS.tailChars
|
|
103
|
+
};
|
|
104
|
+
assertPositiveInteger("thresholdChars", resolved.thresholdChars);
|
|
105
|
+
assertNonNegativeInteger("headChars", resolved.headChars);
|
|
106
|
+
assertNonNegativeInteger("tailChars", resolved.tailChars);
|
|
107
|
+
const emittedChars = resolved.headChars + codePointLength(PRUNE_MARKER) + resolved.tailChars;
|
|
108
|
+
if (emittedChars > resolved.thresholdChars) throw new Error(`ToolResultPruneConfig: headChars + marker + tailChars (${emittedChars}) must be at most thresholdChars (${resolved.thresholdChars})`);
|
|
109
|
+
return deepFreeze(structuredClone(resolved));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 把跳过名单解析成一个只读集合。
|
|
113
|
+
*
|
|
114
|
+
* @param skipProviders - 配置里的名单;省略时用 {@link DEFAULT_SKIP_PROVIDERS}。
|
|
115
|
+
* @returns 只读集合(每次调用都是新的实例)。
|
|
116
|
+
*/
|
|
117
|
+
function resolveSkipProviders(skipProviders) {
|
|
118
|
+
return new Set(skipProviders ?? DEFAULT_SKIP_PROVIDERS);
|
|
119
|
+
}
|
|
120
|
+
/** 单例化的默认跳过集合,省掉热路径上的重复分配。 */
|
|
121
|
+
let defaultSkipProviderSet;
|
|
122
|
+
/**
|
|
123
|
+
* 默认跳过集合(惰性单例)。
|
|
124
|
+
*
|
|
125
|
+
* @returns `['kimi-code']` 对应的只读集合。
|
|
126
|
+
*/
|
|
127
|
+
function defaultSkipProviders() {
|
|
128
|
+
defaultSkipProviderSet ??= new Set(DEFAULT_SKIP_PROVIDERS);
|
|
129
|
+
return defaultSkipProviderSet;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 读会话的 provider id。
|
|
133
|
+
*
|
|
134
|
+
* 先读 `requestHeader().config.provider`(新代的权威来源),读不到再退回扁平
|
|
135
|
+
* 的 `session.provider`(跨代兼容形状)。任何一步抛错都只是"读不到",不影响
|
|
136
|
+
* 修剪本身。
|
|
137
|
+
*
|
|
138
|
+
* @param session - 任意会话对象。
|
|
139
|
+
* @returns provider id,读不到时为 `undefined`。
|
|
140
|
+
*/
|
|
141
|
+
function readSessionProvider(session) {
|
|
142
|
+
if (session === null || typeof session !== "object") return void 0;
|
|
143
|
+
const candidate = session;
|
|
144
|
+
if (typeof candidate.requestHeader === "function") try {
|
|
145
|
+
const provider = candidate.requestHeader()?.config?.provider;
|
|
146
|
+
if (typeof provider === "string" && provider.length > 0) return provider;
|
|
147
|
+
} catch {}
|
|
148
|
+
const flat = candidate.provider;
|
|
149
|
+
if (typeof flat === "string" && flat.length > 0) return flat;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 判断这一场会话是否应当整场跳过修剪。
|
|
153
|
+
*
|
|
154
|
+
* 判定只依赖会话本身,不读事件、不写日志:命中时 {@link ToolResultPruner.pruneSession}
|
|
155
|
+
* 会在任何读写之前直接返回空结果。
|
|
156
|
+
*
|
|
157
|
+
* @param session - 任意会话对象。
|
|
158
|
+
* @param skipProviders - 跳过名单;省略时用默认的 `['kimi-code']`。
|
|
159
|
+
* @returns 命中名单时为 `true`。
|
|
160
|
+
*/
|
|
161
|
+
function shouldSkipPruningForSession(session, skipProviders = defaultSkipProviders()) {
|
|
162
|
+
const provider = readSessionProvider(session);
|
|
163
|
+
if (provider === void 0) return false;
|
|
164
|
+
return skipProviders.has(provider);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 断言一个正整数配置项。
|
|
168
|
+
*
|
|
169
|
+
* @param name - 配置项名,用于报错文案。
|
|
170
|
+
* @param value - 配置值。
|
|
171
|
+
*/
|
|
172
|
+
function assertPositiveInteger(name, value) {
|
|
173
|
+
if (!Number.isInteger(value) || value <= 0) throw new Error(`ToolResultPruneConfig: ${name} (${value}) must be a positive integer`);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 断言一个非负整数配置项。
|
|
177
|
+
*
|
|
178
|
+
* @param name - 配置项名,用于报错文案。
|
|
179
|
+
* @param value - 配置值。
|
|
180
|
+
*/
|
|
181
|
+
function assertNonNegativeInteger(name, value) {
|
|
182
|
+
if (!Number.isInteger(value) || value < 0) throw new Error(`ToolResultPruneConfig: ${name} (${value}) must be a non-negative integer`);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 判断一个值是否是普通对象。
|
|
186
|
+
*
|
|
187
|
+
* @param value - 任意值。
|
|
188
|
+
* @returns 是非 null 的对象时为 `true`。
|
|
189
|
+
*/
|
|
190
|
+
function isRecord(value) {
|
|
191
|
+
return typeof value === "object" && value !== null;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* 从事件负载里取工具结果消息。
|
|
195
|
+
*
|
|
196
|
+
* @param event - 一条 `tool/result` 事件。
|
|
197
|
+
* @returns 消息形状;取不到时为 `undefined`。
|
|
198
|
+
*/
|
|
199
|
+
function readEventMessage(event) {
|
|
200
|
+
const data = event.data;
|
|
201
|
+
if (!isRecord(data)) return void 0;
|
|
202
|
+
const message = data["message"];
|
|
203
|
+
if (!isRecord(message)) return void 0;
|
|
204
|
+
return message;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* 读一条工具结果的工具调用 id。
|
|
208
|
+
*
|
|
209
|
+
* 优先读事件负载(`event.data.message.source.callId`,与官方实现一致),读不到
|
|
210
|
+
* 再退回已派生消息上的同名字段。
|
|
211
|
+
*
|
|
212
|
+
* @param event - 一条 `tool/result` 事件。
|
|
213
|
+
* @param message - 由该事件派生出的消息。
|
|
214
|
+
* @returns 字符串形式的 callId;读不到时为空字符串。
|
|
215
|
+
*/
|
|
216
|
+
function readCallId(event, message) {
|
|
217
|
+
const fromEvent = readEventMessage(event)?.source?.callId;
|
|
218
|
+
const fromMessage = message?.source?.callId;
|
|
219
|
+
const raw = fromEvent ?? fromMessage;
|
|
220
|
+
if (typeof raw === "string") return raw;
|
|
221
|
+
if (raw === void 0 || raw === null) return "";
|
|
222
|
+
return String(raw);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* 确定性的、免模型的工具结果修剪服务(provider 感知版)。
|
|
226
|
+
*
|
|
227
|
+
* 与官方实现的差别只在两处:`pruneSession` 先按 provider 判定是否整场跳过,
|
|
228
|
+
* 且 token 计价走结构探测(`ctx.tokenMeter` 缺失时按 0 计),因此这一行在没有
|
|
229
|
+
* token-meter 的宿主上也能工作。
|
|
230
|
+
*/
|
|
231
|
+
var ToolResultPruner = class extends Service {
|
|
232
|
+
/**
|
|
233
|
+
* 每个被遮蔽节点都要计价,所以修剪确实需要计价能力。
|
|
234
|
+
*
|
|
235
|
+
* 声明成注入依赖是为了拿到 harness 提供的 meter;实现里仍按结构探测读取,
|
|
236
|
+
* 这样直接 `new` 出来的实例(测试、宿主自建)不会因为缺服务而炸掉。
|
|
237
|
+
*/
|
|
238
|
+
static inject = ["tokenMeter"];
|
|
239
|
+
/** loader 侧的配置 schema:与官方实现同样的三个数值项。 */
|
|
240
|
+
static Config = z.object({
|
|
241
|
+
thresholdChars: z.number().step(1).min(1).default(DEFAULTS.thresholdChars),
|
|
242
|
+
headChars: z.number().step(1).min(0).default(DEFAULTS.headChars),
|
|
243
|
+
tailChars: z.number().step(1).min(0).default(DEFAULTS.tailChars)
|
|
244
|
+
});
|
|
245
|
+
/** 解析后不可变的字符预算。 */
|
|
246
|
+
config;
|
|
247
|
+
/** 命中即整场跳过的 provider 集合。 */
|
|
248
|
+
skipProviders;
|
|
249
|
+
/**
|
|
250
|
+
* @param ctx - 宿主上下文(服务自注册为 `toolResultPruner`)。
|
|
251
|
+
* @param config - 原始配置。
|
|
252
|
+
*/
|
|
253
|
+
constructor(ctx, config = {}) {
|
|
254
|
+
super(ctx, PRUNER_SERVICE_NAME);
|
|
255
|
+
this.config = resolveConfig(config);
|
|
256
|
+
this.skipProviders = resolveSkipProviders(config.skipProviders);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* 只统计文本块的码点数;非文本块不计价。
|
|
260
|
+
*
|
|
261
|
+
* @param blocks - 待测量的工具结果内容。
|
|
262
|
+
* @returns 所有 text 块的码点数合计。
|
|
263
|
+
*/
|
|
264
|
+
measureContent(blocks) {
|
|
265
|
+
let chars = 0;
|
|
266
|
+
for (const block of blocks) if (block.type === "text") chars += codePointLength(block.text);
|
|
267
|
+
return chars;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 把超预算的文本中间段换成标记,同时保留富内容块的顺序。
|
|
271
|
+
*
|
|
272
|
+
* 切片按 Unicode 码点而不是 UTF-16 码元,因此保留边界不会劈开代理对;
|
|
273
|
+
* 字素簇仍可能被切开(与官方实现一致)。
|
|
274
|
+
*
|
|
275
|
+
* @param blocks - 原始工具结果内容。
|
|
276
|
+
* @returns 已修剪的内容;文本在预算内时为 `null`。
|
|
277
|
+
*/
|
|
278
|
+
pruneContent(blocks) {
|
|
279
|
+
const totalChars = this.measureContent(blocks);
|
|
280
|
+
if (totalChars <= this.config.thresholdChars) return null;
|
|
281
|
+
const removedStart = this.config.headChars;
|
|
282
|
+
const removedEnd = totalChars - this.config.tailChars;
|
|
283
|
+
const pruned = [];
|
|
284
|
+
let consumed = 0;
|
|
285
|
+
let markerInserted = false;
|
|
286
|
+
for (const block of blocks) {
|
|
287
|
+
if (block.type !== "text") {
|
|
288
|
+
pruned.push(block);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
const points = Array.from(block.text);
|
|
292
|
+
const blockStart = consumed;
|
|
293
|
+
const blockEnd = blockStart + points.length;
|
|
294
|
+
const headEnd = Math.min(points.length, Math.max(0, removedStart - blockStart));
|
|
295
|
+
const tailStart = Math.min(points.length, Math.max(0, removedEnd - blockStart));
|
|
296
|
+
const marker = blockStart < removedEnd && blockEnd > removedStart && !markerInserted ? PRUNE_MARKER : "";
|
|
297
|
+
if (marker.length > 0) markerInserted = true;
|
|
298
|
+
const text = points.slice(0, headEnd).join("") + marker + points.slice(tailStart).join("");
|
|
299
|
+
if (text.length > 0) pruned.push({
|
|
300
|
+
...block,
|
|
301
|
+
text
|
|
302
|
+
});
|
|
303
|
+
consumed = blockEnd;
|
|
304
|
+
}
|
|
305
|
+
if (!markerInserted) throw new Error("tool-result prune: failed to locate the removed text span");
|
|
306
|
+
const charsAfter = this.measureContent(pruned);
|
|
307
|
+
if (charsAfter > this.config.thresholdChars || charsAfter >= totalChars) throw new Error("tool-result prune: replacement must be smaller and within threshold");
|
|
308
|
+
return pruned;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* 从当前稳定表层快照修剪所有超预算的工具结果。
|
|
312
|
+
*
|
|
313
|
+
* **provider 判定在最前面**:命中跳过名单时直接返回空结果,既不读事件也不
|
|
314
|
+
* 追加事件,所以缓存前缀型 provider 的会话日志一次都不会被动过。
|
|
315
|
+
*
|
|
316
|
+
* 每条替换原样保留除 `content` 之外的全部事件数据,引用被遮蔽的节点让回放
|
|
317
|
+
* 能还原替换输入,并在它之前紧挨着写一条 `compaction/prune` 计价事件,让纯
|
|
318
|
+
* 消费者不需要按节点保存状态就能减掉被遮蔽节点的启发式价格。
|
|
319
|
+
*
|
|
320
|
+
* @param session - 表层会被改写的会话。
|
|
321
|
+
* @returns 已落地的替换与合计省下的码点数。
|
|
322
|
+
*/
|
|
323
|
+
pruneSession(session) {
|
|
324
|
+
if (shouldSkipPruningForSession(session, this.skipProviders)) return {
|
|
325
|
+
pruned: [],
|
|
326
|
+
charsRemoved: 0
|
|
327
|
+
};
|
|
328
|
+
const candidates = [];
|
|
329
|
+
for (const seq of [...session.surface?.nodes ?? []]) {
|
|
330
|
+
const event = session.eventAt(seq);
|
|
331
|
+
if (event?.type === "tool/result") candidates.push({
|
|
332
|
+
seq,
|
|
333
|
+
event
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
const pruned = [];
|
|
337
|
+
let charsRemoved = 0;
|
|
338
|
+
for (const { seq, event } of candidates) {
|
|
339
|
+
const original = session.deriveEventMessage(event);
|
|
340
|
+
const content = this.pruneContent(original.content ?? []);
|
|
341
|
+
if (content === null) continue;
|
|
342
|
+
const charsBefore = this.measureContent(original.content ?? []);
|
|
343
|
+
const charsAfter = this.measureContent(content);
|
|
344
|
+
const message = Object.freeze({
|
|
345
|
+
...original,
|
|
346
|
+
content: Object.freeze([...content])
|
|
347
|
+
});
|
|
348
|
+
const data = isRecord(event.data) ? event.data : {};
|
|
349
|
+
session.append("compaction/prune", {
|
|
350
|
+
shadowedRange: {
|
|
351
|
+
start: seq,
|
|
352
|
+
end: seq
|
|
353
|
+
},
|
|
354
|
+
shadowedSeqs: [seq],
|
|
355
|
+
shadowedTokenCount: this.estimateMessageTokens(original)
|
|
356
|
+
});
|
|
357
|
+
const replacement = session.append("tool/result", {
|
|
358
|
+
...data,
|
|
359
|
+
message
|
|
360
|
+
}, {
|
|
361
|
+
surfaceOp: {
|
|
362
|
+
op: "replace",
|
|
363
|
+
startSeq: seq,
|
|
364
|
+
endSeq: seq
|
|
365
|
+
},
|
|
366
|
+
sourceEventSeqs: [seq]
|
|
367
|
+
});
|
|
368
|
+
pruned.push({
|
|
369
|
+
originalSeq: seq,
|
|
370
|
+
replacementSeq: replacement.seq,
|
|
371
|
+
callId: readCallId(event, original),
|
|
372
|
+
charsBefore,
|
|
373
|
+
charsAfter
|
|
374
|
+
});
|
|
375
|
+
charsRemoved += charsBefore - charsAfter;
|
|
376
|
+
}
|
|
377
|
+
return {
|
|
378
|
+
pruned,
|
|
379
|
+
charsRemoved
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* 用宿主注入的 token meter 估计一条消息的价格。
|
|
384
|
+
*
|
|
385
|
+
* 按结构探测而不是按注入硬取:token-meter 在部分宿主上不存在,而修剪必须在
|
|
386
|
+
* 那种宿主上照常工作;读不到就按 0 计。
|
|
387
|
+
*
|
|
388
|
+
* @param message - 被遮蔽的消息。
|
|
389
|
+
* @returns 估计的 token 数;不可用时为 0。
|
|
390
|
+
*/
|
|
391
|
+
estimateMessageTokens(message) {
|
|
392
|
+
try {
|
|
393
|
+
const estimate = this.ctx.tokenMeter?.estimateMessage?.(message);
|
|
394
|
+
if (typeof estimate === "number" && Number.isFinite(estimate)) return estimate;
|
|
395
|
+
} catch {}
|
|
396
|
+
return 0;
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
//#endregion
|
|
400
|
+
export { DEFAULTS, DEFAULT_SKIP_PROVIDERS, PRUNER_SERVICE_NAME, PRUNE_MARKER, ToolResultPruner, ToolResultPruner as default, codePointLength, readSessionProvider, resolveConfig, resolveSkipProviders, shouldSkipPruningForSession };
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* (the same principle claude-style's brand.js documents).
|
|
11
11
|
*/
|
|
12
12
|
import { type BrandMarkKey } from './brand-svg.ts';
|
|
13
|
-
export type HubProviderId = 'chatgpt' | 'antigravity' | 'command-code' | 'kimi-code' | 'minimax-code' | 'glm-coding-plan' | 'claude' | 'ollama' | 'step-code' | 'cline-pass' | 'qoder' | 'opendesign';
|
|
13
|
+
export type HubProviderId = 'chatgpt' | 'antigravity' | 'command-code' | 'kimi-code' | 'minimax-code' | 'glm-coding-plan' | 'claude' | 'ollama' | 'step-code' | 'cline-pass' | 'qoder' | 'opendesign' | 'workbuddy';
|
|
14
14
|
/** 一张标记的键:BRAND_MARKS 的全部键,加上本文件自带的键。 */
|
|
15
15
|
export type ProviderMarkKey = BrandMarkKey | 'glm' | 'step-code' | 'cline-pass' | 'opendesign';
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand-icons.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/brand-icons.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAe,KAAK,YAAY,EAAqB,MAAM,gBAAgB,CAAA;AAElF,MAAM,MAAM,aAAa,GACrB,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,GACxD,cAAc,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GACxD,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"brand-icons.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/brand-icons.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAe,KAAK,YAAY,EAAqB,MAAM,gBAAgB,CAAA;AAElF,MAAM,MAAM,aAAa,GACrB,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,GACxD,cAAc,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GACxD,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,CAAA;AA6FrE,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,KAAK,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAA;AAS9F;;;;;;;GAOG;AACH,UAAU,UAAU;IAClB,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,GAAG,EAAE,OAAO,GAAG,SAAS,CAAA;CACzB;AAED,UAAU,aAAa;IACrB,iFAAiF;IACjF,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,CAqChE,CAAA;AAED,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUjI;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,IAAS,EAAE,EAAE;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuBpG;AAoBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAMtE"}
|
|
@@ -42,6 +42,10 @@ export declare const BRAND_MARKS: {
|
|
|
42
42
|
readonly viewBox: "0 0 148.09 148.18";
|
|
43
43
|
readonly body: "<g transform='translate(-75.96,-223.53)'><path d='m 105.01,322.07 29.14,-16.35 0.49,-1.42 -0.49,-0.79 h -1.42 l -4.87,-0.3 -16.65,-0.45 -14.44,-0.6 -13.99,-0.75 -3.52,-0.75 -3.3,-4.35 0.34,-2.17 2.96,-1.99 4.24,0.37 9.37,0.64 14.06,0.97 10.2,0.6 15.11,1.57 h 2.4 l 0.34,-0.97 -0.82,-0.6 -0.64,-0.6 -14.55,-9.86 -15.75,-10.42 -8.25,-6 -4.46,-3.04 -2.25,-2.85 -0.97,-6.22 4.05,-4.46 5.44,0.37 1.39,0.37 5.51,4.24 11.77,9.11 15.37,11.32 2.25,1.87 0.9,-0.64 0.11,-0.45 -1.01,-1.69 -8.36,-15.11 -8.92,-15.37 -3.97,-6.37 -1.05,-3.82 c -0.37,-1.57 -0.64,-2.89 -0.64,-4.5 l 4.61,-6.26 2.55,-0.82 6.15,0.82 2.59,2.25 3.82,8.74 6.19,13.76 9.6,18.71 2.81,5.55 1.5,5.14 0.56,1.57 h 0.97 v -0.9 l 0.79,-10.54 1.46,-12.94 1.42,-16.65 0.49,-4.69 2.32,-5.62 4.61,-3.04 3.6,1.72 2.96,4.24 -0.41,2.74 -1.76,11.44 -3.45,17.92 -2.25,12 h 1.31 l 1.5,-1.5 6.07,-8.06 10.2,-12.75 4.5,-5.06 5.25,-5.59 3.37,-2.66 h 6.37 l 4.69,6.97 -2.1,7.2 -6.56,8.32 -5.44,7.05 -7.8,10.5 -4.87,8.4 0.45,0.67 1.16,-0.11 17.62,-3.75 9.52,-1.72 11.36,-1.95 5.14,2.4 0.56,2.44 -2.02,4.99 -12.15,3 -14.25,2.85 -21.22,5.02 -0.26,0.19 0.3,0.37 9.56,0.9 4.09,0.22 h 10.01 l 18.64,1.39 4.87,3.22 2.92,3.94 -0.49,3 -7.5,3.82 -10.12,-2.4 -23.62,-5.62 -8.1,-2.02 h -1.12 v 0.67 l 6.75,6.6 12.37,11.17 15.49,14.4 0.79,3.56 -1.99,2.81 -2.1,-0.3 -13.61,-10.24 -5.25,-4.61 -11.89,-10.01 h -0.79 v 1.05 l 2.74,4.01 14.47,21.75 0.75,6.67 -1.05,2.17 -3.75,1.31 -4.12,-0.75 -8.47,-11.89 -8.74,-13.39 -7.05,-12 -0.86,0.49 -4.16,44.81 -1.95,2.29 -4.5,1.72 -3.75,-2.85 -1.99,-4.61 1.99,-9.11 2.4,-11.89 1.95,-9.45 1.76,-11.74 1.05,-3.9 -0.07,-0.26 -0.86,0.11 -8.85,12.15 -13.46,18.19 -10.65,11.4 -2.55,1.01 -4.42,-2.29 0.41,-4.09 2.47,-3.64 14.74,-18.75 8.89,-11.62 5.74,-6.71 -0.04,-0.97 h -0.34 l -39.15,25.42 -6.97,0.9 -3,-2.81 0.37,-4.61 1.42,-1.5 11.77,-8.1 -0.04,0.04 z'/></g>";
|
|
44
44
|
};
|
|
45
|
+
readonly tencent: {
|
|
46
|
+
readonly viewBox: "0 -0.225 1.45 1.45";
|
|
47
|
+
readonly body: "<g transform=\"translate(-0.0000 -0.2250) scale(0.060417)\"><g><circle cx=\"12\" cy=\"12\" fill=\"#0055E9\" r=\"12\"></circle><path d=\"M12 0c.518 0 1.028.033 1.528.096A6.188 6.188 0 0112.12 12.28l-.12.001c-2.99 0-5.242 2.179-5.554 5.11-.223 2.086.353 4.412 2.242 6.146C3.672 22.1 0 17.479 0 12 0 5.373 5.373 0 12 0z\" fill=\"currentColor\"></path><path d=\"M5.286 5a2.438 2.438 0 01.682 3.38c-3.962 5.966-3.215 10.743 2.648 15.136C3.636 22.056 0 17.452 0 12c0-1.787.39-3.482 1.09-5.006.253-.435.525-.872.817-1.311A2.438 2.438 0 015.286 5z\" fill=\"#0055E9\"></path><path d=\"M12.98.04c.272.021.543.053.81.093.583.106 1.117.254 1.538.44 6.638 2.927 8.07 10.052 1.748 15.642a4.125 4.125 0 01-5.822-.358c-1.51-1.706-1.3-4.184.357-5.822.858-.848 3.108-1.223 4.045-2.441 1.257-1.634 2.122-6.009-2.523-7.506L12.98.039z\" fill=\"#00BCFF\"></path><path d=\"M13.528.096A6.187 6.187 0 0112 12.281a5.75 5.75 0 00-1.71.255c.147-.905.595-1.784 1.321-2.501.858-.848 3.108-1.223 4.045-2.441 1.27-1.651 2.14-6.104-2.676-7.554.184.014.367.033.548.056z\" fill=\"#ECECEE\"></path></g></g>";
|
|
48
|
+
};
|
|
45
49
|
};
|
|
46
50
|
export type BrandMarkKey = keyof typeof BRAND_MARKS;
|
|
47
51
|
//# sourceMappingURL=brand-svg.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand-svg.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/brand-svg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE/D,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"brand-svg.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/brand-svg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE/D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCyB,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,WAAW,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/providers.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../../src/client/hub/providers.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AA2BpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,gFAAgF;IAChF,OAAO,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,aAAa,CAAA;IACjB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;OAOG;IACH,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;IACxD,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CAAA;CACxD;AA4BD,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,SAAS,qBAAqB,EAuFzD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAEnF"}
|
|
@@ -12,6 +12,7 @@ import { type ClinePassLocaleKey } from './cline-pass/locales.ts';
|
|
|
12
12
|
import { type QoderLocaleKey } from './qoder/locales.ts';
|
|
13
13
|
import { type OpenDesignLocaleKey } from './opendesign/locales.ts';
|
|
14
14
|
import { type ProgressUpdatesLocaleKey } from './progress-updates/locales.ts';
|
|
15
|
+
import { type WorkBuddyLocaleKey } from './workbuddy/locales.ts';
|
|
15
16
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
16
17
|
/**
|
|
17
18
|
* Every namespace this plugin registers, typed by that line's own dictionary.
|
|
@@ -35,6 +36,7 @@ declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
|
35
36
|
'dsh-qoder': QoderLocaleKey;
|
|
36
37
|
'dsh-opendesign': OpenDesignLocaleKey;
|
|
37
38
|
'dsh-progress-updates': ProgressUpdatesLocaleKey;
|
|
39
|
+
'dsh-workbuddy': WorkBuddyLocaleKey;
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
export declare const inject: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAenE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ/D,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGtH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGlG,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAExH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM5G,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKxH,OAAO,EAA0D,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAElI,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG5G,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGhH,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG9F,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAMlH,OAAO,EAA6D,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExI,OAAO,QAAQ,kCAAkC,CAAC;IAChD;;;;;;;OAOG;IACH,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;QACrC,iBAAiB,EAAE,oBAAoB,CAAA;QACvC,YAAY,EAAE,eAAe,CAAA;QAC7B,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,eAAe,EAAE,iBAAiB,CAAA;QAClC,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,qBAAqB,EAAE,sBAAsB,CAAA;QAC7C,YAAY,EAAE,eAAe,CAAA;QAC7B,eAAe,EAAE,iBAAiB,CAAA;QAClC,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,WAAW,EAAE,cAAc,CAAA;QAC3B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,sBAAsB,EAAE,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAenE,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ/D,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGtH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGlG,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAExH,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAM5G,OAAO,EAAqD,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKxH,OAAO,EAA0D,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAElI,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,EAA+C,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG5G,OAAO,EAAiD,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAGhH,OAAO,EAAwC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAG9F,OAAO,EAAkD,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAMlH,OAAO,EAA6D,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExI,OAAO,EAAgD,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAG9G,OAAO,QAAQ,kCAAkC,CAAC;IAChD;;;;;;;OAOG;IACH,UAAU,kBAAkB;QAC1B,0BAA0B,EAAE,SAAS,CAAA;QACrC,iBAAiB,EAAE,oBAAoB,CAAA;QACvC,YAAY,EAAE,eAAe,CAAA;QAC7B,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,eAAe,EAAE,iBAAiB,CAAA;QAClC,kBAAkB,EAAE,oBAAoB,CAAA;QACxC,qBAAqB,EAAE,sBAAsB,CAAA;QAC7C,YAAY,EAAE,eAAe,CAAA;QAC7B,eAAe,EAAE,iBAAiB,CAAA;QAClC,gBAAgB,EAAE,kBAAkB,CAAA;QACpC,WAAW,EAAE,cAAc,CAAA;QAC3B,gBAAgB,EAAE,mBAAmB,CAAA;QACrC,sBAAsB,EAAE,wBAAwB,CAAA;QAChD,eAAe,EAAE,kBAAkB,CAAA;KACpC;CACF;AAED,eAAO,MAAM,MAAM,UAQlB,CAAA;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAqO9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AA+BnE,yEAAyE;AACzE,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAsD7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-updates.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/progress-updates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE9E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"progress-updates.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/progress-updates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAE9E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAwC/D,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Russian text for the WorkBuddy settings card.
|
|
3
|
+
*
|
|
4
|
+
* One dictionary per namespace, exactly the key set of 'workbuddy/locales.ts':
|
|
5
|
+
* a missing key would render as a raw key name for a Russian reader, and a
|
|
6
|
+
* dropped '{placeholder}' would turn a sentence into a bald claim. 'test/
|
|
7
|
+
* russian-locale.test.tsx' pins both rules.
|
|
8
|
+
*/
|
|
9
|
+
export declare const dictionary: Record<string, string>;
|
|
10
|
+
//# sourceMappingURL=workbuddy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbuddy.d.ts","sourceRoot":"","sources":["../../../../src/client/locales-ru/workbuddy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6H7C,CAAA"}
|
|
@@ -37,7 +37,13 @@ export declare const zh: {
|
|
|
37
37
|
readonly settingsHint: "进展更新会让 agent 在多步任务中主动汇报进度。打开面板可以看它到目前为止的全部汇报。";
|
|
38
38
|
readonly settingsOpen: "打开进展面板";
|
|
39
39
|
readonly settingsEnabledName: "进展更新";
|
|
40
|
-
readonly settingsEnabledNote: "让 agent
|
|
40
|
+
readonly settingsEnabledNote: "让 agent 在对话中发布进展更新;本插件的所有线路都可用";
|
|
41
|
+
readonly settingsCacheWarmupName: "缓存预热";
|
|
42
|
+
readonly settingsCacheWarmupNote: "Kimi Code 专用:投影大型日志结果,原文可通过 ref 按需补读;非 Kimi 线路开关无影响";
|
|
43
|
+
readonly settingsRetrievalName: "检索结果投影";
|
|
44
|
+
readonly settingsRetrievalNote: "Kimi Code 专用:导航任务中投影文件、网页与搜索,编辑审查保留原文;非 Kimi 线路开关无影响";
|
|
45
|
+
readonly settingsPlanModePipelineName: "计划模式管线";
|
|
46
|
+
readonly settingsPlanModePipelineNote: "澄清访谈收敛后自动进入计划模式出计划,再交审批(仅调度模式生效);关闭后该模式会请用户手动输入 /plan";
|
|
41
47
|
readonly settingsThresholdName: "催促阈值";
|
|
42
48
|
readonly settingsThresholdNote: "连续这么多轮没有进展时,提醒 agent 汇报一次";
|
|
43
49
|
readonly settingsLanguageName: "输出语言";
|
|
@@ -78,7 +84,13 @@ export declare const dictionaries: {
|
|
|
78
84
|
readonly settingsHint: "进展更新会让 agent 在多步任务中主动汇报进度。打开面板可以看它到目前为止的全部汇报。";
|
|
79
85
|
readonly settingsOpen: "打开进展面板";
|
|
80
86
|
readonly settingsEnabledName: "进展更新";
|
|
81
|
-
readonly settingsEnabledNote: "让 agent
|
|
87
|
+
readonly settingsEnabledNote: "让 agent 在对话中发布进展更新;本插件的所有线路都可用";
|
|
88
|
+
readonly settingsCacheWarmupName: "缓存预热";
|
|
89
|
+
readonly settingsCacheWarmupNote: "Kimi Code 专用:投影大型日志结果,原文可通过 ref 按需补读;非 Kimi 线路开关无影响";
|
|
90
|
+
readonly settingsRetrievalName: "检索结果投影";
|
|
91
|
+
readonly settingsRetrievalNote: "Kimi Code 专用:导航任务中投影文件、网页与搜索,编辑审查保留原文;非 Kimi 线路开关无影响";
|
|
92
|
+
readonly settingsPlanModePipelineName: "计划模式管线";
|
|
93
|
+
readonly settingsPlanModePipelineNote: "澄清访谈收敛后自动进入计划模式出计划,再交审批(仅调度模式生效);关闭后该模式会请用户手动输入 /plan";
|
|
82
94
|
readonly settingsThresholdName: "催促阈值";
|
|
83
95
|
readonly settingsThresholdNote: "连续这么多轮没有进展时,提醒 agent 汇报一次";
|
|
84
96
|
readonly settingsLanguageName: "输出语言";
|
|
@@ -115,7 +127,13 @@ export declare const dictionaries: {
|
|
|
115
127
|
readonly settingsHint: "进展更新会让 agent 在多步任务中主动汇报进度。打开面板可以看它到目前为止的全部汇报。";
|
|
116
128
|
readonly settingsOpen: "打开进展面板";
|
|
117
129
|
readonly settingsEnabledName: "进展更新";
|
|
118
|
-
readonly settingsEnabledNote: "让 agent
|
|
130
|
+
readonly settingsEnabledNote: "让 agent 在对话中发布进展更新;本插件的所有线路都可用";
|
|
131
|
+
readonly settingsCacheWarmupName: "缓存预热";
|
|
132
|
+
readonly settingsCacheWarmupNote: "Kimi Code 专用:投影大型日志结果,原文可通过 ref 按需补读;非 Kimi 线路开关无影响";
|
|
133
|
+
readonly settingsRetrievalName: "检索结果投影";
|
|
134
|
+
readonly settingsRetrievalNote: "Kimi Code 专用:导航任务中投影文件、网页与搜索,编辑审查保留原文;非 Kimi 线路开关无影响";
|
|
135
|
+
readonly settingsPlanModePipelineName: "计划模式管线";
|
|
136
|
+
readonly settingsPlanModePipelineNote: "澄清访谈收敛后自动进入计划模式出计划,再交审批(仅调度模式生效);关闭后该模式会请用户手动输入 /plan";
|
|
119
137
|
readonly settingsThresholdName: "催促阈值";
|
|
120
138
|
readonly settingsThresholdNote: "连续这么多轮没有进展时,提醒 agent 汇报一次";
|
|
121
139
|
readonly settingsLanguageName: "输出语言";
|
|
@@ -128,8 +146,8 @@ export declare const dictionaries: {
|
|
|
128
146
|
readonly settingsUnavailable: "这项设置当前不可修改(宿主没有开放配置表单)";
|
|
129
147
|
readonly settingsSaveFailed: "保存失败,请稍后再试";
|
|
130
148
|
};
|
|
131
|
-
en: Record<"navTitle" | "progressTitle" | "progressGuideNote" | "markdownCopy" | "markdownCopied" | "markdownFootnotes" | "progressLatest" | "progressCount" | "progressExpand" | "progressCollapse" | "progressEmptyTitle" | "progressEmptyHint" | "rowPending" | "rowRunning" | "rowDone" | "rowError" | "rowExpand" | "rowCollapse" | "settingsHint" | "settingsOpen" | "settingsEnabledName" | "settingsEnabledNote" | "settingsThresholdName" | "settingsThresholdNote" | "settingsLanguageName" | "settingsLanguageNote" | "settingsLanguageAuto" | "settingsLanguageZh" | "settingsLanguageEn" | "settingsPanelName" | "settingsPanelNote" | "settingsUnavailable" | "settingsSaveFailed", string>;
|
|
132
|
-
'en-US': Record<"navTitle" | "progressTitle" | "progressGuideNote" | "markdownCopy" | "markdownCopied" | "markdownFootnotes" | "progressLatest" | "progressCount" | "progressExpand" | "progressCollapse" | "progressEmptyTitle" | "progressEmptyHint" | "rowPending" | "rowRunning" | "rowDone" | "rowError" | "rowExpand" | "rowCollapse" | "settingsHint" | "settingsOpen" | "settingsEnabledName" | "settingsEnabledNote" | "settingsThresholdName" | "settingsThresholdNote" | "settingsLanguageName" | "settingsLanguageNote" | "settingsLanguageAuto" | "settingsLanguageZh" | "settingsLanguageEn" | "settingsPanelName" | "settingsPanelNote" | "settingsUnavailable" | "settingsSaveFailed", string>;
|
|
149
|
+
en: Record<"navTitle" | "progressTitle" | "progressGuideNote" | "markdownCopy" | "markdownCopied" | "markdownFootnotes" | "progressLatest" | "progressCount" | "progressExpand" | "progressCollapse" | "progressEmptyTitle" | "progressEmptyHint" | "rowPending" | "rowRunning" | "rowDone" | "rowError" | "rowExpand" | "rowCollapse" | "settingsHint" | "settingsOpen" | "settingsEnabledName" | "settingsEnabledNote" | "settingsCacheWarmupName" | "settingsCacheWarmupNote" | "settingsRetrievalName" | "settingsRetrievalNote" | "settingsPlanModePipelineName" | "settingsPlanModePipelineNote" | "settingsThresholdName" | "settingsThresholdNote" | "settingsLanguageName" | "settingsLanguageNote" | "settingsLanguageAuto" | "settingsLanguageZh" | "settingsLanguageEn" | "settingsPanelName" | "settingsPanelNote" | "settingsUnavailable" | "settingsSaveFailed", string>;
|
|
150
|
+
'en-US': Record<"navTitle" | "progressTitle" | "progressGuideNote" | "markdownCopy" | "markdownCopied" | "markdownFootnotes" | "progressLatest" | "progressCount" | "progressExpand" | "progressCollapse" | "progressEmptyTitle" | "progressEmptyHint" | "rowPending" | "rowRunning" | "rowDone" | "rowError" | "rowExpand" | "rowCollapse" | "settingsHint" | "settingsOpen" | "settingsEnabledName" | "settingsEnabledNote" | "settingsCacheWarmupName" | "settingsCacheWarmupNote" | "settingsRetrievalName" | "settingsRetrievalNote" | "settingsPlanModePipelineName" | "settingsPlanModePipelineNote" | "settingsThresholdName" | "settingsThresholdNote" | "settingsLanguageName" | "settingsLanguageNote" | "settingsLanguageAuto" | "settingsLanguageZh" | "settingsLanguageEn" | "settingsPanelName" | "settingsPanelNote" | "settingsUnavailable" | "settingsSaveFailed", string>;
|
|
133
151
|
};
|
|
134
152
|
/** 本命名空间的字典键联合,供类型化 `t` 座位使用。 */
|
|
135
153
|
export type ProgressUpdatesLocaleKey = keyof typeof zh;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/locales.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAG,sBAA+B,CAAA;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,EAAE;IACb,4BAA4B;;;IAG5B,4BAA4B
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/locales.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAG,sBAA+B,CAAA;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,EAAE;IACb,4BAA4B;;;IAG5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCpB,CAAA;AAEV,wBAAwB;AACxB,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAwCvD,CAAA;AAED,qCAAqC;AACrC,eAAO,MAAM,YAAY;;QAvFvB,4BAA4B;;;QAG5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAH5B,4BAA4B;;;QAG5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyF7B,CAAA;AAED,iCAAiC;AACjC,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,EAAE,CAAA;AAEtD,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,mBAAmB;QACnB,sBAAsB,EAAE,wBAAwB,CAAA;KACjD;CACF"}
|
|
@@ -50,11 +50,23 @@ export interface ProgressUpdatesSettingsValues {
|
|
|
50
50
|
* 逐字一致(宿主 Config schema 里的枚举就是这三个)。
|
|
51
51
|
*/
|
|
52
52
|
progressUpdatesLanguage?: 'auto' | 'zh' | 'en';
|
|
53
|
+
/** 既有日志/命令结果投影开关(默认开启)。 */
|
|
54
|
+
cacheWarmup?: boolean;
|
|
55
|
+
/** 检索型结果投影独立开关(默认开启)。 */
|
|
56
|
+
cacheWarmupRetrieval?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* 计划模式管线开关(缺键 = 开)。
|
|
59
|
+
*
|
|
60
|
+
* 与宿主 `src/index.ts` 的 `Config` 同一个对象里的字段、名字逐字一致;
|
|
61
|
+
* 宿主那边是 `default(true)`,所以老配置没有这个键时界面必须同样读成开,
|
|
62
|
+
* 否则「设置里显示关着」与「实际是开着的」会同时成立。
|
|
63
|
+
*/
|
|
64
|
+
planModePipeline?: boolean;
|
|
53
65
|
}
|
|
54
66
|
/** 输出语言的三种取值,供界面侧声明变量类型。 */
|
|
55
67
|
export type ProgressUpdatesLanguage = NonNullable<ProgressUpdatesSettingsValues['progressUpdatesLanguage']>;
|
|
56
68
|
/** 表单可写的那三个字段名(联合类型,写错名字编译期就报)。 */
|
|
57
|
-
export type ProgressUpdatesField = 'progressUpdates' | 'progressUpdatesNudgeThreshold' | 'progressUpdatesLanguage';
|
|
69
|
+
export type ProgressUpdatesField = 'progressUpdates' | 'progressUpdatesNudgeThreshold' | 'progressUpdatesLanguage' | 'cacheWarmup' | 'cacheWarmupRetrieval' | 'planModePipeline';
|
|
58
70
|
/**
|
|
59
71
|
* 候选条目 id,按可能性从高到低。
|
|
60
72
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-binding.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAQD;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,WAAW;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0BAA0B;IAC1B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"settings-binding.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAQD;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,WAAW;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0BAA0B;IAC1B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9C,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,yBAAyB;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,4BAA4B;AAC5B,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC,CAAA;AAE3G,mCAAmC;AACnC,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,+BAA+B,GAC/B,yBAAyB,GACzB,aAAa,GACb,sBAAsB,GACtB,kBAAkB,CAAA;AAEtB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAA;AAED,6BAA6B;AAC7B,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,WAAW,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAA;IAChE,cAAc;IACd,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,uBAAuB;IACvB,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,8BAA8B;IAC9B,OAAO,IAAI,IAAI,CAAA;CAChB;AAoED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,oBAAoB,GAAG,SAAS,CA4FhH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-section.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-section.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACjF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EAEV,oBAAoB,EAIrB,MAAM,uBAAuB,CAAA;AAE9B,iCAAiC;AACjC,MAAM,WAAW,+BAA+B;IAC9C,iCAAiC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AAED,6BAA6B;AAC7B,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,6CAA6C;AAC7C,MAAM,MAAM,4BAA4B,GAAG,+BAA+B,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AAE1G,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,YAAY;AACZ,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"settings-section.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-section.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACjF,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EAEV,oBAAoB,EAIrB,MAAM,uBAAuB,CAAA;AAE9B,iCAAiC;AACjC,MAAM,WAAW,+BAA+B;IAC9C,iCAAiC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AAED,6BAA6B;AAC7B,MAAM,WAAW,kBAAkB;IACjC,wBAAwB;IACxB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,6CAA6C;AAC7C,MAAM,MAAM,4BAA4B,GAAG,+BAA+B,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AAE1G,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,IAAI,CAAA;AACpC,YAAY;AACZ,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAqJxC;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,4BAA4B,GAAG,SAAS,CA8P7F"}
|