@heybox/hb-sdk 0.7.4-alpha.5 → 0.7.4-alpha.6

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 (33) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -0
  3. package/dist/cli-chunks/{build-C-ufarA6.cjs → build-DF74IHGR.cjs} +2 -2
  4. package/dist/cli-chunks/{context-C839--TH.cjs → context-QemmshdY.cjs} +26 -1
  5. package/dist/cli-chunks/{create-CNcII_CB.cjs → create-Ch9m8w8M.cjs} +1 -1
  6. package/dist/cli-chunks/dev-D2DwLxXW.cjs +15682 -0
  7. package/dist/cli-chunks/{doctor-bhfQwyYU.cjs → doctor-B9xJ2j20.cjs} +1 -1
  8. package/dist/cli-chunks/{index-B_qJzSFo.cjs → index-Cv36miWx.cjs} +83 -83
  9. package/dist/cli-chunks/{index-CT94XzyO.cjs → index-DxQgKWRT.cjs} +31 -32
  10. package/dist/cli-chunks/index.esm-DZQrllrR.cjs +5212 -0
  11. package/dist/cli-chunks/{login-hYrDJ3dR.cjs → login-DEKhX1Vf.cjs} +2 -2
  12. package/dist/cli-chunks/{project-vite-zaw68V1G.cjs → project-vite-D_NNB_Ib.cjs} +1 -1
  13. package/dist/cli-chunks/{remote-DQZRAAHh.cjs → remote-B_Bn4v81.cjs} +4 -4
  14. package/dist/cli-chunks/{session-D692TU5N.cjs → session-C2zY7XHn.cjs} +2 -1
  15. package/dist/cli.cjs +1 -1
  16. package/dist/devtools/browser-dev-host/index.html +128 -151
  17. package/dist/devtools/browser-dev-host/main.js +1553 -339
  18. package/dist/index.cjs.js +1 -1
  19. package/dist/index.esm.js +1 -1
  20. package/dist/vite.cjs.js +1 -1
  21. package/dist/vite.esm.js +1 -1
  22. package/package.json +14 -7
  23. package/skill/SKILL.md +6 -6
  24. package/skill/references/api-protocol.md +1 -1
  25. package/skill/references/api-root.md +1 -1
  26. package/skill/references/cli.md +16 -20
  27. package/skill/references/examples.md +2 -2
  28. package/skill/references/safety-boundaries.md +1 -1
  29. package/skill/references/smoke-evaluation.md +1 -1
  30. package/skill/scripts/sync-references.mjs +6 -6
  31. package/skill/skill.json +4 -4
  32. package/types/protocol/dev-session.d.ts +13 -0
  33. package/dist/cli-chunks/dev-MpESCaMm.cjs +0 -2769
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.4-alpha.6
4
+
5
+ ### SDK / CLI
6
+
7
+ - Browser Dev Host 增加私有双栈连接,并继续保留现有 HTTP/SSE fallback;连接不可用时仍可按原调试流程工作。
8
+ - Mobile 二维码统一使用 `open_inapp` 与 `heybox://` `openWindow` 包装的局域网短链接;短链返回跳转页,打开完整 `heybox-mini-dev://sandbox` 协议后延迟调用 `closeWindow` 关闭中间页。移除不再需要的 `--raw-protocol` 与 `--runtime-url` 参数。
9
+ - `hb-sdk dev` 不再支持匿名调试;启动 Browser、Mac 或 Mobile 调试前必须完成 CLI 登录并绑定小程序,且远端 Dev Context 必须可用。
10
+ - PC/Mac 与移动端的原生启动、账号、网络、存储和权限契约保持不变,本版本不要求更新原生客户端。
11
+ - Mobile 调试短链使用 LAN HTTP,只应在受信局域网内使用;不要在公共或不受信网络中暴露调试服务。
12
+ - Browser Dev Host 的 `network.request` 代理允许办公网、Tailscale 与 Clash fake-ip 解析到的本机/局域网地址;仍拒绝 metadata、NAT64 和跨 origin redirect。
13
+ - Browser Mock 使用 Node 中的 `hb-sdk login` 会话代发 Host `heybox-session` 请求,调试页去掉 Bridge/User 状态和登录按钮,改为简单授权弹窗。凭证不下发到浏览器。
14
+
3
15
  ## 0.7.4-alpha.5
4
16
 
5
17
  ### Share extra
package/README.md CHANGED
@@ -199,6 +199,8 @@ hb-sdk remote deploy --release-note "本次更新说明"
199
199
  | `hb-sdk build` | 执行生产构建与产物校验,不包含类型检查 |
200
200
  | `hb-sdk remote deploy` | 构建、上传并提交当前版本审核 |
201
201
 
