@epoch-agent/protocol 0.6.0 → 0.7.1
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 +147 -23
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1478,11 +1478,17 @@ type ComplianceAction = (typeof COMPLIANCE_ACTIONS)[number];
|
|
|
1478
1478
|
* 侧栏最下面那一行「用户」(2026-09-07)—— 宿主可以换掉的名字和头像。
|
|
1479
1479
|
*
|
|
1480
1480
|
* 这是「宿主装配期按下的事实」那条路上的**第五个键**(`brand` → `sidebarMenu`
|
|
1481
|
-
* → `blankCards` → `blankGreeting` →
|
|
1482
|
-
*
|
|
1481
|
+
* → `blankCards` → `blankGreeting` → 这一个 → 同一天还多了个 `userMenu`):
|
|
1482
|
+
* 只读、`GET /api/config` 原样下发、界面上没有写端点。为什么是配置项而不是
|
|
1483
|
+
* `createWebServer()` 的装配参数,全文在
|
|
1483
1484
|
* [`EpochConfig.brand`](./config.ts) 上(一句话:走 `epoch web --json` 起子进程的
|
|
1484
1485
|
* 宿主没有构造函数可传)。
|
|
1485
1486
|
*
|
|
1487
|
+
* ⚠️ **它和 `userMenu` 是同一天落的两个键,但管的不是同一件事**:这一个只管那一行
|
|
1488
|
+
* 上的**名字和头像**,那张菜单里有什么归 `userMenu`(判据在
|
|
1489
|
+
* [sidebar-menu.ts](./sidebar-menu.ts) 文件头第一节)。只配这一个的宿主得到
|
|
1490
|
+
* 「一行改了名字的触发器 + 一张只有『设置』的菜单」—— 那是一句说得通的话。
|
|
1491
|
+
*
|
|
1486
1492
|
* ## ⚠️ 它和前四个键**默认档不同**:不配也有东西,而且照旧点得开
|
|
1487
1493
|
*
|
|
1488
1494
|
* 那一行是**设置的唯一入口**(点开是一张菜单,「设置」在最下面 —— 屏幕上那一格在
|
|
@@ -1490,7 +1496,7 @@ type ComplianceAction = (typeof COMPLIANCE_ACTIONS)[number];
|
|
|
1490
1496
|
*
|
|
1491
1497
|
* | 键 | 没配 = 屏幕上 |
|
|
1492
1498
|
* | --------------------- | ------------------------------------- |
|
|
1493
|
-
* | `brand` / `sidebarMenu` / `blankCards` | 什么都没有 |
|
|
1499
|
+
* | `brand` / `sidebarMenu` / `userMenu` / `blankCards` | 什么都没有 |
|
|
1494
1500
|
* | `blankGreeting` | **我们那句**招呼(跟着界面语言翻) |
|
|
1495
1501
|
* | 这一个 | **我们那句**「用户」+ 一枚 `user-round` |
|
|
1496
1502
|
*
|
|
@@ -1540,15 +1546,42 @@ interface HostUser {
|
|
|
1540
1546
|
}
|
|
1541
1547
|
|
|
1542
1548
|
/**
|
|
1543
|
-
*
|
|
1549
|
+
* 宿主自定义的侧栏菜单项(2026-09-02)—— **一个形状,两个键**(2026-09-07 拆开)。
|
|
1550
|
+
*
|
|
1551
|
+
* 这个文件里的 {@link SidebarMenuItem} 是**两个配置键共用的那一个 item 形状**:
|
|
1552
|
+
*
|
|
1553
|
+
* | 键 | 画在哪 | 不配 = |
|
|
1554
|
+
* | -- | ------ | ------ |
|
|
1555
|
+
* | `EpochConfig.sidebarMenu` | 侧栏底部「用户」那一行**上面**的几行常驻按钮 | 那几行整个没有 |
|
|
1556
|
+
* | `EpochConfig.userMenu` | 「用户」点开的那张菜单里的宿主项(排在「设置」上面) | 菜单里只有「设置」,**连分隔线都没有** |
|
|
1557
|
+
*
|
|
1558
|
+
* ⚠️ **两个键互不兜底**,这是拆开那一笔的全部内容(老板原话:「不行,需要是两个
|
|
1559
|
+
* 配置」):只配 `sidebarMenu` 的宿主得到几行常驻按钮、菜单里**一项宿主项都没有**;
|
|
1560
|
+
* 只配 `userMenu` 的反过来。谁都不去拿另一个顶上 —— 那种兜底的表现是宿主配了一个键
|
|
1561
|
+
* 却在**两处**都看见东西,而它想改掉多出来的那一处时会发现没有对应的键可关。
|
|
1562
|
+
* 判据在 web 的 `shell/sidebar.tsx` 上(两个常量各判一次「键在且非空数组」)。
|
|
1544
1563
|
*
|
|
1545
|
-
*
|
|
1546
|
-
*
|
|
1564
|
+
* ⚠️ **类型名照旧是 `SidebarMenuItem`,没有跟着拆成两个**。它是**同一个形状**
|
|
1565
|
+
* (`id` / `label` / `icon` 三个字段,一个字都不差),为「这一份是给哪个键的」造第二个
|
|
1566
|
+
* 名字只会多一处要同步的地方 —— 而两个键的 item 真要长得不一样的那天,那时才拆。
|
|
1567
|
+
*
|
|
1568
|
+
* 2026-09-02 到 09-07 之间它只有一个键(`sidebarMenu`),中途还有过**同一份 items
|
|
1569
|
+
* 画在两处**的一版(当天定稿就被否了,见上面那条 ⚠️)。宿主那侧接的那句 `message`
|
|
1570
|
+
* 监听**从头到尾一个字没改** —— 见下面「点下去发生什么」。
|
|
1571
|
+
*
|
|
1572
|
+
* 形状和口径逐字照 `EpochConfig.brand`(决定 19):**宿主装配期预置的配置项,
|
|
1573
|
+
* 界面上没有写端点**,`GET /api/config` 原样下发、没配就不带那个键。
|
|
1547
1574
|
* 为什么是配置项而不是 `createWebServer()` 的参数,全文在那个字段上
|
|
1548
1575
|
* (一句话:走 `epoch web --json` 起子进程的宿主没有构造函数可传)。
|
|
1549
1576
|
*
|
|
1550
1577
|
* ## 点下去发生什么:往父窗口发一条 `postMessage`,**不跳页**
|
|
1551
1578
|
*
|
|
1579
|
+
* ⚠️ **两个键共用这一条消息,而且不带「来源」** —— 点侧栏那几行和点菜单里那几项发出去
|
|
1580
|
+
* 的东西**逐字节一样**(`{ type, id }`)。刻意的:宿主已经拿 `id` 认出了是哪一项,
|
|
1581
|
+
* 而那个 `id` 出自它自己那份配置 —— 它当然知道自己把那一项配在了哪个键上。
|
|
1582
|
+
* 多带一个 `from: 'sidebar' | 'menu'` 的代价是**宿主那句监听得跟着改**,
|
|
1583
|
+
* 换来的是一个它本来就答得出的答案。
|
|
1584
|
+
*
|
|
1552
1585
|
* 这是这一格和 `brand` 唯一的形状差别 —— 品牌是一个字符串,菜单是一个**动作**,
|
|
1553
1586
|
* 而动作要有个落点。三条路里选了这一条:
|
|
1554
1587
|
*
|
|
@@ -1588,7 +1621,9 @@ interface HostUser {
|
|
|
1588
1621
|
* `message`**,所以宿主发什么进来都改不动这张页的任何状态。
|
|
1589
1622
|
*/
|
|
1590
1623
|
/**
|
|
1591
|
-
*
|
|
1624
|
+
* 侧栏菜单里的一项。**`sidebarMenu` 和 `userMenu` 两个键共用这一个形状**
|
|
1625
|
+
* (见文件头第一节那张表)—— 名字里的 `Sidebar` 是它 2026-09-02 出生时的位置,
|
|
1626
|
+
* 不是「只给 `sidebarMenu` 用」的意思。
|
|
1592
1627
|
*
|
|
1593
1628
|
* ⚠️ 三个字段都是**宿主的话**,一个都不过 i18n catalog —— 同侧栏底下那几条启动
|
|
1594
1629
|
* 诊断的 `detail`:它们的内容随宿主而变,没有有限的码可以枚举。用户把界面切成
|
|
@@ -1598,8 +1633,13 @@ interface SidebarMenuItem {
|
|
|
1598
1633
|
/**
|
|
1599
1634
|
* 宿主自己认的那个码 —— 点下去原样回给它({@link SidebarMenuMessage.id})。
|
|
1600
1635
|
*
|
|
1601
|
-
* ⚠️
|
|
1602
|
-
*
|
|
1636
|
+
* ⚠️ **一个键里不许重复**(core 的 schema 拦这一条,两个键各拦自己那一份):
|
|
1637
|
+
* 重了的话宿主收到消息也分不出用户按的是哪一行,而屏幕上那两行长得完全不一样。
|
|
1638
|
+
*
|
|
1639
|
+
* ⚠️ **跨键重复反过来不拦,而且它是一句说得通的话**:同一个 `id` 同时配进
|
|
1640
|
+
* `sidebarMenu` 和 `userMenu`,意思是「这个去处两处都摆一份」—— 那时两处点下去
|
|
1641
|
+
* 发的是同一条消息,宿主那侧本来就该做同一件事(判据在文件头「两个键共用这一条
|
|
1642
|
+
* 消息」那一段)。要拦的话得让 schema 跨字段看,而它拦掉的是一个正当写法。
|
|
1603
1643
|
*
|
|
1604
1644
|
* 它**不是**给人看的,所以不必好读;给人看的是 {@link label}。
|
|
1605
1645
|
*/
|
|
@@ -2131,12 +2171,29 @@ interface EpochConfig {
|
|
|
2131
2171
|
*/
|
|
2132
2172
|
brand?: string;
|
|
2133
2173
|
/**
|
|
2134
|
-
*
|
|
2174
|
+
* 宿主自定义的**侧栏那几行常驻按钮**(2026-09-02;2026-09-07 语义收窄成只管
|
|
2175
|
+
* 这一处)。**缺省 = 侧栏上那几行整个没有**,那一格里只剩「用户」那一行。
|
|
2135
2176
|
*
|
|
2136
|
-
*
|
|
2137
|
-
*
|
|
2138
|
-
*
|
|
2139
|
-
*
|
|
2177
|
+
* 画的位置是侧栏底部「用户」那一行**上面**,一行一个宿主入口。
|
|
2178
|
+
*
|
|
2179
|
+
* ## ⚠️ 2026-09-07:这个键**不再管那张菜单**,菜单归 {@link userMenu}
|
|
2180
|
+
*
|
|
2181
|
+
* 中间有过一版「同一份 items 画在两处」(侧栏那几行 + 用户菜单里那几项),
|
|
2182
|
+
* 当天就被否了(老板原话:「不行,需要是两个配置」)。今天是**两个键各管各的面**:
|
|
2183
|
+
*
|
|
2184
|
+
* | 键 | 画在哪 |
|
|
2185
|
+
* | -- | ------ |
|
|
2186
|
+
* | 这一个 | 只画侧栏底部那几行常驻按钮 |
|
|
2187
|
+
* | {@link userMenu} | 只画「用户」点开的那张菜单里的宿主项 |
|
|
2188
|
+
*
|
|
2189
|
+
* ⚠️ **两个键互不兜底**:配了这一个、菜单里**一项宿主项都没有**(只剩「设置」,
|
|
2190
|
+
* 连分隔线都没有);配了 `userMenu`、侧栏上**一行都不多**。判据(以及那种兜底
|
|
2191
|
+
* 为什么是坏的)在 [sidebar-menu.ts](./sidebar-menu.ts) 文件头第一节。
|
|
2192
|
+
*
|
|
2193
|
+
* ⚠️ **这个键自己的形状一个字都没改** —— `id` / `label` / `icon` 三个字段、
|
|
2194
|
+
* 点下去那条 `postMessage`、顺序原样、空数组算配错,全部照旧。宿主已经接好的
|
|
2195
|
+
* 那句 `message` 监听不用动;要动的只是「原来那一份也在菜单里」的宿主,
|
|
2196
|
+
* 它把想留在菜单里的那几项抄进 `userMenu` 就行。
|
|
2140
2197
|
*
|
|
2141
2198
|
* 形状、口径、以及「点下去往父窗口发一条 `postMessage`」那条判据,全文在
|
|
2142
2199
|
* [sidebar-menu.ts](./sidebar-menu.ts) 的文件头 —— 这儿只记它和 {@link brand}
|
|
@@ -2144,7 +2201,7 @@ interface EpochConfig {
|
|
|
2144
2201
|
* 原样下发、没配就不带那个键),所以它们并排放在顶层,而不是塞进 `display`
|
|
2145
2202
|
* (那一段收的是**用户**的显示偏好)。
|
|
2146
2203
|
*
|
|
2147
|
-
* ⚠️
|
|
2204
|
+
* ⚠️ **空数组是配错了,不是「不要那几行」** —— 不要就别写这个键,同 `brand`
|
|
2148
2205
|
* 那条「空串是配错了」。core 的 schema 会为它产出一条带字段路径的 warn 诊断。
|
|
2149
2206
|
*
|
|
2150
2207
|
* ⚠️ **不设条数上限**,判据同 `brand` 的「不设长度上限」:为「菜单有点长」判一次
|
|
@@ -2152,6 +2209,41 @@ interface EpochConfig {
|
|
|
2152
2209
|
* 兜(web 那一格滚动),不由校验兜。
|
|
2153
2210
|
*/
|
|
2154
2211
|
sidebarMenu?: readonly SidebarMenuItem[];
|
|
2212
|
+
/**
|
|
2213
|
+
* 宿主自定义的**「用户」菜单里那几项**(2026-09-07)。**缺省 = 那张菜单里只有
|
|
2214
|
+
* 内置的「设置」一项,连那道分隔线都没有**。
|
|
2215
|
+
*
|
|
2216
|
+
* 「用户」是侧栏最底下那一行(名字和头像归 {@link user}),点开是一张菜单:
|
|
2217
|
+
* 这个键那几项在最上面 → 一道分隔线 → 内置的「设置」(带 `⌘,` 芯片,
|
|
2218
|
+
* **永远最下面、不可配**)。
|
|
2219
|
+
*
|
|
2220
|
+
* ## ⚠️ 它和 {@link sidebarMenu} 是**两个配置,互相不兜底**
|
|
2221
|
+
*
|
|
2222
|
+
* 这个键 2026-09-07 从 `sidebarMenu` 里**拆出来**的 —— 那天中途有一版是「同一份
|
|
2223
|
+
* items 两处都画」,当天被否(老板原话:「不行,需要是两个配置」)。所以:
|
|
2224
|
+
*
|
|
2225
|
+
* - 只配 `sidebarMenu` → 有那几行,**菜单里一项宿主项都没有**;
|
|
2226
|
+
* - 只配这一个 → **侧栏上一行都不多**,菜单里有那几项;
|
|
2227
|
+
* - 两个都配 → 两处各画各的(内容可以完全不一样,那正是拆开的用处)。
|
|
2228
|
+
*
|
|
2229
|
+
* **不许拿另一个顶上。** 那种兜底的表现是宿主配了一个键却在两处都看见东西,
|
|
2230
|
+
* 而它想关掉多出来的那一处时会发现没有对应的键可关。
|
|
2231
|
+
*
|
|
2232
|
+
* ## 形状:和 {@link sidebarMenu} **逐字同一个**
|
|
2233
|
+
*
|
|
2234
|
+
* 同一个 {@link SidebarMenuItem}(`id` / `label` / `icon`)、同一条
|
|
2235
|
+
* `postMessage`(`{ type: 'epoch:sidebar-menu', id }`,**不带来源**)、
|
|
2236
|
+
* 同一张图标白名单、同一枚兜底图标。全文在
|
|
2237
|
+
* [sidebar-menu.ts](./sidebar-menu.ts) 的文件头 —— 那个文件现在是**两个键共用**的
|
|
2238
|
+
* 一份说明,`SidebarMenuItem` 这个名字里的 `Sidebar` 是它出生时的位置,
|
|
2239
|
+
* 不是「只给 `sidebarMenu` 用」。
|
|
2240
|
+
*
|
|
2241
|
+
* ⚠️ 三条边界也逐字照那一个:**空数组是配错了**(不要就别写这个键,core 的 schema
|
|
2242
|
+
* 为这个键产出一条带自己字段路径的 warn 诊断)、**`id` 不许重复**(在这个键内部;
|
|
2243
|
+
* 跨键重复不拦,那是「两处都摆一份」)、**不设条数上限**(装不下由那张菜单
|
|
2244
|
+
* 自己滚,判据在 web 的 `menu/index.tsx` 的 `placeMenu` 上)。
|
|
2245
|
+
*/
|
|
2246
|
+
userMenu?: readonly SidebarMenuItem[];
|
|
2155
2247
|
/**
|
|
2156
2248
|
* 宿主自定义的那几张开场卡片(2026-09-04)。**缺省 = 新会话空屏上一张都没有**,
|
|
2157
2249
|
* 那一屏仍然只有一行招呼。
|
|
@@ -2191,6 +2283,11 @@ interface EpochConfig {
|
|
|
2191
2283
|
* 侧栏最下面那一行「用户」的名字和头像(2026-09-07)。**缺省 = 我们那句「用户」
|
|
2192
2284
|
* + 一枚 `user-round`**,那一行**永远在** —— 它是设置的唯一入口。
|
|
2193
2285
|
*
|
|
2286
|
+
* ⚠️ **它只管那一行上的名字和头像,不管那张菜单里有什么** —— 菜单里的宿主项归
|
|
2287
|
+
* {@link userMenu}(那是拆出来的第二个键)。两个键并排、各管一格:
|
|
2288
|
+
* 只配这一个的宿主得到「一行改了名字的触发器 + 一张只有『设置』的菜单」,
|
|
2289
|
+
* 而那是一句说得通的话。
|
|
2290
|
+
*
|
|
2194
2291
|
* 形状、以及「为什么这一格的默认档和上面四个键相反」,全文在
|
|
2195
2292
|
* [host-user.ts](./host-user.ts) 的文件头 —— 这儿只记它和它们的**关系**:
|
|
2196
2293
|
* 同一类东西(宿主装配期按下的事实、只读、`GET /api/config` 原样下发、
|
|
@@ -3710,8 +3807,10 @@ declare const SCHEDULE_RUN_STATUSES: readonly ScheduleRunStatus[];
|
|
|
3710
3807
|
* 任务注册在哪儿。
|
|
3711
3808
|
*
|
|
3712
3809
|
* - `schtasks` / `launchd` —— 真的注册进了操作系统的调度器,**epoch 不用开着**
|
|
3713
|
-
* - `host` ——
|
|
3714
|
-
*
|
|
3810
|
+
* - `host` —— **一行都没注册进 OS**(方案 45 §2.6 的路 B)。到点了唤起它的只能是
|
|
3811
|
+
* 宿主自己(`setInterval` 调 `fire()`)—— 而宿主有没有真的这么做,**这一格答不出来**,
|
|
3812
|
+
* 它唯一承诺的事实就是「没进 OS」。所以界面上不许把它写成「已启用」,
|
|
3813
|
+
* 也**不许许诺「开着就会跑」**(判据全文在 locales 的 `notice_host` 上)
|
|
3715
3814
|
*/
|
|
3716
3815
|
type ScheduleBackendKind = 'schtasks' | 'launchd' | 'host';
|
|
3717
3816
|
/**
|
|
@@ -6364,11 +6463,13 @@ interface WireConfigResponse {
|
|
|
6364
6463
|
*/
|
|
6365
6464
|
brand?: string;
|
|
6366
6465
|
/**
|
|
6367
|
-
*
|
|
6466
|
+
* 宿主自定义的**侧栏那几行常驻按钮** —— **宿主没配就没有这个键**(2026-09-02)。
|
|
6368
6467
|
*
|
|
6369
|
-
* ⚠️ **2026-09-07
|
|
6370
|
-
*
|
|
6371
|
-
*
|
|
6468
|
+
* ⚠️ **2026-09-07 语义收窄成只管那几行**:那天中途有一版把这一份同时画进
|
|
6469
|
+
* 「用户」那张菜单里,当天定稿否了它 —— 菜单里的宿主项从此是**另一个键**
|
|
6470
|
+
* ({@link userMenu}),两个键**互不兜底**。**网线上这一格的形状一个字都没改**,
|
|
6471
|
+
* 加的是并排那个新键;而画在哪儿本来就是那张界面自己的排版决定,
|
|
6472
|
+
* 这条端点也服务着自己画前端的宿主(EMBEDDING §10)。
|
|
6372
6473
|
*
|
|
6373
6474
|
* 和 {@link brand} 同一个形状、同一个理由,连搭在这条端点上的理由都一样:
|
|
6374
6475
|
* 侧栏首屏就要画它,为一份可选的静态清单另开一个端点等于让每个客户端多一次往返。
|
|
@@ -6382,6 +6483,21 @@ interface WireConfigResponse {
|
|
|
6382
6483
|
* 第一方 Web UI 自己的事,而这条端点也服务着自己画前端的宿主(EMBEDDING §10)。
|
|
6383
6484
|
*/
|
|
6384
6485
|
sidebarMenu?: readonly SidebarMenuItem[];
|
|
6486
|
+
/**
|
|
6487
|
+
* 宿主自定义的**「用户」菜单里那几项** —— **宿主没配就没有这个键**(2026-09-07)。
|
|
6488
|
+
*
|
|
6489
|
+
* 来源是 `EpochConfig.userMenu`。**item 的形状和上面那个键逐字同一个**
|
|
6490
|
+
* (同一个 {@link SidebarMenuItem}、同一条 `postMessage`),差的只是画在哪一格 ——
|
|
6491
|
+
* 全文在 [sidebar-menu.ts](./sidebar-menu.ts) 的文件头第一节那张表。
|
|
6492
|
+
*
|
|
6493
|
+
* ⚠️ **两个键在这条网线上也互不兜底**:客户端拿不到这个键时,那张菜单里
|
|
6494
|
+
* **一项宿主项都没有**(第一方 Web UI 那边只剩内置的「设置」,连分隔线都没有)
|
|
6495
|
+
* —— **不许拿 `sidebarMenu` 那一份顶上**。自己画前端的宿主(EMBEDDING §10)
|
|
6496
|
+
* 照同一条口径:两个键各画各的面,缺哪个就少哪一面。
|
|
6497
|
+
*
|
|
6498
|
+
* ⚠️ **原样转发,服务端一个字都不改**,判据逐字同上面那个 `sidebarMenu`。
|
|
6499
|
+
*/
|
|
6500
|
+
userMenu?: readonly SidebarMenuItem[];
|
|
6385
6501
|
/**
|
|
6386
6502
|
* 宿主自定义的那几张开场卡片 —— **宿主没配就没有这个键**(2026-09-04)。
|
|
6387
6503
|
*
|
|
@@ -11944,9 +12060,17 @@ declare const WIRE_SCHEDULE_CREATE_FIELDS: WireFields<WireScheduleCreateRequest>
|
|
|
11944
12060
|
/**
|
|
11945
12061
|
* `PATCH /api/schedules/:id` 的请求体 —— **没给的字段一个都不动**。
|
|
11946
12062
|
*
|
|
11947
|
-
* ⚠️
|
|
11948
|
-
* `workDir: ''`
|
|
12063
|
+
* ⚠️ **四个**「清空」用 `null` 而不是空串(`workDir` / `model` / `startDate` /
|
|
12064
|
+
* `endDate`):`workDir: null` 是「不绑工作区了」,而 `workDir: ''` 说不清是
|
|
12065
|
+
* 「清空」还是「客户端把一个 undefined 序列化坏了」。
|
|
11949
12066
|
* 同一条规矩在 `WireModelSetRequest.model` 上用过一次。
|
|
12067
|
+
*
|
|
12068
|
+
* ⚠️ **这个 `null` 一路走到 SQLite 的 `NULL`,中间没有第二个词。**
|
|
12069
|
+
* 2026-09-07 之前 server 那一层把它翻成空串再往下递(`schedule/body.ts`),
|
|
12070
|
+
* 而 core 压根不认空串是清空 —— 于是「两格生效区间都没填」被判成
|
|
12071
|
+
* 「给了两个不合法的日期」,表单上冒出两行 `生效区间不对: ` 后面空着;
|
|
12072
|
+
* 而那个空串真要是落进库,`isWithinWindow` 对它是 `false`,这条任务会
|
|
12073
|
+
* **每次到点都被判在生效区间外**。判据全文在 `UpdateScheduleInput` 上。
|
|
11950
12074
|
*/
|
|
11951
12075
|
interface WireScheduleUpdateRequest {
|
|
11952
12076
|
name?: string;
|