@eddyskywalker/dsh-chatgpt-subscription 0.46.1 → 0.47.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 +46 -0
- package/README.md +22 -1
- package/lib/client.js +2639 -571
- package/lib/client.js.map +1 -1
- package/lib/index.js +12000 -3591
- package/lib/plan-mode-pipeline.js +419 -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 +191 -0
- package/lib/types/entry-plan-mode-pipeline.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-prompt.d.ts +129 -0
- package/lib/types/host/compaction-prompt.d.ts.map +1 -0
- package/lib/types/host/preset-sync.d.ts.map +1 -1
- 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 +6 -2
- package/presets/dispatch/README.md +57 -3
- package/presets/dispatch/agent.cordis.yml +42 -13
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
2
|
+
//#region src/entry-plan-mode-pipeline.ts
|
|
3
|
+
/** Loader 行名;preset 里的行 id 与模块说明符另由 preset 文件决定。 */
|
|
4
|
+
const name = "dsh-chatgpt-subscription-plan-mode-pipeline";
|
|
5
|
+
/**
|
|
6
|
+
* 静态 `inject` 为空,这一行**不因缺服务而挂不上**。
|
|
7
|
+
*
|
|
8
|
+
* 空数组不等于「不等任何东西」:等 `planMode` 发生在 `apply()` 里的运行时
|
|
9
|
+
* `ctx.inject(['planMode'], …)`,服务一到就注册两个工具,永不到达就零注册。
|
|
10
|
+
* `tools`、`agents` 仍在调用时用 `ctx.get()` 探测。两者都不影响 preset 里其他行
|
|
11
|
+
* 的挂载。
|
|
12
|
+
*/
|
|
13
|
+
const inject = [];
|
|
14
|
+
/** 进入计划模式的工具名。冻结契约的一部分,不要改动。 */
|
|
15
|
+
const ENTER_PLAN_MODE_TOOL = "enter_plan_mode";
|
|
16
|
+
/** 放弃规划(不交计划)的工具名。冻结契约的一部分,不要改动。 */
|
|
17
|
+
const LEAVE_PLAN_MODE_TOOL = "leave_plan_mode";
|
|
18
|
+
/**
|
|
19
|
+
* 真正的审批出口。这一行只**提及**它,不注册、不替换、不代理。
|
|
20
|
+
*
|
|
21
|
+
* harness 的 plan-mode 服务自己把它按「本步是否处于计划模式」逐步准入(见
|
|
22
|
+
* `packages/plan/plan-mode/src/index.ts`),这里再注册一份同名工具会让宿主
|
|
23
|
+
* 启动直接失败。
|
|
24
|
+
*/
|
|
25
|
+
const APPROVAL_EXIT_TOOL = "exit_plan_mode";
|
|
26
|
+
/** 开关键名。冻结契约的一部分:profile、设置卡片与新入口共用这一个键。 */
|
|
27
|
+
const SETTINGS_KEY = "planModePipeline";
|
|
28
|
+
/**
|
|
29
|
+
* 这一行的结构化错误。
|
|
30
|
+
*
|
|
31
|
+
* 不 extends harness 的 `HarnessError`:那个基类在更老的代上不一定存在,而错误码
|
|
32
|
+
* 只需要一个字符串字段就够调用方判断。
|
|
33
|
+
*/
|
|
34
|
+
var PlanModePipelineError = class extends Error {
|
|
35
|
+
/** 稳定错误码,供调度者/测试判断分支。 */
|
|
36
|
+
code;
|
|
37
|
+
/**
|
|
38
|
+
* @param message - 给模型看的完整文案。
|
|
39
|
+
* @param code - 稳定错误码。
|
|
40
|
+
*/
|
|
41
|
+
constructor(message, code) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.name = "PlanModePipelineError";
|
|
44
|
+
this.code = code;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 开关递交槽位的 global symbol。
|
|
49
|
+
*
|
|
50
|
+
* 走 global symbol 而不是模块级变量,理由与本包 `host/progress-updates/index.ts`
|
|
51
|
+
* 的单实例登记表相同:摆渡的两端是**两个 bundle 里的模块实例**(核心行
|
|
52
|
+
* `lib/index.js` 与这一行 `lib/plan-mode-pipeline.js`),同一个包也可能被装上两份
|
|
53
|
+
* (npm 拷贝 + 仓库 link)。模块级变量在"两份实例"下永远对接不上 —— 那时核心行写
|
|
54
|
+
* 自己的副本、这一行读自己的副本,开关就静默失效;进程级登记表没有这个问题。
|
|
55
|
+
*/
|
|
56
|
+
const SETTINGS_SLOT = Symbol.for("dsh-chatgpt-subscription.plan-mode-pipeline.settings");
|
|
57
|
+
/**
|
|
58
|
+
* 由核心入口在挂载时调用,把 `planModePipeline` 的读取面交给这一行。
|
|
59
|
+
*
|
|
60
|
+
* 幂等:重复递交以最后一次为准(核心行重挂时活引用会换一份新的)。
|
|
61
|
+
* @param read - 每次调用都重读当前开关值(活引用:设置保存后下一步生效)。
|
|
62
|
+
*/
|
|
63
|
+
function attachPlanModePipelineSettings(read) {
|
|
64
|
+
globalThis[SETTINGS_SLOT] = read;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 读当前挂着的读取面。
|
|
68
|
+
* @returns 核心行递交过的读取函数;还没递交(或递交的不是函数)时 undefined。
|
|
69
|
+
*/
|
|
70
|
+
function attachedReader() {
|
|
71
|
+
const candidate = globalThis[SETTINGS_SLOT];
|
|
72
|
+
return typeof candidate === "function" ? candidate : void 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 当前开关值,默认**开启**。
|
|
76
|
+
*
|
|
77
|
+
* 与「进展更新」行刻意不同的一点:那边在没有设置时**等**(用一个写死的默认值
|
|
78
|
+
* 假装在跑会让「设置显示打开」与「实际没挂」同时成立)。这里不能等——这一行挂在
|
|
79
|
+
* **preset** 里,按会话挂载;核心行若被用户单独关掉,等下去的结果是这一行静默地
|
|
80
|
+
* 一个工具都不注册,而设置面板上根本不存在一个「关掉的开关」供人对账。所以缺设置
|
|
81
|
+
* 时按默认值(开)工作。
|
|
82
|
+
*
|
|
83
|
+
* @returns 开关是否打开。
|
|
84
|
+
*/
|
|
85
|
+
function readPlanModePipelineEnabled() {
|
|
86
|
+
const read = attachedReader();
|
|
87
|
+
if (read === void 0) return true;
|
|
88
|
+
try {
|
|
89
|
+
return read() !== false;
|
|
90
|
+
} catch {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 把核心行的配置解析成开关值。
|
|
96
|
+
*
|
|
97
|
+
* 沿 volatile 活引用取当前值,所以设置保存后立刻生效。
|
|
98
|
+
* @param config - 核心入口收到的插件配置(活引用或普通值)。
|
|
99
|
+
* @returns 是否启用;缺省与非法值都按默认值(开)处理。
|
|
100
|
+
*/
|
|
101
|
+
function resolvePlanModePipelineEnabled(config) {
|
|
102
|
+
const field = config?.planModePipeline;
|
|
103
|
+
if (field === void 0 || field === null) return true;
|
|
104
|
+
if (typeof field === "object" && typeof field.get === "function") return field.get() !== false;
|
|
105
|
+
return field !== false;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 调用时读一个可选服务。
|
|
109
|
+
* @param ctx - 宿主上下文。
|
|
110
|
+
* @param service - 服务名。
|
|
111
|
+
* @returns 服务实例;不存在或读取抛错时 undefined。
|
|
112
|
+
*/
|
|
113
|
+
function serviceOf(ctx, service) {
|
|
114
|
+
const read = ctx.get;
|
|
115
|
+
if (typeof read !== "function") return void 0;
|
|
116
|
+
try {
|
|
117
|
+
return read.call(ctx, service);
|
|
118
|
+
} catch {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 记一条 info 日志。日志服务缺席时安静跳过——这一行不该因为日志而失败。
|
|
124
|
+
* @param ctx - 宿主上下文。
|
|
125
|
+
* @param message - 日志正文。
|
|
126
|
+
*/
|
|
127
|
+
function logInfo(ctx, message) {
|
|
128
|
+
const logger = ctx.logger;
|
|
129
|
+
try {
|
|
130
|
+
logger?.info(message);
|
|
131
|
+
} catch {}
|
|
132
|
+
}
|
|
133
|
+
/** 调用方不是存活根的完整文案。 */
|
|
134
|
+
const NOT_LIVE_TEXT = "plan mode control requires the exact live calling agent for this session; this session no longer owns the caller, so no plan was entered or left here";
|
|
135
|
+
/** 调用方是子代理时的完整文案(要求把未决决定带回调度者)。 */
|
|
136
|
+
const DELEGATED_TEXT = "plan mode control is unavailable while the calling agent is owned by another live agent; include the unresolved question or decision in the child agent's final result for the dispatcher, and let the dispatcher enter or leave plan mode";
|
|
137
|
+
/**
|
|
138
|
+
* 校验调用方是这个会话**现在的**那个存活根 agent,按宿主所能提供的信息**三级降级**:
|
|
139
|
+
*
|
|
140
|
+
* 1. `agents` 在、`agents.roots()` 可用 —— 全量校验(存活 + 根判定,照抄 harness 的
|
|
141
|
+
* `user-questions`);确认不是根时抛 `DELEGATED_CALLER`,这是它**唯一**的抛出点。
|
|
142
|
+
* 2. `agents` 在、`roots` 不可用(老代上未必有)—— 只判存活(`agents.get(id) === agent`)
|
|
143
|
+
* 就放行:判不了根不等于确认是子代理,而 `planMode.set()` 本身不需要根身份。
|
|
144
|
+
* 3. `agents` 服务缺失 —— 存活与根都无从判定,直接放行(同样不需要 agents)。
|
|
145
|
+
*
|
|
146
|
+
* 降级的代价:老代上识别不出子代理,子代理可能自己进入它自己的计划模式;那边没有
|
|
147
|
+
* `exit_plan_mode` 审批出口可用,所以这是可接受的降级,好过让切换在整个老代上永久失败。
|
|
148
|
+
* @param ctx - 宿主上下文。
|
|
149
|
+
* @param agent - `exec.agent`。
|
|
150
|
+
* @throws {PlanModePipelineError} `CALLER_MISSING` / `CALLER_NOT_LIVE` / `DELEGATED_CALLER`。
|
|
151
|
+
*/
|
|
152
|
+
function assertLiveRoot(ctx, agent) {
|
|
153
|
+
if (agent === void 0 || agent === null) throw new PlanModePipelineError("plan mode control needs a calling agent, but this call carries none; a plan is entered and left by the dispatcher that owns the session", "CALLER_MISSING");
|
|
154
|
+
const agents = serviceOf(ctx, "agents");
|
|
155
|
+
if (agents === void 0) return;
|
|
156
|
+
const id = agent.id;
|
|
157
|
+
let current;
|
|
158
|
+
try {
|
|
159
|
+
current = typeof id === "string" ? agents.get?.(id) : void 0;
|
|
160
|
+
} catch {
|
|
161
|
+
current = void 0;
|
|
162
|
+
}
|
|
163
|
+
if (current !== agent) throw new PlanModePipelineError(NOT_LIVE_TEXT, "CALLER_NOT_LIVE");
|
|
164
|
+
let roots;
|
|
165
|
+
if (typeof agents.roots === "function") try {
|
|
166
|
+
roots = agents.roots.call(agents);
|
|
167
|
+
} catch {
|
|
168
|
+
roots = void 0;
|
|
169
|
+
}
|
|
170
|
+
if (!Array.isArray(roots)) return;
|
|
171
|
+
if (!roots.includes(agent)) throw new PlanModePipelineError(DELEGATED_TEXT, "DELEGATED_CALLER");
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* `enter_plan_mode` 的模型侧描述。
|
|
175
|
+
*
|
|
176
|
+
* **刻意压到 380 字符以内。** 工具描述与 system 段一样,每一步都随请求重发,是计划
|
|
177
|
+
* 模式期间**每一步都在付**的常驻开销(Kimi 线路按内容前缀命中,进入计划模式那一步
|
|
178
|
+
* 工具表一变,前缀必然重建一次;但重建之后,每一步还要为这些字节付输入费)。所以
|
|
179
|
+
* 这里只留「能不能调用」的四条判定:只有调度模式用;只有 L2 且 R-G 访谈收敛后才可
|
|
180
|
+
* 调用;进入这一步**只完成进入**;L0/L1 或访谈未收敛时不得调用。
|
|
181
|
+
*
|
|
182
|
+
* 探索纪律、决策完备清单、`exit_plan_mode` 唯一最后调用、打回循环都搬到
|
|
183
|
+
* `enterResultText()` 的工具返回里:工具结果是**末尾追加**,不破坏前缀,且比描述便宜。
|
|
184
|
+
*/
|
|
185
|
+
const ENTER_DESCRIPTION = "Enter plan mode for the rest of this session. Dispatch mode only: call it only once the task is triaged L2 and the R-G interview has converged (frontier empty, user confirmed shared understanding). This step completes only the entry; exploring and writing the plan happen in your next step. Never call it for L0/L1 or while a frontier question is open.";
|
|
186
|
+
/**
|
|
187
|
+
* `leave_plan_mode` 的模型侧描述。
|
|
188
|
+
*
|
|
189
|
+
* 同样压短(≤ 220 字符),只留两条别人替代不了的:它不是审批出口(审批出口是官方的
|
|
190
|
+
* `exit_plan_mode`);只在用户**明确**表示不做计划时用。
|
|
191
|
+
*/
|
|
192
|
+
const LEAVE_DESCRIPTION = "Leave plan mode without submitting a plan. Dispatch mode only: use it only when the user explicitly says no plan is wanted. It is NOT the approval exit—exit_plan_mode is; leaving approves nothing.";
|
|
193
|
+
/** 开关关着时 execute 返回的标记。 */
|
|
194
|
+
const DISABLED_TRANSITION = "disabled";
|
|
195
|
+
/**
|
|
196
|
+
* 把 `ctx.planMode.set()` 的返回值规整成字符串。
|
|
197
|
+
* @param value - 服务返回值。
|
|
198
|
+
* @returns 字符串动作;非字符串时按 `unknown` 转述。
|
|
199
|
+
*/
|
|
200
|
+
function transitionText(value) {
|
|
201
|
+
return typeof value === "string" && value !== "" ? value : "unknown";
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 当前计划模式服务;缺了就是 undefined(老宿主、或这一行挂载后被拆除)。
|
|
205
|
+
* @param ctx - 宿主上下文。
|
|
206
|
+
* @returns 服务实例或 undefined。
|
|
207
|
+
*/
|
|
208
|
+
function planModeOf(ctx) {
|
|
209
|
+
return serviceOf(ctx, "planMode");
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 取一次计划模式服务,缺了就报可执行的错。
|
|
213
|
+
* @param ctx - 宿主上下文。
|
|
214
|
+
* @returns 服务实例。
|
|
215
|
+
* @throws {PlanModePipelineError} `PLAN_MODE_UNAVAILABLE`。
|
|
216
|
+
*/
|
|
217
|
+
function requirePlanMode(ctx) {
|
|
218
|
+
const controller = planModeOf(ctx);
|
|
219
|
+
if (controller === void 0) throw new PlanModePipelineError("the plan-mode service left this session after the pipeline mounted; ask the user to restart the session and present the plan through exit_plan_mode instead", "PLAN_MODE_UNAVAILABLE");
|
|
220
|
+
return controller;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* 等一组服务到达,到齐后调一次 `onArrive`。
|
|
224
|
+
*
|
|
225
|
+
* 老代 cordis 上 `ctx.inject` 不一定存在;不是函数时返回 false,由调用方退化回
|
|
226
|
+
* 「apply 时探测一次」。回调拿到的 scope 这里**故意不用**:注册挂在行自己的 ctx
|
|
227
|
+
* 上,这样服务在这之后消失时两个工具仍在,调用时报 `PLAN_MODE_UNAVAILABLE`,
|
|
228
|
+
* 而不是变成「未知工具」。
|
|
229
|
+
* @param ctx - 宿主上下文。
|
|
230
|
+
* @param services - 要等的服务名。
|
|
231
|
+
* @param onArrive - 服务到齐后调用一次。
|
|
232
|
+
* @returns 是否订上了注入。
|
|
233
|
+
*/
|
|
234
|
+
function whenServicesArrive(ctx, services, onArrive) {
|
|
235
|
+
const inject = ctx.inject;
|
|
236
|
+
if (typeof inject !== "function") return false;
|
|
237
|
+
inject.call(ctx, services, () => {
|
|
238
|
+
onArrive();
|
|
239
|
+
});
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* 挂载「计划模式管线」这一行。
|
|
244
|
+
*
|
|
245
|
+
* 注册**由服务到达驱动**:`ctx.inject(['planMode'], …)` 在计划模式服务可用时调
|
|
246
|
+
* `registerTools`。服务永不到达(老代 harness、或部署方没在这一行所在组里装
|
|
247
|
+
* plan-mode)时零注册、不抛错,preset 照常挂载。
|
|
248
|
+
*
|
|
249
|
+
* ## 为什么不是「apply 时探测一次」
|
|
250
|
+
*
|
|
251
|
+
* cordis 里**行序 ≠ apply 顺序**:本行静态 `inject` 为空,会被立即 apply;同组里
|
|
252
|
+
* 排在它前面的 plan-mode 行要等 tools/systemPrompt/sessionProjections/agents 到齐
|
|
253
|
+
* 才 apply。于是「apply 时探测一次」总是先跑,`ctx.get('planMode')` 必然 undefined,
|
|
254
|
+
* 零注册看起来像降级成功,实际是把两个工具永久摘掉了。改成等服务到达再注册后,
|
|
255
|
+
* 两行谁先挂都不影响。
|
|
256
|
+
* @param ctx - 这一行自己的上下文(agent plane:每个会话一份)。
|
|
257
|
+
*/
|
|
258
|
+
function apply(ctx) {
|
|
259
|
+
/** 已注册就不再注册:依赖服务变化时 cordis 会拆掉注入回调再跑一遍。 */
|
|
260
|
+
let mounted = false;
|
|
261
|
+
/** 服务到达后(以及老代 fallback 里)执行的挂载主体。 */
|
|
262
|
+
const mount = () => {
|
|
263
|
+
if (mounted) return;
|
|
264
|
+
mounted = true;
|
|
265
|
+
registerTools(ctx);
|
|
266
|
+
};
|
|
267
|
+
if (whenServicesArrive(ctx, ["planMode"], mount)) {
|
|
268
|
+
Promise.resolve().then(() => {
|
|
269
|
+
if (mounted || planModeOf(ctx) !== void 0) return;
|
|
270
|
+
logInfo(ctx, "[dsh-chatgpt-subscription] plan-mode pipeline waiting for the planMode service: enter_plan_mode/leave_plan_mode are registered once it arrives");
|
|
271
|
+
});
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (planModeOf(ctx) === void 0) {
|
|
275
|
+
logInfo(ctx, "[dsh-chatgpt-subscription] plan-mode pipeline inactive: this host exposes no planMode service, so enter_plan_mode/leave_plan_mode were not registered");
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
mount();
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* 注册两个工具,只在计划模式服务确认可用后调用一次。
|
|
282
|
+
*
|
|
283
|
+
* 缺 `tools` 时零注册 + 一条 info 日志:注册面本身缺席时什么都不做,preset 照常挂载。
|
|
284
|
+
* @param ctx - 这一行自己的上下文。
|
|
285
|
+
*/
|
|
286
|
+
function registerTools(ctx) {
|
|
287
|
+
const tools = serviceOf(ctx, "tools");
|
|
288
|
+
if (tools === void 0) {
|
|
289
|
+
logInfo(ctx, "[dsh-chatgpt-subscription] plan-mode pipeline inactive: this host exposes no tools service, so enter_plan_mode/leave_plan_mode were not registered");
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* 逐步准入判定:开关关着就不把这个工具放进这一步的声明里。
|
|
294
|
+
*
|
|
295
|
+
* 新代 harness 会按这一步调用它;老代的 `register` 忽略第二个参数,那时开关由
|
|
296
|
+
* 两个 execute 里的同一次判定兜住(见 `readPlanModePipelineEnabled()`)。
|
|
297
|
+
*/
|
|
298
|
+
const admission = () => readPlanModePipelineEnabled();
|
|
299
|
+
/**
|
|
300
|
+
* 把一个工具登记进 tools 服务,并让它在整行卸载时自动注销。
|
|
301
|
+
* @param definition - 工具定义。
|
|
302
|
+
*/
|
|
303
|
+
const register = (definition) => {
|
|
304
|
+
ctx.effect(() => tools.register(definition, { when: admission }), "dsh-chatgpt-subscription: " + definition.name + " tool");
|
|
305
|
+
};
|
|
306
|
+
register(defineTool({
|
|
307
|
+
name: ENTER_PLAN_MODE_TOOL,
|
|
308
|
+
description: ENTER_DESCRIPTION,
|
|
309
|
+
parameters: {},
|
|
310
|
+
output: {
|
|
311
|
+
schema: {
|
|
312
|
+
type: "object",
|
|
313
|
+
additionalProperties: false,
|
|
314
|
+
properties: {
|
|
315
|
+
active: {
|
|
316
|
+
type: "boolean",
|
|
317
|
+
required: true,
|
|
318
|
+
description: "Whether plan mode is now in effect for this session."
|
|
319
|
+
},
|
|
320
|
+
transition: {
|
|
321
|
+
type: "string",
|
|
322
|
+
required: true,
|
|
323
|
+
description: "What the plan-mode service reported (committed, queued, cancelled, noop), or disabled when the pipeline switch is off."
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
render(_args, value) {
|
|
328
|
+
return [{
|
|
329
|
+
type: "text",
|
|
330
|
+
text: enterResultText(value)
|
|
331
|
+
}];
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
async execute(_args, exec) {
|
|
335
|
+
if (!readPlanModePipelineEnabled()) return {
|
|
336
|
+
active: false,
|
|
337
|
+
transition: DISABLED_TRANSITION
|
|
338
|
+
};
|
|
339
|
+
const agent = exec.agent;
|
|
340
|
+
assertLiveRoot(ctx, agent);
|
|
341
|
+
const transition = transitionText(requirePlanMode(ctx).set(agent, true));
|
|
342
|
+
return {
|
|
343
|
+
active: transition === "committed" || transition === "queued" || transition === "cancelled" || transition === "noop",
|
|
344
|
+
transition
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
}));
|
|
348
|
+
register(defineTool({
|
|
349
|
+
name: LEAVE_PLAN_MODE_TOOL,
|
|
350
|
+
description: LEAVE_DESCRIPTION,
|
|
351
|
+
parameters: { reason: {
|
|
352
|
+
type: "string",
|
|
353
|
+
description: "Optional short note on why planning is abandoned (for example \"the user dropped the task\"). It is recorded with this call; do not put a plan here."
|
|
354
|
+
} },
|
|
355
|
+
output: {
|
|
356
|
+
schema: {
|
|
357
|
+
type: "object",
|
|
358
|
+
additionalProperties: false,
|
|
359
|
+
properties: {
|
|
360
|
+
active: {
|
|
361
|
+
type: "boolean",
|
|
362
|
+
required: true,
|
|
363
|
+
description: "Whether plan mode is still in effect (normally false)."
|
|
364
|
+
},
|
|
365
|
+
transition: {
|
|
366
|
+
type: "string",
|
|
367
|
+
required: true,
|
|
368
|
+
description: "What the plan-mode service reported (committed, queued, cancelled, noop), or disabled when the pipeline switch is off."
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
},
|
|
372
|
+
render(_args, value) {
|
|
373
|
+
return [{
|
|
374
|
+
type: "text",
|
|
375
|
+
text: leaveResultText(value)
|
|
376
|
+
}];
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
async execute(_args, exec) {
|
|
380
|
+
if (!readPlanModePipelineEnabled()) return {
|
|
381
|
+
active: false,
|
|
382
|
+
transition: DISABLED_TRANSITION
|
|
383
|
+
};
|
|
384
|
+
const agent = exec.agent;
|
|
385
|
+
assertLiveRoot(ctx, agent);
|
|
386
|
+
return {
|
|
387
|
+
active: false,
|
|
388
|
+
transition: transitionText(requirePlanMode(ctx).set(agent, false))
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
}));
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* `enter_plan_mode` 返回给模型的正文——计划模式期间**详细指引的唯一常驻落点**。
|
|
395
|
+
*
|
|
396
|
+
* 为什么搬到这里:工具描述与 system 段每一步都随请求重发,而工具结果是**末尾追加**,
|
|
397
|
+
* 不改变已发前缀。所以探索纪律、决策完备清单、`exit_plan_mode` 作为该轮唯一且最后
|
|
398
|
+
* 的调用、打回循环、批准前不实施,全部放在这里——进入之后的每一步都还看得到它,
|
|
399
|
+
* 而代价只付一次。
|
|
400
|
+
*
|
|
401
|
+
* 体量上限由 test/plan-mode-pipeline.test.ts 断言:正常分支正文 ≤ 1400 字符。
|
|
402
|
+
* @param result - 切换结果。
|
|
403
|
+
* @returns 模型看到的文本。
|
|
404
|
+
*/
|
|
405
|
+
function enterResultText(result) {
|
|
406
|
+
if (result.transition === DISABLED_TRANSITION) return "The plan-mode pipeline is disabled in this session (the planModePipeline switch is off), so plan mode was not entered. Ask the user to enable it, or plan without plan mode.";
|
|
407
|
+
return (result.transition === "committed" || result.transition === "queued" ? "Plan mode entry recorded (" + result.transition + ")." : "Plan mode was already in effect (" + result.transition + "); nothing changed in this step.") + " This step only completes the entry: do not explore, plan, dispatch, or implement anything else now. From your NEXT step, inside Plan Mode: (1) explore read-only — reads, searches and static checks only, preferring existing functions and patterns; never edit or write files, mutate config, or run formatters, codegen or any command that rewrites tracked files; dispatch read-only subagents only on routes returned by list_subagent_models (R2). (2) write a decision-complete plan: goal and success criteria; changes grouped by subsystem; public API, schema and data-flow changes; boundaries and failure modes; test strategy; acceptance criteria; explicit assumptions — enough that an executor needs no further design decisions. (3) submit it with exit_plan_mode as the sole and final tool call of that turn; never paste the plan into a chat reply and never ask \"should I proceed?\" in prose or via ask_user_question. If the plan is rejected, fold the feedback in and submit it again via exit_plan_mode: a rejection keeps you in Plan Mode, it is not an exit. exit_plan_mode is the only approval exit: implement nothing and dispatch nothing before approval, and leave_plan_mode abandons planning without approving anything.";
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* `leave_plan_mode` 返回给模型的正文。
|
|
411
|
+
* @param result - 切换结果。
|
|
412
|
+
* @returns 模型看到的文本。
|
|
413
|
+
*/
|
|
414
|
+
function leaveResultText(result) {
|
|
415
|
+
if (result.transition === DISABLED_TRANSITION) return "The plan-mode pipeline is disabled in this session (the planModePipeline switch is off), so plan mode was not left. Ask the user to enable it if you need to leave plan mode explicitly.";
|
|
416
|
+
return "Left plan mode without submitting a plan (" + result.transition + "). Nothing was reviewed or approved: this is the abandon path, not the approval exit. exit_plan_mode is the only way to present a plan and leave plan mode; if you still intend to plan, re-enter with enter_plan_mode and submit the plan through exit_plan_mode.";
|
|
417
|
+
}
|
|
418
|
+
//#endregion
|
|
419
|
+
export { APPROVAL_EXIT_TOOL, ENTER_DESCRIPTION, ENTER_PLAN_MODE_TOOL, LEAVE_DESCRIPTION, LEAVE_PLAN_MODE_TOOL, PlanModePipelineError, SETTINGS_KEY, apply, attachPlanModePipelineSettings, enterResultText, inject, leaveResultText, name, readPlanModePipelineEnabled, resolvePlanModePipelineEnabled };
|
|
@@ -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"}
|