@heybox/hb-sdk 0.9.1-alpha.2 → 0.9.1-alpha.4

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 (40) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cli-chunks/{build-BrxETAg-.cjs → build-BZg2rHkW.cjs} +5 -5
  3. package/dist/cli-chunks/{context-DxBK07jO.cjs → context-YrzmEOau.cjs} +4 -4
  4. package/dist/cli-chunks/{create-D_Cwz_i7.cjs → create-fPvlqLbS.cjs} +1 -1
  5. package/dist/cli-chunks/{dev-CVqfVj4a.cjs → dev-X8_kbp78.cjs} +10 -10
  6. package/dist/cli-chunks/{doctor-B__9PDSg.cjs → doctor-DdiucYs9.cjs} +1 -1
  7. package/dist/cli-chunks/{index-Bdo2T9uy.cjs → index-BGh-Izf8.cjs} +16 -16
  8. package/dist/cli-chunks/{index-26VGAsFk.cjs → index-BdbwsefW.cjs} +2 -2
  9. package/dist/cli-chunks/{index.esm-Bl6toxrf.cjs → index.esm-WYIrPjkF.cjs} +7 -7
  10. package/dist/cli-chunks/{login-BOk8eomf.cjs → login-DWmNuhWc.cjs} +2 -2
  11. package/dist/cli-chunks/{project-vite-BU-kVQwl.cjs → project-vite-BVDIeoHB.cjs} +1 -1
  12. package/dist/cli-chunks/{remote-BbB3_uFH.cjs → remote-BHJFxXyc.cjs} +13 -10
  13. package/dist/cli-chunks/{runtime-gate-GQWWSNNP.cjs → runtime-gate-CR0dRMpQ.cjs} +1 -1
  14. package/dist/cli-chunks/{runtime-permission-env-AT-04rSn.cjs → runtime-permission-env-eiq8vE62.cjs} +19 -3
  15. package/dist/cli-chunks/{session-B_C7uQDa.cjs → session-Dz1cGg0E.cjs} +1 -1
  16. package/dist/cli-chunks/{skill-mwRSQNYa.cjs → skill-DC3cfPj2.cjs} +2 -2
  17. package/dist/cli-chunks/{version-CDYLTzyb.cjs → version-DYFkOykv.cjs} +1 -1
  18. package/dist/cli.cjs +1 -1
  19. package/dist/devtools/browser-dev-host/assets/browser-dev-host-CO2_03W0.js +102 -0
  20. package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-kIe9c5pM.js → desktop-app-launch-CZsodKbP.js} +1 -1
  21. package/dist/devtools/browser-dev-host/assets/{index-C71D82Iw.js → index-B9tOX3zG.js} +4 -4
  22. package/dist/devtools/browser-dev-host/assets/{index-ClSYpidU.css → index-BRxbUJVN.css} +1 -1
  23. package/dist/devtools/browser-dev-host/index.html +3 -3
  24. package/dist/index.cjs.js +30 -6
  25. package/dist/index.esm.js +30 -6
  26. package/dist/miniapp-publish.cjs.js +11 -0
  27. package/dist/miniapp-publish.esm.js +11 -0
  28. package/dist/protocol.cjs.js +10 -0
  29. package/dist/protocol.esm.js +10 -1
  30. package/dist/vite.cjs.js +12 -1
  31. package/dist/vite.esm.js +12 -1
  32. package/package.json +6 -6
  33. package/skill/skill.json +4 -4
  34. package/types/index.d.ts +1 -1
  35. package/types/miniapp-manifest/permissions.d.ts +1 -1
  36. package/types/miniapp-manifest/schema.d.ts +1 -1
  37. package/types/modules/device/index.d.ts +77 -1
  38. package/types/protocol/capabilities.d.ts +1 -1
  39. package/types/protocol.d.ts +1 -1
  40. package/dist/devtools/browser-dev-host/assets/browser-dev-host-Bkf-_cAD.js +0 -102
package/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  本文件随 `@heybox/hb-sdk` npm 包公开分发,只记录外部小程序开发者可观察到的变化。
4
4
 
