@epoch-agent/protocol 2.7.0 → 3.0.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/dist/index.d.ts CHANGED
@@ -130,13 +130,147 @@ declare function isPlanOutcome(value: string): value is PlanApprovalOutcome;
130
130
  /**
131
131
  * 权限契约。
132
132
  *
133
- * 5 级权限模型:[Hermes shell_hooks + Codex execpolicy]
133
+ * **两根轴**,档位只是打包名(2026-10-27,抄 codex + deepseek-harness):
134
+ *
135
+ * | 轴 | 取值 | 谁在用 |
136
+ * | ------ | ------------------------------------------------- | ------ |
137
+ * | 审批 | {@link ApprovalPolicy} = `ask` / `never` | 抄 dsh |
138
+ * | 沙箱 | {@link SandboxMode} = 三个词,一字不改地抄 codex | 见下 |
139
+ *
140
+ * 用户选的永远是**档位**(preset),不是某个 knob —— codex 的 `granular` 那四五个
141
+ * 布尔是给企业策略用的,普通用户拧不动。但**底层形状是两根轴**,所以
142
+ * 「不问,但沙箱仍然管着」这种组合将来要放开时不用重写。
143
+ *
144
+ * ## ⚠️ 2026-10-27:`bypass` 并进 `auto`,五档变四档
145
+ *
146
+ * 实测(真 `PermissionManager` 跑 15 项日常操作)合并前的弹窗数是
147
+ * **11 / 5 / 2 / 1**(default / acceptEdits / auto / bypass),而 `auto` 与
148
+ * `bypass` 只差两处:「判不了」那一格,以及规则表 `ask` 那一族。
149
+ * 两档都说不出「用户凭什么选它而不是另一个」,所以按用户 2026-10-27 的拍板合并。
150
+ *
151
+ * **合并的方向是取宽的**(`never`):老 `auto` 会问的那一类「判不了的」
152
+ * (`$(echo rm) -rf /tmp/x`)从此不问。这是合并的直接后果,也是用户明确要的 ——
153
+ * 它正是 `never` 这个语义本身。
154
+ *
155
+ * **老名字 `bypass` 留作别名**({@link LEGACY_LEVEL_ALIASES}),静默映射成 `auto`:
156
+ * 定时任务、`--permission bypass`、脚本里写着的全部照旧能跑,不提示也不报错。
134
157
  */
135
158
 
136
- type PermissionLevel = 'default' | 'acceptEdits' | 'plan' | 'auto' | 'bypass';
159
+ type PermissionLevel = 'default' | 'acceptEdits' | 'plan' | 'auto';
137
160
  /** 合法权限级别清单 —— 用于把配置文件里的自由字符串收窄成 PermissionLevel */
138
161
  declare const PERMISSION_LEVELS: readonly PermissionLevel[];
162
+ /**
163
+ * 老档位名 → 新档位名。**2026-10-27 合并 `auto` + `bypass` 时留下的兼容层。**
164
+ *
165
+ * ## 为什么是静默映射,不是提示也不是报错
166
+ *
167
+ * 用户原话(2026-10-27):「自动映射 不用提示」。三条判据:
168
+ *
169
+ * 1. **写着 `bypass` 的地方多半不是人**:定时任务(`schedule` 的 `permission` 字段)、
170
+ * CI 脚本里的 `--permission bypass`、团队提交进仓库的 `config.yaml`。
171
+ * 给它们弹一句提示,那个提示会出现在**没人读的地方**(无人值守的定时任务);
172
+ * 2. **报错更糟**:升级一次就让所有写着 `bypass` 的定时任务当场停摆,
173
+ * 而它们本来干的事(放开权限跑一遍)在新档位上完全一样;
174
+ * 3. **它不改变语义强度**:`bypass` 是「不问」,`auto` 现在也是「不问」。
175
+ * 会问的那一类「判不了的」是**合并本身**决定的,不是「读到老名字」这个动作决定的
176
+ * —— 换句话说,就算用户手工把配置改成 `auto`,行为也一模一样。
177
+ *
178
+ * ⚠️ **不许把它扩成一张「随便什么词都能落进来」的表**:只认合并前真实存在过的
179
+ * 那一个名字。多认一个词,`permission: bypas` 这种笔误就会静默变成 `auto` ——
180
+ * 那是一个 typo 把权限放到最宽。
181
+ */
182
+ declare const LEGACY_LEVEL_ALIASES: Readonly<Record<string, PermissionLevel>>;
139
183
  declare function isPermissionLevel(value: string): value is PermissionLevel;
184
+ /**
185
+ * **出厂默认档** —— 配置里没写这一格时,新会话从哪一档起。
186
+ *
187
+ * 2026-10-27 由用户拍板,从 `default`(逐条确认)改成 `acceptEdits`(请求批准)。
188
+ * 判据是**日常操作上的弹窗数**(真 `PermissionManager` 跑 15 项):两档是 11 / 5,
189
+ * 而差的那 6 个全部来自「写文件 / 联网 / 跑命令」这三类最常见的动作 ——
190
+ * 一个刚装好、什么都没配的人,第一步就撞在弹窗上。
191
+ *
192
+ * ## ⚠️ 它只管「用户没表态」,不管「判不出来」
193
+ *
194
+ * 这两个意思在代码里各有一批调用点,**别把它们并成一个**:
195
+ *
196
+ * | 语意 | 用谁 | 例子 |
197
+ * | --- | --- | --- |
198
+ * | 用户没表态(出厂默认) | 本常量 | `EpochConfigSchema` 的 `.default()`、认不出的值那一步的回落 |
199
+ * | 我们不知道(保守兜底) | 字面量 `'default'` | 权限层压根没起来时的 `?? 'default'`(`runtime/src/user-shell.ts`、`core/src/agent/prompt.ts`) |
200
+ *
201
+ * 第二族**不许跟着改**:那里没有「用户」可言,而 `acceptEdits` 比 `default` 宽
202
+ * (工作区内写文件、联网都不问)。跟着改的后果是「权限层挂掉」这件事
203
+ * 顺手把一个保守兜底换成了更宽的档 —— 那是一处降级的边界悄悄让开。
204
+ *
205
+ * ⚠️ 一个写着 `permission:` 的老配置不受这里影响:显式值永远赢(`loader` 的
206
+ * 合并顺序)。所以改这一格**不会**把已经写着 `auto` / `bypass` 的机器降下来。
207
+ */
208
+ declare const DEFAULT_PERMISSION_LEVEL: PermissionLevel;
209
+ /**
210
+ * 把外部来的自由字符串收窄成 `PermissionLevel`,**含老档位名的别名解析**。
211
+ *
212
+ * 「收窄 + 认别名」是**一件事**,所以只留这一个入口:调用方先自己
213
+ * `isPermissionLevel()` 再自己去查别名表的话,漏查的那一处表现是
214
+ * 「老配置在 A 路能读、在 B 路读不到」—— 而 B 路多半就是定时任务那条。
215
+ *
216
+ * 认不出来时返回 `undefined`(**不是**兜底成某一档):调用方各自决定
217
+ * 是报错、是忽略、还是落回默认值,那是它们的判断,不是这一个函数的。
218
+ */
219
+ declare function resolvePermissionLevel(value: string): PermissionLevel | undefined;
220
+ /**
221
+ * 审批轴 —— **两个词,一字不改地抄 deepseek-harness**
222
+ * (`APPROVAL_POLICIES = ['ask', 'never']`)。
223
+ *
224
+ * 没抄 codex 那四个(`untrusted` / `on-request` / `granular` / `never`):
225
+ * `untrusted` 是「这个项目不可信」的策略档(我们有自己的信任闸门,那是另一根轴),
226
+ * `on-request` 是**让模型决定何时问**(判据不在静态表里,和本仓库
227
+ * 「命令弹不弹窗不经过 AI」那条红线直接冲突),`granular` 是五六个布尔的企业档。
228
+ * dsh 那两个词够用,而且它已经是「两根轴」的形状。
229
+ *
230
+ * ⚠️ **这一根轴今天是档位的函数,不是独立的配置项**
231
+ * ({@link approvalPolicyForLevel})。用户选档位,档位推轴 —— codex / dsh 都允许
232
+ * 单拧 knob,我们暂时不放开,判据写在 `infra/src/sandbox/policy.ts` 的文件头。
233
+ * 但**形状按两根轴写**:将来放开时改的是「谁能写这个 knob」,不是判定逻辑。
234
+ */
235
+ type ApprovalPolicy = 'ask' | 'never';
236
+ /** 合法审批策略清单。用途同 {@link PERMISSION_LEVELS} */
237
+ declare const APPROVAL_POLICIES: readonly ApprovalPolicy[];
238
+ /**
239
+ * 档位 → 审批轴。**这是「两根轴」在今天的唯一投影点。**
240
+ *
241
+ * | 档位 | 审批 | 为什么 |
242
+ * | ------------- | ---- | ------ |
243
+ * | `plan` | ask | 它仍然会问一句:工作区外的 `file_read`(判据在 `by-level.ts` 的 `checkPlan`)。「只读」限制的是**写**,不是**问** |
244
+ * | `default` | ask | 逐条确认 |
245
+ * | `acceptEdits` | ask | 请求批准(问的东西少了,但还在问) |
246
+ * | `auto` | never | 完全访问:**连「判不了」的都不问** |
247
+ *
248
+ * ⚠️ **`plan` 不是 `never`**:它有一格真的要问(工作区外的读),把这一格
249
+ * 说成 `never` 会让「plan 档下工作区外读文件」那个弹窗变成一句无法解释的例外。
250
+ *
251
+ * ⚠️ **别在别处再写一份这个映射**(比如在 `by-level.ts` 或 UI 里各判一次
252
+ * `level === 'auto'`):两张表分叉的表现是「屏幕说这一档不问,判定却在问」,
253
+ * 而两边各自都自洽。
254
+ */
255
+ declare function approvalPolicyForLevel(level: PermissionLevel): ApprovalPolicy;
256
+ /**
257
+ * 沙箱模式 —— 三个名字一字不改地拄 Codex(`sandbox_mode`)。
258
+ *
259
+ * ## 为什么 protocol 里要再写一份
260
+ *
261
+ * 真源住在 infra 的 `sandbox/policy.ts`(因为它算边界、且 `plugin-terminal`
262
+ * 按分层只依赖 protocol + infra,够不着 core)。而这一格要挂在
263
+ * {@link ToolContext.sandboxEscalation} 上而两份**必须逐字相等** —— 分叉的表现是
264
+ * 「引擎接受了一个 `plugin-terminal` 不认识的词」,而那会静默落回当前档,
265
+ * 也就是**用户批了一次升权、实际什么都没变**。
266
+ *
267
+ * 相等不靠「两边都这么写的」,靠一条用例锁着(core 同时够得着两边):
268
+ * `packages/core/__tests__/sandbox-mode-parity.test.ts`。
269
+ *
270
+ * 为什么不让 protocol 从 infra 拿:protocol 是最底层,infra 依赖 protocol 的方向
271
+ * 反过来就先倒了(`check:layers` 会红)。
272
+ */
273
+ type SandboxMode = 'read-only' | 'workspace-write' | 'danger-full-access';
140
274
  /**
141
275
  * 操作类别。
142
276
  * `code_exec` 单列一类:它跑在 OS 沙箱里(无网、写不出沙箱、读不到 $HOME),
@@ -338,6 +472,25 @@ interface PermissionManager {
338
472
  * 不给等于「只有主工作目录一个根」,也就是方案 29 之前的行为。
339
473
  */
340
474
  getExtraRoots?(): readonly string[];
475
+ /**
476
+ * 这一次会话是不是**无人值守**(CLI 的 `--print` / 评测 / 任何 `interactive: false`
477
+ * 的宿主)。2026-10-27 加。
478
+ *
479
+ * ## 为什么引擎这一层要问它
480
+ *
481
+ * 普通的权限审批不需要问:那一档在 `check()` 里就被 headless 预授权那一层
482
+ * 落成 `requireApproval: false` 了(判据在 `manager.ts` 第 3 层)。
483
+ * 但**沙箱升权那条路绕过了 `check()`**(它是审批之后的第二个问句,
484
+ * 见 `ToolExecutor.resolveEscalation`),于是它自己得判一次 —— 判漏的形态
485
+ * 不是拒绝,是**永久挂在 await 上**:宿主那座桥在无人值守下照样存在
486
+ * (请求进了会话队列,而队列那头没有人)。
487
+ *
488
+ * ⚠️ **别用它顶替 `requireApproval` 的判定**:两者问的不是一件事,
489
+ * 一个是「这一档要不要弹框」,一个是「此刻有没有人能答」。
490
+ *
491
+ * 可选:嵌入宿主不给时按「要问」(`false`)算 —— 那是这一格之前的全部行为。
492
+ */
493
+ isNonInteractive?(): boolean;
341
494
  }
342
495
 
343
496
  /**
@@ -457,6 +610,24 @@ interface ToolContext {
457
610
  * 而那种失败用户报得出来。
458
611
  */
459
612
  sandboxTerminal?: boolean;
613
+ /**
614
+ * **模型请求、用户批准的那一个升权目标**(方案 65 §2.1)。
615
+ *
616
+ * 引擎在 `ToolExecutor.resolveEscalation()` 里校验并审批之后才填它,所以工具侧
617
+ * 拿到的是一份**已经获批**的结论,不该再判一次。消费者只有一个:
618
+ * `plugin-terminal` 的 `sandboxPolicyFor()` —— 它拿它覆盖
619
+ * `sandboxModeForLevel(ctx.permissionLevel)` 推出来的那一档。
620
+ *
621
+ * ## 为什么不给 = 用档位推出来的那一档
622
+ *
623
+ * 缺省朝「严」是刻意的:宿主漏填这一格的表现是「升权没生效」(用户批了一次、
624
+ * 命令还是被挡),报得出来;反方向漏填(默认给个宽的值)是静默失去边界。
625
+ * 同一句话的形状在 {@link sandboxTerminal} 上已经有过一次。
626
+ *
627
+ * ⚠️ **它只对这一次调用生效。** 后台任务 / 持久 shell 会话各自的边界在**创建**
628
+ * 那一刻定下(`startTask` / `openShell`),之后那个值住在会话里,和这一格无关。
629
+ */
630
+ sandboxEscalation?: SandboxMode;
460
631
  /** 取消信号(AbortController.signal) */
461
632
  signal?: {
462
633
  readonly aborted: boolean;
@@ -785,6 +956,16 @@ type Translate = (key: string, vars?: TranslateVars) => string;
785
956
  type FlatCatalog = Record<string, string>;
786
957
  /** 语言 → 拍平的 catalog。宿主注入 / 构建期注入的那份就是这个形状 */
787
958
  type Catalogs = Partial<Record<Lang, FlatCatalog>>;
959
+ /**
960
+ * 把 `{name}` 形式的占位符换成值。**没给的占位符原样留着**。
961
+ *
962
+ * 导出它是因为这条规则现在有第二个消费方:宿主自己写的一整句话
963
+ * (`EpochConfig.scheduleRemoveConfirm` 那种)**不走 catalog**,但它里面的
964
+ * `{name}` 要和 catalog 里那些文案里的 `{name}` 同一个意思。抄一份替换逻辑的
965
+ * 下场是两处对「没给的占位符怎么办」分叉 —— 而这正是 {@link makeTranslate}
966
+ * 那条 ⚠️ 点名不能出的错(换成空串会让一句话看起来完好无损、实际丢了关键信息)。
967
+ */
968
+ declare function fillPlaceholders(text: string, vars: TranslateVars): string;
788
969
  /**
789
970
  * 一句文案里用到的占位符(去重,按出现顺序)。
790
971
  *
@@ -1732,10 +1913,43 @@ interface HostUser {
1732
1913
  * 配置退默认值)。装不下由界面收省略号。
1733
1914
  */
1734
1915
  label: string;
1916
+ /**
1917
+ * 行首那张**图片**(2026-10-22)。**不给、或者给的用不了,就照 {@link icon} 画图标。**
1918
+ *
1919
+ * 只收两种浏览器能直接塞进 `<img src>` 的值:
1920
+ *
1921
+ * | 形态 | 例 | 什么时候用它 |
1922
+ * | --------- | --------------------------------- | ------------------------------------------------ |
1923
+ * | data-URL | `data:image/png;base64,iVBORw0…` | 图在你手上(本地文件 / 接口给的字节)—— 转 base64 |
1924
+ * | `https://` | `https://cdn.example.com/me.png` | 图已经有一个公网地址 |
1925
+ *
1926
+ * ⚠️ **不收本地文件路径**(`/Users/…`、`C:\…`、`file://`):这张页是浏览器,
1927
+ * 它读不到宿主那台机器的盘。让服务端读盘再转 base64 要顺带定一串规矩(相对哪个
1928
+ * 目录、多大算大、文件没了算什么),而宿主本来就在主进程里 —— 自己 `readFile` +
1929
+ * `toString('base64')` 是一行代码,写进这个键就完事。
1930
+ *
1931
+ * ⚠️ **也不收 `http://`**(混合内容 / 中途可改)。`javascript:` / `blob:` / 相对路径
1932
+ * 一律当没给。
1933
+ *
1934
+ * ⚠️ **格式不在这份契约上校验**,判据同 {@link icon}:认不出来的当没给。具体白名单
1935
+ * (哪几种 `image/*`、多大的不要)在第一方 Web UI 上(`shell/host-menu.tsx` 的
1936
+ * `avatarSrc`)—— 图标名那份词表是**它**的私有词表,这一条同理:写进契约等于对宿主
1937
+ * 承诺这些规则一个都不改。
1938
+ *
1939
+ * **优先级:图可用就用图;图用不了(认不出来 / 加载失败)落 {@link icon};`icon`
1940
+ * 也不认得落 `user-round`。** 两个都写是有意义的:图挂了还有一枚说得通的图标,
1941
+ * 而不是一个破图框。
1942
+ *
1943
+ * 📌 建议 **≤256KB**(base64 之后约 340k 字符):这个字符串会跟着 `GET /api/config`
1944
+ * 走一遍,而那是首屏必经的端点。超大的当没给(落图标),不会让整份配置退默认值。
1945
+ */
1946
+ avatar?: string;
1735
1947
  /**
1736
1948
  * 行首那枚图标的名字。**不给就落 `user-round`**(那一枚是这一格的兜底,
1737
1949
  * 不是一个「没有图标」的档)。
1738
1950
  *
1951
+ * 它是 {@link avatar} 用不了时的**回落**:两个都给时,图片优先。
1952
+ *
1739
1953
  * ⚠️ 类型是 `string` 而不是联合,认哪几个名字由第一方 Web UI 说了算(一张
1740
1954
  * **白名单**,判据在 web 的 `shell/host-menu.tsx` 的 `HOST_ICONS` 上),
1741
1955
  * **认不出来的当没给** —— 逐字同 [`SidebarMenuItem.icon`](./sidebar-menu.ts):
@@ -1915,8 +2129,8 @@ declare function entryDisplayName(entry: Pick<ModelEntry, 'name' | 'model'>): st
1915
2129
  * | | 单位 | 谁定的 | 换不换 |
1916
2130
  * | --- | --- | --- | --- |
1917
2131
  * | 单价表、`micro-USD` 累加、闸门比较 | **美元** | 上游 provider 的挂牌价 | **不换** |
1918
- * | `costUsd` / `maxCostUsd` / `maxBudgetUsd` / DB 里那几列 | **美元** | 契约 | **不换** |
1919
- * | 用户**输进来**的那几格(设置页、`--max-budget-usd`、定时任务表单) | **美元** | 标签上逐字写着「(美元)」 | **不换** |
2132
+ * | `costUsd` / `maxCostUsd` / DB 里那几列 | **美元** | 契约 | **不换** |
2133
+ * | 用户**输进来**的那几格(设置页、`--max-budget-usd`) | **美元** | 标签上逐字写着「(美元)」 | **不换** |
1920
2134
  * | 屏幕上印出来的每一串金额 | `display.currency` | 用户 | **这里换** |
1921
2135
  *
1922
2136
  * 换句话说,币种在这个仓里**只是一层皮**:它进不了任何一句算术,也进不了任何一个
@@ -1925,7 +2139,7 @@ declare function entryDisplayName(entry: Pick<ModelEntry, 'name' | 'model'>): st
1925
2139
  * 1. **上游单价本来就是美元计价的**(`core/src/provider/model-metadata.ts` 那张静态表、
1926
2140
  * 以及 OpenRouter 抓回来的那份,都是 USD / MTok)。让内部换成别的币种,等于在
1927
2141
  * 每一笔账上多乘一次汇率再除回来 —— 多两次浮点,换不到任何东西;
1928
- * 2. **落盘和网线上的字段名带着 `Usd` 后缀**(`costUsd`、`max_budget_usd`、
2142
+ * 2. **落盘和网线上的字段名带着 `Usd` 后缀**(`costUsd`、`maxCostUsd`、
1929
2143
  * `microUsd`)。让它们装别的币种,字段名当场变成假话,而**没有任何一处会红**;
1930
2144
  * 3. **汇率是会变的,账是不该变的。** 用户今天把 `rate` 从 7.1 改成 7.3,
1931
2145
  * 上个月那几段会话的**历史账**不该跟着动。只在展示时乘一次,这件事自动成立 ——
@@ -2746,6 +2960,23 @@ interface EpochConfig {
2746
2960
  /** 缺省 = `true`(沙箱照常包)。见上面那段「判它必须显式跟 `false` 比」 */
2747
2961
  terminal?: boolean;
2748
2962
  };
