@heybox/hb-sdk-protocol 0.9.1-alpha.0 → 0.9.1-alpha.10

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.
@@ -0,0 +1,7 @@
1
+ /** 小程序固定受管动作入口。 */
2
+ declare const WORKSPACE_CARD_COMMANDS: {
3
+ readonly invoke: "ai-desktop.heybox-user-miniprogram.workspace-cards.invoke";
4
+ readonly openMiniProgram: "ai-desktop.heybox-user-miniprogram.workspace-cards.open-mini-program";
5
+ };
6
+
7
+ export { WORKSPACE_CARD_COMMANDS };
package/src/bridge.ts DELETED
@@ -1,196 +0,0 @@
1
- import {
2
- COMPANION_SESSION_EXIT_EVENT,
3
- COMPANION_SESSION_OUTPUT_EVENT,
4
- COMPANION_SESSION_OWNERSHIP_LOST_EVENT,
5
- MINI_PROGRAM_MESSAGE_NAMESPACE,
6
- MINI_PROGRAM_OPERATION_PROGRESS_METHOD,
7
- } from './constants';
8
- import type {
9
- CompanionSessionExitPayload,
10
- CompanionSessionOutputPayload,
11
- CompanionSessionOwnershipLostPayload,
12
- DownloadProgressPayload,
13
- MiniProgramRuntimeEnvironmentInfo,
14
- UserInfoAuthorization,
15
- } from './payloads';
16
- import type { MiniProgramCapabilityProgress, MiniProgramProgressMethod } from './capabilities';
17
-
18
- export type MiniProgramBridgeMessageType = 'handshake' | 'request' | 'response' | 'event' | 'cancel';
19
- /**
20
- * 小程序可订阅的生命周期、展示状态及业务事件名。
21
- *
22
- * @remarks
23
- * 每个事件的载荷见 {@link MiniProgramEventPayloadMap}。事件不会向晚订阅者重放;`ready`
24
- * 是握手成功通知,不是可查询的持久状态,也不保证只收到一次。具体事件能否产生取决于
25
- * Host 的能力与生命周期,不能仅凭事件名称推导状态去重或投递保证。
26
- */
27
- export type MiniProgramEventName =
28
- | 'launch'
29
- | 'viewport_change'
30
- | 'display_change'
31
- | 'ready'
32
- | 'show'
33
- | 'hide'
34
- | 'unload'
35
- | 'error'
36
- | 'heybox_app_login_change'
37
- | 'user_info_authorization_change'
38
- | typeof COMPANION_SESSION_OUTPUT_EVENT
39
- | typeof COMPANION_SESSION_EXIT_EVENT
40
- | typeof COMPANION_SESSION_OWNERSHIP_LOST_EVENT;
41
-
42
- export interface MiniProgramBridgeError {
43
- code: string;
44
- message: string;
45
- data?: unknown;
46
- }
47
- export interface SDKHandshakePayload {
48
- href: string;
49
- userAgent: string;
50
- sdkVersion: string;
51
- }
52
- /** Runtime 对 SDK 握手的可选扩展响应。 */
53
- export interface SDKHandshakeResult {
54
- /** Host 与 Runtime 归一化后的环境快照。 */
55
- environment: MiniProgramRuntimeEnvironmentInfo;
56
- }
57
- export interface RuntimeLocationProbePayload {
58
- probeId: string;
59
- timestamp: number;
60
- }
61
- export type SDKLocationReportTrigger = 'probe' | 'history' | 'popstate' | 'hashchange' | 'pageshow' | 'resume';
62
- export interface SDKLocationReportPayload {
63
- probeId?: string;
64
- href: string;
65
- sdkVersion: string;
66
- trigger: SDKLocationReportTrigger;
67
- timestamp: number;
68
- }
69
- export type SDKCSPBlockedResourceType = 'url' | 'inline' | 'eval' | 'unknown';
70
- export interface SDKCSPViolationPayload {
71
- effectiveDirective: string;
72
- violatedDirective: string;
73
- disposition: string;
74
- blockedResourceType: SDKCSPBlockedResourceType;
75
- blockedOrigin?: string;
76
- redactedPathname?: string;
77
- sanitizedPathnameHash?: string;
78
- sdkVersion: string;
79
- timestamp: number;
80
- }
81
-
82
- /**
83
- * SDK 与 Host Runtime 跨 iframe 传输时共用的顶层 bridge envelope。
84
- *
85
- * @typeParam TPayload - 当前 method 对应的 payload 类型;未知或尚未按 method 收窄时默认为 `unknown`。
86
- *
87
- * @remarks
88
- * 该类型刻意保留为宽 envelope,以同时表达 handshake、request、response、event 与 cancel。
89
- * 字段组合的运行时约束由 {@link isMiniProgramBridgeMessage} 执行;v2 cancel 和 operation progress
90
- * 可分别使用 {@link MiniProgramBridgeCancelMessage} 与 {@link MiniProgramBridgeProgressMessage}
91
- * 获得更精确的静态类型。
92
- *
93
- * 类型匹配不建立信任边界。从 `postMessage` 接收数据时,先以 `unknown` 交给 guard,再独立校验
94
- * `MessageEvent.source`、预期 nonce、握手状态,以及具体 method 的 payload;当 origin 可以固定且
95
- * 当前协议模式要求时,再校验 `MessageEvent.origin`。
96
- */
97
- export interface MiniProgramBridgeMessage<TPayload = unknown> {
98
- /** 固定协议 namespace,用于从其他页面消息中识别候选 envelope。 */
99
- namespace: typeof MINI_PROGRAM_MESSAGE_NAMESPACE;
100
- /** 当前消息采用的 wire 版本;新消息使用 v2,接收端为兼容握手接受 v1。 */
101
- version: 1 | 2;
102
- /** Runtime 创建 iframe 时分配并由双方逐条回传的实例 nonce。 */
103
- nonce: string;
104
- /** 决定 id、method、payload 与 error 组合规则的消息类别。 */
105
- type: MiniProgramBridgeMessageType;
106
- /** 请求关联 ID;普通生命周期 event 可省略,request、response、handshake、cancel 与 progress 必须提供。 */
107
- id?: string;
108
- /** capability 或事件名;response 可省略,cancel 禁止携带。 */
109
- method?: string;
110
- /** method 对应的 wire payload;必须在按 method 分发后继续校验。 */
111
- payload?: TPayload;
112
- /** 失败 response 的结构化错误;其他消息类型不得携带。 */
113
- error?: MiniProgramBridgeError;
114
- }
115
-
116
- export interface MiniProgramBridgeCancelMessage extends MiniProgramBridgeMessage<never> {
117
- version: 2;
118
- type: 'cancel';
119
- id: string;
120
- method?: never;
121
- payload?: never;
122
- error?: never;
123
- }
124
-
125
- export interface MiniProgramBridgeProgressMessage<
126
- TMethod extends MiniProgramProgressMethod = MiniProgramProgressMethod,
127
- > extends MiniProgramBridgeMessage<MiniProgramCapabilityProgress<TMethod>> {
128
- version: 2;
129
- type: 'event';
130
- id: string;
131
- method: typeof MINI_PROGRAM_OPERATION_PROGRESS_METHOD;
132
- payload: MiniProgramCapabilityProgress<TMethod>;
133
- error?: never;
134
- }
135
- /**
136
- * 公开事件名与对应载荷的映射,供 SDK 的类型化事件监听使用。
137
- *
138
- * @remarks
139
- * 生命周期 `timestamp` 是 Runtime 发出通知时的 Unix 毫秒时间,不是 iframe 收到事件的
140
- * 时间或单调时钟。事件只通知已注册的监听器;业务需要当前状态时应使用相应读取 API。
141
- */
142
- export interface MiniProgramEventPayloadMap {
143
- /** 展示状态实际变化后通知;不回放初始状态,不支持或失败时不通知。 */
144
- display_change: import('./payloads').MiniProgramDisplayState & {
145
- /** api 为开发者调用;user 为用户点击宿主退出全屏按钮。同目标合并时保留首次发起来源。旧宿主可能不提供。 */
146
- source?: 'api' | 'user';
147
- };
148
- /** 窗口信息变化通知;载荷与 `viewport.getWindowInfo()` 的结果结构一致。 */
149
- viewport_change: import('./payloads').MiniProgramWindowInfoResult;
150
- /** 初次握手时的启动通知;晚订阅不能补收。 */
151
- launch: {
152
- /** Runtime 发出通知时的 Unix 毫秒时间。 */
153
- timestamp: number;
154
- /** Host 加载 iframe 时的启动 URL;可缺失,不代表页面当前导航地址。 */
155
- url?: string;
156
- };
157
- /** 握手成功通知;重复握手可再次产生,应查询持久握手状态驱动 UI。 */
158
- ready: {
159
- /** Runtime 发出通知时的 Unix 毫秒时间。 */
160
- timestamp: number;
161
- };
162
- /** Host 通知小程序进入展示状态。 */
163
- show: {
164
- /** Runtime 发出通知时的 Unix 毫秒时间。 */
165
- timestamp: number;
166
- /** Host 可选提供的来源描述;不保证存在或采用固定枚举。 */
167
- source?: string;
168
- };
169
- /** Host 通知小程序进入隐藏状态。 */
170
- hide: {
171
- /** Runtime 发出通知时的 Unix 毫秒时间。 */
172
- timestamp: number;
173
- /** Host 可选提供的来源描述;不保证存在或采用固定枚举。 */
174
- source?: string;
175
- };
176
- /** Runtime 卸载的尽力通知;不能保证页面销毁前一定收到。 */
177
- unload: {
178
- /** Runtime 发出通知时的 Unix 毫秒时间。 */
179
- timestamp: number;
180
- };
181
- /** 结构化 Runtime 错误通知;载荷不是 JavaScript `Error` 实例。 */
182
- error: MiniProgramBridgeError;
183
- /** Host 当前登录状态通知;相同状态可能重复出现,不能仅凭事件判断账号身份是否变化。 */
184
- heybox_app_login_change: {
185
- /** Host 当前是否有已登录的小黑盒账号,不表示开发者服务端会话状态。 */
186
- isHeyboxAppLoggedIn: boolean;
187
- };
188
- /** 当前用户授权状态通知;可包含可选 `steam_account`,不是 Manifest 权限状态。 */
189
- user_info_authorization_change: UserInfoAuthorization;
190
- /** 当前 Companion controller 收到的输出片段;去重与确认依据见载荷中的 sequence。 */
191
- [COMPANION_SESSION_OUTPUT_EVENT]: CompanionSessionOutputPayload;
192
- /** Companion session 的进程退出通知。 */
193
- [COMPANION_SESSION_EXIT_EVENT]: CompanionSessionExitPayload;
194
- /** 当前 controller 失去 Companion session 控制权的通知。 */
195
- [COMPANION_SESSION_OWNERSHIP_LOST_EVENT]: CompanionSessionOwnershipLostPayload;
196
- }