5
+ ## 0.9.1-alpha.4 - 2026-10-14
6
+
7
+ ### 新增能力
8
+
9
+ - 预留 `hbSDK.device.executeProtocol()`(暂不对外开放):在获得平台批准的 `appProtocol` 权限后执行任意小黑盒协议,支持完整协议字符串与 JSON 协议对象;返回 `Promise<void>`,成功只表示已投递,不转发协议业务返回值或回调。
10
+ - 预留最高危险等级权限 `appProtocol`(暂不对外开放,不提供开发者申请入口):批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及其专用授权流程;该总授权只作用于 `device.executeProtocol()`,其他 SDK 方法仍执行各自权限与授权规则。
11
+ - `hb-sdk dev` 支持为已声明但未获线上批准的 `appProtocol` 生成当前 Dev Session 的本地临时授权;浏览器调试台记录协议类型并以 Mock 投递成功,不模拟真实协议效果。
12
+
13
+ ### 问题修复
14
+
15
+ - 协议执行收到取消后停止尚未投递的后续动作;调用超时或 SDK 销毁时通知 Host 取消,已投递的系统动作不会撤销。
16
+ - 协议对象中的函数、Symbol 等无法发送的参数统一返回 `INVALID_PARAMS`,保留原始原因供排查。
17
+
18
+ ### 文档与工具
19
+
20
+ - 权限指南、API Reference、CLI 调试说明与 `hb-sdk remote permission apply` 同步 `appProtocol` 与 `device.executeProtocol`。
21
+
22
+ ## 0.9.1-alpha.3 - 2026-10-14
23
+
24
+ ### 问题修复
25
+
26
+ - 修复设置 `--service-tag` 后提交小程序时文件上传失败的问题。
27
+
5
28
  ## 0.9.1-alpha.2
6
29
 
7
30
  ### 文档与工具
@@ -3,13 +3,13 @@
3
3
  var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
- var runtimePermissionEnv = require('./runtime-permission-env-AT-04rSn.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
7
7
  require('node:crypto');
8
8
  require('node:zlib');
9
- var runtimeGate = require('./runtime-gate-GQWWSNNP.cjs');
10
- var index = require('./index-Bdo2T9uy.cjs');
11
- var projectVite = require('./project-vite-BU-kVQwl.cjs');
12
- require('./version-CDYLTzyb.cjs');
9
+ var runtimeGate = require('./runtime-gate-CR0dRMpQ.cjs');
10
+ var index = require('./index-BGh-Izf8.cjs');
11
+ var projectVite = require('./project-vite-BVDIeoHB.cjs');
12
+ require('./version-DYFkOykv.cjs');
13
13
  require('node:async_hooks');
14
14
  require('node:module');
15
15
  require('path');
@@ -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-AT-04rSn.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
7
7
  var fs$1 = require('node:fs');
8
8
  var sharp = require('sharp');
9
- var session = require('./session-B_C7uQDa.cjs');
9
+ var session = require('./session-Dz1cGg0E.cjs');
10
10
 
11
11
  async function inspectBasicInfoImage(bytes, sourcePath, kind) {
12
12
  const inspected = await inspectDecodedBasicInfoImage(bytes, kind);
@@ -345,8 +345,8 @@ function resolveBrowserFakeContext(context, now = Date.now()) {
345
345
  runtimePermissions: context.runtimePermissions,
346
346
  revision: parsed.grant.revision,
347
347
  eligiblePermissionKeys: context.platforms?.some((platform) => ['windows', 'macos', 'linux'].includes(platform))
348
- ? ['network', 'companion']
349
- : ['network'],
348
+ ? ['network', 'companion', 'appProtocol']
349
+ : ['network', 'appProtocol'],
350
350
  }),
351
351
  };
352
352
  }