2963
+ /**
2964
+ * `delegate_task` 派出去的子任务(2026-10-27)。
2965
+ *
2966
+ * ⚠️ **这一格是 2026-10-27 补上的,而它揭露的那件事值得记一笔**:
2967
+ * 在这之前子任务的时间上限是 `DelegateManager` 构造函数里写死的 `300_000`,
2968
+ * 装配层从 `createDelegateTool(runner, undefined, ...)` 传 `undefined` ——
2969
+ * 于是「5 分钟硬切」这件事用户那边一个字都改不动,而「调研整个仓库」这类活
2970
+ * 十几分钟就过去了。撞上去的表现是汇总里一句 `[超时]`,半截结论不保留。
2971
+ */
2972
+ delegate?: {
2973
+ /**
2974
+ * 一个子任务最多跑多久(秒)。**缺省 900(15 分钟);`0` = 不限时。**
2975
+ *
2976
+ * 卡的是单个子任务,不是整批 —— 三个子任务并发跑,整批最长还是这个数。
2977
+ */
2978
+ taskTimeoutSec?: number;
2979
+ };
2749
2980
  /**
2750
2981
  * 按需发现工具(2026-08-26)。
2751
2982
  *
@@ -2850,6 +3081,42 @@ interface EpochConfig {
2850
3081
  */
2851
3082
  threshold?: number;
2852
3083
  };
3084
+ /**
3085
+ * 单次请求的**体积**上限(2026-10-28)。和 {@link compression} 那一段是两个
3086
+ * 量纲、两条线,别混。
3087
+ *
3088
+ * ## 为什么需要它:token 那条线看不见字节
3089
+ *
3090
+ * | 量纲 | 谁在判 | 一张 2 MB 的截图记多少 |
3091
+ * | --- | --- | --- |
3092
+ * | token | `compression.threshold` / `OVERSIZE_RATIO` | 约一千出头(按宽高估) |
3093
+ * | **字节** | **这一段** | 2.7 MB(base64 是原文的 4/3) |
3094
+ *
3095
+ * 而 chat completions 无状态、每轮重发整段历史 —— 于是「几张截图」在 token
3096
+ * 账上还空着九成,请求体已经撞穿上游网关那条上限了。表现是
3097
+ * `PROVIDER_BODY_TOO_LARGE`(1051)或者上游原话「请求体过大」,而两条 token
3098
+ * 线一个都不会动。
3099
+ *
3100
+ * ## 缺省行为:**有一个保守的缺省值,不是「不管」**
3101
+ *
3102
+ * 这一点和 {@link artifacts} / {@link compression} 那一类「不配就按内置默认」
3103
+ * 是同一个形状。不给这一段时用 core 的
3104
+ * `DEFAULT_MAX_REQUEST_IMAGE_BYTES`,那个数**没有权威出处**(判据写在
3105
+ * `provider/body-limit-cache.ts` 的文件头),它靠「撞一次学一次」自我修正。
3106
+ */
3107
+ limits?: {
3108
+ /**
3109
+ * 单次请求里**所有图片 base64 的合计**上限(字节)。
3110
+ *
3111
+ * ⚠️ 只管图片,不管文本:文本太大时 token 那条线会先抓住(判据在
3112
+ * `context/request-bytes.ts` 的文件头)。所以这个数不必等于请求体总上限,
3113
+ * 它只是「图片这一部分允许占多少」。
3114
+ *
3115
+ * 缺省 = core 的 `DEFAULT_MAX_REQUEST_IMAGE_BYTES`(8 MiB,猜的)。
3116
+ * 撞上一次之后,学到的值会在它更小时顶替它(`effectiveImageBudget`)。
3117
+ */
3118
+ maxRequestImageBytes?: number;
3119
+ };
2853
3120
  /**
2854
3121
  * 长期记忆的三个配额(`MEMORY.md` / `USER.md`,core 的 `memory/manager.ts`)。
2855
3122
  *
@@ -3464,7 +3731,60 @@ interface EpochConfig {
3464
3731
  /** 单个任务的录像总量上限(MB),缺省 64。先撞哪条算哪条 */
3465
3732
  maxRecordingMb?: number;
3466
3733
  };
3734
+ /**
3735
+ * 删一条定时任务时那句确认,宿主可以整句换掉(2026-10-28)。
3736
+ * **缺省 = 我们那句**(`web.ui.auto.remove_confirm`,跟着界面语言翻)。
3737
+ *
3738
+ * 它是「宿主装配期按下的事实」那条路上的一格(`brand` → `sidebarMenu` → `blankCards`
3739
+ * 或 `blankGreeting` → `user` → 这一个):只读、`GET /api/config` 原样下发、
3740
+ * 没配就不带这个键、界面上没有写端点。**别把它当「第 N 个」去数** ——
3741
+ * 那条路上的编号在这份仓库里已经数岔过一次(`userMenuHost` 和 `settingsHidden`
3742
+ * 各被叫作「第六个键」),关系说清楚比序数可靠。
3743
+ *
3744
+ * ## 收 `HostText` 而不是 `string`:理由逐字同 {@link blankGreeting}
3745
+ *
3746
+ * 这句话**今天就在我们的 catalog 里**(中文 / 英文各一份)。照 `brand` 那样收纯
3747
+ * 字符串的话,宿主一配,把界面切成英文的人看到的就是一句中文 —— 而这个框又是
3748
+ * 不可逆动作之前唯一的一道门,看不懂等于没有。
3749
+ *
3750
+ * ## ⚠️ 整句都归宿主,包括「记录和录像找不回来」那半句
3751
+ *
3752
+ * 这是 2026-10-28 用户拍的那一档,代价如实记着:**宿主漏写那半句,屏幕上就没有
3753
+ * 任何地方说这件事**。我们不拦,也不偷偷补一句在后面 —— 一句话被我们补了半句之后,
3754
+ * 宿主改它自己那句话时会发现屏幕上多出来的字不是他写的。
3755
+ *
3756
+ * 默认那一档(不配这个键)因此逐字节等于这一笔之前:屏幕上还是那一整句,
3757
+ * 含「运行记录和录像会一起删掉,找不回来。系统里那条定时也会一起撤掉。」
3758
+ * 宿主真想保留这个警告,把他要改的那半句之外原样抄过去就行 —— `docs/EMBEDDING.md`
3759
+ * 那一段给的样例就是这么写的。
3760
+ *
3761
+ * ## `{name}` 是**唯一**认得的占位符,而且不强制
3762
+ *
3763
+ * 我们那句里 `{name}` 是任务名(`t('…', { name: def.name })` 渲一遍),删掉它
3764
+ * 也让得过去(「确定删除这条任务?」是句说得通的话)。写别的 `{foo}` 不会被替换,
3765
+ * 原样留在屏幕上 —— 判据同 `makeTranslate` 那条「没给的占位符原样留着」:
3766
+ * 换成空串会让一句话看起来完好无损、实际丢了关键信息。
3767
+ *
3768
+ * ⚠️ core 的 schema 会为「一个占位符都没有」的情况产一条 warn 诊断吗?**不会**,
3769
+ * 而且那是刻意的:这一句换掉之后仍然说得通,属于正当配置。诊断只管一种事 ——
3770
+ * 写了 `{name}` 之外的占位符(那多半是想写 `{{name}}` 转义或者抄错了别的键),
3771
+ * 见 `scheduleRemoveConfirmIssues`。
3772
+ *
3773
+ * ⚠️ **空串 / 空表是配错了**(不要自定义就别写这个键),判据同 {@link blankGreeting}:
3774
+ * 一条带字段路径的 warn 诊断然后整份配置退默认值 —— 而这一格退默认的后果很轻,
3775
+ * 屏幕上还是我们那一整句。
3776
+ */
3777
+ scheduleRemoveConfirm?: HostText;
3467
3778
  }
3779
+ /**
3780
+ * 那一句删除确认里**唯一**被替换的占位符(2026-10-28)。
3781
+ *
3782
+ * 值的来源是「这个界面上那条任务叫什么」—— 也就是我们那句 catalog 文案里的
3783
+ * `{name}`。写在 protocol 而不是各写一份:core 的 schema 用它判「宿主写了别的占位符」
3784
+ * (`scheduleRemoveConfirmIssues`),web 用它填值。两处各写一个字面量的话,
3785
+ * 改了一处之后那条诊断会在一个完全正常的新配置上报红。
3786
+ */
3787
+ declare const SCHEDULE_CONFIRM_PLACEHOLDER = "name";
3468
3788
  /**
3469
3789
  * 支持的搜索后端。**三档「不用再办一个账号」的**:
3470
3790
  *
@@ -4430,6 +4750,37 @@ declare function filePartSummary(part: EpochFilePart): string;
4430
4750
  * 逐字冻住,理由同 {@link OMIT_LABEL}(进模型 prompt、进 eval 指纹、不进 catalog)。
4431
4751
  */
4432
4752
  declare function imagePartOmittedSummary(part: EpochImagePart): string;
4753
+ /**
4754
+ * 历史里的图因为**请求体太大**被下放之后,留在原位的那一行(2026-10-28)。
4755
+ *
4756
+ * ## 为什么不能复用 {@link imagePartOmittedSummary}
4757
+ *
4758
+ * 那一句的结论是「当前模型不支持图片输入」——**这个场景下它是假话**:模型是
4759
+ * 支持图的,超的是网关那条字节线,而换个模型、换条消息都一样大。更贵的后果是
4760
+ * 它会诱发一个错误的下一步:模型读到「不支持」,会建议用户「重发一次」或者
4761
+ * 「换张图」,而重发多少次、换多小的图都不改变历史里那坨 base64 的体积。
4762
+ *
4763
+ * ## 为什么必须带一个下一步
4764
+ *
4765
+ * 判据同 {@link OMIT_LABEL} 那张表:`denied` 那一档**管用**(原图在 artifact
4766
+ * 目录里躺着,`file_read` 拿得到),所以要指过去;`binary` 那一档不管用,
4767
+ * 所以明说「别回头让用户贴」。这一档属于前者 —— 下放的是**引用**,不是文件,
4768
+ * 文件还在 `<homeDir>/artifacts/<sid>/` 下(判据在 infra 的 `writeArtifact`)。
4769
+ *
4770
+ * ## 逐字冻住
4771
+ *
4772
+ * 理由逐字同 {@link OMIT_LABEL}:它进模型 prompt、进 eval 指纹、**不进 catalog**
4773
+ * (跟着界面语言变的后果见 §33.2)。
4774
+ */
4775
+ declare const OFFLOADED_IMAGE_NOTE = "[\u56FE\u7247\u5DF2\u4E0B\u653E\uFF1A\u539F\u56FE\u4ECD\u5728 artifact \u76EE\u5F55\u91CC\uFF0C\u9700\u8981\u5C31\u8C03 file_read \u6309\u8DEF\u5F84\u53D6\uFF1B\u522B\u8BA9\u7528\u6237\u91CD\u53D1\uFF0C\u91CD\u53D1\u4E5F\u4E0D\u6539\u53D8\u4F53\u79EF]";
4776
+ /**
4777
+ * 把一张图片部件换成上面那句占位。**内容一个字节都不留** —— 这是「下放」的
4778
+ * 全部含义:原图在 artifact 目录里,引用它的是路径,不是 base64。
4779
+ *
4780
+ * `mediaType` 只在有值时才带进占位文案,判据同 {@link imagePartOmittedSummary}
4781
+ * 那半句:不知道就写「未知类型」,别编一个 `image/png`。
4782
+ */
4783
+ declare function offloadedImagePart(): EpochTextPart;
4433
4784
  /**
4434
4785
  * 引用的会话在纯文本投影里长什么样。**不吐那段会话的正文** —— 同 `filePartSummary`。
4435
4786
  *
@@ -4617,9 +4968,19 @@ interface EpochMessage {
4617
4968
  /**
4618
4969
  * 这一步模型的思考原文(推理模型的 `reasoning-delta` 累加)。2026-08-18。
4619
4970
  *
4620
- * **只给人看,不回灌模型**:`sdk-adapter.ts` 一个字都不读它。加它是因为
4621
- * 刷新页面之前屏幕上有「深度思考」那一段,刷新之后整段消失 —— 而那不是
4622
- * 「这一轮没想」,是我们没记。
4971
+ * ## 它现在是**两个**用途,而 2026-10-28 之前只有第一个
4972
+ *
4973
+ * 1. **给人看**:刷新页面之前屏幕上有「深度思考」那一段,刷新之后整段消失 ——
4974
+ * 而那不是「这一轮没想」,是我们没记。
4975
+ * 2. **回灌模型**(2026-10-28 起):DeepSeek 思考模式 + `tools` 时,官方文档
4976
+ * 要求「all previous turns 的 `reasoning_content` 都要原样回传」,漏一发就
4977
+ * `400 The reasoning_content in the thinking mode must be passed back to the API.`
4978
+ * 所以 `loop.ts` 往 `messages` 里 push assistant 时带上它、`sdk-adapter`
4979
+ * 把它翻成 SDK 的 `reasoning` 部件。
4980
+ *
4981
+ * ⚠️ **翻不翻是 provider 的事**,判据在 registry 的 `CARRIES_REASONING_BACK` 上 ——
4982
+ * 别家(google / anthropic / openai…)收到这个部件只会各自改写或报 unsupported
4983
+ * (它们需要的 providerOptions 我们存不下来),所以那几家**一个字都不发**。
4623
4984
  *
4624
4985
  * ⚠️ **它属于某一步,不属于整轮。** 一轮里模型可以想一次、调个工具、再想一次,
4625
4986
  * 每次的思考挂在**它自己那条 assistant 行**上,位置就是它真实的时序位置。
@@ -5471,6 +5832,32 @@ type NoticeCode =
5471
5832
  * run 的每一轮都要重新摘一次,逐轮报的话一次多工具调用的对话会刷出十几行。
5472
5833
  */
5473
5834
  | 'history-images-stripped'
5835
+ /**
5836
+ * **历史里那几张图因为请求体太大被下放了**,会话还能继续(2026-10-28)。
5837
+ *
5838
+ * ## 为什么和上面 `history-images-stripped` 不是同一件事
5839
+ *
5840
+ * 两件事触发的原因不同、换一个模型能不能好也不同 —— 判据就是那张分工表:
5841
+ *
5842
+ * | | 为什么摘 | 换个模型会好吗 | 用户能改什么 |
5843
+ * | --- | --- | --- | --- |
5844
+ * | `history-images-stripped` | 这个模型**不认图**(能力) | **会** | 换个认图的模型 |
5845
+ * | 这一条 | 请求体**超了网关的字节线**(体积) | **不会**(一样大) | 删掉旧消息 / 压一次 |
5846
+ *
5847
+ * 合成一条的话,说给用户的那句话会指错方向:用户按「模型不认图」去换模型,
5848
+ * 换完还是发不出去。
5849
+ *
5850
+ * ## 没有这一帧的话,这件事同样静默
5851
+ *
5852
+ * 下放是**有损**的:模型此后看不见那几张像素,而屏幕上那段对话还在。它接下来
5853
+ * 那句「你那张截图里……」会答得对不上,而没有任何线索说过发生了什么。这一点
5854
+ * 逐字同 `context-compacted` 的理由。
5855
+ *
5856
+ * ⚠️ **一次 run 只发一帧**,判据同 `images-dropped`:下放之后同一段历史在每一轮
5857
+ * 都会再被数一遍、很可能再被下放几张,逐轮报的话一次多工具调用的对话会刷出
5858
+ * 十几行同样的话。
5859
+ */
5860
+ | 'images-offloaded'
5474
5861
  /**
5475
5862
  * 用户**自己按了停**,而那一刻在飞的是一次 provider 请求(2026-09-17)。
5476
5863
  *
@@ -5698,7 +6085,22 @@ interface EpochPlugin {
5698
6085
  * HookManager 却是宽的那份。这里合并成唯一一份。
5699
6086
  */
5700
6087
 
