@heybox/hb-sdk 0.7.0-alpha.1 → 0.7.0-alpha.3

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 (26) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/cli-chunks/{build-CWBksuZX.cjs → build-DTU4TgMT.cjs} +4 -4
  3. package/dist/cli-chunks/{context-B3_TJIaj.cjs → context-Bx4aT-NN.cjs} +15 -2
  4. package/dist/cli-chunks/{create-BdDwp1Qx.cjs → create-D9Nls0P8.cjs} +1 -1
  5. package/dist/cli-chunks/{dev-PCY_9q8y.cjs → dev-DKrRVtVi.cjs} +162 -10
  6. package/dist/cli-chunks/{doctor-DzEMXA58.cjs → doctor-DM5_TKLh.cjs} +1 -1
  7. package/dist/cli-chunks/{index-CjT2V5RD.cjs → index-DRee9Dhy.cjs} +14 -14
  8. package/dist/cli-chunks/{index-DmgF1ROG.cjs → index-doiKZGkJ.cjs} +2 -2
  9. package/dist/cli-chunks/{login-D775i7Ub.cjs → login-C6Pgq394.cjs} +2 -2
  10. package/dist/cli-chunks/{project-vite-ty-N0y8F.cjs → project-vite-DwhS4B4Z.cjs} +1 -1
  11. package/dist/cli-chunks/{remote-3Zmtshjq.cjs → remote-CdH6zSbP.cjs} +6 -6
  12. package/dist/cli-chunks/{runtime-gate-BWlU-R4h.cjs → runtime-gate-CtV7rWyX.cjs} +1 -1
  13. package/dist/cli-chunks/{runtime-permission-env-DKrhgVM3.cjs → runtime-permission-env-D-8_jPG3.cjs} +2 -0
  14. package/dist/cli-chunks/{session-piLyMOuV.cjs → session-Bem7bONz.cjs} +1 -1
  15. package/dist/cli.cjs +1 -1
  16. package/dist/devtools/mock-host/main.js +47 -4
  17. package/dist/index.cjs.js +1 -1
  18. package/dist/index.esm.js +1 -1
  19. package/dist/miniapp-publish.cjs.js +2 -0
  20. package/dist/miniapp-publish.esm.js +2 -1
  21. package/dist/vite.cjs.js +1 -1
  22. package/dist/vite.esm.js +1 -1
  23. package/package.json +2 -2
  24. package/skill/references/api-root.md +1 -1
  25. package/skill/skill.json +4 -4
  26. package/types/miniapp-publish/index.d.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.0-alpha.3
4
+
5
+ ### SDK
6
+
7
+ - 收紧生产开发地址确认边界.
8
+ - 统一小程序宿主运行时安全策略.
9
+
10
+ ### Runtime
11
+
12
+ - 导出 URL 判定工具并接线截图 chrome 隐藏 (@heybox/hb-sdk-runtime).
13
+ - 收口用户授权编排到 Runtime adapter (@heybox/hb-sdk-runtime).
14
+ - 切断 legacy 依赖并收口 Host Runtime 边界 (@heybox/hb-sdk-runtime).
15
+ - 收口生产启动解析与请求装配 (@heybox/hb-sdk-runtime).
16
+ - 补强生产启动配置矩阵 (@heybox/hb-sdk-runtime).
17
+ - 统一生产入口到 Core Runtime (@heybox/hb-sdk-runtime).
18
+ - 增加 Runtime-first 生产 Host 入口 (@heybox/hb-sdk-runtime).
19
+ - 严格校验平台适配器输入 (@heybox/hb-sdk-runtime).
20
+ - 移除能力目录重复枚举 (@heybox/hb-sdk-runtime).
21
+ - 统一 Host 核心状态机与协议实现 (@heybox/hb-sdk-runtime).
22
+ - 完善生产启动矩阵契约 (@heybox/hb-sdk-runtime).
23
+ - 补充 Host URL 脱敏契约 (@heybox/hb-sdk-runtime).
24
+ - 补强 Host 迁移安全契约 (@heybox/hb-sdk-runtime).
25
+ - 固化生产 Host 迁移契约 (@heybox/hb-sdk-runtime).
26
+
27
+ ## 0.7.0-alpha.2
28
+
29
+ ### CLI
30
+
31
+ - `hb-sdk dev` 绑定远端小程序后签发并轮换 local_dev 启动票,把独立的 `preview_token` 写入扫码 URL,供 Host 兑换 unpublished 公开详情。
32
+
33
+ ### Runtime
34
+
35
+ - 允许的 `mini_url` 调试入口会绑定 Host 上的 `mini_program_id`;公开详情对 unpublished 失败时也不丢这个身份。
36
+
3
37
  ## 0.7.0-alpha.1
4
38
 
5
39
  ### Docs / Agent Skill
@@ -3,10 +3,10 @@
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-DKrhgVM3.cjs');
7
- var runtimeGate = require('./runtime-gate-BWlU-R4h.cjs');
8
- var index = require('./index-CjT2V5RD.cjs');
9
- var projectVite = require('./project-vite-ty-N0y8F.cjs');
6
+ var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
7
+ var runtimeGate = require('./runtime-gate-CtV7rWyX.cjs');
8
+ var index = require('./index-DRee9Dhy.cjs');
9
+ var projectVite = require('./project-vite-DwhS4B4Z.cjs');
10
10
  require('node:async_hooks');
11
11
  require('node:module');
12
12
  require('path');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var session = require('./session-piLyMOuV.cjs');
4
- var runtimePermissionEnv = require('./runtime-permission-env-DKrhgVM3.cjs');
3
+ var session = require('./session-Bem7bONz.cjs');
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');
7
7
  var path = require('node:path');