@@ -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-Bdo2T9uy.cjs');
8
+ var index = require('./index-BGh-Izf8.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('node:crypto');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var session = require('./session-B_C7uQDa.cjs');
4
- var context = require('./context-DxBK07jO.cjs');
3
+ var session = require('./session-Dz1cGg0E.cjs');
4
+ var context = require('./context-YrzmEOau.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var fs = require('node:fs');
7
- var runtimePermissionEnv = require('./runtime-permission-env-AT-04rSn.cjs');
7
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
8
8
  var os = require('node:os');
9
9
  var path = require('node:path');
10
10
  var net = require('node:net');
@@ -13,12 +13,12 @@ var node_http = require('node:http');
13
13
  var node_module = require('node:module');
14
14
  var undici = require('undici');
15
15
  var fs$1 = require('node:fs/promises');
16
- var index = require('./index-Bdo2T9uy.cjs');
16
+ var index = require('./index-BGh-Izf8.cjs');
17
17
  var require$$0$1 = require('crypto');
18
18
  var require$$0 = require('buffer');
19
19
  var browser = require('./browser-RAy8e8cV.cjs');
20
- var projectVite = require('./project-vite-BU-kVQwl.cjs');
21
- var version = require('./version-CDYLTzyb.cjs');
20
+ var projectVite = require('./project-vite-BVDIeoHB.cjs');
21
+ var version = require('./version-DYFkOykv.cjs');
22
22
  require('node:zlib');
23
23
 
24
24
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
@@ -1993,8 +1993,8 @@ const DEFAULT_CHANNEL_TRANSPORT = {
1993
1993
  };
1994
1994
  const IPV4_LOOPBACK_ADDRESSES = new net.BlockList();
1995
1995
  IPV4_LOOPBACK_ADDRESSES.addSubnet('127.0.0.0', 8, 'ipv4');
1996
- 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-CVqfVj4a.cjs', document.baseURI).href)))('ws');
1997
- 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-CVqfVj4a.cjs', document.baseURI).href)))('parse5');
1996
+ 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-X8_kbp78.cjs', document.baseURI).href)))('ws');
1997
+ 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-X8_kbp78.cjs', document.baseURI).href)))('parse5');
1998
1998
  const BROWSER_DEV_HOST_ROOT_CANDIDATES = [
1999
1999
  path.resolve(__dirname, 'devtools/browser-dev-host'),
2000
2000
  path.resolve(__dirname, '../devtools/browser-dev-host'),
@@ -11090,7 +11090,7 @@ function assertNodeRuntimeCapabilities(ctx, settings) {
11090
11090
  function createNodeRealtimeDriverRegistry() {
11091
11091
  const registry = createRuntimeRealtimeDriverRegistry();
11092
11092
  registry.registerLazy('node-websocket', async () => {
11093
- const mod = await Promise.resolve().then(function () { return require('./index.esm-Bl6toxrf.cjs'); });
11093
+ const mod = await Promise.resolve().then(function () { return require('./index.esm-WYIrPjkF.cjs'); });
11094
11094
  return mod.createNodeWebSocketRuntimeDriver();
11095
11095
  });
11096
11096
  return registry;
@@ -15658,7 +15658,7 @@ async function runDevCommand(options, runtime = {}) {
15658
15658
  const grant = runtimePermissionEnv.createMiniProgramLocalDevGrant({ declaredPermissions: currentDevContext.declaredPermissions ?? {},
15659
15659
  runtimePermissions: currentDevContext.runtimePermissions, revision: contextRevision,
15660
15660
  eligiblePermissionKeys: currentCompanionManifestSha256 && runtimePermissionEnv.hasMiniappDesktopPlatform(currentDevContext.platforms)
15661
- ? ['network', 'companion'] : ['network'] });
15661
+ ? ['network', 'companion', 'appProtocol'] : ['network', 'appProtocol'] });
15662
15662
  if (allowedTemporaryKeys)
15663
15663
  grant.entries = grant.entries.filter(entry => allowedTemporaryKeys.has(entry.key));
15664
15664
  const temporaryWarning = grant.entries.map(entry => entry.key).join('、');
@@ -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-Bdo2T9uy.cjs');
6
+ var index = require('./index-BGh-Izf8.cjs');
7
7
  require('node:module');
8
8
  require('node:fs');
9
9
  require('path');
@@ -235,19 +235,19 @@ function requireArgument () {
235
235
 
236
236
  var command = {};
237
237
 
238
- 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-Bdo2T9uy.cjs', document.baseURI).href)));
238
+ 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-BGh-Izf8.cjs', document.baseURI).href)));
239
239
  function __require$4() { return require$5("node:events"); }
240
240
 
241
- 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-Bdo2T9uy.cjs', document.baseURI).href)));
241
+ 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-BGh-Izf8.cjs', document.baseURI).href)));
242
242
  function __require$3() { return require$4("node:child_process"); }
243
243
 
244
- 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-Bdo2T9uy.cjs', document.baseURI).href)));
244
+ 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-BGh-Izf8.cjs', document.baseURI).href)));
245
245
  function __require$2() { return require$3("node:path"); }
246
246
 
247
- 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-Bdo2T9uy.cjs', document.baseURI).href)));
247
+ 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-BGh-Izf8.cjs', document.baseURI).href)));
248
248
  function __require$1() { return require$2("node:fs"); }
249
249
 
250
- 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-Bdo2T9uy.cjs', document.baseURI).href)));
250
+ 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-BGh-Izf8.cjs', document.baseURI).href)));
251
251
  function __require() { return require$1("node:process"); }
252
252
 
253
253
  var help = {};
@@ -13554,7 +13554,7 @@ function getPathname(pathWithQuery) {
13554
13554
  }
13555
13555
 
13556
13556
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13557
- const BUILT_CLI_VERSION = '0.9.1-alpha.2';
13557
+ const BUILT_CLI_VERSION = '0.9.1-alpha.4';
13558
13558
  const PACKAGE_JSON_CANDIDATES = [
13559
13559
  path.resolve(__dirname, '..', '..', 'package.json'),
13560
13560
  path.resolve(__dirname, '..', 'package.json'),
@@ -13753,7 +13753,7 @@ function installRemoteCommands(program, handlers, resolveLogger) {
13753
13753
  const permission = addRemotePublicOptions(remote.command('permission').description('申请平台权限并查看审核状态'));
13754
13754
  addRemotePublicOptions(permission.command('list').description('查看平台权限及最近申请状态')).action(createRemoteAction(handlers, resolveLogger, 'permission:list'));
13755
13755
  addRemotePublicOptions(permission.command('apply').description('提交平台权限申请')
13756
- .argument('<key>', 'network 或 companion')
13756
+ .argument('<key>', 'network、companion 或 appProtocol')
13757
13757
  .requiredOption('--reason <text>', '申请理由,不超过 500 字')
13758
13758
  .option('--domains <domains>', 'network 访问域名,多个用逗号分隔')).action(createRemoteAction(handlers, resolveLogger, 'permission:apply', (command, key) => {
13759
13759
  const options = readCommandOptionsWithAncestors(command);
@@ -13922,39 +13922,39 @@ function createCommandLoggerResolver(options) {
13922
13922
  };
13923
13923
  }
13924
13924
  const defaultClearLoginStatus = async (...args) => {
13925
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-BOk8eomf.cjs'); });
13925
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-DWmNuhWc.cjs'); });
13926
13926
  return clearLoginStatus(...args);
13927
13927
  };
13928
13928
  const defaultLoginToHeybox = async (...args) => {
13929
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-BOk8eomf.cjs'); });
13929
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-DWmNuhWc.cjs'); });
13930
13930
  return loginToHeybox(...args);
13931
13931
  };
13932
13932
  const defaultPrintLoginStatus = async (...args) => {
13933
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-BOk8eomf.cjs'); });
13933
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-DWmNuhWc.cjs'); });
13934
13934
  return printLoginStatus(...args);
13935
13935
  };
13936
13936
  const defaultRunBuildCommand = async (...args) => {
13937
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-BrxETAg-.cjs'); });
13937
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-BZg2rHkW.cjs'); });
13938
13938
  return runBuildCommand(...args);
13939
13939
  };
13940
13940
  const defaultRunCreateCommand = async (...args) => {
13941
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-D_Cwz_i7.cjs'); });
13941
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-fPvlqLbS.cjs'); });
13942
13942
  return runCreateCommand(...args);
13943
13943
  };
13944
13944
  const defaultRunDevCommand = async (...args) => {
13945
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-CVqfVj4a.cjs'); }).then(function (n) { return n.dev; });
13945
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-X8_kbp78.cjs'); }).then(function (n) { return n.dev; });
13946
13946
  return runDevCommand(...args);
13947
13947
  };
13948
13948
  const defaultRunDoctorCommand = async (...args) => {
13949
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-B__9PDSg.cjs'); });
13949
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DdiucYs9.cjs'); });
13950
13950
  return runDoctorCommand(...args);
13951
13951
  };
13952
13952
  const defaultRunSkillInstallCommand = async (...args) => {
13953
- const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-mwRSQNYa.cjs'); });
13953
+ const { runSkillInstallCommand } = await Promise.resolve().then(function () { return require('./skill-DC3cfPj2.cjs'); });
13954
13954
  return runSkillInstallCommand(...args);
13955
13955
  };
13956
13956
  const defaultRunRemoteCommand = async (...args) => {
13957
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BbB3_uFH.cjs'); });
13957
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-BHJFxXyc.cjs'); });
13958
13958
  return runRemoteCommand(...args);
13959
13959
  };
13960
13960
  function resolveStandaloneLogger(options, verbose) {
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-Bdo2T9uy.cjs');
3
+ var index$2 = require('./index-BGh-Izf8.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');
7
7
  var require$$0$5 = require('assert');
8
8
  var require$$0$4 = require('events');
9
9
  var require$$1$1 = require('util');
10
- var runtimePermissionEnv = require('./runtime-permission-env-AT-04rSn.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
11
11
  var require$$0$7 = require('net');
12
12
  var require$$0$6 = require('url');
13
13
  var require$$2$1 = require('http');
@@ -11,8 +11,8 @@ var require$$0$4 = require('url');
11
11
  var require$$0 = require('zlib');
12
12
  var require$$0$1 = require('buffer');
13
13
  var require$$1 = require('util');
14
- var index = require('./index-Bdo2T9uy.cjs');
15
- var dev = require('./dev-CVqfVj4a.cjs');
14
+ var index = require('./index-BGh-Izf8.cjs');
15
+ var dev = require('./dev-X8_kbp78.cjs');
16
16
  require('node:module');
17
17
  require('node:fs');
18
18
  require('node:fs/promises');
@@ -23,12 +23,12 @@ require('node:crypto');
23
23
  require('readline');
24
24
  require('tty');
25
25
  require('assert');
26
- require('./session-B_C7uQDa.cjs');
26
+ require('./session-Dz1cGg0E.cjs');
27
27
  require('fs');
28
28
  require('constants');
29
- require('./context-DxBK07jO.cjs');
30
- require('./runtime-permission-env-AT-04rSn.cjs');
31
- require('./version-CDYLTzyb.cjs');
29
+ require('./context-YrzmEOau.cjs');
30
+ require('./runtime-permission-env-eiq8vE62.cjs');
31
+ require('./version-DYFkOykv.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-BU-kVQwl.cjs');
45
+ require('./project-vite-BVDIeoHB.cjs');
46
46
  require('node:zlib');
47
47
 
48
48
  var bufferUtil = {exports: {}};
@@ -3,9 +3,9 @@
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 session = require('./session-B_C7uQDa.cjs');
6
+ var session = require('./session-Dz1cGg0E.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-Bdo2T9uy.cjs');
8
+ var index = require('./index-BGh-Izf8.cjs');
9
9
  require('node:path');
10
10
  require('fs');
11
11
  require('constants');
@@ -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-Bdo2T9uy.cjs');
8
+ var index = require('./index-BGh-Izf8.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-AT-04rSn.cjs');
4
- var context = require('./context-DxBK07jO.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
4
+ var context = require('./context-YrzmEOau.cjs');
5
5
  var promises = require('node:readline/promises');
6
- var index = require('./index-Bdo2T9uy.cjs');
7
- var session = require('./session-B_C7uQDa.cjs');
6
+ var index = require('./index-BGh-Izf8.cjs');
7
+ var session = require('./session-Dz1cGg0E.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 runtimeGate = require('./runtime-gate-GQWWSNNP.cjs');
15
- require('./version-CDYLTzyb.cjs');
14
+ var runtimeGate = require('./runtime-gate-CR0dRMpQ.cjs');
15
+ require('./version-DYFkOykv.cjs');
16
16
  require('node:async_hooks');
17
17
  require('sharp');
18
18
  require('node:module');
@@ -57,6 +57,9 @@ async function postHeyboxApi(pathWithQuery, body, session$1, runtime) {
57
57
  const context = session.createHeyboxOpenPlatformRequestContext(session$1, pathWithQuery, {
58
58
  contentType: 'application/x-www-form-urlencoded',
59
59
  });
60
+ // CDN 使用共用上传服务,不随小程序服务的个人测试 tag 切换。
61
+ delete context.headers['x-rylai-service-tag'];
62
+ delete context.platformParams.special_tag;
60
63
  const response = await fetchImpl(session.createHeyboxApiUrl(runtime.baseUrl ?? context.baseUrl, pathWithQuery, context.platformParams), {
61
64
  method: 'POST',
62
65
  headers: context.headers,
@@ -318,7 +321,7 @@ function createDefaultCosClient(uploadToken, COS) {
318
321
  };
319
322
  }
320
323
  async function loadCosConstructor() {
321
- const cosModule = await Promise.resolve().then(function () { return require('./index-26VGAsFk.cjs'); }).then(function (n) { return n.index; });
324
+ const cosModule = await Promise.resolve().then(function () { return require('./index-BdbwsefW.cjs'); }).then(function (n) { return n.index; });
322
325
  return cosModule.default;
323
326
  }
324
327
  function formatSize(bytes) {
@@ -1470,9 +1473,9 @@ async function remotePermissionList(options, context, runtime) {
1470
1473
  }
1471
1474
  async function remotePermissionApply(options, context, runtime) {
1472
1475
  const miniProgramId = requireBinding(context);
1473
- const key = requireNonEmpty(options.key, '请指定申请权限 network 或 companion');
1474
- if (key !== 'network' && key !== 'companion')
1475
- throw new Error('仅支持申请 network 或 companion 权限');
1476
+ const key = requireNonEmpty(options.key, '请指定申请权限 network、companion 或 appProtocol');
1477
+ if (key !== 'network' && key !== 'companion' && key !== 'appProtocol')
1478
+ throw new Error('仅支持申请 network、companion 或 appProtocol 权限');
1476
1479
  const reason = requireNonEmpty(options.reason, '权限申请必须传 --reason');
1477
1480
  if (Array.from(reason).length > 500)
1478
1481
  throw new Error('申请理由不能超过 500 字');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-AT-04rSn.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-eiq8vE62.cjs');
4
4
 
5
5
  // Shorthands
6
6
  /**
@@ -2,7 +2,7 @@
2
2
 
3
3
  var fs = require('node:fs');
4
4
  var path = require('node:path');
5
- var version = require('./version-CDYLTzyb.cjs');
5
+ var version = require('./version-DYFkOykv.cjs');
6
6
  require('node:crypto');
7
7
  var node_async_hooks = require('node:async_hooks');
8
8
 
@@ -2965,6 +2965,7 @@ const MINI_PROGRAM_PERMISSION_KEYS = [
2965
2965
  'leaderboard',
2966
2966
  'network',
2967
2967
  'companion',
2968
+ 'appProtocol',
2968
2969
  ];
2969
2970
  const MINI_PROGRAM_PERMISSION_CATALOG = [
2970
2971
  {
@@ -3100,6 +3101,16 @@ const MINI_PROGRAM_PERMISSION_CATALOG = [
3100
3101
  ],
3101
3102
  conditions: ['声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。'],
3102
3103
  },
3104
+ {
3105
+ key: 'appProtocol',
3106
+ name: '应用协议执行',
3107
+ description: '执行任意小黑盒客户端协议。',
3108
+ access: 'platform-approval',
3109
+ risk: 'high',
3110
+ config: {},
3111
+ methods: ['device.executeProtocol'],
3112
+ conditions: ['最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。'],
3113
+ },
3103
3114
  ];
3104
3115
  new Set(MINI_PROGRAM_PERMISSION_KEYS);
3105
3116
 
@@ -3284,7 +3295,7 @@ function isRecord$2$1(value) {
3284
3295
  }
3285
3296
 
3286
3297
  /** 仅供开发工具和 Host 使用;新增权限必须单独评估,不能从平台审批目录自动推导。 */
3287
- const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion'];
3298
+ const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion', 'appProtocol'];
3288
3299
  /**
3289
3300
  * 严格解析本地 grant。任何未知字段、重复权限或非法配置都拒绝整份输入。
3290
3301
  * 只校验数据合同;票据、身份、摘要、过期时间和 CLI lease 必须由 Host 另行验证。
@@ -3316,6 +3327,11 @@ function parseMiniProgramLocalDevGrant(value) {
3316
3327
  return { valid: false };
3317
3328
  entries.push({ key: 'companion', status: 'enabled', config: {} });
3318
3329
  }
3330
+ else if (entry.key === 'appProtocol') {
3331
+ if (!hasExactFields(entry.config, []))
3332
+ return { valid: false };
3333
+ entries.push({ key: 'appProtocol', status: 'enabled', config: {} });
3334
+ }
3319
3335
  else {
3320
3336
  return { valid: false };
3321
3337
  }
@@ -3331,7 +3347,7 @@ function createMiniProgramLocalDevGrant(options) {
3331
3347
  if (!Number.isSafeInteger(options.revision) || options.revision < 0)
3332
3348
  throw new Error('本地调试权限 revision 必须是非负安全整数');
3333
3349
  const approvals = parseMiniProgramRuntimePermissions(options.runtimePermissions);
3334
- const eligible = new Set(options.eligiblePermissionKeys ?? ['network']);
3350
+ const eligible = new Set(options.eligiblePermissionKeys ?? ['network', 'appProtocol']);
3335
3351
  const entries = [];
3336
3352
  for (const key of LOCAL_DEV_GRANT_PERMISSION_KEYS) {
3337
3353
  if (!eligible.has(key) || options.declaredPermissions[key]?.enabled !== true)
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-Bdo2T9uy.cjs');
3
+ var index = require('./index-BGh-Izf8.cjs');
4
4
  var node_crypto = require('node:crypto');
5
5
  var path = require('node:path');
6
6
  var require$$0$2 = require('fs');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var version = require('./version-CDYLTzyb.cjs');
3
+ var version = require('./version-DYFkOykv.cjs');
4
4
  var fs = require('node:fs/promises');
5
5
  var path = require('node:path');
6
6
  var childProcess = require('node:child_process');
7
- var index = require('./index-Bdo2T9uy.cjs');
7
+ var index = require('./index-BGh-Izf8.cjs');
8
8
  require('node:module');
9
9
  require('node:fs');
10
10
  require('path');
@@ -3,6 +3,6 @@
3
3
  /** 构建时替换为当前发布包的实际版本。 */
4
4
  const HB_SDK_VERSION = typeof undefined === 'string'
5
5
  ? undefined
6
- : '0.9.1-alpha.2';
6
+ : '0.9.1-alpha.4';
7
7
 
8
8
  exports.HB_SDK_VERSION = HB_SDK_VERSION;
package/dist/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./cli-chunks/index-Bdo2T9uy.cjs');
3
+ var index = require('./cli-chunks/index-BGh-Izf8.cjs');
4
4
  require('node:module');
5
5
  require('node:fs');
6
6
  require('node:fs/promises');