@shgroup/dsh-serenity-hooks 1.72.0 → 1.73.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/dsh.plugin.json +1 -1
- package/lib/{ccc-Dkoa2oW3.js → ccc-CZUOq3NY.js} +1 -1
- package/lib/{ccc-roots-jZYR2GVE.js → ccc-roots-BhoA7G-0.js} +3 -3
- package/lib/client.js +50 -58
- package/lib/{wake/cro.d.ts → cro/core.d.ts} +2 -2
- package/lib/{wake/cro-guide.d.ts → cro/guide.d.ts} +3 -3
- package/lib/{wake/cro-log.d.ts → cro/log.d.ts} +2 -2
- package/lib/{wake/cro-turns.d.ts → cro/turns.d.ts} +2 -2
- package/lib/guard/seam.d.ts +1 -1
- package/lib/{ilink-DEpmE3yi.js → ilink-BMk2w2KY.js} +1 -1
- package/lib/im/bridge.d.ts +33 -62
- package/lib/im/endpoint.d.ts +1 -1
- package/lib/im/feishu-account.d.ts +92 -0
- package/lib/im/inbound-event.d.ts +162 -0
- package/lib/im/route.d.ts +13 -0
- package/lib/index.d.ts +0 -22
- package/lib/index.js +700 -914
- package/lib/kernel/ccc.d.ts +2 -2
- package/lib/kernel/ports.d.ts +2 -4
- package/lib/lib-TxscFKeo.js +119355 -0
- package/lib/{message-source-kVoNK0C5.js → message-source-ChyVfev9.js} +2 -2
- package/lib/{profile-DyMJ_bfr.js → profile-BIQ2widI.js} +14 -11
- package/lib/rolldown-runtime-B4iAMlE-.js +35 -0
- package/lib/{route-f7JlinIt.js → route-ItCgAsnz.js} +19 -4
- package/lib/seams/guards.d.ts +1 -1
- package/lib/{settings-lt1i3OZv.js → settings-UcwIPJhM.js} +13 -62
- package/lib/skills/resource-index.d.ts +1 -1
- package/lib/surface/settings.d.ts +0 -6
- package/lib/surface/text.d.ts +72 -0
- package/lib/surface/usage.d.ts +2 -2
- package/lib/{role/worker/idle.d.ts → trajectory/carrier.d.ts} +12 -2
- package/lib/{role/worker → trajectory/delegate}/core.d.ts +7 -1
- package/lib/{role/worker → trajectory/delegate}/preset.d.ts +9 -2
- package/lib/{role/skiff → trajectory/policy}/profile.d.ts +9 -2
- package/lib/{role/skiff/config.d.ts → trajectory/policy/rules.d.ts} +9 -3
- package/lib/{role/skiff/registry.d.ts → trajectory/policy/window.d.ts} +7 -1
- package/lib/trajectory/prompt.d.ts +1 -1
- package/lib/{role/skiff/core.d.ts → trajectory/session.d.ts} +13 -4
- package/package.json +2 -1
- package/lib/role/skiff/debug.d.ts +0 -88
- package/lib/rolldown-runtime-8H4AJuhK.js +0 -14
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* im/feishu-account.ts — 飞书账号实现(P3,2026-10-19)
|
|
3
|
+
*
|
|
4
|
+
* ## 它凭什么这么短
|
|
5
|
+
*
|
|
6
|
+
* 这是本件最有价值的一点:**P3 只写了这一个文件**。路由 / 会话 / 提问 / 回复 / 记账 /
|
|
7
|
+
* 媒体落盘全都在中立层(`im/inbound-event.ts`,B1)—— 飞书只提供三样:
|
|
8
|
+
* ① 怎么建连接并收消息 ② 一条飞书消息长什么样 ③ 怎么把文本发回去。
|
|
9
|
+
*
|
|
10
|
+
* owner 那句「和微信一样,只不过是 account 方实现不同」在这里是**代码事实**。
|
|
11
|
+
*
|
|
12
|
+
* ## 三条官方约束(照抄会坏,必须各自处理)
|
|
13
|
+
*
|
|
14
|
+
* 1. 🔴 **回调须 3 秒内返回**(官方:超时触发重推)⇒ 回调里**只入队**,处理全异步。
|
|
15
|
+
* 2. 🔴 **超时会重推** ⇒ 必须按 `message_id` **去重**,否则同一句话答两遍。
|
|
16
|
+
* 3. 🔴 **建连成功 ≠ 能收消息** ⇒ 这两件事分开取证(`getConnectionStatus` 只证明前者)。
|
|
17
|
+
*
|
|
18
|
+
* ## 边界(R↓)
|
|
19
|
+
*
|
|
20
|
+
* - ⛔ 不做路由判断、不做会话管理 —— 那是中立层的。
|
|
21
|
+
* - ⛔ 不解析富文本/图片/文件(本期):只取 `message_type === 'text'` 的正文;
|
|
22
|
+
* 其它类型当作"有消息但没文本"交给中立层(它会静默或降级,**不会静默丢连接**)。
|
|
23
|
+
*/
|
|
24
|
+
import type { ImAccountImpl } from './accounts.js';
|
|
25
|
+
import type { ImInboundEvent } from './inbound-event.js';
|
|
26
|
+
/**
|
|
27
|
+
* 飞书 SDK 的最小面(**注入**,不是硬 import)。
|
|
28
|
+
*
|
|
29
|
+
* 🔴 为什么注入(两条理由,一条设计、一条实测):
|
|
30
|
+
* ① **设计**:与微信同款(`installWeixinAccountImpl` 注入 `getUpdates` 等)。
|
|
31
|
+
* 飞书 SDK 是重依赖(protobufjs 等)⇒ 不该成为模块求值时的硬依赖,只在真要起账号时加载。
|
|
32
|
+
* ② **实测**:`vi.mock` 拦不住它 —— 本模块用 `await import('@larksuiteoapi/node-sdk')`,
|
|
33
|
+
* 而该包在 pnpm 下是**外置依赖**,vitest 的动态 import 不被 mock 拦截。实测证据:
|
|
34
|
+
* 测试里跑出了真 SDK 自己的日志 `[error]: ['[ws]', 'invalid appId: cli_x']`
|
|
35
|
+
* ⇒ 若坚持 mock,测的就是"能不能骗过测试装置",不是被测对象。
|
|
36
|
+
* ⇒ 注入后,测试直接给替身,**没有魔法**。
|
|
37
|
+
*/
|
|
38
|
+
export interface FeishuSdk {
|
|
39
|
+
Client: new (p: {
|
|
40
|
+
appId: string;
|
|
41
|
+
appSecret: string;
|
|
42
|
+
}) => {
|
|
43
|
+
im?: {
|
|
44
|
+
v1?: {
|
|
45
|
+
message?: {
|
|
46
|
+
create?: (p: unknown) => Promise<unknown>;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
EventDispatcher: new (p?: unknown) => {
|
|
52
|
+
register: (h: Record<string, (d: never) => unknown>) => unknown;
|
|
53
|
+
};
|
|
54
|
+
WSClient: new (p: {
|
|
55
|
+
appId: string;
|
|
56
|
+
appSecret: string;
|
|
57
|
+
}) => {
|
|
58
|
+
start: (p: {
|
|
59
|
+
eventDispatcher: unknown;
|
|
60
|
+
}) => Promise<void>;
|
|
61
|
+
close: (p?: {
|
|
62
|
+
force?: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 接入 SDK 加载器(`bridge.ts` 在模块求值时注入真加载器;测试注入替身)。
|
|
68
|
+
* 缺省 = 动态 import 真包 —— 这样生产路径不需要 `bridge.ts` 也能独立跑。
|
|
69
|
+
*/
|
|
70
|
+
export declare function installFeishuSdk(loader: () => Promise<FeishuSdk>): void;
|
|
71
|
+
/** 测试辅助:关掉并清空全部长连接(生产零调用) */
|
|
72
|
+
export declare function __closeAllFeishuConnectionsForTest(): void;
|
|
73
|
+
/** 测试辅助:清空去重表(生产零调用) */
|
|
74
|
+
export declare function __resetFeishuSeenForTest(): void;
|
|
75
|
+
/**
|
|
76
|
+
* 从飞书 `im.message.receive_v1` 事件里取出**中立入站事件**。
|
|
77
|
+
*
|
|
78
|
+
* 🔴 这是 P3 唯一的"形状翻译"处,与 `bridge.ts` 里 iLink 的那一处对称。
|
|
79
|
+
* ⚠️ 用户标识用 **open_id**(不是 chat_id):路由表是"人 → 轨迹",
|
|
80
|
+
* 而 chat_id 在群里会变、在单聊里也与人不是一一对应。
|
|
81
|
+
* @returns 无可用发送者/消息体 ⇒ `null`(调用方丢弃并**出声**,不静默)
|
|
82
|
+
*/
|
|
83
|
+
export declare function feishuEventToInbound(data: Record<string, unknown>): ImInboundEvent | null;
|
|
84
|
+
/** 飞书账号实现(登记名 = `feishu`;与配置里的 `channel` 取值一致) */
|
|
85
|
+
export declare const feishuAccountImpl: ImAccountImpl;
|
|
86
|
+
/**
|
|
87
|
+
* 注册飞书实现(`bridge.ts` 在**模块求值时**调用)。
|
|
88
|
+
*
|
|
89
|
+
* ⚠️ 与微信同款教训(续 220 实测 12 例红):注册必须在**模块求值**时发生,
|
|
90
|
+
* 不能等 `apply` —— 测试与面板会**直接**调 `syncCccBridge` / `syncHumanChannel`。
|
|
91
|
+
*/
|
|
92
|
+
export declare function installFeishuAccountImpl(): void;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* im/inbound-event.ts — **中立入站事件层**(B1,2026-10-19)
|
|
3
|
+
*
|
|
4
|
+
* ## 这一层解决的是什么
|
|
5
|
+
*
|
|
6
|
+
* `handleIncoming` 原先吃的 `msg` 是 **iLink 形状**(`from_user_id` / `context_token` /
|
|
7
|
+
* `item_list` / `message_type`)。飞书的消息形状与它**没有一处相同**,所以接第二家 IM
|
|
8
|
+
* 的真正工作量不在"建连接",而在**把各家消息归一成同一个东西**。
|
|
9
|
+
*
|
|
10
|
+
* 本文件就是那个"同一个东西",以及消费它的**通道中立主流程**。
|
|
11
|
+
*
|
|
12
|
+
* ## 切法(为什么这样切,而不是改 `handleIncoming` 的签名)
|
|
13
|
+
*
|
|
14
|
+
* 🔴 实测爆炸半径:全仓 **约 50 处**测试直接驱动 `handleIncoming` 的 iLink 形状。
|
|
15
|
+
* 直接改签名 ⇒ 那 50 处同时要改 ⇒ 而 B1 的验收判据恰恰是「**微信行为逐字不变**」
|
|
16
|
+
* (用例数守恒 + 真机一条微信)。判据自己会失去可复算性。
|
|
17
|
+
*
|
|
18
|
+
* ⇒ 切法是**适配器**:
|
|
19
|
+
* - 本文件 `handleInboundEvent()` = 真正的主流程,**零 iLink 概念**;
|
|
20
|
+
* - `bridge.ts` 的 `handleIncoming()` 退化成**薄适配器**:iLink 消息 → 中立事件 + iLink 的 io;
|
|
21
|
+
* - 飞书实现自己造中立事件 + 飞书的 io,调到**同一个** `handleInboundEvent`。
|
|
22
|
+
*
|
|
23
|
+
* 收益:微信侧调用点与测试**逐字不动**;第二条、第三条 IM 只是**新增一个适配器**。
|
|
24
|
+
*
|
|
25
|
+
* ## 边界(R↓:这层刻意**不**管什么)
|
|
26
|
+
*
|
|
27
|
+
* - ⛔ **不管连接怎么建**(长轮询 vs WebSocket 回调)—— 那是各账号实现自己的事。
|
|
28
|
+
* - ⛔ **不管凭据怎么取** —— `io` 与事件都由实现处构造好再交进来。
|
|
29
|
+
* - ✅ 只负责:「一条已到达的消息,该投到哪条认知轨迹、怎么答、怎么记账」。
|
|
30
|
+
*/
|
|
31
|
+
import type { Context } from 'cordis';
|
|
32
|
+
import { type SkiffProfile } from '../trajectory/policy/profile.js';
|
|
33
|
+
/**
|
|
34
|
+
* 一条**已到达**的入站消息(归一后)。
|
|
35
|
+
*
|
|
36
|
+
* 刻意只留**主流程真正用到的**字段 —— 每多留一个通道特定的字段,这一层就多一处
|
|
37
|
+
* 需要为两家分别解释的东西(E↓)。
|
|
38
|
+
*/
|
|
39
|
+
export interface ImInboundEvent {
|
|
40
|
+
/** 发送者在**该通道内**的稳定标识(微信 = from_user_id;飞书 = open_id) */
|
|
41
|
+
userId: string;
|
|
42
|
+
/** 正文(含语音转写)。无文本 ⇒ `null` */
|
|
43
|
+
text: string | null;
|
|
44
|
+
/** 媒体项(图片/文件)。顺序即到达顺序 */
|
|
45
|
+
media: ImMediaItem[];
|
|
46
|
+
/** 有语音但**没有转写文本**(触发降级告知;与 `text` 同时为空时才有意义) */
|
|
47
|
+
hasVoice: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* 回复锚点。微信 = `context_token`(回复必须带上它);飞书**没有这个概念**
|
|
50
|
+
* ⇒ 可选。⛔ 不要在消费侧假设它一定在。
|
|
51
|
+
*/
|
|
52
|
+
replyRef?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 一个媒体项:**取字节的动作由通道自己提供**。
|
|
56
|
+
*
|
|
57
|
+
* 为什么把下载放进事件里,而不是让主流程拿着 `item` 去调 `downloadMedia`:
|
|
58
|
+
* 后者是 iLink 的 CDN 协议,飞书是 `im.v1.messageResource.get` —— 两者除了
|
|
59
|
+
* "返回一堆字节"之外没有任何共同点。⇒ 中立层只约定**取字节这个动作**。
|
|
60
|
+
*/
|
|
61
|
+
export interface ImMediaItem {
|
|
62
|
+
kind: 'image' | 'file';
|
|
63
|
+
/** 原始文件名(file 才有;**未净化**,净化在落盘侧做) */
|
|
64
|
+
fileName?: string;
|
|
65
|
+
/** 取字节;失败/不可得 ⇒ `null`(主流程**降级告知**,不静默) */
|
|
66
|
+
fetch(): Promise<{
|
|
67
|
+
data: Buffer;
|
|
68
|
+
fileName?: string;
|
|
69
|
+
} | null>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 账号的**动作面**(发消息 / 打字态)。
|
|
73
|
+
*
|
|
74
|
+
* 与 `ImInboundEvent` 成对:进来的是事件,出去的是动作。两者都不含通道协议细节。
|
|
75
|
+
*/
|
|
76
|
+
export interface ImAccountIo {
|
|
77
|
+
/** 发纯文本(实现内部做各自的长度分片与格式转换) */
|
|
78
|
+
sendText(input: {
|
|
79
|
+
toUserId: string;
|
|
80
|
+
text: string;
|
|
81
|
+
replyRef?: string;
|
|
82
|
+
}): Promise<void>;
|
|
83
|
+
/** "正在输入"起始(可实现不了;飞书就没有这个能力) */
|
|
84
|
+
typingStart?(input: {
|
|
85
|
+
toUserId: string;
|
|
86
|
+
replyRef?: string;
|
|
87
|
+
}): Promise<void>;
|
|
88
|
+
/** "正在输入"结束(异常路径也会调 ⇒ 实现须自行容忍未开始的情形) */
|
|
89
|
+
typingStop?(input: {
|
|
90
|
+
toUserId: string;
|
|
91
|
+
}): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 路由解析结果:目标根 + **轨迹编码** + **该轨迹的 skiff 约束面**。
|
|
95
|
+
* `null` 从本函数出去 ⇒ **不投递**(未命中已留痕 / 目标不存在已响亮出声)。
|
|
96
|
+
*/
|
|
97
|
+
export interface ResolvedInboundTarget {
|
|
98
|
+
root: string;
|
|
99
|
+
/** 目标认知轨迹编码(= 新模型里的"身份";旧模型的角色名已退役) */
|
|
100
|
+
trajectory: string;
|
|
101
|
+
/**
|
|
102
|
+
* 该轨迹的 skiff 约束面。
|
|
103
|
+
* ⚠️ **可能为 `null`**:轨迹存在但没有 `skiff.json` ⇒ 它是一条**普通轨迹**,
|
|
104
|
+
* IM 桥照样可以往里投,只是不施加 skiff 约束。
|
|
105
|
+
*/
|
|
106
|
+
profile: SkiffProfile | null;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* **入站路由的单一解析处**(P0-3):机器级订阅表优先 → CCC 级回退;三档语义都在这里落地。
|
|
110
|
+
*
|
|
111
|
+
* 🔴 为什么抽成一个函数而不是写两遍:**两种模式(CCC 起桥 / 机器级起 poller)走的是同一套
|
|
112
|
+
* 判据**,差别只有一格 —— **有没有 CCC 级回退**(`cccFallback`)。写两遍必然分叉。
|
|
113
|
+
*
|
|
114
|
+
* 三档(方案 §3.1,**刻意分档**):
|
|
115
|
+
* - **未命中** ⇒ 不投递 + **留痕**(静默档:这是"表里没有你",不是错误)
|
|
116
|
+
* - **表残缺** ⇒ **响亮出声**(且**独立于是否命中**)
|
|
117
|
+
* - **目标不存在**(CCC / **轨迹**)⇒ **响亮报错**(不静默丢弃)
|
|
118
|
+
*/
|
|
119
|
+
export declare function resolveInboundTarget(ctx: Context, input: {
|
|
120
|
+
account: string;
|
|
121
|
+
user: string;
|
|
122
|
+
cccFallback: {
|
|
123
|
+
root: string;
|
|
124
|
+
trajectory: string;
|
|
125
|
+
} | null;
|
|
126
|
+
}): Promise<ResolvedInboundTarget | null>;
|
|
127
|
+
/**
|
|
128
|
+
* **一条入站消息的主流程**(通道中立)。
|
|
129
|
+
*
|
|
130
|
+
* 职责:路由 → 固定会话 id 创建/延续 → 提问 → 回复(或被闸门拦下后兜底)。
|
|
131
|
+
* 语料(媒体)由事件自带 `fetch()`;出站走的 `io`。
|
|
132
|
+
*
|
|
133
|
+
* 🔴 **本函数没有任何 iLink 概念** —— 这是 B1 的判据。任何 `context_token` /
|
|
134
|
+
* `item_list` / `message_type` 出现在这里,就说明抽缝没抽干净。
|
|
135
|
+
*
|
|
136
|
+
* @param preset 机器级模式:目标已解析好 ⇒ **不再自行路由**,且**不看本 CCC 的 `enabled`**
|
|
137
|
+
*/
|
|
138
|
+
export declare function handleInboundEvent(ctx: Context, root: string, accountId: string, io: ImAccountIo, event: ImInboundEvent, preset?: {
|
|
139
|
+
target: ResolvedInboundTarget;
|
|
140
|
+
}): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* 手动输出模式的**机制标记**(v1.30.10 引入;v1.30.16 按「ACC 管机制、CCC 管措辞」重构)。
|
|
143
|
+
*
|
|
144
|
+
* 边界(R↓):ACC 只提供**机制与数据**——"桥不转发最终文本"这个事实 + 三个已填好的参数值。
|
|
145
|
+
* **纪律措辞归 CCC**:怎么写、必须怎么做、后果是什么,全部写在轨迹的 `PROMPT.md` 里。
|
|
146
|
+
*/
|
|
147
|
+
export declare function manualOutputMarker(accountId: string, userId: string): string;
|
|
148
|
+
/**
|
|
149
|
+
* 手动输出模式的**兜底判定**(纯函数,v1.30.17——把决策矩阵从装配里抽出来,可独立测试)。
|
|
150
|
+
*
|
|
151
|
+
* 四个条件同时成立才兜底:
|
|
152
|
+
* ① CCC 显式开启 `fallbackOnNoSend`(缺省 false = 严格静默)
|
|
153
|
+
* ② 机械闸门**已装配**(未装配时无法判定"是否发送过" → 宁可静默也不冒重复发送风险)
|
|
154
|
+
* ③ 本轮**没有**成功发送(agent 自己发过 → 输出权归 agent,桥不插话)
|
|
155
|
+
* ④ 有最终文本可转发(空文本无意义)
|
|
156
|
+
*/
|
|
157
|
+
export declare function manualOutputFallbackNeeded(input: {
|
|
158
|
+
fallbackOnNoSend?: boolean;
|
|
159
|
+
guardActive: boolean;
|
|
160
|
+
sentThisTurn: boolean;
|
|
161
|
+
answer: string;
|
|
162
|
+
}): boolean;
|
package/lib/im/route.d.ts
CHANGED
|
@@ -78,6 +78,19 @@ export declare function readWeixinCredential(root: string, accountId: string): W
|
|
|
78
78
|
export declare function writeWeixinCredential(root: string, accountId: string, cred: WeixinAccountCredential): void;
|
|
79
79
|
/** 清除账号凭据(移除账号时) */
|
|
80
80
|
export declare function clearWeixinCredential(root: string, accountId: string): void;
|
|
81
|
+
/** 飞书账号凭据(appSecret 缺 ⇒ 账号未绑定) */
|
|
82
|
+
export interface FeishuAccountCredential {
|
|
83
|
+
/** 应用 appId(自建应用「凭证与基础信息」页) */
|
|
84
|
+
appId: string;
|
|
85
|
+
/** 应用 appSecret(**凭据**,只在 localstore) */
|
|
86
|
+
appSecret: string;
|
|
87
|
+
}
|
|
88
|
+
/** 读取飞书账号凭据(appId 或 appSecret 缺失 → null——账号未绑定) */
|
|
89
|
+
export declare function readFeishuCredential(root: string, accountId: string): FeishuAccountCredential | null;
|
|
90
|
+
/** 写入飞书账号凭据(面板保存后;两者都必写——只写一半等于没绑) */
|
|
91
|
+
export declare function writeFeishuCredential(root: string, accountId: string, cred: FeishuAccountCredential): void;
|
|
92
|
+
/** 清除飞书账号凭据(移除账号时) */
|
|
93
|
+
export declare function clearFeishuCredential(root: string, accountId: string): void;
|
|
81
94
|
/**
|
|
82
95
|
* 路由匹配:exact user 优先,通配 `*` 兜底。
|
|
83
96
|
* @returns 命中的**轨迹编码**;未命中 → null(无路由 → 消息不回复/忽略)
|
package/lib/index.d.ts
CHANGED
|
@@ -164,10 +164,6 @@ export interface Config {
|
|
|
164
164
|
gatewayEnabled?: Volatile<boolean | undefined>;
|
|
165
165
|
/** F2 触发阈值(K token;面板层;部署层同义键 = `rebuild.thresholdK`) */
|
|
166
166
|
rebuildThresholdK?: Volatile<number | undefined>;
|
|
167
|
-
/** F4 Skiff 调试服务总开关(面板层;部署层同义键 = `skiff.enabled`) */
|
|
168
|
-
skiffEnabled?: Volatile<boolean | undefined>;
|
|
169
|
-
/** F4 Skiff 调试端口(面板层;部署层同义键 = `skiff.debugPort`) */
|
|
170
|
-
skiffDebugPort?: Volatile<number | undefined>;
|
|
171
167
|
/** CRO(轨迹自编程唤起)总闸(面板层;无部署层同义键;缺省开) */
|
|
172
168
|
croEnabled?: Volatile<boolean | undefined>;
|
|
173
169
|
/** **diagram 工具总闸**(面板层;部署层同义键 = `diagram.enabled`;缺省关;D104) */
|
|
@@ -201,13 +197,6 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
201
197
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
202
198
|
thresholdK: z<number, number, "defined">;
|
|
203
199
|
}>>, "plain">;
|
|
204
|
-
skiff: z<Schemastery.ObjectS<NoInfer<{
|
|
205
|
-
enabled: z<boolean, boolean, "defined">;
|
|
206
|
-
debugPort: z<number, number, "defined">;
|
|
207
|
-
}>>, Schemastery.ObjectT<NoInfer<{
|
|
208
|
-
enabled: z<boolean, boolean, "defined">;
|
|
209
|
-
debugPort: z<number, number, "defined">;
|
|
210
|
-
}>>, "plain">;
|
|
211
200
|
webFetch: z<Schemastery.ObjectS<NoInfer<{
|
|
212
201
|
enabled: z<boolean, boolean, "defined">;
|
|
213
202
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
@@ -257,8 +246,6 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
257
246
|
}>>, "plain">;
|
|
258
247
|
gatewayEnabled: z<boolean, boolean, "volatile">;
|
|
259
248
|
rebuildThresholdK: z<number, number, "volatile">;
|
|
260
|
-
skiffEnabled: z<boolean, boolean, "volatile">;
|
|
261
|
-
skiffDebugPort: z<number, number, "volatile">;
|
|
262
249
|
croEnabled: z<boolean, boolean, "volatile">;
|
|
263
250
|
diagramEnabled: z<boolean, boolean, "volatile">;
|
|
264
251
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
@@ -283,13 +270,6 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
283
270
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
284
271
|
thresholdK: z<number, number, "defined">;
|
|
285
272
|
}>>, "plain">;
|
|
286
|
-
skiff: z<Schemastery.ObjectS<NoInfer<{
|
|
287
|
-
enabled: z<boolean, boolean, "defined">;
|
|
288
|
-
debugPort: z<number, number, "defined">;
|
|
289
|
-
}>>, Schemastery.ObjectT<NoInfer<{
|
|
290
|
-
enabled: z<boolean, boolean, "defined">;
|
|
291
|
-
debugPort: z<number, number, "defined">;
|
|
292
|
-
}>>, "plain">;
|
|
293
273
|
webFetch: z<Schemastery.ObjectS<NoInfer<{
|
|
294
274
|
enabled: z<boolean, boolean, "defined">;
|
|
295
275
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
@@ -339,8 +319,6 @@ export declare const Config: z<Schemastery.ObjectS<NoInfer<{
|
|
|
339
319
|
}>>, "plain">;
|
|
340
320
|
gatewayEnabled: z<boolean, boolean, "volatile">;
|
|
341
321
|
rebuildThresholdK: z<number, number, "volatile">;
|
|
342
|
-
skiffEnabled: z<boolean, boolean, "volatile">;
|
|
343
|
-
skiffDebugPort: z<number, number, "volatile">;
|
|
344
322
|
croEnabled: z<boolean, boolean, "volatile">;
|
|
345
323
|
diagramEnabled: z<boolean, boolean, "volatile">;
|
|
346
324
|
}>>, "plain">;
|