@epoch-agent/protocol 0.17.0 → 0.19.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
@@ -4907,7 +4907,36 @@ type NoticeCode =
4907
4907
  *
4908
4908
  * ⚠️ 这一档**压过** `persist-deferred`:有东西真丢了的时候先说那件事。
4909
4909
  */
4910
- | 'persist-dropped';
4910
+ | 'persist-dropped'
4911
+ /**
4912
+ * 记忆里有条目**命中注入模式**,它没有进上下文(2026-09-28)。
4913
+ *
4914
+ * ## 这一帧补的是一个「数据没了而没人知道」的洞
4915
+ *
4916
+ * 命中的原文今天**留在 `MEMORY.md` 里不动**(`MemoryManager` 只在渲染给模型的
4917
+ * 那一份上换成占位符,判据在它的 `blockedPlaceholder()` 上)—— 但模型看到的
4918
+ * 是占位符,而用户手上那份文件他未必会去翻。这一帧是**用户**那一侧的线索:
4919
+ * 「有 N 条没进上下文,原文在文件里,你确认过就可以删」。
4920
+ *
4921
+ * ⚠️ 为什么要说而不是悄悄丢掉:同一件事在 2026-09-28 之前是**反着做的** ——
4922
+ * 命中条目会在下一次落盘时从 `MEMORY.md` 里被删掉,唯一记录进了一个没有任何
4923
+ * 读者的数组。参考实现(Hermes `tools/memory_tool_store.py`)的判据是
4924
+ * 「dropping them silently would hide the attack」:既不能喂给模型,也不能瞒着人。
4925
+ */
4926
+ | 'memory-blocked'
4927
+ /**
4928
+ * 记忆库到九成满了(2026-09-28)。
4929
+ *
4930
+ * ## 为什么值得一帧
4931
+ *
4932
+ * 满了之后 `add` 会被拒,模型拿到的是一句「先合并再重试」——**那是已经撞墙
4933
+ * 之后**。这一帧说的是撞墙之前:现在清一清,下一轮就不用挤。
4934
+ *
4935
+ * ⚠️ 只报一次(进程内),而且是**跨过阈值**那一刻报 —— 每轮重复同一句话
4936
+ * 等于把通知当成噪音训练用户忽略它。节流的状态在
4937
+ * `MemoryManager.quotaWarned` 上,判据也在那儿。
4938
+ */
4939
+ | 'memory-quota';
4911
4940
  type AgentEventType = AgentEvent['type'];
4912
4941
  /** 取出某个具体事件的类型,例如 AgentEventOf<'tool-call'> */