5701
- type HookType = 'session:start' | 'session:end' | 'turn:before' | 'turn:after' | 'tool:before' | 'tool:after' | 'stop' | 'compress:after' | 'transform:tool:output' | 'transform:response' | 'transform:user:input' | 'verify:stop';
6088
+ type HookType = 'session:start' | 'session:end'
6089
+ /**
6090
+ * `delegate_task` 派出去的子任务开始 / 结束(2026-10-27)。
6091
+ *
6092
+ * ## 为什么值得两个新事件
6093
+ *
6094
+ * 子 agent 在此之前对 hook 是**完全隐形**的:它跑一整轮、调几十次工具、
6095
+ * 花掉真金白银,而 `session:start` / `stop` 只覆盖主会话。想「每次子任务开始
6096
+ * 时记一笔」「子任务结束时发通知」的插件无处可挂。
6097
+ *
6098
+ * ## `sessionId` 是**子会话**那个
6099
+ *
6100
+ * 和 `session:start` 一致(那个也是当前会话),而父会话 id 在
6101
+ * `event.data.parentSessionId` 里 —— 需要区分两者的插件看那一格。
6102
+ */
6103
+ | 'subagent:start' | 'subagent:stop' | 'turn:before' | 'turn:after' | 'tool:before' | 'tool:after' | 'stop' | 'compress:after' | 'transform:tool:output' | 'transform:response' | 'transform:user:input' | 'verify:stop';
5702
6104
  interface HookEvent {
5703
6105
  type: HookType;
5704
6106
  sessionId: string;
@@ -5890,13 +6292,73 @@ declare const SCHEDULE_MAX_TIMES_PER_DAY = 24;
5890
6292
  */
5891
6293
  declare const SCHEDULE_INTERVAL_MIN_MINUTES = 5;
5892
6294
  declare const SCHEDULE_INTERVAL_MAX_MINUTES: number;
6295
+ /**
6296
+ * 一条**新建**定时任务落在哪一档权限 —— 三条创建路径共用的唯一真源。
6297
+ *
6298
+ * ## 为什么必须是 `auto`(最高档)
6299
+ *
6300
+ * 2026-10-27 用户拍板:「定时任务默认给最高权限」。判据是**定时任务没人可问**:
6301
+ * 它在半夜自己跑,撞到要确认的操作时引擎那条路的结局不是「等一等」而是
6302
+ * **直接拒 + 记一条欠条**(`core/src/permission/manager.ts` 的
6303
+ * `non_interactive_denied`)。于是低档在这里的身价和对话里完全不同:
6304
+ * 对话里选「逐条确认」只是多点几次鼠标,定时任务里选它等于**这个任务到点必然失败**,
6305
+ * 而反馈回路按天算 —— 用户第二天早上才知道。
6306
+ *
6307
+ * 这条结论不是新拍的:web 表单 2026-09-18 就已经把新建默认改成了 `bypass`
6308
+ * (合并后的 `auto`),理由和上面一字不差。真正改的是**另外两条路没跟上**,
6309
+ * 于是同一天建的任务,「在表单里建」和「用 CLI 建」落的是两个档 ——
6310
+ * 而这件事没有任何地方会报错。
6311
+ *
6312
+ * ## ⚠️ 它只管「新建时不说话」,不管「改一条已有任务」
6313
+ *
6314
+ * | 场景 | 用谁 |
6315
+ * | --- | --- |
6316
+ * | 新建(CLI `add` / 表单 blank / `schedule_draft` 的 create) | 本常量 |
6317
+ * | 改一条已有任务时某一格没提 | **那条任务现在的值**,不落回这里 |
6318
+ *
6319
+ * 把第二行也指过来是错的:一份只改了触发器的提案会把权限档从用户设的那一档
6320
+ * 悄悄搬到最宽的一档(`core/src/schedule/draft.ts` 的 `persist` 与
6321
+ * `validateDraft` 都是 `draft.permission ?? current?.permission ?? …`,
6322
+ * 那个 `?? …` 兜的是「current 也没有」这种不该发生的形状)。
6323
+ *
6324
+ * ## 🔴 它带一条硬约束:`auto` 档新建时必须「我明白」
6325
+ *
6326
+ * 判据在 `core/src/schedule/validate.ts` 的 `bypassIssues`:不问人这一档
6327
+ * 存下来之前要过三道网(工作目录不许宽得等于没绑 / 超时必须为正 /
6328
+ * 二次确认)。**默认值改成这一档之后,三条创建路径都替用户把那个确认勾上**
6329
+ * (用户 2026-10-27 明确选的口径:「默认替用户勾上,和 web 表单今天一样」)——
6330
+ * 表单那条路 2026-09-18 就是这么做的(`web/src/automation/form-state.ts` 的
6331
+ * `ackFor()`),CLI 与 `schedule_draft` 现在跟上。
6332
+ *
6333
+ * ⚠️ **「替它勾上」不等于撤掉那道网**:勾是**显式的、看得见的、取消得掉**的
6334
+ * —— 表单里那一勾照旧画在屏幕上,取消了就存不下;另两条路没有勾选框可取消,
6335
+ * 所以它们的确认就是**用户在建这条任务时说的那句话本身**。剩下两道网
6336
+ * (工作目录、超时)三条路一条都没放过。
6337
+ *
6338
+ * ⚠️ **中间那道「尺子必须为正」2026-10-29 缩成了只剩超时**:定时任务那格预算
6339
+ * (`maxBudgetUsd`)整个撤掉了,于是这一档下唯一拦得住「跑飞」的是 `timeoutMs`。
6340
+ * 判据全文在 `validate.ts` 的 `bypassIssues()` 第 2 条上。
6341
+ */
6342
+ declare const SCHEDULE_DEFAULT_PERMISSION: PermissionLevel;
5893
6343
  /**
5894
6344
  * 一次运行的结局。
5895
6345
  *
5896
6346
  * 后三个是「没跑」而不是「跑失败了」,它们必须和 `failed` 分开 ——
5897
6347
  * 界面上把「上一次因为上一次还在跑所以跳过了」显示成红叉,用户会去查一个不存在的故障。
5898
6348
  */
5899
- type ScheduleRunStatus = 'ok' | 'failed' | 'denied' | 'timeout' | 'budget' | 'skipped-overlap' | 'skipped-window' | 'missed';
6349
+ type ScheduleRunStatus = 'ok' | 'failed' | 'denied' | 'timeout'
6350
+ /**
6351
+ * 触顶。
6352
+ *
6353
+ * ⚠️ **2026-10-29 起这个名字有点窄了,但一个字节都别改**:定时任务自己那格
6354
+ * 预算(`maxBudgetUsd`)那天撤掉了,而这个值仍然有两个产出点 ——
6355
+ * `max-turns`(轮次闸门)和跨会话预算 `budget.maxCostUsd` 触顶
6356
+ * (判据在 runtime 执行器的 `FINISH_STATUS` 上)。
6357
+ *
6358
+ * 🔴 **库里老运行记录里躺着这个值**:从联合类型里删掉它,那些行会在读路径上
6359
+ * 变成一个类型上说不出口的状态。改名/删除要配一条数据迁移,不是一次干净的改动。
6360
+ */
6361
+ | 'budget' | 'skipped-overlap' | 'skipped-window' | 'missed';
5900
6362
  /** 合法结局全集。存进库之前用它收窄,别让一个拼错的状态混进 `last_status` */
5901
6363
  declare const SCHEDULE_RUN_STATUSES: readonly ScheduleRunStatus[];
5902
6364
  /**
@@ -6000,16 +6462,21 @@ interface ScheduleDefinition {
6000
6462
  allowTools: readonly string[];
6001
6463
  allowOperations: readonly OperationType[];
6002
6464
  allowRules: readonly string[];
6003
- /** 无人看着的一轮不该比有人看着的更长(交互缺省是 50) */
6004
- maxTurns: number;
6005
6465
  /**
6006
- * **必填,没有默认值。** 这是整个方案唯一一处刻意增加摩擦的地方:
6007
- * 一个假默认会让「一觉醒来 40 美元」变成我们的错。
6466
+ * 轮次上限。**`0` = 不限**(`UNLIMITED_TURNS`),缺省就是这一档。
6467
+ *
6468
+ * ⚠️ **2026-10-29 起定时任务只剩两把尺子**(轮次 / 超时):
6469
+ * 那一天撤掉了 `maxBudgetUsd`(「这一次最多花多少」),判据在
6470
+ * `core/src/schedule/validate.ts` 的 `bypassIssues()` 上。
6471
+ * 于是**无人值守那一路唯一兜得住「跑飞」的是下面那个 `timeoutMs`** ——
6472
+ * 因为这一格的缺省是 0(不限)。要一道轮次闸门的人在新建任务时自己填一个数。
6008
6473
  */
6009
- maxBudgetUsd: number;
6474
+ maxTurns: number;
6010
6475
  /**
6011
- * 墙钟超时。前两把尺子拦不住「一条 `terminal` 命令挂住了」——
6012
- * 那种情况轮次和花费都不增长,这把尺子是唯一能拦它的。
6476
+ * 墙钟超时。**无人值守路上唯一兜得住「跑飞」的那把尺子**(2026-10-29 起)。
6477
+ *
6478
+ * 它要拦两种前一把拦不住的东西:一条 `terminal` 命令挂住了(那种情况下轮次
6479
+ * 不增长),以及一个每轮都很便宜、但一轮接一轮跑下去的循环。
6013
6480
  */
6014
6481
  timeoutMs: number;
6015
6482
  /**
@@ -6242,11 +6709,10 @@ declare function collectPendingApprovals(defs: readonly ScheduleDefinition[], ru
6242
6709
  * - **没有 `id` / `createdAt` / `enabled`**:新建那条的 id 由库生成,提案里猜不出来;
6243
6710
  * `enabled` 在这条路上恒为「启用」(和表单上那个保存键同一档,`register: true`)。
6244
6711
  * 改已有那条时 id 是**入参**(模型得先 `action: 'list'` 看一眼),不是产出。
6245
- * - **`maxBudgetUsd` 是可选而不是必填**:不给时 core 用 `SCHEDULE_FORM_BUDGET_USD`
6246
- * (= 200,和新建表单预填的那一格是同一个常量)。用户定的口径是「按新建任务
6247
- * 那里的来」—— 缺省值因此只有一个真源,**别在这份文件里再抄一个数**
6248
- * (protocol 够不着 core,抄了就是第二份,而它漂走的表现是「不同入口预填的数
6249
- * 不一样」,没有检查抓得到)。
6712
+ * - **`maxBudgetUsd` 已经不存在了**(2026-10-29 撤的):定时任务只剩轮次和
6713
+ * 超时两把尺子,而这两格各有一条路给缺省(`SCHEDULE_DEFAULTS`)。
6714
+ * 预算当年是 optional 而不是必填,因为「不给就用表单那个值」;那条理由
6715
+ * 随着这一格的取消一起没了。
6250
6716
  *
6251
6717
  * ## 为什么住在 protocol
6252
6718
  *
@@ -6329,16 +6795,19 @@ interface ScheduleDraftCreate extends ScheduleDraftAllowlist {
6329
6795
  trigger: ScheduleTrigger;
6330
6796
  /** 工作目录。不给就是引擎那份缺省(`~/.epoch/automation/<id>/`) */
6331
6797
  workDir?: string;
6332
- permission: ScheduleDraftPermission;
6333
6798
  /**
6334
- * 每次最多花多少钱。**不给 = `SCHEDULE_FORM_BUDGET_USD`(200)**,
6335
- * 判据在这个文件头「两个刻意的形状缺口」那一段。
6799
+ * 权限档。**2026-10-27 起可选:不给就落 `SCHEDULE_DEFAULT_PERMISSION`(`auto`)。**
6800
+ *
6801
+ * 判据是「模型没必要把缺省念一遍」。
6802
+ *
6803
+ * ⚠️ 它以前是必填,而那一版的形状在默认档抬到 `auto` 之后变成了陷阱:
6804
+ * 模型不给这一格时整份草稿被拒(`permission 是空的`),而工具描述里写着
6805
+ * 「不给就是 auto」—— 两句话对着同一件事,一句说它可选、一句说必填。
6336
6806
  *
6337
- * 模型可以给一个更小的数(「这活很轻」),也可以给一个更大的(「要扫大仓」)
6338
- * —— 今天没有硬上限,用户拍的是「不设天花板」。⚠️ 别在这一层夹紧:夹紧会让
6339
- * 模型以为自己给了 500、实际存的是 200,而卡片上印的会是它给的那个数。
6807
+ * ⚠️ **`update` 那一支照旧「不给 = 这一格不动」**(那边是补丁语义):
6808
+ * 别把它一并改成落默认值,否则一份只改触发器的提案会把用户设的档搬走。
6340
6809
  */
6341
- maxBudgetUsd?: number;
6810
+ permission?: ScheduleDraftPermission;
6342
6811
  /**
6343
6812
  * 为什么建议这一条,一句话。**给人看的**,会印在卡片上。
6344
6813
  *
@@ -6377,8 +6846,6 @@ interface ScheduleDraftUpdate extends ScheduleDraftAllowlist {
6377
6846
  permission?: ScheduleDraftPermission;
6378
6847
  enabled?: boolean;
6379
6848
  maxTurns?: number;
6380
- /** 同 {@link ScheduleDraftCreate.maxBudgetUsd} */
6381
- maxBudgetUsd?: number;
6382
6849
  timeoutMs?: number;
6383
6850
  /** 同 {@link ScheduleDraftCreate.note},必填 */
6384
6851
  note: string;
@@ -8118,6 +8585,43 @@ interface ContextBreakdown {
8118
8585
  hints: string[];
8119
8586
  /** `hints` 的结构化版本,一一对应、同序。可选:老的生产方不发,判据在 {@link ContextNote} */
8120
8587
  notes?: ContextNote[];
8588
+ /**
8589
+ * 上一次请求的**缓存命中情况**(2026-10-26)。不给 = 这个宿主量不到
8590
+ * (没跑过任何一轮 / 老的生产方没发),不是「命中率为零」。
8591
+ *
8592
+ * ## 为什么它必须在这一屏上
8593
+ *
8594
+ * 「工具表每轮全量重发」在这三家 provider 上的**账单含义完全不同**:
8595
+ * OpenAI / DeepSeek / Gemini 自动按前缀缓存,重发不等于重复计费;
8596
+ * 而 Anthropic 不显式打 `cache_control` 就是**零命中**,一次都不省。
8597
+ *
8598
+ * 也就是说:同样一段代码,同样一条链路,在一家上「只是浪费带宽」,
8599
+ * 在另一家上「每一轮都按全价付」—— 而**界面上一模一样,什么都没说**。
8600
+ * 这一格存在的理由就是把这个差别变成可见的数字:没有它,
8601
+ * 「缓存到底有没有生效」既不能证明也不能证伪,那两处改动就只能靠信念。
8602
+ *
8603
+ * ⚠️ 口径是**最近一次请求**,不是全程累计(同 `promptTokens` 那条注释里
8604
+ * 「一估一真、一前一后」的记录)。累计值会随着高命中的历史越来越好看,
8605
+ * 从而掩盖「刚改的这一处根本没生效」。
8606
+ */
8607
+ cache?: ContextCacheStats;
8608
+ }
8609
+ /** 最近一次请求的缓存账目。三格都是 provider 报的真数,不是估算 */
8610
+ interface ContextCacheStats {
8611
+ /** 这次请求里**命中缓存**的 token 数 */
8612
+ hit: number;
8613
+ /** 这次请求**写进缓存**的 token 数(Anthropic 的 5 分钟 TTL 起算点) */
8614
+ write: number;
8615
+ /**
8616
+ * 这次请求的提示词总量(= 非缓存 + 命中 + 写入,同 `promptTokens()`)。
8617
+ * `hit / prompt` 就是命中率,放在生产侧算,免得两个界面各写一遍除法。
8618
+ */
8619
+ prompt: number;
8620
+ /**
8621
+ * 命中率,**0~100 的整数百分比**。`prompt` 为 0 时它也是 0 ——
8622
+ * 那种情况下 `hit` 必然也是 0,没有除法可做。
8623
+ */
8624
+ hitPercent: number;
8121
8625
  }
8122
8626
 
8123
8627
  /**
@@ -8832,14 +9336,32 @@ interface WireConfigResponse {
8832
9336
  * (见本文件 `diagnostics` 那一格)—— 那一格没得选,它是服务端生成的字符串。
8833
9337
  */
8834
9338
  blankGreeting?: BlankGreeting;
9339
+ /**
9340
+ * 删一条定时任务时那句确认,宿主可以整句换掉 —— **宿主没配就没有这个键**(2026-10-28)。
9341
+ *
9342
+ * 来源是 `EpochConfig.scheduleRemoveConfirm`;形状、默认档、以及「整句都归宿主」
9343
+ * 那笔代价,全文在 `config.ts` 那一格上。
9344
+ *
9345
+ * ⚠️ **原样转发,而且「按语言挑那一份」也不在这一层做** —— 判据逐字同上面
9346
+ * {@link blankGreeting}(那张三行对照表)。这一格只多一件事:**占位符替换也不在
9347
+ * 这儿做**。`{name}` 要等界面那一刻拿到任务名才填得进去,而这一层连「哪一条任务
9348
+ * 在删」都不知道(它不认识某一张卡)。服务端在这里填一遍只会填进空串,
9349
+ * 而那正是「一句话看起来完好无损、实际丢了关键信息」那一档。
9350
+ *
9351
+ * ⚠️ **这一格的默认档和上面 `blankGreeting` 一样是「我们那句」,不是「什么都不
9352
+ * 显示」** —— 不配这个键时屏幕上是我们那一整句,逐字节等于这一笔之前。
9353
+ */
9354
+ scheduleRemoveConfirm?: HostText;
8835
9355
  /**
8836
9356
  * 侧栏最下面那一行「用户」的名字和头像 —— **宿主没配就没有这个键**(2026-09-07)。
8837
9357
  *
8838
- * 来源是 `EpochConfig.user`;两个字段的含义、以及「为什么这一格没配也照旧画那一行」
8839
- * 全文在 [host-user.ts](./host-user.js) 的文件头。
9358
+ * 来源是 `EpochConfig.user`;三个字段(`label` / `icon` / `avatar`)的含义,
9359
+ * 以及「为什么这一格没配也照旧画那一行」全文在
9360
+ * [host-user.ts](./host-user.js) 的文件头。
8840
9361
  *
8841
9362
  * ⚠️ **原样转发,服务端一个字都不改**,判据逐字同上面那个 `sidebarMenu`:
8842
- * `label` 不翻译(它是宿主的话),`icon` 认不认得出来也不在这一层判。
9363
+ * `label` 不翻译(它是宿主的话),`icon` 认不认得出来、`avatar` 是不是一个能加载的
9364
+ * 地址,都不在这一层判 —— 那两样是第一方 Web UI 自己的白名单。
8843
9365
  *
8844
9366
  * ⚠️ **「没这个键」在这一格上的意思和别处不同**:不是「屏幕上什么都没有」,
8845
9367
  * 而是「那一行用我们自己那份文案和图标」—— 客户端那侧是一次回落,不是一道开关。
@@ -10903,6 +11425,63 @@ type WireBindWorkspaceRequest =
10903
11425
  | {
10904
11426
  none: true;
10905
11427
  };
11428
+ /**
11429
+ * `GET /api/sessions/:id/branch` 的响应(2026-10-28)。
11430
+ *
11431
+ * ## 为什么非得是**单独一条端点**(这一条是它存在或不存在的全部判据)
11432
+ *
11433
+ * 分支名这条信息 `GET /api/sessions/:id/diff` 本来就发({@link WireWorkspaceDiffResponse.branch}),
11434
+ * 而那条端点的 JSDoc 里明写着「单独开一条件量端点等于多打一次往返、两屏答案可能
11435
+ * 来自不同一刻」——**那条理由今天仍然成立,它管的只是 diff 屏**:diff 屏上的分支
11436
+ * 和那份改动**必须来自同一刻**,否则一次 `git checkout` 夹在中间就能让「这一屏的
11437
+ * 改动」和「这一屏说的分支」对不上。
11438
+ *
11439
+ * 而托盘那一格要的是另一件事:**它得反复问**(用户或智能体随时可能切分支,我们
11440
+ * 收不到 `git checkout` 的通知,只能轮)。拿 diff 那条来轮是不成立的 —— 它每次
11441
+ * 要 `git diff --raw` 扫全仓、读文件内容、算 blob 大小(`server/src/workspace/diff.ts`
11442
+ * 那套,`MAX_INLINE_BYTES` 那些预算就是为它定的),一个几千文件的仓库每次几百毫秒,
11443
+ * 每 10 秒跑一遍纯粹是白烧 CPU 换一个分支名。
11444
+ *
11445
+ * 所以这一条只做 `repoRoot()` + `currentBranch()` 两条 `rev-parse`:**纯引用解析,
11446
+ * 不碰工作树**(判据在 `server/src/workspace/git.ts` 的 `currentBranch` 上)。
11447
+ *
11448
+ * ## 两个字段都缺席是一个**正常答案**,不是失败
11449
+ *
11450
+ * ```
11451
+ * {} 不是 git 仓库 / 没装 git / 刚 init / detached HEAD / 没绑工作区
11452
+ * {branch:'main'} 在某个分支上,但它没配上游
11453
+ * {branch:'main', upstream:'origin/main'}
11454
+ * ```
11455
+ *
11456
+ * ⚠️ **缺席就是缺席,不拿 `''` 或 `'HEAD'` 顶上** —— 判据逐字沿用
11457
+ * {@link WireWorkspaceDiffResponse.branch} 那一条(「编一个值顶上去就是谎」)。
11458
+ * 界面那一格唯一的画法判据就是「有没有这个字段」:有就画,没有就**整格不画**。
11459
+ *
11460
+ * ⚠️ 第一档里那**五**种现场在网线上是同一个 `{}`,因为它们对界面说的是同一句话
11461
+ * (「这条信息这一发没有」),而屏幕上的下一步也相同(不画那一格)。这**不违反**
11462
+ * 「两个码 ⇔ 用户下一步动作不同」那条拆码判据 —— 那是给**错误体**定的,而这一条
11463
+ * 五档都是 200。真答不上的只有一档:**会话整个不认识**,那是 404 `unknown-session`,
11464
+ * 和别的端点一致。
11465
+ */
11466
+ interface WireSessionBranchResponse {
11467
+ /**
11468
+ * 当前分支名(`main`)。**缺席 = 此刻没有分支可显示**(五档见类型头那三个例子)。
11469
+ *
11470
+ * detached HEAD 那一档必须落在这里:`git rev-parse --abbrev-ref HEAD` 对它的
11471
+ * 回话就是字面量 `HEAD`,照原样发出去屏幕上会写「分支 HEAD」,而用户此刻
11472
+ * 根本不在任何分支上(判据在 `git.ts` 的 `currentBranch` 上)。
11473
+ */
11474
+ branch?: string;
11475
+ /**
11476
+ * 当前分支的上游(`origin/main`)。没有配上游 / `branch` 缺席时一起缺席。
11477
+ *
11478
+ * ⚠️ 只给**配置里写着的那一个**(`@{upstream}`),不自己猜 `origin/<同名>` ——
11479
+ * 猜出来的那个在「本地分支还没推过」时是一条不存在的引用。
11480
+ */
11481
+ upstream?: string;
11482
+ }
11483
+ /** 两个字段都是可选的(`{}` 是合法答案),所以这份清单是空的 —— 同 `WireBindWorkspaceRequest` */
11484
+ declare const WIRE_SESSION_BRANCH_RESPONSE_FIELDS: WireFields<WireSessionBranchResponse>;
10906
11485
  /**
10907
11486
  * 统一的错误体。前端只认 `code` 做分支,`message` 是给人看的。
10908
11487
  *
@@ -13747,6 +14326,32 @@ interface WirePluginUpdateRequest extends WirePluginNameRequest {
13747
14326
  token: string;
13748
14327
  }
13749
14328
  declare const WIRE_PLUGIN_UPDATE_FIELDS: WireFields<WirePluginUpdateRequest>;
14329
+ /**
14330
+ * `POST /api/plugins/toggle` 的请求体 —— 启用 / 停用(2026-10-23)。
14331
+ *
14332
+ * ## 为什么是「设成什么」而不是「切一下」
14333
+ *
14334
+ * 收的是 `enabled` 这个**目标状态**,不是一条 `toggle` 空请求。判据同
14335
+ * `PUT /api/mcp/config` 那一条:切一下把「现在是什么」变成客户端的记忆,
14336
+ * 而两个标签页各点一下就会互相抵消 —— 界面上那个插件最终是开的还是关的,
14337
+ * 取决于谁后到。给目标状态则两边说的都是同一件事,后到的那个重复执行也不出错
14338
+ * (core 那一侧会回「本来就是{verb}状态」)。
14339
+ *
14340
+ * ## ⚠️ 它和 install / update 那几条**不是同一档风险**,但不弹确认
14341
+ *
14342
+ * 装 / 更新会带来会跑的命令和 hook(所以有预览那一屏)。停用**只改一条记录**
14343
+ * (core 的 `setPluginEnabled` 一个字节的文件都不动),它是可逆的、代价也小得多。
14344
+ * 而它确实会**静默拿掉**别人正依赖的一批命令 —— 那一条的判断是「说清中间态,
14345
+ * 不拦」(方案 2026-10-23 那一笔):界面上点完立刻说「重启后生效」,而依赖它的
14346
+ * 插件在**下一次重启**的启动诊断里会得到那句 `plugin-dependency-missing`。
14347
+ */
14348
+ interface WirePluginToggleRequest {
14349
+ /** 安装记录里的插件名(`plugins.json` 那一条的 `name`) */
14350
+ name: string;
14351
+ /** 想把它设成什么样。`true` = 启用,`false` = 停用 */
14352
+ enabled: boolean;
14353
+ }
14354
+ declare const WIRE_PLUGIN_TOGGLE_FIELDS: WireFields<WirePluginToggleRequest>;
13750
14355
  /**
13751
14356
  * `POST /api/plugins/view` 的请求体 —— 「这个插件是什么」(2026-10-22)。
13752
14357
  *
@@ -14856,7 +15461,7 @@ interface WireManagedLock {
14856
15461
  path: string;
14857
15462
  /** 其余各层的三张表整份作废了(`allowManagedPermissionRulesOnly`) */
14858
15463
  rulesOnly: boolean;
14859
- /** 「跳过全部检查」那一档被禁了(`disableBypassPermissionsMode`) */
15464
+ /** 「完全访问」那一档被禁了(`disableBypassPermissionsMode`) */
14860
15465
  bypassDisabled: boolean;
14861
15466
  }
