@heybox/hb-sdk-protocol 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.
- package/dist/index.cjs.js +27 -2
- package/dist/index.esm.js +27 -3
- package/generated/permission-catalog.json +15 -1
- package/package.json +1 -1
- package/src/capabilities.ts +13 -1
- package/src/local-dev-grant.ts +7 -3
- package/src/payloads.ts +27 -0
- package/src/permission-catalog.ts +11 -0
- package/types/capabilities.d.ts +14 -2
- package/types/local-dev-grant.d.ts +5 -1
- package/types/payloads.d.ts +25 -0
- package/types/permission-catalog.d.ts +10 -1
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": "
|
|
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
package/src/capabilities.ts
CHANGED
|
@@ -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;
|
package/src/local-dev-grant.ts
CHANGED
|
@@ -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 = [
|
package/types/capabilities.d.ts
CHANGED
|
@@ -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 {
|
package/types/payloads.d.ts
CHANGED
|
@@ -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;
|