@heybox/hb-sdk 0.9.2-alpha.8 → 0.9.2

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.
Files changed (41) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +2 -2
  3. package/dist/card-controller.cjs.js +35 -3
  4. package/dist/card-controller.esm.js +35 -3
  5. package/dist/cli-chunks/{build-BinntZJf.cjs → build-Dw22VIXS.cjs} +5 -5
  6. package/dist/cli-chunks/{context-BI3QMxw2.cjs → context-wxnfvTjH.cjs} +2 -2
  7. package/dist/cli-chunks/{create-BK028Mlk.cjs → create-ecaoeTnL.cjs} +1 -1
  8. package/dist/cli-chunks/{deploy-lock-pKDDxTKm.cjs → deploy-lock--NJ7NdXX.cjs} +1 -1
  9. package/dist/cli-chunks/{dev-DeNzUY6g.cjs → dev-Brpzyt0U.cjs} +8 -8
  10. package/dist/cli-chunks/{doctor-BOfbKnN2.cjs → doctor-D9YqT9KQ.cjs} +1 -1
  11. package/dist/cli-chunks/{games-yqu20laX.cjs → games-C1ecYTTz.cjs} +2 -2
  12. package/dist/cli-chunks/{index-C7nrP0tt.cjs → index-B3Rry_DT.cjs} +1 -1
  13. package/dist/cli-chunks/{index-CY67PpQk.cjs → index-BbBDiBGu.cjs} +17 -17
  14. package/dist/cli-chunks/{index.esm-DQdwzMhB.cjs → index.esm-4AAnDlTK.cjs} +6 -6
  15. package/dist/cli-chunks/{login-PJdMmFoB.cjs → login-e8GwAqrB.cjs} +1 -1
  16. package/dist/cli-chunks/{project-vite-Dm128JTE.cjs → project-vite-CCK80P0l.cjs} +1 -1
  17. package/dist/cli-chunks/{remote-CZuy1lmn.cjs → remote-BrcgN56P.cjs} +7 -7
  18. package/dist/cli-chunks/{runtime-gate-g3afiufR.cjs → runtime-gate-DlljPriy.cjs} +3 -2
  19. package/dist/cli-chunks/{runtime-permission-env-CDx5qO-T.cjs → runtime-permission-env-BHzCLf1O.cjs} +14 -2
  20. package/dist/cli-chunks/{skill-Bdy5Ehue.cjs → skill-DzD5EQiw.cjs} +2 -2
  21. package/dist/cli-chunks/{version-D40WHkF9.cjs → version-Cg_M8yWW.cjs} +1 -1
  22. package/dist/cli.cjs +1 -1
  23. package/dist/devtools/browser-dev-host/assets/{browser-dev-host-BW7iWnpt.js → browser-dev-host-BRNJVknP.js} +1 -1
  24. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-lmlBUG16.js → desktop-app-launch-DcTaMyDt.js} +1 -1
  25. package/dist/devtools/browser-dev-host/assets/{index-D7F2y1lF.js → index-p1R5T0MK.js} +3 -3
  26. package/dist/devtools/browser-dev-host/index.html +2 -2
  27. package/dist/index.cjs.js +13 -5
  28. package/dist/index.esm.js +13 -5
  29. package/dist/miniapp-publish.cjs.js +13 -81
  30. package/dist/miniapp-publish.esm.js +14 -80
  31. package/dist/protocol.cjs.js +13 -0
  32. package/dist/protocol.esm.js +13 -0
  33. package/dist/vite.cjs.js +6 -1
  34. package/dist/vite.esm.js +6 -1
  35. package/package.json +6 -5
  36. package/skill/skill.json +4 -4
  37. package/types/card-controller.d.ts +35 -3
  38. package/types/index.d.ts +51 -51
  39. package/types/miniapp-publish/index.d.ts +15 -60
  40. package/types/protocol.d.ts +10 -10
  41. package/types/vite/index.d.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,47 @@
2
2
 
3
3
  本文件随 `@heybox/hb-sdk` npm 包公开分发,只记录外部小程序开发者可观察到的变化。
4
4
 