14862
15467
  declare const WIRE_MANAGED_LOCK_FIELDS: WireFields<WireManagedLock>;
@@ -17402,10 +18007,14 @@ declare const WIRE_FILE_OPEN_RESPONSE_FIELDS: WireFields<WireFileOpenResponse>;
17402
18007
  /**
17403
18008
  * 一条校验不通过的原因码。**真源在 core,这是网线上那一份**,见文件头。
17404
18009
  *
17405
- * 二十一条分四组读:四条讲「必填项空着」、三条讲三把尺子、八条讲触发器与生效区间、
17406
- * 一条讲规则语法、四条讲「定时任务 + 跳过全部检查」那个组合。
18010
+ * 二十条分四组读:四条讲「必填项空着」、两条讲两把尺子、八条讲触发器与生效区间、
18011
+ * 一条讲规则语法、四条讲「定时任务 + 完全访问」那个组合。
18012
+ *
18013
+ * ⚠️ **2026-10-29 去掉了 `'budget-missing'`**:定时任务那格预算整个撤了,
18014
+ * 这个码不再有产出点。从两份联合类型里一起删而不是留着 —— 留一个永不产出的码
18015
+ * 要求两侧各写一句它永远不会用上的文案,而那些文案本身就是「这功能还在」的谣言。
17407
18016
  */
17408
- type WireScheduleIssueCode = 'name-empty' | 'prompt-empty' | 'permission-unknown' | 'work-dir-missing' | 'budget-missing' | 'max-turns-invalid' | 'timeout-invalid' | 'trigger-time-invalid' | 'trigger-times-too-many' | 'trigger-weekdays-empty' | 'trigger-days-invalid' | 'trigger-interval-invalid' | 'trigger-once-date-invalid' | 'trigger-once-past' | 'date-range-invalid' | 'date-range-on-once' | 'rule-invalid' | 'bypass-needs-workdir' | 'bypass-workdir-too-broad' | 'bypass-needs-limits' | 'bypass-not-confirmed';
18017
+ type WireScheduleIssueCode = 'name-empty' | 'prompt-empty' | 'permission-unknown' | 'work-dir-missing' | 'max-turns-invalid' | 'timeout-invalid' | 'trigger-time-invalid' | 'trigger-times-too-many' | 'trigger-weekdays-empty' | 'trigger-days-invalid' | 'trigger-interval-invalid' | 'trigger-once-date-invalid' | 'trigger-once-past' | 'date-range-invalid' | 'date-range-on-once' | 'rule-invalid' | 'bypass-needs-workdir' | 'bypass-workdir-too-broad' | 'bypass-needs-limits' | 'bypass-not-confirmed';
17409
18018
  /**
17410
18019
  * 全集。**顺序也钉着** —— 那条「逐项相等」的用例比的是数组,不是集合,
17411
18020
  * 因为顺序对不上通常意味着有人在一边插了一条而另一边追加在末尾。
@@ -17437,42 +18046,15 @@ declare const WIRE_SCHEDULE_CAPABILITY_FIELDS: WireFields<WireScheduleCapability
17437
18046
  * 服务端原样转发。**不让表单自己写死一份**:那两份缺省一改,界面上预填的就是
17438
18047
  * 一个和引擎不一样的值,而它编译得过、跑得通、只是和 CLI 建出来的任务不一致。
17439
18048
  *
17440
- * ## ⚠️ 这一份是「表单该预填什么」,**不是**「没给值时引擎用什么」
17441
- *
17442
- * 两者今天只在 {@link WireScheduleDefaults.maxBudgetUsd} 这一格上分开,而那一格
17443
- * 正是这条分界存在的理由:
17444
- *
17445
- * | 这一份(`WireScheduleDefaults`) | core 的 `SCHEDULE_DEFAULTS` |
17446
- * | --- | --- |
17447
- * | 新建表单打开时那几个格子里**印着**什么 | 调 API / CLI **没给**这一格时引擎兜底用什么 |
17448
- * | 预算在这儿有值(200) | 预算**不在那儿** —— 没给就是 400 |
17449
- *
17450
- * 也就是说:表单上预算那一格是预填的,而**网线那一侧照旧必填**。
17451
- *
17452
- * ## ⚠️ `maxBudgetUsd` 2026-09-18 加进来了,而它撤掉的是方案 45 §3.5
17453
- *
17454
- * 这里原来写着「这个形状里连一个可选的 `maxBudgetUsd?` 都不留 —— 留了下一个人
17455
- * 就会顺手给个 0.50」。那条决定(`--budget` 必填、**没有默认值**,全方案唯一一处
17456
- * 刻意增加的摩擦)**用户撤掉了一半**:表单上它现在预填 200。
17457
- *
17458
- * 留下的那一半是承重的,别跟着一起撤:
17459
- *
17460
- * 1. 表单上**清空了就存不下**(那两个保存按钮 `disabled`);
17461
- * 2. **网线上照旧必填** —— 服务端 `schedule_budget_required` 是 400,CLI 的
17462
- * `--budget` 照旧必给。这一道拦的是别的客户端,而不是坐在表单前的那个人。
18049
+ * ⚠️ **2026-10-29:预算那一格(`maxBudgetUsd`)从这里撤掉了** —— 它当年是
18050
+ * 「表单该预填、而引擎没兜底」那条分界唯一的存在理由,定时任务那格预算整个
18051
+ * 取消之后,这一份和 core 的 `SCHEDULE_DEFAULTS` 也就不再有任何差别。
17463
18052
  */