4913
4942
  type AgentEventOf<T extends AgentEventType> = Extract<AgentEvent, {
@@ -6691,6 +6720,80 @@ type WireHubEvent =
6691
6720
  */
6692
6721
  | {
6693
6722
  type: 'sessions-changed';
6723
+ }
6724
+ /**
6725
+ * **插件那张表变了**(2026-09-24)—— 装 / 更新 / 卸载、市场目录重读过、加 / 移除市场。
6726
+ *
6727
+ * ## 它治的是「不是这一页动的手」
6728
+ *
6729
+ * 插件页在这一帧之前只在**自己动手**之后重取(装完、卸完、按了刷新)。而市场卡片上
6730
+ * 那张宿主菜单([plugin-menu.ts](./plugin-menu.ts))把「删掉一条」交给了宿主:
6731
+ * 宿主在自己的后端删完、调一句 `runtime.plugins.refresh()` —— 盘上那份目录已经变了,
6732
+ * 开着的那一页却一无所知,被删的那张卡一直挂着,而用户刚按过「删除」。
6733
+ * 产地是 runtime 的 `PluginControl.onChange`,服务端订阅它、在这儿发一帧。
6734
+ *
6735
+ * ## 纯失效信号,**不带载荷**
6736
+ *
6737
+ * 形状和理由逐字同 `sessions-changed`:收到它的客户端回去打 `GET /api/plugins`。
6738
+ *
6739
+ * ## ⚠️ 它是**进程级**的:信封上**没有 `sessionId`**
6740
+ *
6741
+ * 插件装在 `~/.epoch/plugins/`,一个进程一份(判据同 `server/src/plugin.ts`
6742
+ * 「进程级,所以 URL 上没有 `:id`」)。拿某个会话的 id 填上的话,web 那一侧会把它
6743
+ * 当成那段会话的帧**停进 `parked`**,而 `parkFrame` 丢掉它不认的 Hub 事件 ——
6744
+ * 于是除了正看着那一段的标签页,谁都收不到。信封上那一格本来就是可选的
6745
+ * (连接级帧也不带),缺席在这儿说的是「它不属于任何一段会话」。
6746
+ *
6747
+ * ⚠️ **自己动手的那一页也会收到它**,于是装完那一下会多读一次列表。刻意不去重:
6748
+ * 那一发是纯本地读,而为了省它去给这一帧加一格「谁动的手」,就得让浏览器先证明
6749
+ * 「那一下是我」—— 多一个会错的判断,换一次本来就便宜的 GET。
6750
+ */
6751
+ | {
6752
+ type: 'plugins-changed';
6753
+ }
6754
+ /**
6755
+ * **宿主把一段字送进了某段会话的输入框**(2026-09-28)。
6756
+ *
6757
+ * ## 它治的是「宿主够不着那张页」
6758
+ *
6759
+ * 宿主(Electron / VS Code 那一类)今天能用 REST 建会话、发消息,**但改不动这张
6760
+ * 页的状态** —— 草稿只在内存里(`composer/draft.ts` 明写不落盘),而入站那条路
6761
+ * 刻意关着(「我们不监听 `message`」,见 `docs/EMBEDDING.md` §9 末尾)。于是
6762
+ * 「在我的界面里点一个动作 → epoch 窗口里新开一段会话、输入框已经填好那句话」
6763
+ * 说不出口。这一帧是那条路的下半截:`POST /api/host/compose` 记一笔,往这条流上
6764
+ * 发一帧;开着的页面切过去、把字填进框,宿主说了 `autoSend` 的还要按下发送。
6765
+ *
6766
+ * ## ⚠️ 客户端**不许**按「是不是正看着那段会话」把它过滤掉
6767
+ *
6768
+ * 理由逐字同 `sessions-changed`:信封上那个 `sessionId` 是「**哪一段**」,不是这一
6769
+ * 帧的收件人 —— 而这一段通常是一段你**还没切过去**的会话,那正是这一帧的全部意义。
6770
+ * web 那一侧因此在「别的会话的帧进 `parked`」那句早退**之前**就把它拦下来
6771
+ * (`reducer.ts` 里和 `sessions-changed` 并列的那一支)。
6772
+ *
6773
+ * ## 三条投递路径,一个 `id`
6774
+ *
6775
+ * 同一笔 compose 可能从三条路各到一次(形状同 `approval-request` 的「广播 +
6776
+ * 补拉各给一次」),客户端**按 `id` 去重**:① 页面已经开着 → 就是这一帧;
6777
+ * ② 页面正落在「`GET /api/config` 已经回来、SSE 还没接上」那几百毫秒里 →
6778
+ * 开流那一刻补投(服务端把还没认领的那几笔发给这一个连接);③ 页面比 compose
6779
+ * 晚开 → `GET /api/config` 的 `hostCompose`。
6780
+ *
6781
+ * ## `autoSend` 是一次性的,而**兑现它的是页面**
6782
+ *
6783
+ * 页面向 `POST /api/host/compose/:id/take` 认领,只有认领到的那一页真按下发送
6784
+ * —— 多开两个标签页时两页都会切、都会填,但只有一个 `submit()`。
6785
+ * ⚠️ **认领挡的不只是多标签页**:这一帧和其它 Hub 事件一样进环形缓冲,断线重连
6786
+ * 带 `Last-Event-ID` 补帧时会**再投一次**,没有认领的话一次 Wi-Fi 抖动就能把同一
6787
+ * 句话发两遍 —— 而那种重复在屏幕上是「用户手快发了两次」的形状,查不出来。
6788
+ *
6789
+ * ⚠️ **认领不是「一定发得出去」的保证**,它只保证「不会重复发」:认领之后
6790
+ * `submit()` 还可能因为只读 / 输入框还锁着而早退。那时字留在框里,由人来按。
6791
+ */
6792
+ | {
6793
+ type: 'host-compose';
6794
+ id: string;
6795
+ text: string;
6796
+ autoSend: boolean;
6694
6797
  };
6695
6798
  /** 信封里能装的所有东西 */
6696
6799
  type WireEvent = WireAgentEvent | WireHubEvent;
@@ -6750,7 +6853,11 @@ interface WireEnvelope<E extends WireTaggedEvent = WireEvent> {
6750
6853
  * 这一帧属于哪个会话。
6751
6854
  *
6752
6855
  * **连接级帧(`connected` / `stream-reset`)没有它** —— 它们描述的是这条连接,
6753
- * 不是某个会话。其余每一帧都必有。
6856
+ * 不是某个会话。
6857
+ *
6858
+ * ⚠️ **进程级的广播帧也没有它**(2026-09-24 起只有 `plugins-changed` 一种):
6859
+ * 它进环形缓冲、占广播序号,但说的事不属于任何一段会话。在那之前这一句写的是
6860
+ * 「其余每一帧都必有」—— 读到这儿的人别按那句旧话去断言。
6754
6861
  */
6755
6862
  sessionId?: string;
6756
6863
  /** 服务端产生这条事件的时刻(epoch 毫秒) */
@@ -7924,6 +8031,32 @@ interface WireConfigResponse {
7924
8031
  * ⚠️ 它是**可选键**,所以故意不在 {@link WIRE_CONFIG_FIELDS} 上(见那张表上的 ⚠️)。
7925
8032
  */
7926
8033
  lastSessionId?: string;
8034
+ /**
8035
+ * **宿主要界面把它带去的那一段会话**(2026-09-28)—— 见 {@link WireHostCompose}。
8036
+ *
8037
+ * ## 它和 `lastSessionId` 的分工
8038
+ *
8039
+ * 两者都在答「首屏开哪一段」,但**是谁在说**不一样:`lastSessionId` 是**用户
8040
+ * 上次停在哪**(界面自己报的),这一格是**宿主现在要你看哪段**(宿主的指令)。
8041
+ * 优先级因此是 URL > `hostCompose` > `lastSessionId` > `sessionId`
8042
+ * —— URL 上明写了 `/s/<id>` 时前两者都不参与(那是用户自己点开的)。
8043
+ *
8044
+ * ## ⚠️ 它存在只为一件事:**窗口还没开着**
8045
+ *
8046
+ * 页面已经开着时这一笔走 SSE 帧,根本等不到 `/config`。而页面比 compose 晚开
8047
+ * 的时候,首屏的会话选择是**一次性的**(读的就是这一发),落在别处会让界面先画
8048
+ * 一段别的会话再跳——一次看得见的闪烁。
8049
+ *
8050
+ * ## ⚠️ 它**只在这一笔还没被任何页面认领时才在**
8051
+ *
8052
+ * 认领过(或者过了 TTL)之后服务端整个不带这个键,所以「宿主想让我看的那段」
8053
+ * 不会在十分钟内的每一次刷新里反复把人拽回去。没记过、认领过、过期了,
8054
+ * **三种都是「没有这个键」** —— 客户端那一侧的写法因此只有一句
8055
+ * `hostCompose?.sessionId ?? lastSessionId ?? sessionId`,没有第二段兜底。
8056
+ *
8057
+ * ⚠️ 它同样是**可选键**,同样不在 {@link WIRE_CONFIG_FIELDS} 上。
8058
+ */
8059
+ hostCompose?: WireHostCompose;
7927
8060
  }
7928
8061
  declare const WIRE_CONFIG_FIELDS: WireFields<WireConfigResponse>;
7929
8062
  /**
@@ -7956,6 +8089,130 @@ interface WireLastSessionResponse {
7956
8089
  ok: true;
7957
8090
  }
7958
8091
  declare const WIRE_LAST_SESSION_RESPONSE_FIELDS: WireFields<WireLastSessionResponse>;
8092
+ /**
8093
+ * 一笔「待兑现的填充」—— 宿主说「把这段字放进那段会话的输入框,并且把界面切过去」。
8094
+ *
8095
+ * ## 它治的是「宿主够不着那张页」
8096
+ *
8097
+ * 宿主能用 REST 建会话({@link WireCreateSessionRequest})、发消息
8098
+ * (`POST /api/sessions/:id/messages`),**但改不动那张页的状态**:草稿只在内存里,
8099
+ * 而入站那条路刻意关着(「我们不监听 `message`」,见 `docs/EMBEDDING.md` §9 末尾)。
8100
+ * 于是「在宿主自己的界面上点一个动作 → epoch 窗口里开一段会话、输入框里已经写好
8101
+ * 那句话」这件事说不出口。
8102
+ *
8103
+ * ## 三条投递路径,一个 `id`
8104
+ *
8105
+ * 页面已经开着走 SSE 帧(`WireHubEvent` 的 `host-compose`),页面比它晚开走
8106
+ * {@link WireConfigResponse.hostCompose},而正落在「`/api/config` 已经回来、
8107
+ * SSE 还没接上」那几百毫秒里的那一笔由服务端在**开流那一刻补投** —— 三条路各可能
8108
+ * 到达一次,客户端**按 `id` 去重**(形状同 `approval-request` 的「广播 + 补拉」)。
8109
+ *
8110
+ * ## ⚠️ 它在服务端只在内存里,而且会过期
8111
+ *
8112
+ * 一笔待办活 `HOST_COMPOSE_TTL_MS`(十分钟),进程重启就没了。它是一笔「此刻」的
8113
+ * 投递,不是配置 —— 所以它没有落盘,也不该有:一个三天前的「帮我填这句话」在启动
8114
+ * 时自己冒出来,比丢掉它坏得多。
8115
+ */
8116
+ interface WireHostCompose {
8117
+ /** 认领与去重的键(`hc_…`)。**不是**会话 id,一笔会话可以先后有好几笔 */
8118
+ id: string;
8119
+ /** 这段字该进哪一段会话的输入框 */
8120
+ sessionId: string;
8121
+ /** 空串 = **只把界面切过去**,不填 */
8122
+ text: string;
8123
+ /**
8124
+ * 宿主说「填完直接发出去」。
8125
+ *
8126
+ * 兑现它的是**页面**(不是服务端):页面向 `POST /api/host/compose/:id/take`
8127
+ * 认领,认领到的那一页才按下发送。⚠️ **认领只保证「不会重复发」**,不保证
8128
+ * 「一定发得出去」—— 只读会话、输入框还锁着时 `submit()` 照旧早退,字留在框里。
8129
+ */
8130
+ autoSend: boolean;
8131
+ }
8132
+ /**
8133
+ * `POST /api/host/compose` 的请求。
8134
+ *
8135
+ * ## 目标会话二选一,都不给 = 引导会话那条老路
8136
+ *
8137
+ * - `sessionId`:**已经存在**的那一段(`Hub` 里活着,或者会话库里还有这一行
8138
+ * ——判据逐字同 `PUT /api/last-session`)。给了它就不许再给下面那四格;
8139
+ * - 或者 `workspace` / `create` / `role` / `deferWorkspace`:**逐字**同
8140
+ * {@link WireCreateSessionRequest},服务端走的是同一个函数。这不是巧合 ——
8141
+ * 抄第二份的话,`deferWorkspace` 那两道 400 和「建完要广播一帧
8142
+ * `sessions-changed`」迟早只长在一边。
8143
+ */
8144
+ interface WireHostComposeRequest {
8145
+ sessionId?: string;
8146
+ workspace?: string;
8147
+ create?: boolean;
8148
+ role?: string;
8149
+ deferWorkspace?: boolean;
8150
+ /**
8151
+ * 要填进输入框的那段字。
8152
+ *
8153
+ * **不给 = 只把界面切过去**(宿主想把用户带到某段会话上,不替他写任何东西)。
8154
+ * 给了就必须是**非空白**的字符串:空串一路走到发送那一刻才炸的话,宿主手上
8155
+ * 已经有了一个 200。
8156
+ */
8157
+ text?: string;
8158
+ /** `true` 而没给 `text` → 400(一句说不出口的请求,不该静默降级成「只切过去」) */
8159
+ autoSend?: boolean;
8160
+ }
8161
+ /**
8162
+ * 记下来了。**回执里没有 `text`** —— 不回声是刻意的:宿主刚发过来的那句话再原样
8163
+ * 送回去,等于给同一件事在网线上造第二份拷贝,而它会和帧/`/config` 上那两份慢慢走散。
8164
+ */
8165
+ interface WireHostComposeResponse {
8166
+ /** 该看的那一段(新建的就是新的那一段) */
8167
+ sessionId: string;
8168
+ /** 真的新建了吗(`false` = 复用了一段已经存在的) */
8169
+ created: boolean;
8170
+ /** 这一笔的认领与去重键 —— 页面上的每一发都要带着它回来 */
8171
+ composeId: string;
8172
+ /** 这一笔什么时候过期(epoch 毫秒)。过了这个点,帧和 `/config` 都不再给 */
8173
+ expiresAt: number;
8174
+ }
8175
+ /**
8176
+ * `GET /api/host/compose` —— **此刻还没被认领的那一笔**(没有就是 `null`)。
8177
+ *
8178
+ * ## 它补的是「页面正好卡在两条路中间」那一段
8179
+ *
8180
+ * 一笔 compose 有两条投递路径(开着的那一页走 SSE 帧,比它晚开的那一页走
8181
+ * `GET /api/config`),而**页面刚启动的那几十毫秒两条都不在**:`/config` 已经
8182
+ * 回来了、SSE 还没接上,这中间发出去的那一笔谁也接不住 —— 宿主拿到 200,
8183
+ * 屏幕上什么都没有。
8184
+ *
8185
+ * 治法不是给帧再加一条特例,而是本仓既有的那条规矩(`subscribe()` 的
8186
+ * `lastEventId` 那段注释):**新连接自己拉一次状态,流上只走增量**。
8187
+ * 页面在每一次连接变成 `open` 时(含断线重连)打这一发,拿到就按那一笔办事。
8188
+ *
8189
+ * ⚠️ 它是**读**,不是认领:同一笔可能同时被几个标签页读到,几页都会切过去、
8190
+ * 都会填 —— 要挡住重复的是 `take`,不是这一条。
8191
+ */
8192
+ interface WireHostComposeStateResponse {
8193
+ compose: WireHostCompose | null;
8194
+ }
8195
+ /**
8196
+ * `POST /api/host/compose/:id/take` —— 认领那一发自动发送。
8197
+ *
8198
+ * ## ⚠️ 被拒是 **200 + `ok:false`**,判据同 {@link WireGoalMutationResponse}
8199
+ *
8200
+ * 三档 `ok:false` 没有一个是故障,全是如实作答:`taken`(另一个标签页先认领了)、
8201
+ * `expired`(超过 TTL)、`unknown`(这个 id 服务端没发过,或者早被扫掉了)。
8202
+ *
8203
+ * ## 它**不是**「一定发得出去」的保证
8204
+ *
8205
+ * 它保证的是「**不会重复发**」:多开几个标签页时只有认领到的那一页会 `submit()`,
8206
+ * 而这一帧因为断线续传被重投时也不会把同一句话发第二遍(那种重复在屏幕上是
8207
+ * 「用户手快发了两次」的形状,查不出来)。认领之后 `submit()` 照旧可能因为只读 /
8208
+ * 输入框还锁着而早退 —— 那时字留在框里,由人来按。
8209
+ */
8210
+ type WireHostComposeTakeResponse = {
8211
+ ok: true;
8212
+ } | {
8213
+ ok: false;
8214
+ reason: 'taken' | 'expired' | 'unknown';
8215
+ };
7959
8216
  /**
7960
8217
  * 列表里的一行**和工作区的关系** —— 三档(决定 18;`unknown` 那一档是会话库 v7
7961
8218
  * 加的,2026-08-19)。
@@ -11154,202 +11411,106 @@ interface WireRoleRemoveResponse {
11154
11411
  declare const WIRE_ROLE_REMOVE_FIELDS: WireFields<WireRoleRemoveResponse>;
11155
11412
 
11156
11413
  /**
11157
- * 插件那一页的契约 —— 十四条端点(方案 59 §六 E2,2026-08-21;本地源与市场管理
11158
- * 2026-09-04 补,见下面第一节的**翻案**;上传 2026-09-08 补,见第一节之二;
11159
- * 落区 2026-09-11 补,见 {@link WirePluginStageRequest})。
11414
+ * 市场卡片右上角那张「⋯」菜单(2026-09-24)—— 宿主往每一张插件卡上挂自己的动作。
11160
11415
  *
11161
- * ```
11162
- * GET /api/plugins 装着的 + 市场里有什么 + 已加的市场 + pendingRestart + uploadEnabled
11163
- * POST /api/plugins/install/preview {ref} → 将安装什么,一个字节都不写
11164
- * POST /api/plugins/install {ref, token} → 真装
11165
- * POST /api/plugins/install/local/preview {path} → 同上,来源是本机一条目录
11166
- * POST /api/plugins/install/local {path, token} → 真装
11167
- * POST /api/plugins/update/preview {name} → 更新会带来什么
11168
- * POST /api/plugins/update {name, token} → 真更新
11169
- * POST /api/plugins/uninstall {name} → 卸载
11170
- * POST /api/plugins/marketplaces {source} → 加一个市场
11171
- * POST /api/plugins/marketplaces/remove {name} → 移除一个市场
11172
- * POST /api/plugins/upload/preview {path} → 会打包哪些文件,一个字节都不发
11173
- * POST /api/plugins/upload {path, token} → 打包 + 交给宿主
11174
- * POST /api/plugins/refresh {} → 让宿主重拉目录 + 回一份新列表
11175
- * POST /api/plugins/stage {path} 或字节 → 落地 + 解包 + 验清单 → 一条目录路径
11176
- * ```
11416
+ * 起因是一个嵌入宿主要的那件事:**当前用户自己上传的插件,由他自己决定删不删**。
11417
+ * 「这是不是他上传的」只有宿主答得出(epoch 不知道当前用户是谁),「删」发生在宿主
11418
+ * 自己的后端上 —— 两半都不在我们手里。于是这一格只给一个落点:宿主说每张卡上有哪几项,
11419
+ * 用户点了哪一项就告诉宿主,之后的事全归宿主。
11177
11420
  *
11178
- * 底座是 `EpochRuntime.plugins`(方案 59 PR-4 落的那一片,判据全文在
11179
- * `runtime/src/plugin-control.ts` 的文件头)。**这一层一条策略判断都没有** ——
11180
- * 谁能装、装什么、要不要重启,三个问题的答案全在那一片里,网线这一侧只是把它
11181
- * 转出来。⚠️ 唯一的例外是下面第二节那道闸,而它答的是一个 runtime 那一层**问不到**
11182
- * 的问题(「网线另一头是不是这台机器」)。
11421
+ * ## 两半,各在一处
11183
11422
  *
11184
- * ## 为什么不塞进 [wire-capability.ts](./wire-capability.ts)
11423
+ * | 那一半 | 在哪 | 谁决定 |
11424
+ * | ---------------- | ----------------------------------------------- | --------------- |
11425
+ * | 每张卡上有哪几项 | `HostMarketplaces.pluginMenu`(runtime,按条目调)| 宿主的代码 |
11426
+ * | 点了之后发生什么 | 一条 `postMessage`(这个文件) | 宿主的窗口 |
11185
11427
  *
11186
- * 判据逐字同 [wire-agent-role.ts](./wire-agent-role.ts) 从那儿分出来那次:那个文件
11187
- * 已经压过 500 行线,而**刀口按题目下不按行数** —— 那份答的是「能力页那三栏读什么」,
11188
- * 这一份答的是「怎么往这台机器上装一包扩展物」,而后者带着一整套预览形状 +
11189
- * 七档拒绝 + 一格 `pendingRestart`。
11428
+ * ⚠️ **第一半是一个按条目调的函数,不是一个配置键** —— 这是它和侧栏那两张宿主菜单
11429
+ * ([sidebar-menu.ts](./sidebar-menu.ts),`EpochConfig.sidebarMenu` / `userMenu`)
11430
+ * 唯一的形状差别。那两张是**整页一份**,写在配置文件里就够了;这一张是**每一条各一份**,
11431
+ * 而「这一条给不给删」要看这一条是谁传的 —— 一个静态的配置键表达不出来。
11190
11432
  *
11191
- * ---
11433
+ * ## 点下去发生什么:**逐字照侧栏那一条**
11192
11434
  *
11193
- * # 一、⚠️ 装进来的路**有两条,各自收一种东西**,第三种说不出口
11194
- *
11195
- * | 端点 | 收什么 | 真装的时候会发生什么 |
11196
- * | ----------------------- | --------------------- | ----------------------------- |
11197
- * | `install` | `<市场>/<插件>` | 看那条目录项,可能 clone / 拉包 |
11198
- * | `install/local` | 本机一条**绝对路径** | **只 `symlinkSync` 一下** |
11199
- * | 没有第三条 | — | — |
11200
- *
11201
- * {@link WirePluginInstallRequest} 上**没有 `source` 这个东西**,
11202
- * {@link WirePluginLocalRequest} 上**只有一条 `path`**。于是「给我一个
11203
- * `github:acme/x` 我就 clone」这件事在这两个形状下**都说不出口** ——
11204
- * 不是靠 review 盯住的,是编译期的事(同 `HostAgentRole` 少一个 `source`)。
11205
- *
11206
- * ## ⚠️ 这一节 2026-09-04 **翻过案**,原话和翻案的理由都记在这儿
11207
- *
11208
- * 原话是「**只收 `<市场>/<插件>`,收不了路径**」,`plugins.tsx` 的文件头上还有
11209
- * 配套的一句「**别在这儿加一个输入框**」。翻案的是**本地路径那一档**,
11210
- * 三条判据:
11211
- *
11212
- * 1. **它和远程不是一个量级的风险,而原来那条判据把两者合在一起判了。**
11213
- * `runtime/src/plugin-control.ts` 文件头第三节自己就把四种来源分成了两档:
11214
- * 本地目录 = `symlinkSync`,其余三种 = 起子进程或拉网。`allowRemote` 默认关
11215
- * 正是为了那三种。把「本地目录」和它们一起挡在网线外,挡掉的是那一档里**风险
11216
- * 最低**的一种;
11217
- * 2. **原来那条路在真实部署上是断的。** `epoch web --plugins` 传的是
11218
- * `{ sources: [] }`(判据在 CLI 那个 `pluginsOption` 上)—— 一台自己机器上
11219
- * 起的界面**没有任何预置市场**,而加市场当时只能在命令行上。于是「可视化装
11220
- * 一个插件」这句话在 CLI 宿主上从来没有成立过:那一页只能看,不能装。
11221
- * ⚠️ 这一条才是翻案的真正理由 —— 一道**只在没人走得到的路上生效**的闸门
11222
- * 不是安全性,是一个空转的判断;
11223
- * 3. **那道真闸门原地不动,而且它挡的正是这一条。** {@link WirePluginLocalRequest}
11224
- * 照样吃第二节那道 403(LAN 那一档下一律拒),于是「浏览器在别人机器上」那个
11225
- * 形态下这条路根本不存在。**本地路径这一档的全部前提是「网线另一头就是这台
11226
- * 机器」**,而那正是 `lanExposed` 那一格答的问题。
11227
- *
11228
- * 逐条对着今天那条最像的路(`POST /api/skills/import`):
11229
- *
11230
- * | 判据 | `skills/import` | `install` | `install/local` |
11231
- * | ---------------- | ------------------------- | -------------------- | -------------------- |
11232
- * | 能不能传字节 | 不能(只收路径) | 不能 | 不能 |
11233
- * | 能不能指任意路径 | **能** | **不能** | **能,但只限本地** |
11234
- * | 装之前有没有预览 | 有 | 有 | 有(**同一屏**) |
11235
- * | LAN 那一档 | 不挡 | **403** | **403** |
11236
- *
11237
- * ⚠️ **`install/local` 只收本地,且必须是绝对路径。** 一条
11238
- * `github:acme/x` 走到那条端点上会被判成 `not-local` 而不是「顺手当远程装了」——
11239
- * 判据在 {@link WirePluginLocalRequest} 上。相对路径同样拒:它会按**服务进程的
11240
- * cwd** 解析,而坐在浏览器前面的人根本不知道那是哪儿。
11241
- *
11242
- * ⚠️ 「清单」= `~/.epoch/marketplaces.json` 里那些,也就是**宿主预置的**加上
11243
- * **用户自己加的**。后者现在有两个入口(命令行那条 `epoch plugin marketplace add`
11244
- * 和 {@link WirePluginMarketplaceRequest}),而它们**是同一件事的两个入口,不是
11245
- * 两道闸门** —— 网线那条多吃一道 403,判据同上第 3 条。
11246
- *
11247
- * # 一之二、⚠️ 还有一条路是**往外**的(2026-09-08)
11248
- *
11249
- * | 端点 | 收什么 | 真按下去会发生什么 |
11250
- * | ---------------- | --------------------- | ---------------------------------------- |
11251
- * | `upload/preview` | 本机一条**绝对路径** | 走一遍目录,**一个字节都不发、连包都不打** |
11252
- * | `upload` | 同上 + `token` | 打成 `.zip` → 交给**宿主**的回调 |
11253
- *
11254
- * 三条性质:
11255
- *
11256
- * 1. **epoch 一个网络请求都不发。** 出口是宿主给的一个回调
11257
- * (`HostMarketplaces.upload`),不是一条我们去 POST 的 URL —— 判据全文在
11258
- * `runtime/src/host-marketplaces.ts` 的 `PluginUploadFn` 上(简版:给一条 URL
11259
- * 就得由我们定 multipart / 鉴权 / 重定向 / 回执四套契约,而那四个答案全在宿主
11260
- * 那一侧;更要紧的是 token 压根不该进到我们的进程里);
11261
- * 2. **`uploadEnabled` 那一格是这条路存在与否的全部凭据。** 宿主没给回调时
11262
- * 界面上那枚按钮整个不画,硬打这条端点拿到 `upload-unavailable`;
11263
- * 3. **预览那一段的清单,就是打包时喂给 `tar` 的那一份**(core 的 `planPack` →
11264
- * `packPlugin`,走 `tar -T --format zip`)。「用户看到的」和「真发出去的」在构造上是同一份,
11265
- * 不是两套规则各走一遍 —— 判据在 core `pack.ts` 的文件头第二节。
11266
- *
11267
- * ## ⚠️ 为什么预览那一屏必须**逐个列出文件名**,不能只给个数
11268
- *
11269
- * 装错了能卸,**发出去收不回来**。而这条路上最常见的一次事故不是「装错了」,
11270
- * 是**目录里有一份 `.env`**。所以 {@link WirePluginUploadPlan.files} 是全量清单
11271
- * 而不是一个 `count`,{@link WirePluginUploadPlan.suspicious} 还要把看起来像密钥的
11272
- * 那几条单独点名 —— 而**它们仍然在 `files` 里面**(静默剔除会让用户以为发出去的
11273
- * 是全量,判据在 core `pack.ts` 的文件头第四节)。
11274
- *
11275
- * # 二、⚠️ 闸门:**绑在回环之外时那十三条 POST 一律 403**
11276
- *
11277
- * > 这个数原来是「九条」,上传那两条 2026-09-08 加进来,刷新那一条 2026-09-10
11278
- * > 加进来(判据在 {@link WirePluginRefreshResponse} 第三节:它让**宿主**发一次
11279
- * > 出站请求,而这条路的前提是「网线另一头就是这台机器」)。**它们吃同一道闸,
11280
- * > 而且是这一整张表里最该吃的两条**:它们读这台机器上任意一条目录、把内容
11281
- * > **发到外面去**。放行的话,一个 LAN 上的人能指着 `~/.ssh` 说「上传它」。
11282
- * >
11283
- * > 落区那一条 2026-09-11 加进来({@link WirePluginStageRequest})。⚠️ 它最容易
11284
- * > 被当成例外 —— 「字节是浏览器那台机器上的,又不读服务端的目录」。**但它落了盘,
11285
- * > 而落下来的东西下一步就要被装,装进去的 `hooks.json` 起子进程。** 风险在落地
11286
- * > 之后那一步,不在字节从哪儿来。⚠️ 它还有一条独占的理由:那道闸**必须在读
11287
- * > 请求体之前**(`server/src/plugin.ts` 文件头第 4 条),而这一条的请求体是
11288
- * > 几十 MB —— 别处漏一格是多解析一次 JSON,这儿漏一格是让 LAN 上的任何人
11289
- * > 把这台机器的内存灌满。
11290
- *
11291
- * 判据同 [wire-agent-role.ts](./wire-agent-role.ts) 那道,但**这条路比它还远一格**,
11292
- * 四条:
11293
- *
11294
- * 1. **装一个插件会带进 hook 和 `mcp.json`,那两样起子进程。** 一份 `hooks.json`
11295
- * 里的 `PreToolUse` 就是一条 shell 命令,`mcp.json` 里的一台就是一个可执行
11296
- * 文件的启动项 —— 下一程启动时它们照着跑。往 `~/.epoch/agents/` 落一份 md
11297
- * 只影响模型看到的字,这一条影响的是**这台机器上会跑起什么进程**;
11298
- * 2. **`install/preview` 那条也吃这道闸,虽然它一个字节都不写。**
11299
- * `allowRemote: true` 的宿主上,预览一条远程条目会 spawn `git clone --depth 1`
11300
- * 到 staging(判据在 core 的 `install.ts` 那张表)—— 那是一次**由网线发起的
11301
- * 子进程**,不是一次只读。九条一起挡,比按「写不写盘」切一刀诚实。
11302
- * ⚠️ **加市场那条同理**:`addMarketplace` 会去取一份目录,远程市场那一档
11303
- * 是一次网络请求 / 一次 clone;
11304
- * 3. **本地那两条也一起挡**,虽然它们既不拉网也不起子进程 ——
11305
- * 判据在第一节翻案那三条的第 3 条:本地路径这一档的**全部前提**就是
11306
- * 「网线另一头就是这台机器」,而 `lanExposed` 为真时那句前提是假的。
11307
- * ⚠️ 真按「不拉网就放行」切一刀的话,一个 LAN 上的人能指着**这台机器上任意
11308
- * 一个目录**说「装它」—— 而那个目录里的 `hooks.json` 是谁写的,他知道我们不知道;
11309
- * 4. **不能拿「反正他能让 agent 跑命令」开绿灯**,判据逐字同 `wire-agent-role.ts`
11310
- * 第三节:`plan` 档和只读会话下 agent 一个字节都落不了盘,而这条端点落得了。
11311
- *
11312
- * ⚠️ **界面那一侧还有一道,但它是给人的**:`GET /api/config` 上带着 `lanExposed`,
11313
- * 那一页据此在**按下去之前**把「这一档下装不了」画出来(决定 20 ①)。
11314
- * 两道各答一半 —— 别因为界面上画了就把服务端这道摘掉,那一格是客户端自己改得动
11315
- * 的布尔。
11316
- *
11317
- * ⚠️ **`GET /api/plugins` 刻意不挡**,而这和 `GET /api/mcp/config` 刻意挡**不矛盾**:
11318
- * 那份文件里的 `env` 是明文密钥,这一份里是插件名、版本、目录路径 —— 和
11319
- * `GET /api/sessions/:id/capabilities` 早就在发的那些(技能名、角色名、工作区根)
11320
- * 同一档。挡掉它的唯一后果是那一页在 LAN 那一档下变成一片空白,
11321
- * 而**用户最需要的恰恰是在那一档下也看得见「我装了什么、生效了没有」**。
11322
- *
11323
- * # 三、⚠️ `pendingRestart`:装完**不会生效**,而这一格是那句话的全部凭据
11324
- *
11325
- * 扩展物在启动时加载(`loadPlugins` 一程跑一次),所以一次成功的 install /
11326
- * update / uninstall 之后 {@link WirePluginsResponse.pendingRestart} 变 `true`
11327
- * 并且**此后不再变回去**。判据、以及「为什么重建一次就够(加载器一个字节 JS
11328
- * 都不执行)」,全文在 `runtime/src/plugin-control.ts` 文件头第二节。
11329
- *
11330
- * **界面上必须能看出这个中间态**,而它需要**两格一起看**才成立:
11331
- *
11332
- * | 那一格 | 答的是 |
11333
- * | ----------------------------------------- | ---------------------------------- |
11334
- * | {@link WirePluginsResponse.pendingRestart} | **这一程**动过插件、还没生效 |
11335
- * | {@link WirePluginEntry.active} | **这一个**此刻真的在生效吗 |
11336
- *
11337
- * 少了前者,用户点完那一下之后没有任何东西提示他还差一步;少了后者,一个刚装完
11338
- * 的插件在列表里和一个正在生效的**长得一模一样**(那正是「点了半个反应」的形态)。
11339
- * ⚠️ 而 `active: false` 有两种成因,界面要分开说:**这一程刚装上**(要重启),
11340
- * 或者**它被停用 / 版本不符 / 目录没了**(那时启动诊断里有一条指名道姓的)——
11341
- * 前者的判据就是 `pendingRestart`,所以那两格必须一起下发。
11342
- *
11343
- * # 四、这一整片可以整个不存在(503 `no-plugin-control`)
11344
- *
11345
- * `EpochRuntime.plugins` 在宿主没给 `hostMarketplaces` 时是 `null`,而那不是
11346
- * 「底下那层起不来了」,是**「宿主没打算给用户这条路」**(判据在 `build.ts` 那一格
11347
- * 的 JSDoc 上:它是一个真的新攻击面,所以是选进来的,不是白送的)。
11348
- *
11349
- * 六条端点那时一律 **503 `no-plugin-control`**,判据同 `no-goal-store`:
11350
- * 那一档是一句关于**这个部署**的真话,不是一份「装了 0 个插件」的空列表 ——
11351
- * 两者在界面上是两句完全不同的话(后者会让用户去找那个不存在的「安装」按钮)。
11435
+ * 往 `window.parent` 发一条 {@link PluginMenuMessage},`targetOrigin: '*'`,**不跳页、
11436
+ * 不发请求、不等回音**。三条理由全文在 sidebar-menu.ts 文件头「点下去发生什么」那一节,
11437
+ * 这儿只记它们落到这一格上的样子:
11438
+ *
11439
+ * 1. **确认归宿主。** 一个「删除」要不要先问一句、怎么问(原生对话框 / 它自己页面上的
11440
+ * 一张卡)是宿主的产品决定 —— 我们在这张页上画一个确认框的话,宿主那侧想弹原生框
11441
+ * 就得先绕过我们那一个;
11442
+ * 2. **成败归宿主。** 我们这一侧不知道那一下成没成,所以**不说**成了 / 没成:
11443
+ * 说错一次(宿主那边其实失败了)比什么都不说坏得多;
11444
+ * 3. **`targetOrigin: '*'` 不是漏了一道校验。** 这条消息里只有宿主自己在 `pluginMenu`
11445
+ * 里交出来的 `id`,和一条市场目录里本来就在网线上发着的 `ref` —— 没有 token、
11446
+ * 没有会话 id。
11447
+ *
11448
+ * ## ⚠️ 删完之后屏幕上那张卡怎么没的
11449
+ *
11450
+ * 宿主在自己那一侧删完,调一句 `runtime.plugins.refresh()` 把目录重读一遍。那一下会
11451
+ * 让服务端往全局事件流里发一帧 `plugins-changed`(判据在 wire.ts 那一帧上),开着的
11452
+ * 那一页收到后自己重读一次列表。**这一条消息本身不参与**:我们照旧**不监听
11453
+ * `message`**(同 sidebar-menu.ts 那条「反过来的方向照旧守着」),宿主发什么进来
11454
+ * 都改不动这张页。
11455
+ *
11456
+ * ## ⚠️ 局域网那一档下这张菜单**不画**
11457
+ *
11458
+ * `lanExposed` 为真时网线另一头不是这台机器,那个浏览器也就不在宿主的窗口里 ——
11459
+ * `window.parent` 是它自己,一条发出去没有人收的消息就是「点了没反应」。
11460
+ * 判据同那一页上别的动作按钮在那一档下为什么整个不画(决定 20 ①)。
11461
+ *
11462
+ * ## 宿主那一侧怎么接
11463
+ *
11464
+ * ```js
11465
+ * window.addEventListener('message', (e) => {
11466
+ * if (e.data?.type !== 'epoch:plugin-menu') return;
11467
+ * // e.data.id —— 你在 pluginMenu 里给的那个;e.data.ref —— `<市场>/<插件>`
11468
+ * if (e.data.id === 'delete' && confirm('确定从市场里删掉它?')) {
11469
+ * myBackend.delete(e.data.ref).then(() => runtime.plugins.refresh());
11470
+ * }
11471
+ * });
11472
+ * ```
11473
+ *
11474
+ * ⚠️ **判 `type` 那一句不能省**,理由同 sidebar-menu.ts:同一个 window 上还跑着别人的
11475
+ * `message`。那个字面量的真源是 {@link PLUGIN_MENU_MESSAGE_TYPE}。
11476
+ * ⚠️ `runtime.plugins.refresh()` 那一句在**主进程**里(它是 runtime 的方法),
11477
+ * 一个把监听装在 preload / 渲染进程里的 Electron 宿主要自己把这一下递回主进程。
11478
+ */
11479
+ /**
11480
+ * 菜单里的一项 —— 网线上那一份(`WirePluginHit.menu` 里装的就是它)。
11481
+ *
11482
+ * ⚠️ `id` / `label` 都是**宿主的话,不过 i18n catalog**,口径逐字同
11483
+ * `SidebarMenuItem`。runtime 那一层已经收过一遍(丢掉空的、同一张菜单里 `id` 重了
11484
+ * 只留第一个,判据在 runtime 的 `PluginMenuFn` 上),界面照画就行。
11485
+ */
11486
+ interface WirePluginMenuItem {
11487
+ /** 宿主自己认的码,点下去原样回给它({@link PluginMenuMessage.id}) */
11488
+ id: string;
11489
+ /** 屏幕上那几个字 */
11490
+ label: string;
11491
+ /**
11492
+ * 画成红字吗。**恒是布尔**(宿主没给就是 `false`)—— 界面要的是结论。
11493
+ *
11494
+ * ⚠️ 它**只是一种样子**,不带确认:确认归宿主,判据在文件头第一条。
11495
+ */
11496
+ danger: boolean;
11497
+ }
11498
+ /** 那条 `postMessage` 的 `type`。**宿主和我们共用这一个字面量**,两边都别手抄 */
11499
+ declare const PLUGIN_MENU_MESSAGE_TYPE = "epoch:plugin-menu";
11500
+ /**
11501
+ * 点了某一项之后发出去的那条消息。
11502
+ *
11503
+ * ⚠️ **比侧栏那一条多一格 `ref`**,而那是这一格和它唯一的差别:侧栏那几项整页一份,
11504
+ * `id` 就说全了;这一张菜单每张卡各一份,同一个 `id`(「删除」)在二十张卡上都有,
11505
+ * 宿主得知道用户按的是哪一张。⚠️ **不带 `label`**,理由同 `SidebarMenuMessage`。
11352
11506
  */
11507
+ interface PluginMenuMessage {
11508
+ type: typeof PLUGIN_MENU_MESSAGE_TYPE;
11509
+ id: string;
11510
+ /** `<市场>/<插件>`,同 `WirePluginHit.ref` */
11511
+ ref: string;
11512
+ }
11513
+
11353
11514
  /**
11354
11515
  * 一个插件是从哪儿装来的。**照抄 core 的 `PluginSourceType`,不是第二套枚举** ——
11355
11516
  * 界面据此说「这是一条软链 / 这是 clone 下来的」。
@@ -11591,6 +11752,16 @@ interface WirePluginEntry {
11591
11752
  * 写成必填之后「服务端忘了转这一格」当场编译不过。
11592
11753
  */
11593
11754
  counts: WirePluginCounts | null;
11755
+ /**
11756
+ * 宿主给不给「更新」/「卸载」这两枚(2026-09-24,`HostMarketplaces.pluginActions`)。
11757
+ * **`false` = 那一枚不画**(不是画成灰的,判据在 runtime 的 `PluginActions` 上)。
11758
+ *
11759
+ * ⚠️ 「更新」这一格**只是宿主那一半**:软链 / 市场有没有新版本那几条照旧在
11760
+ * web 的 `canUpdate` 里,这一格是再与上去的。服务端那道 `action-disabled`
11761
+ * 照旧在 —— 这一格是给界面少画一枚按钮的,不是闸门本身。
11762
+ */
11763
+ updateAllowed: boolean;
11764
+ uninstallAllowed: boolean;
11594
11765
  }
11595
11766
  /** 市场里的一条 */
11596
11767
  interface WirePluginHit {
@@ -11735,6 +11906,27 @@ interface WirePluginHit {
11735
11906
  * 而**算它的地方只有服务端**(口径同 `installable`)。
11736
11907
  */
11737
11908
  updateAvailable: boolean;
11909
+ /**
11910
+ * **宿主给不给「安装」这一枚**(2026-09-24)。`false` = 那一枚**不画**。
11911
+ *
11912
+ * ⚠️ **和 {@link installable} 是两格、两种画法**:那一格 `false` 画成灰的 + 一句原因
11913
+ * (装不上),这一格 `false` 是整枚不画(这个部署不给这个动作)。
11914
+ * 判据全文在 runtime 的 `PluginSearchHit.installAllowed` 上。
11915
+ */
11916
+ installAllowed: boolean;
11917
+ /**
11918
+ * 「有新版本」时那枚更新按钮宿主给不给 —— **装着那一条**的 `updateAllowed`,
11919
+ * 这一层拿名字 join 过来的(口径同 {@link installed})。没装的恒是 `false`。
11920
+ *
11921
+ * ⚠️ 为 `false` 而 {@link updateAvailable} 为真时,那一格画「已装上」,
11922
+ * 不画更新按钮 —— 「有新版本」那句话照样说(那是一句市场说的事实)。
11923
+ */
11924
+ updateAllowed: boolean;
11925
+ /**
11926
+ * 这张卡右上角那张「⋯」菜单(2026-09-24)。**恒有,空数组 = 不画。**
11927
+ * 点下去是一条 `postMessage`,判据全文在 [plugin-menu.ts](./plugin-menu.ts) 文件头。
11928
+ */
11929
+ menu: readonly WirePluginMenuItem[];
11738
11930
  }
11739
11931
  /**
11740
11932
  * 分类树里的一个节点(2026-09-21)—— 市场自己声明的编目层级。
@@ -11878,6 +12070,14 @@ interface WirePluginsResponse {
11878
12070
  * 那一格答「网线另一头是不是这台机器」。
11879
12071
  */
11880
12072
  refreshEnabled: boolean;
12073
+ /**
12074
+ * 「装本机一条目录」这条路开着吗(2026-09-24)—— **「添加」那一枚画不画就看这一格。**
12075
+ *
12076
+ * ⚠️ 只有宿主写了字面 `pluginActions.install: false` 才是 `false`,判据在 runtime 的
12077
+ * `PluginControl.localInstallEnabled` 上(函数那一档在用户选完目录之后才答得出)。
12078
+ * ⚠️ 同 {@link uploadEnabled},它和 `lanExposed` 各答一半。
12079
+ */
12080
+ localInstallEnabled: boolean;
11881
12081
  }
11882
12082
  declare const WIRE_PLUGINS_FIELDS: WireFields<WirePluginsResponse>;
11883
12083
  /**
@@ -12103,7 +12303,13 @@ type WirePluginRefuseReason = 'unknown-ref' | 'not-local'
12103
12303
  * ⚠️ 界面上正常走不到这一档(那枚按钮在必填格空着时是禁用的)—— 它拦的是
12104
12304
  * **改了请求体那一发**,判据同 `editable: false` 为什么在服务端兑现。
12105
12305
  */
12106
- | 'missing-field' | 'failed';
12306
+ | 'missing-field'
12307
+ /**
12308
+ * 宿主关掉了这个动作(2026-09-24,`HostMarketplaces.pluginActions`)。
12309
+ * 下一步:没有 —— 界面上那枚按钮本来就不画,收到它说明请求体被改过。
12310
+ * 判据同 `upload-unavailable` 为什么不并进 `failed`。
12311
+ */
12312
+ | 'action-disabled' | 'failed';
12107
12313
  /** 一次 hook 盘点:这个事件上有几条 */
12108
12314
  interface WirePluginHookTally {
12109
12315
  type: string;
@@ -15824,4 +16030,4 @@ declare const SECRET_SERVICE = "epoch-agent";
15824
16030
  */
15825
16031
  declare const MCP_DATA_KEY_NAME = "mcp-auth-data-key";
15826
16032
 
15827
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPROVAL_OUTCOMES, type ActiveAgentRole, type AgentEvent, type AgentEventOf, type AgentEventType, type AgentRole, type AgentRoleScope, type AgentRoleSource, type ApprovalAnswer, type ApprovalOutcome, type ApprovalReply, type ApprovalRequest, type ArtifactKind, type AttributeValue, type Attributes, type BackgroundTaskInfo, type BackgroundTaskKind, type BackgroundTaskStatus, type BlankCard, type BlankGreeting, type BoundKey, type BudgetBreach, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, type Catalogs, type ComplianceAction, type ComplianceCategory, type ContextBreakdown, type ContextSegment, type Currency, type CurrencyDisplay, type CustomCommandDef, type CustomCommandSource, DEFAULT_AGENT_ROLE, DEFAULT_LANG, type DecidedTrustLevel, type Diagnostic, DiagnosticSink, type DiagnosticStatus, 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, 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, type Lang, type LocalizedDetail, type LogFn, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, type MentionSet, type ModelRef, type ModelSelection, type ModelSelectionOrigin, type MoneyDigits, NOOP_TELEMETRY, type NoticeCode, OPERATION_TYPES, OVERSIZE_RATIO, type Operation, type OperationType, PERMISSION_LEVELS, PLAN_OUTCOMES, PROVIDER_INFOS, PROVIDER_TYPES, type PermissionDecision, type PermissionLevel, type PermissionManager, type PermissionRuleLists, type PlanApprovalOutcome, type PlanProposal, type PluginContext, type ProviderInfo, type ProviderType, type QuestionAnswer, type QuestionItem, type QuestionOption, type QuestionRequest, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, type RejectReason, type RejectedKey, type RuleValue, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MINUTES, SCHEDULE_RUN_STATUSES, SCHEDULE_TEMPLATES, 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 ScheduleCycle, type ScheduleDefinition, type ScheduleDraft, type ScheduleDraftAllowlist, type ScheduleDraftCreate, type ScheduleDraftPermission, type ScheduleDraftUpdate, type SchedulePendingApproval, type SchedulePendingItem, type ScheduleRun, type ScheduleRunStatus, type ScheduleRunnerSpec, type ScheduleTemplate, type ScheduleTemplateId, 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 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, type VerifyResult, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_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_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_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_MODEL_SUGGESTIONS_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_PROVIDERS_FIELDS, WIRE_PROVIDER_KEY_FIELDS, WIRE_PROVIDER_MODELS_FIELDS, WIRE_PROVIDER_OPTION_FIELDS, 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_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_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 WireApprovalCacheRevokeRequest, type WireApprovalCacheRevokeResponse, type WireApprovalListResponse, type WireApprovalRequest, type WireArtifactsResponse, 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 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 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 WireModelProbeStatus, type WireModelRejection, type WireModelResponse, type WireModelSelection, type WireModelSetRequest, type WireModelSetResponse, type WireModelSource, type WireModelSuggestions, 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 WirePluginEntry, type WirePluginHit, type WirePluginHookTally, type WirePluginInstallRequest, type WirePluginLocalInstallRequest, type WirePluginLocalRequest, type WirePluginMarketplace, type WirePluginMarketplaceRequest, type WirePluginMarketplaceResponse, type WirePluginNameRequest, type WirePluginPreview, type WirePluginPreviewRequest, type WirePluginPreviewResponse, 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 WirePluginVisibility, type WirePluginsResponse, type WirePolicyDir, type WirePolicyStatus, type WireProjectInventory, type WireProviderKeyRequest, type WireProviderKeyResponse, type WireProviderModelsRequest, type WireProviderModelsResponse, type WireProviderOption, type WireProviderSummary, type WireProvidersResponse, type WireQuestionListResponse, type WireQuestionRequest, type WireReplayMessage, type WireResetReason, type WireRespondApprovalRequest, type WireRespondApprovalResponse, type WireRespondQuestionRequest, type WireRespondQuestionResponse, 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 WireWorkspaceBinding, type WireWorkspaceDiffResponse, type WireWorkspaceDirEntry, type WireWorkspaceDirsResponse, type WireWorkspaceRef, apiKeyEnvVar, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, diagnosticToLine, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, imagePartOmittedSummary, isApprovalOutcome, isContextNearlyFull, isCurrency, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isKeyAction, isLang, isMentionableFilePath, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, makeTranslate, mcpConnectorState, normalizeApproval, packSessionSurface, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, resolveHostText, sequenceId, sessionPartSummary, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
16033
+ export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPROVAL_OUTCOMES, type ActiveAgentRole, type AgentEvent, type AgentEventOf, type AgentEventType, type AgentRole, type AgentRoleScope, type AgentRoleSource, type ApprovalAnswer, type ApprovalOutcome, type ApprovalReply, type ApprovalRequest, type ArtifactKind, type AttributeValue, type Attributes, type BackgroundTaskInfo, type BackgroundTaskKind, type BackgroundTaskStatus, type BlankCard, type BlankGreeting, type BoundKey, type BudgetBreach, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, type Catalogs, type ComplianceAction, type ComplianceCategory, type ContextBreakdown, type ContextSegment, type Currency, type CurrencyDisplay, type CustomCommandDef, type CustomCommandSource, DEFAULT_AGENT_ROLE, DEFAULT_LANG, type DecidedTrustLevel, type Diagnostic, DiagnosticSink, type DiagnosticStatus, 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, 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, type Lang, type LocalizedDetail, type LogFn, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, type MentionSet, type ModelRef, type ModelSelection, type ModelSelectionOrigin, type MoneyDigits, NOOP_TELEMETRY, type NoticeCode, OPERATION_TYPES, OVERSIZE_RATIO, type Operation, type OperationType, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_MENU_MESSAGE_TYPE, 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 QuestionRequest, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, type RejectReason, type RejectedKey, type RuleValue, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MINUTES, SCHEDULE_RUN_STATUSES, SCHEDULE_TEMPLATES, 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 ScheduleCycle, type ScheduleDefinition, type ScheduleDraft, type ScheduleDraftAllowlist, type ScheduleDraftCreate, type ScheduleDraftPermission, type ScheduleDraftUpdate, type SchedulePendingApproval, type SchedulePendingItem, type ScheduleRun, type ScheduleRunStatus, type ScheduleRunnerSpec, type ScheduleTemplate, type ScheduleTemplateId, 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 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, type VerifyResult, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_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_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_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_MODEL_SUGGESTIONS_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_PROVIDERS_FIELDS, WIRE_PROVIDER_KEY_FIELDS, WIRE_PROVIDER_MODELS_FIELDS, WIRE_PROVIDER_OPTION_FIELDS, 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_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_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 WireApprovalCacheRevokeRequest, type WireApprovalCacheRevokeResponse, type WireApprovalListResponse, type WireApprovalRequest, type WireArtifactsResponse, 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 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 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 WireModelProbeStatus, type WireModelRejection, type WireModelResponse, type WireModelSelection, type WireModelSetRequest, type WireModelSetResponse, type WireModelSource, type WireModelSuggestions, 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 WirePluginEntry, type WirePluginHit, type WirePluginHookTally, type WirePluginInstallRequest, type WirePluginLocalInstallRequest, type WirePluginLocalRequest, type WirePluginMarketplace, type WirePluginMarketplaceRequest, type WirePluginMarketplaceResponse, type WirePluginMenuItem, type WirePluginNameRequest, type WirePluginPreview, type WirePluginPreviewRequest, type WirePluginPreviewResponse, 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 WirePluginVisibility, type WirePluginsResponse, type WirePolicyDir, type WirePolicyStatus, type WireProjectInventory, type WireProviderKeyRequest, type WireProviderKeyResponse, type WireProviderModelsRequest, type WireProviderModelsResponse, type WireProviderOption, type WireProviderSummary, type WireProvidersResponse, type WireQuestionListResponse, type WireQuestionRequest, type WireReplayMessage, type WireResetReason, type WireRespondApprovalRequest, type WireRespondApprovalResponse, type WireRespondQuestionRequest, type WireRespondQuestionResponse, 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 WireWorkspaceBinding, type WireWorkspaceDiffResponse, type WireWorkspaceDirEntry, type WireWorkspaceDirsResponse, type WireWorkspaceRef, apiKeyEnvVar, assertNeverPart, assistantTurnText, attachSessionSurface, chordId, collectPendingApprovals, compressionThresholdTokens, conformsToWire, contentToText, diagnosticToLine, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, imagePartOmittedSummary, isApprovalOutcome, isContextNearlyFull, isCurrency, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isKeyAction, isLang, isMentionableFilePath, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, makeTranslate, mcpConnectorState, normalizeApproval, packSessionSurface, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, resolveHostText, sequenceId, sessionPartSummary, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
package/dist/index.js CHANGED
@@ -832,7 +832,9 @@ var HUB_EVENT_TYPES = /* @__PURE__ */ new Set([
832
832
  "stream-reset",
833
833
  "session-cooled",
834
834
  "tasks-changed",
835
- "sessions-changed"
835
+ "sessions-changed",
836
+ "plugins-changed",
837
+ "host-compose"
836
838
  ]);
837
839
  function isWireHubEvent(event) {
838
840
  return HUB_EVENT_TYPES.has(event.type);
@@ -1314,7 +1316,8 @@ var WIRE_PLUGINS_FIELDS = wireFields()({
1314
1316
  pendingRestart: true,
1315
1317
  uploadEnabled: true,
1316
1318
  uploadOptions: true,
1317
- refreshEnabled: true
1319
+ refreshEnabled: true,
1320
+ localInstallEnabled: true
1318
1321
  });
1319
1322
  var WIRE_PLUGIN_PREVIEW_FIELDS = wireFields()({ ref: true });
1320
1323
  var WIRE_PLUGIN_INSTALL_FIELDS = wireFields()({
@@ -1863,6 +1866,8 @@ var WIRE_FILE_CANDIDATES_FIELDS = wireFields()({
1863
1866
  });
1864
1867
  // src/sidebar-menu.ts
1865
1868
  var SIDEBAR_MENU_MESSAGE_TYPE = "epoch:sidebar-menu";
1869
+ // src/plugin-menu.ts
1870
+ var PLUGIN_MENU_MESSAGE_TYPE = "epoch:plugin-menu";
1866
1871
  // src/i18n.ts
1867
1872
  var LANGS = ["zh", "en"];
1868
1873
  var DEFAULT_LANG = "zh";
@@ -1942,4 +1947,4 @@ var COMPLIANCE_ACTIONS = ["block", "mask", "warn", "off"];
1942
1947
  var SECRET_SERVICE = "epoch-agent";
1943
1948
  var MCP_DATA_KEY_NAME = "mcp-auth-data-key";
1944
1949
 
1945
- export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPROVAL_OUTCOMES, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, DEFAULT_AGENT_ROLE, DEFAULT_LANG, DiagnosticSink, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, KEY_ACTIONS, LANGS, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, NOOP_TELEMETRY, OPERATION_TYPES, OVERSIZE_RATIO, PERMISSION_LEVELS, PLAN_OUTCOMES, PROVIDER_INFOS, PROVIDER_TYPES, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MINUTES, SCHEDULE_RUN_STATUSES, SCHEDULE_TEMPLATES, 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, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_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_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_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_MODEL_SUGGESTIONS_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_PROVIDERS_FIELDS, WIRE_PROVIDER_KEY_FIELDS, WIRE_PROVIDER_MODELS_FIELDS, WIRE_PROVIDER_OPTION_FIELDS, 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_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_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, diagnosticToLine, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, imagePartOmittedSummary, isApprovalOutcome, isContextNearlyFull, isCurrency, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isKeyAction, isLang, isMentionableFilePath, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, makeTranslate, mcpConnectorState, normalizeApproval, packSessionSurface, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, resolveHostText, sequenceId, sessionPartSummary, stripSystemNote, systemNote, tableOf, totalUsageTokens, translatorFor, truncateToBudget, turnDigest, unfixedRules, utf8ByteLength, wireFields };
1950
+ export { ACTION_CONTEXTS, AGENT_ROLE_NAME_PATTERN, API_KEY_ENV_VARS, APPROVAL_OUTCOMES, COMMAND_NAME_PATTERN, COMPLIANCE_ACTIONS, COMPLIANCE_CATEGORIES, CURRENCIES, DEFAULT_AGENT_ROLE, DEFAULT_LANG, DiagnosticSink, GEN_AI, HEADLESS_INPUT_EVENT_TYPES, HEADLESS_INPUT_FORMATS, HEADLESS_OUTPUT_FORMATS, HEADLESS_PROTOCOL_VERSION, KEY_ACTIONS, LANGS, MAX_ATTACH_BYTES, MAX_ATTACH_FILES, MAX_ATTACH_TOTAL_BYTES, MAX_HEADER_CHARS, MAX_OPTIONS, MAX_QUESTIONS, MAX_SESSION_ATTACH_BYTES, MAX_SESSION_REFS, MCP_DATA_KEY_NAME, METRIC, MIN_OPTIONS, NOOP_TELEMETRY, OPERATION_TYPES, OVERSIZE_RATIO, PERMISSION_LEVELS, PLAN_OUTCOMES, PLUGIN_MENU_MESSAGE_TYPE, PROVIDER_INFOS, PROVIDER_TYPES, RESERVED_CHORDS, RESERVED_COMMAND_NAMES, SCHEDULE_DRAFT_TOOL, SCHEDULE_INTERVAL_MINUTES, SCHEDULE_RUN_STATUSES, SCHEDULE_TEMPLATES, 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, WIRE_ABORT_FIELDS, WIRE_ABOUT_FIELDS, WIRE_AGENT_ROLE_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_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_FIELDS, WIRE_MODEL_SELECTION_FIELDS, WIRE_MODEL_SET_FIELDS, WIRE_MODEL_SUGGESTIONS_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_PROVIDERS_FIELDS, WIRE_PROVIDER_KEY_FIELDS, WIRE_PROVIDER_MODELS_FIELDS, WIRE_PROVIDER_OPTION_FIELDS, 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_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_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, diagnosticToLine, extractAllMentions, extractMentions, extractSessionMentions, filePartSummary, flattenCatalog, formatMoney, getProviderInfo, hasFailure, imagePartOmittedSummary, isApprovalOutcome, isContextNearlyFull, isCurrency, isHeadlessInputFormat, isHeadlessLifecycleEvent, isHeadlessOutputFormat, isKeyAction, isLang, isMentionableFilePath, isOperationType, isPermissionLevel, isPlanOutcome, isPromptOversize, isProviderType, isQuestionAnswerMap, isSearchProviderType, isSettingsPaneId, isValidAgentRoleName, isValidCommandName, isWireGoalPhase, isWireHubEvent, isWirePlanAction, isWirePluginArchiveName, isWireRewindScope, isWireSettingWriteLayer, isWireSkillDropName, makeTranslate, mcpConnectorState, normalizeApproval, packSessionSurface, parseChord, parseModelRef, parseSequence, perAction, placeholdersOf, promptTokens, resolveHostText, sequenceId, sessionPartSummary, 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": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "private": false,
5
5
  "description": "epoch-agent 契约层:工具 / 事件 / 权限 / 插件的类型定义,零运行时依赖",
6
6
  "repository": {