@epoch-agent/protocol 2.2.0 → 2.4.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
@@ -1023,7 +1023,7 @@ declare class DiagnosticSink {
1023
1023
  * | `web/src/composer/attach.tsx` 文件头 | 「专家没有底座,所以加号直接开选图」 | **仍然不画**。它自己写的「42 PR-1 把专家接上时它自然变回菜单」那句话**不成立** —— 接上的是会话级,那一项画的是逐条。就地改成了这句 |
1024
1024
  * | `web/src/capability/experts.tsx` 的「召唤」 | 只往输入框预填一句「让 x 来做:」 | **仍然是预填**。第二条路真有了,但「当前这段对话怎么办」没答;⚠️ 顺带钉住 `canSummon` 那个 prop:两条路并存时它的含义会分叉 |
1025
1025
  * | `design/web-ui/README.md`(决定 20 ② 的 ⚠️) | 「差的是装配层在会话级也走一次 `roleScopedProvider()`,加上协议里带一个字段」 | **划掉了**,两样都做了({@link AgentRoleScope} 就是那「一个字段」),并补上「作用域对不上」那一段 |
1026
- * | `.agents/plans/README.md` 底座缺口第一条 | 「顶层会话的角色没接线」 | **划掉了**,同时记下它**写下那天就是错的**:`--agent` 早就跑主循环,那条记录只读了注释没数调用点 |
1026
+ * | `.epoch/plans/README.md` 底座缺口第一条 | 「顶层会话的角色没接线」 | **划掉了**,同时记下它**写下那天就是错的**:`--agent` 早就跑主循环,那条记录只读了注释没数调用点 |
1027
1027
  *
1028
1028
  * ⚠️ 前两处**不是顺手就能改**的,这一点收的人复核后同意:加号变菜单要一张
1029
1029
  * 真菜单(决定 20 ① 骂过「一张只有一项的下拉是纯多出来的一次点击」),
@@ -4358,6 +4358,39 @@ interface EpochSessionPart {
4358
4358
  type EpochContentPart = EpochTextPart | EpochImagePart | EpochFilePart | EpochSessionPart;
4359
4359
  /** 用户消息内容 —— 纯文本或多模态部件数组 */
4360
4360
  type EpochUserContent = string | EpochContentPart[];
4361
+ /**
4362
+ * 「这条用户消息是按哪条自定义斜杠命令发出来的」(2026-10-21)。
4363
+ *
4364
+ * ## 它治的是什么
4365
+ *
4366
+ * 一条命令发出去时,真正喂给模型的是**展开之后的正文**(`ExpandedCommand.prompt`)——
4367
+ * 那一整段可以是几十行工作指令。而它在会话里长得和用户亲手打的一句话
4368
+ * **一模一样**:刷新之后、或者另一台设备上打开这段会话,用户看到的就是一大段
4369
+ * 自己从没打过的话(2026-10-21 用户报的原话:「我并没有发送下面这个消息」)。
4370
+ *
4371
+ * 这一格把「这条消息的来路」单独带着:界面上就画成一行 `/命令名 参数`,
4372
+ * 而模型那边看到的仍然是展开后的正文 —— **两件事不能合并**,合了就等于让模型
4373
+ * 看不见命令的正文,命令就不干活了。
4374
+ *
4375
+ * ## 为什么不把「显示用的文本」直接写进 `content`
4376
+ *
4377
+ * 因为 `content` 只有一个,而且它的第一个读者是模型。一条 `assistant` 行的
4378
+ * `content` 是模型说的话,一条 `user` 行的 `content` 是模型收到的话;往里塞一句
4379
+ * 「给人看的话」就是往模型嘴里塞它没说过的话。分开存、分开读,两边各自成立。
4380
+ */
4381
+ interface EpochUserCommand {
4382
+ /** 命令名,不带斜杠(`blizzard-theme:apply`) */
4383
+ name: string;
4384
+ /** frontmatter 的 `displayName`,没写就缺席 —— 回落到 `name` 在界面那一侧做 */
4385
+ displayName?: string;
4386
+ /**
4387
+ * 用户给的那段参数(可能为空、可能多行),原样保留。
4388
+ *
4389
+ * **空参数时这个键缺席**(不是空串):界面上「`/foo`」和「`/foo `」是同一件事,
4390
+ * 而空串会在那一行尾巴上多留一个空格。
4391
+ */
4392
+ args?: string;
4393
+ }
4361
4394
  /**
4362
4395
  * 附件在**给模型的**纯文本投影里长什么样。**不吐文件内容** —— 内容走 `parts` 那一路。
4363
4396
  *
@@ -5108,7 +5141,7 @@ type AgentEvent =
5108
5141
  *
5109
5142
  * ⚠️ 这个类型 2026-08-13 之前**声明在这里、消费在 view、渲染在两个宿主,
5110
5143
  * 中间一个发射方都没有** —— 三边契约测试全绿,因为站在引擎位置上的是
5111
- * fixture 喂出来的假 agent。判据见 `.agents/plans/43-web-ui-shell-plan.md` §12.5。
5144
+ * fixture 喂出来的假 agent。判据见 `.epoch/plans/43-web-ui-shell-plan.md` §12.5。
5112
5145
  * **往这个 union 里加新类型时,先想清楚谁发。**
5113
5146
  */
5114
5147
  | {
@@ -6182,33 +6215,46 @@ declare function unfixedRules(allowRules: readonly string[], approvals: readonly
6182
6215
  declare function collectPendingApprovals(defs: readonly ScheduleDefinition[], runs: readonly ScheduleRun[]): SchedulePendingItem[];
6183
6216
 
6184
6217
  /**
6185
- * 模型在对话里交上来的一份定时任务**草稿**。
6218
+ * 模型在对话里交上来的一份定时任务**提案**,以及它落地之后的那一行回执。
6219
+ *
6220
+ * ## 2026-10-20:它是**第三条写入路**了
6221
+ *
6222
+ * 在这之前这一份只是草稿:模型交上来、人点「审阅并保存」、在表单上自己填一个
6223
+ * 预算 —— 那一下才是真的建立。今天不是了:用户拍的(原话「可以做成完全自动」),
6224
+ * 模型交上来就落库、就注册进 OS。
6186
6225
  *
6187
- * `epoch schedule add` 和自动化面板那张表单是两条**人操作**的写入路。这一份是
6188
- * 第三条来路,而它**不是写入路** —— 草稿谁都落不了库,它只是一份摆到人眼前的
6189
- * 提案。真正落库的仍然是那两条:人点「审阅并保存」之后走的是同一个
6190
- * `POST /api/schedules`,人粘贴命令行走的是同一个 `epoch schedule add`。
6226
+ * 于是全仓有三条写入路,主语第一次不全是人:
6191
6227
  *
6192
- * ## ⚠️ 三条硬约束都摊在类型上,不靠注释(原来照内置模板 `schedule-templates.ts` 那三条办,那份 2026-10-12 删了)
6228
+ * | 谁发起 | 走哪条 |
6229
+ * | ------------- | --------------------------------------------------------- |
6230
+ * | 人 | 自动化面板那张表单 / `epoch schedule add` |
6231
+ * | 模型(这一份)| `schedule_draft` 工具直接调 `ScheduleControl.create` |
6193
6232
  *
6194
- * | 要守住的 | 落在类型的哪一格 |
6195
- * | ------------------------------ | -------------------------------------------------------------------- |
6196
- * | 模型不许把任务放到「跳过全部检查」 | {@link ScheduleDraftPermission} 的取值里**没有** `bypass` |
6197
- * | 填进表单后**必须让用户过一遍** | 整份形状里**没有** `maxBudgetUsd`,而它是必填 —— 表单因此保存不了 |
6198
- * | 草稿不是写入路 | 这里只有数据,没有 id 生成、没有 `enabled`、没有 `createdAt` |
6233
+ * ## ⚠️ 有一档仍然降级成草稿:`permissionLevel === 'plan'`
6199
6234
  *
6200
- * 第二条是三条里最要紧的:预算必填、没有默认值
6201
- * (方案 45 §3.5),于是一份草稿填进表单之后那个保存按钮**天然是灰的**,
6202
- * 用户不看完那一屏就出不去。写成「草稿里预填 0.50 + 一句『请检查』」的话,
6203
- * 「必须过一遍」就退化成一句没人读的话 —— 而这一格错了的后果很具体:
6204
- * 一觉醒来 40 美元。
6235
+ * plan 模式的定义就是「一个字节都不写」,所以工具在那底下**只交提案、不落库**
6236
+ * (判据在 core 的 `tools/builtin/schedule-draft.ts`)。卡片照旧画,只是底下那句
6237
+ * 从「已建立」换成「只读模式下没建立」—— 于是「调研阶段最容易看出该自动化什么」
6238
+ * 这条老理由一个字都没丢。
6239
+ *
6240
+ * ## 两个刻意的形状缺口
6241
+ *
6242
+ * - **没有 `id` / `createdAt` / `enabled`**:新建那条的 id 由库生成,提案里猜不出来;
6243
+ * `enabled` 在这条路上恒为「启用」(和表单上那个保存键同一档,`register: true`)。
6244
+ * 改已有那条时 id 是**入参**(模型得先 `action: 'list'` 看一眼),不是产出。
6245
+ * - **`maxBudgetUsd` 是可选而不是必填**:不给时 core 用 `SCHEDULE_FORM_BUDGET_USD`
6246
+ * (= 200,和新建表单预填的那一格是同一个常量)。用户定的口径是「按新建任务
6247
+ * 那里的来」—— 缺省值因此只有一个真源,**别在这份文件里再抄一个数**
6248
+ * (protocol 够不着 core,抄了就是第二份,而它漂走的表现是「不同入口预填的数
6249
+ * 不一样」,没有检查抓得到)。
6205
6250
  *
6206
6251
  * ## 为什么住在 protocol
6207
6252
  *
6208
6253
  * 这一份的**两端都要读它** ——
6209
6254
  * core 那侧要解析模型发来的入参(`tools/builtin/schedule-draft.ts`),
6210
- * `packages/web` 那侧要从那次工具调用的入参里把它读回来渲染成一张卡片
6211
- * (`thread/rows.ts`,照 `todo` 的先例)。web 只依赖 protocol + view,够不着 core。
6255
+ * `packages/web` 那侧要从那次工具调用的入参里把它读回来渲染成一张卡片,
6256
+ * 再从**输出**里认领那条 id 画撤销键(`thread/rows.ts`,照 `todo` 的先例)。
6257
+ * web 只依赖 protocol + view,够不着 core。
6212
6258
  *
6213
6259
  * ## ⚠️ 这里一个中文字都没有
6214
6260
  *
@@ -6229,16 +6275,47 @@ declare function collectPendingApprovals(defs: readonly ScheduleDefinition[], ru
6229
6275
  */
6230
6276
  declare const SCHEDULE_DRAFT_TOOL = "schedule_draft";
6231
6277
  /**
6232
- * 草稿能落在哪几档权限上 —— **`bypass` 不在里面**。
6278
+ * 「这一条真的建成了」那一行在工具输出里的**行首标记**。
6279
+ *
6280
+ * ## 为什么卡片要从输出里认领,而不是从入参里推
6233
6281
  *
6234
- * 不是「运行期会拒绝」,是那一档在类型上根本不存在。理由:`bypass` 要一次
6235
- * 二次确认(`bypass-not-confirmed`),而那次确认的**对象是人**;让模型提议
6236
- * 一个「等着人去勾确认框」的档位,等于把那道确认变成一道例行手续。
6282
+ * 卡片渲染的是那次调用的**入参**(模型发的原始 JSON),而入参里没有 id
6283
+ * —— id 是库生成的。可撤销键要的正是那个 id。两边的接缝只有工具输出这一格,
6284
+ * 所以约定一行机器可读的:`scheduleId=<id>`。
6237
6285
  *
6238
- * 用户自己想要那一档时照旧走表单 —— 那条路一个字都没改。
6286
+ * ## 为什么是 ASCII 而不是一句中文
6287
+ *
6288
+ * 这行同时被两拨人读:模型(照旧拿去写回复)和 web(正则抓 id)。中文行的话,
6289
+ * 抓取就变成「按某一门语言的措辞匹配」,而 `EPOCH_LANGUAGE=en` 下工具输出
6290
+ * 会不会跟着换语言,是**另一条链的事**(core 的工具措辞今天不进 catalog,
6291
+ * 见 `locales/zh.yaml` 的范围说明)。用 ASCII 把这件事提前掐掉,比将来
6292
+ * 发现了再补便宜。
6293
+ *
6294
+ * ⚠️ **格式改动要同时看三处**:这里、core 写那一行的地方、web 的 `savedIdOf()`。
6295
+ * 漂了的表现是撤销键消失 —— 卡片照旧画,只是少了那个键,一声不响。
6239
6296
  */
6240
- type ScheduleDraftPermission = Exclude<PermissionLevel, 'bypass'>;
6241
- /** 草稿里那份清单。三个字段各自**可选**:没提到的一格 = 「这一格我没意见」 */
6297
+ declare const SCHEDULE_DRAFT_SAVED_MARK = "scheduleId=";
6298
+ /**
6299
+ * 提案能落在哪几档权限上 —— **2026-10-20 起 `bypass` 也在里面**。
6300
+ *
6301
+ * 这条改动是产品决定,不是失手:用户明确要「按新建任务面板那里的来,跳过全部
6302
+ * 检查」,而那张表单新建时的默认档正是 `bypass`(`web/src/automation/form-state.ts`
6303
+ * 的 `blank()`)。
6304
+ *
6305
+ * ## ⚠️ 它撤掉了什么,以及为什么仍然安全
6306
+ *
6307
+ * 撤掉的是「让模型提议一个等着人去勾确认框的档位」这道别扭 —— 那次确认的
6308
+ * 对象本来就是人,模型提议它、人再勾一次,勾完还是「模型提议的东西原样通过」。
6309
+ * 今天这一步不存在了:工具替那条任务把 `bypassAcknowledged: true` 交上去。
6310
+ *
6311
+ * 留下的三道网(判据在 `core/src/schedule/validate.ts` 的 `bypassIssues`):
6312
+ *
6313
+ * 1. 工作目录不能宽到等于没绑(家目录本身 / `~/.epoch` / 文件系统根);
6314
+ * 2. 预算和超时必须为正 —— 也就是「尺子必须在」;
6315
+ * 3. 存下来之后任务列表上那个红标照旧在(一次性确认会被忘掉,标记不会)。
6316
+ */
6317
+ type ScheduleDraftPermission = PermissionLevel;
6318
+ /** 提案里那份清单。三个字段各自**可选**:没提到的一格 = 「这一格我没意见」 */
6242
6319
  interface ScheduleDraftAllowlist {
6243
6320
  allowTools?: readonly string[];
6244
6321
  allowOperations?: readonly OperationType[];
@@ -6253,11 +6330,21 @@ interface ScheduleDraftCreate extends ScheduleDraftAllowlist {
6253
6330
  /** 工作目录。不给就是引擎那份缺省(`~/.epoch/automation/<id>/`) */
6254
6331
  workDir?: string;
6255
6332
  permission: ScheduleDraftPermission;
6333
+ /**
6334
+ * 每次最多花多少钱。**不给 = `SCHEDULE_FORM_BUDGET_USD`(200)**,
6335
+ * 判据在这个文件头「两个刻意的形状缺口」那一段。
6336
+ *
6337
+ * 模型可以给一个更小的数(「这活很轻」),也可以给一个更大的(「要扫大仓」)
6338
+ * —— 今天没有硬上限,用户拍的是「不设天花板」。⚠️ 别在这一层夹紧:夹紧会让
6339
+ * 模型以为自己给了 500、实际存的是 200,而卡片上印的会是它给的那个数。
6340
+ */
6341
+ maxBudgetUsd?: number;
6256
6342
  /**
6257
6343
  * 为什么建议这一条,一句话。**给人看的**,会印在卡片上。
6258
6344
  *
6259
6345
  * 必填,而这是刻意的:一条凭空出现在对话里的定时任务,用户第一个问题
6260
- * 一定是「你为什么觉得我需要它」。答不上来的提案不该提。
6346
+ * 一定是「你为什么觉得我需要它」。答不上来的提案不该提 —— 这条理由在
6347
+ * 「自动落库」之后**只增不减**:卡片上不再是「要不要建」,而是「为什么建了」。
6261
6348
  */
6262
6349
  note: string;
6263
6350
  }
@@ -6265,15 +6352,19 @@ interface ScheduleDraftCreate extends ScheduleDraftAllowlist {
6265
6352
  * 提议改一条**已有**的任务。
6266
6353
  *
6267
6354
  * 每一格都可选(`undefined` = 这一格不动),但至少要动一格 —— 一份什么都不改的
6268
- * 提案是在浪费用户的一次点击。这条判定在 core 那侧
6355
+ * 提案是在浪费一次写入。这条判定在 core 那侧
6269
6356
  * (`schedule/draft.ts` 的 `draft-update-empty`)。
6270
6357
  *
6271
6358
  * ## ⚠️ 「放宽」和别的改动在类型上长得一样,所以判定必须在别处
6272
6359
  *
6273
6360
  * 把超时从 10 分钟调到 30 分钟,和往清单里加一条 `terminal(rm:*)`,在这个形状里
6274
- * 是同一种东西:几个可选字段。而后者是**提权**。所以两个宿主都必须自己把
6275
- * 「这次提案放宽了什么」单独标出来(web 的卡片、core 的工具输出),
6276
- * 不许把它混在一列改动里 —— 用户扫一眼就点保存的那一下,正是这条要防的。
6361
+ * 是同一种东西:几个可选字段。而后者是**提权**。
6362
+ *
6363
+ * 2026-10-20 起 `update` 也直接落库(用户拍的「create 和 update 都自动」),
6364
+ * 于是这条判定从「保存前那道闸」变成了**卡片上的那枚标 + 工具回给模型的那句话**:
6365
+ * `draftWidening()` 照旧算,工具照旧要求模型在正文里主动交代。
6366
+ * 那枚标不再是「点下去之前读一眼」的理由,而是「事后看得见改了什么」的理由 ——
6367
+ * 别因为不再拦截就把它删了。
6277
6368
  */
6278
6369
  interface ScheduleDraftUpdate extends ScheduleDraftAllowlist {
6279
6370
  action: 'update';
@@ -6286,6 +6377,8 @@ interface ScheduleDraftUpdate extends ScheduleDraftAllowlist {
6286
6377
  permission?: ScheduleDraftPermission;
6287
6378
  enabled?: boolean;
6288
6379
  maxTurns?: number;
6380
+ /** 同 {@link ScheduleDraftCreate.maxBudgetUsd} */
6381
+ maxBudgetUsd?: number;
6289
6382
  timeoutMs?: number;
6290
6383
  /** 同 {@link ScheduleDraftCreate.note},必填 */
6291
6384
  note: string;
@@ -7474,6 +7567,16 @@ type WireHubEvent =
7474
7567
  type: 'user-message';
7475
7568
  text: string;
7476
7569
  parts?: EpochContentPart[];
7570
+ /**
7571
+ * 这一条是**按哪条自定义斜杠命令**发出来的(2026-10-21)。
7572
+ *
7573
+ * `text` 是展开之后的正文(模型看到的那份),这一格是**来路** ——
7574
+ * 界面据此把这一段画成一行 `/命令名 参数`,而不是一大段用户从没打过的话。
7575
+ *
7576
+ * 缺席 = 这一条不是命令。手打的 `/foo` 认出来了也带它:屏幕上的那一行
7577
+ * 本来就是用户亲手敲的,只是展开之后的正文不该顶替它。
7578
+ */
7579
+ command?: EpochUserCommand;
7477
7580
  /** 发送方在 `POST /messages` 里给的编号,原样带回;没给就缺席(判据在 `WireSendMessageRequest.clientMessageId` 上) */
7478
7581
  clientMessageId?: string;
7479
7582
  };
@@ -7648,7 +7751,7 @@ type WireAuthGuard = (request: WireAuthRequestView) => WireAuthVerdict;
7648
7751
  /**
7649
7752
  * `fixtures/wire/*.json` 的形状。
7650
7753
  *
7651
- * [方案 02 的教训](../../../.agents/plans/README.md):整套成本闸门合进 main、
7754
+ * [方案 02 的教训](../../../.epoch/plans/README.md):整套成本闸门合进 main、
7652
7755
  * 一行都没接上,1105 条用例全绿也没拦住 —— 因为交接项只写在方案 md 里。
7653
7756
  * 所以 server 与 web 的交接锚点是**一份两边都跑的 fixture**:
7654
7757
  *
@@ -9820,6 +9923,15 @@ interface WireReplayMessage extends EpochMessage {
9820
9923
  id: number;
9821
9924
  /** 毫秒时间戳 */
9822
9925
  timestamp: number;
9926
+ /**
9927
+ * 这一条是**按哪条自定义斜杠命令**发出来的(2026-10-21)。
9928
+ *
9929
+ * 和 `WireHubEvent` 那一帧上的同名格子是**同一份数据、同一个理由**:
9930
+ * 展开之后的正文存进 `content` 喂模型,来路存 `messages.command` 那一列给界面。
9931
+ * 缺席 = 不是命令,或者这条是 v15 之前的库写的(那些正文照样能读,
9932
+ * 只是永远会显示成「用户说过这一段」)。
9933
+ */
9934
+ command?: EpochUserCommand;
9823
9935
  /**
9824
9936
  * 这一轮的账。**只有一轮里最后一条 assistant 行有**,见 {@link EpochTurnFacts}。
9825
9937
  *
@@ -15733,6 +15845,43 @@ declare function isAppearanceTranslucent(value: unknown): value is number;
15733
15845
  * @returns 0–100 的整数;认不出来 = `undefined`(调用方按「这一格没给」处理)
15734
15846
  */
15735
15847
  declare function normalizeAppearanceTranslucent(value: unknown): number | undefined;
15848
+ /**
15849
+ * 把「半透明侧边栏」编成**文本通道**上那个串(2026-10-21)。
15850
+ *
15851
+ * 文本通道有两个:localStorage 的 `epoch.translucentSidebar` 和首屏 URL 上的
15852
+ * `?translucentSidebar=`。两处都必须用这个编码,理由见
15853
+ * {@link parseAppearanceTranslucentText} 的第二段 —— **裸数字在这里是坏的**。
15854
+ *
15855
+ * 只负责拼串,不判值域:调用方那一侧本来就走 `isAppearanceTranslucent`
15856
+ * (同 `writeNumPref` 的「写这一层不判值」那条口径)。
15857
+ */
15858
+ declare function formatAppearanceTranslucent(value: number): string;
15859
+ /**
15860
+ * 读文本通道上那个串 —— **`%` 后缀存在的唯一理由:`0` / `1` 和老布尔撞车**。
15861
+ *
15862
+ * 这一格 2026-10-20 从开关改成 0–100 的滑杆,而开关时代它存的是裸 `'1'` / `'0'`
15863
+ * (localStorage 里)和 `?translucentSidebar=1`(首屏 URL 上)。于是**新的数值 0 和 1
15864
+ * 落上去之后和老布尔时代逐字节相同**:
15865
+ *
15866
+ * ```
15867
+ * 写 0 → localStorage "0" → 被当老布尔「关」→ 读回 100(不透明)
15868
+ * 写 1 → localStorage "1" → 被当老布尔「开」→ 读回 72
15869
+ * ```
15870
+ *
15871
+ * 屏幕上看到的是「滑杆拖到 1 弹回 72、拖到 0 弹回 100」,也就是**永远拖不到 0**
15872
+ * (2026-10-21 用户报的就是这一条,实测 2 是当时能到的最小值)。
15873
+ *
15874
+ * 所以新格式带一个 `%`:`'0%'` / `'1%'` / `'72%'` 一个都撞不上 `'0'` / `'1'`。
15875
+ * 三条规则,**顺序固定**:
15876
+ *
15877
+ * 1. `'<n>%'` → 数字(新格式,唯一能表达 0 / 1 的那一档)
15878
+ * 2. 裸 `'1'` / `'0'` → 72 / 100(老布尔;**这两格不能退**,否则老用户升级之后
15879
+ * 侧栏要么突然全透、要么突然不透明)
15880
+ * 3. 其余裸 `0–100` → 数字(2026-10-20 那一版和手改过的值就长这样,得照旧读得出来)
15881
+ *
15882
+ * @returns 0–100 的整数;认不出来 / 没给 = `undefined`(调用方按「这一格没设过」处理)
15883
+ */
15884
+ declare function parseAppearanceTranslucentText(raw: string | null | undefined): number | undefined;
15736
15885
  /** 背景媒体的类型。`none` = 不要背景 */
15737
15886
  declare const APPEARANCE_BACKGROUND_KINDS: readonly ["none", "image", "gif", "video"];
15738
15887
  type AppearanceBackgroundKind = (typeof APPEARANCE_BACKGROUND_KINDS)[number];
@@ -15959,6 +16108,237 @@ interface WireAppearanceResponse {
15959
16108
  */
15960
16109
  declare const WIRE_APPEARANCE_RESPONSE_FIELDS: WireFields<WireAppearanceResponse>;
15961
16110
 
16111
+ /**
16112
+ * 首屏那一份「外观字段 → query 参数 → localStorage 键」的登记表(2026-10-21)。
16113
+ *
16114
+ * ## 这张表为什么存在
16115
+ *
16116
+ * 外观偏好要活过一次重启,只有**首屏 URL** 这一个通道:界面只读 localStorage,
16117
+ * 而 localStorage 按 origin 隔离、宿主用 `port: 0` —— 每次启动都是新 origin,
16118
+ * 上一份存储压根不在。于是同一批字段必须在两处各搬一遍:
16119
+ *
16120
+ * | 谁 | 搬什么 |
16121
+ * | --- | --- |
16122
+ * | `server/src/bind.ts` | 盘上那份 → query 参数({@link encodeAppearanceFirstScreenValue})|
16123
+ * | `web/index.html` | query 参数 → localStorage(那段内联脚本,**import 不了任何东西**)|
16124
+ *
16125
+ * 这两处原来都是**手写的一串 `if`**,于是「加了一格、只改了其中一处」没有任何
16126
+ * 一处会报错。2026-10-21 之前有 8 格就是这样静默丢的(主题名 / 画布色 / 墨色 /
16127
+ * 气泡色 / perMode / 两档覆盖 / 背景明细),表现是「设置页里好好的、重启回出厂」,
16128
+ * 其中最显眼的一格是**背景视频整层不渲染**(面板半透明、底下什么都没有)。
16129
+ *
16130
+ * 所以服务端那一半改成类型驱动:这张表按 `keyof WireAppearanceRequest` 索引,
16131
+ * 少登记一格编译不过;`uiPresetParams` 遍历它,漏一格同样编译不过。
16132
+ *
16133
+ * ⚠️ **内联脚本那一半没法这样修**:它必须赶在任何 CSS 之前跑完(防 FOUC),
16134
+ * 所以它不能 import、也不能参与类型系统 —— 那一份仍然只能手写。它由
16135
+ * `web/__tests__/prefs.test.ts` 拿这张表做**集合相等**比对:登记了却没搬、
16136
+ * 或者搬了一个没登记的,那条会红。
16137
+ *
16138
+ * ## 顺序是 URL 契约的一部分
16139
+ *
16140
+ * 表的书写顺序(`Object.keys` 保序,键全是非数字串)**就是首屏 URL 上参数的
16141
+ * 顺序**,`server/__tests__/bind.test.ts` 逐格比着。今天它和
16142
+ * {@link WireAppearanceRequest} 的声明顺序一致 —— 加一格请加在语义上该在的位置,
16143
+ * 别图省事甩到末尾。
16144
+ */
16145
+
16146
+ /**
16147
+ * 这一格怎么变成 URL 上的一个字符串。
16148
+ *
16149
+ * 只描述**编码**,不描述值域 —— 值域是每格自己的 `guard`,两者正交:
16150
+ * `theme` 和 `uiFont` 都是 `enum` 但值域不同,`canvasColor` 和 `themeName`
16151
+ * 都是文本但一个要 hex。
16152
+ */
16153
+ type AppearanceFirstScreenKind =
16154
+ /** 封闭值域的名字,原样拼(`theme` / `uiFont` / `reduceMotion` …) */
16155
+ 'enum'
16156
+ /** 有长度约束的普通文本(`themeName`) */
16157
+ | 'text'
16158
+ /** `#rrggbb`(画布 / 墨色 / 气泡色) */
16159
+ | 'color'
16160
+ /** 预设名**或** `#rrggbb`(强调色两样都收) */
16161
+ | 'accent'
16162
+ /** 整数,拼十进制(宽度 / 字号 / 对比度) */
16163
+ | 'int'
16164
+ /** 0–100 的 alpha 百分比,拼 `<n>%`(⚠️ `100` = 不透明 = **不拼**) */
16165
+ | 'percent'
16166
+ /** 布尔,拼 `1` / `0`(query 上是字符串) */
16167
+ | 'bool'
16168
+ /** 对象,拼 JSON 文本(两档覆盖 / 背景明细) */
16169
+ | 'json';
16170
+ /** 表里的一格。 */
16171
+ interface AppearanceFirstScreenField {
16172
+ /**
16173
+ * query 上的参数名。
16174
+ *
16175
+ * 今天逐字等于字段名({@link APPEARANCE_FIRST_SCREEN_FIELDS} 的键),但**照样
16176
+ * 单独列出来**:它是 URL 契约,改名等于换契约,值得在表上占一行让人看见。
16177
+ */
16178
+ readonly param: string;
16179
+ /** localStorage 的键。`index.html` 写它、`web/src/prefs.ts` 读它 */
16180
+ readonly storageKey: string;
16181
+ readonly kind: AppearanceFirstScreenKind;
16182
+ /** 值域。`satisfies` 之后每格保留自己的守卫类型(`v is AppearanceTheme` 之类) */
16183
+ readonly guard: (value: unknown) => boolean;
16184
+ }
16185
+ /**
16186
+ * 外观字段的登记表 —— **加一格外观字段就从这儿开始**。
16187
+ *
16188
+ * `satisfies Record<keyof WireAppearanceRequest, …>` 是这个文件存在的理由:
16189
+ * `WireAppearanceRequest` 上多一格而这里没登记,编译当场不过。加完之后
16190
+ * 还有两处会红着提醒你(这正是想要的效果):
16191
+ *
16192
+ * 1. `server/__tests__/bind.test.ts` 那条「逐格出现在 URL 里」——
16193
+ * 样例里得补上它,否则参数名集合对不上;
16194
+ * 2. `web/__tests__/prefs.test.ts` 的集合相等 —— `index.html` 那段内联脚本
16195
+ * 还得手写一份接收(它 import 不了,见文件头)。
16196
+ */
16197
+ declare const APPEARANCE_FIRST_SCREEN_FIELDS: {
16198
+ readonly theme: {
16199
+ readonly param: "theme";
16200
+ readonly storageKey: "epoch.theme";
16201
+ readonly kind: "enum";
16202
+ readonly guard: typeof isAppearanceTheme;
16203
+ };
16204
+ readonly lang: {
16205
+ readonly param: "lang";
16206
+ readonly storageKey: "epoch.lang";
16207
+ readonly kind: "enum";
16208
+ readonly guard: typeof isAppearanceLang;
16209
+ };
16210
+ readonly sidebarWidth: {
16211
+ readonly param: "sidebarWidth";
16212
+ readonly storageKey: "epoch.sidebarWidth";
16213
+ readonly kind: "int";
16214
+ readonly guard: typeof isAppearanceSidebarWidth;
16215
+ };
16216
+ readonly diffTreeWidth: {
16217
+ readonly param: "diffTreeWidth";
16218
+ readonly storageKey: "epoch.diffTreeWidth";
16219
+ readonly kind: "int";
16220
+ readonly guard: typeof isAppearanceDiffTreeWidth;
16221
+ };
16222
+ readonly accent: {
16223
+ readonly param: "accent";
16224
+ readonly storageKey: "epoch.accent";
16225
+ readonly kind: "accent";
16226
+ readonly guard: typeof isAppearanceAccentValue;
16227
+ };
16228
+ readonly themeName: {
16229
+ readonly param: "themeName";
16230
+ readonly storageKey: "epoch.themeName";
16231
+ readonly kind: "text";
16232
+ readonly guard: typeof isAppearanceThemeName;
16233
+ };
16234
+ readonly canvasColor: {
16235
+ readonly param: "canvasColor";
16236
+ readonly storageKey: "epoch.canvasColor";
16237
+ readonly kind: "color";
16238
+ readonly guard: typeof isHexColor;
16239
+ };
16240
+ readonly inkColor: {
16241
+ readonly param: "inkColor";
16242
+ readonly storageKey: "epoch.inkColor";
16243
+ readonly kind: "color";
16244
+ readonly guard: typeof isHexColor;
16245
+ };
16246
+ readonly saidColor: {
16247
+ readonly param: "saidColor";
16248
+ readonly storageKey: "epoch.saidColor";
16249
+ readonly kind: "color";
16250
+ readonly guard: typeof isHexColor;
16251
+ };
16252
+ readonly fontSize: {
16253
+ readonly param: "fontSize";
16254
+ readonly storageKey: "epoch.fontSize";
16255
+ readonly kind: "int";
16256
+ readonly guard: typeof isAppearanceFontSize;
16257
+ };
16258
+ readonly codeFontSize: {
16259
+ readonly param: "codeFontSize";
16260
+ readonly storageKey: "epoch.codeFontSize";
16261
+ readonly kind: "int";
16262
+ readonly guard: typeof isAppearanceCodeFontSize;
16263
+ };
16264
+ readonly uiFont: {
16265
+ readonly param: "uiFont";
16266
+ readonly storageKey: "epoch.uiFont";
16267
+ readonly kind: "enum";
16268
+ readonly guard: typeof isAppearanceUiFont;
16269
+ };
16270
+ readonly codeFont: {
16271
+ readonly param: "codeFont";
16272
+ readonly storageKey: "epoch.codeFont";
16273
+ readonly kind: "enum";
16274
+ readonly guard: typeof isAppearanceCodeFont;
16275
+ };
16276
+ readonly reduceMotion: {
16277
+ readonly param: "reduceMotion";
16278
+ readonly storageKey: "epoch.reduceMotion";
16279
+ readonly kind: "enum";
16280
+ readonly guard: typeof isAppearanceMotion;
16281
+ };
16282
+ readonly translucentSidebar: {
16283
+ readonly param: "translucentSidebar";
16284
+ readonly storageKey: "epoch.translucentSidebar";
16285
+ readonly kind: "percent";
16286
+ readonly guard: (value: unknown) => boolean;
16287
+ };
16288
+ readonly contrast: {
16289
+ readonly param: "contrast";
16290
+ readonly storageKey: "epoch.contrast";
16291
+ readonly kind: "int";
16292
+ readonly guard: typeof isAppearanceContrast;
16293
+ };
16294
+ readonly perMode: {
16295
+ readonly param: "perMode";
16296
+ readonly storageKey: "epoch.perMode";
16297
+ readonly kind: "bool";
16298
+ readonly guard: (value: unknown) => value is boolean;
16299
+ };
16300
+ readonly light: {
16301
+ readonly param: "light";
16302
+ readonly storageKey: "epoch.lightPatch";
16303
+ readonly kind: "json";
16304
+ readonly guard: typeof isAppearanceModePatch;
16305
+ };
16306
+ readonly dark: {
16307
+ readonly param: "dark";
16308
+ readonly storageKey: "epoch.darkPatch";
16309
+ readonly kind: "json";
16310
+ readonly guard: typeof isAppearanceModePatch;
16311
+ };
16312
+ readonly background: {
16313
+ readonly param: "background";
16314
+ readonly storageKey: "epoch.background";
16315
+ readonly kind: "json";
16316
+ readonly guard: typeof isAppearanceBackground;
16317
+ };
16318
+ };
16319
+ /**
16320
+ * 首屏 URL 上**不是字段**的那一个参数:`background.kind !== 'none'` 的布尔投影。
16321
+ *
16322
+ * 它不进表(表按 `keyof WireAppearanceRequest` 索引,它不在那个类型上),理由也
16323
+ * 不该进:它没有任何新信息,喂的只是 CSS 的 `html[data-background='1']`
16324
+ * (三个内容面换半透明),而真正画背景的那一层读的是上面 `background` 那个 JSON。
16325
+ *
16326
+ * ⚠️ **两个都要拼**:只拼这一个的话重启之后是「面板半透明、底下什么都没有」。
16327
+ */
16328
+ declare const APPEARANCE_BACKGROUND_ON_PARAM = "backgroundOn";
16329
+ /** 遍历顺序 = 首屏 URL 上的参数顺序(见文件头「顺序是 URL 契约的一部分」)。 */
16330
+ declare const APPEARANCE_FIRST_SCREEN_FIELD_ORDER: readonly (keyof WireAppearanceRequest)[];
16331
+ /**
16332
+ * 把一格外观字段编成首屏 query 上的那个字符串。
16333
+ *
16334
+ * 认不出来 / 这一格是「等于默认所以不必拼」= `undefined`(调用方按「不拼这个参数」
16335
+ * 处理)。
16336
+ *
16337
+ * ⚠️ **值域在这里再判一次**,哪怕调用方已经筛过:`uiPresetParams` 的入参
16338
+ * 有一半来自宿主(`createWebServer({ ui })`),那一份没经过 `storedUiPreset`。
16339
+ */
16340
+ declare function encodeAppearanceFirstScreenValue(field: keyof WireAppearanceRequest, value: unknown): string | undefined;
16341
+
15962
16342
  /**
15963
16343
  * 「盘上那份外观偏好」→「宿主该怎么画」(2026-10-20)。
15964
16344
  *
@@ -18074,4 +18454,4 @@ declare const SECRET_SERVICE = "epoch-agent";
18074
18454
  */
18075
18455
  declare const MCP_DATA_KEY_NAME = "mcp-auth-data-key";
18076
18456
 
18077
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, 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 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 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_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_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_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 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 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, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, 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, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
18457
+ 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_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_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 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 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 };
package/dist/index.js CHANGED
@@ -420,6 +420,7 @@ function collectPendingApprovals(defs, runs) {
420
420
  }
421
421
  // src/schedule-draft.ts
422
422
  var SCHEDULE_DRAFT_TOOL = "schedule_draft";
423
+ var SCHEDULE_DRAFT_SAVED_MARK = "scheduleId=";
423
424
  // src/question.ts
424
425
  var MAX_QUESTIONS = 4;
425
426
  var MIN_OPTIONS = 2;
@@ -1617,6 +1618,24 @@ function normalizeAppearanceTranslucent(value) {
1617
1618
  }
1618
1619
  return isAppearanceTranslucent(value) ? value : void 0;
1619
1620
  }
1621
+ function formatAppearanceTranslucent(value) {
1622
+ return `${value}%`;
1623
+ }
1624
+ function parseAppearanceTranslucentText(raw) {
1625
+ if (raw === null || raw === void 0) return void 0;
1626
+ const text = raw.trim();
1627
+ if (text === "") return void 0;
1628
+ const percent = /^(\d+)%$/.exec(text);
1629
+ if (percent) {
1630
+ const value2 = Number(percent[1]);
1631
+ return isAppearanceTranslucent(value2) ? value2 : void 0;
1632
+ }
1633
+ if (text === "1") return APPEARANCE_TRANSLUCENT.legacyOn;
1634
+ if (text === "0") return APPEARANCE_TRANSLUCENT.default;
1635
+ if (!/^\d+$/.test(text)) return void 0;
1636
+ const value = Number(text);
1637
+ return isAppearanceTranslucent(value) ? value : void 0;
1638
+ }
1620
1639
  var APPEARANCE_BACKGROUND_KINDS = ["none", "image", "gif", "video"];
1621
1640
  function isAppearanceBackgroundKind(value) {
1622
1641
  return typeof value === "string" && APPEARANCE_BACKGROUND_KINDS.includes(value);
@@ -1648,6 +1667,133 @@ function isAppearanceModePatch(value) {
1648
1667
  var WIRE_APPEARANCE_RESPONSE_FIELDS = wireFields()({
1649
1668
  ok: true
1650
1669
  });
1670
+ // src/appearance-first-screen.ts
1671
+ var APPEARANCE_FIRST_SCREEN_FIELDS = {
1672
+ theme: { param: "theme", storageKey: "epoch.theme", kind: "enum", guard: isAppearanceTheme },
1673
+ lang: { param: "lang", storageKey: "epoch.lang", kind: "enum", guard: isAppearanceLang },
1674
+ sidebarWidth: {
1675
+ param: "sidebarWidth",
1676
+ storageKey: "epoch.sidebarWidth",
1677
+ kind: "int",
1678
+ guard: isAppearanceSidebarWidth
1679
+ },
1680
+ diffTreeWidth: {
1681
+ param: "diffTreeWidth",
1682
+ storageKey: "epoch.diffTreeWidth",
1683
+ kind: "int",
1684
+ guard: isAppearanceDiffTreeWidth
1685
+ },
1686
+ accent: {
1687
+ param: "accent",
1688
+ storageKey: "epoch.accent",
1689
+ kind: "accent",
1690
+ guard: isAppearanceAccentValue
1691
+ },
1692
+ themeName: {
1693
+ param: "themeName",
1694
+ storageKey: "epoch.themeName",
1695
+ kind: "text",
1696
+ guard: isAppearanceThemeName
1697
+ },
1698
+ canvasColor: {
1699
+ param: "canvasColor",
1700
+ storageKey: "epoch.canvasColor",
1701
+ kind: "color",
1702
+ guard: isHexColor
1703
+ },
1704
+ inkColor: {
1705
+ param: "inkColor",
1706
+ storageKey: "epoch.inkColor",
1707
+ kind: "color",
1708
+ guard: isHexColor
1709
+ },
1710
+ saidColor: {
1711
+ param: "saidColor",
1712
+ storageKey: "epoch.saidColor",
1713
+ kind: "color",
1714
+ guard: isHexColor
1715
+ },
1716
+ fontSize: {
1717
+ param: "fontSize",
1718
+ storageKey: "epoch.fontSize",
1719
+ kind: "int",
1720
+ guard: isAppearanceFontSize
1721
+ },
1722
+ codeFontSize: {
1723
+ param: "codeFontSize",
1724
+ storageKey: "epoch.codeFontSize",
1725
+ kind: "int",
1726
+ guard: isAppearanceCodeFontSize
1727
+ },
1728
+ uiFont: { param: "uiFont", storageKey: "epoch.uiFont", kind: "enum", guard: isAppearanceUiFont },
1729
+ codeFont: {
1730
+ param: "codeFont",
1731
+ storageKey: "epoch.codeFont",
1732
+ kind: "enum",
1733
+ guard: isAppearanceCodeFont
1734
+ },
1735
+ reduceMotion: {
1736
+ param: "reduceMotion",
1737
+ storageKey: "epoch.reduceMotion",
1738
+ kind: "enum",
1739
+ guard: isAppearanceMotion
1740
+ },
1741
+ translucentSidebar: {
1742
+ param: "translucentSidebar",
1743
+ storageKey: "epoch.translucentSidebar",
1744
+ kind: "percent",
1745
+ guard: (value) => normalizeAppearanceTranslucent(value) !== void 0
1746
+ },
1747
+ contrast: {
1748
+ param: "contrast",
1749
+ storageKey: "epoch.contrast",
1750
+ kind: "int",
1751
+ guard: isAppearanceContrast
1752
+ },
1753
+ perMode: {
1754
+ param: "perMode",
1755
+ storageKey: "epoch.perMode",
1756
+ kind: "bool",
1757
+ guard: (value) => typeof value === "boolean"
1758
+ },
1759
+ light: {
1760
+ param: "light",
1761
+ storageKey: "epoch.lightPatch",
1762
+ kind: "json",
1763
+ guard: isAppearanceModePatch
1764
+ },
1765
+ dark: {
1766
+ param: "dark",
1767
+ storageKey: "epoch.darkPatch",
1768
+ kind: "json",
1769
+ guard: isAppearanceModePatch
1770
+ },
1771
+ background: {
1772
+ param: "background",
1773
+ storageKey: "epoch.background",
1774
+ kind: "json",
1775
+ guard: isAppearanceBackground
1776
+ }
1777
+ };
1778
+ var APPEARANCE_BACKGROUND_ON_PARAM = "backgroundOn";
1779
+ var APPEARANCE_FIRST_SCREEN_FIELD_ORDER = Object.keys(APPEARANCE_FIRST_SCREEN_FIELDS);
1780
+ function encodeAppearanceFirstScreenValue(field, value) {
1781
+ const spec = APPEARANCE_FIRST_SCREEN_FIELDS[field];
1782
+ if (!spec.guard(value)) return void 0;
1783
+ switch (spec.kind) {
1784
+ case "bool":
1785
+ return value ? "1" : "0";
1786
+ case "json":
1787
+ return JSON.stringify(value);
1788
+ case "percent": {
1789
+ const percent = normalizeAppearanceTranslucent(value);
1790
+ if (percent === void 0 || percent === APPEARANCE_TRANSLUCENT.default) return void 0;
1791
+ return formatAppearanceTranslucent(percent);
1792
+ }
1793
+ default:
1794
+ return String(value);
1795
+ }
1796
+ }
1651
1797
  // src/appearance-color.ts
1652
1798
  function hsvToHex(hsv) {
1653
1799
  const h = (hsv.h % 360 + 360) % 360;
@@ -2236,4 +2382,4 @@ var COMPLIANCE_ACTIONS = ["block", "mask", "warn", "off"];
2236
2382
  var SECRET_SERVICE = "epoch-agent";
2237
2383
  var MCP_DATA_KEY_NAME = "mcp-auth-data-key";
2238
2384
 
2239
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPEARANCE_ACCENTS, APPEARANCE_BACKGROUND_FITS, APPEARANCE_BACKGROUND_KINDS, APPEARANCE_CODE_FONTS, APPEARANCE_CODE_FONT_SIZE, APPEARANCE_CONTRAST, APPEARANCE_DEFAULT_CODE_FONT_SIZE, APPEARANCE_DEFAULT_FONT_SIZE, APPEARANCE_DIFF_TREE_WIDTH, 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_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_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_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, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, 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, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, relativeLuminance, resolveAppearanceVisual, resolveHostText, sequenceId, sessionPartSummary, snapAppearanceContrast, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
2385
+ 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_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_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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epoch-agent/protocol",
3
- "version": "2.2.0",
3
+ "version": "2.4.0",
4
4
  "private": false,
5
5
  "description": "epoch-agent 契约层:工具 / 事件 / 权限 / 插件的类型定义,零运行时依赖",
6
6
  "repository": {