@heybox/hb-sdk-protocol 0.8.1-alpha.1 → 0.8.1-alpha.11
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/README.md +13 -1
- package/dist/index.cjs.js +137 -13
- package/dist/index.esm.js +119 -14
- package/package.json +1 -1
- package/src/bridge.ts +32 -5
- package/src/capabilities.ts +107 -2
- package/src/constants.ts +3 -0
- package/src/guards.ts +25 -2
- package/src/payloads.ts +164 -2
- package/src/permission-catalog.ts +24 -0
- package/src/permissions.ts +2 -1
- package/types/bridge.d.ts +14 -5
- package/types/capabilities.d.ts +56 -4
- package/types/constants.d.ts +3 -0
- package/types/guards.d.ts +3 -1
- package/types/payloads.d.ts +147 -2
- package/types/permission-catalog.d.ts +10 -1
package/types/payloads.d.ts
CHANGED
|
@@ -146,6 +146,33 @@ export type ScreenshotPayload = {
|
|
|
146
146
|
post?: MiniProgramSharePostOptions | null;
|
|
147
147
|
} | undefined;
|
|
148
148
|
export type ScreenshotResult = unknown;
|
|
149
|
+
/** 当前小程序实例的运行模式。 */
|
|
150
|
+
export type MiniProgramRuntimeMode = 'production' | 'preview' | 'development' | 'unknown';
|
|
151
|
+
/** Host 明确提供的操作系统名称。 */
|
|
152
|
+
export type MiniProgramOperatingSystemName = 'android' | 'ios' | 'ohos' | 'windows' | 'macos' | 'linux' | 'unknown';
|
|
153
|
+
/**
|
|
154
|
+
* Runtime 在握手期间下发的环境快照。
|
|
155
|
+
*
|
|
156
|
+
* @remarks
|
|
157
|
+
* 所有字段只用于界面适配、兼容降级和诊断,不能作为鉴权、权限控制或风控依据。
|
|
158
|
+
* 版本字段均为不透明字符串,除缺失判断外不承诺格式或大小比较语义。
|
|
159
|
+
*/
|
|
160
|
+
export interface MiniProgramRuntimeEnvironmentInfo {
|
|
161
|
+
readonly runtime: {
|
|
162
|
+
readonly mode: MiniProgramRuntimeMode;
|
|
163
|
+
};
|
|
164
|
+
readonly host: {
|
|
165
|
+
readonly appVersion: string | null;
|
|
166
|
+
};
|
|
167
|
+
readonly miniProgram: {
|
|
168
|
+
readonly id: string | null;
|
|
169
|
+
readonly version: string | null;
|
|
170
|
+
};
|
|
171
|
+
readonly operatingSystem: {
|
|
172
|
+
readonly name: MiniProgramOperatingSystemName;
|
|
173
|
+
readonly version: string | null;
|
|
174
|
+
};
|
|
175
|
+
}
|
|
149
176
|
export interface GetStoragePayload {
|
|
150
177
|
key: string;
|
|
151
178
|
}
|
|
@@ -191,7 +218,6 @@ export interface NetworkRequestPayload {
|
|
|
191
218
|
data?: unknown;
|
|
192
219
|
headers?: MiniProgramNetworkHeaders;
|
|
193
220
|
timeout?: number;
|
|
194
|
-
withCredentials?: boolean;
|
|
195
221
|
}
|
|
196
222
|
export interface NetworkResponsePayload<T = unknown> {
|
|
197
223
|
data: T;
|
|
@@ -330,7 +356,6 @@ interface NetworkDownloadBasePayload {
|
|
|
330
356
|
params?: MiniProgramNetworkParams;
|
|
331
357
|
headers?: MiniProgramNetworkHeaders;
|
|
332
358
|
timeout?: number;
|
|
333
|
-
withCredentials?: boolean;
|
|
334
359
|
maxBytes?: number;
|
|
335
360
|
}
|
|
336
361
|
export type NetworkDownloadPayload = NetworkDownloadBasePayload & ({
|
|
@@ -436,4 +461,124 @@ export interface GetLeaderboardInfoResult {
|
|
|
436
461
|
order: LeaderboardOrder;
|
|
437
462
|
rankLimit: number;
|
|
438
463
|
}
|
|
464
|
+
/** 受管桌面程序可选能力。 */
|
|
465
|
+
export type CompanionCapability = 'stdio' | 'attachments' | 'notifications';
|
|
466
|
+
export type CompanionTarget = 'windows-x64' | 'macos-arm64';
|
|
467
|
+
export type CompanionSignatureStatus = 'unsigned' | 'valid' | 'invalid' | 'unknown';
|
|
468
|
+
/** Companion alias 的跨构建、Runtime 与 Host 规范。 */
|
|
469
|
+
export declare const COMPANION_ALIAS_PATTERN: RegExp;
|
|
470
|
+
/** Companion Host 可跨 bridge 保留的稳定领域错误码。 */
|
|
471
|
+
export declare const COMPANION_ERROR_CODES: readonly ["COMPANION_UNSUPPORTED", "COMPANION_NOT_DECLARED", "COMPANION_TARGET_UNSUPPORTED", "COMPANION_NOT_PREPARED", "COMPANION_PREPARATION_CANCELLED", "COMPANION_DOWNLOAD_FAILED", "COMPANION_DESCRIPTOR_UNAVAILABLE", "COMPANION_ARCHIVE_INVALID", "COMPANION_INTEGRITY_FAILED", "COMPANION_ENTRYPOINT_INVALID", "COMPANION_USER_CANCELLED", "COMPANION_ELEVATION_DENIED", "COMPANION_OS_BLOCKED", "COMPANION_LAUNCH_FAILED", "COMPANION_SESSION_VERSION_MISMATCH", "COMPANION_SESSION_OWNERSHIP_LOST", "COMPANION_SESSION_EXITED", "COMPANION_PIPE_CLOSED", "COMPANION_OUTPUT_LIMIT", "COMPANION_PROCESS_CRASHED", "COMPANION_ATTACHMENT_NOT_FOUND", "COMPANION_NOTIFICATION_UNAVAILABLE", "COMPANION_TERMINATE_FAILED"];
|
|
472
|
+
export type CompanionErrorCode = (typeof COMPANION_ERROR_CODES)[number];
|
|
473
|
+
export interface CompanionInfo {
|
|
474
|
+
alias: string;
|
|
475
|
+
displayName: string;
|
|
476
|
+
target: CompanionTarget;
|
|
477
|
+
capabilities: readonly CompanionCapability[];
|
|
478
|
+
archiveBytes: number;
|
|
479
|
+
signatureStatus: CompanionSignatureStatus;
|
|
480
|
+
/** Host 确认的产物来源;旧 Host 缺省时来源未知。 */
|
|
481
|
+
source?: 'local-dev' | 'released';
|
|
482
|
+
}
|
|
483
|
+
export interface CompanionErrorSummary {
|
|
484
|
+
code: CompanionErrorCode;
|
|
485
|
+
message: string;
|
|
486
|
+
retryable: boolean;
|
|
487
|
+
}
|
|
488
|
+
export type CompanionPrepareProgress = {
|
|
489
|
+
phase: 'downloading';
|
|
490
|
+
loaded: number;
|
|
491
|
+
total?: number;
|
|
492
|
+
} | {
|
|
493
|
+
phase: 'verifying';
|
|
494
|
+
processed: number;
|
|
495
|
+
total: number;
|
|
496
|
+
} | {
|
|
497
|
+
phase: 'extracting';
|
|
498
|
+
processed: number;
|
|
499
|
+
total: number;
|
|
500
|
+
};
|
|
501
|
+
export type CompanionPreparationStatus = {
|
|
502
|
+
state: 'not-prepared';
|
|
503
|
+
} | {
|
|
504
|
+
state: 'preparing';
|
|
505
|
+
progress: CompanionPrepareProgress;
|
|
506
|
+
} | {
|
|
507
|
+
state: 'ready';
|
|
508
|
+
preparedAt: number;
|
|
509
|
+
} | {
|
|
510
|
+
state: 'failed';
|
|
511
|
+
error: CompanionErrorSummary;
|
|
512
|
+
};
|
|
513
|
+
export type CompanionExitReason = 'exited' | 'terminated' | 'crashed' | 'host-shutdown' | 'permission-revoked' | 'output-limit';
|
|
514
|
+
export type CompanionExit = {
|
|
515
|
+
reason: 'exited';
|
|
516
|
+
exitCode: number;
|
|
517
|
+
} | {
|
|
518
|
+
reason: Exclude<CompanionExitReason, 'exited'>;
|
|
519
|
+
exitCode?: number;
|
|
520
|
+
};
|
|
521
|
+
/** 活动 Session 的 wire 快照;不包含路径、PID 或原生句柄。 */
|
|
522
|
+
export interface CompanionSessionSnapshot {
|
|
523
|
+
id: string;
|
|
524
|
+
alias: string;
|
|
525
|
+
target: CompanionTarget;
|
|
526
|
+
capabilities: readonly CompanionCapability[];
|
|
527
|
+
state: 'running';
|
|
528
|
+
controllerGeneration: number;
|
|
529
|
+
}
|
|
530
|
+
export interface CompanionAliasPayload {
|
|
531
|
+
alias: string;
|
|
532
|
+
}
|
|
533
|
+
export type CompanionGetInfoPayload = CompanionAliasPayload;
|
|
534
|
+
export type CompanionGetInfoResult = CompanionInfo;
|
|
535
|
+
export type CompanionGetPreparationStatusPayload = CompanionAliasPayload;
|
|
536
|
+
export type CompanionGetPreparationStatusResult = CompanionPreparationStatus;
|
|
537
|
+
export type CompanionPreparePayload = CompanionAliasPayload;
|
|
538
|
+
export type CompanionPrepareResult = CompanionInfo;
|
|
539
|
+
export type CompanionCancelPreparationPayload = CompanionAliasPayload;
|
|
540
|
+
export type CompanionCancelPreparationResult = void;
|
|
541
|
+
export type CompanionGetActiveSessionPayload = CompanionAliasPayload;
|
|
542
|
+
export type CompanionGetActiveSessionResult = CompanionSessionSnapshot | undefined;
|
|
543
|
+
export type CompanionLaunchPayload = CompanionAliasPayload;
|
|
544
|
+
export type CompanionLaunchResult = CompanionSessionSnapshot;
|
|
545
|
+
export interface CompanionSessionControllerPayload {
|
|
546
|
+
sessionId: string;
|
|
547
|
+
controllerGeneration: number;
|
|
548
|
+
}
|
|
549
|
+
export interface CompanionSessionWritePayload extends CompanionSessionControllerPayload {
|
|
550
|
+
data: Uint8Array;
|
|
551
|
+
}
|
|
552
|
+
export type CompanionSessionWriteResult = void;
|
|
553
|
+
export type CompanionSessionCloseStdinPayload = CompanionSessionControllerPayload;
|
|
554
|
+
export type CompanionSessionCloseStdinResult = void;
|
|
555
|
+
export type CompanionSessionTerminatePayload = CompanionSessionControllerPayload;
|
|
556
|
+
export type CompanionSessionTerminateResult = void;
|
|
557
|
+
export interface CompanionSessionAckOutputPayload extends CompanionSessionControllerPayload {
|
|
558
|
+
stream: 'stdout' | 'stderr';
|
|
559
|
+
sequence: number;
|
|
560
|
+
}
|
|
561
|
+
export type CompanionSessionAckOutputResult = void;
|
|
562
|
+
export interface CompanionOpenAttachmentPayload extends CompanionSessionControllerPayload {
|
|
563
|
+
id: string;
|
|
564
|
+
}
|
|
565
|
+
export type CompanionOpenAttachmentResult = MiniProgramFileDescriptor;
|
|
566
|
+
export type CompanionNotificationCategory = 'completed' | 'failed' | 'stopped' | 'attention';
|
|
567
|
+
export interface CompanionShowNotificationPayload extends CompanionSessionControllerPayload {
|
|
568
|
+
category: CompanionNotificationCategory;
|
|
569
|
+
}
|
|
570
|
+
export type CompanionShowNotificationResult = void;
|
|
571
|
+
export interface CompanionSessionOutputPayload extends CompanionSessionControllerPayload {
|
|
572
|
+
stream: 'stdout' | 'stderr';
|
|
573
|
+
sequence: number;
|
|
574
|
+
data: Uint8Array;
|
|
575
|
+
}
|
|
576
|
+
export interface CompanionSessionExitPayload {
|
|
577
|
+
sessionId: string;
|
|
578
|
+
exit: CompanionExit;
|
|
579
|
+
}
|
|
580
|
+
export interface CompanionSessionOwnershipLostPayload {
|
|
581
|
+
sessionId: string;
|
|
582
|
+
controllerGeneration: number;
|
|
583
|
+
}
|
|
439
584
|
export {};
|
|
@@ -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"];
|
|
2
|
+
export declare const MINI_PROGRAM_PERMISSION_KEYS: readonly ["userInfo", "steamLibrary", "share", "storage", "filesystem", "clipboard", "leaderboard", "network", "companion"];
|
|
3
3
|
export type MiniProgramPermissionKey = (typeof MINI_PROGRAM_PERMISSION_KEYS)[number];
|
|
4
4
|
export type MiniProgramPermissionRequirement = {
|
|
5
5
|
readonly kind: 'none';
|
|
@@ -103,6 +103,15 @@ export declare const MINI_PROGRAM_PERMISSION_CATALOG: readonly [{
|
|
|
103
103
|
};
|
|
104
104
|
readonly methods: readonly ["network.request", "network.download"];
|
|
105
105
|
readonly conditions: readonly ["声明后仍需平台批准,并继续执行网络安全策略。"];
|
|
106
|
+
}, {
|
|
107
|
+
readonly key: "companion";
|
|
108
|
+
readonly name: "桌面辅助应用";
|
|
109
|
+
readonly description: "下载、准备并运行随当前小程序版本发布的受管桌面程序。";
|
|
110
|
+
readonly access: "platform-approval";
|
|
111
|
+
readonly risk: "high";
|
|
112
|
+
readonly config: {};
|
|
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
|
+
readonly conditions: readonly ["声明后仍需平台批准,并继续执行可信用户手势、Host 能力和当前版本 Manifest 校验。"];
|
|
106
115
|
}];
|
|
107
116
|
export declare const MINI_PROGRAM_NO_DECLARATION_METHODS: readonly ["user.revokeAuthorization", "ui.showToast", "ui.showLoading", "ui.hideLoading", "viewport.getWindowInfo", "viewport.setNavigationBarStyle", "device.vibrate", "navigation.close", "navigation.reload", "navigation.openAppPage"];
|
|
108
117
|
export declare function isMiniProgramPermissionKey(key: string): key is MiniProgramPermissionKey;
|