202
+ `hb-sdk dev` 不要求升级 Android、iOS 或 Mac 客户端。启动前必须先运行 `hb-sdk login` 并通过 `hb-sdk remote create` 或 `hb-sdk remote bind` 绑定小程序;未登录、未绑定或远端 Dev Context 不可用时不会启动 Vite、Browser Dev Host、Mac 或 Mobile 调试入口。Browser Mock 会自动在实时与兼容链路间切换;Mobile 统一使用 `open_inapp` 与 `heybox://` `openWindow` 包装的局域网短链 `http://<lan-ip>:<browser-dev-host-port>/l/<token>`。短链返回跳转页,先打开带 `heybox-mini-dev://sandbox`、`mini_url`、身份、启动票和 LAN Dev Context 的完整协议,约 500ms 后再发 `closeWindow` 关掉中间页。调试页权限覆盖只影响本地状态,不会修改线上配置。完整操作见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli),实现与安全边界由 [Runtime Host 迁移](./docs/runtime-host-migration.md) 维护。
203
+
202
204
  远端提交前需要完成 CLI 登录和小程序绑定。完整的登录、绑定、预览、版本与发布流程见 [CLI 指南](https://docs.xiaoheihe.cn/hb_sdk/guide/cli)。
203
205
 
204
206
  ## 文档
@@ -5,8 +5,8 @@ var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
7
7
  var runtimeGate = require('./runtime-gate-CtV7rWyX.cjs');
8
- var index = require('./index-CT94XzyO.cjs');
9
- var projectVite = require('./project-vite-zaw68V1G.cjs');
8
+ var index = require('./index-DxQgKWRT.cjs');
9
+ var projectVite = require('./project-vite-D_NNB_Ib.cjs');
10
10
  require('node:async_hooks');
11
11
  require('node:module');
12
12
  require('path');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var session = require('./session-D692TU5N.cjs');
3
+ var session = require('./session-C2zY7XHn.cjs');
4
4
  var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
5
5
  var fs$1 = require('node:fs');
6
6
  var fs = require('node:fs/promises');
@@ -45,6 +45,23 @@ function isRecord(value) {
45
45
  return typeof value === 'object' && value !== null && !Array.isArray(value);
46
46
  }
47
47
 
48
+ function parseBrowserDevPermissionState(value) {
49
+ if (!isPlainRecord(value) || !hasExactKeys(value, ['networkRequest']))
50
+ return undefined;
51
+ const networkRequest = value.networkRequest;
52
+ if (!isPlainRecord(networkRequest) || !hasExactKeys(networkRequest, ['status', 'useOfficialDomain']))
53
+ return undefined;
54
+ if (networkRequest.status !== 'enabled' && networkRequest.status !== 'disabled')
55
+ return undefined;
56
+ if (typeof networkRequest.useOfficialDomain !== 'boolean')
57
+ return undefined;
58
+ return {
59
+ networkRequest: {
60
+ status: networkRequest.status,
61
+ useOfficialDomain: networkRequest.useOfficialDomain,
62
+ },
63
+ };
64
+ }
48
65
  function shouldSkipMiniappPlatformCsp(runtimePermissions) {
49
66
  const parsed = parseMiniProgramRuntimePermissions(runtimePermissions);
50
67
  const networkRequest = parsed.permissions['network.request'];
@@ -87,6 +104,13 @@ function cloneDefaultPermissionState() {
87
104
  networkRequest: { ...DEFAULT_PERMISSION_STATE.networkRequest },
88
105
  };
89
106
  }
107
+ function isPlainRecord(value) {
108
+ return typeof value === 'object' && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
109
+ }
110
+ function hasExactKeys(value, keys) {
111
+ const actualKeys = Object.keys(value);
112
+ return actualKeys.length === keys.length && keys.every((key) => Object.hasOwn(value, key));
113
+ }
90
114
 
91
115
  function createRemoteApiClient(options) {
92
116
  return {
@@ -401,6 +425,7 @@ exports.createBrowserDevRuntimePermissions = createBrowserDevRuntimePermissions;
401
425
  exports.createLocalDevLaunchToken = createLocalDevLaunchToken;
402
426
  exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
403
427
  exports.getBoundMiniProgram = getBoundMiniProgram;
428
+ exports.parseBrowserDevPermissionState = parseBrowserDevPermissionState;
404
429
  exports.parseMiniProgramRuntimePermissions = parseMiniProgramRuntimePermissions;
405
430
  exports.readBoundMiniProgramId = readBoundMiniProgramId;
406
431
  exports.readBoundMiniProgramIdFromPackageJson = readBoundMiniProgramIdFromPackageJson;
@@ -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-CT94XzyO.cjs');
8
+ var index = require('./index-DxQgKWRT.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('readline');