@heybox/hb-sdk-protocol 0.9.1-alpha.3 → 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.
package/dist/index.cjs.js CHANGED
@@ -68,6 +68,7 @@ const UI_SHOW_LOADING_METHOD = 'ui.showLoading';
68
68
  const UI_HIDE_LOADING_METHOD = 'ui.hideLoading';
69
69
  const DEVICE_VIBRATE_METHOD = 'device.vibrate';
70
70
  const DEVICE_SET_CLIPBOARD_METHOD = 'device.setClipboard';
71
+ const DEVICE_EXECUTE_PROTOCOL_METHOD = 'device.executeProtocol';
71
72
  const NAVIGATION_CLOSE_METHOD = 'navigation.close';
72
73
  const NAVIGATION_RELOAD_METHOD = 'navigation.reload';
73
74
  const NAVIGATION_OPEN_APP_PAGE_METHOD = 'navigation.openAppPage';
@@ -310,6 +311,13 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
310
311
  requirement: { kind: 'all', permissions: ['clipboard'] },
311
312
  risk: 'medium',
312
313
  },
314
+ {
315
+ method: DEVICE_EXECUTE_PROTOCOL_METHOD,
316
+ module: 'device',
317
+ capability: DEVICE_EXECUTE_PROTOCOL_METHOD,
318
+ requirement: { kind: 'all', permissions: ['appProtocol'] },
319
+ risk: 'high',
320
+ },
313
321
  { method: NAVIGATION_CLOSE_METHOD, module: 'navigation', capability: NAVIGATION_CLOSE_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
314
322
  { method: NAVIGATION_RELOAD_METHOD, module: 'navigation', capability: NAVIGATION_RELOAD_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
315
323
  {
@@ -1177,6 +1185,7 @@ const MINI_PROGRAM_PERMISSION_KEYS = [
1177
1185
  'leaderboard',
1178
1186
  'network',
1179
1187
  'companion',
1188
+ 'appProtocol',
1180
1189
  ];
1181
1190
  const MINI_PROGRAM_PERMISSION_CATALOG = [
1182
1191
  {
@@ -1312,6 +1321,16 @@ const MINI_PROGRAM_PERMISSION_CATALOG = [
1312
1321
  ],
1313
1322
  conditions: ['声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。'],
1314
1323
  },
1324
+ {
1325
+ key: 'appProtocol',
1326
+ name: '应用协议执行',
1327
+ description: '执行任意小黑盒客户端协议。',
1328
+ access: 'platform-approval',
1329
+ risk: 'high',
1330
+ config: {},
1331
+ methods: ['device.executeProtocol'],
1332
+ conditions: ['最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。'],
1333
+ },
1315
1334
  ];
1316
1335
  const MINI_PROGRAM_NO_DECLARATION_METHODS = [
1317
1336
  'user.revokeAuthorization',
@@ -1512,7 +1531,7 @@ function isRecord$2(value) {
1512
1531
  }
1513
1532
 
1514
1533
  /** 仅供开发工具和 Host 使用;新增权限必须单独评估,不能从平台审批目录自动推导。 */
1515
- const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion'];
1534
+ const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion', 'appProtocol'];
1516
1535
  /**
1517
1536
  * 严格解析本地 grant。任何未知字段、重复权限或非法配置都拒绝整份输入。
1518
1537
  * 只校验数据合同;票据、身份、摘要、过期时间和 CLI lease 必须由 Host 另行验证。
@@ -1544,6 +1563,11 @@ function parseMiniProgramLocalDevGrant(value) {
1544
1563
  return { valid: false };
1545
1564
  entries.push({ key: 'companion', status: 'enabled', config: {} });
1546
1565
  }
1566
+ else if (entry.key === 'appProtocol') {
1567
+ if (!hasExactFields(entry.config, []))
1568
+ return { valid: false };
1569
+ entries.push({ key: 'appProtocol', status: 'enabled', config: {} });
1570
+ }
1547
1571
  else {
1548
1572
  return { valid: false };
1549
1573
  }
@@ -1559,7 +1583,7 @@ function createMiniProgramLocalDevGrant(options) {
1559
1583
  if (!Number.isSafeInteger(options.revision) || options.revision < 0)
1560
1584
  throw new Error('本地调试权限 revision 必须是非负安全整数');
1561
1585
  const approvals = parseMiniProgramRuntimePermissions(options.runtimePermissions);
1562
- const eligible = new Set(options.eligiblePermissionKeys ?? ['network']);
1586
+ const eligible = new Set(options.eligiblePermissionKeys ?? ['network', 'appProtocol']);
1563
1587
  const entries = [];
1564
1588
  for (const key of LOCAL_DEV_GRANT_PERMISSION_KEYS) {
1565
1589
  if (!eligible.has(key) || options.declaredPermissions[key]?.enabled !== true)
@@ -1790,6 +1814,7 @@ exports.COMPANION_SESSION_OWNERSHIP_LOST_EVENT = COMPANION_SESSION_OWNERSHIP_LOS
1790
1814
  exports.COMPANION_SESSION_TERMINATE_METHOD = COMPANION_SESSION_TERMINATE_METHOD;
1791
1815
  exports.COMPANION_SESSION_WRITE_METHOD = COMPANION_SESSION_WRITE_METHOD;
1792
1816
  exports.COMPANION_SHOW_NOTIFICATION_METHOD = COMPANION_SHOW_NOTIFICATION_METHOD;
1817
+ exports.DEVICE_EXECUTE_PROTOCOL_METHOD = DEVICE_EXECUTE_PROTOCOL_METHOD;
1793
1818
  exports.DEVICE_SET_CLIPBOARD_METHOD = DEVICE_SET_CLIPBOARD_METHOD;
1794
1819
  exports.DEVICE_VIBRATE_METHOD = DEVICE_VIBRATE_METHOD;
1795
1820
  exports.DIRECTORY_CREATE_METHOD = DIRECTORY_CREATE_METHOD;
package/dist/index.esm.js CHANGED
@@ -66,6 +66,7 @@ const UI_SHOW_LOADING_METHOD = 'ui.showLoading';
66
66
  const UI_HIDE_LOADING_METHOD = 'ui.hideLoading';
67
67
  const DEVICE_VIBRATE_METHOD = 'device.vibrate';
68
68
  const DEVICE_SET_CLIPBOARD_METHOD = 'device.setClipboard';
69
+ const DEVICE_EXECUTE_PROTOCOL_METHOD = 'device.executeProtocol';
69
70
  const NAVIGATION_CLOSE_METHOD = 'navigation.close';
70
71
  const NAVIGATION_RELOAD_METHOD = 'navigation.reload';
71
72
  const NAVIGATION_OPEN_APP_PAGE_METHOD = 'navigation.openAppPage';
@@ -308,6 +309,13 @@ const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
308
309
  requirement: { kind: 'all', permissions: ['clipboard'] },
309
310
  risk: 'medium',
310
311
  },
312
+ {
313
+ method: DEVICE_EXECUTE_PROTOCOL_METHOD,
314
+ module: 'device',
315
+ capability: DEVICE_EXECUTE_PROTOCOL_METHOD,
316
+ requirement: { kind: 'all', permissions: ['appProtocol'] },
317
+ risk: 'high',
318
+ },
311
319
  { method: NAVIGATION_CLOSE_METHOD, module: 'navigation', capability: NAVIGATION_CLOSE_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
312
320
  { method: NAVIGATION_RELOAD_METHOD, module: 'navigation', capability: NAVIGATION_RELOAD_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
313
321
  {
@@ -1175,6 +1183,7 @@ const MINI_PROGRAM_PERMISSION_KEYS = [
1175
1183
  'leaderboard',
1176
1184
  'network',
1177
1185
  'companion',
1186
+ 'appProtocol',
1178
1187
  ];
1179
1188
  const MINI_PROGRAM_PERMISSION_CATALOG = [
1180
1189
  {
@@ -1310,6 +1319,16 @@ const MINI_PROGRAM_PERMISSION_CATALOG = [
1310
1319
  ],
1311
1320
  conditions: ['声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。'],
1312
1321
  },
1322
+ {
1323
+ key: 'appProtocol',
1324
+ name: '应用协议执行',
1325
+ description: '执行任意小黑盒客户端协议。',
1326
+ access: 'platform-approval',
1327
+ risk: 'high',
1328
+ config: {},
1329
+ methods: ['device.executeProtocol'],
1330
+ conditions: ['最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。'],
1331
+ },
1313
1332
  ];
1314
1333
  const MINI_PROGRAM_NO_DECLARATION_METHODS = [
1315
1334
  'user.revokeAuthorization',
@@ -1510,7 +1529,7 @@ function isRecord$2(value) {
1510
1529
  }
1511
1530
 
1512
1531
  /** 仅供开发工具和 Host 使用;新增权限必须单独评估,不能从平台审批目录自动推导。 */
1513
- const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion'];
1532
+ const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion', 'appProtocol'];
1514
1533
  /**
1515
1534
  * 严格解析本地 grant。任何未知字段、重复权限或非法配置都拒绝整份输入。
1516
1535
  * 只校验数据合同;票据、身份、摘要、过期时间和 CLI lease 必须由 Host 另行验证。
@@ -1542,6 +1561,11 @@ function parseMiniProgramLocalDevGrant(value) {
1542
1561
  return { valid: false };
1543
1562
  entries.push({ key: 'companion', status: 'enabled', config: {} });
1544
1563
  }
1564
+ else if (entry.key === 'appProtocol') {
1565
+ if (!hasExactFields(entry.config, []))
1566
+ return { valid: false };
1567
+ entries.push({ key: 'appProtocol', status: 'enabled', config: {} });
1568
+ }
1545
1569
  else {
1546
1570
  return { valid: false };
1547
1571
  }
@@ -1557,7 +1581,7 @@ function createMiniProgramLocalDevGrant(options) {
1557
1581
  if (!Number.isSafeInteger(options.revision) || options.revision < 0)
1558
1582
  throw new Error('本地调试权限 revision 必须是非负安全整数');
1559
1583
  const approvals = parseMiniProgramRuntimePermissions(options.runtimePermissions);
1560
- const eligible = new Set(options.eligiblePermissionKeys ?? ['network']);
1584
+ const eligible = new Set(options.eligiblePermissionKeys ?? ['network', 'appProtocol']);
1561
1585
  const entries = [];
1562
1586
  for (const key of LOCAL_DEV_GRANT_PERMISSION_KEYS) {
1563
1587
  if (!eligible.has(key) || options.declaredPermissions[key]?.enabled !== true)
@@ -1765,4 +1789,4 @@ const COMPANION_ERROR_CODES = [
1765
1789
  'COMPANION_TERMINATE_FAILED',
1766
1790
  ];
1767
1791
 
1768
- export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, COMPANION_ALIAS_PATTERN, COMPANION_CANCEL_PREPARATION_METHOD, COMPANION_ERROR_CODES, COMPANION_GET_ACTIVE_SESSION_METHOD, COMPANION_GET_INFO_METHOD, COMPANION_GET_PREPARATION_STATUS_METHOD, COMPANION_LAUNCH_METHOD, COMPANION_OPEN_ATTACHMENT_METHOD, COMPANION_PREPARE_METHOD, COMPANION_SESSION_ACK_OUTPUT_METHOD, COMPANION_SESSION_CLOSE_STDIN_METHOD, COMPANION_SESSION_EXIT_EVENT, COMPANION_SESSION_OUTPUT_EVENT, COMPANION_SESSION_OWNERSHIP_LOST_EVENT, COMPANION_SESSION_TERMINATE_METHOD, COMPANION_SESSION_WRITE_METHOD, COMPANION_SHOW_NOTIFICATION_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, LOCAL_DEV_GRANT_PERMISSION_KEYS, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_NATIVE_CHUNK_MAX_BYTES, MINI_PROGRAM_NATIVE_HOST_CONTRACT_REVISION, MINI_PROGRAM_NATIVE_HOST_DESCRIPTION, MINI_PROGRAM_NATIVE_HOST_MESSAGE_EVENT, MINI_PROGRAM_NATIVE_HOST_OBJECT, MINI_PROGRAM_NATIVE_HOST_PROTOCOL_VERSION, MINI_PROGRAM_NATIVE_OPERATIONS, MINI_PROGRAM_NO_DECLARATION_METHODS, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PERMISSION_CATALOG, MINI_PROGRAM_PERMISSION_KEYS, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_DISPLAY_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, composeLocalDevRuntimePermissions, createMiniProgramLocalDevGrant, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramCompanionPrepareProgress, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramNativeBinaryChunk, isMiniProgramNativeHostDescription, isMiniProgramNativeHostMessage, isMiniProgramOperationProgressPayload, isMiniProgramPathRootRef, isMiniProgramPermissionKey, isMiniProgramRelativePath, parseMiniProgramLocalDevGrant, parseMiniProgramRuntimePermissions };
1792
+ export { AUTH_LOGIN_METHOD, CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD, CLOUD_LEADERBOARD_GET_INFO_METHOD, CLOUD_LEADERBOARD_GET_LIST_METHOD, CLOUD_LEADERBOARD_SUBMIT_METHOD, COMPANION_ALIAS_PATTERN, COMPANION_CANCEL_PREPARATION_METHOD, COMPANION_ERROR_CODES, COMPANION_GET_ACTIVE_SESSION_METHOD, COMPANION_GET_INFO_METHOD, COMPANION_GET_PREPARATION_STATUS_METHOD, COMPANION_LAUNCH_METHOD, COMPANION_OPEN_ATTACHMENT_METHOD, COMPANION_PREPARE_METHOD, COMPANION_SESSION_ACK_OUTPUT_METHOD, COMPANION_SESSION_CLOSE_STDIN_METHOD, COMPANION_SESSION_EXIT_EVENT, COMPANION_SESSION_OUTPUT_EVENT, COMPANION_SESSION_OWNERSHIP_LOST_EVENT, COMPANION_SESSION_TERMINATE_METHOD, COMPANION_SESSION_WRITE_METHOD, COMPANION_SHOW_NOTIFICATION_METHOD, DEVICE_EXECUTE_PROTOCOL_METHOD, DEVICE_SET_CLIPBOARD_METHOD, DEVICE_VIBRATE_METHOD, DIRECTORY_CREATE_METHOD, DIRECTORY_EXISTS_METHOD, DIRECTORY_LIST_METHOD, DIRECTORY_REMOVE_METHOD, FILES_PICK_DIRECTORY_METHOD, FILES_PICK_FILES_METHOD, FILES_SAVE_FILE_METHOD, FILE_CREATE_METHOD, FILE_EXISTS_METHOD, FILE_READ_BYTES_METHOD, FILE_READ_TEXT_METHOD, FILE_REMOVE_METHOD, FILE_STAT_METHOD, FILE_WRITE_BYTES_METHOD, FILE_WRITE_TEXT_METHOD, LOCAL_DEV_GRANT_PERMISSION_KEYS, MINI_PROGRAM_BRIDGE_NONCE_PARAM, MINI_PROGRAM_MESSAGE_NAMESPACE, MINI_PROGRAM_MESSAGE_VERSION, MINI_PROGRAM_NATIVE_CHUNK_MAX_BYTES, MINI_PROGRAM_NATIVE_HOST_CONTRACT_REVISION, MINI_PROGRAM_NATIVE_HOST_DESCRIPTION, MINI_PROGRAM_NATIVE_HOST_MESSAGE_EVENT, MINI_PROGRAM_NATIVE_HOST_OBJECT, MINI_PROGRAM_NATIVE_HOST_PROTOCOL_VERSION, MINI_PROGRAM_NATIVE_OPERATIONS, MINI_PROGRAM_NO_DECLARATION_METHODS, MINI_PROGRAM_OPERATION_PROGRESS_METHOD, MINI_PROGRAM_PERMISSION_CATALOG, MINI_PROGRAM_PERMISSION_KEYS, MINI_PROGRAM_PROTOCOL_CAPABILITIES, NAVIGATION_CLOSE_METHOD, NAVIGATION_OPEN_APP_PAGE_METHOD, NAVIGATION_RELOAD_METHOD, NETWORK_DOWNLOAD_METHOD, NETWORK_REQUEST_METHOD, RUNTIME_LOCATION_PROBE_METHOD, SDK_CSP_VIOLATION_METHOD, SDK_HANDSHAKE_METHOD, SDK_LOCATION_REPORT_METHOD, SHARE_COPY_LINK_METHOD, SHARE_SCREENSHOT_METHOD, SHARE_SHOW_SHARE_MENU_METHOD, STORAGE_GET_STORAGE_METHOD, STORAGE_SET_STORAGE_METHOD, UI_HIDE_LOADING_METHOD, UI_SHOW_LOADING_METHOD, UI_SHOW_TOAST_METHOD, USER_GET_INFO_METHOD, USER_GET_STEAM_GAME_LIST_METHOD, USER_INFO_AUTHORIZATION_SCOPES, USER_REVOKE_AUTHORIZATION_METHOD, VIEWPORT_GET_WINDOW_INFO_METHOD, VIEWPORT_SET_DISPLAY_METHOD, VIEWPORT_SET_NAVIGATION_BAR_STYLE_METHOD, composeLocalDevRuntimePermissions, createMiniProgramLocalDevGrant, isManagedMiniProgramRuntimePermissionKey, isMiniProgramBridgeMessage, isMiniProgramByteArray, isMiniProgramCompanionPrepareProgress, isMiniProgramDirectoryDescriptor, isMiniProgramDirectoryRef, isMiniProgramDownloadProgressPayload, isMiniProgramFileDescriptor, isMiniProgramFileRef, isMiniProgramFileStat, isMiniProgramFileSystemEntityDescriptor, isMiniProgramNativeBinaryChunk, isMiniProgramNativeHostDescription, isMiniProgramNativeHostMessage, isMiniProgramOperationProgressPayload, isMiniProgramPathRootRef, isMiniProgramPermissionKey, isMiniProgramRelativePath, parseMiniProgramLocalDevGrant, parseMiniProgramRuntimePermissions };
@@ -1,5 +1,5 @@
1
1
  {
2
- "hash": "6a5978e344f22fd060ff55f77a1248a7c161cd8fbf5be2b8c73eddd308e8fe78",
2
+ "hash": "92694eef8e1c284ec0b03e87ca23cf00dc5824c4bc81fb72bd9a3f883ea2d26d",
3
3
  "permissions": [
4
4
  {
5
5
  "key": "userInfo",
@@ -168,6 +168,20 @@
168
168
  "conditions": [
169
169
  "声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。"
170
170
  ]
171
+ },
172
+ {
173
+ "key": "appProtocol",
174
+ "name": "应用协议执行",
175
+ "description": "执行任意小黑盒客户端协议。",
176
+ "access": "platform-approval",
177
+ "risk": "high",
178
+ "config": {},
179
+ "methods": [
180
+ "device.executeProtocol"
181
+ ],
182
+ "conditions": [
183
+ "最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。"
184
+ ]
171
185
  }
172
186
  ],
173
187
  "noDeclarationMethods": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heybox/hb-sdk-protocol",
3
- "version": "0.9.1-alpha.3",
3
+ "version": "0.9.1-alpha.4",
4
4
  "description": "Heybox mini-program iframe bridge wire contracts.",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -37,6 +37,8 @@ import type {
37
37
  DirectoryRemovePayload,
38
38
  DirectoryRemoveResult,
39
39
  DownloadProgressPayload,
40
+ ExecuteProtocolInput,
41
+ ExecuteProtocolResult,
40
42
  DeleteCurrentUserLeaderboardEntryPayload,
41
43
  DeleteCurrentUserLeaderboardEntryResult,
42
44
  GetCurrentUserLeaderboardEntryPayload,
@@ -143,6 +145,7 @@ export const UI_SHOW_LOADING_METHOD = 'ui.showLoading' as const;
143
145
  export const UI_HIDE_LOADING_METHOD = 'ui.hideLoading' as const;
144
146
  export const DEVICE_VIBRATE_METHOD = 'device.vibrate' as const;
145
147
  export const DEVICE_SET_CLIPBOARD_METHOD = 'device.setClipboard' as const;
148
+ export const DEVICE_EXECUTE_PROTOCOL_METHOD = 'device.executeProtocol' as const;
146
149
  export const NAVIGATION_CLOSE_METHOD = 'navigation.close' as const;
147
150
  export const NAVIGATION_RELOAD_METHOD = 'navigation.reload' as const;
148
151
  export const NAVIGATION_OPEN_APP_PAGE_METHOD = 'navigation.openAppPage' as const;
@@ -189,7 +192,7 @@ export type MiniProgramDirectoryMethod =
189
192
  | typeof DIRECTORY_EXISTS_METHOD
190
193
  | typeof DIRECTORY_LIST_METHOD;
191
194
  export type MiniProgramUiMethod = typeof UI_SHOW_TOAST_METHOD | typeof UI_SHOW_LOADING_METHOD | typeof UI_HIDE_LOADING_METHOD;
192
- export type MiniProgramDeviceMethod = typeof DEVICE_VIBRATE_METHOD | typeof DEVICE_SET_CLIPBOARD_METHOD;
195
+ export type MiniProgramDeviceMethod = typeof DEVICE_VIBRATE_METHOD | typeof DEVICE_SET_CLIPBOARD_METHOD | typeof DEVICE_EXECUTE_PROTOCOL_METHOD;
193
196
  export type MiniProgramNavigationMethod = typeof NAVIGATION_CLOSE_METHOD | typeof NAVIGATION_RELOAD_METHOD | typeof NAVIGATION_OPEN_APP_PAGE_METHOD;
194
197
  export type MiniProgramCloudMethod =
195
198
  | typeof CLOUD_LEADERBOARD_SUBMIT_METHOD
@@ -478,6 +481,13 @@ export const MINI_PROGRAM_PROTOCOL_CAPABILITIES = [
478
481
  requirement: { kind: 'all', permissions: ['clipboard'] },
479
482
  risk: 'medium',
480
483
  },
484
+ {
485
+ method: DEVICE_EXECUTE_PROTOCOL_METHOD,
486
+ module: 'device',
487
+ capability: DEVICE_EXECUTE_PROTOCOL_METHOD,
488
+ requirement: { kind: 'all', permissions: ['appProtocol'] },
489
+ risk: 'high',
490
+ },
481
491
  { method: NAVIGATION_CLOSE_METHOD, module: 'navigation', capability: NAVIGATION_CLOSE_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
482
492
  { method: NAVIGATION_RELOAD_METHOD, module: 'navigation', capability: NAVIGATION_RELOAD_METHOD, requirement: { kind: 'none' }, risk: 'medium' },
483
493
  {
@@ -579,6 +589,7 @@ export interface MiniProgramCapabilityPayloadMap {
579
589
  [UI_HIDE_LOADING_METHOD]: HideLoadingPayload;
580
590
  [DEVICE_VIBRATE_METHOD]: VibratePayload;
581
591
  [DEVICE_SET_CLIPBOARD_METHOD]: SetClipboardPayload;
592
+ [DEVICE_EXECUTE_PROTOCOL_METHOD]: ExecuteProtocolInput;
582
593
  [NAVIGATION_CLOSE_METHOD]: ClosePayload;
583
594
  [NAVIGATION_RELOAD_METHOD]: ReloadPayload;
584
595
  [NAVIGATION_OPEN_APP_PAGE_METHOD]: OpenAppPagePayload;
@@ -636,6 +647,7 @@ export interface MiniProgramCapabilityResultMap {
636
647
  [UI_HIDE_LOADING_METHOD]: HideLoadingResult;
637
648
  [DEVICE_VIBRATE_METHOD]: VibrateResult;
638
649
  [DEVICE_SET_CLIPBOARD_METHOD]: SetClipboardResult;
650
+ [DEVICE_EXECUTE_PROTOCOL_METHOD]: ExecuteProtocolResult;
639
651
  [NAVIGATION_CLOSE_METHOD]: CloseResult;
640
652
  [NAVIGATION_RELOAD_METHOD]: ReloadResult;
641
653
  [NAVIGATION_OPEN_APP_PAGE_METHOD]: OpenAppPageResult;
@@ -2,11 +2,12 @@ import { MINI_PROGRAM_PERMISSION_KEYS, type MiniProgramPermissionKey } from './p
2
2
  import { parseMiniProgramRuntimePermissions, type MiniProgramRuntimePermissionsSnapshot } from './permissions';
3
3
 
4
4
  /** 仅供开发工具和 Host 使用;新增权限必须单独评估,不能从平台审批目录自动推导。 */
5
- export const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion'] as const;
5
+ export const LOCAL_DEV_GRANT_PERMISSION_KEYS = ['network', 'companion', 'appProtocol'] as const;
6
6
  export type MiniProgramLocalDevPermissionKey = (typeof LOCAL_DEV_GRANT_PERMISSION_KEYS)[number];
7
7
  export type MiniProgramLocalDevGrantEntry =
8
8
  | { key: 'network'; status: 'enabled'; config: { useOfficialDomain: false } }
9
- | { key: 'companion'; status: 'enabled'; config: Record<string, never> };
9
+ | { key: 'companion'; status: 'enabled'; config: Record<string, never> }
10
+ | { key: 'appProtocol'; status: 'enabled'; config: Record<string, never> };
10
11
 
11
12
  /** CLI-owned Dev Context 合同,不属于小程序业务 API 或线上批准快照。 */
12
13
  export interface MiniProgramLocalDevGrant {
@@ -51,6 +52,9 @@ export function parseMiniProgramLocalDevGrant(value: unknown): ParsedMiniProgram
51
52
  } else if (entry.key === 'companion') {
52
53
  if (!hasExactFields(entry.config, [])) return { valid: false };
53
54
  entries.push({ key: 'companion', status: 'enabled', config: {} });
55
+ } else if (entry.key === 'appProtocol') {
56
+ if (!hasExactFields(entry.config, [])) return { valid: false };
57
+ entries.push({ key: 'appProtocol', status: 'enabled', config: {} });
54
58
  } else {
55
59
  return { valid: false };
56
60
  }
@@ -71,7 +75,7 @@ export function createMiniProgramLocalDevGrant(options: {
71
75
  }): MiniProgramLocalDevGrant {
72
76
  if (!Number.isSafeInteger(options.revision) || options.revision < 0) throw new Error('本地调试权限 revision 必须是非负安全整数');
73
77
  const approvals = parseMiniProgramRuntimePermissions(options.runtimePermissions);
74
- const eligible = new Set(options.eligiblePermissionKeys ?? ['network']);
78
+ const eligible = new Set(options.eligiblePermissionKeys ?? ['network', 'appProtocol']);
75
79
  const entries: MiniProgramLocalDevGrantEntry[] = [];
76
80
  for (const key of LOCAL_DEV_GRANT_PERMISSION_KEYS) {
77
81
  if (!eligible.has(key) || options.declaredPermissions[key]?.enabled !== true) continue;
package/src/payloads.ts CHANGED
@@ -611,6 +611,33 @@ export interface SetClipboardPayload {
611
611
  }
612
612
  export type SetClipboardResult = void;
613
613
 
614
+ /**
615
+ * `device.executeProtocol` 的 JSON 协议对象形态。
616
+ *
617
+ * @remarks
618
+ * 对象保留调用方构造的协议字段与嵌套结构,SDK 不维护协议类型白名单,也不把它重组为
619
+ * `navigation.openAppPage` 的目标联合。`protocol_type` 必须是非空字符串;其余字段按协议自身
620
+ * 语义原样交给 Host。对象只承诺 JSON 数据:不支持函数、`symbol`、`BigInt`、非有限数字或循环
621
+ * 引用,无法序列化时以 `INVALID_PARAMS` 拒绝且不产生投递。
622
+ */
623
+ export interface ExecuteProtocolObject {
624
+ /** 小黑盒客户端协议类型,如 `openRouterPath`。 */
625
+ protocol_type: string;
626
+ [key: string]: unknown;
627
+ }
628
+
629
+ /**
630
+ * `device.executeProtocol` 的入参:完整协议字符串或 JSON 协议对象。
631
+ *
632
+ * @remarks
633
+ * 字符串使用已有协议工具的 scheme 与编码规则,SDK 不另建解析规则;对象通过既有 bridge
634
+ * 序列化传递。两种形态都不会因为缺少 SDK 侧协议白名单而被拒绝,非法输入形态在执行前
635
+ * 以 `INVALID_PARAMS` 拒绝。
636
+ */
637
+ export type ExecuteProtocolInput = string | ExecuteProtocolObject;
638
+ /** 成功只表示协议已投递,不表示业务动作完成。 */
639
+ export type ExecuteProtocolResult = void;
640
+
614
641
  /**
615
642
  * `navigation.close` 的无参 wire payload。
616
643
  *
@@ -10,6 +10,7 @@ export const MINI_PROGRAM_PERMISSION_KEYS = [
10
10
  'leaderboard',
11
11
  'network',
12
12
  'companion',
13
+ 'appProtocol',
13
14
  ] as const;
14
15
 
15
16
  export type MiniProgramPermissionKey = (typeof MINI_PROGRAM_PERMISSION_KEYS)[number];
@@ -170,6 +171,16 @@ export const MINI_PROGRAM_PERMISSION_CATALOG = [
170
171
  ],
171
172
  conditions: ['声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。'],
172
173
  },
174
+ {
175
+ key: 'appProtocol',
176
+ name: '应用协议执行',
177
+ description: '执行任意小黑盒客户端协议。',
178
+ access: 'platform-approval',
179
+ risk: 'high',
180
+ config: {},
181
+ methods: ['device.executeProtocol'],
182
+ conditions: ['最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。'],
183
+ },
173
184
  ] as const satisfies readonly MiniProgramPermissionDefinition[];
174
185
 
175
186
  export const MINI_PROGRAM_NO_DECLARATION_METHODS = [
@@ -1,4 +1,4 @@
1
- import type { CompanionCancelPreparationPayload, CompanionCancelPreparationResult, CompanionGetActiveSessionPayload, CompanionGetActiveSessionResult, CompanionGetInfoPayload, CompanionGetInfoResult, CompanionGetPreparationStatusPayload, CompanionGetPreparationStatusResult, CompanionLaunchPayload, CompanionLaunchResult, CompanionOpenAttachmentPayload, CompanionOpenAttachmentResult, CompanionPreparePayload, CompanionPrepareProgress, CompanionPrepareResult, CompanionSessionAckOutputPayload, CompanionSessionAckOutputResult, CompanionSessionCloseStdinPayload, CompanionSessionCloseStdinResult, CompanionSessionTerminatePayload, CompanionSessionTerminateResult, CompanionSessionWritePayload, CompanionSessionWriteResult, CompanionShowNotificationPayload, CompanionShowNotificationResult, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DownloadProgressPayload, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetStoragePayload, GetStorageResult, GetSteamGameListPayload, GetSteamGameListResult, GetUserInfoPayload, GetUserInfoResult, GetWindowInfoPayload, GetWindowInfoResult, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LoginPayload, LoginResult, NetworkDownloadPayload, NetworkDownloadResult, NetworkRequestPayload, NetworkResponsePayload, OpenAppPagePayload, OpenAppPageResult, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ReloadPayload, ReloadResult, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SetClipboardPayload, SetClipboardResult, SetDisplayPayload, SetDisplayResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, VibratePayload, VibrateResult } from './payloads';
1
+ import type { CompanionCancelPreparationPayload, CompanionCancelPreparationResult, CompanionGetActiveSessionPayload, CompanionGetActiveSessionResult, CompanionGetInfoPayload, CompanionGetInfoResult, CompanionGetPreparationStatusPayload, CompanionGetPreparationStatusResult, CompanionLaunchPayload, CompanionLaunchResult, CompanionOpenAttachmentPayload, CompanionOpenAttachmentResult, CompanionPreparePayload, CompanionPrepareProgress, CompanionPrepareResult, CompanionSessionAckOutputPayload, CompanionSessionAckOutputResult, CompanionSessionCloseStdinPayload, CompanionSessionCloseStdinResult, CompanionSessionTerminatePayload, CompanionSessionTerminateResult, CompanionSessionWritePayload, CompanionSessionWriteResult, CompanionShowNotificationPayload, CompanionShowNotificationResult, ClosePayload, CloseResult, CopyLinkPayload, CopyLinkResult, DirectoryCreatePayload, DirectoryCreateResult, DirectoryExistsPayload, DirectoryExistsResult, DirectoryListPayload, DirectoryListResult, DirectoryRemovePayload, DirectoryRemoveResult, DownloadProgressPayload, ExecuteProtocolInput, ExecuteProtocolResult, DeleteCurrentUserLeaderboardEntryPayload, DeleteCurrentUserLeaderboardEntryResult, GetCurrentUserLeaderboardEntryPayload, GetCurrentUserLeaderboardEntryResult, GetLeaderboardInfoPayload, GetLeaderboardInfoResult, GetLeaderboardListPayload, GetLeaderboardListResult, GetStoragePayload, GetStorageResult, GetSteamGameListPayload, GetSteamGameListResult, GetUserInfoPayload, GetUserInfoResult, GetWindowInfoPayload, GetWindowInfoResult, HideLoadingPayload, HideLoadingResult, FileCreatePayload, FileCreateResult, FileExistsPayload, FileExistsResult, FileReadBytesPayload, FileReadBytesResult, FileReadTextPayload, FileReadTextResult, FileRemovePayload, FileRemoveResult, FileStatPayload, FileStatResult, FileWriteBytesPayload, FileWriteBytesResult, FileWriteTextPayload, FileWriteTextResult, LoginPayload, LoginResult, NetworkDownloadPayload, NetworkDownloadResult, NetworkRequestPayload, NetworkResponsePayload, OpenAppPagePayload, OpenAppPageResult, PickDirectoryPayload, PickDirectoryResult, PickFilesPayload, PickFilesResult, ReloadPayload, ReloadResult, ScreenshotPayload, ScreenshotResult, SaveFilePayload, SaveFileResult, SetClipboardPayload, SetClipboardResult, SetDisplayPayload, SetDisplayResult, SetNavigationBarStylePayload, SetNavigationBarStyleResult, SetStoragePayload, ShowLoadingPayload, ShowLoadingResult, ShowShareMenuPayload, ShowShareMenuResult, ShowToastPayload, ShowToastResult, SubmitLeaderboardEntryPayload, SubmitLeaderboardEntryResult, VibratePayload, VibrateResult } from './payloads';
2
2
  import type { MiniProgramPermissionRequirement } from './permission-catalog';
3
3
  export declare const AUTH_LOGIN_METHOD: "auth.login";
4
4
  export declare const USER_GET_INFO_METHOD: "user.getInfo";
@@ -34,6 +34,7 @@ export declare const UI_SHOW_LOADING_METHOD: "ui.showLoading";
34
34
  export declare const UI_HIDE_LOADING_METHOD: "ui.hideLoading";
35
35
  export declare const DEVICE_VIBRATE_METHOD: "device.vibrate";
36
36
  export declare const DEVICE_SET_CLIPBOARD_METHOD: "device.setClipboard";
37
+ export declare const DEVICE_EXECUTE_PROTOCOL_METHOD: "device.executeProtocol";
37
38
  export declare const NAVIGATION_CLOSE_METHOD: "navigation.close";
38
39
  export declare const NAVIGATION_RELOAD_METHOD: "navigation.reload";
39
40
  export declare const NAVIGATION_OPEN_APP_PAGE_METHOD: "navigation.openAppPage";
@@ -64,7 +65,7 @@ export type MiniProgramFilesMethod = typeof FILES_PICK_FILES_METHOD | typeof FIL
64
65
  export type MiniProgramFileMethod = typeof FILE_CREATE_METHOD | typeof FILE_REMOVE_METHOD | typeof FILE_EXISTS_METHOD | typeof FILE_READ_TEXT_METHOD | typeof FILE_WRITE_TEXT_METHOD | typeof FILE_READ_BYTES_METHOD | typeof FILE_WRITE_BYTES_METHOD | typeof FILE_STAT_METHOD;
65
66
  export type MiniProgramDirectoryMethod = typeof DIRECTORY_CREATE_METHOD | typeof DIRECTORY_REMOVE_METHOD | typeof DIRECTORY_EXISTS_METHOD | typeof DIRECTORY_LIST_METHOD;
66
67
  export type MiniProgramUiMethod = typeof UI_SHOW_TOAST_METHOD | typeof UI_SHOW_LOADING_METHOD | typeof UI_HIDE_LOADING_METHOD;
67
- export type MiniProgramDeviceMethod = typeof DEVICE_VIBRATE_METHOD | typeof DEVICE_SET_CLIPBOARD_METHOD;
68
+ export type MiniProgramDeviceMethod = typeof DEVICE_VIBRATE_METHOD | typeof DEVICE_SET_CLIPBOARD_METHOD | typeof DEVICE_EXECUTE_PROTOCOL_METHOD;
68
69
  export type MiniProgramNavigationMethod = typeof NAVIGATION_CLOSE_METHOD | typeof NAVIGATION_RELOAD_METHOD | typeof NAVIGATION_OPEN_APP_PAGE_METHOD;
69
70
  export type MiniProgramCloudMethod = typeof CLOUD_LEADERBOARD_SUBMIT_METHOD | typeof CLOUD_LEADERBOARD_GET_LIST_METHOD | typeof CLOUD_LEADERBOARD_GET_CURRENT_USER_ENTRY_METHOD | typeof CLOUD_LEADERBOARD_DELETE_CURRENT_USER_ENTRY_METHOD | typeof CLOUD_LEADERBOARD_GET_INFO_METHOD;
70
71
  export type MiniProgramCompanionMethod = typeof COMPANION_GET_INFO_METHOD | typeof COMPANION_GET_PREPARATION_STATUS_METHOD | typeof COMPANION_PREPARE_METHOD | typeof COMPANION_CANCEL_PREPARATION_METHOD | typeof COMPANION_GET_ACTIVE_SESSION_METHOD | typeof COMPANION_LAUNCH_METHOD | typeof COMPANION_SESSION_WRITE_METHOD | typeof COMPANION_SESSION_CLOSE_STDIN_METHOD | typeof COMPANION_SESSION_TERMINATE_METHOD | typeof COMPANION_SESSION_ACK_OUTPUT_METHOD | typeof COMPANION_OPEN_ATTACHMENT_METHOD | typeof COMPANION_SHOW_NOTIFICATION_METHOD;
@@ -395,6 +396,15 @@ export declare const MINI_PROGRAM_PROTOCOL_CAPABILITIES: readonly [{
395
396
  readonly permissions: readonly ["clipboard"];
396
397
  };
397
398
  readonly risk: "medium";
399
+ }, {
400
+ readonly method: "device.executeProtocol";
401
+ readonly module: "device";
402
+ readonly capability: "device.executeProtocol";
403
+ readonly requirement: {
404
+ readonly kind: "all";
405
+ readonly permissions: readonly ["appProtocol"];
406
+ };
407
+ readonly risk: "high";
398
408
  }, {
399
409
  readonly method: "navigation.close";
400
410
  readonly module: "navigation";
@@ -509,6 +519,7 @@ export interface MiniProgramCapabilityPayloadMap {
509
519
  [UI_HIDE_LOADING_METHOD]: HideLoadingPayload;
510
520
  [DEVICE_VIBRATE_METHOD]: VibratePayload;
511
521
  [DEVICE_SET_CLIPBOARD_METHOD]: SetClipboardPayload;
522
+ [DEVICE_EXECUTE_PROTOCOL_METHOD]: ExecuteProtocolInput;
512
523
  [NAVIGATION_CLOSE_METHOD]: ClosePayload;
513
524
  [NAVIGATION_RELOAD_METHOD]: ReloadPayload;
514
525
  [NAVIGATION_OPEN_APP_PAGE_METHOD]: OpenAppPagePayload;
@@ -565,6 +576,7 @@ export interface MiniProgramCapabilityResultMap {
565
576
  [UI_HIDE_LOADING_METHOD]: HideLoadingResult;
566
577
  [DEVICE_VIBRATE_METHOD]: VibrateResult;
567
578
  [DEVICE_SET_CLIPBOARD_METHOD]: SetClipboardResult;
579
+ [DEVICE_EXECUTE_PROTOCOL_METHOD]: ExecuteProtocolResult;
568
580
  [NAVIGATION_CLOSE_METHOD]: CloseResult;
569
581
  [NAVIGATION_RELOAD_METHOD]: ReloadResult;
570
582
  [NAVIGATION_OPEN_APP_PAGE_METHOD]: OpenAppPageResult;
@@ -1,7 +1,7 @@
1
1
  import { type MiniProgramPermissionKey } from './permission-catalog';
2
2
  import { type MiniProgramRuntimePermissionsSnapshot } from './permissions';
3
3
  /** 仅供开发工具和 Host 使用;新增权限必须单独评估,不能从平台审批目录自动推导。 */
4
- export declare const LOCAL_DEV_GRANT_PERMISSION_KEYS: readonly ["network", "companion"];
4
+ export declare const LOCAL_DEV_GRANT_PERMISSION_KEYS: readonly ["network", "companion", "appProtocol"];
5
5
  export type MiniProgramLocalDevPermissionKey = (typeof LOCAL_DEV_GRANT_PERMISSION_KEYS)[number];
6
6
  export type MiniProgramLocalDevGrantEntry = {
7
7
  key: 'network';
@@ -13,6 +13,10 @@ export type MiniProgramLocalDevGrantEntry = {
13
13
  key: 'companion';
14
14
  status: 'enabled';
15
15
  config: Record<string, never>;
16
+ } | {
17
+ key: 'appProtocol';
18
+ status: 'enabled';
19
+ config: Record<string, never>;
16
20
  };
17
21
  /** CLI-owned Dev Context 合同,不属于小程序业务 API 或线上批准快照。 */
18
22
  export interface MiniProgramLocalDevGrant {
@@ -576,6 +576,31 @@ export interface SetClipboardPayload {
576
576
  text: string;
577
577
  }
578
578
  export type SetClipboardResult = void;
579
+ /**
580
+ * `device.executeProtocol` 的 JSON 协议对象形态。
581
+ *
582
+ * @remarks
583
+ * 对象保留调用方构造的协议字段与嵌套结构,SDK 不维护协议类型白名单,也不把它重组为
584
+ * `navigation.openAppPage` 的目标联合。`protocol_type` 必须是非空字符串;其余字段按协议自身
585
+ * 语义原样交给 Host。对象只承诺 JSON 数据:不支持函数、`symbol`、`BigInt`、非有限数字或循环
586
+ * 引用,无法序列化时以 `INVALID_PARAMS` 拒绝且不产生投递。
587
+ */
588
+ export interface ExecuteProtocolObject {
589
+ /** 小黑盒客户端协议类型,如 `openRouterPath`。 */
590
+ protocol_type: string;
591
+ [key: string]: unknown;
592
+ }
593
+ /**
594
+ * `device.executeProtocol` 的入参:完整协议字符串或 JSON 协议对象。
595
+ *
596
+ * @remarks
597
+ * 字符串使用已有协议工具的 scheme 与编码规则,SDK 不另建解析规则;对象通过既有 bridge
598
+ * 序列化传递。两种形态都不会因为缺少 SDK 侧协议白名单而被拒绝,非法输入形态在执行前
599
+ * 以 `INVALID_PARAMS` 拒绝。
600
+ */
601
+ export type ExecuteProtocolInput = string | ExecuteProtocolObject;
602
+ /** 成功只表示协议已投递,不表示业务动作完成。 */
603
+ export type ExecuteProtocolResult = void;
579
604
  /**
580
605
  * `navigation.close` 的无参 wire payload。
581
606
  *
@@ -1,5 +1,5 @@
1
1
  import type { MiniProgramBridgeMethod, MiniProgramCapabilityRisk } from './capabilities';
2
- export declare const MINI_PROGRAM_PERMISSION_KEYS: readonly ["userInfo", "steamLibrary", "share", "storage", "filesystem", "clipboard", "leaderboard", "network", "companion"];
2
+ export declare const MINI_PROGRAM_PERMISSION_KEYS: readonly ["userInfo", "steamLibrary", "share", "storage", "filesystem", "clipboard", "leaderboard", "network", "companion", "appProtocol"];
3
3
  export type MiniProgramPermissionKey = (typeof MINI_PROGRAM_PERMISSION_KEYS)[number];
4
4
  export type MiniProgramPermissionRequirement = {
5
5
  readonly kind: 'none';
@@ -112,6 +112,15 @@ export declare const MINI_PROGRAM_PERMISSION_CATALOG: readonly [{
112
112
  readonly config: {};
113
113
  readonly methods: readonly ["companion.getInfo", "companion.getPreparationStatus", "companion.prepare", "companion.cancelPreparation", "companion.getActiveSession", "companion.launch", "companion.session.write", "companion.session.closeStdin", "companion.session.terminate", "companion.session.ackOutput", "companion.openAttachment", "companion.showNotification"];
114
114
  readonly conditions: readonly ["声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。"];
115
+ }, {
116
+ readonly key: "appProtocol";
117
+ readonly name: "应用协议执行";
118
+ readonly description: "执行任意小黑盒客户端协议。";
119
+ readonly access: "platform-approval";
120
+ readonly risk: "high";
121
+ readonly config: {};
122
+ readonly methods: readonly ["device.executeProtocol"];
123
+ readonly conditions: readonly ["最高危险权限:批准后该入口可执行任意协议,并绕过其他 SDK 能力权限及专用授权流程。"];
115
124
  }];
116
125
  export declare const MINI_PROGRAM_NO_DECLARATION_METHODS: readonly ["user.revokeAuthorization", "ui.showToast", "ui.showLoading", "ui.hideLoading", "viewport.getWindowInfo", "viewport.setNavigationBarStyle", "viewport.setDisplay", "device.vibrate", "navigation.close", "navigation.reload", "navigation.openAppPage"];
117
126
  export declare function isMiniProgramPermissionKey(key: string): key is MiniProgramPermissionKey;