5
+ ## 0.9.2 - 2026-10-20
6
+
7
+ ### 必须操作
8
+
9
+ - [真机调试](https://docs.xiaoheihe.cn/hb_sdk/guide/cli)请将项目中的 `@heybox/hb-sdk` 升级至 `0.9.2`,重新运行 `hb-sdk dev` 并打开调试会话。启动前须完成 CLI 登录、小程序绑定及远端配置校验;校验失败时按提示修复后重试。
10
+ - 移除 `@heybox/hb-sdk/miniapp-publish` 导出的 `getMiniappUploadKey()`、`validateUploadPaths()` 及其类型;升级前请检查项目是否直接引用这些导出。
11
+
12
+ ### 新增能力
13
+
14
+ - 新增[云端字符串存储](https://docs.xiaoheihe.cn/hb_sdk/guide/cloud-storage) `cloud.storage.getStorage()`、`cloud.storage.setStorage()`、`cloud.storage.getKeys()` 和 `cloud.storage.removeItem()`;须声明 `cloud_storage` 权限并登录,数据按小程序与用户隔离。
15
+ - 新增 [auth.getAccountState()](https://docs.xiaoheihe.cn/hb_sdk/reference/sdk/auth/getAccountState.html),用于启动和回到前台时静默检查缓存业务会话是否仍属于当前 APP 账号;验证失败时保持待确认。
16
+ - `auth.login()` 返回值与 [`heybox_app_login_change`](https://docs.xiaoheihe.cn/hb_sdk/guide/lifecycle#app-%E8%B4%A6%E5%8F%B7%E5%8F%98%E5%8C%96%E4%B8%8E%E4%B8%9A%E5%8A%A1%E4%BC%9A%E8%AF%9D) 增加可选的本地账号标识 [`accountKey`](https://docs.xiaoheihe.cn/hb_sdk/guide/auth#%E4%B8%9A%E5%8A%A1%E4%BC%9A%E8%AF%9D%E7%9A%84%E8%B4%A6%E5%8F%B7%E4%B8%80%E8%87%B4%E6%80%A7),用于发现切号并停用旧会话;旧 Host 可能不提供该字段。
17
+ - 新增 [`hb-sdk remote games search "游戏名" --json`](https://docs.xiaoheihe.cn/hb_sdk/guide/project-configuration#%E6%9F%A5%E8%AF%A2%E5%85%B3%E8%81%94%E6%B8%B8%E6%88%8F-id),查询平台游戏 appid、中英文名称和分页结果,无需先绑定小程序项目;操作过于频繁时提示稍后重试。
18
+
19
+ ### 行为调整
20
+
21
+ - [云存储限制](https://docs.xiaoheihe.cn/hb_sdk/guide/cloud-storage#%E9%99%90%E5%88%B6%E4%B8%8E%E9%94%99%E8%AF%AF):key 仅支持英文字母、数字、下划线和连字符,最长 128 字符;value 最大 16 KB,不存在的 key 返回 `undefined`。
22
+ - [手机真机调试](https://docs.xiaoheihe.cn/hb_sdk/guide/cli#%E6%B5%8F%E8%A7%88%E5%99%A8-mock-%E7%9A%84%E8%BE%B9%E7%95%8C)时,`network.request()` 仅对 `localhost` 和 `127.0.0.*` 使用开发机代理,其它域名和 IP 使用手机自身网络。
23
+ - [`hb-sdk dev`](https://docs.xiaoheihe.cn/hb_sdk/guide/cli#_1-%E5%90%AF%E5%8A%A8%E8%B0%83%E8%AF%95%E9%A1%B5) 启动校验失败时退出并提供修复指引,不再自动进入匿名 Browser Mock;启动后真机调试暂不可用时,仍可继续使用浏览器调试。
24
+ - 开发启动、构建和部署时,对简介缺失、工具类未关联游戏给出[非阻断提醒](https://docs.xiaoheihe.cn/hb_sdk/guide/project-configuration#%E8%B5%84%E6%96%99%E5%AE%8C%E5%96%84%E6%8F%90%E9%86%92)。Agent Skill 主动检查分类、简介和游戏绑定,保留已有内容,通用工具可保持不关联游戏。
25
+
26
+ ### 问题修复
27
+
28
+ - 修复旧版 Android WebView 中[本地存储](https://docs.xiaoheihe.cn/hb_sdk/guide/storage)读写和清理失败的问题。
29
+ - 修复同账号登录态刷新导致云存储误报登录状态变化的问题。
30
+ - 修复部分鸿蒙客户端读取 Steam 游戏库时超时的问题。
31
+ - 修复合法内测版本和历史预览入口读取用户信息失败的问题。
32
+ - 修复 Vite 5/6 开发服务在输出资料或旧模板平台提醒时无法启动的问题。
33
+
34
+ ### 文档与工具
35
+
36
+ - [API Reference](https://docs.xiaoheihe.cn/hb_sdk/reference/compatibility) 中的 API 可用版本统一展示正式版,并修正部分版本标注。
37
+
38
+ ## 0.9.2-alpha.9 - 2026-10-20
39
+
40
+ ### 文档与工具
41
+
42
+ - 公开 API Reference、指南与包 README 中的 API 可用版本只展示正式版,不再出现 `-alpha` 等预发布标记;尚未发布的 API 标注目标正式版。
43
+ - 修正 5 处「可用版本早于实际可导入版本」的标注:`viewport.setDisplay` 改为 `0.8.3`,`workspaceCards.requestRefresh` / `getLaunchContext` / `onLaunchContextChange` 改为 `0.9.1`,`cloud.storage` 四个方法改为目标正式版 `0.9.2`,`hasMiniappRuntimeGate` 与 `validateMiniappManifestForDeploy` 改为 `0.8.2`。
44
+ - 移除 `./miniapp-publish` 中已无调用方的 `getMiniappUploadKey()` 与 `validateUploadPaths()` 及其类型;其余发布流程内部工具仍然导出,供 CLI 与运营后台复用,不再作为文档承诺的 API 契约。
45
+
5
46
  ## 0.9.2-alpha.8 - 2026-10-20
6
47
 
7
48
  ### 新增能力
@@ -1150,4 +1191,5 @@
1150
1191
 
1151
1192
  ## 0.5.6
1152
1193
 
1194
+ - 未发布到 npm 的稳定版本候选,不进入公开文档投影。
1153
1195
  - 开始维护公开 Package Changelog。
package/README.md CHANGED
@@ -294,7 +294,7 @@ const stopDisplay = hbSDK.on('display_change', ({ orientation, fullscreen }) =>
294
294
 
295
295
  全屏同时收起胶囊和宿主额外顶部栏,不保证原生内容铺满容器;页面应按实际 WebView 窗口和安全区适配;这不代表系统状态栏、手势条被隐藏或设备安全区消失,重要控件仍应按实际窗口信息避让。宿主 Runtime 统一提供小尺寸“退出全屏”浮动按钮:首次出现和点击右侧边缘重新唤出后,均在 1 秒后淡出并收至边缘,保留可点击的唤出入口。展开时点击按钮会调用 `setDisplay({ orientation: 'portrait', fullscreen: false })`,恢复竖屏、非全屏;退出全屏或销毁会话时移除按钮。H5 无需另行提供退出控件,也可按需提供自己的入口。业务也可通过 `navigation.close()` 提供退出入口;窗口变化事件本身不代表设备方向发生变化。
296
296
 
297
- 该 API 为实验能力,自 SDK `0.8.1-alpha.4` 提供,Android/iOS 原生能力最低客户端版本为 `1.3.396`,实际以桥接能力为准。SDK 将 `METHOD_FORBIDDEN`、`METHOD_NOT_FOUND` 和 `REQUEST_UNSUPPORTED` 统一转换为 `{ supported: false }`。本地 Web/PC Host 不伪造方向或胶囊支持,请在已接入的移动端真机验收。
297
+ 该 API 为实验能力,自 SDK `0.8.3` 提供,Android/iOS/OHOS 原生能力最低客户端版本为 `1.3.396`,实际以桥接能力为准。SDK 将 `METHOD_FORBIDDEN`、`METHOD_NOT_FOUND` 和 `REQUEST_UNSUPPORTED` 统一转换为 `{ supported: false }`。本地 Web/PC Host 不伪造方向或胶囊支持,请在已接入的移动端真机验收。
298
298
 
299
299
  ## 错误处理
300
300
 
@@ -349,7 +349,7 @@ SDK 还提供 `getHandshakeState()` / `onHandshakeStateChange()` 管理持久握
349
349
  - `user.revokeAuthorization()` 在两种网络模式下都要求可信用户手势;成功后必须停止使用并清理业务缓存的旧身份、资料和服务端会话。
350
350
  - `on()` 返回取消监听函数,组件卸载或页面销毁时需要调用。
351
351
  - `storage.setStorage()` 每个小程序最多写入 1000 个不同的 key(已写过的 key 可反复更新);超出时返回 `STORAGE_QUOTA_EXCEEDED`。不要用时间戳、URL 等动态值拼 key,批量或大体积数据请写入 `files` sandbox。支持清理的宿主允许用户从简介页清理本地数据,范围与限制见[本地存储](https://docs.xiaoheihe.cn/hb_sdk/guide/storage)。
352
- - 现有业务网络请求仍使用 `network.request()`;该 API 仍受支持,但目前没有替代调用入口,不要依赖浏览器原生网络出口。自 `0.8.1-alpha.7` 起 `withCredentials` 配置已移除,传入会被忽略且不报错。
352
+ - 现有业务网络请求仍使用 `network.request()`;该 API 仍受支持,但目前没有替代调用入口,不要依赖浏览器原生网络出口。自 `0.8.1` 起 `withCredentials` 配置已移除,传入会被忽略且不报错。
353
353
  - 公开 `network.request()` 与 `network.download()` 均使用 no-follow redirect policy;3xx 不会在 Host 内静默跳转。
354
354
  - `network.request()` 不能访问平台保留的 runtime auth 与 OpenAPI 内部路径;页面不得持有或交换服务端应用凭据。
355
355
  - `network.request` 不支持 `multipart/form-data`;App Host 仅支持 form(`application/x-www-form-urlencoded`)与 JSON。表单请用 `URLSearchParams#toString()` 作为 `data`,文件上传请走专用上传能力。
@@ -89,6 +89,11 @@ function viewDocument(regions, options = {}) {
89
89
  return compact({ schema: VIEW_SCHEMA_VERSION, regions: [...regions], ...options });
90
90
  }
91
91
 
92
+ /**
93
+ * 工作区卡片定义入口。
94
+ *
95
+ * @since 0.9.1
96
+ */
92
97
  function defineCard(definition) { return definition; }
93
98
  const actionInput = {
94
99
  string: (options = {}) => ({ type: 'string', ...options }),
@@ -99,6 +104,11 @@ const actionInput = {
99
104
  type: 'object', properties, required: Object.keys(properties), additionalProperties: false,
100
105
  }),
101
106
  };
107
+ /**
108
+ * 工作区卡片 action 定义入口。
109
+ *
110
+ * @since 0.9.1
111
+ */
102
112
  function defineAction(definition) {
103
113
  let actionId;
104
114
  const pending = [];
@@ -121,6 +131,11 @@ function defineAction(definition) {
121
131
  } });
122
132
  return handle;
123
133
  }
134
+ /**
135
+ * 打开小程序 action 定义入口。
136
+ *
137
+ * @since 0.9.1
138
+ */
124
139
  function defineOpenMiniProgramAction(options = {}) {
125
140
  let actionId;
126
141
  const pending = [];
@@ -142,18 +157,35 @@ function defineOpenMiniProgramAction(options = {}) {
142
157
  } });
143
158
  return handle;
144
159
  }
160
+ /**
161
+ * 工作区卡片控制器定义入口。
162
+ *
163
+ * @since 0.9.1
164
+ */
145
165
  function defineWorkspaceCardsController(controller) {
146
166
  for (const [id, action] of Object.entries(controller.actions ?? {}))
147
167
  action.bindActionId?.(id);
148
168
  return controller;
149
169
  }
150
- /** 定义控制器;构建器和 Host 分别验证静态 action 表。 */
170
+ /**
171
+ * 定义控制器;构建器和 Host 分别验证静态 action 表。
172
+ *
173
+ * @since 0.9.1
174
+ */
151
175
  function defineWorkspaceCardController(controller) { return controller; }
152
- /** 生成固定受管 invoke 入口;身份由 Host 根据真实卡片绑定。 */
176
+ /**
177
+ * 生成固定受管 invoke 入口;身份由 Host 根据真实卡片绑定。
178
+ *
179
+ * @since 0.9.1
180
+ */
153
181
  function invoke(actionId, params) {
154
182
  return { commandId: WORKSPACE_CARD_COMMANDS.invoke, input: { actionId, ...(params === undefined ? {} : { params }) } };
155
183
  }
156
- /** 只允许打开当前小程序。 */
184
+ /**
185
+ * 只允许打开当前小程序。
186
+ *
187
+ * @since 0.9.1
188
+ */
157
189
  function openMiniProgram(actionId, params) {
158
190
  return { commandId: WORKSPACE_CARD_COMMANDS.openMiniProgram, input: { actionId, ...(params === undefined ? {} : { params }) } };
159
191
  }
@@ -87,6 +87,11 @@ function viewDocument(regions, options = {}) {
87
87
  return compact({ schema: VIEW_SCHEMA_VERSION, regions: [...regions], ...options });
88
88
  }
89
89
 
90
+ /**
91
+ * 工作区卡片定义入口。
92
+ *
93
+ * @since 0.9.1
94
+ */
90
95
  function defineCard(definition) { return definition; }
91
96
  const actionInput = {
92
97
  string: (options = {}) => ({ type: 'string', ...options }),
@@ -97,6 +102,11 @@ const actionInput = {
97
102
  type: 'object', properties, required: Object.keys(properties), additionalProperties: false,
98
103
  }),
99
104
  };
105
+ /**
106
+ * 工作区卡片 action 定义入口。
107
+ *
108
+ * @since 0.9.1
109
+ */
100
110
  function defineAction(definition) {
101
111
  let actionId;
102
112
  const pending = [];
@@ -119,6 +129,11 @@ function defineAction(definition) {
119
129
  } });
120
130
  return handle;
121
131
  }
132
+ /**
133
+ * 打开小程序 action 定义入口。
134
+ *
135
+ * @since 0.9.1
136
+ */
122
137
  function defineOpenMiniProgramAction(options = {}) {
123
138
  let actionId;
124
139
  const pending = [];
@@ -140,18 +155,35 @@ function defineOpenMiniProgramAction(options = {}) {
140
155
  } });
141
156
  return handle;
142
157
  }
158
+ /**
159
+ * 工作区卡片控制器定义入口。
160
+ *
161
+ * @since 0.9.1
162
+ */
143
163
  function defineWorkspaceCardsController(controller) {
144
164
  for (const [id, action] of Object.entries(controller.actions ?? {}))
145
165
  action.bindActionId?.(id);
146
166
  return controller;
147
167
  }
148
- /** 定义控制器;构建器和 Host 分别验证静态 action 表。 */
168
+ /**
169
+ * 定义控制器;构建器和 Host 分别验证静态 action 表。
170
+ *
171
+ * @since 0.9.1
172
+ */
149
173
  function defineWorkspaceCardController(controller) { return controller; }
150
- /** 生成固定受管 invoke 入口;身份由 Host 根据真实卡片绑定。 */
174
+ /**
175
+ * 生成固定受管 invoke 入口;身份由 Host 根据真实卡片绑定。
176
+ *
177
+ * @since 0.9.1
178
+ */
151
179
  function invoke(actionId, params) {
152
180
  return { commandId: WORKSPACE_CARD_COMMANDS.invoke, input: { actionId, ...(params === undefined ? {} : { params }) } };
153
181
  }
154
- /** 只允许打开当前小程序。 */
182
+ /**
183
+ * 只允许打开当前小程序。
184
+ *
185
+ * @since 0.9.1
186
+ */
155
187
  function openMiniProgram(actionId, params) {
156
188
  return { commandId: WORKSPACE_CARD_COMMANDS.openMiniProgram, input: { actionId, ...(params === undefined ? {} : { params }) } };
157
189
  }
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var runtimeGate = require('./runtime-gate-g3afiufR.cjs');
3
+ var runtimeGate = require('./runtime-gate-DlljPriy.cjs');
4
4
  var fs$1 = require('node:fs');
5
5
  var fs = require('node:fs/promises');
6
6
  var path = require('node:path');
7
- var runtimePermissionEnv = require('./runtime-permission-env-CDx5qO-T.cjs');
8
- var index = require('./index-CY67PpQk.cjs');
7
+ var runtimePermissionEnv = require('./runtime-permission-env-BHzCLf1O.cjs');
8
+ var index = require('./index-BbBDiBGu.cjs');
9
9
  require('node:crypto');
10
10
  require('node:zlib');
11
- var projectVite = require('./project-vite-Dm128JTE.cjs');
11
+ var projectVite = require('./project-vite-CCK80P0l.cjs');
12
12
  require('node:module');
13
13
  require('node:url');
14
14
  require('./_commonjs-dynamic-modules-DUamuDzp.cjs');
@@ -16,7 +16,7 @@ require('fs');
16
16
  require('path');
17
17
  require('os');
18
18
  require('inspector');
19
- require('./version-D40WHkF9.cjs');
19
+ require('./version-Cg_M8yWW.cjs');
20
20
  require('node:async_hooks');
21
21
  require('readline');
22
22
  require('tty');
@@ -3,10 +3,10 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var runtimePermissionEnv = require('./runtime-permission-env-CDx5qO-T.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-BHzCLf1O.cjs');
7
7
  var fs$1 = require('node:fs');
8
8
  var sharp = require('sharp');
9
- var index = require('./index-CY67PpQk.cjs');
9
+ var index = require('./index-BbBDiBGu.cjs');
10
10
 
11
11
  async function inspectBasicInfoImage(bytes, sourcePath, kind) {
12
12
  const inspected = await inspectDecodedBasicInfoImage(bytes, kind);
@@ -5,7 +5,7 @@ var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var require$$0 = require('fs');
7
7
  var require$$1 = require('path');
8
- var index = require('./index-CY67PpQk.cjs');
8
+ var index = require('./index-BbBDiBGu.cjs');
9
9
  require('node:module');
10
10
  require('readline');
11
11
  require('os');
@@ -3,7 +3,7 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var index = require('./index-CY67PpQk.cjs');
6
+ var index = require('./index-BbBDiBGu.cjs');
7
7
 
8
8
  const DEPLOY_LOCKED_MESSAGE = '当前设备已有同版本产物正在上传,请等待完成后重试';
9
9
  const DEPLOY_LOCK_DIRECTORY_NAME = 'deploy-locks';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CY67PpQk.cjs');
4
- var context = require('./context-BI3QMxw2.cjs');
3
+ var index = require('./index-BbBDiBGu.cjs');
4
+ var context = require('./context-wxnfvTjH.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var fs = require('node:fs');
7
- var runtimePermissionEnv = require('./runtime-permission-env-CDx5qO-T.cjs');
7
+ var runtimePermissionEnv = require('./runtime-permission-env-BHzCLf1O.cjs');
8
8
  var os = require('node:os');
9
9
  var path = require('node:path');
10
10
  var net = require('node:net');
@@ -16,8 +16,8 @@ var fs$1 = require('node:fs/promises');
16
16
  var require$$0$1 = require('crypto');
17
17
  var require$$0 = require('buffer');
18
18
  var browser = require('./browser-RAy8e8cV.cjs');
19
- var projectVite = require('./project-vite-Dm128JTE.cjs');
20
- var version = require('./version-D40WHkF9.cjs');
19
+ var projectVite = require('./project-vite-CCK80P0l.cjs');
20
+ var version = require('./version-Cg_M8yWW.cjs');
21
21
  require('node:zlib');
22
22
 
23
23
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -1995,8 +1995,8 @@ const DEFAULT_CHANNEL_TRANSPORT = {
1995
1995
  };
1996
1996
  const IPV4_LOOPBACK_ADDRESSES = new net.BlockList();
1997
1997
  IPV4_LOOPBACK_ADDRESSES.addSubnet('127.0.0.0', 8, 'ipv4');
1998
- const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DeNzUY6g.cjs', document.baseURI).href)))('ws');
1999
- const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-DeNzUY6g.cjs', document.baseURI).href)))('parse5');
1998
+ const { WebSocket, WebSocketServer } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-Brpzyt0U.cjs', document.baseURI).href)))('ws');
1999
+ const { parse: parseHtml } = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/dev-Brpzyt0U.cjs', document.baseURI).href)))('parse5');
2000
2000
  const BROWSER_DEV_HOST_ROOT_CANDIDATES = [
2001
2001
  path.resolve(__dirname, 'devtools/browser-dev-host'),
2002
2002
  path.resolve(__dirname, '../devtools/browser-dev-host'),
@@ -11100,7 +11100,7 @@ function assertNodeRuntimeCapabilities(ctx, settings) {
11100
11100
  function createNodeRealtimeDriverRegistry() {
11101
11101
  const registry = createRuntimeRealtimeDriverRegistry();
11102
11102
  registry.registerLazy('node-websocket', async () => {
11103
- const mod = await Promise.resolve().then(function () { return require('./index.esm-DQdwzMhB.cjs'); });
11103
+ const mod = await Promise.resolve().then(function () { return require('./index.esm-4AAnDlTK.cjs'); });
11104
11104
  return mod.createNodeWebSocketRuntimeDriver();
11105
11105
  });
11106
11106
  return registry;
@@ -3,7 +3,7 @@
3
3
  var fs = require('node:fs/promises');
4
4
  var os = require('node:os');
5
5
  var path = require('node:path');
6
- var index = require('./index-CY67PpQk.cjs');
6
+ var index = require('./index-BbBDiBGu.cjs');
7
7
  require('node:module');
8
8
  require('readline');
9
9
  require('os');
@@ -3,8 +3,8 @@
3
3
  var node_crypto = require('node:crypto');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var index = require('./index-CY67PpQk.cjs');
7
- var deployLock = require('./deploy-lock-pKDDxTKm.cjs');
6
+ var index = require('./index-BbBDiBGu.cjs');
7
+ var deployLock = require('./deploy-lock--NJ7NdXX.cjs');
8
8
  require('node:module');
9
9
  require('readline');
10
10
  require('os');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-CY67PpQk.cjs');
3
+ var index$2 = require('./index-BbBDiBGu.cjs');
4
4
  var require$$0$3 = require('fs');
5
5
  var require$$0$2 = require('crypto');
6
6
  var require$$1$2 = require('path');
@@ -238,19 +238,19 @@ function requireArgument () {
238
238
 
239
239
  var command = {};
240
240
 
241
- const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-CY67PpQk.cjs', document.baseURI).href)));
241
+ const require$5 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BbBDiBGu.cjs', document.baseURI).href)));
242
242
  function __require$4() { return require$5("node:events"); }
243
243
 
244
- const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-CY67PpQk.cjs', document.baseURI).href)));
244
+ const require$4 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BbBDiBGu.cjs', document.baseURI).href)));
245
245
  function __require$3() { return require$4("node:child_process"); }
246
246
 
247
- const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-CY67PpQk.cjs', document.baseURI).href)));
247
+ const require$3 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BbBDiBGu.cjs', document.baseURI).href)));
248
248
  function __require$2() { return require$3("node:path"); }
249
249
 
250
- const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-CY67PpQk.cjs', document.baseURI).href)));
250
+ const require$2 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BbBDiBGu.cjs', document.baseURI).href)));
251
251
  function __require$1() { return require$2("node:fs"); }
252
252
 
253
- const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-CY67PpQk.cjs', document.baseURI).href)));
253
+ const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli-chunks/index-BbBDiBGu.cjs', document.baseURI).href)));
254
254
  function __require() { return require$1("node:process"); }
255
255
 
256
256
  var help = {};
@@ -17249,7 +17249,7 @@ async function inspectFeedbackLog(file, size) {
17249
17249
  return { mimeType: 'text/plain', width: 0, height: 0 };
17250
17250
  }
17251
17251
  async function createFeedbackCosClient(getToken) {
17252
- const { default: COS } = await Promise.resolve().then(function () { return require('./index-C7nrP0tt.cjs'); }).then(function (n) { return n.index; });
17252
+ const { default: COS } = await Promise.resolve().then(function () { return require('./index-B3Rry_DT.cjs'); }).then(function (n) { return n.index; });
17253
17253
  const cos = new COS({
17254
17254
  getAuthorization(_options, callback) {
17255
17255
  void getToken().then((token) => callback({
@@ -20900,7 +20900,7 @@ function readEnvNameArgFromArgv(argv) {
20900
20900
  }
20901
20901
 
20902
20902
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
20903
- const BUILT_CLI_VERSION = '0.9.2-alpha.8';
20903
+ const BUILT_CLI_VERSION = '0.9.2';
20904
20904
  const PACKAGE_JSON_CANDIDATES = [
20905
20905
  path.resolve(__dirname, '..', '..', 'package.json'),
20906
20906
  path.resolve(__dirname, '..', 'package.json'),
@@ -21284,39 +21284,39 @@ function createCommandLoggerResolver(options) {
21284
21284
  };
21285
21285
  }
21286
21286
  const defaultClearLoginStatus = async (...args) => {
21287
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-PJdMmFoB.cjs'); });
21287
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-e8GwAqrB.cjs'); });
21288
21288
  return clearLoginStatus(...args);
21289
21289
  };
21290
21290
  const defaultLoginToHeybox = async (...args) => {
21291
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-PJdMmFoB.cjs'); });
21291
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-e8GwAqrB.cjs'); });
21292
21292
  return loginToHeybox(...args);
21293
21293
  };
21294
21294
  const defaultPrintLoginStatus = async (...args) => {
21295
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-PJdMmFoB.cjs'); });
21295
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-e8GwAqrB.cjs'); });
21296
21296
  return printLoginStatus(...args);
21297
21297
  };
21298
21298
  const defaultRunBuildCommand = async (...args) => {
21299
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-BinntZJf.cjs'); });
21299
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-Dw22VIXS.cjs'); });
21300
21300
  return runBuildCommand(...args);
21301
21301
  };
21302
21302
  const defaultRunCreateCommand = async (...args) => {
21303
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BK028Mlk.cjs'); });
21303
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-ecaoeTnL.cjs'); });
21304
21304
  return runCreateCommand(...args);
21305
21305
  };
21306
21306
  const defaultRunDevCommand = async (...args) => {
21307
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-DeNzUY6g.cjs'); }).then(function (n) { return n.dev; });
21307
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-Brpzyt0U.cjs'); }).then(function (n) { return n.dev; });
21308
21308
  return runDevCommand(...args);
21309
21309
  };
21310
21310
  const defaultRunDoctorCommand = async (...args) => {
21311
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-BOfbKnN2.cjs'); });
21311
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-D9YqT9KQ.cjs'); });
21312
21312
  return runDoctorCommand(...args);
21313
21313
  };
21314
21314
  const defaultRunSkillInstallCommand = async (...args) => {
21315
- const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-Bdy5Ehue.cjs'); });
21315
+ const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-DzD5EQiw.cjs'); });
21316
21316
  return runSkillInstallCommand(...args);
21317
21317
  };
21318
21318
  const defaultRunRemoteCommand = async (...args) => {
21319
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-CZuy1lmn.cjs'); });
21319
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BrcgN56P.cjs'); });
21320
21320
  return runRemoteCommand(...args);
21321
21321
  };
21322
21322
  function resolveStandaloneLogger(options, verbose) {
@@ -21408,7 +21408,7 @@ function parseNonNegativeInteger(value) {
21408
21408
  return parsed;
21409
21409
  }
21410
21410
  const defaultRunGameSearchCommand = async (...args) => {
21411
- const { runGameSearchCommand } = await Promise.resolve().then(function () { return require('./games-yqu20laX.cjs'); });
21411
+ const { runGameSearchCommand } = await Promise.resolve().then(function () { return require('./games-C1ecYTTz.cjs'); });
21412
21412
  return runGameSearchCommand(...args);
21413
21413
  };
21414
21414
 
@@ -11,8 +11,8 @@ var require$$0$3 = require('url');
11
11
  var require$$5 = require('zlib');
12
12
  var require$$0 = require('buffer');
13
13
  var require$$1 = require('util');
14
- var index = require('./index-CY67PpQk.cjs');
15
- var dev = require('./dev-DeNzUY6g.cjs');
14
+ var index = require('./index-BbBDiBGu.cjs');
15
+ var dev = require('./dev-Brpzyt0U.cjs');
16
16
  require('node:module');
17
17
  require('readline');
18
18
  require('os');
@@ -26,9 +26,9 @@ require('constants');
26
26
  require('node:fs');
27
27
  require('node:fs/promises');
28
28
  require('node:zlib');
29
- require('./context-BI3QMxw2.cjs');
30
- require('./runtime-permission-env-CDx5qO-T.cjs');
31
- require('./version-D40WHkF9.cjs');
29
+ require('./context-wxnfvTjH.cjs');
30
+ require('./runtime-permission-env-BHzCLf1O.cjs');
31
+ require('./version-Cg_M8yWW.cjs');
32
32
  require('node:async_hooks');
33
33
  require('sharp');
34
34
  require('node:os');
@@ -42,7 +42,7 @@ require('node:buffer');
42
42
  require('node:url');
43
43
  require('node:util');
44
44
  require('node:child_process');
45
- require('./project-vite-Dm128JTE.cjs');
45
+ require('./project-vite-CCK80P0l.cjs');
46
46
 
47
47
  var bufferUtil = {exports: {}};
48
48
 
@@ -3,7 +3,7 @@
3
3
  var promises = require('node:readline/promises');
4
4
  var node_crypto = require('node:crypto');
5
5
  var node_http = require('node:http');
6
- var index = require('./index-CY67PpQk.cjs');
6
+ var index = require('./index-BbBDiBGu.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
8
  require('node:module');
9
9
  require('readline');
@@ -5,7 +5,7 @@ var fs$1 = require('node:fs/promises');
5
5
  var node_module = require('node:module');
6
6
  var path = require('node:path');
7
7
  var node_url = require('node:url');
8
- var index = require('./index-CY67PpQk.cjs');
8
+ var index = require('./index-BbBDiBGu.cjs');
9
9
 
10
10
  function findProjectRoot(startDir) {
11
11
  let current = path.resolve(startDir);
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-CDx5qO-T.cjs');
4
- var context = require('./context-BI3QMxw2.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-BHzCLf1O.cjs');
4
+ var context = require('./context-wxnfvTjH.cjs');
5
5
  var promises = require('node:readline/promises');
6
- var index = require('./index-CY67PpQk.cjs');
7
- var runtimeGate = require('./runtime-gate-g3afiufR.cjs');
6
+ var index = require('./index-BbBDiBGu.cjs');
7
+ var runtimeGate = require('./runtime-gate-DlljPriy.cjs');
8
8
  var childProcess = require('node:child_process');
9
9
  var fs = require('node:fs');
10
10
  var fs$1 = require('node:fs/promises');
11
11
  var path = require('node:path');
12
12
  var node_crypto = require('node:crypto');
13
13
  require('node:zlib');
14
- var deployLock = require('./deploy-lock-pKDDxTKm.cjs');
15
- require('./version-D40WHkF9.cjs');
14
+ var deployLock = require('./deploy-lock--NJ7NdXX.cjs');
15
+ require('./version-Cg_M8yWW.cjs');
16
16
  require('node:async_hooks');
17
17
  require('sharp');
18
18
  require('node:module');
@@ -308,7 +308,7 @@ function createDefaultCosClient(uploadToken, COS) {
308
308
  };
309
309
  }
310
310
  async function loadCosConstructor() {
311
- const cosModule = await Promise.resolve().then(function () { return require('./index-C7nrP0tt.cjs'); }).then(function (n) { return n.index; });
311
+ const cosModule = await Promise.resolve().then(function () { return require('./index-B3Rry_DT.cjs'); }).then(function (n) { return n.index; });
312
312
  return cosModule.default;
313
313
  }
314
314
  function formatSize(bytes) {
@@ -5,8 +5,8 @@ require('node:module');
5
5
  require('node:url');
6
6
  var fs = require('node:fs');
7
7
  var path = require('node:path');
8
- var runtimePermissionEnv = require('./runtime-permission-env-CDx5qO-T.cjs');
9
- var index = require('./index-CY67PpQk.cjs');
8
+ var runtimePermissionEnv = require('./runtime-permission-env-BHzCLf1O.cjs');
9
+ var index = require('./index-BbBDiBGu.cjs');
10
10
  var _commonjsDynamicModules = require('./_commonjs-dynamic-modules-DUamuDzp.cjs');
11
11
  var require$$0$1 = require('fs');
12
12
  var require$$1 = require('path');
@@ -201912,6 +201912,7 @@ const RUNTIME_GATE_BOOTSTRAP_MARKER = 'data-heybox-runtime-gate-bootstrap';
201912
201912
  * @param html - 待检查的完整 HTML 文本,使用 HTML parser 解析。
201913
201913
  * @returns Gate、隐藏样式及 bootstrap 标记均出现时返回 `true`,否则返回 `false`。
201914
201914
  * @remarks 只识别标记,不验证脚本内容、标记所在节点或宿主握手;不能据此判断页面安全或实际可运行。
201915
+ * @since 0.8.2
201915
201916
  */
201916
201917
  function hasMiniappRuntimeGate(html) {
201917
201918
  const document = parse(html);