@floegence/redevplugin-ui 3.6.0 → 3.7.0
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/error-codes.gen.d.ts +3 -3
- package/dist/error-codes.gen.js +12 -0
- package/dist/openapi.gen.d.ts +121 -8
- package/dist/platform.d.ts +1 -0
- package/dist/platform.js +3 -0
- package/dist/plugin.d.ts +1 -1
- package/dist/surface.d.ts +5 -0
- package/dist/surface.js +170 -0
- package/dist/testing.d.ts +10 -0
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const pluginPlatformErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED"];
|
|
2
|
-
export declare const pluginBridgeErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED", "PLUGIN_CONFIRMATION_REJECTED", "PLUGIN_BRIDGE_CANCELLED", "PLUGIN_BRIDGE_TIMEOUT", "PLUGIN_BRIDGE_DISPOSED", "PLUGIN_BRIDGE_HANDSHAKE_FAILED", "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED"];
|
|
3
|
-
export declare const pluginClientErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED", "PLUGIN_CONFIRMATION_REJECTED", "PLUGIN_BRIDGE_CANCELLED", "PLUGIN_BRIDGE_TIMEOUT", "PLUGIN_BRIDGE_DISPOSED", "PLUGIN_BRIDGE_HANDSHAKE_FAILED", "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED", "PLUGIN_PLATFORM_REQUEST_FAILED", "PLUGIN_STREAM_FAILED"];
|
|
1
|
+
export declare const pluginPlatformErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_SURFACE_METHOD_UNAVAILABLE", "PLUGIN_SURFACE_METHOD_CONFLICT", "PLUGIN_SURFACE_METHOD_AMBIGUOUS", "PLUGIN_SURFACE_METHOD_FAILED", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED"];
|
|
2
|
+
export declare const pluginBridgeErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_SURFACE_METHOD_UNAVAILABLE", "PLUGIN_SURFACE_METHOD_CONFLICT", "PLUGIN_SURFACE_METHOD_AMBIGUOUS", "PLUGIN_SURFACE_METHOD_FAILED", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED", "PLUGIN_CONFIRMATION_REJECTED", "PLUGIN_BRIDGE_CANCELLED", "PLUGIN_BRIDGE_TIMEOUT", "PLUGIN_BRIDGE_DISPOSED", "PLUGIN_BRIDGE_HANDSHAKE_FAILED", "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED"];
|
|
3
|
+
export declare const pluginClientErrorCodes: readonly ["PLUGIN_INVALID_REQUEST", "PLUGIN_MANIFEST_INVALID", "PLUGIN_PACKAGE_INVALID", "PLUGIN_PACKAGE_TOO_LARGE", "PLUGIN_PACKAGE_PATH_FORBIDDEN", "PLUGIN_SIGNATURE_INVALID", "PLUGIN_TRUST_STATE_DENIED", "PLUGIN_TRUST_VERIFICATION_REQUIRED", "PLUGIN_TRUST_VERIFICATION_INVALID", "PLUGIN_RELEASE_REF_VERIFICATION_FAILED", "PLUGIN_RELEASE_REF_POLICY_DENIED", "PLUGIN_RELEASE_NETWORK", "PLUGIN_RELEASE_TIMEOUT", "PLUGIN_RELEASE_ASSET_MISSING", "PLUGIN_RELEASE_ASSET_INTEGRITY", "PLUGIN_INSTALL_INTERRUPTED", "PLUGIN_INSTALL_STATE_CONFLICT", "PLUGIN_RETAINED_DATA_INCOMPATIBLE", "PLUGIN_INTERNAL_FAILURE", "PLUGIN_DISABLED", "PLUGIN_PERMISSION_DENIED", "PLUGIN_ORIGIN_DENIED", "PLUGIN_ACTION_DENIED", "PLUGIN_OWNER_SCOPE_MISMATCH", "PLUGIN_SECRET_SCOPE_MISMATCH", "PLUGIN_STORAGE_SCOPE_MISMATCH", "PLUGIN_ADAPTER_FAILURE", "PLUGIN_SESSION_REVOKED", "PLUGIN_SESSION_TEARDOWN_INCOMPLETE", "PLUGIN_SESSION_FENCE_CAPACITY", "PLUGIN_CONFIRMATION_REQUIRED", "PLUGIN_CONFIRMATION_INVALID", "PLUGIN_TOKEN_EXPIRED", "PLUGIN_TOKEN_REPLAY", "PLUGIN_GATEWAY_TOKEN_INVALID", "PLUGIN_GATEWAY_TOKEN_REPLAYED", "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH", "PLUGIN_ASSET_TICKET_INVALID", "PLUGIN_ASSET_SESSION_INVALID", "PLUGIN_STREAM_TICKET_INVALID", "PLUGIN_STREAM_DELIVERY_INVALID", "PLUGIN_STREAM_CANCELLED", "PLUGIN_LEASE_INVALID", "PLUGIN_LEASE_REPLAYED", "PLUGIN_GRANT_INVALID", "PLUGIN_STORAGE_QUOTA_EXCEEDED", "PLUGIN_EXECUTION_BLOCKED", "PLUGIN_EXECUTION_NOT_FOUND", "PLUGIN_EXECUTION_NOT_CANCELABLE", "PLUGIN_SURFACE_METHOD_UNAVAILABLE", "PLUGIN_SURFACE_METHOD_CONFLICT", "PLUGIN_SURFACE_METHOD_AMBIGUOUS", "PLUGIN_SURFACE_METHOD_FAILED", "PLUGIN_CONNECTION_UNAVAILABLE", "PLUGIN_CONNECTION_CONFLICT", "PLUGIN_NETWORK_TARGET_DENIED", "PLUGIN_NETWORK_RATE_LIMITED", "PLUGIN_RUNTIME_UNAVAILABLE", "PLUGIN_RUNTIME_VERSION_MISMATCH", "PLUGIN_RUNTIME_CONTRACT_MISMATCH", "PLUGIN_UI_PROTOCOL_VIOLATION", "PLUGIN_SURFACE_QUIESCE_TIMEOUT", "PLUGIN_JSON_LIMIT_EXCEEDED", "PLUGIN_CAPABILITY_ERROR", "PLUGIN_WORKER_ERROR", "PLUGIN_FILE_OPERATION_FAILED", "PLUGIN_CONTRACT_MISMATCH", "PLUGIN_MANAGEMENT_REVISION_MISMATCH", "PLUGIN_AUTHORIZATION_REVISION_MISMATCH", "PLUGIN_BINDING_REVISION_MISMATCH", "PLUGIN_VALUES_REVISION_MISMATCH", "PLUGIN_CSRF_REQUIRED", "PLUGIN_CSRF_INVALID", "PLUGIN_FEATURE_NOT_CONFIGURED", "PLUGIN_CONFIRMATION_REJECTED", "PLUGIN_BRIDGE_CANCELLED", "PLUGIN_BRIDGE_TIMEOUT", "PLUGIN_BRIDGE_DISPOSED", "PLUGIN_BRIDGE_HANDSHAKE_FAILED", "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED", "PLUGIN_PLATFORM_REQUEST_FAILED", "PLUGIN_STREAM_FAILED"];
|
|
4
4
|
export declare const runtimeProcessFailureCodes: readonly ["RUNTIME_PROCESS_FAILED", "RUNTIME_PROCESS_EXIT_UNEXPECTED", "RUNTIME_PROCESS_EXIT_UNRECOGNIZED", "RUNTIME_PROCESS_SIGNALLED", "IPC_WRITER_CAPACITY_OVERFLOW", "IPC_WRITER_CAPACITY_LIMIT_EXCEEDED", "IPC_WRITER_START_FAILED", "IPC_WRITER_CLOSED", "IPC_WRITER_BATCH_SIZE_OVERFLOW", "IPC_WRITER_WRITE_FAILED", "IPC_WRITER_FLUSH_FAILED", "IPC_WRITER_PANICKED"];
|
package/dist/error-codes.gen.js
CHANGED
|
@@ -49,6 +49,10 @@ export const pluginPlatformErrorCodes = [
|
|
|
49
49
|
"PLUGIN_EXECUTION_BLOCKED",
|
|
50
50
|
"PLUGIN_EXECUTION_NOT_FOUND",
|
|
51
51
|
"PLUGIN_EXECUTION_NOT_CANCELABLE",
|
|
52
|
+
"PLUGIN_SURFACE_METHOD_UNAVAILABLE",
|
|
53
|
+
"PLUGIN_SURFACE_METHOD_CONFLICT",
|
|
54
|
+
"PLUGIN_SURFACE_METHOD_AMBIGUOUS",
|
|
55
|
+
"PLUGIN_SURFACE_METHOD_FAILED",
|
|
52
56
|
"PLUGIN_CONNECTION_UNAVAILABLE",
|
|
53
57
|
"PLUGIN_CONNECTION_CONFLICT",
|
|
54
58
|
"PLUGIN_NETWORK_TARGET_DENIED",
|
|
@@ -121,6 +125,10 @@ export const pluginBridgeErrorCodes = [
|
|
|
121
125
|
"PLUGIN_EXECUTION_BLOCKED",
|
|
122
126
|
"PLUGIN_EXECUTION_NOT_FOUND",
|
|
123
127
|
"PLUGIN_EXECUTION_NOT_CANCELABLE",
|
|
128
|
+
"PLUGIN_SURFACE_METHOD_UNAVAILABLE",
|
|
129
|
+
"PLUGIN_SURFACE_METHOD_CONFLICT",
|
|
130
|
+
"PLUGIN_SURFACE_METHOD_AMBIGUOUS",
|
|
131
|
+
"PLUGIN_SURFACE_METHOD_FAILED",
|
|
124
132
|
"PLUGIN_CONNECTION_UNAVAILABLE",
|
|
125
133
|
"PLUGIN_CONNECTION_CONFLICT",
|
|
126
134
|
"PLUGIN_NETWORK_TARGET_DENIED",
|
|
@@ -199,6 +207,10 @@ export const pluginClientErrorCodes = [
|
|
|
199
207
|
"PLUGIN_EXECUTION_BLOCKED",
|
|
200
208
|
"PLUGIN_EXECUTION_NOT_FOUND",
|
|
201
209
|
"PLUGIN_EXECUTION_NOT_CANCELABLE",
|
|
210
|
+
"PLUGIN_SURFACE_METHOD_UNAVAILABLE",
|
|
211
|
+
"PLUGIN_SURFACE_METHOD_CONFLICT",
|
|
212
|
+
"PLUGIN_SURFACE_METHOD_AMBIGUOUS",
|
|
213
|
+
"PLUGIN_SURFACE_METHOD_FAILED",
|
|
202
214
|
"PLUGIN_CONNECTION_UNAVAILABLE",
|
|
203
215
|
"PLUGIN_CONNECTION_CONFLICT",
|
|
204
216
|
"PLUGIN_NETWORK_TARGET_DENIED",
|
package/dist/openapi.gen.d.ts
CHANGED
|
@@ -3,6 +3,39 @@
|
|
|
3
3
|
* Do not make direct changes to the file.
|
|
4
4
|
*/
|
|
5
5
|
export interface paths {
|
|
6
|
+
"/_redevplugin/api/plugins/surfaces/methods": {
|
|
7
|
+
parameters: {
|
|
8
|
+
query?: never;
|
|
9
|
+
header?: never;
|
|
10
|
+
path?: never;
|
|
11
|
+
cookie?: never;
|
|
12
|
+
};
|
|
13
|
+
get?: never;
|
|
14
|
+
put?: never;
|
|
15
|
+
/** @description Parent SDK receiver control. Each claim is delivered at most once; failed transport never retries it. */
|
|
16
|
+
post: operations["surfaceMethods"];
|
|
17
|
+
delete?: never;
|
|
18
|
+
options?: never;
|
|
19
|
+
head?: never;
|
|
20
|
+
patch?: never;
|
|
21
|
+
trace?: never;
|
|
22
|
+
};
|
|
23
|
+
"/_redevplugin/api/plugins/intents/confirmations/prepare": {
|
|
24
|
+
parameters: {
|
|
25
|
+
query?: never;
|
|
26
|
+
header?: never;
|
|
27
|
+
path?: never;
|
|
28
|
+
cookie?: never;
|
|
29
|
+
};
|
|
30
|
+
get?: never;
|
|
31
|
+
put?: never;
|
|
32
|
+
post: operations["preparePluginIntentConfirmation"];
|
|
33
|
+
delete?: never;
|
|
34
|
+
options?: never;
|
|
35
|
+
head?: never;
|
|
36
|
+
patch?: never;
|
|
37
|
+
trace?: never;
|
|
38
|
+
};
|
|
6
39
|
"/_redevplugin/api/plugins/connections/review": {
|
|
7
40
|
parameters: {
|
|
8
41
|
query?: never;
|
|
@@ -1048,6 +1081,13 @@ export interface paths {
|
|
|
1048
1081
|
export type webhooks = Record<string, never>;
|
|
1049
1082
|
export interface components {
|
|
1050
1083
|
schemas: {
|
|
1084
|
+
SurfaceMethodsSuccessResponse: {
|
|
1085
|
+
/** @constant */
|
|
1086
|
+
ok: true;
|
|
1087
|
+
data: components["schemas"]["SurfaceMethodsResult"];
|
|
1088
|
+
/** @constant */
|
|
1089
|
+
mutation_outcome: "committed";
|
|
1090
|
+
};
|
|
1051
1091
|
ReviewConnectionSuccessResponse: {
|
|
1052
1092
|
/** @constant */
|
|
1053
1093
|
ok: true;
|
|
@@ -1528,7 +1568,7 @@ export interface components {
|
|
|
1528
1568
|
ErrorCode: components["schemas"]["ErrorCodesPlatformErrorCode"];
|
|
1529
1569
|
PlatformErrorMessage: string;
|
|
1530
1570
|
/** @enum {string} */
|
|
1531
|
-
GenericPlatformErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED";
|
|
1571
|
+
GenericPlatformErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_SURFACE_METHOD_UNAVAILABLE" | "PLUGIN_SURFACE_METHOD_CONFLICT" | "PLUGIN_SURFACE_METHOD_AMBIGUOUS" | "PLUGIN_SURFACE_METHOD_FAILED" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED";
|
|
1532
1572
|
SurfaceDisposeResult: {
|
|
1533
1573
|
/** @constant */
|
|
1534
1574
|
disposed: true;
|
|
@@ -1574,6 +1614,7 @@ export interface components {
|
|
|
1574
1614
|
cursor: number;
|
|
1575
1615
|
};
|
|
1576
1616
|
PluginIntentRecord: {
|
|
1617
|
+
surface_id?: string;
|
|
1577
1618
|
plugin_id: string;
|
|
1578
1619
|
plugin_instance_id: string;
|
|
1579
1620
|
publisher_id: string;
|
|
@@ -2000,11 +2041,12 @@ export interface components {
|
|
|
2000
2041
|
};
|
|
2001
2042
|
ExternalPackageMethodRouteSummary: {
|
|
2002
2043
|
/** @enum {string} */
|
|
2003
|
-
kind: "capability" | "worker" | "core_action";
|
|
2044
|
+
kind: "capability" | "worker" | "core_action" | "surface";
|
|
2004
2045
|
binding_id?: string;
|
|
2005
2046
|
target_method?: string;
|
|
2006
2047
|
worker_id?: string;
|
|
2007
2048
|
action_id?: string;
|
|
2049
|
+
surface_id?: string;
|
|
2008
2050
|
};
|
|
2009
2051
|
ExternalPackageConfirmationSummary: {
|
|
2010
2052
|
/** @enum {string} */
|
|
@@ -2582,6 +2624,8 @@ export interface components {
|
|
|
2582
2624
|
expires_at: string;
|
|
2583
2625
|
};
|
|
2584
2626
|
InvokeIntentRequest: {
|
|
2627
|
+
surface_instance_id?: string;
|
|
2628
|
+
confirmation_id?: string;
|
|
2585
2629
|
plugin_instance_id?: string;
|
|
2586
2630
|
intent_id: string;
|
|
2587
2631
|
params?: {
|
|
@@ -2724,6 +2768,36 @@ export interface components {
|
|
|
2724
2768
|
};
|
|
2725
2769
|
remove?: string[];
|
|
2726
2770
|
};
|
|
2771
|
+
/** @description Parent SDK control plane with exact receiver CAS and one-time claiming. Plugin handlers run on the source-bound MessagePort. No Worker or runtime IPC is involved. */
|
|
2772
|
+
SurfaceMethods: unknown;
|
|
2773
|
+
SurfaceMethodsRequest: {
|
|
2774
|
+
plugin_instance_id: string;
|
|
2775
|
+
surface_instance_id: string;
|
|
2776
|
+
bridge_channel_id: string;
|
|
2777
|
+
plugin_gateway_token: string;
|
|
2778
|
+
/** @enum {unknown} */
|
|
2779
|
+
operation: "register" | "configure" | "claim" | "complete" | "close";
|
|
2780
|
+
receiver_id?: string;
|
|
2781
|
+
methods?: string[];
|
|
2782
|
+
invocation_id?: string;
|
|
2783
|
+
active_invocations?: string[];
|
|
2784
|
+
data?: unknown;
|
|
2785
|
+
failed?: boolean;
|
|
2786
|
+
} & (unknown & unknown & unknown & unknown & unknown & unknown & unknown);
|
|
2787
|
+
SurfaceMethodsInvocation: {
|
|
2788
|
+
invocation_id: string;
|
|
2789
|
+
method: string;
|
|
2790
|
+
params: {
|
|
2791
|
+
[key: string]: unknown;
|
|
2792
|
+
};
|
|
2793
|
+
/** Format: date-time */
|
|
2794
|
+
deadline: string;
|
|
2795
|
+
};
|
|
2796
|
+
SurfaceMethodsResult: {
|
|
2797
|
+
receiver_id: string;
|
|
2798
|
+
invocation?: components["schemas"]["SurfaceMethodsInvocation"];
|
|
2799
|
+
cancelled: string[];
|
|
2800
|
+
};
|
|
2727
2801
|
Connections: components["schemas"]["ConnectionsReviewRequest"] | components["schemas"]["ConnectionsReviewReference"] | components["schemas"]["ConnectionsListRequest"] | components["schemas"]["ConnectionsRevokeRequest"] | components["schemas"]["ConnectionsReview"] | components["schemas"]["ConnectionsConnection"] | components["schemas"]["ConnectionsWebConnection"] | components["schemas"]["ConnectionsReviewResult"] | components["schemas"]["ConnectionsConnectionList"];
|
|
2728
2802
|
ConnectionsReviewRequest: {
|
|
2729
2803
|
plugin_instance_id: string;
|
|
@@ -3188,11 +3262,11 @@ export interface components {
|
|
|
3188
3262
|
};
|
|
3189
3263
|
ErrorCodes: Record<string, never>;
|
|
3190
3264
|
/** @enum {string} */
|
|
3191
|
-
ErrorCodesPlatformErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED";
|
|
3265
|
+
ErrorCodesPlatformErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_SURFACE_METHOD_UNAVAILABLE" | "PLUGIN_SURFACE_METHOD_CONFLICT" | "PLUGIN_SURFACE_METHOD_AMBIGUOUS" | "PLUGIN_SURFACE_METHOD_FAILED" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED";
|
|
3192
3266
|
/** @enum {string} */
|
|
3193
|
-
ErrorCodesBridgeErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED" | "PLUGIN_CONFIRMATION_REJECTED" | "PLUGIN_BRIDGE_CANCELLED" | "PLUGIN_BRIDGE_TIMEOUT" | "PLUGIN_BRIDGE_DISPOSED" | "PLUGIN_BRIDGE_HANDSHAKE_FAILED" | "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED";
|
|
3267
|
+
ErrorCodesBridgeErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_SURFACE_METHOD_UNAVAILABLE" | "PLUGIN_SURFACE_METHOD_CONFLICT" | "PLUGIN_SURFACE_METHOD_AMBIGUOUS" | "PLUGIN_SURFACE_METHOD_FAILED" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED" | "PLUGIN_CONFIRMATION_REJECTED" | "PLUGIN_BRIDGE_CANCELLED" | "PLUGIN_BRIDGE_TIMEOUT" | "PLUGIN_BRIDGE_DISPOSED" | "PLUGIN_BRIDGE_HANDSHAKE_FAILED" | "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED";
|
|
3194
3268
|
/** @enum {string} */
|
|
3195
|
-
ErrorCodesTypescriptClientErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED" | "PLUGIN_CONFIRMATION_REJECTED" | "PLUGIN_BRIDGE_CANCELLED" | "PLUGIN_BRIDGE_TIMEOUT" | "PLUGIN_BRIDGE_DISPOSED" | "PLUGIN_BRIDGE_HANDSHAKE_FAILED" | "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED" | "PLUGIN_PLATFORM_REQUEST_FAILED" | "PLUGIN_STREAM_FAILED";
|
|
3269
|
+
ErrorCodesTypescriptClientErrorCode: "PLUGIN_INVALID_REQUEST" | "PLUGIN_MANIFEST_INVALID" | "PLUGIN_PACKAGE_INVALID" | "PLUGIN_PACKAGE_TOO_LARGE" | "PLUGIN_PACKAGE_PATH_FORBIDDEN" | "PLUGIN_SIGNATURE_INVALID" | "PLUGIN_TRUST_STATE_DENIED" | "PLUGIN_TRUST_VERIFICATION_REQUIRED" | "PLUGIN_TRUST_VERIFICATION_INVALID" | "PLUGIN_RELEASE_REF_VERIFICATION_FAILED" | "PLUGIN_RELEASE_REF_POLICY_DENIED" | "PLUGIN_RELEASE_NETWORK" | "PLUGIN_RELEASE_TIMEOUT" | "PLUGIN_RELEASE_ASSET_MISSING" | "PLUGIN_RELEASE_ASSET_INTEGRITY" | "PLUGIN_INSTALL_INTERRUPTED" | "PLUGIN_INSTALL_STATE_CONFLICT" | "PLUGIN_RETAINED_DATA_INCOMPATIBLE" | "PLUGIN_INTERNAL_FAILURE" | "PLUGIN_DISABLED" | "PLUGIN_PERMISSION_DENIED" | "PLUGIN_ORIGIN_DENIED" | "PLUGIN_ACTION_DENIED" | "PLUGIN_OWNER_SCOPE_MISMATCH" | "PLUGIN_SECRET_SCOPE_MISMATCH" | "PLUGIN_STORAGE_SCOPE_MISMATCH" | "PLUGIN_ADAPTER_FAILURE" | "PLUGIN_SESSION_REVOKED" | "PLUGIN_SESSION_TEARDOWN_INCOMPLETE" | "PLUGIN_SESSION_FENCE_CAPACITY" | "PLUGIN_CONFIRMATION_REQUIRED" | "PLUGIN_CONFIRMATION_INVALID" | "PLUGIN_TOKEN_EXPIRED" | "PLUGIN_TOKEN_REPLAY" | "PLUGIN_GATEWAY_TOKEN_INVALID" | "PLUGIN_GATEWAY_TOKEN_REPLAYED" | "PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH" | "PLUGIN_ASSET_TICKET_INVALID" | "PLUGIN_ASSET_SESSION_INVALID" | "PLUGIN_STREAM_TICKET_INVALID" | "PLUGIN_STREAM_DELIVERY_INVALID" | "PLUGIN_STREAM_CANCELLED" | "PLUGIN_LEASE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "PLUGIN_GRANT_INVALID" | "PLUGIN_STORAGE_QUOTA_EXCEEDED" | "PLUGIN_EXECUTION_BLOCKED" | "PLUGIN_EXECUTION_NOT_FOUND" | "PLUGIN_EXECUTION_NOT_CANCELABLE" | "PLUGIN_SURFACE_METHOD_UNAVAILABLE" | "PLUGIN_SURFACE_METHOD_CONFLICT" | "PLUGIN_SURFACE_METHOD_AMBIGUOUS" | "PLUGIN_SURFACE_METHOD_FAILED" | "PLUGIN_CONNECTION_UNAVAILABLE" | "PLUGIN_CONNECTION_CONFLICT" | "PLUGIN_NETWORK_TARGET_DENIED" | "PLUGIN_NETWORK_RATE_LIMITED" | "PLUGIN_RUNTIME_UNAVAILABLE" | "PLUGIN_RUNTIME_VERSION_MISMATCH" | "PLUGIN_RUNTIME_CONTRACT_MISMATCH" | "PLUGIN_UI_PROTOCOL_VIOLATION" | "PLUGIN_SURFACE_QUIESCE_TIMEOUT" | "PLUGIN_JSON_LIMIT_EXCEEDED" | "PLUGIN_CAPABILITY_ERROR" | "PLUGIN_WORKER_ERROR" | "PLUGIN_FILE_OPERATION_FAILED" | "PLUGIN_CONTRACT_MISMATCH" | "PLUGIN_MANAGEMENT_REVISION_MISMATCH" | "PLUGIN_AUTHORIZATION_REVISION_MISMATCH" | "PLUGIN_BINDING_REVISION_MISMATCH" | "PLUGIN_VALUES_REVISION_MISMATCH" | "PLUGIN_CSRF_REQUIRED" | "PLUGIN_CSRF_INVALID" | "PLUGIN_FEATURE_NOT_CONFIGURED" | "PLUGIN_CONFIRMATION_REJECTED" | "PLUGIN_BRIDGE_CANCELLED" | "PLUGIN_BRIDGE_TIMEOUT" | "PLUGIN_BRIDGE_DISPOSED" | "PLUGIN_BRIDGE_HANDSHAKE_FAILED" | "PLUGIN_BRIDGE_HANDSHAKE_REQUIRED" | "PLUGIN_PLATFORM_REQUEST_FAILED" | "PLUGIN_STREAM_FAILED";
|
|
3196
3270
|
/** @enum {string} */
|
|
3197
3271
|
ErrorCodesRustIpcErrorCode: "ARTIFACT_HANDLE_FAILED" | "WORKER_INVOCATION_INVALID" | "RUNTIME_CAPABILITY_REVOKED" | "RUNTIME_CONTROL_CHANNEL_STALE" | "RUNTIME_LEASE_INVALID" | "RUNTIME_LEASE_SIGNATURE_INVALID" | "PLUGIN_LEASE_REPLAYED" | "WASM_WORKER_INVALID" | "WASM_WORKER_FAILED" | "RUNTIME_CAPACITY_EXCEEDED" | "RUNTIME_INVOCATION_CANCELED" | "PLUGIN_SESSION_REVOKED" | "SESSION_REVOKE_SEQUENCE_STALE" | "SESSION_REVOKE_DRAIN_TIMEOUT" | "UNSUPPORTED_FRAME";
|
|
3198
3272
|
/** @enum {string} */
|
|
@@ -3355,12 +3429,13 @@ export interface components {
|
|
|
3355
3429
|
};
|
|
3356
3430
|
route: {
|
|
3357
3431
|
/** @enum {unknown} */
|
|
3358
|
-
kind: "capability" | "worker" | "core_action";
|
|
3432
|
+
kind: "capability" | "worker" | "core_action" | "surface";
|
|
3359
3433
|
binding_id?: string;
|
|
3360
3434
|
target_method?: string;
|
|
3361
3435
|
worker_id?: string;
|
|
3362
3436
|
action_id?: string;
|
|
3363
|
-
|
|
3437
|
+
surface_id?: string;
|
|
3438
|
+
} & (unknown & unknown & unknown & unknown);
|
|
3364
3439
|
confirmation?: {
|
|
3365
3440
|
/** @enum {unknown} */
|
|
3366
3441
|
mode: "none" | "required" | "risk_based";
|
|
@@ -3390,7 +3465,7 @@ export interface components {
|
|
|
3390
3465
|
};
|
|
3391
3466
|
/** @description Explicit Worker permission ceiling. Omitted retains the package ceiling; an empty array grants no resource permissions. Requires authorization.scoped.v1. */
|
|
3392
3467
|
permissions?: ("fs.workspace.read" | "fs.workspace.write" | "fs.home.read" | "fs.home.write" | "fs.environment.read" | "fs.environment.write" | "network.client" | "network.listen" | "process.local" | "fs.selected.read" | "fs.selected.write")[];
|
|
3393
|
-
} & (unknown & unknown & unknown & unknown & unknown))[];
|
|
3468
|
+
} & (unknown & unknown & unknown & unknown & unknown & unknown))[];
|
|
3394
3469
|
workers: {
|
|
3395
3470
|
worker_id: string;
|
|
3396
3471
|
artifact: string;
|
|
@@ -4155,6 +4230,44 @@ export interface components {
|
|
|
4155
4230
|
}
|
|
4156
4231
|
export type $defs = Record<string, never>;
|
|
4157
4232
|
export interface operations {
|
|
4233
|
+
surfaceMethods: {
|
|
4234
|
+
parameters: {
|
|
4235
|
+
query?: never;
|
|
4236
|
+
header?: never;
|
|
4237
|
+
path?: never;
|
|
4238
|
+
cookie?: never;
|
|
4239
|
+
};
|
|
4240
|
+
requestBody: {
|
|
4241
|
+
content: {
|
|
4242
|
+
"application/json": components["schemas"]["SurfaceMethodsRequest"];
|
|
4243
|
+
};
|
|
4244
|
+
};
|
|
4245
|
+
responses: {
|
|
4246
|
+
/** @description Exact receiver result */
|
|
4247
|
+
200: {
|
|
4248
|
+
headers: {
|
|
4249
|
+
[name: string]: unknown;
|
|
4250
|
+
};
|
|
4251
|
+
content: {
|
|
4252
|
+
"application/json": components["schemas"]["SurfaceMethodsSuccessResponse"];
|
|
4253
|
+
};
|
|
4254
|
+
};
|
|
4255
|
+
default: components["responses"]["MutationPlatformErrorResponse"];
|
|
4256
|
+
};
|
|
4257
|
+
};
|
|
4258
|
+
preparePluginIntentConfirmation: {
|
|
4259
|
+
parameters: {
|
|
4260
|
+
query?: never;
|
|
4261
|
+
header?: never;
|
|
4262
|
+
path?: never;
|
|
4263
|
+
cookie?: never;
|
|
4264
|
+
};
|
|
4265
|
+
requestBody: components["requestBodies"]["InvokeIntentRequest"];
|
|
4266
|
+
responses: {
|
|
4267
|
+
200: components["responses"]["PluginMethodConfirmationPreparationResponse"];
|
|
4268
|
+
default: components["responses"]["MutationPlatformErrorResponse"];
|
|
4269
|
+
};
|
|
4270
|
+
};
|
|
4158
4271
|
reviewConnection: {
|
|
4159
4272
|
parameters: {
|
|
4160
4273
|
query?: never;
|
package/dist/platform.d.ts
CHANGED
|
@@ -165,6 +165,7 @@ export declare class PluginPlatformClient {
|
|
|
165
165
|
cancelExecution(executionID: string, reason?: string, options?: PluginRequestOptions): Promise<PluginExecution>;
|
|
166
166
|
listExecutionEvents(executionID: string, request: PluginExecutionEventListOptions, options?: PluginRequestOptions): Promise<PluginExecutionEventList>;
|
|
167
167
|
listIntents(options?: PluginIntentListOptions, requestOptions?: PluginRequestOptions): Promise<PluginIntentList>;
|
|
168
|
+
prepareIntentConfirmation(request: PluginIntentInvokeRequest, options?: PluginRequestOptions): Promise<PlatformSchemas["PluginMethodConfirmationPreparation"]>;
|
|
168
169
|
invokeIntent<T = unknown>(request: PluginIntentInvokeRequest, options?: PluginRequestOptions): Promise<PluginMethodResult<T>>;
|
|
169
170
|
exportData(request: PluginDataExportRequest, options?: PluginRequestOptions): Promise<PluginDataExportResult>;
|
|
170
171
|
deleteDataExport(request: PluginDataExportDeleteRequest, options?: PluginRequestOptions): Promise<PluginDataExportDeleteResult>;
|
package/dist/platform.js
CHANGED
|
@@ -240,6 +240,9 @@ export class PluginPlatformClient {
|
|
|
240
240
|
listIntents(options = {}, requestOptions = {}) {
|
|
241
241
|
return this.#requestQuery("/_redevplugin/api/plugins/intents/query", options, requestOptions);
|
|
242
242
|
}
|
|
243
|
+
prepareIntentConfirmation(request, options = {}) {
|
|
244
|
+
return this.#requestMutation("POST", "/_redevplugin/api/plugins/intents/confirmations/prepare", request, options);
|
|
245
|
+
}
|
|
243
246
|
invokeIntent(request, options = {}) {
|
|
244
247
|
return this.#requestMutation("POST", "/_redevplugin/api/plugins/intents/invoke", request, options);
|
|
245
248
|
}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { pluginAPIMajor } from "./contracts.gen.js";
|
|
|
6
6
|
export { createPluginProcessClient } from "./process.js";
|
|
7
7
|
export type { PluginProcessExitResult, PluginProcessMethodContracts, PluginProcessReadResult, PluginProcessResourceLimits, PluginProcessStartRequest, PluginProcessStatus, } from "./process.js";
|
|
8
8
|
export { callCapabilityOperation, callCapabilityStream, callCapabilitySync, isCapabilityBusinessError, } from "./capability-client.js";
|
|
9
|
-
export type { BridgeLifecycleEvent, MessagePortLike, PluginBridgeClientOptions, PluginBridgeClock, PluginBridgeRequestOptions, PluginFileExportRequest, PluginJSONObject, PluginJSONValue, PluginMethodResult, PluginExecutionFailureCode, PluginExecutionSnapshot, PluginExecutionProgress, PluginExecutionEvent, PluginExecutionEventList, PluginSurfaceContext, PluginSurfaceFileExportMediaType, } from "./surface.js";
|
|
9
|
+
export type { BridgeLifecycleEvent, MessagePortLike, PluginBridgeClientOptions, PluginBridgeClock, PluginBridgeRequestOptions, PluginMethodHandler, PluginFileExportRequest, PluginJSONObject, PluginJSONValue, PluginMethodResult, PluginExecutionFailureCode, PluginExecutionSnapshot, PluginExecutionProgress, PluginExecutionEvent, PluginExecutionEventList, PluginSurfaceContext, PluginSurfaceFileExportMediaType, } from "./surface.js";
|
|
10
10
|
export type { PluginCapabilitySchema, PluginCapabilityEffect, PluginCapabilityOperationContract, PluginCapabilityStreamContract, PluginCapabilitySyncContract, PluginCapabilityStreamEvent, PluginCapabilityStreamReadResult, PluginExecution, PluginExecutionTerminalStatus, PluginExecutionWaitOptions, PluginStream, } from "./capability-client.js";
|
|
11
11
|
export { openPluginConnection } from "./connections.js";
|
|
12
12
|
export type { PluginWebConnection, PluginConnectionOptions } from "./connections.js";
|
package/dist/surface.d.ts
CHANGED
|
@@ -238,6 +238,9 @@ export type PluginBridgeClientOptions = {
|
|
|
238
238
|
port?: MessagePortLike;
|
|
239
239
|
surfaceHandle?: string;
|
|
240
240
|
};
|
|
241
|
+
export type PluginMethodHandler = (params: PluginJSONObject, context: Readonly<{
|
|
242
|
+
signal: AbortSignal;
|
|
243
|
+
}>) => unknown | Promise<unknown>;
|
|
241
244
|
export type PluginBridgeRequestOptions = {
|
|
242
245
|
signal?: AbortSignal;
|
|
243
246
|
};
|
|
@@ -249,6 +252,8 @@ export declare class PluginBridgeClient {
|
|
|
249
252
|
constructor(options?: PluginBridgeClientOptions);
|
|
250
253
|
ready(): Promise<void>;
|
|
251
254
|
call<T = unknown>(method: string, params?: PluginJSONObject, options?: PluginBridgeRequestOptions): Promise<T>;
|
|
255
|
+
/** Register a declared application method after the authenticated bridge is ready. */
|
|
256
|
+
registerMethod(name: string, handler: PluginMethodHandler): Promise<() => Promise<void>>;
|
|
252
257
|
executionEvents(executionID: string, afterCursor: number, options?: PluginBridgeRequestOptions): Promise<PluginExecutionEventList>;
|
|
253
258
|
cancelExecution(executionID: string, reason?: string, options?: PluginBridgeRequestOptions): Promise<void>;
|
|
254
259
|
executionSnapshot(executionID: string, options?: PluginBridgeRequestOptions): Promise<PluginExecutionSnapshot>;
|
package/dist/surface.js
CHANGED
|
@@ -33,6 +33,8 @@ export class PluginBridgeClient {
|
|
|
33
33
|
files = new PluginFilesClient((request, options) => this.#fileIO(request, options));
|
|
34
34
|
surfaceHandle;
|
|
35
35
|
timeoutMs;
|
|
36
|
+
#methodHandlers = new Map();
|
|
37
|
+
#methodInvocations = new Map();
|
|
36
38
|
#nextID = 1;
|
|
37
39
|
#clock;
|
|
38
40
|
#port;
|
|
@@ -76,6 +78,61 @@ export class PluginBridgeClient {
|
|
|
76
78
|
const effect = options[pluginBridgeCapabilityEffect];
|
|
77
79
|
return this.#call(method, params, options, effect === undefined || effect !== "read");
|
|
78
80
|
}
|
|
81
|
+
/** Register a declared application method after the authenticated bridge is ready. */
|
|
82
|
+
async registerMethod(name, handler) {
|
|
83
|
+
this.#assertActive();
|
|
84
|
+
if (!validMethod(name) || typeof handler !== "function" || this.#methodHandlers.has(name) || this.#methodHandlers.size >= 128) {
|
|
85
|
+
throw new PluginBridgeError("PLUGIN_INVALID_REQUEST", "Application method registration is invalid or duplicated");
|
|
86
|
+
}
|
|
87
|
+
this.#methodHandlers.set(name, handler);
|
|
88
|
+
try {
|
|
89
|
+
await this.ready();
|
|
90
|
+
await this.#publishMethods();
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (this.#methodHandlers.get(name) === handler)
|
|
94
|
+
this.#methodHandlers.delete(name);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
return async () => {
|
|
98
|
+
if (this.#methodHandlers.get(name) !== handler)
|
|
99
|
+
return;
|
|
100
|
+
this.#methodHandlers.delete(name);
|
|
101
|
+
if (this.#lifecycleState === "active")
|
|
102
|
+
await this.#publishMethods();
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
#publishMethods() {
|
|
106
|
+
const id = this.#requestID("rpc");
|
|
107
|
+
return this.#request(id, { type: "redevplugin.bridge.methods", id, methods: Array.from(this.#methodHandlers.keys()).sort() }, { mutation: true });
|
|
108
|
+
}
|
|
109
|
+
async #invokeRegisteredMethod(invocation) {
|
|
110
|
+
if (this.#methodInvocations.has(invocation.invocation_id) || this.#methodInvocations.size >= 32)
|
|
111
|
+
return;
|
|
112
|
+
const handler = this.#methodHandlers.get(invocation.method);
|
|
113
|
+
const controller = new AbortController();
|
|
114
|
+
this.#methodInvocations.set(invocation.invocation_id, controller);
|
|
115
|
+
const timeout = setTimeout(() => controller.abort(), Math.max(0, Math.min(30000, Date.parse(invocation.deadline) - Date.now())));
|
|
116
|
+
try {
|
|
117
|
+
controller.signal.throwIfAborted();
|
|
118
|
+
if (!handler)
|
|
119
|
+
throw new Error("Application method is not registered");
|
|
120
|
+
const value = await handler(normalizePluginJSONObject(invocation.params), Object.freeze({ signal: controller.signal }));
|
|
121
|
+
const data = normalizePluginJSONValue(value === undefined ? null : value);
|
|
122
|
+
if (!messageWithinLimit(data))
|
|
123
|
+
throw new Error("Application result exceeds the message limit");
|
|
124
|
+
if (!controller.signal.aborted && this.#lifecycleState === "active")
|
|
125
|
+
this.#port.postMessage({ type: "redevplugin.bridge.method_result", invocation_id: invocation.invocation_id, data, failed: false });
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
if (!controller.signal.aborted && this.#lifecycleState === "active")
|
|
129
|
+
this.#port.postMessage({ type: "redevplugin.bridge.method_result", invocation_id: invocation.invocation_id, data: null, failed: true });
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
clearTimeout(timeout);
|
|
133
|
+
this.#methodInvocations.delete(invocation.invocation_id);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
79
136
|
#fileIO(request, options = {}) {
|
|
80
137
|
this.#assertActive();
|
|
81
138
|
if (!validFileIORequest(request))
|
|
@@ -204,6 +261,10 @@ export class PluginBridgeClient {
|
|
|
204
261
|
if (this.#lifecycleState === "disposed")
|
|
205
262
|
return;
|
|
206
263
|
this.#lifecycleState = "disposed";
|
|
264
|
+
for (const controller of this.#methodInvocations.values())
|
|
265
|
+
controller.abort();
|
|
266
|
+
this.#methodInvocations.clear();
|
|
267
|
+
this.#methodHandlers.clear();
|
|
207
268
|
const disposedError = new PluginBridgeError("PLUGIN_BRIDGE_DISPOSED", "Plugin bridge client is disposed");
|
|
208
269
|
if (!this.#ready)
|
|
209
270
|
this.#rejectReady(disposedError);
|
|
@@ -308,6 +369,14 @@ export class PluginBridgeClient {
|
|
|
308
369
|
const data = event.data;
|
|
309
370
|
if (!messageWithinLimit(data))
|
|
310
371
|
return;
|
|
372
|
+
if (hasExactKeys(data, ["type", "invocation"]) && data.type === "redevplugin.bridge.method_invoke" && isSurfaceMethodDelivery(data.invocation)) {
|
|
373
|
+
void this.#invokeRegisteredMethod(data.invocation);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
if (hasExactKeys(data, ["type", "invocation_id"]) && data.type === "redevplugin.bridge.method_cancel" && typeof data.invocation_id === "string") {
|
|
377
|
+
this.#methodInvocations.get(data.invocation_id)?.abort();
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
311
380
|
if (isBridgeResponseCandidate(data)) {
|
|
312
381
|
const pending = this.#takePending(data.id);
|
|
313
382
|
if (!pending)
|
|
@@ -569,6 +638,10 @@ class PluginSurfaceHostImplementation {
|
|
|
569
638
|
surfaceInstanceId;
|
|
570
639
|
bootstrap;
|
|
571
640
|
bridgeChannelId;
|
|
641
|
+
#receiverID;
|
|
642
|
+
#receiverController;
|
|
643
|
+
#receiverTransition = Promise.resolve();
|
|
644
|
+
#receiverInvocations = new Set();
|
|
572
645
|
#frameGenerationId;
|
|
573
646
|
get frameGenerationId() { return this.#frameGenerationId; }
|
|
574
647
|
surfaceHandle;
|
|
@@ -780,6 +853,8 @@ class PluginSurfaceHostImplementation {
|
|
|
780
853
|
}, preparation.document.origin, [channel.port2]);
|
|
781
854
|
await signals.portAcknowledged.promise;
|
|
782
855
|
this.#assertActive();
|
|
856
|
+
await this.#receiverTransition;
|
|
857
|
+
this.#assertActive();
|
|
783
858
|
this.#setOpeningStage("authorizing", ["token"]);
|
|
784
859
|
if (this.#leaseRenewalPromise)
|
|
785
860
|
await this.#leaseRenewalPromise;
|
|
@@ -813,6 +888,14 @@ class PluginSurfaceHostImplementation {
|
|
|
813
888
|
return;
|
|
814
889
|
}
|
|
815
890
|
this.#navigationPending = true;
|
|
891
|
+
this.#receiverController?.abort();
|
|
892
|
+
this.#receiverInvocations.clear();
|
|
893
|
+
this.#receiverTransition = this.#receiverTransition.then(async () => {
|
|
894
|
+
if (!this.#receiverID)
|
|
895
|
+
return;
|
|
896
|
+
await this.#receiverRequest("close");
|
|
897
|
+
}).catch(async (error) => { await this.#failSurface(toBridgeError(error, "PLUGIN_SURFACE_METHOD_CONFLICT")); throw error; });
|
|
898
|
+
void this.#receiverTransition.catch(() => undefined);
|
|
816
899
|
clearTimeout(this.#leaseRenewalTimer);
|
|
817
900
|
this.#leaseRenewalTimer = undefined;
|
|
818
901
|
this.#ready = false;
|
|
@@ -983,6 +1066,8 @@ class PluginSurfaceHostImplementation {
|
|
|
983
1066
|
if (this.#disposed)
|
|
984
1067
|
return;
|
|
985
1068
|
this.#disposed = true;
|
|
1069
|
+
this.#receiverController?.abort();
|
|
1070
|
+
this.#receiverInvocations.clear();
|
|
986
1071
|
clearTimeout(this.#navigationTimer);
|
|
987
1072
|
this.#navigationPending = false;
|
|
988
1073
|
this.#unregisterSurfaceScope?.();
|
|
@@ -1076,6 +1161,52 @@ class PluginSurfaceHostImplementation {
|
|
|
1076
1161
|
await this.#failSurface(error);
|
|
1077
1162
|
return;
|
|
1078
1163
|
}
|
|
1164
|
+
if (hasExactKeys(data, ["type", "id", "methods"]) && data.type === "redevplugin.bridge.methods" && validBridgeRequestID(data.id, "rpc") && Array.isArray(data.methods) && data.methods.length <= 128 && data.methods.every(name => typeof name === "string" && validMethod(name))) {
|
|
1165
|
+
const id = data.id;
|
|
1166
|
+
const controller = this.#registerPendingRequest(id);
|
|
1167
|
+
const methods = [...new Set(data.methods)].sort();
|
|
1168
|
+
const generation = this.frameGenerationId;
|
|
1169
|
+
this.#receiverTransition = this.#receiverTransition.then(async () => {
|
|
1170
|
+
if (generation !== this.frameGenerationId || this.#disposed || controller.signal.aborted)
|
|
1171
|
+
return;
|
|
1172
|
+
const registering = !this.#receiverController || this.#receiverController.signal.aborted;
|
|
1173
|
+
const result = await this.#receiverRequest(registering ? "register" : "configure", { methods }, controller.signal);
|
|
1174
|
+
this.#receiverID = result.receiver_id;
|
|
1175
|
+
if (generation !== this.frameGenerationId || this.#disposed)
|
|
1176
|
+
return;
|
|
1177
|
+
this.#postToApplication({ type: "redevplugin.bridge.response", id, ok: true, data: null });
|
|
1178
|
+
if (registering) {
|
|
1179
|
+
const controller = new AbortController();
|
|
1180
|
+
this.#receiverController = controller;
|
|
1181
|
+
void this.#pollMethods(generation, controller).catch(error => {
|
|
1182
|
+
if (!controller.signal.aborted)
|
|
1183
|
+
void this.#failSurface(toBridgeError(error, "PLUGIN_SURFACE_METHOD_CONFLICT"));
|
|
1184
|
+
});
|
|
1185
|
+
}
|
|
1186
|
+
}).catch(async (error) => { await this.#failSurface(toBridgeError(error, "PLUGIN_SURFACE_METHOD_CONFLICT")); }).finally(() => {
|
|
1187
|
+
if (this.#pendingRequestControllers.get(id) === controller)
|
|
1188
|
+
this.#pendingRequestControllers.delete(id);
|
|
1189
|
+
});
|
|
1190
|
+
return;
|
|
1191
|
+
}
|
|
1192
|
+
if (hasExactKeys(data, ["type", "invocation_id", "data", "failed"]) && data.type === "redevplugin.bridge.method_result" && typeof data.invocation_id === "string" && typeof data.failed === "boolean") {
|
|
1193
|
+
if (!this.#receiverInvocations.delete(data.invocation_id))
|
|
1194
|
+
return;
|
|
1195
|
+
const generation = this.frameGenerationId;
|
|
1196
|
+
try {
|
|
1197
|
+
await this.#receiverRequest("complete", { invocation_id: data.invocation_id, data: data.data, failed: data.failed });
|
|
1198
|
+
}
|
|
1199
|
+
catch (error) {
|
|
1200
|
+
const failure = toBridgeError(error, "PLUGIN_SURFACE_METHOD_CONFLICT");
|
|
1201
|
+
// A canceled invocation may finish before the next cancellation poll.
|
|
1202
|
+
// Its rejected result cannot mutate or replace the live receiver.
|
|
1203
|
+
if (failure.errorCode === "PLUGIN_SURFACE_METHOD_CONFLICT" && failure.mutationOutcome === "not_committed")
|
|
1204
|
+
return;
|
|
1205
|
+
if (generation === this.frameGenerationId && !this.#disposed)
|
|
1206
|
+
await this.#failSurface(failure);
|
|
1207
|
+
}
|
|
1208
|
+
return;
|
|
1209
|
+
}
|
|
1079
1210
|
if (isBridgeCancelMessage(data)) {
|
|
1080
1211
|
this.#pendingRequestControllers.get(data.id)?.abort();
|
|
1081
1212
|
return;
|
|
@@ -1428,6 +1559,39 @@ class PluginSurfaceHostImplementation {
|
|
|
1428
1559
|
revoke_epoch: this.bootstrap.revokeEpoch,
|
|
1429
1560
|
};
|
|
1430
1561
|
}
|
|
1562
|
+
async #receiverRequest(operation, extra = {}, signal) {
|
|
1563
|
+
const result = await this.#postMutationJSON("/_redevplugin/api/plugins/surfaces/methods", () => removeUndefined({
|
|
1564
|
+
plugin_instance_id: this.bootstrap.pluginInstanceId,
|
|
1565
|
+
surface_instance_id: this.surfaceInstanceId,
|
|
1566
|
+
bridge_channel_id: this.bridgeChannelId,
|
|
1567
|
+
plugin_gateway_token: this.#gatewayToken,
|
|
1568
|
+
receiver_id: this.#receiverID,
|
|
1569
|
+
operation, ...extra,
|
|
1570
|
+
}), signal);
|
|
1571
|
+
if (!hasExactKeys(result, result.invocation === undefined ? ["receiver_id", "cancelled"] : ["receiver_id", "cancelled", "invocation"]) || typeof result.receiver_id !== "string" || !result.receiver_id.startsWith("receiver_") || !Array.isArray(result.cancelled) || result.cancelled.length > 32 || !result.cancelled.every(id => typeof id === "string") || (result.invocation !== undefined && !isSurfaceMethodDelivery(result.invocation))) {
|
|
1572
|
+
throw new PluginBridgeError("PLUGIN_CONTRACT_MISMATCH", "Application receiver returned an invalid response");
|
|
1573
|
+
}
|
|
1574
|
+
return result;
|
|
1575
|
+
}
|
|
1576
|
+
async #pollMethods(generation, controller) {
|
|
1577
|
+
while (!controller.signal.aborted && !this.#disposed && generation === this.frameGenerationId) {
|
|
1578
|
+
const result = await this.#receiverRequest("claim", { active_invocations: [...this.#receiverInvocations] }, controller.signal);
|
|
1579
|
+
if (controller.signal.aborted || this.#disposed || generation !== this.frameGenerationId)
|
|
1580
|
+
return;
|
|
1581
|
+
for (const id of result.cancelled) {
|
|
1582
|
+
if (this.#receiverInvocations.delete(id))
|
|
1583
|
+
this.#postToApplication({ type: "redevplugin.bridge.method_cancel", invocation_id: id });
|
|
1584
|
+
}
|
|
1585
|
+
const invocation = result.invocation;
|
|
1586
|
+
if (!invocation)
|
|
1587
|
+
continue;
|
|
1588
|
+
if (this.#receiverInvocations.has(invocation.invocation_id) || this.#receiverInvocations.size >= 32) {
|
|
1589
|
+
throw new PluginBridgeError("PLUGIN_CONTRACT_MISMATCH", "Application invocation is invalid or duplicated");
|
|
1590
|
+
}
|
|
1591
|
+
this.#receiverInvocations.add(invocation.invocation_id);
|
|
1592
|
+
this.#postToApplication({ type: "redevplugin.bridge.method_invoke", invocation });
|
|
1593
|
+
}
|
|
1594
|
+
}
|
|
1431
1595
|
async #postJSON(path, body, signal) {
|
|
1432
1596
|
return this.#requestJSON(path, body, false, signal);
|
|
1433
1597
|
}
|
|
@@ -2901,3 +3065,9 @@ function toBridgeError(error, defaultCode) {
|
|
|
2901
3065
|
return new PluginBridgeError(defaultCode, error.message);
|
|
2902
3066
|
return new PluginBridgeError(defaultCode, String(error));
|
|
2903
3067
|
}
|
|
3068
|
+
function isSurfaceMethodDelivery(value) {
|
|
3069
|
+
return hasExactKeys(value, ["invocation_id", "method", "params", "deadline"]) &&
|
|
3070
|
+
typeof value.invocation_id === "string" && value.invocation_id.startsWith("invoke_") && value.invocation_id.length <= 128 &&
|
|
3071
|
+
typeof value.method === "string" && validMethod(value.method) && (value.params !== null && typeof value.params === "object" && !Array.isArray(value.params)) &&
|
|
3072
|
+
typeof value.deadline === "string" && Number.isFinite(Date.parse(value.deadline));
|
|
3073
|
+
}
|
package/dist/testing.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare function createPluginTestHarness(options?: PluginTestHarnessOptio
|
|
|
21
21
|
readonly files: import("./files.js").PluginFilesClient;
|
|
22
22
|
readonly surfaceHandle: string;
|
|
23
23
|
readonly timeoutMs: number;
|
|
24
|
+
"__#private@#methodHandlers": Map<string, import("./surface.js").PluginMethodHandler>;
|
|
25
|
+
"__#private@#methodInvocations": Map<string, AbortController>;
|
|
24
26
|
"__#private@#nextID": number;
|
|
25
27
|
"__#private@#clock": PluginBridgeClock;
|
|
26
28
|
"__#private@#port": MessagePortLike;
|
|
@@ -46,6 +48,14 @@ export declare function createPluginTestHarness(options?: PluginTestHarnessOptio
|
|
|
46
48
|
"__#private@#onMessage": (event: MessageEventLike) => void;
|
|
47
49
|
ready(): Promise<void>;
|
|
48
50
|
call<T = unknown>(method: string, params?: PluginJSONObject, options?: import("./surface.js").PluginBridgeRequestOptions): Promise<T>;
|
|
51
|
+
registerMethod(name: string, handler: import("./surface.js").PluginMethodHandler): Promise<() => Promise<void>>;
|
|
52
|
+
"__#private@#publishMethods"(): Promise<void>;
|
|
53
|
+
"__#private@#invokeRegisteredMethod"(invocation: {
|
|
54
|
+
invocation_id: string;
|
|
55
|
+
method: string;
|
|
56
|
+
params: PluginJSONObject;
|
|
57
|
+
deadline: string;
|
|
58
|
+
}): Promise<void>;
|
|
49
59
|
"__#private@#fileIO"(request: import("./files.js").PluginFileIORequest, options?: import("./surface.js").PluginBridgeRequestOptions): Promise<import("./files.js").PluginFileIOResult>;
|
|
50
60
|
"__#private@#call"<T>(method: string, params: PluginJSONObject | undefined, options: import("./surface.js").PluginBridgeRequestOptions, mutation: boolean): Promise<T>;
|
|
51
61
|
executionEvents(executionID: string, afterCursor: number, options?: import("./surface.js").PluginBridgeRequestOptions): Promise<import("./surface.js").PluginExecutionEventList>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@floegence/redevplugin-ui",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dist"
|
|
37
37
|
],
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@floegence/redevplugin-contracts": "3.
|
|
39
|
+
"@floegence/redevplugin-contracts": "3.7.0",
|
|
40
40
|
"@noble/hashes": "2.4.0"
|
|
41
41
|
},
|
|
42
42
|
"publishConfig": {
|