@epoch-agent/protocol 2.1.0 → 2.3.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
@@ -6182,33 +6182,46 @@ declare function unfixedRules(allowRules: readonly string[], approvals: readonly
6182
6182
  declare function collectPendingApprovals(defs: readonly ScheduleDefinition[], runs: readonly ScheduleRun[]): SchedulePendingItem[];
6183
6183
 
6184
6184
  /**
6185
- * 模型在对话里交上来的一份定时任务**草稿**。
6185
+ * 模型在对话里交上来的一份定时任务**提案**,以及它落地之后的那一行回执。
6186
6186
  *
6187
- * `epoch schedule add` 和自动化面板那张表单是两条**人操作**的写入路。这一份是
6188
- * 第三条来路,而它**不是写入路** —— 草稿谁都落不了库,它只是一份摆到人眼前的
6189
- * 提案。真正落库的仍然是那两条:人点「审阅并保存」之后走的是同一个
6190
- * `POST /api/schedules`,人粘贴命令行走的是同一个 `epoch schedule add`。
6187
+ * ## 2026-10-20:它是**第三条写入路**了
6191
6188
  *
6192
- * ## ⚠️ 三条硬约束都摊在类型上,不靠注释(原来照内置模板 `schedule-templates.ts` 那三条办,那份 2026-10-12 删了)
6189
+ * 在这之前这一份只是草稿:模型交上来、人点「审阅并保存」、在表单上自己填一个
6190
+ * 预算 —— 那一下才是真的建立。今天不是了:用户拍的(原话「可以做成完全自动」),
6191
+ * 模型交上来就落库、就注册进 OS。
6193
6192
  *
6194
- * | 要守住的 | 落在类型的哪一格 |
6195
- * | ------------------------------ | -------------------------------------------------------------------- |
6196
- * | 模型不许把任务放到「跳过全部检查」 | {@link ScheduleDraftPermission} 的取值里**没有** `bypass` |
6197
- * | 填进表单后**必须让用户过一遍** | 整份形状里**没有** `maxBudgetUsd`,而它是必填 —— 表单因此保存不了 |
6198
- * | 草稿不是写入路 | 这里只有数据,没有 id 生成、没有 `enabled`、没有 `createdAt` |
6193
+ * 于是全仓有三条写入路,主语第一次不全是人:
6199
6194
  *
6200
- * 第二条是三条里最要紧的:预算必填、没有默认值
6201
- * (方案 45 §3.5),于是一份草稿填进表单之后那个保存按钮**天然是灰的**,
6202
- * 用户不看完那一屏就出不去。写成「草稿里预填 0.50 + 一句『请检查』」的话,
6203
- * 「必须过一遍」就退化成一句没人读的话 —— 而这一格错了的后果很具体:
6204
- * 一觉醒来 40 美元。
6195
+ * | 谁发起 | 走哪条 |
6196
+ * | ------------- | --------------------------------------------------------- |
6197
+ * | 人 | 自动化面板那张表单 / `epoch schedule add` |
6198
+ * | 模型(这一份)| `schedule_draft` 工具直接调 `ScheduleControl.create` |
6199
+ *
6200
+ * ## ⚠️ 有一档仍然降级成草稿:`permissionLevel === 'plan'`
6201
+ *
6202
+ * plan 模式的定义就是「一个字节都不写」,所以工具在那底下**只交提案、不落库**
6203
+ * (判据在 core 的 `tools/builtin/schedule-draft.ts`)。卡片照旧画,只是底下那句
6204
+ * 从「已建立」换成「只读模式下没建立」—— 于是「调研阶段最容易看出该自动化什么」
6205
+ * 这条老理由一个字都没丢。
6206
+ *
6207
+ * ## 两个刻意的形状缺口
6208
+ *
6209
+ * - **没有 `id` / `createdAt` / `enabled`**:新建那条的 id 由库生成,提案里猜不出来;
6210
+ * `enabled` 在这条路上恒为「启用」(和表单上那个保存键同一档,`register: true`)。
6211
+ * 改已有那条时 id 是**入参**(模型得先 `action: 'list'` 看一眼),不是产出。
6212
+ * - **`maxBudgetUsd` 是可选而不是必填**:不给时 core 用 `SCHEDULE_FORM_BUDGET_USD`
6213
+ * (= 200,和新建表单预填的那一格是同一个常量)。用户定的口径是「按新建任务
6214
+ * 那里的来」—— 缺省值因此只有一个真源,**别在这份文件里再抄一个数**
6215
+ * (protocol 够不着 core,抄了就是第二份,而它漂走的表现是「不同入口预填的数
6216
+ * 不一样」,没有检查抓得到)。
6205
6217
  *
6206
6218
  * ## 为什么住在 protocol
6207
6219
  *
6208
6220
  * 这一份的**两端都要读它** ——
6209
6221
  * core 那侧要解析模型发来的入参(`tools/builtin/schedule-draft.ts`),
6210
- * `packages/web` 那侧要从那次工具调用的入参里把它读回来渲染成一张卡片
6211
- * (`thread/rows.ts`,照 `todo` 的先例)。web 只依赖 protocol + view,够不着 core。
6222
+ * `packages/web` 那侧要从那次工具调用的入参里把它读回来渲染成一张卡片,
6223
+ * 再从**输出**里认领那条 id 画撤销键(`thread/rows.ts`,照 `todo` 的先例)。
6224
+ * web 只依赖 protocol + view,够不着 core。
6212
6225
  *
6213
6226
  * ## ⚠️ 这里一个中文字都没有
6214
6227
  *
@@ -6229,16 +6242,47 @@ declare function collectPendingApprovals(defs: readonly ScheduleDefinition[], ru
6229
6242
  */
6230
6243
  declare const SCHEDULE_DRAFT_TOOL = "schedule_draft";
6231
6244
  /**
6232
- * 草稿能落在哪几档权限上 —— **`bypass` 不在里面**。
6245
+ * 「这一条真的建成了」那一行在工具输出里的**行首标记**。
6246
+ *
6247
+ * ## 为什么卡片要从输出里认领,而不是从入参里推
6248
+ *
6249
+ * 卡片渲染的是那次调用的**入参**(模型发的原始 JSON),而入参里没有 id
6250
+ * —— id 是库生成的。可撤销键要的正是那个 id。两边的接缝只有工具输出这一格,
6251
+ * 所以约定一行机器可读的:`scheduleId=<id>`。
6252
+ *
6253
+ * ## 为什么是 ASCII 而不是一句中文
6254
+ *
6255
+ * 这行同时被两拨人读:模型(照旧拿去写回复)和 web(正则抓 id)。中文行的话,
6256
+ * 抓取就变成「按某一门语言的措辞匹配」,而 `EPOCH_LANGUAGE=en` 下工具输出
6257
+ * 会不会跟着换语言,是**另一条链的事**(core 的工具措辞今天不进 catalog,
6258
+ * 见 `locales/zh.yaml` 的范围说明)。用 ASCII 把这件事提前掐掉,比将来
6259
+ * 发现了再补便宜。
6260
+ *
6261
+ * ⚠️ **格式改动要同时看三处**:这里、core 写那一行的地方、web 的 `savedIdOf()`。
6262
+ * 漂了的表现是撤销键消失 —— 卡片照旧画,只是少了那个键,一声不响。
6263
+ */
6264
+ declare const SCHEDULE_DRAFT_SAVED_MARK = "scheduleId=";
6265
+ /**
6266
+ * 提案能落在哪几档权限上 —— **2026-10-20 起 `bypass` 也在里面**。
6267
+ *
6268
+ * 这条改动是产品决定,不是失手:用户明确要「按新建任务面板那里的来,跳过全部
6269
+ * 检查」,而那张表单新建时的默认档正是 `bypass`(`web/src/automation/form-state.ts`
6270
+ * 的 `blank()`)。
6271
+ *
6272
+ * ## ⚠️ 它撤掉了什么,以及为什么仍然安全
6233
6273
  *
6234
- * 不是「运行期会拒绝」,是那一档在类型上根本不存在。理由:`bypass` 要一次
6235
- * 二次确认(`bypass-not-confirmed`),而那次确认的**对象是人**;让模型提议
6236
- * 一个「等着人去勾确认框」的档位,等于把那道确认变成一道例行手续。
6274
+ * 撤掉的是「让模型提议一个等着人去勾确认框的档位」这道别扭 —— 那次确认的
6275
+ * 对象本来就是人,模型提议它、人再勾一次,勾完还是「模型提议的东西原样通过」。
6276
+ * 今天这一步不存在了:工具替那条任务把 `bypassAcknowledged: true` 交上去。
6237
6277
  *
6238
- * 用户自己想要那一档时照旧走表单 —— 那条路一个字都没改。
6278
+ * 留下的三道网(判据在 `core/src/schedule/validate.ts` 的 `bypassIssues`):
6279
+ *
6280
+ * 1. 工作目录不能宽到等于没绑(家目录本身 / `~/.epoch` / 文件系统根);
6281
+ * 2. 预算和超时必须为正 —— 也就是「尺子必须在」;
6282
+ * 3. 存下来之后任务列表上那个红标照旧在(一次性确认会被忘掉,标记不会)。
6239
6283
  */
6240
- type ScheduleDraftPermission = Exclude<PermissionLevel, 'bypass'>;
6241
- /** 草稿里那份清单。三个字段各自**可选**:没提到的一格 = 「这一格我没意见」 */
6284
+ type ScheduleDraftPermission = PermissionLevel;
6285
+ /** 提案里那份清单。三个字段各自**可选**:没提到的一格 = 「这一格我没意见」 */
6242
6286
  interface ScheduleDraftAllowlist {
6243
6287
  allowTools?: readonly string[];
6244
6288
  allowOperations?: readonly OperationType[];
@@ -6253,11 +6297,21 @@ interface ScheduleDraftCreate extends ScheduleDraftAllowlist {
6253
6297
  /** 工作目录。不给就是引擎那份缺省(`~/.epoch/automation/<id>/`) */
6254
6298
  workDir?: string;
6255
6299
  permission: ScheduleDraftPermission;
6300
+ /**
6301
+ * 每次最多花多少钱。**不给 = `SCHEDULE_FORM_BUDGET_USD`(200)**,
6302
+ * 判据在这个文件头「两个刻意的形状缺口」那一段。
6303
+ *
6304
+ * 模型可以给一个更小的数(「这活很轻」),也可以给一个更大的(「要扫大仓」)
6305
+ * —— 今天没有硬上限,用户拍的是「不设天花板」。⚠️ 别在这一层夹紧:夹紧会让
6306
+ * 模型以为自己给了 500、实际存的是 200,而卡片上印的会是它给的那个数。
6307
+ */
6308
+ maxBudgetUsd?: number;
6256
6309
  /**
6257
6310
  * 为什么建议这一条,一句话。**给人看的**,会印在卡片上。
6258
6311
  *
6259
6312
  * 必填,而这是刻意的:一条凭空出现在对话里的定时任务,用户第一个问题
6260
- * 一定是「你为什么觉得我需要它」。答不上来的提案不该提。
6313
+ * 一定是「你为什么觉得我需要它」。答不上来的提案不该提 —— 这条理由在
6314
+ * 「自动落库」之后**只增不减**:卡片上不再是「要不要建」,而是「为什么建了」。
6261
6315
  */
6262
6316
  note: string;
6263
6317
  }
@@ -6265,15 +6319,19 @@ interface ScheduleDraftCreate extends ScheduleDraftAllowlist {
6265
6319
  * 提议改一条**已有**的任务。
6266
6320
  *
6267
6321
  * 每一格都可选(`undefined` = 这一格不动),但至少要动一格 —— 一份什么都不改的
6268
- * 提案是在浪费用户的一次点击。这条判定在 core 那侧
6322
+ * 提案是在浪费一次写入。这条判定在 core 那侧
6269
6323
  * (`schedule/draft.ts` 的 `draft-update-empty`)。
6270
6324
  *
6271
6325
  * ## ⚠️ 「放宽」和别的改动在类型上长得一样,所以判定必须在别处
6272
6326
  *
6273
6327
  * 把超时从 10 分钟调到 30 分钟,和往清单里加一条 `terminal(rm:*)`,在这个形状里
6274
- * 是同一种东西:几个可选字段。而后者是**提权**。所以两个宿主都必须自己把
6275
- * 「这次提案放宽了什么」单独标出来(web 的卡片、core 的工具输出),
6276
- * 不许把它混在一列改动里 —— 用户扫一眼就点保存的那一下,正是这条要防的。
6328
+ * 是同一种东西:几个可选字段。而后者是**提权**。
6329
+ *
6330
+ * 2026-10-20 起 `update` 也直接落库(用户拍的「create 和 update 都自动」),
6331
+ * 于是这条判定从「保存前那道闸」变成了**卡片上的那枚标 + 工具回给模型的那句话**:
6332
+ * `draftWidening()` 照旧算,工具照旧要求模型在正文里主动交代。
6333
+ * 那枚标不再是「点下去之前读一眼」的理由,而是「事后看得见改了什么」的理由 ——
6334
+ * 别因为不再拦截就把它删了。
6277
6335
  */
6278
6336
  interface ScheduleDraftUpdate extends ScheduleDraftAllowlist {
6279
6337
  action: 'update';
@@ -6286,6 +6344,8 @@ interface ScheduleDraftUpdate extends ScheduleDraftAllowlist {
6286
6344
  permission?: ScheduleDraftPermission;
6287
6345
  enabled?: boolean;
6288
6346
  maxTurns?: number;
6347
+ /** 同 {@link ScheduleDraftCreate.maxBudgetUsd} */
6348
+ maxBudgetUsd?: number;
6289
6349
  timeoutMs?: number;
6290
6350
  /** 同 {@link ScheduleDraftCreate.note},必填 */
6291
6351
  note: string;
@@ -15959,6 +16019,242 @@ interface WireAppearanceResponse {
15959
16019
  */
15960
16020
  declare const WIRE_APPEARANCE_RESPONSE_FIELDS: WireFields<WireAppearanceResponse>;
15961
16021
 
16022
+ /**
16023
+ * 「盘上那份外观偏好」→「宿主该怎么画」(2026-10-20)。
16024
+ *
16025
+ * ## 它治的是什么
16026
+ *
16027
+ * `GET /api/appearance` 答的是**偏好**(用户点了哪些格子),不是**效果**:
16028
+ * 「强调色 = purple」里没有那四个 hex,「分别设置浅色和深色」的结果也没有合并,
16029
+ * 自定义 `#rrggbb` 的悬停 / 按下两档更是压根不存在(要现推)。
16030
+ * 嵌入宿主画自己那层壳(侧栏 / 标题栏 / 窗口底色)时,这三件都得它自己做。
16031
+ *
16032
+ * 在这一轮之前,那套语义**只有一份**,住在 `web/src/theme/visual.ts` 的
16033
+ * `resolveVisual` + `applyVisual` 上 —— 而 `web` 是 `private: true`,宿主
16034
+ * import 不到。于是宿主只有两条路:抄一份(升级就漂),或者不跟。
16035
+ *
16036
+ * 这一份是那条语义的**第二处实现**,也是给宿主的那一处。⚠️ 它和 web 那份
16037
+ * 是同一个意思的两种写法(web 那份读写的是 localStorage,形状不同),
16038
+ * **改判据要两边一起改**;`packages/protocol/__tests__/appearance-visual.test.ts`
16039
+ * 钉的是语义表(每档覆盖、缺省不落、吸附),不是「两份实现相等」。
16040
+ *
16041
+ * ## 输出的两样东西
16042
+ *
16043
+ * | 函数 | 给谁 | 是什么 |
16044
+ * | --- | --- | --- |
16045
+ * | {@link appearanceRootAttributes} | 宿主 | 该落在根元素上的 `data-*`(含 `data-theme`) |
16046
+ * | {@link appearanceVisualCss} | 宿主 | 该落成行内变量的那几格(+ 自定义强调色推出来的四个值) |
16047
+ *
16048
+ * 两样都由**同一个** {@link resolveAppearanceVisual} 算出来,所以它们不会各说各话。
16049
+ *
16050
+ * ## 宿主侧的三条硬要求(写进 EMBEDDING.md §9 了)
16051
+ *
16052
+ * 1. **先落属性,再注入 `GET /tokens.css`** —— 那张表的 `[data-theme='dark']`
16053
+ * 这类规则靠属性命中,只注入 CSS 不落属性等于没注入。
16054
+ * 2. **每轮先按 `APPEARANCE_ROOT_ATTRIBUTES` 把上一轮的属性全删掉再落** ——
16055
+ * 否则「自定义强调色 → 回到预设」时那个旧的 `data-accent` 会留着,
16056
+ * 而它会压过行内变量(判据在 `web/src/theme/visual.ts` 的 `applyAccent`)。
16057
+ * 3. **`theme` 是宿主决定的**(偏好是 `system` 时按 `prefers-color-scheme` 解),
16058
+ * 这份代码不猜。
16059
+ */
16060
+
16061
+ /** 生效主题。**不是偏好**(偏好还有一档 `system`,解成这两者之一才落属性) */
16062
+ type AppearanceEffectiveTheme = 'light' | 'dark';
16063
+ /**
16064
+ * 这份解析吃的东西。{@link WireAppearanceResponse} 和 runtime 的
16065
+ * `AppearancePrefsView` 都结构兼容它(两者都只是「一堆可选格子」)。
16066
+ *
16067
+ * ⚠️ **字段类型故意写宽**(`uiFont?: string` 而不是 `AppearanceUiFont`):
16068
+ * 这一层吃的是**盘上原样**,而盘上那份可以被用户拿编辑器改坏,也可以是一份
16069
+ * 老版本写下来的旧值。窄类型在这儿只会逼调用方在边界上强转,而强转正好把
16070
+ * 「认不出来」这件事藏起来 —— 那正是这一层要处理的东西。
16071
+ *
16072
+ * ⚠️ **每格在进来之后都会再滤一次值域**:`GET` 的响应(已滤过)和盘上原样都能吃,
16073
+ * 认不出来的格子当没设,判据同 `web/src/prefs.ts` 那条坏值策略。
16074
+ */
16075
+ interface AppearanceVisualSource {
16076
+ accent?: string;
16077
+ themeName?: string;
16078
+ canvasColor?: string;
16079
+ inkColor?: string;
16080
+ saidColor?: string;
16081
+ fontSize?: number;
16082
+ codeFontSize?: number;
16083
+ uiFont?: string;
16084
+ codeFont?: string;
16085
+ reduceMotion?: string;
16086
+ /** 0–100 的 alpha 百分比。旧数据可能是布尔(`true` = 72),由归一表兜住 */
16087
+ translucentSidebar?: number | boolean;
16088
+ contrast?: number;
16089
+ perMode?: boolean;
16090
+ /** 一档覆盖。**没有更窄的类型**:它同样可能是手改坏的形态 */
16091
+ light?: Record<string, unknown>;
16092
+ dark?: Record<string, unknown>;
16093
+ background?: Record<string, unknown>;
16094
+ }
16095
+ /**
16096
+ * 当前这一档**生效值**。缺省格在这里已经是缺省值(14 / 12 / `system` / 100 / 50),
16097
+ * 所以「用户没设过」和「用户设成了缺省值」在这里合流 —— 那是 `applyVisual`
16098
+ * 那条「缺省不落属性」判据要的形态。
16099
+ */
16100
+ interface ResolvedAppearanceVisual {
16101
+ theme: AppearanceEffectiveTheme;
16102
+ /** 预设名(含 `default`)或 `#rrggbb` */
16103
+ accent: string;
16104
+ themeName?: string;
16105
+ canvasColor?: string;
16106
+ inkColor?: string;
16107
+ saidColor?: string;
16108
+ fontSize: number;
16109
+ codeFontSize: number;
16110
+ uiFont: AppearanceUiFont;
16111
+ codeFont: AppearanceCodeFont;
16112
+ reduceMotion: AppearanceMotion;
16113
+ /** alpha 百分比,100 = 不透明 */
16114
+ translucentSidebar: number;
16115
+ contrast: number;
16116
+ background: AppearanceBackground | undefined;
16117
+ }
16118
+ /**
16119
+ * 根元素上**可能被落**的全部 `data-*`。宿主每一轮先按这张表清一遍再落新的。
16120
+ *
16121
+ * ⚠️ `data-theme` 在这里,但它的**值**是宿主决定的(`system` → 媒体查询)。
16122
+ */
16123
+ declare const APPEARANCE_ROOT_ATTRIBUTES: readonly ["data-theme", "data-accent", "data-font-size", "data-code-font-size", "data-ui-font", "data-code-font", "data-motion", "data-translucent-sidebar", "data-contrast", "data-background"];
16124
+ /** 字号 / 代码字号的缺省值。**等于它就不落属性**(`tokens.css` 的枚举里没有这两档) */
16125
+ declare const APPEARANCE_DEFAULT_FONT_SIZE = 14;
16126
+ declare const APPEARANCE_DEFAULT_CODE_FONT_SIZE = 12;
16127
+ /**
16128
+ * 对比度吸附到最近的 10,并夹进 0–100。
16129
+ *
16130
+ * ⚠️ **这一步是必需的**:`tokens.css` 只为 `data-contrast` 的 0 / 10 / … / 100
16131
+ * 十档写了规则(50 不写 = 出厂),一个 63 落上去**一条规则也不命中** ——
16132
+ * 表现是「滑杆拖了但没反应」。判据在 `web/src/theme/visual.ts` 的 `snapContrast`。
16133
+ */
16134
+ declare function snapAppearanceContrast(value: number): number;
16135
+ /**
16136
+ * 盘上(或响应里)那一份 → 当前这一档的生效值。
16137
+ *
16138
+ * @param theme 当前生效档。**只有强调色需要它**(深色档的悬停方向相反)
16139
+ */
16140
+ declare function resolveAppearanceVisual(source: AppearanceVisualSource, theme: AppearanceEffectiveTheme): ResolvedAppearanceVisual;
16141
+ /**
16142
+ * 该落在根元素上的属性。**只含真的该落的那些**(缺省不落),且以 `data-*` 全称
16143
+ * 为键 —— 让宿主直接 `setAttribute`,不用记 `dataset` 那套驼峰转写。
16144
+ *
16145
+ * ⚠️ **自定义强调色时这里没有 `data-accent`**,那四个值在
16146
+ * {@link appearanceVisualCss} 里当行内变量给。预设色为什么反过来(走属性不走行内)
16147
+ * 判据在 `web/src/theme/visual.ts` 的 `applyAccent`:`tokens.css` 给每个预设
16148
+ * 写死了一整套、且深浅两档不同,现推只会得到「浅色档的值也用在深色档上」。
16149
+ */
16150
+ declare function appearanceRootAttributes(resolved: ResolvedAppearanceVisual): Record<string, string>;
16151
+ /**
16152
+ * 该落成**行内变量**的那几格,一格一格给出来。
16153
+ *
16154
+ * ## 🔴 为什么是「一对一对」而不是一段 CSS 文本
16155
+ *
16156
+ * 这一段原来只导出一个「拼好的 CSS 块」,挂在 `html { … }` 上。**2026-10-20 真机
16157
+ * 一验就发现它是错的**:`tokens.css` 里 `[data-theme='dark'] { --accent: #339cff }`
16158
+ * 的特异度是 (0,1,1),而裸 `html` 是 (0,0,1) —— **tokens.css 那一份赢**,用户选的
16159
+ * 自定义强调色在深色档上被覆盖成缺省蓝。表现是「选了紫色,深色下还是蓝的」。
16160
+ *
16161
+ * 正确的形态就是 epoch 第一方界面用的那一种(`web/src/theme/visual.ts` 的
16162
+ * `applyAccent` / `applySurface`):**行内 style**。它的优先级高于任何选择器,
16163
+ * 不跟注入顺序、不跟特异度、不跟将来 tokens.css 加什么新规则。
16164
+ *
16165
+ * 所以这里是「名字 → 值」的清单,宿主逐格 `style.setProperty` 就是对的;
16166
+ * {@link appearanceVisualCss} 只是把同一份清单渲染成文本(给不跑脚本的宿主,
16167
+ * 那一档的选择器已经抬到能压过 tokens.css)。
16168
+ */
16169
+ declare function appearanceInlineVars(resolved: ResolvedAppearanceVisual): Record<string, string>;
16170
+ /**
16171
+ * 同一份清单渲染成一段可以直接注入的 CSS(给**不跑脚本**的宿主)。
16172
+ *
16173
+ * ⚠️ **选择器是 `html[data-theme='<档>']`,不是裸 `html`** —— 判据在
16174
+ * {@link appearanceInlineVars} 的 🔴 上:裸 `html` 会输给 tokens.css 的
16175
+ * `[data-theme='dark']`,表现是「自定义强调色在深色档上不生效」。
16176
+ * 抬到这里之后特异度是 (0,1,1),和 tokens.css 那一段持平,而**注入的在后面**
16177
+ * —— 同特异度下后出现的赢。
16178
+ *
16179
+ * 空的时候返回一段注释而不是空串 —— 宿主那边「注入了但还是不对」时,
16180
+ * 看得到一句「用户一格都没改」比看一段空白快。
16181
+ *
16182
+ * @example
16183
+ * ```css
16184
+ * /* epoch appearance (dark) - generated by appearanceVisualCss *\/
16185
+ * html[data-theme='dark'] {
16186
+ * --bg-canvas: #181818;
16187
+ * --accent: #8f5cf0;
16188
+ * }
16189
+ * ```
16190
+ */
16191
+ declare function appearanceVisualCss(resolved: ResolvedAppearanceVisual): string;
16192
+
16193
+ /**
16194
+ * 强调色的色彩换算(2026-10-20 从 `web/src/theme/color.ts` 搬来)。
16195
+ *
16196
+ * ## 为什么它在 protocol 而不在 web
16197
+ *
16198
+ * 这套换算原来只服务设置页的取色器(`web` 是 `private: true`,别人 import
16199
+ * 不到)。2026-10-20 起嵌入宿主也要它:用户选了自定义强调色时,那一套
16200
+ * `--accent` / `-hover` / `-press` / `-ink` 得由宿主自己落在壳上,而
16201
+ * 「深色档提亮、浅色档压深」这条判据**只能有一份** —— 抄一份到宿主里,
16202
+ * 升级时两边各改一半的表现是「宿主和 iframe 里的按钮悬停色不一样」,
16203
+ * 而这种漂没有人会去查。
16204
+ *
16205
+ * protocol 是唯一一处「宿主够得到、又不许有 I/O」的地方,判据同
16206
+ * `wire-appearance.ts` 文件头第一节那张表。
16207
+ *
16208
+ * ## 只搬了纯函数
16209
+ *
16210
+ * `pointToSv` / `pointToHue`(取色器那两个拖拽落点)留在 web:它们的入参是
16211
+ * `DOMRect`,宿主那边没有这个类型。搬过来只会让 protocol 依赖 DOM 类型。
16212
+ */
16213
+ /** HSV。H 是 0–360,S / V 是 0–100 */
16214
+ interface Hsv {
16215
+ h: number;
16216
+ s: number;
16217
+ v: number;
16218
+ }
16219
+ /**
16220
+ * HSV → `#rrggbb`。
16221
+ *
16222
+ * @param hsv 三个分量都会被夹进合法区间(拖拽时会短暂越界)
16223
+ */
16224
+ declare function hsvToHex(hsv: Hsv): string;
16225
+ /**
16226
+ * `#rrggbb` → HSV。
16227
+ *
16228
+ * ⚠️ **S = 0 时 H 回 0**(灰色没有色相)。这正是取色器要自己留一份 H 的原因 ——
16229
+ * 判据在 `web/src/theme/color.ts` 的文件头。
16230
+ */
16231
+ declare function hexToHsv(hex: string): Hsv;
16232
+ /** 相对亮度(WCAG)。只用来挑墨色,不参与门禁 */
16233
+ declare function relativeLuminance(hex: string): number;
16234
+ /**
16235
+ * 把一个自定义颜色推成它那一套 token(`--accent` / `-hover` / `-press` / `-ink`)。
16236
+ *
16237
+ * ## 为什么不是直接把用户选的那个值写进 `--accent`
16238
+ *
16239
+ * 那张皮上有四处同时读强调色:**当填充**(按钮底)、**当字**(链接、强调文本)、
16240
+ * 悬停态、按下态,外加一格压在填充上的墨色(`--accent-ink`)。只给一个值的话,
16241
+ * 悬停和按下两档要么没有(按钮不动),要么和静止态一模一样(看不出按下去了)。
16242
+ *
16243
+ * 做法:静止态用用户选的色;悬停往对比度更高的方向挪一格,按下再挪一格;
16244
+ * 墨色按相对亮度在近黑 / 白之间挑一个。**这三个推导都是保守的** ——
16245
+ * 用户选了一个压根读不清的色时,我们**不改他的选择**(那是他明确要的自由),
16246
+ * 只是让悬停和按下有反馈。
16247
+ *
16248
+ * @param hex 用户选的色
16249
+ * @param dark 当前是不是深色档(深色档的悬停是**提亮**,浅色档是**压深**)
16250
+ */
16251
+ declare function accentScale(hex: string, dark: boolean): {
16252
+ base: string;
16253
+ hover: string;
16254
+ press: string;
16255
+ ink: string;
16256
+ };
16257
+
15962
16258
  /**
15963
16259
  * 此刻生效的那个选择,投影成网线上那一份。和 core 的 `ModelSelection` 逐字同形。
15964
16260
  *
@@ -17838,4 +18134,4 @@ declare const SECRET_SERVICE = "epoch-agent";
17838
18134
  */
17839
18135
  declare const MCP_DATA_KEY_NAME = "mcp-auth-data-key";
17840
18136
 
17841
- 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_DIFF_TREE_WIDTH, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, 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 AppearanceLang, type AppearanceModePatch, type AppearanceMotion, type AppearanceTheme, type AppearanceUiFont, 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 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 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, apiKeyEnvVar, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, 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, resolveHostText, sequenceId, sessionPartSummary, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
18137
+ 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_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, 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 };
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;
@@ -1648,6 +1649,189 @@ function isAppearanceModePatch(value) {
1648
1649
  var WIRE_APPEARANCE_RESPONSE_FIELDS = wireFields()({
1649
1650
  ok: true
1650
1651
  });
1652
+ // src/appearance-color.ts
1653
+ function hsvToHex(hsv) {
1654
+ const h = (hsv.h % 360 + 360) % 360;
1655
+ const s = Math.min(100, Math.max(0, hsv.s)) / 100;
1656
+ const v = Math.min(100, Math.max(0, hsv.v)) / 100;
1657
+ const c = v * s;
1658
+ const x = c * (1 - Math.abs(h / 60 % 2 - 1));
1659
+ const m = v - c;
1660
+ const seg = Math.floor(h / 60) % 6;
1661
+ const [r, g, b] = [
1662
+ [c, x, 0],
1663
+ [x, c, 0],
1664
+ [0, c, x],
1665
+ [0, x, c],
1666
+ [x, 0, c],
1667
+ [c, 0, x]
1668
+ ][seg];
1669
+ const to = (one) => Math.round((one + m) * 255).toString(16).padStart(2, "0");
1670
+ return `#${to(r)}${to(g)}${to(b)}`;
1671
+ }
1672
+ function hexToHsv(hex) {
1673
+ if (!isHexColor(hex)) return { h: 0, s: 0, v: 0 };
1674
+ const r = parseInt(hex.slice(1, 3), 16) / 255;
1675
+ const g = parseInt(hex.slice(3, 5), 16) / 255;
1676
+ const b = parseInt(hex.slice(5, 7), 16) / 255;
1677
+ const max = Math.max(r, g, b);
1678
+ const min = Math.min(r, g, b);
1679
+ const d = max - min;
1680
+ let h = 0;
1681
+ if (d !== 0) {
1682
+ if (max === r) h = (g - b) / d % 6;
1683
+ else if (max === g) h = (b - r) / d + 2;
1684
+ else h = (r - g) / d + 4;
1685
+ h *= 60;
1686
+ if (h < 0) h += 360;
1687
+ }
1688
+ return { h, s: max === 0 ? 0 : d / max * 100, v: max * 100 };
1689
+ }
1690
+ function relativeLuminance(hex) {
1691
+ if (!isHexColor(hex)) return 0;
1692
+ const channel = (v) => {
1693
+ const x = v / 255;
1694
+ return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;
1695
+ };
1696
+ return 0.2126 * channel(parseInt(hex.slice(1, 3), 16)) + 0.7152 * channel(parseInt(hex.slice(3, 5), 16)) + 0.0722 * channel(parseInt(hex.slice(5, 7), 16));
1697
+ }
1698
+ function accentScale(hex, dark) {
1699
+ const hsv = hexToHsv(hex);
1700
+ const shift = (delta) => hsvToHex({ ...hsv, v: Math.min(100, Math.max(0, hsv.v + (dark ? delta : -delta * 0.8))) });
1701
+ return {
1702
+ base: hex,
1703
+ hover: shift(8),
1704
+ press: shift(16),
1705
+ ink: relativeLuminance(hex) > 0.5 ? "#0e1217" : "#ffffff"
1706
+ };
1707
+ }
1708
+ // src/appearance-visual.ts
1709
+ var APPEARANCE_ROOT_ATTRIBUTES = [
1710
+ "data-theme",
1711
+ "data-accent",
1712
+ "data-font-size",
1713
+ "data-code-font-size",
1714
+ "data-ui-font",
1715
+ "data-code-font",
1716
+ "data-motion",
1717
+ "data-translucent-sidebar",
1718
+ "data-contrast",
1719
+ "data-background"
1720
+ ];
1721
+ var APPEARANCE_DEFAULT_FONT_SIZE = 14;
1722
+ var APPEARANCE_DEFAULT_CODE_FONT_SIZE = 12;
1723
+ function snapAppearanceContrast(value) {
1724
+ const snapped = Math.round(value / 10) * 10;
1725
+ return Math.min(APPEARANCE_CONTRAST.max, Math.max(APPEARANCE_CONTRAST.min, snapped));
1726
+ }
1727
+ function resolveAppearanceVisual(source, theme) {
1728
+ const outer = pickOuter(source);
1729
+ const patch = source.perMode === true ? pickPatch(theme === "light" ? source.light : source.dark) : void 0;
1730
+ if (!patch) return { ...outer, theme };
1731
+ return { ...overlay(outer, patch), theme };
1732
+ }
1733
+ function pickOuter(source) {
1734
+ const background = isAppearanceBackground(source.background) ? source.background : void 0;
1735
+ return {
1736
+ accent: isAppearanceAccentValue(source.accent) ? source.accent : "default",
1737
+ ...isAppearanceThemeName(source.themeName) ? { themeName: source.themeName } : {},
1738
+ ...isHexColor(source.canvasColor) ? { canvasColor: source.canvasColor } : {},
1739
+ ...isHexColor(source.inkColor) ? { inkColor: source.inkColor } : {},
1740
+ ...isHexColor(source.saidColor) ? { saidColor: source.saidColor } : {},
1741
+ fontSize: isAppearanceFontSize(source.fontSize) ? source.fontSize : APPEARANCE_DEFAULT_FONT_SIZE,
1742
+ codeFontSize: isAppearanceCodeFontSize(source.codeFontSize) ? source.codeFontSize : APPEARANCE_DEFAULT_CODE_FONT_SIZE,
1743
+ uiFont: isAppearanceUiFont(source.uiFont) ? source.uiFont : "system",
1744
+ codeFont: isAppearanceCodeFont(source.codeFont) ? source.codeFont : "system",
1745
+ reduceMotion: isAppearanceMotion(source.reduceMotion) ? source.reduceMotion : "system",
1746
+ translucentSidebar: normalizeAppearanceTranslucent(source.translucentSidebar) ?? APPEARANCE_TRANSLUCENT.default,
1747
+ contrast: snapAppearanceContrast(isAppearanceContrast(source.contrast) ? source.contrast : 50),
1748
+ background: background && background.kind !== "none" ? background : void 0
1749
+ };
1750
+ }
1751
+ function pickPatch(value) {
1752
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
1753
+ const raw = value;
1754
+ const patch = {};
1755
+ if (isAppearanceAccentValue(raw["accent"])) patch.accent = raw["accent"];
1756
+ if (isAppearanceThemeName(raw["themeName"])) patch.themeName = raw["themeName"];
1757
+ if (isHexColor(raw["canvasColor"])) patch.canvasColor = raw["canvasColor"];
1758
+ if (isHexColor(raw["inkColor"])) patch.inkColor = raw["inkColor"];
1759
+ if (isHexColor(raw["saidColor"])) patch.saidColor = raw["saidColor"];
1760
+ if (isAppearanceUiFont(raw["uiFont"])) patch.uiFont = raw["uiFont"];
1761
+ if (isAppearanceCodeFont(raw["codeFont"])) patch.codeFont = raw["codeFont"];
1762
+ if (isAppearanceFontSize(raw["fontSize"])) patch.fontSize = raw["fontSize"];
1763
+ if (isAppearanceCodeFontSize(raw["codeFontSize"])) patch.codeFontSize = raw["codeFontSize"];
1764
+ if (isAppearanceBackground(raw["background"])) patch.background = raw["background"];
1765
+ return patch;
1766
+ }
1767
+ function overlay(outer, patch) {
1768
+ return {
1769
+ accent: patch.accent ?? outer.accent,
1770
+ ...(patch.themeName ?? outer.themeName) !== void 0 ? { themeName: patch.themeName ?? outer.themeName } : {},
1771
+ ...(patch.canvasColor ?? outer.canvasColor) !== void 0 ? { canvasColor: patch.canvasColor ?? outer.canvasColor } : {},
1772
+ ...(patch.inkColor ?? outer.inkColor) !== void 0 ? { inkColor: patch.inkColor ?? outer.inkColor } : {},
1773
+ ...(patch.saidColor ?? outer.saidColor) !== void 0 ? { saidColor: patch.saidColor ?? outer.saidColor } : {},
1774
+ fontSize: patch.fontSize ?? outer.fontSize,
1775
+ codeFontSize: patch.codeFontSize ?? outer.codeFontSize,
1776
+ uiFont: patch.uiFont ?? outer.uiFont,
1777
+ codeFont: patch.codeFont ?? outer.codeFont,
1778
+ reduceMotion: outer.reduceMotion,
1779
+ translucentSidebar: outer.translucentSidebar,
1780
+ contrast: outer.contrast,
1781
+ background: patch.background ?? outer.background
1782
+ };
1783
+ }
1784
+ function appearanceRootAttributes(resolved) {
1785
+ const attrs = { "data-theme": resolved.theme };
1786
+ if (isAppearanceAccent(resolved.accent) && resolved.accent !== "default") {
1787
+ attrs["data-accent"] = resolved.accent;
1788
+ }
1789
+ if (resolved.fontSize !== APPEARANCE_DEFAULT_FONT_SIZE) {
1790
+ attrs["data-font-size"] = String(resolved.fontSize);
1791
+ }
1792
+ if (resolved.codeFontSize !== APPEARANCE_DEFAULT_CODE_FONT_SIZE) {
1793
+ attrs["data-code-font-size"] = String(resolved.codeFontSize);
1794
+ }
1795
+ if (resolved.uiFont !== "system") attrs["data-ui-font"] = resolved.uiFont;
1796
+ if (resolved.codeFont !== "system") attrs["data-code-font"] = resolved.codeFont;
1797
+ if (resolved.reduceMotion !== "system") attrs["data-motion"] = resolved.reduceMotion;
1798
+ if (resolved.translucentSidebar < APPEARANCE_TRANSLUCENT.default) {
1799
+ attrs["data-translucent-sidebar"] = String(resolved.translucentSidebar);
1800
+ }
1801
+ if (resolved.contrast !== 50) attrs["data-contrast"] = String(resolved.contrast);
1802
+ if (resolved.background !== void 0) attrs["data-background"] = "1";
1803
+ return attrs;
1804
+ }
1805
+ function appearanceInlineVars(resolved) {
1806
+ const vars = {};
1807
+ if (resolved.canvasColor !== void 0) vars["--bg-canvas"] = resolved.canvasColor;
1808
+ if (resolved.inkColor !== void 0) vars["--ink"] = resolved.inkColor;
1809
+ if (resolved.saidColor !== void 0) vars["--bg-said"] = resolved.saidColor;
1810
+ if (resolved.translucentSidebar < APPEARANCE_TRANSLUCENT.default) {
1811
+ vars["--chrome-alpha"] = `${resolved.translucentSidebar}%`;
1812
+ }
1813
+ if (isHexColor(resolved.accent)) {
1814
+ const scale = accentScale(resolved.accent, resolved.theme === "dark");
1815
+ vars["--accent"] = scale.base;
1816
+ vars["--accent-hover"] = scale.hover;
1817
+ vars["--accent-press"] = scale.press;
1818
+ vars["--accent-ink"] = scale.ink;
1819
+ }
1820
+ return vars;
1821
+ }
1822
+ function appearanceVisualCss(resolved) {
1823
+ const vars = appearanceInlineVars(resolved);
1824
+ const decls = Object.entries(vars).map(([name, value]) => ` ${name}: ${value};`);
1825
+ if (decls.length === 0) {
1826
+ return `/* epoch appearance (${resolved.theme}): no user overrides, tokens.css defaults apply */
1827
+ `;
1828
+ }
1829
+ return `/* epoch appearance (${resolved.theme}) - generated by appearanceVisualCss */
1830
+ html[data-theme='${resolved.theme}'] {
1831
+ ${decls.join("\n")}
1832
+ }
1833
+ `;
1834
+ }
1651
1835
  // src/wire-model.ts
1652
1836
  var WIRE_MODEL_SELECTION_FIELDS = wireFields()({
1653
1837
  provider: true,
@@ -2053,4 +2237,4 @@ var COMPLIANCE_ACTIONS = ["block", "mask", "warn", "off"];
2053
2237
  var SECRET_SERVICE = "epoch-agent";
2054
2238
  var MCP_DATA_KEY_NAME = "mcp-auth-data-key";
2055
2239
 
2056
- 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_DIFF_TREE_WIDTH, APPEARANCE_FONT_SIZE, APPEARANCE_LANGS, APPEARANCE_MOTION, 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, apiKeyEnvVar, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, cronTimes, diagnosticToLine, entryDisplayName, entryRef, entrySecretName, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, 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, resolveHostText, sequenceId, sessionPartSummary, splitUploadMulti, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
2240
+ 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_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, 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epoch-agent/protocol",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "private": false,
5
5
  "description": "epoch-agent 契约层:工具 / 事件 / 权限 / 插件的类型定义,零运行时依赖",
6
6
  "repository": {