@@ -109,6 +109,7 @@ function createRemoteApiClient(options) {
109
109
  listUserMiniprograms: (requestOptions = {}) => listUserMiniprograms(requestOptions, options),
110
110
  createUserMiniprogram: () => createUserMiniprogram(options),
111
111
  getUserMiniprogramDetail: (requestOptions) => getUserMiniprogramDetail(requestOptions, options),
112
+ createLocalDevLaunchToken: (requestOptions) => createLocalDevLaunchToken$1(requestOptions, options),
112
113
  getPreviewAllowlist: (requestOptions) => getPreviewAllowlist(requestOptions, options),
113
114
  updatePreviewAllowlist: (requestOptions) => updatePreviewAllowlist(requestOptions, options),
114
115
  createUserMiniprogramLeaderboard: (requestOptions) => createUserMiniprogramLeaderboard(requestOptions, options),
@@ -144,6 +145,9 @@ async function createUserMiniprogram(runtime) {
144
145
  async function getUserMiniprogramDetail(options, runtime) {
145
146
  return remoteGet(runtimePermissionEnv.DETAIL_USER_MINIPROGRAM_API_PATH, options, runtime);
146
147
  }
148
+ async function createLocalDevLaunchToken$1(options, runtime) {
149
+ return remotePostForm(runtimePermissionEnv.CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH, options, runtime);
150
+ }
147
151
  async function getPreviewAllowlist(options, runtime) {
148
152
  return remoteGet(runtimePermissionEnv.USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, options, runtime);
149
153
  }
@@ -384,6 +388,14 @@ async function getBoundMiniProgram(options = {}, runtime = {}) {
384
388
  detail,
385
389
  };
386
390
  }
391
+ async function createLocalDevLaunchToken(options, runtime = {}) {
392
+ const miniProgramId = options.miniProgramId.trim();
393
+ if (!miniProgramId) {
394
+ throw new Error('mini-program-id 不能为空');
395
+ }
396
+ const api = await resolveRemoteApiClient(options, runtime);
397
+ return api.createLocalDevLaunchToken({ mini_program_id: miniProgramId });
398
+ }
387
399
  async function resolveRemoteApiClient(options, runtime) {
388
400
  if (runtime.apiClient) {
389
401
  return runtime.apiClient;
@@ -397,6 +409,7 @@ function isTruthyEnvFlag(value) {
397
409
  }
398
410
 
399
411
  exports.MiniProgramProjectBindingError = MiniProgramProjectBindingError;
412
+ exports.createLocalDevLaunchToken = createLocalDevLaunchToken;
400
413
  exports.createMiniProgramMockPermissionState = createMiniProgramMockPermissionState;
401
414
  exports.createMiniProgramMockRuntimePermissions = createMiniProgramMockRuntimePermissions;
402
415
  exports.createRemoteApiClientForEnvironment = createRemoteApiClientForEnvironment;
@@ -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-CjT2V5RD.cjs');
8
+ var index = require('./index-DRee9Dhy.cjs');
9
9
  require('node:module');
10
10
  require('os');
11
11
  require('readline');
@@ -6,15 +6,15 @@ var path = require('node:path');
6
6
  var net = require('node:net');
7
7
  var promises = require('node:dns/promises');
8
8
  var node_http = require('node:http');
9
- var context = require('./context-B3_TJIaj.cjs');
9
+ var context = require('./context-Bx4aT-NN.cjs');
10
10
  var node_crypto = require('node:crypto');
11
11
  var undici = require('undici');
12
12
  var browser = require('./browser-RAy8e8cV.cjs');
13
- var index = require('./index-CjT2V5RD.cjs');
14
- var projectVite = require('./project-vite-ty-N0y8F.cjs');
13
+ var index = require('./index-DRee9Dhy.cjs');
14
+ var projectVite = require('./project-vite-DwhS4B4Z.cjs');
15
15
  var fs$1 = require('node:fs/promises');
16
- var runtimePermissionEnv = require('./runtime-permission-env-DKrhgVM3.cjs');
17
- require('./session-piLyMOuV.cjs');
16
+ var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
17
+ require('./session-Bem7bONz.cjs');
18
18
  require('fs');
19
19
  require('constants');
20
20
  require('stream');
@@ -896,18 +896,19 @@ const MOCK_HOST_ROOT_CANDIDATES = [
896
896
  async function startMiniProgramMockHostServer(options) {
897
897
  const root = options.root ?? resolveMiniProgramMockHostRoot(options.rootCandidates);
898
898
  assertCompleteMiniProgramMockHostRoot(root);
899
- const bootstrapJson = serializeMockHostBootstrap({
899
+ const bootstrap = {
900
900
  defaultLanAddressId: options.defaultLanAddressId,
901
901
  devContext: options.devContext,
902
902
  lanAddresses: options.lanAddresses ?? [],
903
903
  macAppProtocol: options.macAppProtocol,
904
904
  nativeAppLaunchUnavailableReason: options.nativeAppLaunchUnavailableReason,
905
905
  runtimePermissions: options.runtimePermissions,
906
- });
906
+ };
907
+ let bootstrapJson = serializeMockHostBootstrap(bootstrap);
907
908
  const server = createMiniProgramMockHostServer(root, {
908
909
  appUrl: options.appUrl,
909
910
  allowedMiniUrlOrigins: new Set((options.lanAddresses ?? []).map(({ appUrl }) => new URL(appUrl).origin)),
910
- bootstrapJson,
911
+ readBootstrapJson: () => bootstrapJson,
911
912
  fetchImpl: options.fetchImpl ?? fetch,
912
913
  isLoopbackPeer: options.isLoopbackPeer ?? isLoopbackAddress,
913
914
  lookupHostname: options.lookupHostname ?? (async (hostname) => promises.lookup(hostname, { all: true, verbatim: true })),
@@ -921,6 +922,17 @@ async function startMiniProgramMockHostServer(options) {
921
922
  close: () => new Promise((resolve) => {
922
923
  server.close(() => resolve());
923
924
  }),
925
+ updateBootstrap: (next) => {
926
+ if (next.devContext !== undefined)
927
+ bootstrap.devContext = next.devContext;
928
+ if (next.lanAddresses !== undefined)
929
+ bootstrap.lanAddresses = next.lanAddresses;
930
+ if (next.macAppProtocol === null)
931
+ delete bootstrap.macAppProtocol;
932
+ else if (next.macAppProtocol !== undefined)
933
+ bootstrap.macAppProtocol = next.macAppProtocol;
934
+ bootstrapJson = serializeMockHostBootstrap(bootstrap);
935
+ },
924
936
  networkUrls: createMiniProgramMockHostNetworkUrls({
925
937
  lanAddresses: options.lanAddresses,
926
938
  port,
@@ -1013,7 +1025,7 @@ function createMiniProgramMockHostServer(root, runtime) {
1013
1025
  writeMethodNotAllowed(response, 'GET');
1014
1026
  return;
1015
1027
  }
1016
- writeSerializedJsonResponse(response, 200, runtime.bootstrapJson);
1028
+ writeSerializedJsonResponse(response, 200, runtime.readBootstrapJson());
1017
1029
  return;
1018
1030
  }
1019
1031
  if (pathname === DEV_PERMISSIONS_PATH && runtime.permissionController) {
@@ -1225,6 +1237,7 @@ async function listenHttpServer(server, options, getPortImpl) {
1225
1237
  const MINI_PROGRAM_URL_QUERY_PARAM = 'mini_url';
1226
1238
  const MINI_PROGRAM_RUNTIME_URL_QUERY_PARAM = 'runtime_url';
1227
1239
  const MINI_PROGRAM_SDK_VERSION_QUERY_PARAM = 'sdk_version';
1240
+ const MINI_PROGRAM_LOCAL_DEV_LAUNCH_TOKEN_QUERY_PARAM = 'local_dev_launch_token';
1228
1241
  const MINI_PROGRAM_DEV_SHELL_URL = 'heybox-mini-dev://sandbox';
1229
1242
  const OPEN_IN_APP_URL = 'https://api.xiaoheihe.cn/open_inapp/';
1230
1243
  function createMacAppProtocol(appUrl, options = {}) {
@@ -1260,6 +1273,10 @@ function createPartiallyEncodedMiniProgramDevShellUrl(appUrl, options) {
1260
1273
  if (miniProgramId) {
1261
1274
  devShellUrl += `&mini_program_id=${encodeURIComponent(miniProgramId)}`;
1262
1275
  }
1276
+ const localDevLaunchToken = options.localDevLaunchToken?.trim();
1277
+ if (localDevLaunchToken) {
1278
+ devShellUrl += `&${MINI_PROGRAM_LOCAL_DEV_LAUNCH_TOKEN_QUERY_PARAM}=${encodeURIComponent(localDevLaunchToken)}`;
1279
+ }
1263
1280
  if (hasRuntimeUrl(options.runtimeUrl)) {
1264
1281
  const runtimeUrl = buildRuntimeUrlWithLaunchParams(options.runtimeUrl, appUrl, options);
1265
1282
  devShellUrl += `&${MINI_PROGRAM_RUNTIME_URL_QUERY_PARAM}=${encodeURIComponent(runtimeUrl)}`;
@@ -1277,6 +1294,10 @@ function createEncodedMiniProgramDevShellUrl(appUrl, options) {
1277
1294
  if (miniProgramId) {
1278
1295
  devShellUrl.searchParams.set('mini_program_id', miniProgramId);
1279
1296
  }
1297
+ const localDevLaunchToken = options.localDevLaunchToken?.trim();
1298
+ if (localDevLaunchToken) {
1299
+ devShellUrl.searchParams.set(MINI_PROGRAM_LOCAL_DEV_LAUNCH_TOKEN_QUERY_PARAM, localDevLaunchToken);
1300
+ }
1280
1301
  if (hasRuntimeUrl(options.runtimeUrl)) {
1281
1302
  devShellUrl.searchParams.set(MINI_PROGRAM_RUNTIME_URL_QUERY_PARAM, buildRuntimeUrlWithLaunchParams(options.runtimeUrl, appUrl, options));
1282
1303
  }
@@ -1305,6 +1326,10 @@ function buildRuntimeUrlWithLaunchParams(runtimeUrl, appUrl, options) {
1305
1326
  if (miniProgramId) {
1306
1327
  url.searchParams.set('mini_program_id', miniProgramId);
1307
1328
  }
1329
+ const localDevLaunchToken = options.localDevLaunchToken?.trim();
1330
+ if (localDevLaunchToken) {
1331
+ url.searchParams.set(MINI_PROGRAM_LOCAL_DEV_LAUNCH_TOKEN_QUERY_PARAM, localDevLaunchToken);
1332
+ }
1308
1333
  const sdkVersion = options.sdkVersion?.trim();
1309
1334
  if (sdkVersion) {
1310
1335
  url.searchParams.set(MINI_PROGRAM_SDK_VERSION_QUERY_PARAM, sdkVersion);
@@ -1322,7 +1347,7 @@ function createHeyboxProtocol(payload) {
1322
1347
  /** 构建时替换为当前发布包的实际版本。 */
1323
1348
  const HB_SDK_VERSION = typeof undefined === 'string'
1324
1349
  ? undefined
1325
- : '0.7.0-alpha.1';
1350
+ : '0.7.0-alpha.3';
1326
1351
 
1327
1352
  class DevPermissionOverrideStoreError extends Error {
1328
1353
  code;
@@ -1505,6 +1530,7 @@ async function runDevCommand(options, runtime = {}) {
1505
1530
  hmrHost: resolvedOptions.hmrHost,
1506
1531
  interfaces: networkInterfaceSnapshot,
1507
1532
  miniProgramId: devLaunchContext.miniProgramId,
1533
+ localDevLaunchToken: devLaunchContext.localDevLaunchToken,
1508
1534
  rawProtocol: options.rawProtocol,
1509
1535
  runtimeUrl: options.runtimeUrl,
1510
1536
  sdkVersion: HB_SDK_VERSION,
@@ -1523,6 +1549,7 @@ async function runDevCommand(options, runtime = {}) {
1523
1549
  lookupHostname: runtime.lookupHostname,
1524
1550
  macAppProtocol: createMacAppProtocol(appUrl, {
1525
1551
  miniProgramId: devLaunchContext.miniProgramId,
1552
+ localDevLaunchToken: devLaunchContext.localDevLaunchToken,
1526
1553
  runtimeUrl: options.runtimeUrl,
1527
1554
  sdkVersion: HB_SDK_VERSION,
1528
1555
  }),
@@ -1538,6 +1565,45 @@ async function runDevCommand(options, runtime = {}) {
1538
1565
  throw error;
1539
1566
  }
1540
1567
  closers.push(() => mockHost.close());
1568
+ if (devLaunchContext.source === 'remote' && devLaunchContext.miniProgramId) {
1569
+ const tokenSession = startLocalDevLaunchTokenSession({
1570
+ env: runtime.env,
1571
+ fetchImpl,
1572
+ logger,
1573
+ miniProgramId: devLaunchContext.miniProgramId,
1574
+ onToken: (localDevLaunchToken) => {
1575
+ const tokenContext = {
1576
+ source: 'remote',
1577
+ miniProgramId: devLaunchContext.miniProgramId,
1578
+ ...(localDevLaunchToken ? { localDevLaunchToken } : {}),
1579
+ runtimePermissions: devLaunchContext.runtimePermissions,
1580
+ };
1581
+ mockHost.updateBootstrap({
1582
+ devContext: tokenContext,
1583
+ lanAddresses: createLanAddressCandidates({
1584
+ appUrl,
1585
+ hmrHost: resolvedOptions.hmrHost,
1586
+ interfaces: networkInterfaceSnapshot,
1587
+ miniProgramId: devLaunchContext.miniProgramId,
1588
+ localDevLaunchToken,
1589
+ rawProtocol: options.rawProtocol,
1590
+ runtimeUrl: options.runtimeUrl,
1591
+ sdkVersion: HB_SDK_VERSION,
1592
+ viteNetworkUrls: appServer.resolvedUrls?.network ?? [],
1593
+ }),
1594
+ macAppProtocol: createMacAppProtocol(appUrl, {
1595
+ miniProgramId: devLaunchContext.miniProgramId,
1596
+ localDevLaunchToken,
1597
+ runtimeUrl: options.runtimeUrl,
1598
+ sdkVersion: HB_SDK_VERSION,
1599
+ }),
1600
+ });
1601
+ },
1602
+ projectRoot,
1603
+ timeoutMs: runtime.devContextTimeoutMs ?? DEFAULT_DEV_CONTEXT_TIMEOUT_MS,
1604
+ });
1605
+ closers.push(tokenSession.close);
1606
+ }
1541
1607
  logger.success('Mock runtime host 已就绪');
1542
1608
  logger.info(`Mock runtime host: ${mockHost.url}`);
1543
1609
  logger.info(`Mini program URL: ${appUrl}`);
@@ -1838,6 +1904,89 @@ function installShutdownHandlers(closers, processLike) {
1838
1904
  async function closeAll(closers) {
1839
1905
  await Promise.allSettled(closers.map((close) => close()));
1840
1906
  }
1907
+ function startLocalDevLaunchTokenSession(options) {
1908
+ let closed = false;
1909
+ let expirationTimer;
1910
+ let refreshTimer;
1911
+ const refresh = async () => {
1912
+ try {
1913
+ const issued = await issueLocalDevLaunchToken(options);
1914
+ if (closed)
1915
+ return;
1916
+ if (!issued) {
1917
+ schedule(options.timeoutMs);
1918
+ return;
1919
+ }
1920
+ options.onToken(issued.token);
1921
+ const ttl = Math.max(0, issued.expiresAt - Date.now());
1922
+ scheduleExpiration(ttl);
1923
+ schedule(Math.max(1_000, Math.floor(ttl * 0.8)));
1924
+ }
1925
+ catch (error) {
1926
+ if (closed)
1927
+ return;
1928
+ options.logger.warn(`刷新本地调试启动票失败,将自动重试:${index.readRedactedErrorMessage(error)}`);
1929
+ schedule(options.timeoutMs);
1930
+ }
1931
+ };
1932
+ const schedule = (delayMs) => {
1933
+ refreshTimer = setTimeout(() => {
1934
+ void refresh();
1935
+ }, Math.max(1, delayMs));
1936
+ refreshTimer.unref?.();
1937
+ };
1938
+ const scheduleExpiration = (ttl) => {
1939
+ if (expirationTimer)
1940
+ clearTimeout(expirationTimer);
1941
+ expirationTimer = setTimeout(() => {
1942
+ if (!closed)
1943
+ options.onToken(undefined);
1944
+ }, Math.max(1, ttl));
1945
+ expirationTimer.unref?.();
1946
+ };
1947
+ void refresh();
1948
+ return {
1949
+ close: () => {
1950
+ closed = true;
1951
+ if (expirationTimer)
1952
+ clearTimeout(expirationTimer);
1953
+ if (refreshTimer)
1954
+ clearTimeout(refreshTimer);
1955
+ },
1956
+ };
1957
+ }
1958
+ async function issueLocalDevLaunchToken(options) {
1959
+ try {
1960
+ const issued = await loadRemoteDevContextWithTimeout({
1961
+ fetchImpl: options.fetchImpl,
1962
+ timeoutMs: options.timeoutMs,
1963
+ load: (fetchImpl) => context.createLocalDevLaunchToken({
1964
+ cwd: options.projectRoot,
1965
+ env: options.env,
1966
+ fetchImpl,
1967
+ miniProgramId: options.miniProgramId,
1968
+ }),
1969
+ });
1970
+ const token = typeof issued.token === 'string' ? issued.token.trim() : '';
1971
+ if (!token) {
1972
+ throw new Error('响应缺少 token');
1973
+ }
1974
+ const expiresAt = normalizeExpiresAt(issued.expires_at);
1975
+ if (!expiresAt || expiresAt <= Date.now()) {
1976
+ throw new Error('响应缺少有效 expires_at');
1977
+ }
1978
+ return { expiresAt, token };
1979
+ }
1980
+ catch (error) {
1981
+ options.logger.warn(`未能签发本地调试启动票,扫码后公开详情可能仍拿不到未发布小程序身份:${index.readRedactedErrorMessage(error)}`);
1982
+ return undefined;
1983
+ }
1984
+ }
1985
+ function normalizeExpiresAt(value) {
1986
+ if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0)
1987
+ return undefined;
1988
+ return value < 1_000_000_000_000 ? value * 1000 : value;
1989
+ }
1841
1990
  function createLanAddressCandidates(options) {
1842
1991
  const viteNetworkUrlByHost = new Map(options.viteNetworkUrls.map((url) => [readUrlHost(url), url]).filter((entry) => Boolean(entry[0])));
1843
1992
  const candidates = createLanInterfaceCandidates(options.interfaces)
@@ -1858,6 +2007,7 @@ function createLanAddressCandidates(options) {
1858
2007
  candidate.mobileAppQrPayload = createMobileAppQrPayload(appUrl, {
1859
2008
  bareProtocol: options.rawProtocol,
1860
2009
  miniProgramId: options.miniProgramId,
2010
+ localDevLaunchToken: options.localDevLaunchToken,
1861
2011
  runtimeUrl,
1862
2012
  sdkVersion: options.sdkVersion,
1863
2013
  });
@@ -1866,6 +2016,7 @@ function createLanAddressCandidates(options) {
1866
2016
  candidate.mobileAppQrPayload = createMobileAppQrPayload(appUrl, {
1867
2017
  bareProtocol: options.rawProtocol,
1868
2018
  miniProgramId: options.miniProgramId,
2019
+ localDevLaunchToken: options.localDevLaunchToken,
1869
2020
  sdkVersion: options.sdkVersion,
1870
2021
  });
1871
2022
  }
@@ -1955,4 +2106,5 @@ function isPrivateIPv4(address) {
1955
2106
  return parts[0] === 10 || (parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31) || (parts[0] === 192 && parts[1] === 168);
1956
2107
  }
1957
2108
 
2109
+ exports.normalizeExpiresAt = normalizeExpiresAt;
1958
2110
  exports.runDevCommand = runDevCommand;
@@ -4,7 +4,7 @@ var fs$1 = require('node:fs');
4
4
  var fs = require('node:fs/promises');
5
5
  var os = require('node:os');
6
6
  var path = require('node:path');
7
- var index = require('./index-CjT2V5RD.cjs');
7
+ var index = require('./index-DRee9Dhy.cjs');
8
8
  require('node:module');
9
9
  require('path');
10
10
  require('os');
@@ -234,19 +234,19 @@ function requireArgument () {
234
234
 
235
235
  var command = {};
236
236
 
237
- 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-CjT2V5RD.cjs', document.baseURI).href)));
237
+ 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-DRee9Dhy.cjs', document.baseURI).href)));
238
238
  function __require$4() { return require$5("node:events"); }
239
239
 
240
- 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-CjT2V5RD.cjs', document.baseURI).href)));
240
+ 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-DRee9Dhy.cjs', document.baseURI).href)));
241
241
  function __require$3() { return require$4("node:child_process"); }
242
242
 
243
- 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-CjT2V5RD.cjs', document.baseURI).href)));
243
+ 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-DRee9Dhy.cjs', document.baseURI).href)));
244
244
  function __require$2() { return require$3("node:path"); }
245
245
 
246
- 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-CjT2V5RD.cjs', document.baseURI).href)));
246
+ 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-DRee9Dhy.cjs', document.baseURI).href)));
247
247
  function __require$1() { return require$2("node:fs"); }
248
248
 
249
- 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-CjT2V5RD.cjs', document.baseURI).href)));
249
+ 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-DRee9Dhy.cjs', document.baseURI).href)));
250
250
  function __require() { return require$1("node:process"); }
251
251
 
252
252
  var help = {};
@@ -13347,7 +13347,7 @@ function getPathname(pathWithQuery) {
13347
13347
  }
13348
13348
 
13349
13349
  const CLI_VERSION_PLACEHOLDER = ['__HB', 'SDK', 'CLI', 'VERSION__'].join('_');
13350
- const BUILT_CLI_VERSION = '0.7.0-alpha.1';
13350
+ const BUILT_CLI_VERSION = '0.7.0-alpha.3';
13351
13351
  const PACKAGE_JSON_CANDIDATES = [
13352
13352
  path.resolve(__dirname, '..', '..', 'package.json'),
13353
13353
  path.resolve(__dirname, '..', 'package.json'),
@@ -13681,35 +13681,35 @@ function createCommandLoggerResolver(options) {
13681
13681
  };
13682
13682
  }
13683
13683
  const defaultClearLoginStatus = async (...args) => {
13684
- const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-D775i7Ub.cjs'); });
13684
+ const { clearLoginStatus } = await Promise.resolve().then(function () { return require('./login-C6Pgq394.cjs'); });
13685
13685
  return clearLoginStatus(...args);
13686
13686
  };
13687
13687
  const defaultLoginToHeybox = async (...args) => {
13688
- const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-D775i7Ub.cjs'); });
13688
+ const { loginToHeybox } = await Promise.resolve().then(function () { return require('./login-C6Pgq394.cjs'); });
13689
13689
  return loginToHeybox(...args);
13690
13690
  };
13691
13691
  const defaultPrintLoginStatus = async (...args) => {
13692
- const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-D775i7Ub.cjs'); });
13692
+ const { printLoginStatus } = await Promise.resolve().then(function () { return require('./login-C6Pgq394.cjs'); });
13693
13693
  return printLoginStatus(...args);
13694
13694
  };
13695
13695
  const defaultRunBuildCommand = async (...args) => {
13696
- const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-CWBksuZX.cjs'); });
13696
+ const { runBuildCommand } = await Promise.resolve().then(function () { return require('./build-DTU4TgMT.cjs'); });
13697
13697
  return runBuildCommand(...args);
13698
13698
  };
13699
13699
  const defaultRunCreateCommand = async (...args) => {
13700
- const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-BdDwp1Qx.cjs'); });
13700
+ const { runCreateCommand } = await Promise.resolve().then(function () { return require('./create-D9Nls0P8.cjs'); });
13701
13701
  return runCreateCommand(...args);
13702
13702
  };
13703
13703
  const defaultRunDevCommand = async (...args) => {
13704
- const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-PCY_9q8y.cjs'); });
13704
+ const { runDevCommand } = await Promise.resolve().then(function () { return require('./dev-DKrRVtVi.cjs'); });
13705
13705
  return runDevCommand(...args);
13706
13706
  };
13707
13707
  const defaultRunDoctorCommand = async (...args) => {
13708
- const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DzEMXA58.cjs'); });
13708
+ const { runDoctorCommand } = await Promise.resolve().then(function () { return require('./doctor-DM5_TKLh.cjs'); });
13709
13709
  return runDoctorCommand(...args);
13710
13710
  };
13711
13711
  const defaultRunRemoteCommand = async (...args) => {
13712
- const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-3Zmtshjq.cjs'); });
13712
+ const { runRemoteCommand } = await Promise.resolve().then(function () { return require('./remote-CdH6zSbP.cjs'); });
13713
13713
  return runRemoteCommand(...args);
13714
13714
  };
13715
13715
  function resolveStandaloneLogger(options, verbose) {
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var index$2 = require('./index-CjT2V5RD.cjs');
3
+ var index$2 = require('./index-DRee9Dhy.cjs');
4
4
  var require$$0$2 = require('fs');
5
5
  var require$$2$1 = require('crypto');
6
6
  var require$$1$2 = require('path');
7
7
  var require$$0$3 = require('assert');
8
8
  var require$$4$2 = require('events');
9
9
  var require$$1$1 = require('util');
10
- var runtimePermissionEnv = require('./runtime-permission-env-DKrhgVM3.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
11
11
  var require$$0$5 = require('net');
12
12
  var require$$0$4 = require('url');
13
13
  var require$$2$2 = require('http');
@@ -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-piLyMOuV.cjs');
6
+ var session = require('./session-Bem7bONz.cjs');
7
7
  var browser = require('./browser-RAy8e8cV.cjs');
8
- var index = require('./index-CjT2V5RD.cjs');
8
+ var index = require('./index-DRee9Dhy.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-CjT2V5RD.cjs');
8
+ var index = require('./index-DRee9Dhy.cjs');
9
9
 
10
10
  function findProjectRoot(startDir) {
11
11
  let current = path.resolve(startDir);
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  var promises = require('node:readline/promises');
4
- var index = require('./index-CjT2V5RD.cjs');
5
- var session = require('./session-piLyMOuV.cjs');
4
+ var index = require('./index-DRee9Dhy.cjs');
5
+ var session = require('./session-Bem7bONz.cjs');
6
6
  var childProcess = require('node:child_process');
7
7
  var fs = require('node:fs');
8
8
  var fs$1 = require('node:fs/promises');
9
9
  var path = require('node:path');
10
- var runtimePermissionEnv = require('./runtime-permission-env-DKrhgVM3.cjs');
11
- var runtimeGate = require('./runtime-gate-BWlU-R4h.cjs');
10
+ var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
11
+ var runtimeGate = require('./runtime-gate-CtV7rWyX.cjs');
12
12
  var node_crypto = require('node:crypto');
13
- var context = require('./context-B3_TJIaj.cjs');
13
+ var context = require('./context-Bx4aT-NN.cjs');
14
14
  require('node:module');
15
15
  require('path');
16
16
  require('os');
@@ -271,7 +271,7 @@ function createDefaultCosClient(uploadToken, COS) {
271
271
  };
272
272
  }
273
273
  async function loadCosConstructor() {
274
- const cosModule = await Promise.resolve().then(function () { return require('./index-DmgF1ROG.cjs'); }).then(function (n) { return n.index; });
274
+ const cosModule = await Promise.resolve().then(function () { return require('./index-doiKZGkJ.cjs'); }).then(function (n) { return n.index; });
275
275
  return cosModule.default;
276
276
  }
277
277
  function formatSize(bytes) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var runtimePermissionEnv = require('./runtime-permission-env-DKrhgVM3.cjs');
3
+ var runtimePermissionEnv = require('./runtime-permission-env-D-8_jPG3.cjs');
4
4
 
5
5
  function isValidMiniappManifestVersion(version) {
6
6
  return getMiniappManifestVersionError(version) === undefined;
@@ -2797,6 +2797,7 @@ const DEVELOPER_ENTITY_SWITCH_API_PATH = '/mall/developer/entity/switch';
2797
2797
  const LIST_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/list';
2798
2798
  const CREATE_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/create';
2799
2799
  const DETAIL_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/detail';
2800
+ const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = '/mall/developer/user_miniprogram/local_dev_launch_token';
2800
2801
  const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist';
2801
2802
  const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist/update';
2802
2803
  const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = '/mall/developer/user_miniprogram/leaderboard/create';
@@ -3130,6 +3131,7 @@ async function runMiniappPlatformCspEnvScope(skipPlatformCsp, action, env) {
3130
3131
 
3131
3132
  exports.CREATE_USER_MINIPROGRAM_API_PATH = CREATE_USER_MINIPROGRAM_API_PATH;
3132
3133
  exports.CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
3134
+ exports.CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH;
3133
3135
  exports.DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
3134
3136
  exports.DETAIL_USER_MINIPROGRAM_API_PATH = DETAIL_USER_MINIPROGRAM_API_PATH;
3135
3137
  exports.DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CjT2V5RD.cjs');
3
+ var index = require('./index-DRee9Dhy.cjs');
4
4
  var node_crypto = require('node:crypto');
5
5
  var path = require('node:path');
6
6
  var require$$0$2 = require('fs');
package/dist/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./cli-chunks/index-CjT2V5RD.cjs');
3
+ var index = require('./cli-chunks/index-DRee9Dhy.cjs');
4
4
  require('node:module');
5
5
  require('node:fs');
6
6
  require('node:fs/promises');
@@ -5081,9 +5081,9 @@ function isShareChannel(value) {
5081
5081
  }
5082
5082
 
5083
5083
  /** 获取小程序隔离 storage。 */
5084
- function getMiniProgramRuntimeStorage(payload, options, platformAdapter) {
5084
+ async function getMiniProgramRuntimeStorage(payload, options, platformAdapter) {
5085
5085
  const { key } = readMiniProgramGetStoragePayload(payload, options.maxKeyLength);
5086
- const storageValue = platformAdapter.storage.getStorage({
5086
+ const storageValue = await platformAdapter.storage.getStorage({
5087
5087
  key: createMiniProgramRuntimeStorageKey(key, options.scope || getMiniProgramRuntimeStorageScope(undefined, platformAdapter), options.maxKeyLength),
5088
5088
  });
5089
5089
  return {
@@ -5194,6 +5194,10 @@ async function getMiniProgramRuntimeLocalIdentity(payload, platformAdapter, iden
5194
5194
  || !result.appUserId.trim()) {
5195
5195
  throw createMiniProgramRuntimeBridgeError('INVALID_RESPONSE', 'Host user.getLocalIdentity 返回无效');
5196
5196
  }
5197
+ platformAdapter.auth.emitAuthEvent?.('user_info_authorization_change', {
5198
+ identity: 'granted',
5199
+ profile: 'not_requested',
5200
+ });
5197
5201
  return { appUserId: result.appUserId };
5198
5202
  }
5199
5203
 
@@ -5209,6 +5213,10 @@ async function revokeMiniProgramRuntimeAuthorization(payload, platformAdapter, i
5209
5213
  miniProgramId,
5210
5214
  trustedUserGesture: Boolean(await platformAdapter.auth.hasTrustedUserGesture?.()),
5211
5215
  });
5216
+ platformAdapter.auth.emitAuthEvent?.('user_info_authorization_change', {
5217
+ identity: 'denied',
5218
+ profile: 'denied',
5219
+ });
5212
5220
  }
5213
5221
 
5214
5222
  const DEFAULT_LIMIT = 20;
@@ -5858,7 +5866,7 @@ class MiniProgramMockRuntime {
5858
5866
  async setNavigationBarStyle(payload) {
5859
5867
  await setMiniProgramRuntimeNavigationBarStyle(payload, this.adapter);
5860
5868
  }
5861
- getStorage(payload) {
5869
+ async getStorage(payload) {
5862
5870
  return getMiniProgramRuntimeStorage(payload, this.options.storage || {}, this.adapter);
5863
5871
  }
5864
5872
  async setStorage(payload) {
@@ -6814,6 +6822,7 @@ const DEV_PERMISSIONS_PATH = '/__hb_sdk__/dev-permissions';
6814
6822
  const RUNTIME_GATE_PROBE_METHOD = 'runtime.gate.probe';
6815
6823
  /** 长 heybox:// 协议需要更大展示面,便于测试端扫码。 */
6816
6824
  const MOBILE_QR_IMAGE_SIZE = 320;
6825
+ const NATIVE_LAUNCH_CONFIG_REFRESH_MS = 1000;
6817
6826
  const params = new URL(location.href).searchParams;
6818
6827
  const miniUrl = params.get('mini_url');
6819
6828
  let lanAddresses = [];
@@ -6863,6 +6872,8 @@ if (!miniUrl) {
6863
6872
  }
6864
6873
  const miniProgramUrl = miniUrl;
6865
6874
  const bootstrap = await loadMockHostBootstrap();
6875
+ let nativeLaunchConfigSignature = readNativeLaunchConfigSignature(bootstrap);
6876
+ let nativeLaunchConfigRefreshInFlight = false;
6866
6877
  let devContext = bootstrap.devContext;
6867
6878
  let remotePermissionState = createMiniProgramMockPermissionState(devContext);
6868
6879
  let permissionState = clonePermissionState(remotePermissionState);
@@ -6936,6 +6947,11 @@ elements.resetPermissionsButton.addEventListener('click', () => {
6936
6947
  void resetPermissionOverride();
6937
6948
  });
6938
6949
  const mobileAppQrReady = setupMobileAppQr();
6950
+ if (bootstrap.devContext.source === 'remote') {
6951
+ void mobileAppQrReady.then(() => {
6952
+ window.setInterval(() => void refreshNativeLaunchConfig(), NATIVE_LAUNCH_CONFIG_REFRESH_MS);
6953
+ });
6954
+ }
6939
6955
  function createRuntime() {
6940
6956
  return new MiniProgramMockRuntime(platformAdapter, {
6941
6957
  onHeyboxAppLoginChange: payload => postEvent('heybox_app_login_change', payload),
@@ -7330,6 +7346,34 @@ async function setupMobileAppQr() {
7330
7346
  setupMobileLanSelect();
7331
7347
  await updateMobileQrCode();
7332
7348
  }
7349
+ async function refreshNativeLaunchConfig() {
7350
+ if (nativeLaunchConfigRefreshInFlight)
7351
+ return;
7352
+ nativeLaunchConfigRefreshInFlight = true;
7353
+ try {
7354
+ const latest = await loadMockHostBootstrap();
7355
+ const signature = readNativeLaunchConfigSignature(latest);
7356
+ if (signature === nativeLaunchConfigSignature)
7357
+ return;
7358
+ nativeLaunchConfigSignature = signature;
7359
+ bootstrap.defaultLanAddressId = latest.defaultLanAddressId;
7360
+ bootstrap.lanAddresses = latest.lanAddresses;
7361
+ bootstrap.macAppProtocol = latest.macAppProtocol;
7362
+ bootstrap.nativeAppLaunchUnavailableReason = latest.nativeAppLaunchUnavailableReason;
7363
+ await setupMobileAppQr();
7364
+ }
7365
+ finally {
7366
+ nativeLaunchConfigRefreshInFlight = false;
7367
+ }
7368
+ }
7369
+ function readNativeLaunchConfigSignature(value) {
7370
+ return JSON.stringify({
7371
+ defaultLanAddressId: value.defaultLanAddressId,
7372
+ lanAddresses: value.lanAddresses,
7373
+ macAppProtocol: value.macAppProtocol,
7374
+ nativeAppLaunchUnavailableReason: value.nativeAppLaunchUnavailableReason,
7375
+ });
7376
+ }
7333
7377
  async function openMacApp() {
7334
7378
  await mobileAppQrReady.catch(() => undefined);
7335
7379
  if (nativeAppLaunchUnavailableReason) {
@@ -7339,7 +7383,6 @@ async function openMacApp() {
7339
7383
  if (!protocol) {
7340
7384
  return;
7341
7385
  }
7342
- console.log('[hb-sdk] Mac App launch protocol:', protocol);
7343
7386
  showMacAppLaunchHint();
7344
7387
  window.location.href = protocol;
7345
7388
  }
package/dist/index.cjs.js CHANGED
@@ -603,7 +603,7 @@ function createMessageId() {
603
603
  /** 构建时替换为当前发布包的实际版本。 */
604
604
  const HB_SDK_VERSION = typeof undefined === 'string'
605
605
  ? undefined
606
- : '0.7.0-alpha.1';
606
+ : '0.7.0-alpha.3';
607
607
 
608
608
  /**
609
609
  * 判断未知数据是否符合小程序 bridge 消息信封。
package/dist/index.esm.js CHANGED
@@ -599,7 +599,7 @@ function createMessageId() {
599
599
  /** 构建时替换为当前发布包的实际版本。 */
600
600
  const HB_SDK_VERSION = typeof undefined === 'string'
601
601
  ? undefined
602
- : '0.7.0-alpha.1';
602
+ : '0.7.0-alpha.3';
603
603
 
604
604
  /**
605
605
  * 判断未知数据是否符合小程序 bridge 消息信封。
@@ -2819,6 +2819,7 @@ const DEVELOPER_ENTITY_SWITCH_API_PATH = '/mall/developer/entity/switch';
2819
2819
  const LIST_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/list';
2820
2820
  const CREATE_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/create';
2821
2821
  const DETAIL_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/detail';
2822
+ const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = '/mall/developer/user_miniprogram/local_dev_launch_token';
2822
2823
  const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist';
2823
2824
  const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist/update';
2824
2825
  const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = '/mall/developer/user_miniprogram/leaderboard/create';
@@ -3133,6 +3134,7 @@ function compareBytes(left, right) {
3133
3134
  exports.ACTIVITY_UPLOAD_KEY_MAX_LENGTH = ACTIVITY_UPLOAD_KEY_MAX_LENGTH;
3134
3135
  exports.CREATE_USER_MINIPROGRAM_API_PATH = CREATE_USER_MINIPROGRAM_API_PATH;
3135
3136
  exports.CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
3137
+ exports.CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH;
3136
3138
  exports.DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
3137
3139
  exports.DETAIL_USER_MINIPROGRAM_API_PATH = DETAIL_USER_MINIPROGRAM_API_PATH;
3138
3140
  exports.DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH = DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH;
@@ -2817,6 +2817,7 @@ const DEVELOPER_ENTITY_SWITCH_API_PATH = '/mall/developer/entity/switch';
2817
2817
  const LIST_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/list';
2818
2818
  const CREATE_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/create';
2819
2819
  const DETAIL_USER_MINIPROGRAM_API_PATH = '/mall/developer/user_miniprogram/detail';
2820
+ const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = '/mall/developer/user_miniprogram/local_dev_launch_token';
2820
2821
  const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist';
2821
2822
  const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = '/mall/developer/user_miniprogram/preview_allowlist/update';
2822
2823
  const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = '/mall/developer/user_miniprogram/leaderboard/create';
@@ -3128,4 +3129,4 @@ function compareBytes(left, right) {
3128
3129
  return left.length - right.length;
3129
3130
  }
3130
3131
 
3131
- export { ACTIVITY_UPLOAD_KEY_MAX_LENGTH, CREATE_USER_MINIPROGRAM_API_PATH, CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DETAIL_USER_MINIPROGRAM_API_PATH, DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DEVELOPER_ENTITY_LIST_API_PATH, DEVELOPER_ENTITY_SWITCH_API_PATH, LIST_USER_MINIPROGRAM_API_PATH, LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH, LIST_USER_MINIPROGRAM_VERSION_API_PATH, MINIAPP_UPLOAD_BATCH_SIZE, MINIAPP_UPLOAD_SCOPE, MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES, PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH, RELEASE_USER_MINIPROGRAM_VERSION_API_PATH, REOPEN_USER_MINIPROGRAM_API_PATH, SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH, TAKE_DOWN_USER_MINIPROGRAM_API_PATH, UPDATE_SQUARE_DISPLAY_API_PATH, UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_ACCESS_STATUS_API_PATH, USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH, WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH, createMiniappArtifactFileHeader, createMiniappArtifactSignatureHeader, getMiniProgramUploadAlias, getMiniappUploadKey, isValidMiniappManifestVersion as isValidVersion, normalizeRelativePath, prepareMiniappArtifactFiles, relativePathContainsNodeModulesSegment, resolveMiniappUploadSessionFiles, shouldUploadDistFile, validateMiniappUploadPathLengths, validateUploadPaths, validateUploadTotalSize };
3132
+ export { ACTIVITY_UPLOAD_KEY_MAX_LENGTH, CREATE_USER_MINIPROGRAM_API_PATH, CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH, DELETE_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DETAIL_USER_MINIPROGRAM_API_PATH, DETAIL_USER_MINIPROGRAM_LEADERBOARD_API_PATH, DEVELOPER_ENTITY_LIST_API_PATH, DEVELOPER_ENTITY_SWITCH_API_PATH, LIST_USER_MINIPROGRAM_API_PATH, LIST_USER_MINIPROGRAM_LEADERBOARD_API_PATH, LIST_USER_MINIPROGRAM_VERSION_API_PATH, MINIAPP_UPLOAD_BATCH_SIZE, MINIAPP_UPLOAD_SCOPE, MINIAPP_UPLOAD_TOTAL_SIZE_LIMIT_BYTES, PRECHECK_USER_MINIPROGRAM_VERSION_API_PATH, RELEASE_USER_MINIPROGRAM_VERSION_API_PATH, REOPEN_USER_MINIPROGRAM_API_PATH, SUBMIT_USER_MINIPROGRAM_AUDIT_API_PATH, TAKE_DOWN_USER_MINIPROGRAM_API_PATH, UPDATE_SQUARE_DISPLAY_API_PATH, UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_ACCESS_STATUS_API_PATH, USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH, USER_MINIPROGRAM_VERSION_PREVIEW_INFO_API_PATH, WITHDRAW_USER_MINIPROGRAM_VERSION_API_PATH, createMiniappArtifactFileHeader, createMiniappArtifactSignatureHeader, getMiniProgramUploadAlias, getMiniappUploadKey, isValidMiniappManifestVersion as isValidVersion, normalizeRelativePath, prepareMiniappArtifactFiles, relativePathContainsNodeModulesSegment, resolveMiniappUploadSessionFiles, shouldUploadDistFile, validateMiniappUploadPathLengths, validateUploadPaths, validateUploadTotalSize };
package/dist/vite.cjs.js CHANGED
@@ -8,7 +8,7 @@ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentS
8
8
  /** 构建时替换为当前发布包的实际版本。 */
9
9
  const HB_SDK_VERSION = typeof undefined === 'string'
10
10
  ? undefined
11
- : '0.7.0-alpha.1';
11
+ : '0.7.0-alpha.3';
12
12
 
13
13
  var re = {exports: {}};
14
14
 
package/dist/vite.esm.js CHANGED
@@ -5,7 +5,7 @@ import { AsyncLocalStorage } from 'node:async_hooks';
5
5
  /** 构建时替换为当前发布包的实际版本。 */
6
6
  const HB_SDK_VERSION = typeof undefined === 'string'
7
7
  ? undefined
8
- : '0.7.0-alpha.1';
8
+ : '0.7.0-alpha.3';
9
9
 
10
10
  var re = {exports: {}};
11
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heybox/hb-sdk",
3
- "version": "0.7.0-alpha.1",
3
+ "version": "0.7.0-alpha.3",
4
4
  "sideEffects": [
5
5
  "./src/index.ts",
6
6
  "./src/core/singleton.ts",
@@ -95,7 +95,7 @@
95
95
  "vue": "^2.7.16",
96
96
  "vite": "^8.0.12",
97
97
  "vitest": "^3.2.4",
98
- "@heybox/hb-api": "~1.25.15"
98
+ "@heybox/hb-api": "~1.25.17"
99
99
  },
100
100
  "publishConfig": {
101
101
  "registry": "https://registry.npmjs.org/",
@@ -24,7 +24,7 @@
24
24
  ## Package metadata
25
25
 
26
26
  - Package: `@heybox/hb-sdk`
27
- - Version at generation time: `0.7.0-alpha.1`
27
+ - Version at generation time: `0.7.0-alpha.2`
28
28
  - Public root export: `@heybox/hb-sdk`
29
29
  - Protocol export: `@heybox/hb-sdk/protocol`
30
30
  - Vite plugin export: `@heybox/hb-sdk/vite`
package/skill/skill.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "hb-sdk",
3
- "skillVersion": "0.7.0-alpha.1+skill.74e2a3dc57b4",
3
+ "skillVersion": "0.7.0-alpha.2+skill.c5541658a22b",
4
4
  "sdk": {
5
5
  "package": "@heybox/hb-sdk",
6
- "version": "0.7.0-alpha.1",
7
- "compatibility": "0.7.0-alpha.1"
6
+ "version": "0.7.0-alpha.2",
7
+ "compatibility": "0.7.0-alpha.2"
8
8
  },
9
9
  "source": "https://open.xiaoheihe.cn/agent-skills/hb-sdk",
10
- "integrity": "sha256-74e2a3dc57b4ee0a59c6bb2470663334ada9854999688e890939a3c41770d5a9"
10
+ "integrity": "sha256-c5541658a22b5ef1a47a24dcdd617e59ef2a118858bedf547ac2833637f865b8"
11
11
  }
@@ -8,6 +8,7 @@ export declare const DEVELOPER_ENTITY_SWITCH_API_PATH = "/mall/developer/entity/
8
8
  export declare const LIST_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/list";
9
9
  export declare const CREATE_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/create";
10
10
  export declare const DETAIL_USER_MINIPROGRAM_API_PATH = "/mall/developer/user_miniprogram/detail";
11
+ export declare const CREATE_USER_MINIPROGRAM_LOCAL_DEV_LAUNCH_TOKEN_API_PATH = "/mall/developer/user_miniprogram/local_dev_launch_token";
11
12
  export declare const USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist";
12
13
  export declare const UPDATE_USER_MINIPROGRAM_PREVIEW_ALLOWLIST_API_PATH = "/mall/developer/user_miniprogram/preview_allowlist/update";
13
14
  export declare const CREATE_USER_MINIPROGRAM_LEADERBOARD_API_PATH = "/mall/developer/user_miniprogram/leaderboard/create";