17464
18053
  interface WireScheduleDefaults {
17465
18054
  /** 无人看着的一轮不该比有人看着的更长(交互缺省是 50) */
17466
18055
  maxTurns: number;
17467
18056
  /** 墙钟超时。唯一能拦住「一条命令挂住了」的那把尺子 */
17468
18057
  timeoutMs: number;
17469
- /**
17470
- * 表单里预算那一格印什么(2026-09-18)。
17471
- *
17472
- * ⚠️ **只是预填**,不是引擎兜底 —— 判据全文在上面那张表上。这一格在
17473
- * core 的 `SCHEDULE_DEFAULTS` 里**没有对应物**,那是刻意的。
17474
- */
17475
- maxBudgetUsd: number;
17476
18058
  allowTools: readonly string[];
17477
18059
  allowOperations: readonly OperationType[];
17478
18060
  allowRules: readonly string[];
@@ -17504,7 +18086,7 @@ interface WireScheduleRow {
17504
18086
  * 这一档权限档下,那份无人值守清单**有没有意义**。
17505
18087
  *
17506
18088
  * `false` 有两种成因,理由正好相反:「只读」档天然零授权面(没有要授权的东西),
17507
- * 「跳过全部检查」已经全放开了(清单管不着任何事)。界面据此把整块灰掉 ——
18089
+ * 「完全访问」已经全放开了(清单管不着任何事)。界面据此把整块灰掉 ——
17508
18090
  * 判据是方案 45 §3.4 末尾那句:留着一份看起来在生效的清单,
17509
18091
  * 会让人以为自己还有一道边界。
17510
18092
  *
@@ -17549,19 +18131,17 @@ declare const WIRE_SCHEDULE_RUNS_FIELDS: WireFields<WireScheduleRunsResponse>;
17549
18131
  /**
17550
18132
  * `POST /api/schedules` 的请求体。
17551
18133
  *
17552
- * 五个必填字段就是「一条任务最少要说清什么」:叫什么、到点了做什么、
17553
- * 多久一次、要不要人确认、**这一次最多花多少钱**。
18134
+ * 四个必填字段就是「一条任务最少要说清什么」:叫什么、到点了做什么、
18135
+ * 多久一次、要不要人确认。
17554
18136
  *
17555
- * ⚠️ `maxBudgetUsd` **必填而且没有缺省**(§3.5 / §十二 第 2 条)。它不在
17556
- * {@link WireScheduleDefaults} 里,也不该在这里写成可选 —— 可选加一个服务端
17557
- * 兜底的默认值,就是那个「一觉醒来 40 美元」的假默认本身。
18137
+ * ⚠️ **2026-10-29 去掉了 `maxBudgetUsd`**(当年是第五个必填)—— 定时任务那格
18138
+ * 预算整个取消了,这一路不再要求、也不再接受它。
17558
18139
  */
17559
18140
  interface WireScheduleCreateRequest {
17560
18141
  name: string;
17561
18142
  prompt: string;
17562
18143
  permission: PermissionLevel;
17563
18144
  trigger: ScheduleTrigger;
17564
- maxBudgetUsd: number;
17565
18145
  /**
17566
18146
  * 工作区。**可选,但不给不等于「继承服务进程的 cwd」** ——
17567
18147
  * 不给就落在 `~/.epoch/automation/<id>/`(判据在 `ScheduleDefinition.workDir` 上:
@@ -17622,7 +18202,6 @@ interface WireScheduleUpdateRequest {
17622
18202
  prompt?: string;
17623
18203
  permission?: PermissionLevel;
17624
18204
  trigger?: ScheduleTrigger;
17625
- maxBudgetUsd?: number;
17626
18205
  workDir?: string | null;
17627
18206
  model?: string | null;
17628
18207
  /** 换身份 / 清掉(`null` = 回到默认 agent)。见 {@link WireScheduleCreateRequest.role} */
@@ -18624,4 +19203,4 @@ declare const SECRET_SERVICE = "epoch-agent";
18624
19203
  */
18625
19204
  declare const MCP_DATA_KEY_NAME = "mcp-auth-data-key";
18626
19205
 
18627
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_BACKGROUND_ON_PARAM, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, APPEARANCE_FIRST_SCREEN_FIELDS, APPEARANCE_FIRST_SCREEN_FIELD_ORDER, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, APPEARANCE_ROOT_ATTRIBUTES, APPEARANCE_SIDEBAR_WIDTH, APPEARANCE_THEMES, APPEARANCE_THEME_NAME_MAX, APPEARANCE_TRANSLUCENT, APPEARANCE_UI_FONTS, APPROVAL_OUTCOMES, type ActiveAgentRole, type AgentEvent, type AgentEventOf, type AgentEventType, type AgentRole, type AgentRoleScope, type AgentRoleSource, type AppearanceAccent, type AppearanceAccentValue, type AppearanceBackground, type AppearanceBackgroundFit, type AppearanceBackgroundKind, type AppearanceCodeFont, type AppearanceEffectiveTheme, type AppearanceFirstScreenField, type AppearanceFirstScreenKind, type AppearanceLang, type AppearanceModePatch, type AppearanceMotion, type AppearanceTheme, type AppearanceUiFont, type AppearanceVisualSource, type ApprovalAnswer, type ApprovalOutcome, type ApprovalReply, type ApprovalRequest, type ApprovalScope, type ArtifactKind, type AttributeValue, type Attributes, BRAND_WHEN_SIDEBAR_COLLAPSED, type BackgroundTaskInfo, type BackgroundTaskKind, type BackgroundTaskStatus, type BlankCard, type BlankGreeting, type BoundKey, type BrandWhenSidebarCollapsed, type BudgetBreach, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, type Catalogs, type ComplianceAction, type ComplianceCategory, type ContextBreakdown, type ContextNote, type ContextSegment, type ContextSegmentKind, type Currency, type CurrencyDisplay, type CustomCommandDef, type CustomCommandSource, DEFAULT_AGENT_ROLE, DEFAULT_LANG, type DecidedTrustLevel, type Diagnostic, DiagnosticSink, type DiagnosticStatus, ENTRY_REF_PREFIX, ENTRY_SECRET_PREFIX, type EpochConfig, type EpochContentPart, type EpochFilePart, type EpochHook, type EpochImagePart, type EpochMessage, type EpochMessageRole, type EpochPlugin, type EpochSessionPart, type EpochSkill, type EpochTextPart, type EpochTool, type EpochToolCall, type EpochToolResult, type EpochTurnFacts, type EpochUserCommand, type EpochUserContent, type ExpandedCommand, FOLLOW_SYSTEM, type FileOmitReason, type FinishReason, type FixableApproval, type FlatCatalog, type FormatMoneyOptions, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, type HeadlessEnvelope, type HeadlessEvent, type HeadlessInit, type HeadlessInputEvent, type HeadlessInputEventType, type HeadlessInputFormat, type HeadlessLifecycleEvent, type HeadlessOutputFormat, type HeadlessResult, type HeadlessResultReason, type HookContext, type HookEvent, type HookHandler, type HookManager, type HookRegistration, type HookType, type HostText, type HostUser, type Hsv, type JsonSchema, KEY_ACTIONS, type KeyAction, type KeyChord, type KeyContext, type KeySequence, type KeybindingReport, type KeybindingSource, type KeybindingTable, LANGS, LINK_CLICKED_MESSAGE_TYPE, type Lang, type LinkClickedMessage, type LocalizedDetail, type LogFn, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_LINK_URL, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, MODEL_ENTRY_PROTOCOLS, type MentionSet, type ModelEntry, type ModelEntryCapabilities, type ModelEntryProtocol, type ModelRef, type ModelSelection, type ModelSelectionOrigin, type MoneyDigits, NOOP_TELEMETRY, type NoticeCode, OPENABLE_LINK_SCHEMES, OPEN_SETTINGS_MESSAGE_TYPE, OPERATION_TYPES, OVERSIZE_RATIO, type OpenSettingsMessage, type Operation, type OperationType, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_CATEGORY_DISPLAY_SEP, PLUGIN_MENU_MESSAGE_TYPE, PLUGIN_PREVIEW_STREAM_MIME, PLUGIN_UPLOAD_MULTI_SEP, PROVIDER_INFOS, PROVIDER_TYPES, type PermissionDecision, type PermissionLevel, type PermissionManager, type PermissionRuleLists, type PlanApprovalOutcome, type PlanProposal, type PluginContext, type PluginMenuMessage, type ProviderInfo, type ProviderType, type QuestionAnswer, type QuestionItem, type QuestionOption, type QuestionPage, type QuestionRequest, REASONING_EFFORTS, REASONING_OFF, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, type ReasoningChoice, type ReasoningEffort, type ReasoningState, type RejectReason, type RejectedKey, type ResolvedAppearanceVisual, type RuleValue, SCHEDULE_DRAFT_SAVED_MARK, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MAX_MINUTES, SCHEDULE_INTERVAL_MIN_MINUTES, SCHEDULE_MAX_TIMES_PER_DAY, SCHEDULE_RUN_STATUSES, SEARCH_API_KEY_ENV, SEARCH_PROVIDER_TYPES, SECRET_SERVICE, SEQUENCE_CONTEXTS, SESSION_MENTION_PREFIX, SESSION_REFERENCE_ERROR_CODES, SETTINGS_PANE_IDS, SHELL_KINDS, SIDEBAR_MENU_MESSAGE_TYPE, SIMULTANEOUS_CONTEXTS, SYSTEM_NOTE_PREFIX, type ScheduleAllowlist, type ScheduleBackendKind, type ScheduleCronTrigger, type ScheduleCycle, type ScheduleDefinition, type ScheduleDraft, type ScheduleDraftAllowlist, type ScheduleDraftCreate, type ScheduleDraftPermission, type ScheduleDraftUpdate, type SchedulePendingApproval, type SchedulePendingItem, type ScheduleRun, type ScheduleRunStatus, type ScheduleRunnerSpec, type ScheduleTrigger, type ScheduleTriggerKind, type ScheduleWeekday, type ScheduleWideningKind, type SearchProviderType, type SecretBackendId, type SecretStore, type SelectionContext, type SelectionRejection, type SelectionWarning, type SessionAttachKind, type SessionAttachResult, type SessionOmitReason, type SessionSurfaceMessage, type SessionSurfaceView, type SetSelectionResult, type SettingsPaneId, type SettingsPaneItem, type ShellKind, type SidebarMenuItem, type SidebarMenuMessage, type SidebarNavItem, type SpanLike, type SubToolCall, type SubToolCallResult, type Telemetry, type TokenUsage, type ToolAnnotations, type ToolArtifact, type ToolArtifactInput, type ToolContext, type ToolDefinition, ToolExposure, type ToolProvider, type ToolResult, type Translate, type TranslateVars, type TrustExecGrant, type TrustGrant, type TrustLevel, type TrustManager, type TrustRecord, type TrustScope, type TrustTier, UNLIMITED_TURNS, USER_MENU_MESSAGE_TYPE, type UserMenuMessage, type VerifyResult, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_FIELDS, WIRE_APPEARANCE_RESPONSE_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_REQUEST_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_RESPONSE_FIELDS, WIRE_APPROVAL_LIST_FIELDS, WIRE_APPROVAL_ROW_FIELDS, WIRE_ARTIFACTS_FIELDS, WIRE_ATTACHMENT_FOLDER_FIELDS, WIRE_ATTACHMENT_UPLOAD_FIELDS, WIRE_AUDIT_LOG_FIELDS, WIRE_AUDIT_ROW_FIELDS, WIRE_AUTH_COOKIE, WIRE_AUTH_COOKIE_ATTRS, WIRE_AUTH_TOKEN_PARAM, WIRE_BACKGROUND_TASK_FIELDS, WIRE_BLOCKED_GOALS_FIELDS, WIRE_BLOCKED_GOAL_FIELDS, WIRE_BLOCKED_LEVEL_FIELDS, WIRE_BUILTIN_CONNECTOR_FIELDS, WIRE_CACHED_APPROVAL_FIELDS, WIRE_CAPABILITIES_FIELDS, WIRE_CAPABILITY_PROJECT_FIELDS, WIRE_CHECKPOINT_LIST_FIELDS, WIRE_CHECKPOINT_SUMMARY_FIELDS, WIRE_COMMANDS_FIELDS, WIRE_COMMAND_EXPANSION_FIELDS, WIRE_COMPACT_FIELDS, WIRE_COMPRESSION_LINE_FIELDS, WIRE_CONFIG_FIELDS, WIRE_CONTEXT_FIELDS, WIRE_CREATE_SESSION_FIELDS, WIRE_CREATE_WORKSPACE_FIELDS, WIRE_CREATE_WORKSPACE_RESPONSE_FIELDS, WIRE_CUSTOM_COMMAND_FIELDS, WIRE_DELETE_SESSION_FIELDS, WIRE_DIFF_FILE_FIELDS, WIRE_DIFF_FILE_RESPONSE_FIELDS, WIRE_ERROR_FIELDS, WIRE_FILE_CANDIDATES_FIELDS, WIRE_FILE_CANDIDATE_FIELDS, WIRE_FILE_CHANGE_FIELDS, WIRE_FILE_OPEN_RESPONSE_FIELDS, WIRE_FILE_REFERENCE_FIELDS, WIRE_FILE_STAT_MAX, WIRE_FILE_STAT_OK_FIELDS, WIRE_FILE_STAT_REFUSED_FIELDS, WIRE_FILE_STAT_RESPONSE_FIELDS, WIRE_FILE_TEXT_RESPONSE_FIELDS, WIRE_FORGET_WORKSPACE_FIELDS, WIRE_FORGET_WORKSPACE_RESPONSE_FIELDS, WIRE_GOAL_ACTIONS, WIRE_GOAL_BLOCK_FIELDS, WIRE_GOAL_CLEAR_FIELDS, WIRE_GOAL_CREATE_FIELDS, WIRE_GOAL_FIELDS, WIRE_GOAL_LIMITS_FIELDS, WIRE_GOAL_PHASES, WIRE_GOAL_REFUSALS, WIRE_GOAL_RESPONSE_FIELDS, WIRE_GOAL_WRITE_FIELDS, WIRE_HEALTH_FIELDS, WIRE_IMAGE_REFERENCE_FIELDS, WIRE_KNOWN_WORKSPACE_FIELDS, WIRE_LANG_PARAM, WIRE_LAST_SESSION_FIELDS, WIRE_LAST_SESSION_RESPONSE_FIELDS, WIRE_MANAGED_LOCK_FIELDS, WIRE_MCP_ADD_FIELDS, WIRE_MCP_ADD_RESPONSE_FIELDS, WIRE_MCP_APPLY_ENTRY_FIELDS, WIRE_MCP_APPLY_RESPONSE_FIELDS, WIRE_MCP_CONFIG_APPLY_FIELDS, WIRE_MCP_CONFIG_FIELDS, WIRE_MCP_CONFIG_ISSUE_FIELDS, WIRE_MCP_CONFIG_SAVE_FIELDS, WIRE_MCP_CONFIG_SAVE_RESPONSE_FIELDS, WIRE_MCP_CONNECTOR_FIELDS, WIRE_MCP_RECONNECT_FIELDS, WIRE_MESSAGE_LIST_FIELDS, WIRE_MODEL_ENTRIES_FIELDS, WIRE_MODEL_ENTRY_MODELS_FIELDS, WIRE_MODEL_ENTRY_SAVE_FIELDS, WIRE_MODEL_ENTRY_TEST_FIELDS, WIRE_MODEL_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_PATCH_SESSION_FIELDS, WIRE_PATCH_SESSION_RESPONSE_FIELDS, WIRE_PERMISSION_RULE_FIELDS, WIRE_PERMISSION_SET_REQUEST_FIELDS, WIRE_PERMISSION_SET_RESPONSE_FIELDS, WIRE_PERMISSION_SHADOW_FIELDS, WIRE_PERMISSION_STATE_FIELDS, WIRE_PERMISSION_STATUS_FIELDS, WIRE_PLAN_ACTIONS, WIRE_PLAN_FIELDS, WIRE_PLAN_MODE_REQUEST_FIELDS, WIRE_PLAN_MODE_RESPONSE_FIELDS, WIRE_PLAN_MODE_STATE_FIELDS, WIRE_PLUGINS_FIELDS, WIRE_PLUGIN_ACTION_FIELDS, WIRE_PLUGIN_ARCHIVE_SUFFIXES, WIRE_PLUGIN_INSTALL_FIELDS, WIRE_PLUGIN_LOCAL_FIELDS, WIRE_PLUGIN_LOCAL_INSTALL_FIELDS, WIRE_PLUGIN_MARKETPLACE_FIELDS, WIRE_PLUGIN_MARKETPLACE_RESPONSE_FIELDS, WIRE_PLUGIN_NAME_FIELDS, WIRE_PLUGIN_PREVIEW_FIELDS, WIRE_PLUGIN_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_REFRESH_RESPONSE_FIELDS, WIRE_PLUGIN_STAGE_FIELDS, WIRE_PLUGIN_STAGE_RESPONSE_FIELDS, WIRE_PLUGIN_UPDATE_FIELDS, WIRE_PLUGIN_UPLOAD_CONFIRM_FIELDS, WIRE_PLUGIN_UPLOAD_FIELDS, WIRE_PLUGIN_UPLOAD_FORM_FIELDS, WIRE_PLUGIN_UPLOAD_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_UPLOAD_RESPONSE_FIELDS, WIRE_PLUGIN_VIEW_FIELDS, WIRE_PLUGIN_VIEW_RESPONSE_FIELDS, WIRE_POLICY_DIR_FIELDS, WIRE_POLICY_STATUS_FIELDS, WIRE_PROJECT_INVENTORY_FIELDS, WIRE_PROVIDER_GROUPS, WIRE_QUESTION_LIST_FIELDS, WIRE_QUESTION_ROW_FIELDS, WIRE_RESPOND_APPROVAL_FIELDS, WIRE_RESPOND_APPROVAL_RESPONSE_FIELDS, WIRE_RESPOND_QUESTION_FIELDS, WIRE_RESPOND_QUESTION_RESPONSE_FIELDS, WIRE_REVIVE_FIELDS, WIRE_REWIND_FILE_PLAN_FIELDS, WIRE_REWIND_OUTCOME_FIELDS, WIRE_REWIND_PREVIEW_FIELDS, WIRE_REWIND_REQUEST_FIELDS, WIRE_REWIND_RESPONSE_FIELDS, WIRE_REWIND_SCOPES, WIRE_ROLES_FIELDS, WIRE_ROLE_ADD_FIELDS, WIRE_ROLE_ADD_RESPONSE_FIELDS, WIRE_ROLE_REMOVE_FIELDS, WIRE_RUNNING_SCHEDULE_FIELDS, WIRE_SANDBOX_STATUS_FIELDS, WIRE_SCHEDULE_CAPABILITY_FIELDS, WIRE_SCHEDULE_CREATE_FIELDS, WIRE_SCHEDULE_DEFAULTS_FIELDS, WIRE_SCHEDULE_DELETE_FIELDS, WIRE_SCHEDULE_FIELDS, WIRE_SCHEDULE_FIX_FIELDS, WIRE_SCHEDULE_FIX_REQUEST_FIELDS, WIRE_SCHEDULE_ISSUE_CODES, WIRE_SCHEDULE_LIST_FIELDS, WIRE_SCHEDULE_PENDING_FIELDS, WIRE_SCHEDULE_RECORDING_FIELDS, WIRE_SCHEDULE_ROW_FIELDS, WIRE_SCHEDULE_RUNNING_FIELDS, WIRE_SCHEDULE_RUNS_FIELDS, WIRE_SCHEDULE_RUN_FIELDS, WIRE_SCHEDULE_SAVE_FIELDS, WIRE_SECURITY_FIELDS, WIRE_SECURITY_WORKSPACE_FIELDS, WIRE_SEND_MESSAGE_FIELDS, WIRE_SEND_MESSAGE_RESPONSE_FIELDS, WIRE_SESSION_CANDIDATES_FIELDS, WIRE_SESSION_CANDIDATE_FIELDS, WIRE_SESSION_FINISH_FIELDS, WIRE_SESSION_LIST_FIELDS, WIRE_SESSION_REFERENCE_FIELDS, WIRE_SESSION_RESPONSE_FIELDS, WIRE_SESSION_SUMMARY_FIELDS, WIRE_SESSION_WORKSPACE_FIELDS, WIRE_SESSION_WORKSPACE_RESPONSE_FIELDS, WIRE_SETTINGS_FIELDS, WIRE_SETTINGS_WRITE_FIELDS, WIRE_SETTINGS_WRITE_REQUEST_FIELDS, WIRE_SETTING_PENDING_FIELDS, WIRE_SETTING_ROW_FIELDS, WIRE_SETTING_STEP_FIELDS, WIRE_SETTING_WRITE_FIELDS, WIRE_SETTING_WRITE_LAYERS, WIRE_SKILL_BODY_FIELDS, WIRE_SKILL_DROP_SUFFIXES, WIRE_SKILL_FIELDS, WIRE_SKILL_IMPORT_FIELDS, WIRE_SKILL_IMPORT_PREVIEW_FIELDS, WIRE_SKILL_REMOVE_FIELDS, WIRE_SKILL_STAGE_FIELDS, WIRE_TASKS_FIELDS, WIRE_TOOLS_FIELDS, WIRE_TOOL_GATE_FIELDS, WIRE_TOOL_ROW_FIELDS, WIRE_TRUST_REQUEST_FIELDS, WIRE_TRUST_REQUEST_RESPONSE_FIELDS, WIRE_WITHDRAW_MESSAGE_FIELDS, WIRE_WORKSPACE_DIFF_FIELDS, WIRE_WORKSPACE_DIRS_FIELDS, WIRE_WORKSPACE_DIR_ENTRY_FIELDS, WIRE_WORKSPACE_REF_FIELDS, type WireAbortResponse, type WireAbout, type WireAgentEnvelope, type WireAgentEvent, type WireAgentRoleSummary, type WireAppearanceRequest, type WireAppearanceResponse, type WireApprovalCacheRevokeRequest, type WireApprovalCacheRevokeResponse, type WireApprovalListResponse, type WireApprovalRequest, type WireArtifactsResponse, type WireAttachmentFolderResponse, type WireAttachmentUploadResponse, type WireAuditCode, type WireAuditLog, type WireAuditOutcome, type WireAuditRow, type WireAuthDenyReason, type WireAuthDenyStatus, type WireAuthGuard, type WireAuthRequestView, type WireAuthVerdict, type WireBackgroundTask, type WireBindWorkspaceRequest, type WireBlockedGoal, type WireBlockedGoalsResponse, type WireBlockedLevel, type WireBuiltinConnector, type WireCachedApproval, type WireCachedDecision, type WireCapabilitiesResponse, type WireCapabilityProject, type WireCheckpointListResponse, type WireCheckpointSummary, type WireCommandExpansion, type WireCommandsResponse, type WireCompactRequest, type WireCompactResponse, type WireCompressionLine, type WireConfigResponse, type WireContextResponse, type WireCreateSessionRequest, type WireCreateSessionResponse, type WireCreateWorkspaceRequest, type WireCreateWorkspaceResponse, type WireCustomCommand, type WireDeleteSessionResponse, type WireDiffFile, type WireDiffFileResponse, type WireDiffNote, type WireDiffOmitReason, type WireDiffSource, type WireDiffStatus, type WireEffectiveModel, type WireEffectiveSlots, type WireEntryProbeCode, type WireEntryProvider, type WireEnvelope, type WireErrorResponse, type WireEvent, type WireFields, type WireFileCandidate, type WireFileCandidatesResponse, type WireFileChange, type WireFileKind, type WireFileOpenRefusal, type WireFileOpenResponse, type WireFileReference, type WireFileRefusal, type WireFileStat, type WireFileStatOk, type WireFileStatRefused, type WireFileStatResponse, type WireFileTextResponse, type WireFixture, type WireFixtureCase, type WireForgetWorkspaceRequest, type WireForgetWorkspaceResponse, type WireGoal, type WireGoalBlock, type WireGoalClearResponse, type WireGoalCreateRequest, type WireGoalLimits, type WireGoalPhase, type WireGoalRefusal, type WireGoalResponse, type WireGoalUpdateRequest, type WireGoalWriteResponse, type WireHealthResponse, type WireHostBadgeRequest, type WireHostBadges, type WireHostCompose, type WireHostComposeRequest, type WireHostComposeResponse, type WireHostComposeStateResponse, type WireHostComposeTakeResponse, type WireHubEnvelope, type WireHubEvent, type WireImageReference, type WireKnownWorkspace, type WireKnownWorkspaceRef, type WireLastSessionRequest, type WireLastSessionResponse, type WireManagedLock, type WireMcpAddRequest, type WireMcpAddResponse, type WireMcpApplyAction, type WireMcpApplyEntry, type WireMcpApplyResponse, type WireMcpConfigApplyRequest, type WireMcpConfigIssue, type WireMcpConfigResponse, type WireMcpConfigSaveRequest, type WireMcpConfigSaveResponse, type WireMcpConnector, type WireMcpReconnectResponse, type WireMessageListResponse, type WireModelCaveat, type WireModelEffortRequest, type WireModelEffortResponse, type WireModelEntriesResponse, type WireModelEntry, type WireModelEntryModelsResponse, type WireModelEntryProbeRequest, type WireModelEntryRefRequest, type WireModelEntryRefs, type WireModelEntrySaveRequest, type WireModelEntrySaveResponse, type WireModelEntryTestResponse, type WireModelRejection, type WireModelResponse, type WireModelSelection, type WireModelSetRequest, type WireModelSetResponse, type WirePatchSessionRequest, type WirePatchSessionResponse, type WirePermissionRememberFailure, type WirePermissionRuleRow, type WirePermissionSetRequest, type WirePermissionSetResponse, type WirePermissionShadow, type WirePermissionState, type WirePermissionStatus, type WirePickDirectoryResponse, type WirePlanAction, type WirePlanModeRequest, type WirePlanModeResponse, type WirePlanModeState, type WirePlanResponse, type WirePluginActionResponse, type WirePluginCategory, type WirePluginCounts, type WirePluginDependency, type WirePluginDependencyInventory, type WirePluginDependencyStatus, type WirePluginDoc, type WirePluginDocs, type WirePluginEntry, type WirePluginHit, type WirePluginHookTally, type WirePluginInstallRequest, type WirePluginLocalInstallRequest, type WirePluginLocalRequest, type WirePluginMarketplace, type WirePluginMarketplaceRequest, type WirePluginMarketplaceResponse, type WirePluginMenuItem, type WirePluginNameRequest, type WirePluginPanel, type WirePluginPreview, type WirePluginPreviewRequest, type WirePluginPreviewResponse, type WirePluginPreviewStreamLine, type WirePluginProgressStep, type WirePluginRefreshResponse, type WirePluginRefuseReason, type WirePluginSourceType, type WirePluginStageRequest, type WirePluginStageResponse, type WirePluginStatus, type WirePluginUpdateRequest, type WirePluginUploadChoice, type WirePluginUploadConfirmRequest, type WirePluginUploadField, type WirePluginUploadFieldName, type WirePluginUploadFields, type WirePluginUploadFile, type WirePluginUploadForm, type WirePluginUploadPlan, type WirePluginUploadPreviewResponse, type WirePluginUploadRequest, type WirePluginUploadResponse, type WirePluginVersionUnmet, type WirePluginViewRequest, type WirePluginViewResponse, type WirePluginVisibility, type WirePluginsResponse, type WirePolicyDir, type WirePolicyStatus, type WireProjectInventory, type WireProviderGroup, type WireQuestionListResponse, type WireQuestionRequest, type WireReplayMessage, type WireResetReason, type WireRespondApprovalRequest, type WireRespondApprovalResponse, type WireRespondQuestionRequest, type WireRespondQuestionResponse, type WireReviveResponse, type WireRewindAction, type WireRewindDrift, type WireRewindFilePlan, type WireRewindOutcome, type WireRewindPreview, type WireRewindRequest, type WireRewindResponse, type WireRewindScope, type WireRoleAddRequest, type WireRoleAddResponse, type WireRoleRemoveFailure, type WireRoleRemoveResponse, type WireRolesResponse, type WireRunningSchedule, type WireSandboxReason, type WireSandboxStatus, type WireScheduleCapability, type WireScheduleCreateRequest, type WireScheduleDefaults, type WireScheduleDeleteResponse, type WireScheduleFixRequest, type WireScheduleFixResponse, type WireScheduleIssue, type WireScheduleIssueCode, type WireScheduleListResponse, type WireSchedulePendingResponse, type WireScheduleRecordingResponse, type WireScheduleRegisterRefusal, type WireScheduleRegisterWarning, type WireScheduleRegistration, type WireScheduleResponse, type WireScheduleRow, type WireScheduleRunResponse, type WireScheduleRunningResponse, type WireScheduleRunsResponse, type WireScheduleSaveResponse, type WireScheduleUpdateRequest, type WireSecurityResponse, type WireSecurityWorkspace, type WireSendMessageRequest, type WireSendMessageResponse, type WireSessionCandidate, type WireSessionCandidatesResponse, type WireSessionFinish, type WireSessionListResponse, type WireSessionReference, type WireSessionResponse, type WireSessionSummary, type WireSessionWorkspace, type WireSessionWorkspaceResponse, type WireSettingApply, type WireSettingFutile, type WireSettingLayer, type WireSettingPending, type WireSettingRow, type WireSettingStep, type WireSettingValue, type WireSettingValueKind, type WireSettingWrite, type WireSettingWriteLayer, type WireSettingsResponse, type WireSettingsWriteRequest, type WireSettingsWriteResponse, type WireSkillBodyResponse, type WireSkillImportConflict, type WireSkillImportEntry, type WireSkillImportFailure, type WireSkillImportForm, type WireSkillImportIssue, type WireSkillImportPreviewResponse, type WireSkillImportResponse, type WireSkillRemoveFailure, type WireSkillRemoveResponse, type WireSkillStageFailure, type WireSkillStageResponse, type WireSkillSummary, type WireSummaryWorkspace, type WireTaggedEvent, type WireTasksResponse, type WireToolGate, type WireToolGateAxis, type WireToolRow, type WireToolSummary, type WireToolVerdict, type WireToolsResponse, type WireTrustRequestRequest, type WireTrustRequestResponse, type WireTurnState, type WireWithdrawMessageResponse, type WireWorkspaceBinding, type WireWorkspaceDiffResponse, type WireWorkspaceDirEntry, type WireWorkspaceDirsResponse, type WireWorkspaceRef, accentScale, apiKeyEnvVar, appearanceInlineVars, appearanceRootAttributes, appearanceVisualCss, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, encodeAppearanceFirstScreenValue, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatAppearanceTranslucent, formatMoney, getProviderInfo, hasFailure, hexToHsv, hsvToHex, imagePartOmittedSummary, isAppearanceAccent, isAppearanceAccentValue, isAppearanceBackground, isAppearanceBackgroundFit, isAppearanceBackgroundKind, isAppearanceCodeFont, isAppearanceCodeFontSize, isAppearanceContrast, isAppearanceDiffTreeWidth, isAppearanceFontSize, isAppearanceLang, isAppearanceModePatch, isAppearanceMotion, isAppearanceSidebarWidth, isAppearanceTheme, isAppearanceThemeName, isAppearanceTranslucent, isAppearanceUiFont, isApprovalOutcome, isContextNearlyFull, isCurrency, isEntrySecretName, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isHexColor, isKeyAction, isLang, isMentionableFilePath, isModelEntryId, isOpenableLink, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isReasoningEffort, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, joinUploadMulti, makeTranslate, mcpConnectorState, normalizeAppearanceTranslucent, normalizeApproval, packSessionSurface, parseAppearanceTranslucentText, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
19206
+ export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_BACKGROUND_ON_PARAM, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, APPEARANCE_FIRST_SCREEN_FIELDS, APPEARANCE_FIRST_SCREEN_FIELD_ORDER, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, APPEARANCE_ROOT_ATTRIBUTES, APPEARANCE_SIDEBAR_WIDTH, APPEARANCE_THEMES, APPEARANCE_THEME_NAME_MAX, APPEARANCE_TRANSLUCENT, APPEARANCE_UI_FONTS, APPROVAL_OUTCOMES, APPROVAL_POLICIES, type ActiveAgentRole, type AgentEvent, type AgentEventOf, type AgentEventType, type AgentRole, type AgentRoleScope, type AgentRoleSource, type AppearanceAccent, type AppearanceAccentValue, type AppearanceBackground, type AppearanceBackgroundFit, type AppearanceBackgroundKind, type AppearanceCodeFont, type AppearanceEffectiveTheme, type AppearanceFirstScreenField, type AppearanceFirstScreenKind, type AppearanceLang, type AppearanceModePatch, type AppearanceMotion, type AppearanceTheme, type AppearanceUiFont, type AppearanceVisualSource, type ApprovalAnswer, type ApprovalOutcome, type ApprovalPolicy, type ApprovalReply, type ApprovalRequest, type ApprovalScope, type ArtifactKind, type AttributeValue, type Attributes, BRAND_WHEN_SIDEBAR_COLLAPSED, type BackgroundTaskInfo, type BackgroundTaskKind, type BackgroundTaskStatus, type BlankCard, type BlankGreeting, type BoundKey, type BrandWhenSidebarCollapsed, type BudgetBreach, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, type Catalogs, type ComplianceAction, type ComplianceCategory, type ContextBreakdown, type ContextCacheStats, type ContextNote, type ContextSegment, type ContextSegmentKind, type Currency, type CurrencyDisplay, type CustomCommandDef, type CustomCommandSource, DEFAULT_AGENT_ROLE, DEFAULT_LANG, DEFAULT_PERMISSION_LEVEL, type DecidedTrustLevel, type Diagnostic, DiagnosticSink, type DiagnosticStatus, ENTRY_REF_PREFIX, ENTRY_SECRET_PREFIX, type EpochConfig, type EpochContentPart, type EpochFilePart, type EpochHook, type EpochImagePart, type EpochMessage, type EpochMessageRole, type EpochPlugin, type EpochSessionPart, type EpochSkill, type EpochTextPart, type EpochTool, type EpochToolCall, type EpochToolResult, type EpochTurnFacts, type EpochUserCommand, type EpochUserContent, type ExpandedCommand, FOLLOW_SYSTEM, type FileOmitReason, type FinishReason, type FixableApproval, type FlatCatalog, type FormatMoneyOptions, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, type HeadlessEnvelope, type HeadlessEvent, type HeadlessInit, type HeadlessInputEvent, type HeadlessInputEventType, type HeadlessInputFormat, type HeadlessLifecycleEvent, type HeadlessOutputFormat, type HeadlessResult, type HeadlessResultReason, type HookContext, type HookEvent, type HookHandler, type HookManager, type HookRegistration, type HookType, type HostText, type HostUser, type Hsv, type JsonSchema, KEY_ACTIONS, type KeyAction, type KeyChord, type KeyContext, type KeySequence, type KeybindingReport, type KeybindingSource, type KeybindingTable, LANGS, LEGACY_LEVEL_ALIASES, LINK_CLICKED_MESSAGE_TYPE, type Lang, type LinkClickedMessage, type LocalizedDetail, type LogFn, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_LINK_URL, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, MODEL_ENTRY_PROTOCOLS, type MentionSet, type ModelEntry, type ModelEntryCapabilities, type ModelEntryProtocol, type ModelRef, type ModelSelection, type ModelSelectionOrigin, type MoneyDigits, NOOP_TELEMETRY, type NoticeCode, OFFLOADED_IMAGE_NOTE, OPENABLE_LINK_SCHEMES, OPEN_SETTINGS_MESSAGE_TYPE, OPERATION_TYPES, OVERSIZE_RATIO, type OpenSettingsMessage, type Operation, type OperationType, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_CATEGORY_DISPLAY_SEP, PLUGIN_MENU_MESSAGE_TYPE, PLUGIN_PREVIEW_STREAM_MIME, PLUGIN_UPLOAD_MULTI_SEP, PROVIDER_INFOS, PROVIDER_TYPES, type PermissionDecision, type PermissionLevel, type PermissionManager, type PermissionRuleLists, type PlanApprovalOutcome, type PlanProposal, type PluginContext, type PluginMenuMessage, type ProviderInfo, type ProviderType, type QuestionAnswer, type QuestionItem, type QuestionOption, type QuestionPage, type QuestionRequest, REASONING_EFFORTS, REASONING_OFF, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, type ReasoningChoice, type ReasoningEffort, type ReasoningState, type RejectReason, type RejectedKey, type ResolvedAppearanceVisual, type RuleValue, SCHEDULE_CONFIRM_PLACEHOLDER, SCHEDULE_DEFAULT_PERMISSION, SCHEDULE_DRAFT_SAVED_MARK, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MAX_MINUTES, SCHEDULE_INTERVAL_MIN_MINUTES, SCHEDULE_MAX_TIMES_PER_DAY, SCHEDULE_RUN_STATUSES, SEARCH_API_KEY_ENV, SEARCH_PROVIDER_TYPES, SECRET_SERVICE, SEQUENCE_CONTEXTS, SESSION_MENTION_PREFIX, SESSION_REFERENCE_ERROR_CODES, SETTINGS_PANE_IDS, SHELL_KINDS, SIDEBAR_MENU_MESSAGE_TYPE, SIMULTANEOUS_CONTEXTS, SYSTEM_NOTE_PREFIX, type SandboxMode, type ScheduleAllowlist, type ScheduleBackendKind, type ScheduleCronTrigger, type ScheduleCycle, type ScheduleDefinition, type ScheduleDraft, type ScheduleDraftAllowlist, type ScheduleDraftCreate, type ScheduleDraftPermission, type ScheduleDraftUpdate, type SchedulePendingApproval, type SchedulePendingItem, type ScheduleRun, type ScheduleRunStatus, type ScheduleRunnerSpec, type ScheduleTrigger, type ScheduleTriggerKind, type ScheduleWeekday, type ScheduleWideningKind, type SearchProviderType, type SecretBackendId, type SecretStore, type SelectionContext, type SelectionRejection, type SelectionWarning, type SessionAttachKind, type SessionAttachResult, type SessionOmitReason, type SessionSurfaceMessage, type SessionSurfaceView, type SetSelectionResult, type SettingsPaneId, type SettingsPaneItem, type ShellKind, type SidebarMenuItem, type SidebarMenuMessage, type SidebarNavItem, type SpanLike, type SubToolCall, type SubToolCallResult, type Telemetry, type TokenUsage, type ToolAnnotations, type ToolArtifact, type ToolArtifactInput, type ToolContext, type ToolDefinition, ToolExposure, type ToolProvider, type ToolResult, type Translate, type TranslateVars, type TrustExecGrant, type TrustGrant, type TrustLevel, type TrustManager, type TrustRecord, type TrustScope, type TrustTier, UNLIMITED_TURNS, USER_MENU_MESSAGE_TYPE, type UserMenuMessage, type VerifyResult, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_FIELDS, WIRE_APPEARANCE_RESPONSE_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_REQUEST_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_RESPONSE_FIELDS, WIRE_APPROVAL_LIST_FIELDS, WIRE_APPROVAL_ROW_FIELDS, WIRE_ARTIFACTS_FIELDS, WIRE_ATTACHMENT_FOLDER_FIELDS, WIRE_ATTACHMENT_UPLOAD_FIELDS, WIRE_AUDIT_LOG_FIELDS, WIRE_AUDIT_ROW_FIELDS, WIRE_AUTH_COOKIE, WIRE_AUTH_COOKIE_ATTRS, WIRE_AUTH_TOKEN_PARAM, WIRE_BACKGROUND_TASK_FIELDS, WIRE_BLOCKED_GOALS_FIELDS, WIRE_BLOCKED_GOAL_FIELDS, WIRE_BLOCKED_LEVEL_FIELDS, WIRE_BUILTIN_CONNECTOR_FIELDS, WIRE_CACHED_APPROVAL_FIELDS, WIRE_CAPABILITIES_FIELDS, WIRE_CAPABILITY_PROJECT_FIELDS, WIRE_CHECKPOINT_LIST_FIELDS, WIRE_CHECKPOINT_SUMMARY_FIELDS, WIRE_COMMANDS_FIELDS, WIRE_COMMAND_EXPANSION_FIELDS, WIRE_COMPACT_FIELDS, WIRE_COMPRESSION_LINE_FIELDS, WIRE_CONFIG_FIELDS, WIRE_CONTEXT_FIELDS, WIRE_CREATE_SESSION_FIELDS, WIRE_CREATE_WORKSPACE_FIELDS, WIRE_CREATE_WORKSPACE_RESPONSE_FIELDS, WIRE_CUSTOM_COMMAND_FIELDS, WIRE_DELETE_SESSION_FIELDS, WIRE_DIFF_FILE_FIELDS, WIRE_DIFF_FILE_RESPONSE_FIELDS, WIRE_ERROR_FIELDS, WIRE_FILE_CANDIDATES_FIELDS, WIRE_FILE_CANDIDATE_FIELDS, WIRE_FILE_CHANGE_FIELDS, WIRE_FILE_OPEN_RESPONSE_FIELDS, WIRE_FILE_REFERENCE_FIELDS, WIRE_FILE_STAT_MAX, WIRE_FILE_STAT_OK_FIELDS, WIRE_FILE_STAT_REFUSED_FIELDS, WIRE_FILE_STAT_RESPONSE_FIELDS, WIRE_FILE_TEXT_RESPONSE_FIELDS, WIRE_FORGET_WORKSPACE_FIELDS, WIRE_FORGET_WORKSPACE_RESPONSE_FIELDS, WIRE_GOAL_ACTIONS, WIRE_GOAL_BLOCK_FIELDS, WIRE_GOAL_CLEAR_FIELDS, WIRE_GOAL_CREATE_FIELDS, WIRE_GOAL_FIELDS, WIRE_GOAL_LIMITS_FIELDS, WIRE_GOAL_PHASES, WIRE_GOAL_REFUSALS, WIRE_GOAL_RESPONSE_FIELDS, WIRE_GOAL_WRITE_FIELDS, WIRE_HEALTH_FIELDS, WIRE_IMAGE_REFERENCE_FIELDS, WIRE_KNOWN_WORKSPACE_FIELDS, WIRE_LANG_PARAM, WIRE_LAST_SESSION_FIELDS, WIRE_LAST_SESSION_RESPONSE_FIELDS, WIRE_MANAGED_LOCK_FIELDS, WIRE_MCP_ADD_FIELDS, WIRE_MCP_ADD_RESPONSE_FIELDS, WIRE_MCP_APPLY_ENTRY_FIELDS, WIRE_MCP_APPLY_RESPONSE_FIELDS, WIRE_MCP_CONFIG_APPLY_FIELDS, WIRE_MCP_CONFIG_FIELDS, WIRE_MCP_CONFIG_ISSUE_FIELDS, WIRE_MCP_CONFIG_SAVE_FIELDS, WIRE_MCP_CONFIG_SAVE_RESPONSE_FIELDS, WIRE_MCP_CONNECTOR_FIELDS, WIRE_MCP_RECONNECT_FIELDS, WIRE_MESSAGE_LIST_FIELDS, WIRE_MODEL_ENTRIES_FIELDS, WIRE_MODEL_ENTRY_MODELS_FIELDS, WIRE_MODEL_ENTRY_SAVE_FIELDS, WIRE_MODEL_ENTRY_TEST_FIELDS, WIRE_MODEL_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_PATCH_SESSION_FIELDS, WIRE_PATCH_SESSION_RESPONSE_FIELDS, WIRE_PERMISSION_RULE_FIELDS, WIRE_PERMISSION_SET_REQUEST_FIELDS, WIRE_PERMISSION_SET_RESPONSE_FIELDS, WIRE_PERMISSION_SHADOW_FIELDS, WIRE_PERMISSION_STATE_FIELDS, WIRE_PERMISSION_STATUS_FIELDS, WIRE_PLAN_ACTIONS, WIRE_PLAN_FIELDS, WIRE_PLAN_MODE_REQUEST_FIELDS, WIRE_PLAN_MODE_RESPONSE_FIELDS, WIRE_PLAN_MODE_STATE_FIELDS, WIRE_PLUGINS_FIELDS, WIRE_PLUGIN_ACTION_FIELDS, WIRE_PLUGIN_ARCHIVE_SUFFIXES, WIRE_PLUGIN_INSTALL_FIELDS, WIRE_PLUGIN_LOCAL_FIELDS, WIRE_PLUGIN_LOCAL_INSTALL_FIELDS, WIRE_PLUGIN_MARKETPLACE_FIELDS, WIRE_PLUGIN_MARKETPLACE_RESPONSE_FIELDS, WIRE_PLUGIN_NAME_FIELDS, WIRE_PLUGIN_PREVIEW_FIELDS, WIRE_PLUGIN_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_REFRESH_RESPONSE_FIELDS, WIRE_PLUGIN_STAGE_FIELDS, WIRE_PLUGIN_STAGE_RESPONSE_FIELDS, WIRE_PLUGIN_TOGGLE_FIELDS, WIRE_PLUGIN_UPDATE_FIELDS, WIRE_PLUGIN_UPLOAD_CONFIRM_FIELDS, WIRE_PLUGIN_UPLOAD_FIELDS, WIRE_PLUGIN_UPLOAD_FORM_FIELDS, WIRE_PLUGIN_UPLOAD_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_UPLOAD_RESPONSE_FIELDS, WIRE_PLUGIN_VIEW_FIELDS, WIRE_PLUGIN_VIEW_RESPONSE_FIELDS, WIRE_POLICY_DIR_FIELDS, WIRE_POLICY_STATUS_FIELDS, WIRE_PROJECT_INVENTORY_FIELDS, WIRE_PROVIDER_GROUPS, WIRE_QUESTION_LIST_FIELDS, WIRE_QUESTION_ROW_FIELDS, WIRE_RESPOND_APPROVAL_FIELDS, WIRE_RESPOND_APPROVAL_RESPONSE_FIELDS, WIRE_RESPOND_QUESTION_FIELDS, WIRE_RESPOND_QUESTION_RESPONSE_FIELDS, WIRE_REVIVE_FIELDS, WIRE_REWIND_FILE_PLAN_FIELDS, WIRE_REWIND_OUTCOME_FIELDS, WIRE_REWIND_PREVIEW_FIELDS, WIRE_REWIND_REQUEST_FIELDS, WIRE_REWIND_RESPONSE_FIELDS, WIRE_REWIND_SCOPES, WIRE_ROLES_FIELDS, WIRE_ROLE_ADD_FIELDS, WIRE_ROLE_ADD_RESPONSE_FIELDS, WIRE_ROLE_REMOVE_FIELDS, WIRE_RUNNING_SCHEDULE_FIELDS, WIRE_SANDBOX_STATUS_FIELDS, WIRE_SCHEDULE_CAPABILITY_FIELDS, WIRE_SCHEDULE_CREATE_FIELDS, WIRE_SCHEDULE_DEFAULTS_FIELDS, WIRE_SCHEDULE_DELETE_FIELDS, WIRE_SCHEDULE_FIELDS, WIRE_SCHEDULE_FIX_FIELDS, WIRE_SCHEDULE_FIX_REQUEST_FIELDS, WIRE_SCHEDULE_ISSUE_CODES, WIRE_SCHEDULE_LIST_FIELDS, WIRE_SCHEDULE_PENDING_FIELDS, WIRE_SCHEDULE_RECORDING_FIELDS, WIRE_SCHEDULE_ROW_FIELDS, WIRE_SCHEDULE_RUNNING_FIELDS, WIRE_SCHEDULE_RUNS_FIELDS, WIRE_SCHEDULE_RUN_FIELDS, WIRE_SCHEDULE_SAVE_FIELDS, WIRE_SECURITY_FIELDS, WIRE_SECURITY_WORKSPACE_FIELDS, WIRE_SEND_MESSAGE_FIELDS, WIRE_SEND_MESSAGE_RESPONSE_FIELDS, WIRE_SESSION_BRANCH_RESPONSE_FIELDS, WIRE_SESSION_CANDIDATES_FIELDS, WIRE_SESSION_CANDIDATE_FIELDS, WIRE_SESSION_FINISH_FIELDS, WIRE_SESSION_LIST_FIELDS, WIRE_SESSION_REFERENCE_FIELDS, WIRE_SESSION_RESPONSE_FIELDS, WIRE_SESSION_SUMMARY_FIELDS, WIRE_SESSION_WORKSPACE_FIELDS, WIRE_SESSION_WORKSPACE_RESPONSE_FIELDS, WIRE_SETTINGS_FIELDS, WIRE_SETTINGS_WRITE_FIELDS, WIRE_SETTINGS_WRITE_REQUEST_FIELDS, WIRE_SETTING_PENDING_FIELDS, WIRE_SETTING_ROW_FIELDS, WIRE_SETTING_STEP_FIELDS, WIRE_SETTING_WRITE_FIELDS, WIRE_SETTING_WRITE_LAYERS, WIRE_SKILL_BODY_FIELDS, WIRE_SKILL_DROP_SUFFIXES, WIRE_SKILL_FIELDS, WIRE_SKILL_IMPORT_FIELDS, WIRE_SKILL_IMPORT_PREVIEW_FIELDS, WIRE_SKILL_REMOVE_FIELDS, WIRE_SKILL_STAGE_FIELDS, WIRE_TASKS_FIELDS, WIRE_TOOLS_FIELDS, WIRE_TOOL_GATE_FIELDS, WIRE_TOOL_ROW_FIELDS, WIRE_TRUST_REQUEST_FIELDS, WIRE_TRUST_REQUEST_RESPONSE_FIELDS, WIRE_WITHDRAW_MESSAGE_FIELDS, WIRE_WORKSPACE_DIFF_FIELDS, WIRE_WORKSPACE_DIRS_FIELDS, WIRE_WORKSPACE_DIR_ENTRY_FIELDS, WIRE_WORKSPACE_REF_FIELDS, type WireAbortResponse, type WireAbout, type WireAgentEnvelope, type WireAgentEvent, type WireAgentRoleSummary, type WireAppearanceRequest, type WireAppearanceResponse, type WireApprovalCacheRevokeRequest, type WireApprovalCacheRevokeResponse, type WireApprovalListResponse, type WireApprovalRequest, type WireArtifactsResponse, type WireAttachmentFolderResponse, type WireAttachmentUploadResponse, type WireAuditCode, type WireAuditLog, type WireAuditOutcome, type WireAuditRow, type WireAuthDenyReason, type WireAuthDenyStatus, type WireAuthGuard, type WireAuthRequestView, type WireAuthVerdict, type WireBackgroundTask, type WireBindWorkspaceRequest, type WireBlockedGoal, type WireBlockedGoalsResponse, type WireBlockedLevel, type WireBuiltinConnector, type WireCachedApproval, type WireCachedDecision, type WireCapabilitiesResponse, type WireCapabilityProject, type WireCheckpointListResponse, type WireCheckpointSummary, type WireCommandExpansion, type WireCommandsResponse, type WireCompactRequest, type WireCompactResponse, type WireCompressionLine, type WireConfigResponse, type WireContextResponse, type WireCreateSessionRequest, type WireCreateSessionResponse, type WireCreateWorkspaceRequest, type WireCreateWorkspaceResponse, type WireCustomCommand, type WireDeleteSessionResponse, type WireDiffFile, type WireDiffFileResponse, type WireDiffNote, type WireDiffOmitReason, type WireDiffSource, type WireDiffStatus, type WireEffectiveModel, type WireEffectiveSlots, type WireEntryProbeCode, type WireEntryProvider, type WireEnvelope, type WireErrorResponse, type WireEvent, type WireFields, type WireFileCandidate, type WireFileCandidatesResponse, type WireFileChange, type WireFileKind, type WireFileOpenRefusal, type WireFileOpenResponse, type WireFileReference, type WireFileRefusal, type WireFileStat, type WireFileStatOk, type WireFileStatRefused, type WireFileStatResponse, type WireFileTextResponse, type WireFixture, type WireFixtureCase, type WireForgetWorkspaceRequest, type WireForgetWorkspaceResponse, type WireGoal, type WireGoalBlock, type WireGoalClearResponse, type WireGoalCreateRequest, type WireGoalLimits, type WireGoalPhase, type WireGoalRefusal, type WireGoalResponse, type WireGoalUpdateRequest, type WireGoalWriteResponse, type WireHealthResponse, type WireHostBadgeRequest, type WireHostBadges, type WireHostCompose, type WireHostComposeRequest, type WireHostComposeResponse, type WireHostComposeStateResponse, type WireHostComposeTakeResponse, type WireHubEnvelope, type WireHubEvent, type WireImageReference, type WireKnownWorkspace, type WireKnownWorkspaceRef, type WireLastSessionRequest, type WireLastSessionResponse, type WireManagedLock, type WireMcpAddRequest, type WireMcpAddResponse, type WireMcpApplyAction, type WireMcpApplyEntry, type WireMcpApplyResponse, type WireMcpConfigApplyRequest, type WireMcpConfigIssue, type WireMcpConfigResponse, type WireMcpConfigSaveRequest, type WireMcpConfigSaveResponse, type WireMcpConnector, type WireMcpReconnectResponse, type WireMessageListResponse, type WireModelCaveat, type WireModelEffortRequest, type WireModelEffortResponse, type WireModelEntriesResponse, type WireModelEntry, type WireModelEntryModelsResponse, type WireModelEntryProbeRequest, type WireModelEntryRefRequest, type WireModelEntryRefs, type WireModelEntrySaveRequest, type WireModelEntrySaveResponse, type WireModelEntryTestResponse, type WireModelRejection, type WireModelResponse, type WireModelSelection, type WireModelSetRequest, type WireModelSetResponse, type WirePatchSessionRequest, type WirePatchSessionResponse, type WirePermissionRememberFailure, type WirePermissionRuleRow, type WirePermissionSetRequest, type WirePermissionSetResponse, type WirePermissionShadow, type WirePermissionState, type WirePermissionStatus, type WirePickDirectoryResponse, type WirePlanAction, type WirePlanModeRequest, type WirePlanModeResponse, type WirePlanModeState, type WirePlanResponse, type WirePluginActionResponse, type WirePluginCategory, type WirePluginCounts, type WirePluginDependency, type WirePluginDependencyInventory, type WirePluginDependencyStatus, type WirePluginDoc, type WirePluginDocs, type WirePluginEntry, type WirePluginHit, type WirePluginHookTally, type WirePluginInstallRequest, type WirePluginLocalInstallRequest, type WirePluginLocalRequest, type WirePluginMarketplace, type WirePluginMarketplaceRequest, type WirePluginMarketplaceResponse, type WirePluginMenuItem, type WirePluginNameRequest, type WirePluginPanel, type WirePluginPreview, type WirePluginPreviewRequest, type WirePluginPreviewResponse, type WirePluginPreviewStreamLine, type WirePluginProgressStep, type WirePluginRefreshResponse, type WirePluginRefuseReason, type WirePluginSourceType, type WirePluginStageRequest, type WirePluginStageResponse, type WirePluginStatus, type WirePluginToggleRequest, type WirePluginUpdateRequest, type WirePluginUploadChoice, type WirePluginUploadConfirmRequest, type WirePluginUploadField, type WirePluginUploadFieldName, type WirePluginUploadFields, type WirePluginUploadFile, type WirePluginUploadForm, type WirePluginUploadPlan, type WirePluginUploadPreviewResponse, type WirePluginUploadRequest, type WirePluginUploadResponse, type WirePluginVersionUnmet, type WirePluginViewRequest, type WirePluginViewResponse, type WirePluginVisibility, type WirePluginsResponse, type WirePolicyDir, type WirePolicyStatus, type WireProjectInventory, type WireProviderGroup, type WireQuestionListResponse, type WireQuestionRequest, type WireReplayMessage, type WireResetReason, type WireRespondApprovalRequest, type WireRespondApprovalResponse, type WireRespondQuestionRequest, type WireRespondQuestionResponse, type WireReviveResponse, type WireRewindAction, type WireRewindDrift, type WireRewindFilePlan, type WireRewindOutcome, type WireRewindPreview, type WireRewindRequest, type WireRewindResponse, type WireRewindScope, type WireRoleAddRequest, type WireRoleAddResponse, type WireRoleRemoveFailure, type WireRoleRemoveResponse, type WireRolesResponse, type WireRunningSchedule, type WireSandboxReason, type WireSandboxStatus, type WireScheduleCapability, type WireScheduleCreateRequest, type WireScheduleDefaults, type WireScheduleDeleteResponse, type WireScheduleFixRequest, type WireScheduleFixResponse, type WireScheduleIssue, type WireScheduleIssueCode, type WireScheduleListResponse, type WireSchedulePendingResponse, type WireScheduleRecordingResponse, type WireScheduleRegisterRefusal, type WireScheduleRegisterWarning, type WireScheduleRegistration, type WireScheduleResponse, type WireScheduleRow, type WireScheduleRunResponse, type WireScheduleRunningResponse, type WireScheduleRunsResponse, type WireScheduleSaveResponse, type WireScheduleUpdateRequest, type WireSecurityResponse, type WireSecurityWorkspace, type WireSendMessageRequest, type WireSendMessageResponse, type WireSessionBranchResponse, type WireSessionCandidate, type WireSessionCandidatesResponse, type WireSessionFinish, type WireSessionListResponse, type WireSessionReference, type WireSessionResponse, type WireSessionSummary, type WireSessionWorkspace, type WireSessionWorkspaceResponse, type WireSettingApply, type WireSettingFutile, type WireSettingLayer, type WireSettingPending, type WireSettingRow, type WireSettingStep, type WireSettingValue, type WireSettingValueKind, type WireSettingWrite, type WireSettingWriteLayer, type WireSettingsResponse, type WireSettingsWriteRequest, type WireSettingsWriteResponse, type WireSkillBodyResponse, type WireSkillImportConflict, type WireSkillImportEntry, type WireSkillImportFailure, type WireSkillImportForm, type WireSkillImportIssue, type WireSkillImportPreviewResponse, type WireSkillImportResponse, type WireSkillRemoveFailure, type WireSkillRemoveResponse, type WireSkillStageFailure, type WireSkillStageResponse, type WireSkillSummary, type WireSummaryWorkspace, type WireTaggedEvent, type WireTasksResponse, type WireToolGate, type WireToolGateAxis, type WireToolRow, type WireToolSummary, type WireToolVerdict, type WireToolsResponse, type WireTrustRequestRequest, type WireTrustRequestResponse, type WireTurnState, type WireWithdrawMessageResponse, type WireWorkspaceBinding, type WireWorkspaceDiffResponse, type WireWorkspaceDirEntry, type WireWorkspaceDirsResponse, type WireWorkspaceRef, accentScale, apiKeyEnvVar, appearanceInlineVars, appearanceRootAttributes, appearanceVisualCss, approvalPolicyForLevel, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, encodeAppearanceFirstScreenValue, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, fillPlaceholders, flattenCatalog, formatAppearanceTranslucent, formatMoney, getProviderInfo, hasFailure, hexToHsv, hsvToHex, imagePartOmittedSummary, isAppearanceAccent, isAppearanceAccentValue, isAppearanceBackground, isAppearanceBackgroundFit, isAppearanceBackgroundKind, isAppearanceCodeFont, isAppearanceCodeFontSize, isAppearanceContrast, isAppearanceDiffTreeWidth, isAppearanceFontSize, isAppearanceLang, isAppearanceModePatch, isAppearanceMotion, isAppearanceSidebarWidth, isAppearanceTheme, isAppearanceThemeName, isAppearanceTranslucent, isAppearanceUiFont, isApprovalOutcome, isContextNearlyFull, isCurrency, isEntrySecretName, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isHexColor, isKeyAction, isLang, isMentionableFilePath, isModelEntryId, isOpenableLink, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isReasoningEffort, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, joinUploadMulti, makeTranslate, mcpConnectorState, normalizeAppearanceTranslucent, normalizeApproval, offloadedImagePart, packSessionSurface, parseAppearanceTranslucentText, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, resolvePermissionLevel, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
package/dist/index.js CHANGED
@@ -320,12 +320,23 @@ var PERMISSION_LEVELS = [
320
320
  "default",
321
321
  "acceptEdits",
322
322
  "plan",
323
- "auto",
324
- "bypass"
323
+ "auto"
325
324
  ];
325
+ var LEGACY_LEVEL_ALIASES = {
326
+ bypass: "auto"
327
+ };
326
328
  function isPermissionLevel(value) {
327
329
  return PERMISSION_LEVELS.includes(value);
328
330
  }
331
+ var DEFAULT_PERMISSION_LEVEL = "acceptEdits";
332
+ function resolvePermissionLevel(value) {
333
+ if (isPermissionLevel(value)) return value;
334
+ return LEGACY_LEVEL_ALIASES[value];
335
+ }
336
+ var APPROVAL_POLICIES = ["ask", "never"];
337
+ function approvalPolicyForLevel(level) {
338
+ return level === "auto" ? "never" : "ask";
339
+ }
329
340
  var OPERATION_TYPES = [
330
341
  "file_read",
331
342
  "file_write",
@@ -366,6 +377,7 @@ function cronTimes(trigger) {
366
377
  var SCHEDULE_MAX_TIMES_PER_DAY = 24;
367
378
  var SCHEDULE_INTERVAL_MIN_MINUTES = 5;
368
379
  var SCHEDULE_INTERVAL_MAX_MINUTES = 24 * 60;
380
+ var SCHEDULE_DEFAULT_PERMISSION = "auto";
369
381
  var SCHEDULE_RUN_STATUSES = [
370
382
  "ok",
371
383
  "failed",
@@ -467,6 +479,10 @@ function filePartSummary(part) {
467
479
  function imagePartOmittedSummary(part) {
468
480
  return `[\u56FE\u7247 ${part.mediaType ?? "\u672A\u77E5\u7C7B\u578B"}\uFF1A\u5F53\u524D\u6A21\u578B\u4E0D\u652F\u6301\u56FE\u7247\u8F93\u5165\uFF0C\u5185\u5BB9\u672A\u9644\u4E0A]`;
469
481
  }
482
+ var OFFLOADED_IMAGE_NOTE = "[\u56FE\u7247\u5DF2\u4E0B\u653E\uFF1A\u539F\u56FE\u4ECD\u5728 artifact \u76EE\u5F55\u91CC\uFF0C\u9700\u8981\u5C31\u8C03 file_read \u6309\u8DEF\u5F84\u53D6\uFF1B\u522B\u8BA9\u7528\u6237\u91CD\u53D1\uFF0C\u91CD\u53D1\u4E5F\u4E0D\u6539\u53D8\u4F53\u79EF]";
483
+ function offloadedImagePart() {
484
+ return { type: "text", text: OFFLOADED_IMAGE_NOTE };
485
+ }
470
486
  function sessionPartSummary(part) {
471
487
  const name = part.title ?? part.sessionId ?? part.ref;
472
488
  const head = `[referenced session "${name}"`;
@@ -965,6 +981,7 @@ var WIRE_PLAN_FIELDS = wireFields()({
965
981
  var WIRE_SESSION_WORKSPACE_RESPONSE_FIELDS = wireFields()({
966
982
  binding: true
967
983
  });
984
+ var WIRE_SESSION_BRANCH_RESPONSE_FIELDS = wireFields()({});
968
985
  var WIRE_ERROR_FIELDS = wireFields()({
969
986
  error: true
970
987
  });
@@ -1266,6 +1283,10 @@ var WIRE_PLUGIN_UPDATE_FIELDS = wireFields()({
1266
1283
  name: true,
1267
1284
  token: true
1268
1285
  });
1286
+ var WIRE_PLUGIN_TOGGLE_FIELDS = wireFields()({
1287
+ name: true,
1288
+ enabled: true
1289
+ });
1269
1290
  var WIRE_PLUGIN_VIEW_FIELDS = wireFields()({ name: true });
1270
1291
  var WIRE_PLUGIN_PREVIEW_RESPONSE_FIELDS = wireFields()({
1271
1292
  ok: true,
@@ -1524,6 +1545,12 @@ function isLang(value) {
1524
1545
  }
1525
1546
  var WIRE_LANG_PARAM = "lang";
1526
1547
  var PLACEHOLDER = /\{(\w+)\}/g;
1548
+ function fillPlaceholders(text, vars) {
1549
+ return text.replace(PLACEHOLDER, (whole, name) => {
1550
+ const value = vars[name];
1551
+ return value === void 0 ? whole : String(value);
1552
+ });
1553
+ }
1527
1554
  function placeholdersOf(text) {
1528
1555
  const found = [];
1529
1556
  for (const match of text.matchAll(PLACEHOLDER)) {
@@ -1546,10 +1573,7 @@ function makeTranslate(catalogs) {
1546
1573
  return (lang, key, vars) => {
1547
1574
  const text = catalogOf(lang)[key] ?? catalogOf(DEFAULT_LANG)[key] ?? key;
1548
1575
  if (!vars) return text;
1549
- return text.replace(PLACEHOLDER, (whole, name) => {
1550
- const value = vars[name];
1551
- return value === void 0 ? whole : String(value);
1552
- });
1576
+ return fillPlaceholders(text, vars);
1553
1577
  };
1554
1578
  }
1555
1579
  function translatorFor(catalogs, lang) {
@@ -2083,7 +2107,6 @@ var WIRE_SCHEDULE_ISSUE_CODES = [
2083
2107
  "prompt-empty",
2084
2108
  "permission-unknown",
2085
2109
  "work-dir-missing",
2086
- "budget-missing",
2087
2110
  "max-turns-invalid",
2088
2111
  "timeout-invalid",
2089
2112
  "trigger-time-invalid",
@@ -2108,7 +2131,6 @@ var WIRE_SCHEDULE_CAPABILITY_FIELDS = wireFields()({
2108
2131
  var WIRE_SCHEDULE_DEFAULTS_FIELDS = wireFields()({
2109
2132
  maxTurns: true,
2110
2133
  timeoutMs: true,
2111
- maxBudgetUsd: true,
2112
2134
  allowTools: true,
2113
2135
  allowOperations: true,
2114
2136
  allowRules: true
@@ -2130,8 +2152,7 @@ var WIRE_SCHEDULE_CREATE_FIELDS = wireFields()({
2130
2152
  name: true,
2131
2153
  prompt: true,
2132
2154
  permission: true,
2133
- trigger: true,
2134
- maxBudgetUsd: true
2155
+ trigger: true
2135
2156
  });
2136
2157
  var WIRE_SCHEDULE_SAVE_FIELDS = wireFields()({
2137
2158
  ok: true,
@@ -2319,6 +2340,7 @@ function apiKeyEnvVar(type) {
2319
2340
  var API_KEY_ENV_VARS = Array.from(
2320
2341
  new Set(PROVIDER_INFOS.map((p) => p.apiKeyEnv).filter((v) => v !== null))
2321
2342
  );
2343
+ var SCHEDULE_CONFIRM_PLACEHOLDER = "name";
2322
2344
  var SEARCH_PROVIDER_TYPES = ["native", "tavily", "brave", "searxng", "keyless"];
2323
2345
  function isSearchProviderType(value) {
2324
2346
  return SEARCH_PROVIDER_TYPES.includes(value);
@@ -2390,4 +2412,4 @@ var COMPLIANCE_ACTIONS = ["block", "mask", "warn", "off"];
2390
2412
  var SECRET_SERVICE = "epoch-agent";
2391
2413
  var MCP_DATA_KEY_NAME = "mcp-auth-data-key";
2392
2414
 
2393
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_BACKGROUND_ON_PARAM, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, APPEARANCE_FIRST_SCREEN_FIELDS, APPEARANCE_FIRST_SCREEN_FIELD_ORDER, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, APPEARANCE_ROOT_ATTRIBUTES, APPEARANCE_SIDEBAR_WIDTH, APPEARANCE_THEMES, APPEARANCE_THEME_NAME_MAX, APPEARANCE_TRANSLUCENT, APPEARANCE_UI_FONTS, APPROVAL_OUTCOMES, BRAND_WHEN_SIDEBAR_COLLAPSED, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, DEFAULT_AGENT_ROLE, DEFAULT_LANG, DiagnosticSink, ENTRY_REF_PREFIX, ENTRY_SECRET_PREFIX, FOLLOW_SYSTEM, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, KEY_ACTIONS, LANGS, LINK_CLICKED_MESSAGE_TYPE, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_LINK_URL, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, MODEL_ENTRY_PROTOCOLS, NOOP_TELEMETRY, OPENABLE_LINK_SCHEMES, OPEN_SETTINGS_MESSAGE_TYPE, OPERATION_TYPES, OVERSIZE_RATIO, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_CATEGORY_DISPLAY_SEP, PLUGIN_MENU_MESSAGE_TYPE, PLUGIN_PREVIEW_STREAM_MIME, PLUGIN_UPLOAD_MULTI_SEP, PROVIDER_INFOS, PROVIDER_TYPES, REASONING_EFFORTS, REASONING_OFF, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, SCHEDULE_DRAFT_SAVED_MARK, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MAX_MINUTES, SCHEDULE_INTERVAL_MIN_MINUTES, SCHEDULE_MAX_TIMES_PER_DAY, SCHEDULE_RUN_STATUSES, SEARCH_API_KEY_ENV, SEARCH_PROVIDER_TYPES, SECRET_SERVICE, SEQUENCE_CONTEXTS, SESSION_MENTION_PREFIX, SESSION_REFERENCE_ERROR_CODES, SETTINGS_PANE_IDS, SHELL_KINDS, SIDEBAR_MENU_MESSAGE_TYPE, SIMULTANEOUS_CONTEXTS, SYSTEM_NOTE_PREFIX, ToolExposure, UNLIMITED_TURNS, USER_MENU_MESSAGE_TYPE, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_FIELDS, WIRE_APPEARANCE_RESPONSE_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_REQUEST_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_RESPONSE_FIELDS, WIRE_APPROVAL_LIST_FIELDS, WIRE_APPROVAL_ROW_FIELDS, WIRE_ARTIFACTS_FIELDS, WIRE_ATTACHMENT_FOLDER_FIELDS, WIRE_ATTACHMENT_UPLOAD_FIELDS, WIRE_AUDIT_LOG_FIELDS, WIRE_AUDIT_ROW_FIELDS, WIRE_AUTH_COOKIE, WIRE_AUTH_COOKIE_ATTRS, WIRE_AUTH_TOKEN_PARAM, WIRE_BACKGROUND_TASK_FIELDS, WIRE_BLOCKED_GOALS_FIELDS, WIRE_BLOCKED_GOAL_FIELDS, WIRE_BLOCKED_LEVEL_FIELDS, WIRE_BUILTIN_CONNECTOR_FIELDS, WIRE_CACHED_APPROVAL_FIELDS, WIRE_CAPABILITIES_FIELDS, WIRE_CAPABILITY_PROJECT_FIELDS, WIRE_CHECKPOINT_LIST_FIELDS, WIRE_CHECKPOINT_SUMMARY_FIELDS, WIRE_COMMANDS_FIELDS, WIRE_COMMAND_EXPANSION_FIELDS, WIRE_COMPACT_FIELDS, WIRE_COMPRESSION_LINE_FIELDS, WIRE_CONFIG_FIELDS, WIRE_CONTEXT_FIELDS, WIRE_CREATE_SESSION_FIELDS, WIRE_CREATE_WORKSPACE_FIELDS, WIRE_CREATE_WORKSPACE_RESPONSE_FIELDS, WIRE_CUSTOM_COMMAND_FIELDS, WIRE_DELETE_SESSION_FIELDS, WIRE_DIFF_FILE_FIELDS, WIRE_DIFF_FILE_RESPONSE_FIELDS, WIRE_ERROR_FIELDS, WIRE_FILE_CANDIDATES_FIELDS, WIRE_FILE_CANDIDATE_FIELDS, WIRE_FILE_CHANGE_FIELDS, WIRE_FILE_OPEN_RESPONSE_FIELDS, WIRE_FILE_REFERENCE_FIELDS, WIRE_FILE_STAT_MAX, WIRE_FILE_STAT_OK_FIELDS, WIRE_FILE_STAT_REFUSED_FIELDS, WIRE_FILE_STAT_RESPONSE_FIELDS, WIRE_FILE_TEXT_RESPONSE_FIELDS, WIRE_FORGET_WORKSPACE_FIELDS, WIRE_FORGET_WORKSPACE_RESPONSE_FIELDS, WIRE_GOAL_ACTIONS, WIRE_GOAL_BLOCK_FIELDS, WIRE_GOAL_CLEAR_FIELDS, WIRE_GOAL_CREATE_FIELDS, WIRE_GOAL_FIELDS, WIRE_GOAL_LIMITS_FIELDS, WIRE_GOAL_PHASES, WIRE_GOAL_REFUSALS, WIRE_GOAL_RESPONSE_FIELDS, WIRE_GOAL_WRITE_FIELDS, WIRE_HEALTH_FIELDS, WIRE_IMAGE_REFERENCE_FIELDS, WIRE_KNOWN_WORKSPACE_FIELDS, WIRE_LANG_PARAM, WIRE_LAST_SESSION_FIELDS, WIRE_LAST_SESSION_RESPONSE_FIELDS, WIRE_MANAGED_LOCK_FIELDS, WIRE_MCP_ADD_FIELDS, WIRE_MCP_ADD_RESPONSE_FIELDS, WIRE_MCP_APPLY_ENTRY_FIELDS, WIRE_MCP_APPLY_RESPONSE_FIELDS, WIRE_MCP_CONFIG_APPLY_FIELDS, WIRE_MCP_CONFIG_FIELDS, WIRE_MCP_CONFIG_ISSUE_FIELDS, WIRE_MCP_CONFIG_SAVE_FIELDS, WIRE_MCP_CONFIG_SAVE_RESPONSE_FIELDS, WIRE_MCP_CONNECTOR_FIELDS, WIRE_MCP_RECONNECT_FIELDS, WIRE_MESSAGE_LIST_FIELDS, WIRE_MODEL_ENTRIES_FIELDS, WIRE_MODEL_ENTRY_MODELS_FIELDS, WIRE_MODEL_ENTRY_SAVE_FIELDS, WIRE_MODEL_ENTRY_TEST_FIELDS, WIRE_MODEL_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_PATCH_SESSION_FIELDS, WIRE_PATCH_SESSION_RESPONSE_FIELDS, WIRE_PERMISSION_RULE_FIELDS, WIRE_PERMISSION_SET_REQUEST_FIELDS, WIRE_PERMISSION_SET_RESPONSE_FIELDS, WIRE_PERMISSION_SHADOW_FIELDS, WIRE_PERMISSION_STATE_FIELDS, WIRE_PERMISSION_STATUS_FIELDS, WIRE_PLAN_ACTIONS, WIRE_PLAN_FIELDS, WIRE_PLAN_MODE_REQUEST_FIELDS, WIRE_PLAN_MODE_RESPONSE_FIELDS, WIRE_PLAN_MODE_STATE_FIELDS, WIRE_PLUGINS_FIELDS, WIRE_PLUGIN_ACTION_FIELDS, WIRE_PLUGIN_ARCHIVE_SUFFIXES, WIRE_PLUGIN_INSTALL_FIELDS, WIRE_PLUGIN_LOCAL_FIELDS, WIRE_PLUGIN_LOCAL_INSTALL_FIELDS, WIRE_PLUGIN_MARKETPLACE_FIELDS, WIRE_PLUGIN_MARKETPLACE_RESPONSE_FIELDS, WIRE_PLUGIN_NAME_FIELDS, WIRE_PLUGIN_PREVIEW_FIELDS, WIRE_PLUGIN_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_REFRESH_RESPONSE_FIELDS, WIRE_PLUGIN_STAGE_FIELDS, WIRE_PLUGIN_STAGE_RESPONSE_FIELDS, WIRE_PLUGIN_UPDATE_FIELDS, WIRE_PLUGIN_UPLOAD_CONFIRM_FIELDS, WIRE_PLUGIN_UPLOAD_FIELDS, WIRE_PLUGIN_UPLOAD_FORM_FIELDS, WIRE_PLUGIN_UPLOAD_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_UPLOAD_RESPONSE_FIELDS, WIRE_PLUGIN_VIEW_FIELDS, WIRE_PLUGIN_VIEW_RESPONSE_FIELDS, WIRE_POLICY_DIR_FIELDS, WIRE_POLICY_STATUS_FIELDS, WIRE_PROJECT_INVENTORY_FIELDS, WIRE_PROVIDER_GROUPS, WIRE_QUESTION_LIST_FIELDS, WIRE_QUESTION_ROW_FIELDS, WIRE_RESPOND_APPROVAL_FIELDS, WIRE_RESPOND_APPROVAL_RESPONSE_FIELDS, WIRE_RESPOND_QUESTION_FIELDS, WIRE_RESPOND_QUESTION_RESPONSE_FIELDS, WIRE_REVIVE_FIELDS, WIRE_REWIND_FILE_PLAN_FIELDS, WIRE_REWIND_OUTCOME_FIELDS, WIRE_REWIND_PREVIEW_FIELDS, WIRE_REWIND_REQUEST_FIELDS, WIRE_REWIND_RESPONSE_FIELDS, WIRE_REWIND_SCOPES, WIRE_ROLES_FIELDS, WIRE_ROLE_ADD_FIELDS, WIRE_ROLE_ADD_RESPONSE_FIELDS, WIRE_ROLE_REMOVE_FIELDS, WIRE_RUNNING_SCHEDULE_FIELDS, WIRE_SANDBOX_STATUS_FIELDS, WIRE_SCHEDULE_CAPABILITY_FIELDS, WIRE_SCHEDULE_CREATE_FIELDS, WIRE_SCHEDULE_DEFAULTS_FIELDS, WIRE_SCHEDULE_DELETE_FIELDS, WIRE_SCHEDULE_FIELDS, WIRE_SCHEDULE_FIX_FIELDS, WIRE_SCHEDULE_FIX_REQUEST_FIELDS, WIRE_SCHEDULE_ISSUE_CODES, WIRE_SCHEDULE_LIST_FIELDS, WIRE_SCHEDULE_PENDING_FIELDS, WIRE_SCHEDULE_RECORDING_FIELDS, WIRE_SCHEDULE_ROW_FIELDS, WIRE_SCHEDULE_RUNNING_FIELDS, WIRE_SCHEDULE_RUNS_FIELDS, WIRE_SCHEDULE_RUN_FIELDS, WIRE_SCHEDULE_SAVE_FIELDS, WIRE_SECURITY_FIELDS, WIRE_SECURITY_WORKSPACE_FIELDS, WIRE_SEND_MESSAGE_FIELDS, WIRE_SEND_MESSAGE_RESPONSE_FIELDS, WIRE_SESSION_CANDIDATES_FIELDS, WIRE_SESSION_CANDIDATE_FIELDS, WIRE_SESSION_FINISH_FIELDS, WIRE_SESSION_LIST_FIELDS, WIRE_SESSION_REFERENCE_FIELDS, WIRE_SESSION_RESPONSE_FIELDS, WIRE_SESSION_SUMMARY_FIELDS, WIRE_SESSION_WORKSPACE_FIELDS, WIRE_SESSION_WORKSPACE_RESPONSE_FIELDS, WIRE_SETTINGS_FIELDS, WIRE_SETTINGS_WRITE_FIELDS, WIRE_SETTINGS_WRITE_REQUEST_FIELDS, WIRE_SETTING_PENDING_FIELDS, WIRE_SETTING_ROW_FIELDS, WIRE_SETTING_STEP_FIELDS, WIRE_SETTING_WRITE_FIELDS, WIRE_SETTING_WRITE_LAYERS, WIRE_SKILL_BODY_FIELDS, WIRE_SKILL_DROP_SUFFIXES, WIRE_SKILL_FIELDS, WIRE_SKILL_IMPORT_FIELDS, WIRE_SKILL_IMPORT_PREVIEW_FIELDS, WIRE_SKILL_REMOVE_FIELDS, WIRE_SKILL_STAGE_FIELDS, WIRE_TASKS_FIELDS, WIRE_TOOLS_FIELDS, WIRE_TOOL_GATE_FIELDS, WIRE_TOOL_ROW_FIELDS, WIRE_TRUST_REQUEST_FIELDS, WIRE_TRUST_REQUEST_RESPONSE_FIELDS, WIRE_WITHDRAW_MESSAGE_FIELDS, WIRE_WORKSPACE_DIFF_FIELDS, WIRE_WORKSPACE_DIRS_FIELDS, WIRE_WORKSPACE_DIR_ENTRY_FIELDS, WIRE_WORKSPACE_REF_FIELDS, accentScale, apiKeyEnvVar, appearanceInlineVars, appearanceRootAttributes, appearanceVisualCss, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, encodeAppearanceFirstScreenValue, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatAppearanceTranslucent, formatMoney, getProviderInfo, hasFailure, hexToHsv, hsvToHex, imagePartOmittedSummary, isAppearanceAccent, isAppearanceAccentValue, isAppearanceBackground, isAppearanceBackgroundFit, isAppearanceBackgroundKind, isAppearanceCodeFont, isAppearanceCodeFontSize, isAppearanceContrast, isAppearanceDiffTreeWidth, isAppearanceFontSize, isAppearanceLang, isAppearanceModePatch, isAppearanceMotion, isAppearanceSidebarWidth, isAppearanceTheme, isAppearanceThemeName, isAppearanceTranslucent, isAppearanceUiFont, isApprovalOutcome, isContextNearlyFull, isCurrency, isEntrySecretName, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isHexColor, isKeyAction, isLang, isMentionableFilePath, isModelEntryId, isOpenableLink, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isReasoningEffort, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, joinUploadMulti, makeTranslate, mcpConnectorState, normalizeAppearanceTranslucent, normalizeApproval, packSessionSurface, parseAppearanceTranslucentText, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
2415
+ export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_BACKGROUND_ON_PARAM, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, APPEARANCE_FIRST_SCREEN_FIELDS, APPEARANCE_FIRST_SCREEN_FIELD_ORDER, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, APPEARANCE_ROOT_ATTRIBUTES, APPEARANCE_SIDEBAR_WIDTH, APPEARANCE_THEMES, APPEARANCE_THEME_NAME_MAX, APPEARANCE_TRANSLUCENT, APPEARANCE_UI_FONTS, APPROVAL_OUTCOMES, APPROVAL_POLICIES, BRAND_WHEN_SIDEBAR_COLLAPSED, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, DEFAULT_AGENT_ROLE, DEFAULT_LANG, DEFAULT_PERMISSION_LEVEL, DiagnosticSink, ENTRY_REF_PREFIX, ENTRY_SECRET_PREFIX, FOLLOW_SYSTEM, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, KEY_ACTIONS, LANGS, LEGACY_LEVEL_ALIASES, LINK_CLICKED_MESSAGE_TYPE, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_LINK_URL, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, MODEL_ENTRY_PROTOCOLS, NOOP_TELEMETRY, OFFLOADED_IMAGE_NOTE, OPENABLE_LINK_SCHEMES, OPEN_SETTINGS_MESSAGE_TYPE, OPERATION_TYPES, OVERSIZE_RATIO, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_CATEGORY_DISPLAY_SEP, PLUGIN_MENU_MESSAGE_TYPE, PLUGIN_PREVIEW_STREAM_MIME, PLUGIN_UPLOAD_MULTI_SEP, PROVIDER_INFOS, PROVIDER_TYPES, REASONING_EFFORTS, REASONING_OFF, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, SCHEDULE_CONFIRM_PLACEHOLDER, SCHEDULE_DEFAULT_PERMISSION, SCHEDULE_DRAFT_SAVED_MARK, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MAX_MINUTES, SCHEDULE_INTERVAL_MIN_MINUTES, SCHEDULE_MAX_TIMES_PER_DAY, SCHEDULE_RUN_STATUSES, SEARCH_API_KEY_ENV, SEARCH_PROVIDER_TYPES, SECRET_SERVICE, SEQUENCE_CONTEXTS, SESSION_MENTION_PREFIX, SESSION_REFERENCE_ERROR_CODES, SETTINGS_PANE_IDS, SHELL_KINDS, SIDEBAR_MENU_MESSAGE_TYPE, SIMULTANEOUS_CONTEXTS, SYSTEM_NOTE_PREFIX, ToolExposure, UNLIMITED_TURNS, USER_MENU_MESSAGE_TYPE, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_FIELDS, WIRE_APPEARANCE_RESPONSE_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_REQUEST_FIELDS, WIRE_APPROVAL_CACHE_REVOKE_RESPONSE_FIELDS, WIRE_APPROVAL_LIST_FIELDS, WIRE_APPROVAL_ROW_FIELDS, WIRE_ARTIFACTS_FIELDS, WIRE_ATTACHMENT_FOLDER_FIELDS, WIRE_ATTACHMENT_UPLOAD_FIELDS, WIRE_AUDIT_LOG_FIELDS, WIRE_AUDIT_ROW_FIELDS, WIRE_AUTH_COOKIE, WIRE_AUTH_COOKIE_ATTRS, WIRE_AUTH_TOKEN_PARAM, WIRE_BACKGROUND_TASK_FIELDS, WIRE_BLOCKED_GOALS_FIELDS, WIRE_BLOCKED_GOAL_FIELDS, WIRE_BLOCKED_LEVEL_FIELDS, WIRE_BUILTIN_CONNECTOR_FIELDS, WIRE_CACHED_APPROVAL_FIELDS, WIRE_CAPABILITIES_FIELDS, WIRE_CAPABILITY_PROJECT_FIELDS, WIRE_CHECKPOINT_LIST_FIELDS, WIRE_CHECKPOINT_SUMMARY_FIELDS, WIRE_COMMANDS_FIELDS, WIRE_COMMAND_EXPANSION_FIELDS, WIRE_COMPACT_FIELDS, WIRE_COMPRESSION_LINE_FIELDS, WIRE_CONFIG_FIELDS, WIRE_CONTEXT_FIELDS, WIRE_CREATE_SESSION_FIELDS, WIRE_CREATE_WORKSPACE_FIELDS, WIRE_CREATE_WORKSPACE_RESPONSE_FIELDS, WIRE_CUSTOM_COMMAND_FIELDS, WIRE_DELETE_SESSION_FIELDS, WIRE_DIFF_FILE_FIELDS, WIRE_DIFF_FILE_RESPONSE_FIELDS, WIRE_ERROR_FIELDS, WIRE_FILE_CANDIDATES_FIELDS, WIRE_FILE_CANDIDATE_FIELDS, WIRE_FILE_CHANGE_FIELDS, WIRE_FILE_OPEN_RESPONSE_FIELDS, WIRE_FILE_REFERENCE_FIELDS, WIRE_FILE_STAT_MAX, WIRE_FILE_STAT_OK_FIELDS, WIRE_FILE_STAT_REFUSED_FIELDS, WIRE_FILE_STAT_RESPONSE_FIELDS, WIRE_FILE_TEXT_RESPONSE_FIELDS, WIRE_FORGET_WORKSPACE_FIELDS, WIRE_FORGET_WORKSPACE_RESPONSE_FIELDS, WIRE_GOAL_ACTIONS, WIRE_GOAL_BLOCK_FIELDS, WIRE_GOAL_CLEAR_FIELDS, WIRE_GOAL_CREATE_FIELDS, WIRE_GOAL_FIELDS, WIRE_GOAL_LIMITS_FIELDS, WIRE_GOAL_PHASES, WIRE_GOAL_REFUSALS, WIRE_GOAL_RESPONSE_FIELDS, WIRE_GOAL_WRITE_FIELDS, WIRE_HEALTH_FIELDS, WIRE_IMAGE_REFERENCE_FIELDS, WIRE_KNOWN_WORKSPACE_FIELDS, WIRE_LANG_PARAM, WIRE_LAST_SESSION_FIELDS, WIRE_LAST_SESSION_RESPONSE_FIELDS, WIRE_MANAGED_LOCK_FIELDS, WIRE_MCP_ADD_FIELDS, WIRE_MCP_ADD_RESPONSE_FIELDS, WIRE_MCP_APPLY_ENTRY_FIELDS, WIRE_MCP_APPLY_RESPONSE_FIELDS, WIRE_MCP_CONFIG_APPLY_FIELDS, WIRE_MCP_CONFIG_FIELDS, WIRE_MCP_CONFIG_ISSUE_FIELDS, WIRE_MCP_CONFIG_SAVE_FIELDS, WIRE_MCP_CONFIG_SAVE_RESPONSE_FIELDS, WIRE_MCP_CONNECTOR_FIELDS, WIRE_MCP_RECONNECT_FIELDS, WIRE_MESSAGE_LIST_FIELDS, WIRE_MODEL_ENTRIES_FIELDS, WIRE_MODEL_ENTRY_MODELS_FIELDS, WIRE_MODEL_ENTRY_SAVE_FIELDS, WIRE_MODEL_ENTRY_TEST_FIELDS, WIRE_MODEL_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_PATCH_SESSION_FIELDS, WIRE_PATCH_SESSION_RESPONSE_FIELDS, WIRE_PERMISSION_RULE_FIELDS, WIRE_PERMISSION_SET_REQUEST_FIELDS, WIRE_PERMISSION_SET_RESPONSE_FIELDS, WIRE_PERMISSION_SHADOW_FIELDS, WIRE_PERMISSION_STATE_FIELDS, WIRE_PERMISSION_STATUS_FIELDS, WIRE_PLAN_ACTIONS, WIRE_PLAN_FIELDS, WIRE_PLAN_MODE_REQUEST_FIELDS, WIRE_PLAN_MODE_RESPONSE_FIELDS, WIRE_PLAN_MODE_STATE_FIELDS, WIRE_PLUGINS_FIELDS, WIRE_PLUGIN_ACTION_FIELDS, WIRE_PLUGIN_ARCHIVE_SUFFIXES, WIRE_PLUGIN_INSTALL_FIELDS, WIRE_PLUGIN_LOCAL_FIELDS, WIRE_PLUGIN_LOCAL_INSTALL_FIELDS, WIRE_PLUGIN_MARKETPLACE_FIELDS, WIRE_PLUGIN_MARKETPLACE_RESPONSE_FIELDS, WIRE_PLUGIN_NAME_FIELDS, WIRE_PLUGIN_PREVIEW_FIELDS, WIRE_PLUGIN_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_REFRESH_RESPONSE_FIELDS, WIRE_PLUGIN_STAGE_FIELDS, WIRE_PLUGIN_STAGE_RESPONSE_FIELDS, WIRE_PLUGIN_TOGGLE_FIELDS, WIRE_PLUGIN_UPDATE_FIELDS, WIRE_PLUGIN_UPLOAD_CONFIRM_FIELDS, WIRE_PLUGIN_UPLOAD_FIELDS, WIRE_PLUGIN_UPLOAD_FORM_FIELDS, WIRE_PLUGIN_UPLOAD_PREVIEW_RESPONSE_FIELDS, WIRE_PLUGIN_UPLOAD_RESPONSE_FIELDS, WIRE_PLUGIN_VIEW_FIELDS, WIRE_PLUGIN_VIEW_RESPONSE_FIELDS, WIRE_POLICY_DIR_FIELDS, WIRE_POLICY_STATUS_FIELDS, WIRE_PROJECT_INVENTORY_FIELDS, WIRE_PROVIDER_GROUPS, WIRE_QUESTION_LIST_FIELDS, WIRE_QUESTION_ROW_FIELDS, WIRE_RESPOND_APPROVAL_FIELDS, WIRE_RESPOND_APPROVAL_RESPONSE_FIELDS, WIRE_RESPOND_QUESTION_FIELDS, WIRE_RESPOND_QUESTION_RESPONSE_FIELDS, WIRE_REVIVE_FIELDS, WIRE_REWIND_FILE_PLAN_FIELDS, WIRE_REWIND_OUTCOME_FIELDS, WIRE_REWIND_PREVIEW_FIELDS, WIRE_REWIND_REQUEST_FIELDS, WIRE_REWIND_RESPONSE_FIELDS, WIRE_REWIND_SCOPES, WIRE_ROLES_FIELDS, WIRE_ROLE_ADD_FIELDS, WIRE_ROLE_ADD_RESPONSE_FIELDS, WIRE_ROLE_REMOVE_FIELDS, WIRE_RUNNING_SCHEDULE_FIELDS, WIRE_SANDBOX_STATUS_FIELDS, WIRE_SCHEDULE_CAPABILITY_FIELDS, WIRE_SCHEDULE_CREATE_FIELDS, WIRE_SCHEDULE_DEFAULTS_FIELDS, WIRE_SCHEDULE_DELETE_FIELDS, WIRE_SCHEDULE_FIELDS, WIRE_SCHEDULE_FIX_FIELDS, WIRE_SCHEDULE_FIX_REQUEST_FIELDS, WIRE_SCHEDULE_ISSUE_CODES, WIRE_SCHEDULE_LIST_FIELDS, WIRE_SCHEDULE_PENDING_FIELDS, WIRE_SCHEDULE_RECORDING_FIELDS, WIRE_SCHEDULE_ROW_FIELDS, WIRE_SCHEDULE_RUNNING_FIELDS, WIRE_SCHEDULE_RUNS_FIELDS, WIRE_SCHEDULE_RUN_FIELDS, WIRE_SCHEDULE_SAVE_FIELDS, WIRE_SECURITY_FIELDS, WIRE_SECURITY_WORKSPACE_FIELDS, WIRE_SEND_MESSAGE_FIELDS, WIRE_SEND_MESSAGE_RESPONSE_FIELDS, WIRE_SESSION_BRANCH_RESPONSE_FIELDS, WIRE_SESSION_CANDIDATES_FIELDS, WIRE_SESSION_CANDIDATE_FIELDS, WIRE_SESSION_FINISH_FIELDS, WIRE_SESSION_LIST_FIELDS, WIRE_SESSION_REFERENCE_FIELDS, WIRE_SESSION_RESPONSE_FIELDS, WIRE_SESSION_SUMMARY_FIELDS, WIRE_SESSION_WORKSPACE_FIELDS, WIRE_SESSION_WORKSPACE_RESPONSE_FIELDS, WIRE_SETTINGS_FIELDS, WIRE_SETTINGS_WRITE_FIELDS, WIRE_SETTINGS_WRITE_REQUEST_FIELDS, WIRE_SETTING_PENDING_FIELDS, WIRE_SETTING_ROW_FIELDS, WIRE_SETTING_STEP_FIELDS, WIRE_SETTING_WRITE_FIELDS, WIRE_SETTING_WRITE_LAYERS, WIRE_SKILL_BODY_FIELDS, WIRE_SKILL_DROP_SUFFIXES, WIRE_SKILL_FIELDS, WIRE_SKILL_IMPORT_FIELDS, WIRE_SKILL_IMPORT_PREVIEW_FIELDS, WIRE_SKILL_REMOVE_FIELDS, WIRE_SKILL_STAGE_FIELDS, WIRE_TASKS_FIELDS, WIRE_TOOLS_FIELDS, WIRE_TOOL_GATE_FIELDS, WIRE_TOOL_ROW_FIELDS, WIRE_TRUST_REQUEST_FIELDS, WIRE_TRUST_REQUEST_RESPONSE_FIELDS, WIRE_WITHDRAW_MESSAGE_FIELDS, WIRE_WORKSPACE_DIFF_FIELDS, WIRE_WORKSPACE_DIRS_FIELDS, WIRE_WORKSPACE_DIR_ENTRY_FIELDS, WIRE_WORKSPACE_REF_FIELDS, accentScale, apiKeyEnvVar, appearanceInlineVars, appearanceRootAttributes, appearanceVisualCss, approvalPolicyForLevel, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, encodeAppearanceFirstScreenValue, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, fillPlaceholders, flattenCatalog, formatAppearanceTranslucent, formatMoney, getProviderInfo, hasFailure, hexToHsv, hsvToHex, imagePartOmittedSummary, isAppearanceAccent, isAppearanceAccentValue, isAppearanceBackground, isAppearanceBackgroundFit, isAppearanceBackgroundKind, isAppearanceCodeFont, isAppearanceCodeFontSize, isAppearanceContrast, isAppearanceDiffTreeWidth, isAppearanceFontSize, isAppearanceLang, isAppearanceModePatch, isAppearanceMotion, isAppearanceSidebarWidth, isAppearanceTheme, isAppearanceThemeName, isAppearanceTranslucent, isAppearanceUiFont, isApprovalOutcome, isContextNearlyFull, isCurrency, isEntrySecretName, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isHexColor, isKeyAction, isLang, isMentionableFilePath, isModelEntryId, isOpenableLink, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isReasoningEffort, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, joinUploadMulti, makeTranslate, mcpConnectorState, normalizeAppearanceTranslucent, normalizeApproval, offloadedImagePart, packSessionSurface, parseAppearanceTranslucentText, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, resolvePermissionLevel, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epoch-agent/protocol",
3
- "version": "2.7.0",
3
+ "version": "3.0.0",
4
4
  "private": false,
5
5
  "description": "epoch-agent 契约层:工具 / 事件 / 权限 / 插件的类型定义,零运行时依赖",
6
6
  "repository": {