@floegence/redevplugin-contracts 0.7.0 → 0.7.2

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.
@@ -1,9 +1,9 @@
1
1
  export declare const generatedContractArtifacts: readonly [{
2
2
  readonly id: "compatibility-manifest-schema";
3
- readonly path: "spec/plugin/compatibility-manifest-v14.schema.json";
4
- readonly version: "compatibility-manifest-v14";
5
- readonly sha256: "67016ead2ed8b86410aafe3771d750ea2ab088479047475542ac65caa1691a7c";
6
- readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/compatibility-manifest-v14.schema.json\",\n \"title\": \"ReDevPlugin compatibility manifest v14\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schema_version\", \"package_set\", \"matrix\", \"contract_set_sha256\", \"contracts\"],\n \"properties\": {\n \"schema_version\": {\"const\": \"redevplugin.compatibility.v14\"},\n \"package_set\": {\"$ref\": \"platform-package-set-v1.schema.json\"},\n \"matrix\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"plugin_ui_protocol_version\", \"supported_plugin_ui_protocol_versions\", \"plugin_ui_transport_mappings\",\n \"plugin_host_protocol_version\", \"rust_ipc_version\", \"wasm_abi_version\",\n \"manifest_schema_version\", \"package_signature_schema_version\", \"release_metadata_schema_version\",\n \"release_root_delegation_schema_version\", \"release_source_policy_schema_version\",\n \"release_source_policy_pointer_schema_version\", \"release_revocation_schema_version\",\n \"release_revocation_pointer_schema_version\", \"release_trust_state_schema_version\",\n \"trusted_time_evidence_schema_version\", \"trusted_time_leaf_schema_version\",\n \"release_signing_ledger_schema_version\", \"release_signing_subject_schema_version\",\n \"release_signature_envelope_schema_version\", \"release_signing_ledger_receipt_schema_version\",\n \"release_signing_ledger_evidence_schema_version\", \"token_ticket_schema_version\", \"bridge_schema_version\",\n \"opaque_surface_document_schema_version\", \"opaque_surface_transport_schema_version\", \"target_classifier_version\",\n \"network_grant_schema_version\", \"resource_scope_schema_version\", \"session_scope_schema_version\",\n \"session_scope_maintenance_schema_version\", \"plugin_platform_openapi_version\",\n \"compatibility_schema_version\", \"worker_invocation_schema_version\",\n \"host_capability_contract_schema_version\", \"host_capability_pin_schema_version\",\n \"host_capability_manifest_schema_version\", \"host_capability_compatibility_schema_version\",\n \"host_capability_signature_schema_version\", \"host_capability_notices_schema_version\",\n \"error_codes_schema_version\", \"performance_contract_version\", \"performance_evidence_schema_version\",\n \"contract_registry_version\", \"platform_package_set_schema_version\",\n \"platform_package_publication_schema_version\", \"runtime_admission_schema_version\",\n \"runtime_descriptor_schema_version\", \"owner_scope_inventory_registry_version\",\n \"owner_scope_inventory_schema_version\", \"owner_scope_migration_schema_version\",\n \"owner_scope_root_recovery_schema_version\",\n \"process_containment_schema_version\", \"runtime_exec_journal_schema_version\",\n \"quarantine_cleanup_schema_version\"\n ],\n \"properties\": {\n \"plugin_ui_protocol_version\": {\"const\": \"plugin-ui-v7\"},\n \"supported_plugin_ui_protocol_versions\": {\n \"const\": [\"plugin-ui-v7\"]\n },\n \"plugin_ui_transport_mappings\": {\n \"const\": [\n {\n \"plugin_ui_protocol_version\": \"plugin-ui-v7\",\n \"opaque_surface_transport_schema_version\": \"opaque-surface-transport-v6\",\n \"bridge_schema_version\": \"bridge-v7\"\n }\n ]\n },\n \"plugin_host_protocol_version\": {\"const\": \"plugin-host-v10\"},\n \"rust_ipc_version\": {\"const\": \"rust-ipc-v6\"},\n \"wasm_abi_version\": {\"const\": \"redevplugin-wasm-worker-v2\"},\n \"manifest_schema_version\": {\"const\": \"manifest-v8\"},\n \"package_signature_schema_version\": {\"const\": \"package-signature-v1\"},\n \"release_metadata_schema_version\": {\"const\": \"release-metadata-v8\"},\n \"release_root_delegation_schema_version\": {\"const\": \"release-root-delegation-v1\"},\n \"release_source_policy_schema_version\": {\"const\": \"release-source-policy-v3\"},\n \"release_source_policy_pointer_schema_version\": {\"const\": \"release-source-policy-pointer-v2\"},\n \"release_revocation_schema_version\": {\"const\": \"release-revocation-v3\"},\n \"release_revocation_pointer_schema_version\": {\"const\": \"release-revocation-pointer-v2\"},\n \"release_trust_state_schema_version\": {\"const\": \"release-trust-state-v1\"},\n \"trusted_time_evidence_schema_version\": {\"const\": \"trusted-time-evidence-v1\"},\n \"trusted_time_leaf_schema_version\": {\"const\": \"trusted-time-leaf-v1\"},\n \"release_signing_ledger_schema_version\": {\"const\": \"release-signing-ledger-v1\"},\n \"release_signing_subject_schema_version\": {\"const\": \"release-signing-subject-v1\"},\n \"release_signature_envelope_schema_version\": {\"const\": \"release-signature-envelope-v1\"},\n \"release_signing_ledger_receipt_schema_version\": {\"const\": \"release-signing-ledger-receipt-v1\"},\n \"release_signing_ledger_evidence_schema_version\": {\"const\": \"release-signing-ledger-evidence-v1\"},\n \"token_ticket_schema_version\": {\"const\": \"token-ticket-v4\"},\n \"bridge_schema_version\": {\"const\": \"bridge-v7\"},\n \"opaque_surface_document_schema_version\": {\"const\": \"opaque-surface-document-v3\"},\n \"opaque_surface_transport_schema_version\": {\"const\": \"opaque-surface-transport-v6\"},\n \"target_classifier_version\": {\"const\": \"target-classifier-v2\"},\n \"network_grant_schema_version\": {\"const\": \"network-grant-v2\"},\n \"resource_scope_schema_version\": {\"const\": \"resource-scope-v1\"},\n \"session_scope_schema_version\": {\"const\": \"session-scope-v1\"},\n \"session_scope_maintenance_schema_version\": {\"const\": \"session-scope-maintenance-v1\"},\n \"plugin_platform_openapi_version\": {\"const\": \"plugin-platform-v12\"},\n \"compatibility_schema_version\": {\"const\": \"compatibility-manifest-v14\"},\n \"worker_invocation_schema_version\": {\"const\": \"worker-invocation-v3\"},\n \"host_capability_contract_schema_version\": {\"const\": \"host-capability-contract-v1\"},\n \"host_capability_pin_schema_version\": {\"const\": \"host-capability-pin-v1\"},\n \"host_capability_manifest_schema_version\": {\"const\": \"host-capability-manifest-v1\"},\n \"host_capability_compatibility_schema_version\": {\"const\": \"host-capability-compatibility-v1\"},\n \"host_capability_signature_schema_version\": {\"const\": \"host-capability-signature-v1\"},\n \"host_capability_notices_schema_version\": {\"const\": \"host-capability-notices-v1\"},\n \"error_codes_schema_version\": {\"const\": \"error-codes-v7\"},\n \"performance_contract_version\": {\"const\": \"performance-contract-v4\"},\n \"performance_evidence_schema_version\": {\"const\": \"performance-evidence-v4\"},\n \"contract_registry_version\": {\"const\": \"contract-registry-v2\"},\n \"platform_package_set_schema_version\": {\"const\": \"platform-package-set-v1\"},\n \"platform_package_publication_schema_version\": {\"const\": \"platform-package-publication-v1\"},\n \"runtime_admission_schema_version\": {\"const\": \"runtime-admission-v1\"},\n \"runtime_descriptor_schema_version\": {\"const\": \"runtime-descriptor-v2\"},\n \"owner_scope_inventory_registry_version\": {\"const\": \"owner-scope-inventory-registry-v1\"},\n \"owner_scope_inventory_schema_version\": {\"const\": \"owner-scope-inventory-v1\"},\n \"owner_scope_migration_schema_version\": {\"const\": \"owner-scope-migration-v1\"},\n \"owner_scope_root_recovery_schema_version\": {\"const\": \"owner-scope-root-recovery-v1\"},\n \"process_containment_schema_version\": {\"const\": \"process-containment-v1\"},\n \"runtime_exec_journal_schema_version\": {\"const\": \"runtime-exec-journal-v1\"},\n \"quarantine_cleanup_schema_version\": {\"const\": \"quarantine-cleanup-v1\"}\n }\n },\n \"contract_set_sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n \"contracts\": {\n \"type\": \"array\", \"minItems\": 1, \"maxItems\": 256, \"uniqueItems\": true,\n \"items\": {\"$ref\": \"#/$defs/contract\"}\n }\n },\n \"$defs\": {\n \"contract\": {\n \"type\": \"object\", \"additionalProperties\": false,\n \"required\": [\"id\", \"path\", \"version\", \"sha256\"],\n \"properties\": {\n \"id\": {\"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9-]+$\"},\n \"path\": {\"type\": \"string\", \"pattern\": \"^spec/(openapi|plugin)/[A-Za-z0-9._/-]+$\"},\n \"version\": {\"type\": \"string\", \"minLength\": 1},\n \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n }\n }\n }\n}\n";
3
+ readonly path: "spec/plugin/compatibility-manifest-v15.schema.json";
4
+ readonly version: "compatibility-manifest-v15";
5
+ readonly sha256: "921beeaff20abd3f67d73bd695f27459f453b014730cefb22864c015837c239a";
6
+ readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/compatibility-manifest-v15.schema.json\",\n \"title\": \"ReDevPlugin compatibility manifest v15\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schema_version\", \"package_set\", \"matrix\", \"contract_set_sha256\", \"contracts\"],\n \"properties\": {\n \"schema_version\": {\"const\": \"redevplugin.compatibility.v15\"},\n \"package_set\": {\"$ref\": \"platform-package-set-v1.schema.json\"},\n \"matrix\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"plugin_ui_protocol_version\", \"supported_plugin_ui_protocol_versions\", \"plugin_ui_transport_mappings\",\n \"plugin_host_protocol_version\", \"rust_ipc_version\", \"wasm_abi_version\",\n \"manifest_schema_version\", \"package_signature_schema_version\", \"release_metadata_schema_version\",\n \"release_root_delegation_schema_version\", \"release_source_policy_schema_version\",\n \"release_source_policy_pointer_schema_version\", \"release_revocation_schema_version\",\n \"release_revocation_pointer_schema_version\", \"release_trust_state_schema_version\",\n \"trusted_time_evidence_schema_version\", \"trusted_time_leaf_schema_version\",\n \"release_signing_ledger_schema_version\", \"release_signing_subject_schema_version\",\n \"release_signature_envelope_schema_version\", \"release_signing_ledger_receipt_schema_version\",\n \"release_signing_ledger_evidence_schema_version\", \"token_ticket_schema_version\", \"bridge_schema_version\",\n \"opaque_surface_document_schema_version\", \"opaque_surface_transport_schema_version\", \"target_classifier_version\",\n \"network_grant_schema_version\", \"resource_scope_schema_version\", \"session_scope_schema_version\",\n \"session_scope_maintenance_schema_version\", \"plugin_platform_openapi_version\",\n \"compatibility_schema_version\", \"worker_invocation_schema_version\",\n \"host_capability_contract_schema_version\", \"host_capability_pin_schema_version\",\n \"host_capability_manifest_schema_version\", \"host_capability_compatibility_schema_version\",\n \"host_capability_signature_schema_version\", \"host_capability_notices_schema_version\",\n \"error_codes_schema_version\", \"performance_contract_version\", \"performance_evidence_schema_version\",\n \"contract_registry_version\", \"platform_package_set_schema_version\",\n \"platform_package_publication_schema_version\", \"runtime_admission_schema_version\",\n \"runtime_descriptor_schema_version\", \"owner_scope_inventory_registry_version\",\n \"owner_scope_inventory_schema_version\", \"owner_scope_migration_schema_version\",\n \"owner_scope_root_recovery_schema_version\",\n \"process_containment_schema_version\", \"runtime_exec_journal_schema_version\",\n \"quarantine_cleanup_schema_version\"\n ],\n \"properties\": {\n \"plugin_ui_protocol_version\": {\"const\": \"plugin-ui-v7\"},\n \"supported_plugin_ui_protocol_versions\": {\n \"const\": [\"plugin-ui-v7\"]\n },\n \"plugin_ui_transport_mappings\": {\n \"const\": [\n {\n \"plugin_ui_protocol_version\": \"plugin-ui-v7\",\n \"opaque_surface_transport_schema_version\": \"opaque-surface-transport-v6\",\n \"bridge_schema_version\": \"bridge-v7\"\n }\n ]\n },\n \"plugin_host_protocol_version\": {\"const\": \"plugin-host-v11\"},\n \"rust_ipc_version\": {\"const\": \"rust-ipc-v6\"},\n \"wasm_abi_version\": {\"const\": \"redevplugin-wasm-worker-v2\"},\n \"manifest_schema_version\": {\"const\": \"manifest-v8\"},\n \"package_signature_schema_version\": {\"const\": \"package-signature-v1\"},\n \"release_metadata_schema_version\": {\"const\": \"release-metadata-v8\"},\n \"release_root_delegation_schema_version\": {\"const\": \"release-root-delegation-v1\"},\n \"release_source_policy_schema_version\": {\"const\": \"release-source-policy-v3\"},\n \"release_source_policy_pointer_schema_version\": {\"const\": \"release-source-policy-pointer-v2\"},\n \"release_revocation_schema_version\": {\"const\": \"release-revocation-v3\"},\n \"release_revocation_pointer_schema_version\": {\"const\": \"release-revocation-pointer-v2\"},\n \"release_trust_state_schema_version\": {\"const\": \"release-trust-state-v1\"},\n \"trusted_time_evidence_schema_version\": {\"const\": \"trusted-time-evidence-v1\"},\n \"trusted_time_leaf_schema_version\": {\"const\": \"trusted-time-leaf-v1\"},\n \"release_signing_ledger_schema_version\": {\"const\": \"release-signing-ledger-v1\"},\n \"release_signing_subject_schema_version\": {\"const\": \"release-signing-subject-v1\"},\n \"release_signature_envelope_schema_version\": {\"const\": \"release-signature-envelope-v1\"},\n \"release_signing_ledger_receipt_schema_version\": {\"const\": \"release-signing-ledger-receipt-v1\"},\n \"release_signing_ledger_evidence_schema_version\": {\"const\": \"release-signing-ledger-evidence-v1\"},\n \"token_ticket_schema_version\": {\"const\": \"token-ticket-v4\"},\n \"bridge_schema_version\": {\"const\": \"bridge-v7\"},\n \"opaque_surface_document_schema_version\": {\"const\": \"opaque-surface-document-v3\"},\n \"opaque_surface_transport_schema_version\": {\"const\": \"opaque-surface-transport-v6\"},\n \"target_classifier_version\": {\"const\": \"target-classifier-v2\"},\n \"network_grant_schema_version\": {\"const\": \"network-grant-v2\"},\n \"resource_scope_schema_version\": {\"const\": \"resource-scope-v1\"},\n \"session_scope_schema_version\": {\"const\": \"session-scope-v1\"},\n \"session_scope_maintenance_schema_version\": {\"const\": \"session-scope-maintenance-v1\"},\n \"plugin_platform_openapi_version\": {\"const\": \"plugin-platform-v13\"},\n \"compatibility_schema_version\": {\"const\": \"compatibility-manifest-v15\"},\n \"worker_invocation_schema_version\": {\"const\": \"worker-invocation-v3\"},\n \"host_capability_contract_schema_version\": {\"const\": \"host-capability-contract-v1\"},\n \"host_capability_pin_schema_version\": {\"const\": \"host-capability-pin-v1\"},\n \"host_capability_manifest_schema_version\": {\"const\": \"host-capability-manifest-v1\"},\n \"host_capability_compatibility_schema_version\": {\"const\": \"host-capability-compatibility-v1\"},\n \"host_capability_signature_schema_version\": {\"const\": \"host-capability-signature-v1\"},\n \"host_capability_notices_schema_version\": {\"const\": \"host-capability-notices-v1\"},\n \"error_codes_schema_version\": {\"const\": \"error-codes-v8\"},\n \"performance_contract_version\": {\"const\": \"performance-contract-v4\"},\n \"performance_evidence_schema_version\": {\"const\": \"performance-evidence-v4\"},\n \"contract_registry_version\": {\"const\": \"contract-registry-v2\"},\n \"platform_package_set_schema_version\": {\"const\": \"platform-package-set-v1\"},\n \"platform_package_publication_schema_version\": {\"const\": \"platform-package-publication-v1\"},\n \"runtime_admission_schema_version\": {\"const\": \"runtime-admission-v1\"},\n \"runtime_descriptor_schema_version\": {\"const\": \"runtime-descriptor-v2\"},\n \"owner_scope_inventory_registry_version\": {\"const\": \"owner-scope-inventory-registry-v1\"},\n \"owner_scope_inventory_schema_version\": {\"const\": \"owner-scope-inventory-v1\"},\n \"owner_scope_migration_schema_version\": {\"const\": \"owner-scope-migration-v1\"},\n \"owner_scope_root_recovery_schema_version\": {\"const\": \"owner-scope-root-recovery-v1\"},\n \"process_containment_schema_version\": {\"const\": \"process-containment-v1\"},\n \"runtime_exec_journal_schema_version\": {\"const\": \"runtime-exec-journal-v1\"},\n \"quarantine_cleanup_schema_version\": {\"const\": \"quarantine-cleanup-v1\"}\n }\n },\n \"contract_set_sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n \"contracts\": {\n \"type\": \"array\", \"minItems\": 1, \"maxItems\": 256, \"uniqueItems\": true,\n \"items\": {\"$ref\": \"#/$defs/contract\"}\n }\n },\n \"$defs\": {\n \"contract\": {\n \"type\": \"object\", \"additionalProperties\": false,\n \"required\": [\"id\", \"path\", \"version\", \"sha256\"],\n \"properties\": {\n \"id\": {\"type\": \"string\", \"pattern\": \"^[a-z][a-z0-9-]+$\"},\n \"path\": {\"type\": \"string\", \"pattern\": \"^spec/(openapi|plugin)/[A-Za-z0-9._/-]+$\"},\n \"version\": {\"type\": \"string\", \"minLength\": 1},\n \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n }\n }\n }\n}\n";
7
7
  }, {
8
8
  readonly id: "contract-registry-schema";
9
9
  readonly path: "spec/plugin/contract-registry-v2.schema.json";
@@ -12,10 +12,10 @@ export declare const generatedContractArtifacts: readonly [{
12
12
  readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/contract-registry-v2.schema.json\",\n \"title\": \"ReDevPlugin Contract Registry V2\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schema_version\", \"registry_version\", \"artifacts\"],\n \"properties\": {\n \"schema_version\": {\"const\": \"redevplugin.contract_registry.v2\"},\n \"registry_version\": {\"const\": \"contract-registry-v2\"},\n \"artifacts\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"maxItems\": 256,\n \"uniqueItems\": true,\n \"items\": {\"$ref\": \"#/$defs/artifact\"}\n }\n },\n \"$defs\": {\n \"artifact\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"path\", \"version\", \"sha256\"],\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[a-z][a-z0-9-]+$\",\n \"not\": {\"const\": \"contract-registry\"}\n },\n \"path\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 1024,\n \"pattern\": \"^spec/(openapi|plugin)/[A-Za-z0-9][A-Za-z0-9._-]*(/[A-Za-z0-9][A-Za-z0-9._-]*)*$\",\n \"not\": {\"enum\": [\"spec/plugin/contract-registry-v2.json\", \"spec/plugin/platform-package-set-v1.json\"]}\n },\n \"version\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128, \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\"},\n \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"}\n }\n }\n }\n}\n";
13
13
  }, {
14
14
  readonly id: "error-codes-schema";
15
- readonly path: "spec/plugin/error-codes-v7.schema.json";
16
- readonly version: "error-codes-v7";
17
- readonly sha256: "4e7cac510a6036f90cae8f58ff8c3b785b3a2d3933875f2f69bef1c41de3d26c";
18
- readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/error-codes-v7.schema.json\",\n \"title\": \"ReDevPlugin stable error codes v7\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"$defs\": {\n \"platform_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\"\n ]\n },\n \"bridge_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n ]\n },\n \"typescript_client_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\",\n \"PLUGIN_PLATFORM_REQUEST_FAILED\",\n \"PLUGIN_STREAM_FAILED\"\n ]\n },\n \"rust_ipc_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"ARTIFACT_HANDLE_FAILED\",\n \"HANDLE_GRANT_VALIDATION_FAILED\",\n \"STORAGE_FILE_FAILED\",\n \"STORAGE_KV_FAILED\",\n \"STORAGE_SQLITE_FAILED\",\n \"NETWORK_GRANT_FAILED\",\n \"NETWORK_EXECUTE_FAILED\",\n \"NETWORK_STREAM_STORE_UNAVAILABLE\",\n \"NETWORK_STREAM_FAILED\",\n \"NETWORK_STREAM_BACKPRESSURE\",\n \"NETWORK_STREAM_INVALID\",\n \"NETWORK_STREAM_NOT_FOUND\",\n \"NETWORK_STREAM_CLOSED\",\n \"WORKER_INVOCATION_INVALID\",\n \"RUNTIME_CAPABILITY_REVOKED\",\n \"RUNTIME_CONTROL_CHANNEL_STALE\",\n \"RUNTIME_LEASE_INVALID\",\n \"RUNTIME_LEASE_SIGNATURE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"WASM_WORKER_INVALID\",\n \"WASM_WORKER_FAILED\",\n \"WASM_HOSTCALL_FAILED\",\n \"RUNTIME_CAPACITY_EXCEEDED\",\n \"RUNTIME_INVOCATION_CANCELED\",\n \"PLUGIN_SESSION_REVOKED\",\n \"SESSION_REVOKE_SEQUENCE_STALE\",\n \"SESSION_REVOKE_DRAIN_TIMEOUT\",\n \"UNSUPPORTED_FRAME\"\n ]\n },\n \"runtime_process_failure_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"RUNTIME_PROCESS_FAILED\",\n \"RUNTIME_PROCESS_EXIT_UNEXPECTED\",\n \"RUNTIME_PROCESS_EXIT_UNRECOGNIZED\",\n \"RUNTIME_PROCESS_SIGNALLED\",\n \"IPC_WRITER_CAPACITY_OVERFLOW\",\n \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\",\n \"IPC_WRITER_START_FAILED\",\n \"IPC_WRITER_CLOSED\",\n \"IPC_WRITER_BATCH_SIZE_OVERFLOW\",\n \"IPC_WRITER_WRITE_FAILED\",\n \"IPC_WRITER_FLUSH_FAILED\",\n \"IPC_WRITER_PANICKED\"\n ]\n },\n \"runtime_process_exit_failure\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 1 },\n \"code\": { \"const\": \"RUNTIME_PROCESS_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 80 },\n \"code\": { \"const\": \"IPC_WRITER_CAPACITY_OVERFLOW\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 81 },\n \"code\": { \"const\": \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 82 },\n \"code\": { \"const\": \"IPC_WRITER_START_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 83 },\n \"code\": { \"const\": \"IPC_WRITER_CLOSED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 84 },\n \"code\": { \"const\": \"IPC_WRITER_BATCH_SIZE_OVERFLOW\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 85 },\n \"code\": { \"const\": \"IPC_WRITER_WRITE_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 86 },\n \"code\": { \"const\": \"IPC_WRITER_FLUSH_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 87 },\n \"code\": { \"const\": \"IPC_WRITER_PANICKED\" }\n }\n }\n ]\n }\n }\n}\n";
15
+ readonly path: "spec/plugin/error-codes-v8.schema.json";
16
+ readonly version: "error-codes-v8";
17
+ readonly sha256: "454e3c8b46e20bc524080ca1aa91dcf2ecdfe0a90cc33b5b328e87356d07e7e3";
18
+ readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/error-codes-v8.schema.json\",\n \"title\": \"ReDevPlugin stable error codes v8\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"$defs\": {\n \"platform_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_RELEASE_NETWORK\",\n \"PLUGIN_RELEASE_TIMEOUT\",\n \"PLUGIN_RELEASE_ASSET_MISSING\",\n \"PLUGIN_RELEASE_ASSET_INTEGRITY\",\n \"PLUGIN_INSTALL_INTERRUPTED\",\n \"PLUGIN_INSTALL_STATE_CONFLICT\",\n \"PLUGIN_INTERNAL_FAILURE\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\"\n ]\n },\n \"bridge_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_RELEASE_NETWORK\",\n \"PLUGIN_RELEASE_TIMEOUT\",\n \"PLUGIN_RELEASE_ASSET_MISSING\",\n \"PLUGIN_RELEASE_ASSET_INTEGRITY\",\n \"PLUGIN_INSTALL_INTERRUPTED\",\n \"PLUGIN_INSTALL_STATE_CONFLICT\",\n \"PLUGIN_INTERNAL_FAILURE\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n ]\n },\n \"typescript_client_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_RELEASE_NETWORK\",\n \"PLUGIN_RELEASE_TIMEOUT\",\n \"PLUGIN_RELEASE_ASSET_MISSING\",\n \"PLUGIN_RELEASE_ASSET_INTEGRITY\",\n \"PLUGIN_INSTALL_INTERRUPTED\",\n \"PLUGIN_INSTALL_STATE_CONFLICT\",\n \"PLUGIN_INTERNAL_FAILURE\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\",\n \"PLUGIN_PLATFORM_REQUEST_FAILED\",\n \"PLUGIN_STREAM_FAILED\"\n ]\n },\n \"rust_ipc_error_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"ARTIFACT_HANDLE_FAILED\",\n \"HANDLE_GRANT_VALIDATION_FAILED\",\n \"STORAGE_FILE_FAILED\",\n \"STORAGE_KV_FAILED\",\n \"STORAGE_SQLITE_FAILED\",\n \"NETWORK_GRANT_FAILED\",\n \"NETWORK_EXECUTE_FAILED\",\n \"NETWORK_STREAM_STORE_UNAVAILABLE\",\n \"NETWORK_STREAM_FAILED\",\n \"NETWORK_STREAM_BACKPRESSURE\",\n \"NETWORK_STREAM_INVALID\",\n \"NETWORK_STREAM_NOT_FOUND\",\n \"NETWORK_STREAM_CLOSED\",\n \"WORKER_INVOCATION_INVALID\",\n \"RUNTIME_CAPABILITY_REVOKED\",\n \"RUNTIME_CONTROL_CHANNEL_STALE\",\n \"RUNTIME_LEASE_INVALID\",\n \"RUNTIME_LEASE_SIGNATURE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"WASM_WORKER_INVALID\",\n \"WASM_WORKER_FAILED\",\n \"WASM_HOSTCALL_FAILED\",\n \"RUNTIME_CAPACITY_EXCEEDED\",\n \"RUNTIME_INVOCATION_CANCELED\",\n \"PLUGIN_SESSION_REVOKED\",\n \"SESSION_REVOKE_SEQUENCE_STALE\",\n \"SESSION_REVOKE_DRAIN_TIMEOUT\",\n \"UNSUPPORTED_FRAME\"\n ]\n },\n \"runtime_process_failure_code\": {\n \"type\": \"string\",\n \"enum\": [\n \"RUNTIME_PROCESS_FAILED\",\n \"RUNTIME_PROCESS_EXIT_UNEXPECTED\",\n \"RUNTIME_PROCESS_EXIT_UNRECOGNIZED\",\n \"RUNTIME_PROCESS_SIGNALLED\",\n \"IPC_WRITER_CAPACITY_OVERFLOW\",\n \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\",\n \"IPC_WRITER_START_FAILED\",\n \"IPC_WRITER_CLOSED\",\n \"IPC_WRITER_BATCH_SIZE_OVERFLOW\",\n \"IPC_WRITER_WRITE_FAILED\",\n \"IPC_WRITER_FLUSH_FAILED\",\n \"IPC_WRITER_PANICKED\"\n ]\n },\n \"runtime_process_exit_failure\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 1 },\n \"code\": { \"const\": \"RUNTIME_PROCESS_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 80 },\n \"code\": { \"const\": \"IPC_WRITER_CAPACITY_OVERFLOW\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 81 },\n \"code\": { \"const\": \"IPC_WRITER_CAPACITY_LIMIT_EXCEEDED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 82 },\n \"code\": { \"const\": \"IPC_WRITER_START_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 83 },\n \"code\": { \"const\": \"IPC_WRITER_CLOSED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 84 },\n \"code\": { \"const\": \"IPC_WRITER_BATCH_SIZE_OVERFLOW\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 85 },\n \"code\": { \"const\": \"IPC_WRITER_WRITE_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 86 },\n \"code\": { \"const\": \"IPC_WRITER_FLUSH_FAILED\" }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\"exit_code\", \"code\"],\n \"additionalProperties\": false,\n \"properties\": {\n \"exit_code\": { \"const\": 87 },\n \"code\": { \"const\": \"IPC_WRITER_PANICKED\" }\n }\n }\n ]\n }\n }\n}\n";
19
19
  }, {
20
20
  readonly id: "external-signer-request-schema";
21
21
  readonly path: "spec/plugin/external-signer-request-v1.schema.json";
@@ -86,8 +86,8 @@ export declare const generatedContractArtifacts: readonly [{
86
86
  readonly id: "iframe-bridge-schema";
87
87
  readonly path: "spec/plugin/bridge-v7.schema.json";
88
88
  readonly version: "bridge-v7";
89
- readonly sha256: "f4b5f04870b58e8e2363aaba98b273adccef3a3e9ac1eb1a2dbbc3fb4c71b300";
90
- readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/bridge-v7.schema.json\",\n \"title\": \"ReDevPlugin plugin worker bridge v7\",\n \"description\": \"Plugin-visible MessagePort contract. Plugin identity, owner/session bindings, gateway tokens, asset sessions, stream tickets, and confirmation tokens remain in the trusted parent and are intentionally absent from worker-visible messages.\",\n \"x-redevplugin-render-policy\": {\n \"max_message_bytes\": 524288,\n \"max_in_flight_requests\": 256,\n \"max_renders_per_second\": 60,\n \"max_render_depth\": 32,\n \"max_render_nodes\": 4096,\n \"max_patch_operations\": 1024,\n \"max_attributes_per_element\": 64,\n \"max_text_length\": 65536,\n \"max_attribute_value_length\": 4096,\n \"max_form_fields\": 128,\n \"max_canvas_count\": 4,\n \"max_canvas_dimension\": 4096,\n \"max_canvas_total_pixels\": 16777216,\n \"max_canvas_pointer_events_per_second\": 120,\n \"max_image_count\": 32,\n \"max_image_dimension\": 4096,\n \"max_image_total_pixels\": 33554432,\n \"worker_heartbeat_interval_ms\": 10000,\n \"worker_heartbeat_timeout_ms\": 5000,\n \"global_attributes\": [\n \"id\",\n \"class\",\n \"role\",\n \"title\",\n \"hidden\",\n \"tabindex\",\n \"autofocus\",\n \"lang\",\n \"dir\",\n \"data-redevplugin-action\",\n \"data-redevplugin-escape-action\",\n \"data-redevplugin-asset-binding\",\n \"data-redevplugin-asset-attr\"\n ],\n \"tag_attributes\": {\n \"button\": [\"type\", \"name\", \"value\", \"disabled\", \"aria-pressed\", \"aria-expanded\"],\n \"input\": [\"type\", \"name\", \"value\", \"checked\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"min\", \"max\", \"step\", \"autocomplete\"],\n \"textarea\": [\"name\", \"value\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"rows\", \"cols\", \"maxlength\"],\n \"select\": [\"name\", \"disabled\", \"required\", \"multiple\", \"size\"],\n \"option\": [\"value\", \"selected\", \"disabled\", \"label\"],\n \"label\": [\"for\"],\n \"form\": [\"name\", \"autocomplete\"],\n \"th\": [\"scope\", \"colspan\", \"rowspan\"],\n \"td\": [\"colspan\", \"rowspan\"],\n \"progress\": [\"value\", \"max\"],\n \"meter\": [\"value\", \"min\", \"max\", \"low\", \"high\", \"optimum\"],\n \"img\": [\"alt\", \"width\", \"height\", \"loading\", \"decoding\"],\n \"audio\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\"],\n \"video\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\", \"width\", \"height\", \"playsinline\"],\n \"source\": [\"type\", \"media\"],\n \"track\": [\"kind\", \"srclang\", \"label\", \"default\"],\n \"time\": [\"datetime\"],\n \"canvas\": [\"width\", \"height\", \"data-redevplugin-canvas\"]\n },\n \"safe_input_types\": [\"text\", \"search\", \"number\", \"checkbox\", \"radio\", \"button\", \"submit\", \"reset\"]\n },\n \"oneOf\": [\n { \"$ref\": \"#/$defs/call\" },\n { \"$ref\": \"#/$defs/stream_read\" },\n { \"$ref\": \"#/$defs/stream_ack\" },\n { \"$ref\": \"#/$defs/operation_cancel\" },\n { \"$ref\": \"#/$defs/operation_snapshot\" },\n { \"$ref\": \"#/$defs/mount\" },\n { \"$ref\": \"#/$defs/patch\" },\n { \"$ref\": \"#/$defs/canvas_open\" },\n { \"$ref\": \"#/$defs/canvas_accessibility\" },\n { \"$ref\": \"#/$defs/canvas_ready\" },\n { \"$ref\": \"#/$defs/canvas_input\" },\n { \"$ref\": \"#/$defs/image_open\" },\n { \"$ref\": \"#/$defs/image_ready\" },\n { \"$ref\": \"#/$defs/cancel\" },\n { \"$ref\": \"#/$defs/action\" },\n { \"$ref\": \"#/$defs/response\" },\n { \"$ref\": \"#/$defs/lifecycle\" },\n { \"$ref\": \"#/$defs/lifecycle_ack\" },\n { \"$ref\": \"#/$defs/context\" }\n ],\n \"$defs\": {\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"context\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.context\" },\n \"context\": { \"$ref\": \"https://schemas.redevplugin.dev/plugin/opaque-surface-transport-v6.schema.json#/$defs/context_snapshot\" }\n }\n },\n \"opaque_handle\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{7,159}$\"\n },\n \"capability_business_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"capability_id\",\n \"capability_version\",\n \"detail_schema_sha256\",\n \"business_error_code\"\n ],\n \"properties\": {\n \"capability_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n \"capability_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"detail_schema_sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n \"business_error_code\": { \"type\": \"string\", \"pattern\": \"^[A-Z][A-Z0-9_]*$\" },\n \"business_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n }\n },\n \"worker_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"worker_error_code\", \"worker_error_message\", \"worker_error_origin\"],\n \"properties\": {\n \"worker_error_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Z][A-Z0-9_]*$\"\n },\n \"worker_error_message\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4096\n },\n \"worker_error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n }\n },\n \"request_id\": {\n \"type\": \"string\",\n \"pattern\": \"^(rpc|stream|stream_ack|render|operation|canvas|asset)_[1-9][0-9]{0,15}$\"\n },\n \"call\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"request\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.call\" },\n \"request\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"method\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"method\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 256,\n \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n },\n \"params\": {\n \"type\": \"object\",\n \"description\": \"Optional JSON object. Arrays are rejected so worker calls match the Host RPC map contract.\"\n }\n }\n }\n }\n },\n \"stream_read\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"stream_handle\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.stream.read\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" }\n }\n },\n \"stream_ack\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"stream_handle\", \"delivery_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.stream.ack\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" },\n \"delivery_id\": { \"type\": \"string\", \"pattern\": \"^delivery_[A-Za-z0-9_-]{8,128}$\" }\n }\n },\n \"operation_cancel\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"operation_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.operation.cancel\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"operation_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n \"reason\": { \"type\": \"string\", \"maxLength\": 256 }\n }\n },\n \"operation_snapshot\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"operation_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.operation.snapshot\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"operation_id\": { \"$ref\": \"#/$defs/opaque_handle\" }\n }\n },\n \"mount\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"revision\", \"tree\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.mount\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"revision\": { \"const\": 1 },\n \"tree\": { \"$ref\": \"#/$defs/element_vnode\" }\n }\n },\n \"patch\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"base_revision\", \"revision\", \"operations\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.patch\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"base_revision\": { \"type\": \"integer\", \"minimum\": 1 },\n \"revision\": { \"type\": \"integer\", \"minimum\": 2 },\n \"operations\": {\n \"type\": \"array\",\n \"maxItems\": 1024,\n \"items\": { \"$ref\": \"#/$defs/patch_operation\" }\n }\n }\n },\n \"cancel\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.cancel\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" }\n }\n },\n \"vnode\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/text_vnode\" },\n { \"$ref\": \"#/$defs/element_vnode\" }\n ]\n },\n \"text_vnode\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"key\", \"text\"],\n \"properties\": {\n \"type\": { \"const\": \"text\" },\n \"key\": { \"$ref\": \"#/$defs/text_identifier\" },\n \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n },\n \"element_vnode\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"key\", \"tag\"],\n \"properties\": {\n \"type\": { \"const\": \"element\" },\n \"key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"tag\": {\n \"enum\": [\n \"main\", \"section\", \"header\", \"footer\", \"nav\", \"aside\", \"article\", \"div\", \"span\", \"p\",\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"button\", \"input\", \"textarea\", \"select\", \"option\",\n \"label\", \"fieldset\", \"legend\", \"form\", \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\", \"table\",\n \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\", \"caption\", \"details\", \"summary\", \"pre\", \"code\",\n \"kbd\", \"samp\", \"strong\", \"em\", \"small\", \"mark\", \"time\", \"progress\", \"meter\", \"img\", \"picture\",\n \"source\", \"audio\", \"video\", \"track\", \"canvas\"\n ]\n },\n \"attributes\": {\n \"type\": \"object\",\n \"maxProperties\": 64,\n \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] }\n },\n \"children\": {\n \"type\": \"array\",\n \"maxItems\": 4096,\n \"items\": { \"$ref\": \"#/$defs/vnode\" }\n }\n }\n },\n \"patch_operation\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"text\"],\n \"properties\": {\n \"type\": { \"const\": \"set_text\" },\n \"target_key\": { \"$ref\": \"#/$defs/text_identifier\" },\n \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"set\", \"remove\"],\n \"properties\": {\n \"type\": { \"const\": \"patch_attributes\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"set\": { \"type\": \"object\", \"maxProperties\": 64, \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] } },\n \"remove\": { \"type\": \"array\", \"maxItems\": 64, \"uniqueItems\": true, \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"edit_revision\"],\n \"properties\": {\n \"type\": { \"const\": \"patch_control\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n \"value\": { \"type\": [\"string\", \"null\"], \"maxLength\": 65536 },\n \"checked\": { \"type\": [\"boolean\", \"null\"] }\n },\n \"anyOf\": [{ \"required\": [\"value\"] }, { \"required\": [\"checked\"] }]\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"parent_key\", \"before_key\", \"node\"],\n \"properties\": {\n \"type\": { \"const\": \"insert_child\" },\n \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"before_key\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/ui_identifier\" },\n { \"type\": \"null\" }\n ]\n },\n \"node\": { \"$ref\": \"#/$defs/vnode\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\"],\n \"properties\": {\n \"type\": { \"const\": \"remove_child\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"parent_key\", \"before_key\"],\n \"properties\": {\n \"type\": { \"const\": \"move_child\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"before_key\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/ui_identifier\" },\n { \"type\": \"null\" }\n ]\n }\n }\n }\n ]\n },\n \"canvas_open\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.open\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n \"canvas_accessibility\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\", \"label\", \"description\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.accessibility\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"label\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 256 },\n \"description\": { \"type\": \"string\", \"maxLength\": 1024 }\n }\n },\n \"canvas_ready\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\", \"canvas\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.ready\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"canvas\": {\n \"description\": \"One transferred OffscreenCanvas. The runtime validates the structured-clone object outside JSON Schema.\"\n },\n \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n },\n \"x-redevplugin-transfer\": [\"canvas\"]\n },\n \"canvas_input\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"canvas_id\", \"event\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.input\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"event\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\"],\n \"properties\": { \"type\": { \"enum\": [\"focus\", \"blur\"] } }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n \"properties\": {\n \"type\": { \"const\": \"resize\" },\n \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\", \"code\", \"key\", \"repeat\", \"alt_key\", \"ctrl_key\", \"meta_key\", \"shift_key\"],\n \"properties\": {\n \"type\": { \"const\": \"key\" },\n \"event\": { \"enum\": [\"keydown\", \"keyup\"] },\n \"code\": { \"type\": \"string\", \"maxLength\": 64 },\n \"key\": { \"type\": \"string\", \"maxLength\": 64 },\n \"repeat\": { \"type\": \"boolean\" },\n \"alt_key\": { \"type\": \"boolean\" },\n \"ctrl_key\": { \"type\": \"boolean\" },\n \"meta_key\": { \"type\": \"boolean\" },\n \"shift_key\": { \"type\": \"boolean\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\", \"pointer_id\", \"pointer_type\", \"buttons\", \"button\", \"x\", \"y\", \"pressure\"],\n \"properties\": {\n \"type\": { \"const\": \"pointer\" },\n \"event\": { \"enum\": [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] },\n \"pointer_id\": { \"type\": \"integer\", \"minimum\": 0 },\n \"pointer_type\": { \"enum\": [\"mouse\", \"pen\", \"touch\", \"unknown\"] },\n \"buttons\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 31 },\n \"button\": { \"type\": \"integer\", \"minimum\": -1, \"maximum\": 4 },\n \"x\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n \"y\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n \"pressure\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n }\n }\n ]\n }\n }\n },\n \"image_open\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"asset_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.asset.image.open\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n \"image_ready\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"asset_id\", \"image\", \"width\", \"height\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.asset.image.ready\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"image\": {\n \"description\": \"One transferred ImageBitmap decoded from Host-verified package bytes.\"\n },\n \"width\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 },\n \"height\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 }\n },\n \"x-redevplugin-transfer\": [\"image\"]\n },\n \"ui_identifier\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]*$\"\n },\n \"element_identifier\": {\n \"$ref\": \"#/$defs/ui_identifier\"\n },\n \"text_identifier\": {\n \"$ref\": \"#/$defs/ui_identifier\"\n },\n \"action\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"action\", \"event\", \"target_key\", \"edit_revision\", \"is_composing\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.action\" },\n \"action\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n },\n \"event\": { \"enum\": [\"click\", \"input\", \"change\", \"submit\", \"escape\"] },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n \"is_composing\": { \"type\": \"boolean\" },\n \"value\": { \"type\": \"string\", \"maxLength\": 65536 },\n \"checked\": { \"type\": \"boolean\" },\n \"form_data\": {\n \"type\": \"object\",\n \"maxProperties\": 128,\n \"additionalProperties\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n }\n },\n \"response\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"ok\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.response\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"ok\": { \"const\": true },\n \"data\": true\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"ok\", \"error_code\", \"error\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.response\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"ok\": { \"const\": false },\n \"error_code\": {\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n ]\n },\n \"error\": { \"type\": \"string\", \"maxLength\": 4096 },\n \"error_details\": {\n \"type\": \"object\",\n \"maxProperties\": 8,\n \"additionalProperties\": true\n },\n \"mutation_outcome\": { \"type\": \"string\", \"enum\": [\"not_committed\", \"unknown\"] }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_CAPABILITY_ERROR\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": { \"$ref\": \"#/$defs/capability_business_error_details\" }\n }\n }\n },\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_WORKER_ERROR\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": { \"$ref\": \"#/$defs/worker_error_details\" }\n }\n }\n },\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_OPERATION_RATE_LIMITED\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"retry_after_ms\"],\n \"properties\": {\n \"retry_after_ms\": { \"type\": \"integer\", \"minimum\": 500, \"maximum\": 10000 }\n }\n }\n }\n }\n }\n ]\n }\n ]\n },\n \"lifecycle\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.lifecycle\" },\n \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" },\n \"event\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"enum\": [\"ready\", \"visible\", \"hidden\", \"dispose\"] }\n }\n }\n },\n \"allOf\": [\n {\n \"if\": { \"required\": [\"quiesce_id\"] },\n \"then\": {\n \"properties\": {\n \"event\": {\n \"properties\": { \"type\": { \"const\": \"dispose\" } }\n }\n }\n }\n }\n ]\n },\n \"lifecycle_ack\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"quiesce_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.lifecycle_ack\" },\n \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" }\n }\n }\n }\n}\n";
89
+ readonly sha256: "fe8da4e5b14ac6d7c7bb3101e041246e92573c58e1c9537e8cda2c26bf175ef5";
90
+ readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/bridge-v7.schema.json\",\n \"title\": \"ReDevPlugin plugin worker bridge v7\",\n \"description\": \"Plugin-visible MessagePort contract. Plugin identity, owner/session bindings, gateway tokens, asset sessions, stream tickets, and confirmation tokens remain in the trusted parent and are intentionally absent from worker-visible messages.\",\n \"x-redevplugin-render-policy\": {\n \"max_message_bytes\": 524288,\n \"max_in_flight_requests\": 256,\n \"max_renders_per_second\": 60,\n \"max_render_depth\": 32,\n \"max_render_nodes\": 4096,\n \"max_patch_operations\": 1024,\n \"max_attributes_per_element\": 64,\n \"max_text_length\": 65536,\n \"max_attribute_value_length\": 4096,\n \"max_form_fields\": 128,\n \"max_canvas_count\": 4,\n \"max_canvas_dimension\": 4096,\n \"max_canvas_total_pixels\": 16777216,\n \"max_canvas_pointer_events_per_second\": 120,\n \"max_image_count\": 32,\n \"max_image_dimension\": 4096,\n \"max_image_total_pixels\": 33554432,\n \"worker_heartbeat_interval_ms\": 10000,\n \"worker_heartbeat_timeout_ms\": 5000,\n \"global_attributes\": [\n \"id\",\n \"class\",\n \"role\",\n \"title\",\n \"hidden\",\n \"tabindex\",\n \"autofocus\",\n \"lang\",\n \"dir\",\n \"data-redevplugin-action\",\n \"data-redevplugin-escape-action\",\n \"data-redevplugin-asset-binding\",\n \"data-redevplugin-asset-attr\"\n ],\n \"tag_attributes\": {\n \"button\": [\"type\", \"name\", \"value\", \"disabled\", \"aria-pressed\", \"aria-expanded\"],\n \"input\": [\"type\", \"name\", \"value\", \"checked\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"min\", \"max\", \"step\", \"autocomplete\"],\n \"textarea\": [\"name\", \"value\", \"disabled\", \"readonly\", \"required\", \"placeholder\", \"rows\", \"cols\", \"maxlength\"],\n \"select\": [\"name\", \"disabled\", \"required\", \"multiple\", \"size\"],\n \"option\": [\"value\", \"selected\", \"disabled\", \"label\"],\n \"label\": [\"for\"],\n \"form\": [\"name\", \"autocomplete\"],\n \"th\": [\"scope\", \"colspan\", \"rowspan\"],\n \"td\": [\"colspan\", \"rowspan\"],\n \"progress\": [\"value\", \"max\"],\n \"meter\": [\"value\", \"min\", \"max\", \"low\", \"high\", \"optimum\"],\n \"img\": [\"alt\", \"width\", \"height\", \"loading\", \"decoding\"],\n \"audio\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\"],\n \"video\": [\"controls\", \"autoplay\", \"muted\", \"loop\", \"preload\", \"width\", \"height\", \"playsinline\"],\n \"source\": [\"type\", \"media\"],\n \"track\": [\"kind\", \"srclang\", \"label\", \"default\"],\n \"time\": [\"datetime\"],\n \"canvas\": [\"width\", \"height\", \"data-redevplugin-canvas\"]\n },\n \"safe_input_types\": [\"text\", \"search\", \"number\", \"checkbox\", \"radio\", \"button\", \"submit\", \"reset\"]\n },\n \"oneOf\": [\n { \"$ref\": \"#/$defs/call\" },\n { \"$ref\": \"#/$defs/stream_read\" },\n { \"$ref\": \"#/$defs/stream_ack\" },\n { \"$ref\": \"#/$defs/operation_cancel\" },\n { \"$ref\": \"#/$defs/operation_snapshot\" },\n { \"$ref\": \"#/$defs/mount\" },\n { \"$ref\": \"#/$defs/patch\" },\n { \"$ref\": \"#/$defs/canvas_open\" },\n { \"$ref\": \"#/$defs/canvas_accessibility\" },\n { \"$ref\": \"#/$defs/canvas_ready\" },\n { \"$ref\": \"#/$defs/canvas_input\" },\n { \"$ref\": \"#/$defs/image_open\" },\n { \"$ref\": \"#/$defs/image_ready\" },\n { \"$ref\": \"#/$defs/cancel\" },\n { \"$ref\": \"#/$defs/action\" },\n { \"$ref\": \"#/$defs/response\" },\n { \"$ref\": \"#/$defs/lifecycle\" },\n { \"$ref\": \"#/$defs/lifecycle_ack\" },\n { \"$ref\": \"#/$defs/context\" }\n ],\n \"$defs\": {\n \"context\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"context\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.context\" },\n \"context\": { \"$ref\": \"https://schemas.redevplugin.dev/plugin/opaque-surface-transport-v6.schema.json#/$defs/context_snapshot\" }\n }\n },\n \"opaque_handle\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z][A-Za-z0-9_-]{7,159}$\"\n },\n \"capability_business_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\n \"capability_id\",\n \"capability_version\",\n \"detail_schema_sha256\",\n \"business_error_code\"\n ],\n \"properties\": {\n \"capability_id\": { \"type\": \"string\", \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._-]*$\" },\n \"capability_version\": {\n \"type\": \"string\",\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\\\+[0-9A-Za-z-]+(?:\\\\.[0-9A-Za-z-]+)*)?$\"\n },\n \"detail_schema_sha256\": { \"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\" },\n \"business_error_code\": { \"type\": \"string\", \"pattern\": \"^[A-Z][A-Z0-9_]*$\" },\n \"business_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n }\n },\n \"worker_error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"worker_error_code\", \"worker_error_message\", \"worker_error_origin\"],\n \"properties\": {\n \"worker_error_code\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Z][A-Z0-9_]*$\"\n },\n \"worker_error_message\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 4096\n },\n \"worker_error_origin\": { \"enum\": [\"runtime\", \"hostcall\", \"plugin\"] }\n }\n },\n \"request_id\": {\n \"type\": \"string\",\n \"pattern\": \"^(rpc|stream|stream_ack|render|operation|canvas|asset)_[1-9][0-9]{0,15}$\"\n },\n \"call\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"request\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.call\" },\n \"request\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"id\", \"method\"],\n \"properties\": {\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"method\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 256,\n \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n },\n \"params\": {\n \"type\": \"object\",\n \"description\": \"Optional JSON object. Arrays are rejected so worker calls match the Host RPC map contract.\"\n }\n }\n }\n }\n },\n \"stream_read\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"stream_handle\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.stream.read\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" }\n }\n },\n \"stream_ack\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"stream_handle\", \"delivery_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.stream.ack\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"stream_handle\": { \"$ref\": \"#/$defs/opaque_handle\" },\n \"delivery_id\": { \"type\": \"string\", \"pattern\": \"^delivery_[A-Za-z0-9_-]{8,128}$\" }\n }\n },\n \"operation_cancel\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"operation_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.operation.cancel\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"operation_id\": { \"$ref\": \"#/$defs/opaque_handle\" },\n \"reason\": { \"type\": \"string\", \"maxLength\": 256 }\n }\n },\n \"operation_snapshot\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"operation_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.operation.snapshot\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"operation_id\": { \"$ref\": \"#/$defs/opaque_handle\" }\n }\n },\n \"mount\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"revision\", \"tree\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.mount\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"revision\": { \"const\": 1 },\n \"tree\": { \"$ref\": \"#/$defs/element_vnode\" }\n }\n },\n \"patch\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"base_revision\", \"revision\", \"operations\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.patch\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"base_revision\": { \"type\": \"integer\", \"minimum\": 1 },\n \"revision\": { \"type\": \"integer\", \"minimum\": 2 },\n \"operations\": {\n \"type\": \"array\",\n \"maxItems\": 1024,\n \"items\": { \"$ref\": \"#/$defs/patch_operation\" }\n }\n }\n },\n \"cancel\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.cancel\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" }\n }\n },\n \"vnode\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/text_vnode\" },\n { \"$ref\": \"#/$defs/element_vnode\" }\n ]\n },\n \"text_vnode\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"key\", \"text\"],\n \"properties\": {\n \"type\": { \"const\": \"text\" },\n \"key\": { \"$ref\": \"#/$defs/text_identifier\" },\n \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n },\n \"element_vnode\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"key\", \"tag\"],\n \"properties\": {\n \"type\": { \"const\": \"element\" },\n \"key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"tag\": {\n \"enum\": [\n \"main\", \"section\", \"header\", \"footer\", \"nav\", \"aside\", \"article\", \"div\", \"span\", \"p\",\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"button\", \"input\", \"textarea\", \"select\", \"option\",\n \"label\", \"fieldset\", \"legend\", \"form\", \"ul\", \"ol\", \"li\", \"dl\", \"dt\", \"dd\", \"table\",\n \"thead\", \"tbody\", \"tfoot\", \"tr\", \"th\", \"td\", \"caption\", \"details\", \"summary\", \"pre\", \"code\",\n \"kbd\", \"samp\", \"strong\", \"em\", \"small\", \"mark\", \"time\", \"progress\", \"meter\", \"img\", \"picture\",\n \"source\", \"audio\", \"video\", \"track\", \"canvas\"\n ]\n },\n \"attributes\": {\n \"type\": \"object\",\n \"maxProperties\": 64,\n \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] }\n },\n \"children\": {\n \"type\": \"array\",\n \"maxItems\": 4096,\n \"items\": { \"$ref\": \"#/$defs/vnode\" }\n }\n }\n },\n \"patch_operation\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"text\"],\n \"properties\": {\n \"type\": { \"const\": \"set_text\" },\n \"target_key\": { \"$ref\": \"#/$defs/text_identifier\" },\n \"text\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"set\", \"remove\"],\n \"properties\": {\n \"type\": { \"const\": \"patch_attributes\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"set\": { \"type\": \"object\", \"maxProperties\": 64, \"additionalProperties\": { \"type\": [\"string\", \"number\", \"boolean\"] } },\n \"remove\": { \"type\": \"array\", \"maxItems\": 64, \"uniqueItems\": true, \"items\": { \"type\": \"string\", \"minLength\": 1 } }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"edit_revision\"],\n \"properties\": {\n \"type\": { \"const\": \"patch_control\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n \"value\": { \"type\": [\"string\", \"null\"], \"maxLength\": 65536 },\n \"checked\": { \"type\": [\"boolean\", \"null\"] }\n },\n \"anyOf\": [{ \"required\": [\"value\"] }, { \"required\": [\"checked\"] }]\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"parent_key\", \"before_key\", \"node\"],\n \"properties\": {\n \"type\": { \"const\": \"insert_child\" },\n \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"before_key\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/ui_identifier\" },\n { \"type\": \"null\" }\n ]\n },\n \"node\": { \"$ref\": \"#/$defs/vnode\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\"],\n \"properties\": {\n \"type\": { \"const\": \"remove_child\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"target_key\", \"parent_key\", \"before_key\"],\n \"properties\": {\n \"type\": { \"const\": \"move_child\" },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"parent_key\": { \"$ref\": \"#/$defs/element_identifier\" },\n \"before_key\": {\n \"oneOf\": [\n { \"$ref\": \"#/$defs/ui_identifier\" },\n { \"type\": \"null\" }\n ]\n }\n }\n }\n ]\n },\n \"canvas_open\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.open\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n \"canvas_accessibility\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\", \"label\", \"description\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.accessibility\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"label\": { \"type\": \"string\", \"minLength\": 1, \"maxLength\": 256 },\n \"description\": { \"type\": \"string\", \"maxLength\": 1024 }\n }\n },\n \"canvas_ready\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"canvas_id\", \"canvas\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.ready\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"canvas\": {\n \"description\": \"One transferred OffscreenCanvas. The runtime validates the structured-clone object outside JSON Schema.\"\n },\n \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n },\n \"x-redevplugin-transfer\": [\"canvas\"]\n },\n \"canvas_input\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"canvas_id\", \"event\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.canvas.input\" },\n \"canvas_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"event\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\"],\n \"properties\": { \"type\": { \"enum\": [\"focus\", \"blur\"] } }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"css_width\", \"css_height\", \"device_pixel_ratio\"],\n \"properties\": {\n \"type\": { \"const\": \"resize\" },\n \"css_width\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"css_height\": { \"type\": \"number\", \"exclusiveMinimum\": 0, \"maximum\": 4096 },\n \"device_pixel_ratio\": { \"type\": \"number\", \"minimum\": 0.5, \"maximum\": 4 }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\", \"code\", \"key\", \"repeat\", \"alt_key\", \"ctrl_key\", \"meta_key\", \"shift_key\"],\n \"properties\": {\n \"type\": { \"const\": \"key\" },\n \"event\": { \"enum\": [\"keydown\", \"keyup\"] },\n \"code\": { \"type\": \"string\", \"maxLength\": 64 },\n \"key\": { \"type\": \"string\", \"maxLength\": 64 },\n \"repeat\": { \"type\": \"boolean\" },\n \"alt_key\": { \"type\": \"boolean\" },\n \"ctrl_key\": { \"type\": \"boolean\" },\n \"meta_key\": { \"type\": \"boolean\" },\n \"shift_key\": { \"type\": \"boolean\" }\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\", \"pointer_id\", \"pointer_type\", \"buttons\", \"button\", \"x\", \"y\", \"pressure\"],\n \"properties\": {\n \"type\": { \"const\": \"pointer\" },\n \"event\": { \"enum\": [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] },\n \"pointer_id\": { \"type\": \"integer\", \"minimum\": 0 },\n \"pointer_type\": { \"enum\": [\"mouse\", \"pen\", \"touch\", \"unknown\"] },\n \"buttons\": { \"type\": \"integer\", \"minimum\": 0, \"maximum\": 31 },\n \"button\": { \"type\": \"integer\", \"minimum\": -1, \"maximum\": 4 },\n \"x\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n \"y\": { \"type\": \"number\", \"minimum\": -16384, \"maximum\": 32768 },\n \"pressure\": { \"type\": \"number\", \"minimum\": 0, \"maximum\": 1 }\n }\n }\n ]\n }\n }\n },\n \"image_open\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"asset_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.asset.image.open\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" }\n }\n },\n \"image_ready\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"asset_id\", \"image\", \"width\", \"height\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.asset.image.ready\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"asset_id\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"image\": {\n \"description\": \"One transferred ImageBitmap decoded from Host-verified package bytes.\"\n },\n \"width\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 },\n \"height\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 4096 }\n },\n \"x-redevplugin-transfer\": [\"image\"]\n },\n \"ui_identifier\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:-]*$\"\n },\n \"element_identifier\": {\n \"$ref\": \"#/$defs/ui_identifier\"\n },\n \"text_identifier\": {\n \"$ref\": \"#/$defs/ui_identifier\"\n },\n \"action\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"action\", \"event\", \"target_key\", \"edit_revision\", \"is_composing\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.ui.action\" },\n \"action\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"maxLength\": 128,\n \"pattern\": \"^[A-Za-z0-9._:-]+$\"\n },\n \"event\": { \"enum\": [\"click\", \"input\", \"change\", \"submit\", \"escape\"] },\n \"target_key\": { \"$ref\": \"#/$defs/ui_identifier\" },\n \"edit_revision\": { \"type\": \"integer\", \"minimum\": 0 },\n \"is_composing\": { \"type\": \"boolean\" },\n \"value\": { \"type\": \"string\", \"maxLength\": 65536 },\n \"checked\": { \"type\": \"boolean\" },\n \"form_data\": {\n \"type\": \"object\",\n \"maxProperties\": 128,\n \"additionalProperties\": { \"type\": \"string\", \"maxLength\": 65536 }\n }\n }\n },\n \"response\": {\n \"oneOf\": [\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"ok\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.response\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"ok\": { \"const\": true },\n \"data\": true\n }\n },\n {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"id\", \"ok\", \"error_code\", \"error\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.response\" },\n \"id\": { \"$ref\": \"#/$defs/request_id\" },\n \"ok\": { \"const\": false },\n \"error_code\": {\n \"enum\": [\n \"PLUGIN_INVALID_REQUEST\",\n \"PLUGIN_MANIFEST_INVALID\",\n \"PLUGIN_PACKAGE_INVALID\",\n \"PLUGIN_PACKAGE_TOO_LARGE\",\n \"PLUGIN_PACKAGE_PATH_FORBIDDEN\",\n \"PLUGIN_SIGNATURE_INVALID\",\n \"PLUGIN_TRUST_STATE_DENIED\",\n \"PLUGIN_TRUST_VERIFICATION_REQUIRED\",\n \"PLUGIN_TRUST_VERIFICATION_INVALID\",\n \"PLUGIN_RELEASE_REF_VERIFICATION_FAILED\",\n \"PLUGIN_RELEASE_REF_POLICY_DENIED\",\n \"PLUGIN_RELEASE_NETWORK\",\n \"PLUGIN_RELEASE_TIMEOUT\",\n \"PLUGIN_RELEASE_ASSET_MISSING\",\n \"PLUGIN_RELEASE_ASSET_INTEGRITY\",\n \"PLUGIN_INSTALL_INTERRUPTED\",\n \"PLUGIN_INSTALL_STATE_CONFLICT\",\n \"PLUGIN_INTERNAL_FAILURE\",\n \"PLUGIN_DISABLED\",\n \"PLUGIN_DISABLED_BY_POLICY\",\n \"PLUGIN_PERMISSION_DENIED\",\n \"PLUGIN_ORIGIN_DENIED\",\n \"PLUGIN_ACTION_DENIED\",\n \"PLUGIN_OWNER_SCOPE_MISMATCH\",\n \"PLUGIN_SECRET_SCOPE_MISMATCH\",\n \"PLUGIN_STORAGE_SCOPE_MISMATCH\",\n \"PLUGIN_ADAPTER_FAILURE\",\n \"PLUGIN_SESSION_REVOKED\",\n \"PLUGIN_SESSION_TEARDOWN_INCOMPLETE\",\n \"PLUGIN_SESSION_FENCE_CAPACITY\",\n \"PLUGIN_CONFIRMATION_REQUIRED\",\n \"PLUGIN_CONFIRMATION_INVALID\",\n \"PLUGIN_TOKEN_EXPIRED\",\n \"PLUGIN_TOKEN_REPLAY\",\n \"PLUGIN_GATEWAY_TOKEN_INVALID\",\n \"PLUGIN_GATEWAY_TOKEN_REPLAYED\",\n \"PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\",\n \"PLUGIN_ASSET_TICKET_INVALID\",\n \"PLUGIN_ASSET_SESSION_INVALID\",\n \"PLUGIN_STREAM_TICKET_INVALID\",\n \"PLUGIN_STREAM_DELIVERY_INVALID\",\n \"PLUGIN_STREAM_CANCELLED\",\n \"PLUGIN_LEASE_INVALID\",\n \"PLUGIN_LEASE_REPLAYED\",\n \"PLUGIN_GRANT_INVALID\",\n \"PLUGIN_STORAGE_QUOTA_EXCEEDED\",\n \"PLUGIN_OPERATION_BLOCKED\",\n \"PLUGIN_OPERATION_NOT_FOUND\",\n \"PLUGIN_OPERATION_NOT_CANCELABLE\",\n \"PLUGIN_OPERATION_RATE_LIMITED\",\n \"PLUGIN_NETWORK_TARGET_DENIED\",\n \"PLUGIN_NETWORK_RATE_LIMITED\",\n \"PLUGIN_RUNTIME_UNAVAILABLE\",\n \"PLUGIN_RUNTIME_VERSION_MISMATCH\",\n \"PLUGIN_RUNTIME_CONTRACT_MISMATCH\",\n \"PLUGIN_UI_PROTOCOL_UNSUPPORTED\",\n \"PLUGIN_UI_PROTOCOL_VIOLATION\",\n \"PLUGIN_SURFACE_QUIESCE_TIMEOUT\",\n \"PLUGIN_JSON_LIMIT_EXCEEDED\",\n \"PLUGIN_CAPABILITY_ERROR\",\n \"PLUGIN_WORKER_ERROR\",\n \"PLUGIN_CONTRACT_MISMATCH\",\n \"PLUGIN_MANAGEMENT_REVISION_MISMATCH\",\n \"PLUGIN_AUTHORIZATION_REVISION_MISMATCH\",\n \"PLUGIN_BINDING_REVISION_MISMATCH\",\n \"PLUGIN_VALUES_REVISION_MISMATCH\",\n \"PLUGIN_CSRF_REQUIRED\",\n \"PLUGIN_CSRF_INVALID\",\n \"PLUGIN_FEATURE_NOT_CONFIGURED\",\n \"PLUGIN_CONFIRMATION_REJECTED\",\n \"PLUGIN_BRIDGE_CANCELLED\",\n \"PLUGIN_BRIDGE_TIMEOUT\",\n \"PLUGIN_BRIDGE_DISPOSED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_FAILED\",\n \"PLUGIN_BRIDGE_HANDSHAKE_REQUIRED\"\n ]\n },\n \"error\": { \"type\": \"string\", \"maxLength\": 4096 },\n \"error_details\": {\n \"type\": \"object\",\n \"maxProperties\": 8,\n \"additionalProperties\": true\n },\n \"mutation_outcome\": { \"type\": \"string\", \"enum\": [\"not_committed\", \"unknown\"] }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_CAPABILITY_ERROR\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": { \"$ref\": \"#/$defs/capability_business_error_details\" }\n }\n }\n },\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_WORKER_ERROR\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": { \"$ref\": \"#/$defs/worker_error_details\" }\n }\n }\n },\n {\n \"if\": {\n \"properties\": { \"error_code\": { \"const\": \"PLUGIN_OPERATION_RATE_LIMITED\" } },\n \"required\": [\"error_code\"]\n },\n \"then\": {\n \"required\": [\"error_details\"],\n \"properties\": {\n \"error_details\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"retry_after_ms\"],\n \"properties\": {\n \"retry_after_ms\": { \"type\": \"integer\", \"minimum\": 500, \"maximum\": 10000 }\n }\n }\n }\n }\n }\n ]\n }\n ]\n },\n \"lifecycle\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"event\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.lifecycle\" },\n \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" },\n \"event\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\"],\n \"properties\": {\n \"type\": { \"enum\": [\"ready\", \"visible\", \"hidden\", \"dispose\"] }\n }\n }\n },\n \"allOf\": [\n {\n \"if\": { \"required\": [\"quiesce_id\"] },\n \"then\": {\n \"properties\": {\n \"event\": {\n \"properties\": { \"type\": { \"const\": \"dispose\" } }\n }\n }\n }\n }\n ]\n },\n \"lifecycle_ack\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"type\", \"quiesce_id\"],\n \"properties\": {\n \"type\": { \"const\": \"redevplugin.bridge.lifecycle_ack\" },\n \"quiesce_id\": { \"type\": \"string\", \"pattern\": \"^quiesce_[A-Za-z0-9_-]{8,151}$\" }\n }\n }\n }\n}\n";
91
91
  }, {
92
92
  readonly id: "manifest-schema";
93
93
  readonly path: "spec/plugin/manifest-v8.schema.json";
@@ -168,10 +168,10 @@ export declare const generatedContractArtifacts: readonly [{
168
168
  readonly body: "{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://schemas.redevplugin.dev/plugin/platform-package-set-v1.schema.json\",\n \"title\": \"ReDevPlugin Platform Package Set V1\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"schema_version\", \"platform_version\", \"go_module\", \"npm_packages\", \"rust_crates\", \"contract_registry_version\", \"contract_set_sha256\"],\n \"properties\": {\n \"schema_version\": {\"const\": \"redevplugin.platform_package_set.v1\"},\n \"platform_version\": {\"$ref\": \"#/$defs/version\"},\n \"go_module\": {\"$ref\": \"#/$defs/go_module\"},\n \"npm_packages\": {\n \"type\": \"array\",\n \"minItems\": 2,\n \"maxItems\": 2,\n \"uniqueItems\": true,\n \"prefixItems\": [\n {\"$ref\": \"#/$defs/npm_contracts\"},\n {\"$ref\": \"#/$defs/npm_ui\"}\n ],\n \"items\": false\n },\n \"rust_crates\": {\n \"type\": \"array\",\n \"minItems\": 6,\n \"maxItems\": 6,\n \"uniqueItems\": true,\n \"prefixItems\": [\n {\"$ref\": \"#/$defs/rust_contracts\"},\n {\"$ref\": \"#/$defs/rust_ipc\"},\n {\"$ref\": \"#/$defs/rust_wasm_abi\"},\n {\"$ref\": \"#/$defs/rust_target_classifier\"},\n {\"$ref\": \"#/$defs/rust_worker_sdk\"},\n {\"$ref\": \"#/$defs/rust_runtime\"}\n ],\n \"items\": false\n },\n \"contract_registry_version\": {\"const\": \"contract-registry-v2\"},\n \"contract_set_sha256\": {\"$ref\": \"#/$defs/sha256\"}\n },\n \"$defs\": {\n \"version\": {\n \"type\": \"string\",\n \"minLength\": 5,\n \"maxLength\": 64,\n \"pattern\": \"^(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"\n },\n \"sha256\": {\"type\": \"string\", \"pattern\": \"^[0-9a-f]{64}$\"},\n \"go_module\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"module\", \"version\"],\n \"properties\": {\n \"module\": {\"const\": \"github.com/floegence/redevplugin\"},\n \"version\": {\"type\": \"string\", \"minLength\": 6, \"maxLength\": 65, \"pattern\": \"^v(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)\\\\.(0|[1-9][0-9]*)$\"}\n }\n },\n \"npm_package\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"version\"],\n \"properties\": {\n \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n \"version\": {\"$ref\": \"#/$defs/version\"}\n }\n },\n \"npm_contracts\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/npm_package\"},\n {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-contracts\"}}}\n ]\n },\n \"npm_ui\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/npm_package\"},\n {\"properties\": {\"name\": {\"const\": \"@floegence/redevplugin-ui\"}}}\n ]\n },\n \"rust_crate\": {\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"required\": [\"name\", \"version\", \"role\"],\n \"properties\": {\n \"name\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 128},\n \"version\": {\"$ref\": \"#/$defs/version\"},\n \"role\": {\"enum\": [\"contracts\", \"ipc\", \"wasm_abi\", \"target_classifier\", \"worker_sdk\", \"runtime\"]}\n }\n },\n \"rust_contracts\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-contracts\"}, \"role\": {\"const\": \"contracts\"}}}\n ]\n },\n \"rust_ipc\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-ipc\"}, \"role\": {\"const\": \"ipc\"}}}\n ]\n },\n \"rust_wasm_abi\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-wasm-abi\"}, \"role\": {\"const\": \"wasm_abi\"}}}\n ]\n },\n \"rust_target_classifier\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-target-classifier\"}, \"role\": {\"const\": \"target_classifier\"}}}\n ]\n },\n \"rust_worker_sdk\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-worker-sdk\"}, \"role\": {\"const\": \"worker_sdk\"}}}\n ]\n },\n \"rust_runtime\": {\n \"allOf\": [\n {\"$ref\": \"#/$defs/rust_crate\"},\n {\"properties\": {\"name\": {\"const\": \"redevplugin-runtime\"}, \"role\": {\"const\": \"runtime\"}}}\n ]\n }\n }\n}\n";
169
169
  }, {
170
170
  readonly id: "plugin-platform-openapi";
171
- readonly path: "spec/openapi/plugin-platform-v12.yaml";
172
- readonly version: "plugin-platform-v12";
173
- readonly sha256: "715698e9e1e357e243ee21b3157cc044befac83979107f54d024b5e9e48f7050";
174
- readonly body: "openapi: 3.1.0\ninfo:\n title: ReDevPlugin Plugin Platform API\n version: plugin-platform-v12\n description: Host-agnostic plugin management, bridge, operation, data, and sandbox routes. Release-ref install and update routes resolve host-controlled package artifacts server-side and do not accept requested trust_state values; external package URL, GitHub repository, and uploaded-package inspection flows derive package identity and trust facts server-side before reusing the shared commit/query lifecycle; local-import package install/update routes remain explicit developer/import flows and do not accept caller-supplied trust_state values.\nx-redevplugin-query-policy:\n reject_url_query_strings: true\n require_closed_json_bodies: true\n require_exact_origin: true\n require_csrf: true\npaths:\n /_redevplugin/api/plugins/{plugin_instance_id}/local-import:\n post:\n operationId: importLocalPackage\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n put:\n operationId: updateLocalPackage\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n - name: X-ReDevPlugin-Expected-Management-Revision\n in: header\n required: true\n description: Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected.\n schema: { type: integer, minimum: 1, maximum: 9007199254740991 }\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/inspect:\n post:\n operationId: inspectExternalPackage\n x-redevplugin-route-effect: mutation\n description: Resolves and inspects a package from a caller-selected URL or GitHub repository without installing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller.\n requestBody:\n $ref: \"#/components/requestBodies/InspectExternalPackageRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/upload/inspect:\n post:\n operationId: inspectUploadedExternalPackageInstall\n x-redevplugin-route-effect: mutation\n description: Uploads and inspects a package for installation without committing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller. The returned inspection is committed and reconciled through the shared external-package commit/query routes.\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/external-packages/upload/inspect:\n put:\n operationId: inspectUploadedExternalPackageUpdate\n x-redevplugin-route-effect: mutation\n description: Uploads and inspects a package for an optimistic-concurrency-controlled update without committing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller. The returned inspection is committed and reconciled through the shared external-package commit/query routes.\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n - name: X-ReDevPlugin-Expected-Management-Revision\n in: header\n required: true\n description: Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected.\n schema: { type: integer, minimum: 1, maximum: 9007199254740991 }\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/commit:\n post:\n operationId: commitExternalPackage\n x-redevplugin-route-effect: mutation\n description: Commits one unexpired inspection after the user confirms its exact server-computed digest. An absent signature does not make a package ineligible for installation; signature assessment affects trust classification and automatic-update eligibility only.\n requestBody:\n $ref: \"#/components/requestBodies/CommitExternalPackageRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageCommitResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/commit/query:\n post:\n operationId: queryExternalPackageCommit\n x-redevplugin-route-effect: query\n description: Reconciles the commit result for one inspection without repeating the mutation.\n requestBody:\n $ref: \"#/components/requestBodies/QueryExternalPackageCommitRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageCommitResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/install-release-ref:\n post:\n operationId: installReleaseRef\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/InstallReleaseRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/enable:\n post:\n operationId: enablePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/EnableRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/disable:\n post:\n operationId: disablePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DisableRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/uninstall:\n post:\n operationId: uninstallPlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/UninstallRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/update-release-ref:\n post:\n operationId: updateReleaseRef\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/UpdateReleaseRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/downgrade:\n post:\n operationId: downgradePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DowngradeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/catalog/query:\n post:\n operationId: listPlugins\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginCatalogResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/features/query:\n post:\n operationId: getPluginFeatures\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginFeaturesResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/platform/compatibility/query:\n post:\n operationId: getPluginPlatformCompatibility\n x-redevplugin-route-effect: query\n description: Returns the host-consumable ReDevPlugin compatibility manifest for the mounted platform artifact set.\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/CompatibilityResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/open:\n post:\n operationId: openPluginSurface\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/OpenSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceBootstrapResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/session/revoke-scope:\n post:\n operationId: revokePluginSessionScope\n x-redevplugin-route-effect: mutation\n description: Irreversibly fences the authenticated session, drains every exact-session platform and runtime resource, and returns only public cumulative counts.\n requestBody:\n $ref: \"#/components/requestBodies/RevokeSessionScopeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SessionScopeRevokeResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/prepare:\n post:\n operationId: preparePluginSurface\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PrepareSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfacePreparationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/bridge-token:\n post:\n operationId: createSurfaceBridgeToken\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/TrustedParentBridgeTokenRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/BridgeTokenResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/assets/read:\n post:\n operationId: readPreparedSurfaceAsset\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/ReadSurfaceAssetRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceAssetResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/read:\n post:\n operationId: readPreparedSurfaceStream\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/ReadSurfaceStreamRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceStreamResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/ack:\n post:\n operationId: acknowledgePreparedSurfaceStream\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/AcknowledgeSurfaceStreamRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceStreamAcknowledgementResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/operations/cancel:\n post:\n operationId: cancelSurfacePluginOperation\n x-redevplugin-route-effect: mutation\n description: Cancels an operation only when it belongs to the authenticated surface, session, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/CancelSurfaceOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/operations/query:\n post:\n operationId: getSurfacePluginOperationSnapshot\n x-redevplugin-route-effect: query\n description: Returns only the sandbox-safe status projection for an operation bound to the authenticated surface, session, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/GetSurfaceOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginOperationSnapshotResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/confirmations/reject:\n post:\n operationId: rejectSurfacePluginConfirmation\n x-redevplugin-route-effect: mutation\n description: Atomically rejects a pending confirmation only when it belongs to the authenticated surface, session, current plugin revision, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/RejectSurfaceConfirmationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ConfirmationRejectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/dispose:\n post:\n operationId: disposePluginSurface\n x-redevplugin-route-effect: mutation\n description: Atomically observes and revokes one exact authenticated surface. An active surface becomes closed, a retained closure confirms closed, and an absent result is authoritative inactivity; transport failures remain an unknown mutation outcome.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/DisposeSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceDisposeResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/rpc:\n post:\n operationId: callPluginMethod\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/RPCRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/confirmations/prepare:\n post:\n operationId: preparePluginMethodConfirmation\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/PrepareMethodConfirmationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginMethodConfirmationPreparationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/intents/query:\n post:\n operationId: listPluginIntents\n x-redevplugin-route-effect: query\n description: 'Lists enabled, runnable plugin intents available to host-mediated interop. The response data is `{ \"intents\": [...] }`.'\n requestBody:\n $ref: \"#/components/requestBodies/ListIntentsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/IntentListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/intents/invoke:\n post:\n operationId: invokePluginIntent\n x-redevplugin-route-effect: mutation\n description: Invokes a host-mediated plugin intent without iframe gateway tokens while preserving local policy, permission grants, and dangerous-method fail-closed checks.\n requestBody:\n $ref: \"#/components/requestBodies/InvokeIntentRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/query:\n post:\n operationId: listPluginOperations\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListOperationsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/{operation_id}/query:\n post:\n operationId: getPluginOperation\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/OperationID\"\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/{operation_id}/cancel:\n post:\n operationId: cancelPluginOperation\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/OperationID\"\n requestBody:\n $ref: \"#/components/requestBodies/CancelOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/start:\n post:\n operationId: startPluginRuntime\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/StartRuntimeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/stop:\n post:\n operationId: stopPluginRuntime\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/EmptyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeStopResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/refresh-enabled:\n post:\n operationId: refreshEnabledPluginRuntimeState\n x-redevplugin-route-effect: mutation\n description: 'Replays runtime-derived state for enabled plugins after the embedding host process restarts or reattaches adapters. The response data is `{ \"results\": [...] }`.'\n requestBody:\n $ref: \"#/components/requestBodies/EmptyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeRefreshResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/health/query:\n post:\n operationId: getPluginRuntimeHealth\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/export:\n post:\n operationId: exportPluginData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/ExportDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataExportResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/export/delete:\n post:\n operationId: deletePluginDataExport\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DeleteDataExportRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataExportDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/import:\n post:\n operationId: importPluginData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/ImportDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataImportResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/query:\n post:\n operationId: listPluginRetainedData\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListRetainedDataQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/delete:\n post:\n operationId: deletePluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DeleteRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/bind:\n post:\n operationId: bindPluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/BindRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/cleanup-expired:\n post:\n operationId: cleanupExpiredPluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/CleanupExpiredRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataCleanupResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/query:\n post:\n operationId: listPluginPermissionGrants\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListPermissionsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/requirements/query:\n post:\n operationId: getPluginPermissionRequirements\n x-redevplugin-route-effect: query\n description: Projects required permissions only from the active plugin version's Host-verified capability contracts.\n requestBody:\n $ref: \"#/components/requestBodies/PermissionRequirementsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionRequirementsResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/grant:\n post:\n operationId: grantPluginPermission\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/GrantPermissionRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/revoke:\n post:\n operationId: revokePluginPermission\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/RevokePermissionRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/query:\n post:\n operationId: listPluginSecurityPolicies\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/{plugin_instance_id}/query:\n post:\n operationId: getPluginSecurityPolicy\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/{plugin_instance_id}:\n put:\n operationId: putPluginSecurityPolicy\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PutSecurityPolicyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n delete:\n operationId: deletePluginSecurityPolicy\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/DeleteSecurityPolicyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/diagnostics/query:\n post:\n operationId: listPluginDiagnosticEvents\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListDiagnosticsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DiagnosticEventListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/bind:\n post:\n operationId: bindPluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretBindResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/test:\n post:\n operationId: testPluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretTestResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/delete:\n post:\n operationId: deletePluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings/schema/query:\n post:\n operationId: getPluginSettingsSchema\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSchemaResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings/query:\n post:\n operationId: getPluginSettings\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings:\n patch:\n operationId: patchPluginSettings\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PatchSettingsRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\ncomponents:\n parameters:\n OperationID:\n name: operation_id\n in: path\n required: true\n schema: { type: string }\n PluginInstanceID:\n name: plugin_instance_id\n in: path\n required: true\n schema:\n type: string\n minLength: 1\n pattern: \"^[^./\\\\s](?:[^/]*[^/\\\\s])?$\"\n SurfaceInstanceID:\n name: surface_instance_id\n in: path\n required: true\n schema: { type: string }\n responses:\n PlatformErrorResponse:\n description: Closed non-success response for read-only platform operations.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PlatformErrorResponse\"\n MutationPlatformErrorResponse:\n description: Closed non-success response for operations that may change durable platform state.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/MutationPlatformErrorResponse\"\n RPCResponse:\n description: Typed plugin method result. Subscriptions always bind one operation and one stream.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RPCSuccessResponse\"\n SurfaceBootstrapResponse:\n description: Trusted-parent surface bootstrap. Capability-bearing fields are never forwarded into the opaque iframe or plugin worker.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceBootstrapSuccessResponse\"\n SurfacePreparationResponse:\n description: Trusted-parent asset-session exchange and validated opaque surface document.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfacePreparationSuccessResponse\"\n BridgeTokenResponse:\n description: Trusted-parent plugin gateway token response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/BridgeTokenSuccessResponse\"\n SurfaceAssetResponse:\n description: Trusted-parent package asset response. The plugin receives only a renderer-created blob URL.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceAssetSuccessResponse\"\n SurfaceStreamResponse:\n description: Trusted-parent stream redemption response. Stream tickets remain outside the plugin worker.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceStreamSuccessResponse\"\n SurfaceStreamAcknowledgementResponse:\n description: Confirms one exact stream delivery so the platform may release its events.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceStreamAcknowledgementSuccessResponse\"\n PluginOperationSnapshotResponse:\n description: Closed sandbox-safe operation status projection.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginOperationSnapshotSuccessResponse\"\n SurfaceDisposeResponse:\n description: Surface revocation response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceDisposeSuccessResponse\"\n SessionScopeRevokeResponse:\n description: Completed authenticated-session teardown response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SessionScopeRevokeSuccessResponse\"\n PluginRecordResponse:\n description: Plugin lifecycle response with typed registry trust assessment.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n ExternalPackageInspectionResponse:\n description: Immutable server-computed package inspection and confirmation boundary.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExternalPackageInspectionSuccessResponse\"\n ExternalPackageCommitResponse:\n description: External package commit reconciliation result with explicit trust, approval, provenance, and update facts.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExternalPackageCommitSuccessResponse\"\n PluginCatalogResponse:\n description: Installed plugin catalog response with typed registry records.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginCatalogSuccessResponse\"\n PluginFeaturesResponse:\n description: Closed set of optional host modules configured for this platform.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginFeaturesSuccessResponse\"\n CompatibilityResponse:\n description: Released platform compatibility manifest.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CompatibilitySuccessResponse\"\n PluginMethodConfirmationPreparationResponse:\n description: Prepared plugin method confirmation. The raw confirmation token stays server-side and is never returned to parent JavaScript or the plugin iframe.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginMethodConfirmationPreparationSuccessResponse\"\n ConfirmationRejectionResponse:\n description: Trusted-parent acknowledgement that the pending confirmation was atomically rejected and cannot be replayed.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ConfirmationRejectionSuccessResponse\"\n IntentListResponse:\n description: Enabled plugin intent records.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/IntentListSuccessResponse\"\n RetainedDataListResponse:\n description: Retained plugin data list response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataListSuccessResponse\"\n RetainedDataBindingResponse:\n description: Plugin data binding returned after a retained-data mutation.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataBindingSuccessResponse\"\n RetainedDataCleanupResponse:\n description: Retained plugin data cleanup response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataCleanupSuccessResponse\"\n OperationRecordResponse:\n description: Host-owned operation record with its immutable execution binding.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OperationRecordSuccessResponse\"\n OperationListResponse:\n description: Host-owned operation records with immutable execution bindings.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OperationListSuccessResponse\"\n RuntimeHealthResponse:\n description: Runtime manager and shard health.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeHealthSuccessResponse\"\n RuntimeStopResponse:\n description: Runtime manager stop acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeStopSuccessResponse\"\n RuntimeRefreshResponse:\n description: Enabled plugin runtime refresh result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeRefreshSuccessResponse\"\n DataExportResponse:\n description: Plugin data export result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DataExportSuccessResponse\"\n DataExportDeleteResponse:\n description: Immutable plugin data export deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DataExportDeleteSuccessResponse\"\n DataImportResponse:\n description: Plugin record after the imported dataset becomes active.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n PermissionListResponse:\n description: Permission grants for the requested plugin scope.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionListSuccessResponse\"\n PermissionRequirementsResponse:\n description: Active-version permission requirements derived from Host-verified capability contracts.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionRequirementsSuccessResponse\"\n PermissionMutationResponse:\n description: Permission grant mutation result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionMutationSuccessResponse\"\n SecurityPolicyListResponse:\n description: Complete list of configured plugin security policies.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyListSuccessResponse\"\n SecurityPolicyRecordResponse:\n description: Complete security policy for one plugin instance.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyRecordSuccessResponse\"\n SecurityPolicyDeleteResponse:\n description: Security policy deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyDeleteSuccessResponse\"\n DiagnosticEventListResponse:\n description: Diagnostic events matching the requested filters.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DiagnosticEventListSuccessResponse\"\n SecretBindResponse:\n description: Secret reference bind acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretBindSuccessResponse\"\n SecretTestResponse:\n description: Secret reference test acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretTestSuccessResponse\"\n SecretDeleteResponse:\n description: Secret reference deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretDeleteSuccessResponse\"\n SettingsSchemaResponse:\n description: Plugin settings schema.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsSchemaSuccessResponse\"\n SettingsSnapshotResponse:\n description: Plugin settings snapshot.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsSnapshotSuccessResponse\"\n requestBodies:\n InspectExternalPackageRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InspectExternalPackageRequest\"\n CommitExternalPackageRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CommitExternalPackageRequest\"\n QueryExternalPackageCommitRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/QueryExternalPackageCommitRequest\"\n InstallReleaseRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InstallReleaseRefRequest\"\n UpdateReleaseRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/UpdateReleaseRefRequest\"\n DowngradeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DowngradeRequest\"\n EnableRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EnableRequest\"\n DisableRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DisableRequest\"\n UninstallRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/UninstallRequest\"\n OpenSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OpenSurfaceRequest\"\n RevokeSessionScopeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RevokeSessionScopeRequest\"\n EmptyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EmptyRequest\"\n EmptyQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EmptyQueryRequest\"\n ListIntentsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListIntentsQueryRequest\"\n ListOperationsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListOperationsQueryRequest\"\n ListRetainedDataQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListRetainedDataQueryRequest\"\n ListPermissionsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListPermissionsQueryRequest\"\n PermissionRequirementsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionRequirementsQueryRequest\"\n ListDiagnosticsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListDiagnosticsQueryRequest\"\n SettingsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsQueryRequest\"\n PrepareSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PrepareSurfaceRequest\"\n TrustedParentBridgeTokenRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/TrustedParentBridgeTokenRequest\"\n ReadSurfaceAssetRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReadSurfaceAssetRequest\"\n ReadSurfaceStreamRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReadSurfaceStreamRequest\"\n AcknowledgeSurfaceStreamRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/AcknowledgeSurfaceStreamRequest\"\n CancelSurfaceOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CancelSurfaceOperationRequest\"\n GetSurfaceOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/GetSurfaceOperationRequest\"\n RejectSurfaceConfirmationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RejectSurfaceConfirmationRequest\"\n DisposeSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DisposeSurfaceRequest\"\n RPCRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RPCRequest\"\n PrepareMethodConfirmationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PrepareMethodConfirmationRequest\"\n InvokeIntentRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InvokeIntentRequest\"\n CancelOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CancelOperationRequest\"\n StartRuntimeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/StartRuntimeRequest\"\n ExportDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExportDataRequest\"\n DeleteDataExportRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteDataExportRequest\"\n ImportDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ImportDataRequest\"\n DeleteRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteRetainedDataRequest\"\n BindRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/BindRetainedDataRequest\"\n CleanupExpiredRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CleanupExpiredRetainedDataRequest\"\n GrantPermissionRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/GrantPermissionRequest\"\n RevokePermissionRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RevokePermissionRequest\"\n PutSecurityPolicyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PutSecurityPolicyRequest\"\n DeleteSecurityPolicyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteSecurityPolicyRequest\"\n SecretRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretRefRequest\"\n PatchSettingsRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PatchSettingsRequest\"\n schemas:\n PlatformErrorResponse:\n type: object\n required: [ok, error]\n additionalProperties: false\n properties:\n ok: { const: false }\n error:\n $ref: \"#/components/schemas/PlatformError\"\n MutationPlatformErrorResponse:\n type: object\n required: [ok, error]\n additionalProperties: false\n properties:\n ok: { const: false }\n error:\n $ref: \"#/components/schemas/MutationPlatformError\"\n RPCSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RPCResult\" }\n SurfaceBootstrapSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceBootstrap\" }\n SurfacePreparationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfacePreparation\" }\n BridgeTokenSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/BridgeTokenResult\" }\n SurfaceAssetSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceAssetResult\" }\n SurfaceStreamSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceStreamResult\" }\n SurfaceStreamAcknowledgementSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceStreamAcknowledgementResult\" }\n PluginOperationSnapshotSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginOperationSnapshot\" }\n SurfaceDisposeSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceDisposeResult\" }\n SessionScopeRevokeSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SessionScopeRevokeCompleteResult\" }\n PluginRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRecord\" }\n ExternalPackageInspectionSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ExternalPackageInspection\" }\n ExternalPackageCommitSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ExternalPackageCommitResult\" }\n PluginCatalogSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginCatalogResult\" }\n PluginFeaturesSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data:\n type: array\n uniqueItems: true\n items:\n type: string\n enum: [release, runtime, capability, connectivity, secrets, core_action, external_package]\n CompatibilitySuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginCompatibilityManifest\" }\n PluginMethodConfirmationPreparationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginMethodConfirmationPreparation\" }\n ConfirmationRejectionSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ConfirmationRejectionResult\" }\n IntentListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginIntentList\" }\n RetainedDataListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RetainedDataList\" }\n RetainedDataBindingSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataBinding\" }\n RetainedDataCleanupSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RetainedDataCleanupResult\" }\n OperationRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/OperationRecord\" }\n OperationListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginOperationList\" }\n RuntimeHealthSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeHealth\" }\n RuntimeStopSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeStopResult\" }\n RuntimeRefreshSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeRefreshResult\" }\n DataExportSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataExportResult\" }\n DataExportDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataExportDeleteResult\" }\n PermissionListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionList\" }\n PermissionRequirementsSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionRequirements\" }\n PermissionMutationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionMutationResult\" }\n SecurityPolicyListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicyList\" }\n SecurityPolicyRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n SecurityPolicyDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicyDeleteResult\" }\n DiagnosticEventListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDiagnosticEventList\" }\n SecretBindSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretBindResult\" }\n SecretTestSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretTestResult\" }\n SecretDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretDeleteResult\" }\n SettingsSchemaSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSettingsSchema\" }\n SettingsSnapshotSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSettingsSnapshot\" }\n PlatformError:\n oneOf:\n - $ref: \"#/components/schemas/GenericPlatformError\"\n - $ref: \"#/components/schemas/OperationRateLimitPlatformError\"\n - $ref: \"#/components/schemas/JSONLimitPlatformError\"\n - $ref: \"#/components/schemas/PackageValidationPlatformError\"\n - $ref: \"#/components/schemas/ManagementRevisionPlatformError\"\n - $ref: \"#/components/schemas/AuthorizationRevisionPlatformError\"\n - $ref: \"#/components/schemas/BindingRevisionPlatformError\"\n - $ref: \"#/components/schemas/ValuesRevisionPlatformError\"\n - $ref: \"#/components/schemas/CapabilityPlatformError\"\n - $ref: \"#/components/schemas/WorkerPlatformError\"\n MutationPlatformError:\n oneOf:\n - $ref: \"#/components/schemas/MutationGenericPlatformError\"\n - $ref: \"#/components/schemas/MutationJSONLimitPlatformError\"\n - $ref: \"#/components/schemas/MutationPackageValidationPlatformError\"\n - $ref: \"#/components/schemas/MutationManagementRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationAuthorizationRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationBindingRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationValuesRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationCapabilityPlatformError\"\n - $ref: \"#/components/schemas/MutationWorkerPlatformError\"\n - $ref: \"#/components/schemas/MutationSessionTeardownPlatformError\"\n GenericPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code:\n $ref: \"#/components/schemas/GenericPlatformErrorCode\"\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details:\n $ref: \"#/components/schemas/EmptyErrorDetails\"\n OperationRateLimitPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_OPERATION_RATE_LIMITED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/OperationRateLimitErrorDetails\" }\n JSONLimitPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n PackageValidationPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n ManagementRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n AuthorizationRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n BindingRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n ValuesRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n CapabilityPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_CAPABILITY_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n WorkerPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_WORKER_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n MutationGenericPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { $ref: \"#/components/schemas/GenericPlatformErrorCode\" }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/EmptyErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationJSONLimitPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationPackageValidationPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationManagementRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationAuthorizationRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationBindingRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationValuesRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationCapabilityPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_CAPABILITY_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationWorkerPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_WORKER_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationSessionTeardownPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_SESSION_TEARDOWN_INCOMPLETE }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/SessionTeardownIncompleteErrorDetails\" }\n mutation_outcome: { const: committed }\n MutationOutcome:\n type: string\n enum: [committed, not_committed, unknown]\n EmptyErrorDetails:\n type: object\n additionalProperties: false\n OperationRateLimitErrorDetails:\n type: object\n additionalProperties: false\n required: [retry_after_ms]\n properties:\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n JSONLimitErrorDetails:\n type: object\n required: [reason]\n additionalProperties: false\n properties:\n reason:\n type: string\n enum: [payload_bytes, json_depth, prototype_key, number_precision]\n PackageValidationErrorDetails:\n type: object\n required: [reason]\n additionalProperties: false\n properties:\n reason:\n type: string\n enum: [manifest_missing, manifest_field, manifest_decode, zip_invalid, file_count, duplicate_entry, ambiguous_entry, non_regular_entry, invalid_utf8_path, non_nfc_path, symlink_entry, directory_entry, entry_bytes, path_length, compression_ratio, total_uncompressed_bytes, entry_open_failed, entry_read_failed, entry_close_failed, entry_size_mismatch, unsupported_signature_entry, manifest_artifact, package_asset_security, package_artifact_boundary, entry_path, manifest_canonical_json, canonical_hash, package_signature, empty_path, slash_separator, non_canonical_path, path_traversal, hidden_path, external_icon_path, unsupported_icon_format, missing_icon_asset, icon_magic_mismatch, query_or_fragment]\n path:\n type: string\n description: Package-local entry path related to the error, when available.\n pointer:\n type: string\n description: JSON Pointer into manifest.json related to the error, when available.\n CapabilityBusinessErrorDetails:\n type: object\n additionalProperties: false\n required: [capability_id, capability_version, detail_schema_sha256, business_error_code]\n properties:\n capability_id:\n type: string\n minLength: 1\n capability_version:\n $ref: \"#/components/schemas/StrictSemVer\"\n detail_schema_sha256:\n type: string\n pattern: \"^[0-9a-f]{64}$\"\n business_error_code:\n type: string\n pattern: \"^[A-Z][A-Z0-9_]*$\"\n business_error_details:\n type: object\n additionalProperties: true\n WorkerErrorDetails:\n type: object\n additionalProperties: false\n required: [worker_error_code, worker_error_message, worker_error_origin]\n properties:\n worker_error_code:\n type: string\n pattern: \"^[A-Z][A-Z0-9_]*$\"\n worker_error_message:\n type: string\n minLength: 1\n maxLength: 4096\n worker_error_origin:\n type: string\n enum: [runtime, hostcall, plugin]\n SessionTeardownIncompleteErrorDetails:\n type: object\n additionalProperties: false\n required: [session_scope]\n properties:\n session_scope:\n $ref: \"#/components/schemas/SessionScopeRevokeIncompleteResult\"\n ManagementRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_management_revision, actual_management_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n AuthorizationRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required:\n - plugin_instance_id\n - expected_policy_revision\n - actual_policy_revision\n - expected_management_revision\n - actual_management_revision\n - expected_revoke_epoch\n - actual_revoke_epoch\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n actual_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n BindingRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_binding_revision, actual_binding_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ValuesRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_values_revision, actual_values_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ErrorCode:\n $ref: \"../plugin/error-codes-v7.schema.json#/$defs/platform_error_code\"\n PlatformErrorMessage:\n type: string\n minLength: 1\n maxLength: 4096\n pattern: \".*\\\\S.*\"\n GenericPlatformErrorCode:\n type: string\n enum:\n - PLUGIN_INVALID_REQUEST\n - PLUGIN_SIGNATURE_INVALID\n - PLUGIN_TRUST_STATE_DENIED\n - PLUGIN_TRUST_VERIFICATION_REQUIRED\n - PLUGIN_TRUST_VERIFICATION_INVALID\n - PLUGIN_RELEASE_REF_VERIFICATION_FAILED\n - PLUGIN_RELEASE_REF_POLICY_DENIED\n - PLUGIN_DISABLED\n - PLUGIN_DISABLED_BY_POLICY\n - PLUGIN_PERMISSION_DENIED\n - PLUGIN_ORIGIN_DENIED\n - PLUGIN_ACTION_DENIED\n - PLUGIN_OWNER_SCOPE_MISMATCH\n - PLUGIN_SECRET_SCOPE_MISMATCH\n - PLUGIN_STORAGE_SCOPE_MISMATCH\n - PLUGIN_ADAPTER_FAILURE\n - PLUGIN_SESSION_REVOKED\n - PLUGIN_SESSION_TEARDOWN_INCOMPLETE\n - PLUGIN_SESSION_FENCE_CAPACITY\n - PLUGIN_CONFIRMATION_REQUIRED\n - PLUGIN_CONFIRMATION_INVALID\n - PLUGIN_TOKEN_EXPIRED\n - PLUGIN_TOKEN_REPLAY\n - PLUGIN_GATEWAY_TOKEN_INVALID\n - PLUGIN_GATEWAY_TOKEN_REPLAYED\n - PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\n - PLUGIN_ASSET_TICKET_INVALID\n - PLUGIN_ASSET_SESSION_INVALID\n - PLUGIN_STREAM_TICKET_INVALID\n - PLUGIN_STREAM_DELIVERY_INVALID\n - PLUGIN_STREAM_CANCELLED\n - PLUGIN_LEASE_INVALID\n - PLUGIN_LEASE_REPLAYED\n - PLUGIN_GRANT_INVALID\n - PLUGIN_STORAGE_QUOTA_EXCEEDED\n - PLUGIN_OPERATION_BLOCKED\n - PLUGIN_OPERATION_NOT_FOUND\n - PLUGIN_OPERATION_NOT_CANCELABLE\n - PLUGIN_NETWORK_TARGET_DENIED\n - PLUGIN_NETWORK_RATE_LIMITED\n - PLUGIN_RUNTIME_UNAVAILABLE\n - PLUGIN_RUNTIME_VERSION_MISMATCH\n - PLUGIN_RUNTIME_CONTRACT_MISMATCH\n - PLUGIN_UI_PROTOCOL_UNSUPPORTED\n - PLUGIN_UI_PROTOCOL_VIOLATION\n - PLUGIN_SURFACE_QUIESCE_TIMEOUT\n - PLUGIN_CONTRACT_MISMATCH\n - PLUGIN_CSRF_REQUIRED\n - PLUGIN_CSRF_INVALID\n - PLUGIN_FEATURE_NOT_CONFIGURED\n SurfaceDisposeResult:\n type: object\n required: [disposed, state, previous_state, revoked]\n additionalProperties: false\n properties:\n disposed: { const: true }\n state: { type: string, enum: [closed, absent] }\n previous_state: { type: string, enum: [active, closed, absent] }\n revoked: { type: boolean }\n SessionScopeRevokeCounts:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/revoke_counts\"\n SessionScopeRevokeResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/public_revoke_result\"\n SessionScopeRevokeCompleteResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/complete_revoke_result\"\n SessionScopeRevokeIncompleteResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/incomplete_revoke_result\"\n PluginCatalogResult:\n type: object\n required: [plugins]\n additionalProperties: false\n properties:\n plugins:\n type: array\n items: { $ref: \"#/components/schemas/PluginRecord\" }\n PluginCompatibilityManifest:\n $ref: \"../plugin/compatibility-manifest-v14.schema.json\"\n PluginOperationList:\n type: object\n required: [operations]\n additionalProperties: false\n properties:\n operations:\n type: array\n items: { $ref: \"#/components/schemas/OperationRecord\" }\n next_cursor: { type: string, maxLength: 1024 }\n PluginIntentRecord:\n type: object\n required: [plugin_id, plugin_instance_id, publisher_id, display_name, version, active_fingerprint, intent_id, method, effect, execution]\n additionalProperties: false\n properties:\n plugin_id: { type: string }\n plugin_instance_id: { type: string }\n publisher_id: { type: string }\n display_name: { type: string }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string }\n intent_id: { type: string }\n method: { type: string }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n payload_schema:\n type: object\n additionalProperties: true\n PluginIntentList:\n type: object\n required: [intents]\n additionalProperties: false\n properties:\n intents:\n type: array\n items: { $ref: \"#/components/schemas/PluginIntentRecord\" }\n PluginPermissionGrant:\n type: object\n description: Explicit public HTTP projection of a permission grant. Internal actor ownership hashes are never returned.\n required: [plugin_instance_id, permission_id, effect, granted_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n permission_id: { type: string }\n effect: { type: string, enum: [grant, deny] }\n granted_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n revoked_at: { type: string, format: date-time }\n revoked_reason: { type: string }\n PluginPermissionList:\n type: object\n required: [permissions]\n additionalProperties: false\n properties:\n permissions:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n PluginPermissionRequirementMethod:\n type: object\n required: [method, required_permissions]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n PluginPermissionRequirementContract:\n type: object\n required: [contract_id, contract_version, contract_sha256, capability_id, capability_version, methods]\n additionalProperties: false\n properties:\n contract_id: { type: string, minLength: 1 }\n contract_version: { type: string, minLength: 1 }\n contract_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n capability_id: { type: string, minLength: 1 }\n capability_version: { type: string, minLength: 1 }\n methods:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionRequirementMethod\" }\n PluginPermissionRequirements:\n type: object\n required: [plugin_instance_id, plugin_version, active_fingerprint, management_revision, contracts, required_permissions]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { type: string, minLength: 1 }\n active_fingerprint: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n contracts:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionRequirementContract\" }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n AuthorizationRevisions:\n type: object\n required: [policy_revision, management_revision, revoke_epoch]\n additionalProperties: false\n properties:\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n PluginPermissionMutationResult:\n type: object\n required: [permission, revisions]\n additionalProperties: false\n properties:\n permission: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n revisions: { $ref: \"#/components/schemas/AuthorizationRevisions\" }\n PluginSecurityPolicy:\n type: object\n required: [plugin_instance_id, allowed_permissions, denied_methods, policy_revision, management_revision, revoke_epoch, updated_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n allowed_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n denied_methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n updated_at: { type: string, format: date-time }\n PluginSecurityPolicyList:\n type: object\n required: [security_policies]\n additionalProperties: false\n properties:\n security_policies:\n type: array\n items: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n PluginSecurityPolicyDeleteResult:\n type: object\n required: [plugin_instance_id, deleted, policy_revision, management_revision, revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n deleted: { const: true }\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n DiagnosticMutationOutcome:\n type: string\n enum: [committed, not_committed, unknown]\n PluginDiagnosticDetails:\n type: object\n additionalProperties: false\n properties:\n operations_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n streams_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n invocation_id: { type: string }\n method: { type: string }\n failure_code: { type: string }\n runtime_process_failure_code:\n $ref: \"../plugin/error-codes-v7.schema.json#/$defs/runtime_process_failure_code\"\n operation_id: { type: string }\n stream_id: { type: string }\n runtime_instance_id: { type: string }\n runtime_generation_id: { type: string }\n runtime_version: { type: string }\n rust_ipc_version: { type: string }\n wasm_abi_version: { type: string }\n contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n runtime_target_os: { type: string }\n runtime_target_arch: { type: string }\n runtime_binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n os: { type: string }\n arch: { type: string }\n stream: { type: string }\n package_hash: { type: string }\n artifact: { type: string }\n plugin_instance_id: { type: string }\n store_id: { type: string }\n operation: { type: string }\n hostcall: { type: string }\n code: { type: string }\n connector_id: { type: string }\n transport: { type: string }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n stage_id: { type: string }\n reason: { type: string }\n surface_instance_id: { type: string }\n PluginDiagnosticEvent:\n type: object\n required: [type, severity, message]\n additionalProperties: false\n properties:\n event_id: { type: string }\n type: { type: string }\n severity: { type: string, enum: [info, warning] }\n message: { type: string }\n plugin_id: { type: string }\n plugin_instance_id: { type: string }\n surface_id: { type: string }\n surface_instance_id: { type: string }\n active_fingerprint: { type: string }\n request_id: { type: string }\n correlation_id: { type: string }\n mutation_outcome: { $ref: \"#/components/schemas/DiagnosticMutationOutcome\" }\n occurred_at: { type: string, format: date-time }\n details: { $ref: \"#/components/schemas/PluginDiagnosticDetails\" }\n PluginDiagnosticEventList:\n type: object\n required: [diagnostic_events]\n additionalProperties: false\n properties:\n diagnostic_events:\n type: array\n items: { $ref: \"#/components/schemas/PluginDiagnosticEvent\" }\n PluginRuntimeShardHealth:\n type: object\n description: Explicit public HTTP projection of runtime shard health. IPC channel credentials and connection nonces are excluded.\n required: [runtime_shard_id, runtime_instance_id, runtime_generation_id, descriptor, ready, active_invocations, queued_invocations, limits, module_cache]\n additionalProperties: false\n properties:\n runtime_shard_id: { type: string }\n runtime_instance_id: { type: string }\n runtime_generation_id: { type: string }\n descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n ready: { type: boolean }\n active_invocations: { type: integer, minimum: 0 }\n queued_invocations: { type: integer, minimum: 0 }\n limits: { $ref: \"#/components/schemas/RuntimeLimits\" }\n module_cache: { $ref: \"#/components/schemas/RuntimeModuleCacheMetrics\" }\n PluginRuntimeHealth:\n type: object\n description: Explicit public HTTP projection of runtime manager health.\n required: [ready, descriptor, shards]\n additionalProperties: false\n properties:\n ready: { type: boolean }\n descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n shards:\n type: array\n items: { $ref: \"#/components/schemas/PluginRuntimeShardHealth\" }\n RuntimeTarget:\n oneOf:\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: darwin }\n arch: { const: amd64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: darwin }\n arch: { const: arm64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: linux }\n arch: { const: amd64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: linux }\n arch: { const: arm64 }\n RuntimeAdmissionTarget:\n type: string\n enum: [linux/amd64, linux/arm64]\n StrictSemVer:\n type: string\n pattern: '^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$'\n RuntimeDescriptor:\n type: object\n required: [schema_version, platform_version, target, rust_ipc_version, wasm_abi_version, contract_set_sha256, binary_sha256]\n additionalProperties: false\n properties:\n schema_version: { const: runtime-descriptor-v2 }\n platform_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n target: { $ref: \"#/components/schemas/RuntimeAdmissionTarget\" }\n rust_ipc_version: { const: rust-ipc-v6 }\n wasm_abi_version: { const: redevplugin-wasm-worker-v2 }\n contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n RuntimeLimits:\n type: object\n description: \"Negotiated runtime capacities. per_plugin_concurrency must not exceed worker_count. Route capacities are derived exactly from negotiated limits: active hostcall routes = worker_count, canceled hostcall retention = worker_count + queue_capacity, and compile-flight artifact routes = worker_count.\"\n required: [worker_count, queue_capacity, per_plugin_concurrency, module_cache_entries, module_cache_source_bytes]\n additionalProperties: false\n properties:\n worker_count: { type: integer, minimum: 1, maximum: 64, description: \"Number of runtime worker threads.\" }\n queue_capacity: { type: integer, minimum: 1, maximum: 64, description: \"Maximum queued worker invocations.\" }\n per_plugin_concurrency: { type: integer, minimum: 1, maximum: 64, description: \"Maximum concurrent invocations for one plugin; must not exceed worker_count.\" }\n module_cache_entries: { type: integer, minimum: 1, maximum: 1024, description: \"Maximum compiled modules retained by the runtime cache.\" }\n module_cache_source_bytes: { type: integer, minimum: 1, maximum: 134217728, description: \"Maximum source WASM bytes retained by the runtime cache (128 MiB).\" }\n RuntimeModuleCacheMetrics:\n type: object\n required: [hits, misses, compiles, entries, source_bytes]\n additionalProperties: false\n properties:\n hits: { type: integer, minimum: 0, maximum: 9007199254740991 }\n misses: { type: integer, minimum: 0, maximum: 9007199254740991 }\n compiles: { type: integer, minimum: 0, maximum: 9007199254740991 }\n entries: { type: integer, minimum: 0, maximum: 1024 }\n source_bytes: { type: integer, minimum: 0, maximum: 134217728 }\n PluginRuntimeStopResult:\n type: object\n required: [stopped]\n additionalProperties: false\n properties:\n stopped: { const: true }\n PluginRuntimeRefreshResult:\n type: object\n required: [results]\n additionalProperties: false\n properties:\n results:\n type: array\n items: { $ref: \"#/components/schemas/PluginRuntimeRefreshEntry\" }\n PluginRuntimeRefreshEntry:\n oneOf:\n - $ref: \"#/components/schemas/PluginRuntimeRefreshSuccess\"\n - $ref: \"#/components/schemas/PluginRuntimeRefreshFailure\"\n PluginRuntimeRefreshSuccess:\n type: object\n required: [plugin_instance_id, status]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n status: { const: refreshed }\n PluginRuntimeRefreshFailure:\n type: object\n required: [plugin_instance_id, status, error]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n status: { const: failed }\n error: { $ref: \"#/components/schemas/PluginRuntimeRefreshPublicError\" }\n PluginRuntimeRefreshPublicError:\n type: object\n required: [code, message]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_RUNTIME_UNAVAILABLE]\n message: { const: \"Plugin runtime state could not be refreshed\" }\n PluginDataExportResult:\n type: object\n required: [bundle_ref]\n additionalProperties: false\n properties:\n bundle_ref: { type: string, minLength: 1 }\n PluginDataExportDeleteResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted: { const: true }\n PluginSecretBindResult:\n type: object\n required: [bound]\n additionalProperties: false\n properties:\n bound: { const: true }\n PluginSecretTestResult:\n type: object\n required: [tested]\n additionalProperties: false\n properties:\n tested: { const: true }\n PluginSecretDeleteResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted: { const: true }\n PluginSettingsField:\n type: object\n required: [key, type, label, scope]\n additionalProperties: false\n properties:\n key: { type: string }\n type: { type: string }\n label: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n default: true\n secret_ref: { type: string }\n options:\n type: array\n items: { type: string }\n validation:\n type: object\n additionalProperties: true\n PluginSettingsSchema:\n type: object\n description: Explicit public HTTP projection of the settings schema for one owner scope.\n required: [plugin_instance_id, scope, schema_version, fields, values_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n schema_version: { type: integer, minimum: 1 }\n fields:\n type: array\n items: { $ref: \"#/components/schemas/PluginSettingsField\" }\n values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n PluginSettingsSnapshot:\n type: object\n description: Explicit public HTTP projection of settings values and redacted secret metadata for one owner scope.\n required: [plugin_instance_id, scope, schema_version, values_revision, values, secret_metadata]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n schema_version: { type: integer, minimum: 1 }\n values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n values:\n type: object\n additionalProperties: true\n secret_metadata:\n type: array\n items: { $ref: \"#/components/schemas/PluginSettingsSecretMetadata\" }\n PluginSettingsSecretMetadata:\n type: object\n required: [key, secret_ref, scope, bound]\n additionalProperties: false\n properties:\n key: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { type: string, enum: [user, environment] }\n bound: { type: boolean }\n last_test_status: { type: string }\n bound_at: { type: string, format: date-time }\n tested_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n ExternalPackageIntentRequest:\n description: Closed install or update intent. Update concurrency values are supplied by the caller, while package identity is always derived from the inspected artifact.\n oneOf:\n - type: object\n required: [action]\n additionalProperties: false\n properties:\n action: { const: install }\n - type: object\n required: [action, plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n action: { const: update }\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ExternalPackageIntent:\n description: Server-resolved install or update intent. The platform generates the install instance identifier during inspection.\n oneOf:\n - type: object\n required: [action, plugin_instance_id]\n additionalProperties: false\n properties:\n action: { const: install }\n plugin_instance_id: { type: string, minLength: 1 }\n - type: object\n required: [action, plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n action: { const: update }\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ExternalPackageSource:\n description: Caller-selected external source. Redirect resolution, package hashes, identity, and provenance are derived by the platform.\n oneOf:\n - type: object\n required: [kind, url]\n additionalProperties: false\n properties:\n kind: { const: package_url }\n url: { type: string, format: uri, minLength: 1 }\n - type: object\n required: [kind, url]\n additionalProperties: false\n properties:\n kind: { const: github_repository }\n url: { type: string, format: uri, minLength: 1 }\n tag:\n type: string\n minLength: 1\n maxLength: 255\n description: Optional exact release tag. When omitted, the resolver selects the repository's latest eligible release.\n InspectExternalPackageRequest:\n type: object\n description: Requests server-side inspection. Trust, hashes, package identity, approval, provenance, signature assessment, and update eligibility are intentionally not caller-controlled.\n required: [intent, source]\n additionalProperties: false\n properties:\n intent: { $ref: \"#/components/schemas/ExternalPackageIntentRequest\" }\n source: { $ref: \"#/components/schemas/ExternalPackageSource\" }\n CommitExternalPackageRequest:\n type: object\n description: Confirms the exact immutable inspection. The digest cannot override any inspected fact.\n required: [inspection_id, confirmation_digest]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n confirmation_digest: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n QueryExternalPackageCommitRequest:\n type: object\n required: [inspection_id]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n commit_id: { type: string, minLength: 1 }\n ExternalPackageSignatureAssessment:\n type: object\n description: Cryptographic signature fact computed over the inspected artifact. The absent state is installable and affects trust classification and automatic-update eligibility only.\n required: [state, reason_codes, assessed_hashes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [verified, absent, unknown_signer, invalid, revoked, unavailable]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_hashes: { $ref: \"#/components/schemas/TrustHashSet\" }\n algorithm: { type: string, minLength: 1 }\n key_id: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n assessment_epoch: { type: string, minLength: 1 }\n ExternalPackageRedirectHop:\n type: object\n description: Credential-free redirect projection. Userinfo, query strings, and fragments are never exposed.\n required: [origin, path]\n additionalProperties: false\n properties:\n origin: { type: string, format: uri, minLength: 1 }\n path: { type: string, pattern: \"^/\" }\n ExternalPackageSourceProvenance:\n description: Stable, credential-free source provenance computed after URL, GitHub release, or uploaded-package resolution. Upload identifiers are opaque server-generated values and cannot be supplied by callers.\n oneOf:\n - type: object\n required: [kind, source_origin, source_path, redirect_chain, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: package_url }\n source_origin: { type: string, format: uri, minLength: 1 }\n source_path: { type: string, pattern: \"^/\" }\n redirect_chain:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageRedirectHop\" }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n - type: object\n required: [kind, upload_id, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: package_upload }\n upload_id:\n type: string\n minLength: 1\n description: Opaque server-generated identifier for the staged uploaded artifact.\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n - type: object\n required: [kind, repository_id, release_id, asset_id, repository_url, owner, repository, resolved_commit_sha, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: github_repository }\n repository_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub repository database ID encoded as decimal text.\n release_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub release database ID encoded as decimal text.\n asset_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub release asset database ID encoded as decimal text.\n repository_url: { type: string, format: uri, minLength: 1 }\n owner:\n type: string\n minLength: 1\n description: Display-only owner login; repository_id remains authoritative across renames.\n repository:\n type: string\n minLength: 1\n description: Display-only repository name; repository_id remains authoritative across renames.\n resolved_commit_sha: { type: string, pattern: \"^[0-9a-f]{40}$\" }\n release_tag: { type: string, minLength: 1 }\n asset_name: { type: string, minLength: 1 }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n ExternalPackageExecutionApproval:\n type: object\n description: Execution decision independent from signature state. Session and owner hashes are excluded from this public projection.\n required: [state, reason_codes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [pending, user_approved, policy_approved, policy_blocked]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n approved_at: { type: string, format: date-time }\n ExternalPackageUpdateEligibility:\n type: object\n description: Automatic-update decision. Unsigned or otherwise unverified packages remain installable but are normally manual-only.\n required: [state, reason_codes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [manual_only, automatic_eligible]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n ExternalPackagePermissionSummary:\n type: object\n required: [permission_id, methods]\n additionalProperties: false\n properties:\n permission_id: { type: string, minLength: 1 }\n methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n ExternalPackageMethodRouteSummary:\n type: object\n required: [kind]\n additionalProperties: false\n properties:\n kind: { type: string, enum: [capability, worker, core_action] }\n binding_id: { type: string, minLength: 1 }\n target_method: { type: string, minLength: 1 }\n worker_id: { type: string, minLength: 1 }\n action_id: { type: string, minLength: 1 }\n ExternalPackageConfirmationSummary:\n type: object\n required: [mode, request_hash_fields, plan_hash_required]\n additionalProperties: false\n properties:\n mode: { type: string, enum: [none, required, risk_based] }\n preflight_method: { type: string, minLength: 1 }\n request_hash_fields:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n plan_hash_required: { type: boolean }\n ExternalPackageCancelSummary:\n type: object\n required: [cancelable, disable_behavior, uninstall_behavior, ack_timeout_ms]\n additionalProperties: false\n properties:\n cancelable: { type: boolean }\n disable_behavior: { type: string, enum: [cancel, orphan, wait] }\n uninstall_behavior: { type: string, enum: [cancel_then_block_delete, force_cleanup_allowed] }\n ack_timeout_ms: { type: integer, minimum: 0 }\n ExternalPackageMethodSummary:\n type: object\n required: [method, route, effect, execution, dangerous, preflight_only, required_permissions, confirmation]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n route: { $ref: \"#/components/schemas/ExternalPackageMethodRouteSummary\" }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n dangerous: { type: boolean }\n preflight_only: { type: boolean }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n confirmation: { $ref: \"#/components/schemas/ExternalPackageConfirmationSummary\" }\n cancel: { $ref: \"#/components/schemas/ExternalPackageCancelSummary\" }\n ExternalPackageCapabilityContractSummary:\n type: object\n required: [binding_id, capability_id, capability_version, contract_sha256]\n additionalProperties: false\n properties:\n binding_id: { type: string, minLength: 1 }\n capability_id: { type: string, minLength: 1 }\n capability_version: { type: string, minLength: 1 }\n contract_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n ExternalPackageWorkerSummary:\n type: object\n required: [worker_id, artifact, abi, mode, scope, memory_limit_bytes, idle_timeout_ms]\n additionalProperties: false\n properties:\n worker_id: { type: string, minLength: 1 }\n artifact: { type: string, minLength: 1 }\n abi: { const: redevplugin-wasm-worker-v2 }\n mode: { const: job }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n memory_limit_bytes: { type: integer, minimum: 1, maximum: 268435456 }\n idle_timeout_ms: { type: integer, minimum: 0 }\n ExternalPackageNetworkMethodAccessSummary:\n type: object\n required: [method, operations, http_methods]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n operations:\n type: array\n uniqueItems: true\n items: { type: string, enum: [http, http_stream, websocket_round_trip, tcp_round_trip, udp_round_trip] }\n http_methods:\n type: array\n uniqueItems: true\n items: { type: string, enum: [GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS] }\n ExternalPackageNetworkSummary:\n type: object\n required: [connector_id, transport, scope, destinations, auth_declared, tls_declared, method_access]\n additionalProperties: false\n properties:\n connector_id: { type: string, minLength: 1 }\n transport: { type: string, enum: [http, websocket, tcp, udp] }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n destinations:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n auth_declared: { type: boolean }\n tls_declared: { type: boolean }\n method_access:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageNetworkMethodAccessSummary\" }\n ExternalPackageStorageMethodAccessSummary:\n type: object\n required: [method, operations]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n operations:\n type: array\n uniqueItems: true\n items: { type: string, enum: [read, write, delete, list, get, put, query, exec] }\n ExternalPackageStorageSummary:\n type: object\n required: [store_id, kind, scope, quota_bytes, schema_version, method_access]\n additionalProperties: false\n properties:\n store_id: { type: string, minLength: 1 }\n kind: { type: string, enum: [kv, files, sqlite] }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n quota_bytes: { type: integer, minimum: 1, maximum: 1073741824 }\n quota_files: { type: integer, minimum: 1, maximum: 100000 }\n schema_version: { type: integer, minimum: 1 }\n method_access:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageStorageMethodAccessSummary\" }\n ExternalPackageSecretRefSummary:\n type: object\n required: [setting_key, secret_ref, scope]\n additionalProperties: false\n properties:\n setting_key: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n ExternalPackageCoreActionSummary:\n type: object\n required: [method, action_id, effect]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n action_id: { type: string, minLength: 1 }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n ExternalPackageIntentSummary:\n type: object\n required: [intent_id, method]\n additionalProperties: false\n properties:\n intent_id: { type: string, minLength: 1 }\n method: { type: string, minLength: 1 }\n ExternalPackageSurfaceSummary:\n type: object\n required: [surface_id, kind, intent, label, entry]\n additionalProperties: false\n properties:\n surface_id: { type: string, minLength: 1 }\n kind: { type: string, enum: [view, command, background] }\n intent: { type: string, enum: [primary, secondary, utility] }\n label: { type: string, minLength: 1 }\n entry: { type: string, minLength: 1 }\n icon: { type: string, minLength: 1 }\n default_size: { $ref: \"#/components/schemas/ExternalPackageSizeSummary\" }\n ExternalPackageSizeSummary:\n type: object\n required: [width, height]\n additionalProperties: false\n properties:\n width: { type: integer, minimum: 1 }\n height: { type: integer, minimum: 1 }\n ExternalPackageSecuritySummary:\n type: object\n description: Closed, display-ready projection of every security-relevant declaration in the inspected manifest.\n required: [summary_sha256, permissions, methods, capability_contracts, workers, network, storage, secret_refs, core_actions, intents, surfaces]\n additionalProperties: false\n properties:\n summary_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n permissions:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackagePermissionSummary\" }\n methods:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageMethodSummary\" }\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageCapabilityContractSummary\" }\n workers:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageWorkerSummary\" }\n network:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageNetworkSummary\" }\n storage:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageStorageSummary\" }\n secret_refs:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageSecretRefSummary\" }\n core_actions:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageCoreActionSummary\" }\n intents:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageIntentSummary\" }\n surfaces:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageSurfaceSummary\" }\n SettingOptionPresentation:\n type: object\n required: [value, label]\n additionalProperties: false\n properties:\n value: { type: string, minLength: 1, maxLength: 128 }\n label: { type: string, minLength: 1, maxLength: 128 }\n ResolvedSurfacePresentation:\n type: object\n required: [surface_id, label]\n additionalProperties: false\n properties:\n surface_id: { type: string, minLength: 1 }\n label: { type: string, minLength: 1, maxLength: 128 }\n ResolvedSettingPresentation:\n type: object\n required: [key, label, options]\n additionalProperties: false\n properties:\n key: { type: string, minLength: 1 }\n label: { type: string, minLength: 1, maxLength: 128 }\n options:\n type: array\n items: { $ref: \"#/components/schemas/SettingOptionPresentation\" }\n PresentationLocale:\n type: object\n required: [locale, plugin_name, summary, description, highlights, keywords, surfaces, settings]\n additionalProperties: false\n properties:\n locale: { type: string, minLength: 2, maxLength: 255 }\n plugin_name: { type: string, minLength: 1, maxLength: 128 }\n publisher_name: { type: string, minLength: 1, maxLength: 128 }\n summary: { type: string, minLength: 1, maxLength: 240 }\n description:\n type: array\n minItems: 1\n maxItems: 12\n items: { type: string, minLength: 1, maxLength: 1000 }\n highlights:\n type: array\n maxItems: 8\n items: { type: string, minLength: 1, maxLength: 240 }\n keywords:\n type: array\n minItems: 1\n maxItems: 12\n items: { type: string, minLength: 1, maxLength: 64 }\n surfaces:\n type: array\n items: { $ref: \"#/components/schemas/ResolvedSurfacePresentation\" }\n settings:\n type: array\n items: { $ref: \"#/components/schemas/ResolvedSettingPresentation\" }\n PresentationCatalog:\n type: object\n required: [default_locale, locales]\n additionalProperties: false\n properties:\n default_locale: { type: string, minLength: 2, maxLength: 255 }\n locales:\n type: array\n minItems: 1\n maxItems: 16\n items: { $ref: \"#/components/schemas/PresentationLocale\" }\n ExternalPackageInspection:\n type: object\n description: Immutable inspection projection. Package identity and all four trust/security facts are server-derived.\n required: [inspection_id, expires_at, intent, publisher_id, plugin_id, version, presentation, presentation_sha256, inspected_hashes, signature_assessment, source_provenance, execution_approval, update_eligibility, security_summary, confirmation_digest]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n expires_at: { type: string, format: date-time }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n inspected_hashes: { $ref: \"#/components/schemas/TrustHashSet\" }\n signature_assessment: { $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\" }\n source_provenance: { $ref: \"#/components/schemas/ExternalPackageSourceProvenance\" }\n execution_approval: { $ref: \"#/components/schemas/ExternalPackageExecutionApproval\" }\n update_eligibility: { $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\" }\n security_summary: { $ref: \"#/components/schemas/ExternalPackageSecuritySummary\" }\n confirmation_digest: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n ExternalPackageCommitReceipt:\n type: object\n description: Immutable successful commit evidence.\n required: [commit_id, inspection_id, package_sha256, management_revision, committed_at]\n additionalProperties: false\n properties:\n commit_id: { type: string, minLength: 1 }\n inspection_id: { type: string, minLength: 1 }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n committed_at: { type: string, format: date-time }\n ExternalPackageCommitResult:\n description: Closed commit reconciliation union. A committed result repeats all four facts so clients never infer them from legacy trust_state alone. A failed result is terminal evidence that a durable commit did not occur and requires a fresh inspection before retrying.\n oneOf:\n - type: object\n required: [status, inspection_id, intent, receipt, plugin, signature_assessment, source_provenance, execution_approval, update_eligibility, security_summary]\n additionalProperties: false\n properties:\n status: { const: committed }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n receipt: { $ref: \"#/components/schemas/ExternalPackageCommitReceipt\" }\n plugin: { $ref: \"#/components/schemas/PluginRecord\" }\n signature_assessment: { $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\" }\n source_provenance: { $ref: \"#/components/schemas/ExternalPackageSourceProvenance\" }\n execution_approval: { $ref: \"#/components/schemas/ExternalPackageExecutionApproval\" }\n update_eligibility: { $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\" }\n security_summary: { $ref: \"#/components/schemas/ExternalPackageSecuritySummary\" }\n - type: object\n required: [status, inspection_id, intent, retry_after_ms]\n additionalProperties: false\n properties:\n status: { const: in_progress }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n retry_after_ms: { type: integer, minimum: 1, maximum: 60000 }\n - type: object\n required: [status, inspection_id, intent, failure_code]\n additionalProperties: false\n properties:\n status: { const: failed }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n failure_code: { const: host_restarted_before_commit }\n TrustState:\n type: string\n enum: [verified, unsigned_local, untrusted, needs_review, trust_unavailable, blocked_security]\n TrustHashSet:\n type: object\n required: [package_sha256, manifest_sha256, entries_sha256]\n additionalProperties: false\n properties:\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n VerifiedSignature:\n type: object\n required: [algorithm, key_id]\n additionalProperties: false\n properties:\n algorithm: { type: string, minLength: 1 }\n key_id: { type: string, minLength: 1 }\n TrustAssessment:\n type: object\n required: [trust_state, verified_hashes]\n additionalProperties: false\n properties:\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n reason_codes:\n type: array\n items: { type: string }\n verified_hashes:\n $ref: \"#/components/schemas/TrustHashSet\"\n verified_signature:\n $ref: \"#/components/schemas/VerifiedSignature\"\n trust_assessment_epoch: { type: string }\n policy_epoch: { type: string }\n revocation_epoch: { type: string }\n metadata:\n type: object\n additionalProperties: { type: string }\n PluginVersion:\n type: object\n required: [version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, manifest, presentation, presentation_sha256, package_entries, activated_at]\n additionalProperties: false\n properties:\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n package_hash: { type: string, minLength: 1 }\n manifest_hash: { type: string, minLength: 1 }\n entries_hash: { type: string, minLength: 1 }\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n trust_assessment:\n $ref: \"#/components/schemas/TrustAssessment\"\n source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n source_policy_snapshot:\n type: object\n additionalProperties: true\n local_import_provenance:\n $ref: \"#/components/schemas/LocalImportProvenance\"\n signature_assessment:\n $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\"\n source_provenance:\n $ref: \"#/components/schemas/ExternalPackageSourceProvenance\"\n execution_approval:\n $ref: \"#/components/schemas/ExternalPackageExecutionApproval\"\n update_eligibility:\n $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\"\n security_summary:\n $ref: \"#/components/schemas/ExternalPackageSecuritySummary\"\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n manifest:\n $ref: \"../plugin/manifest-v8.schema.json\"\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n package_entries:\n type: array\n items: { $ref: \"#/components/schemas/PackageEntry\" }\n runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n activated_at: { type: string, format: date-time }\n metadata:\n type: object\n additionalProperties: { type: string }\n PluginRecord:\n type: object\n description: Explicit public HTTP projection of a registry record. Persistent owner identity is excluded.\n required: [plugin_instance_id, publisher_id, plugin_id, version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, enable_state, policy_revision, management_revision, revoke_epoch, manifest, presentation, presentation_sha256, package_entries, installed_at, updated_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n publisher_id: { type: string }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n package_hash: { type: string }\n manifest_hash: { type: string }\n entries_hash: { type: string }\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n trust_assessment:\n $ref: \"#/components/schemas/TrustAssessment\"\n source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n source_policy_snapshot:\n type: object\n additionalProperties: true\n local_import_provenance:\n $ref: \"#/components/schemas/LocalImportProvenance\"\n signature_assessment:\n $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\"\n source_provenance:\n $ref: \"#/components/schemas/ExternalPackageSourceProvenance\"\n execution_approval:\n $ref: \"#/components/schemas/ExternalPackageExecutionApproval\"\n update_eligibility:\n $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\"\n security_summary:\n $ref: \"#/components/schemas/ExternalPackageSecuritySummary\"\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n enable_state:\n type: string\n enum: [disabled, enabled, disabled_by_policy, disabled_incompatible]\n disabled_reason: { type: string }\n policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n manifest:\n $ref: \"../plugin/manifest-v8.schema.json\"\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n package_entries:\n type: array\n items: { $ref: \"#/components/schemas/PackageEntry\" }\n runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n version_history:\n type: array\n items:\n $ref: \"#/components/schemas/PluginVersion\"\n installed_at: { type: string, format: date-time }\n enabled_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n deleted_at: { type: string, format: date-time }\n metadata:\n type: object\n additionalProperties: { type: string }\n PackageEntry:\n type: object\n required: [path, size, sha256, mode]\n additionalProperties: false\n properties:\n path: { type: string, minLength: 1 }\n size: { type: integer, minimum: 0 }\n sha256: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n mode: { type: string, minLength: 1 }\n content_type: { type: string }\n RuntimeRequirement:\n type: object\n required: [min_version]\n additionalProperties: false\n properties:\n min_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n supported_targets:\n type: array\n uniqueItems: true\n items:\n type: string\n enum: [darwin/amd64, darwin/arm64, linux/amd64, linux/arm64]\n LocalImportProvenance:\n type: object\n required: [import_id, distribution, policy_epoch, unsigned_policy, assessed_at]\n additionalProperties: false\n properties:\n import_id: { type: string, minLength: 1 }\n distribution: { enum: [local_import] }\n policy_epoch: { type: string, minLength: 1 }\n unsigned_policy: { enum: [dev_only, review_required, block] }\n assessed_at: { type: string, format: date-time }\n PackageHashSet:\n type: object\n required: [package_sha256, manifest_sha256, entries_sha256]\n additionalProperties: false\n properties:\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n PluginReleaseRef:\n type: object\n required: [source_id, channel, release_metadata_ref, release_metadata_sha256, publisher_id, plugin_id, version, expected_hashes]\n additionalProperties: false\n properties:\n source_id: { type: string, minLength: 1 }\n channel: { type: string, pattern: \"^[a-z][a-z0-9._-]{0,127}$\" }\n release_metadata_ref: { type: string, minLength: 1 }\n release_metadata_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n expected_hashes:\n $ref: \"#/components/schemas/PackageHashSet\"\n InstallReleaseRefRequest:\n type: object\n required: [plugin_instance_id, release_ref]\n additionalProperties: false\n properties:\n release_ref:\n $ref: \"#/components/schemas/PluginReleaseRef\"\n plugin_instance_id: { type: string, minLength: 1 }\n UpdateReleaseRefRequest:\n type: object\n required: [plugin_instance_id, release_ref, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n release_ref:\n $ref: \"#/components/schemas/PluginReleaseRef\"\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n DowngradeRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n package_hash: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n EnableRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n DisableRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n reason: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n UninstallRequest:\n type: object\n required: [plugin_instance_id, delete_data, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n delete_data: { type: boolean }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n OpenSurfaceRequest:\n type: object\n required: [plugin_instance_id, surface_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n RevokeSessionScopeRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n EmptyRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n EmptyQueryRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n ListIntentsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n intent_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n ListOperationsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n cursor: { type: string, minLength: 1, maxLength: 1024 }\n limit: { type: integer, minimum: 1, maximum: 500 }\n ListRetainedDataQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n ListPermissionsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n active_only: { type: boolean }\n PermissionRequirementsQueryRequest:\n type: object\n required: [plugin_instance_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n ListDiagnosticsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n type: { type: string, minLength: 1 }\n severity: { type: string, enum: [info, warning] }\n limit: { type: integer, minimum: 1, maximum: 1000 }\n SettingsQueryRequest:\n type: object\n additionalProperties: false\n required: [scope]\n properties:\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n SurfaceBootstrap:\n type: object\n additionalProperties: false\n required:\n - plugin_id\n - plugin_instance_id\n - plugin_version\n - ui_protocol_version\n - surface_id\n - surface_instance_id\n - active_fingerprint\n - entry_path\n - entry_sha256\n - asset_session_nonce\n - management_revision\n - revoke_epoch\n - runtime_generation_id\n - asset_ticket\n - asset_ticket_id\n - bridge_nonce\n - issued_at\n - expires_at\n properties:\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n ui_protocol_version: { type: string, enum: [plugin-ui-v7] }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n active_fingerprint: { type: string, minLength: 1 }\n entry_path: { type: string, minLength: 1 }\n entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n asset_session_nonce: { type: string, minLength: 16 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n runtime_generation_id: { type: string, minLength: 1 }\n asset_ticket: { type: string, minLength: 1 }\n asset_ticket_id: { type: string, minLength: 1 }\n bridge_nonce: { type: string, minLength: 16 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n PrepareSurfaceRequest:\n type: object\n required: [asset_ticket]\n additionalProperties: false\n properties:\n asset_ticket: { type: string, minLength: 1 }\n SurfacePreparation:\n type: object\n additionalProperties: false\n required:\n - asset_session\n - asset_session_id\n - asset_session_nonce\n - entry_path\n - entry_sha256\n - management_revision\n - revoke_epoch\n - issued_at\n - expires_at\n - document\n properties:\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n asset_session_nonce: { type: string, minLength: 16 }\n entry_path: { type: string, minLength: 1 }\n entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n document:\n $ref: \"../plugin/opaque-surface-document-v3.schema.json\"\n TrustedParentBridgeHandshake:\n type: object\n required: [type, plugin_id, surface_id, surface_instance_id, active_fingerprint, bridge_nonce, asset_session_nonce, management_revision, revoke_epoch, ui_protocol_version]\n additionalProperties: false\n properties:\n type: { const: redevplugin.bridge.handshake }\n plugin_id: { type: string, minLength: 1 }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n active_fingerprint: { type: string, minLength: 1 }\n bridge_nonce: { type: string, minLength: 16 }\n asset_session_nonce: { type: string, minLength: 16 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ui_protocol_version: { type: string, enum: [plugin-ui-v7] }\n TrustedParentBridgeTokenRequest:\n type: object\n required: [handshake, bridge_channel_id, handshake_transcript_sha256]\n additionalProperties: false\n properties:\n handshake:\n $ref: \"#/components/schemas/TrustedParentBridgeHandshake\"\n bridge_channel_id: { type: string, minLength: 1 }\n handshake_transcript_sha256:\n type: string\n pattern: '^sha256:[0-9a-f]{64}$'\n previous_plugin_gateway_token:\n type: string\n minLength: 1\n description: Required only when renewing the current bridge channel lease.\n BridgeTokenResult:\n type: object\n additionalProperties: false\n required: [plugin_gateway_token, plugin_gateway_token_id, asset_session, asset_session_id, issued_at, expires_at]\n properties:\n plugin_gateway_token: { type: string, minLength: 1 }\n plugin_gateway_token_id: { type: string, minLength: 1 }\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n ReadSurfaceAssetRequest:\n type: object\n additionalProperties: false\n required: [asset_session, asset_session_id, binding_id]\n properties:\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n binding_id: { type: string, pattern: '^asset_[A-Za-z0-9_-]{8,128}$' }\n SurfaceAssetResult:\n type: object\n additionalProperties: false\n required: [path, sha256, content_type, content_base64]\n properties:\n path: { type: string, minLength: 1 }\n sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n content_type: { type: string, minLength: 1 }\n content_base64: { type: string, contentEncoding: base64 }\n ReadSurfaceStreamRequest:\n type: object\n additionalProperties: false\n required: [stream_id, stream_ticket, read_id]\n properties:\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n AcknowledgeSurfaceStreamRequest:\n type: object\n additionalProperties: false\n required: [stream_id, stream_ticket, delivery_id]\n properties:\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n SurfaceStreamResult:\n type: object\n additionalProperties: false\n required: [read_id, events, done]\n properties:\n delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n events:\n type: array\n items:\n $ref: \"#/components/schemas/StreamEvent\"\n done: { type: boolean }\n terminal_status:\n enum: [closed, canceled, failed, orphaned_after_disable, orphaned_after_uninstall]\n allOf:\n - if:\n properties: { events: { minItems: 1 } }\n required: [events]\n then:\n required: [delivery_id]\n - if:\n properties: { done: { const: false } }\n required: [done]\n then:\n not:\n required: [terminal_status]\n - if:\n properties: { done: { const: true } }\n required: [done]\n then:\n required: [delivery_id, terminal_status]\n SurfaceStreamAcknowledgementResult:\n type: object\n required: [acknowledged]\n additionalProperties: false\n properties:\n acknowledged: { const: true }\n CancelSurfaceOperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id, bridge_channel_id]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n reason: { type: string, maxLength: 256 }\n GetSurfaceOperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id, bridge_channel_id]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n PluginOperationSnapshot:\n oneOf:\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { type: string, enum: [running, cancel_requested] }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms, terminal_at]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { type: string, enum: [completed, canceled, orphaned_after_disable, orphaned_after_uninstall] }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n terminal_at: { type: string, format: date-time }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms, terminal_at, failure_code]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { const: failed }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n terminal_at: { type: string, format: date-time }\n failure_code: { type: string, enum: [adapter_failed, contract_invalid, platform_failed, quota_exceeded, runtime_failed] }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n OperationProgress:\n type: object\n additionalProperties: false\n required: [revision, phase]\n properties:\n revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n phase: { type: string, pattern: '^[A-Za-z0-9._:-]{1,128}$' }\n completed_units: { type: integer, minimum: 0, maximum: 9007199254740991 }\n total_units: { type: integer, minimum: 0, maximum: 9007199254740991 }\n unit: { type: string, pattern: '^[A-Za-z0-9._:-]{1,64}$' }\n allOf:\n - if:\n required: [completed_units]\n then:\n required: [total_units]\n - if:\n required: [total_units]\n then:\n required: [completed_units]\n RejectSurfaceConfirmationRequest:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, bridge_channel_id, plugin_gateway_token, confirmation_id]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n plugin_gateway_token: { type: string, minLength: 1 }\n confirmation_id: { type: string, pattern: '^confirmation_[A-Za-z0-9_-]{8,128}$' }\n ConfirmationRejectionResult:\n type: object\n additionalProperties: false\n required: [rejected]\n properties:\n rejected: { const: true }\n StreamEvent:\n type: object\n additionalProperties: false\n required: [stream_id, sequence, kind, at]\n properties:\n stream_id: { type: string, minLength: 1 }\n sequence: { type: integer, minimum: 0 }\n kind: { type: string, minLength: 1 }\n data: { type: string, contentEncoding: base64 }\n error: { type: string }\n at: { type: string, format: date-time }\n DisposeSurfaceRequest:\n type: object\n additionalProperties: false\n required: [bridge_nonce]\n properties:\n bridge_nonce: { type: string, minLength: 16 }\n RPCRequest:\n type: object\n required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1 }\n plugin_gateway_token: { type: string, minLength: 1 }\n confirmation_id: { type: string }\n method: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n PrepareMethodConfirmationRequest:\n type: object\n required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1 }\n plugin_gateway_token: { type: string, minLength: 1 }\n method: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n RPCResult:\n oneOf:\n - type: object\n additionalProperties: false\n properties:\n data: true\n not:\n anyOf:\n - required: [operation_id]\n - required: [stream_id]\n - required: [confirmation_required]\n - type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n data: true\n operation_id: { type: string, minLength: 1 }\n - type: object\n additionalProperties: false\n required: [operation_id, stream_id, stream_ticket, stream_ticket_id, stream_expires_at]\n properties:\n data: true\n operation_id: { type: string, minLength: 1 }\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n stream_ticket_id: { type: string, minLength: 1 }\n stream_expires_at: { type: string, format: date-time }\n - type: object\n additionalProperties: false\n required: [confirmation_required, confirmation_token_id, request_hash, plan_hash]\n properties:\n confirmation_required: { const: true }\n confirmation_token_id: { type: string, minLength: 1 }\n request_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n plan_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n RiskFlag:\n type: object\n required: [id, severity, summary]\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n description: Stable machine-readable risk identifier.\n severity:\n type: string\n enum: [info, low, medium, high, critical]\n summary: { type: string, minLength: 1 }\n description: { type: string }\n requires_confirmation: { type: boolean }\n requires_admin: { type: boolean }\n data_loss_risk: { type: boolean }\n destructive: { type: boolean }\n RiskPlan:\n type: object\n required: [schema_version, summary, risk_flags]\n additionalProperties: false\n properties:\n schema_version: { const: redevplugin.capability.risk_plan.v1 }\n capability_id: { type: string }\n binding_id: { type: string }\n method: { type: string }\n target_method: { type: string }\n action: { type: string }\n effect:\n type: string\n enum: [read, write, execute, delete, admin]\n resource_ref: { type: string }\n resource_display_name: { type: string }\n summary: { type: string, minLength: 1 }\n risk_flags:\n type: array\n items:\n $ref: \"#/components/schemas/RiskFlag\"\n requires_confirmation: { type: boolean }\n requires_admin: { type: boolean }\n data_loss_risk: { type: boolean }\n destructive: { type: boolean }\n deny_reason: { type: string }\n details:\n type: object\n additionalProperties: true\n PluginMethodConfirmationPreparation:\n type: object\n required: [confirmation_id, confirmation_token_id, request_hash, plan_hash, expires_at]\n additionalProperties: false\n properties:\n confirmation_id: { type: string, minLength: 1 }\n confirmation_token_id:\n type: string\n minLength: 1\n description: Opaque audit/display id for the server-held confirmation token. It is not a credential.\n request_hash:\n type: string\n pattern: \"^sha256:[0-9a-f]{64}$\"\n plan_hash:\n type: string\n pattern: \"^sha256:[0-9a-f]{64}$\"\n plan:\n description: Host-redacted confirmation plan payload returned by the declared preflight method, when available.\n oneOf:\n - $ref: \"#/components/schemas/RiskPlan\"\n - type: object\n additionalProperties: true\n properties:\n schema_version:\n not:\n type: string\n pattern: '^redevplugin\\.capability\\.risk_plan\\.'\n expires_at: { type: string, format: date-time }\n InvokeIntentRequest:\n type: object\n required: [intent_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n intent_id: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n CancelOperationRequest:\n type: object\n additionalProperties: false\n properties:\n reason: { type: string }\n CapabilityContractPin:\n $ref: \"../plugin/host-capability-pin-v1.schema.json\"\n PublicOperationBinding:\n type: object\n description: Public immutable execution evidence embedded into operation responses. Session and bridge channel ownership fields are excluded.\n required:\n - invocation_id\n - audit_correlation_id\n - publisher_id\n - plugin_id\n - plugin_instance_id\n - plugin_version\n - active_fingerprint\n - route_kind\n - capability_id\n - capability_version\n - binding_id\n - method\n - target_method\n - effect\n - execution\n - permissions\n - confirmation\n - revision\n - quota\n - target\n - target_descriptor_sha256\n properties:\n invocation_id: { type: string, minLength: 1 }\n audit_correlation_id: { type: string, minLength: 1 }\n operation_id: { type: string, minLength: 1 }\n stream_id: { type: string, minLength: 1 }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n surface_instance_id: { type: string }\n route_kind: { type: string, enum: [capability, worker, core_action] }\n capability_id: { type: string, minLength: 1 }\n capability_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n binding_id: { type: string, minLength: 1 }\n contract:\n $ref: \"#/components/schemas/CapabilityContractPin\"\n method: { type: string, minLength: 1 }\n target_method: { type: string, minLength: 1 }\n effect: { type: string, enum: [read, write, execute, delete, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n permissions:\n type: object\n additionalProperties: false\n required: [required, granted]\n properties:\n required: { type: array, items: { type: string } }\n granted: { type: array, items: { type: string } }\n confirmation:\n type: object\n additionalProperties: false\n required: [required, confirmed]\n properties:\n required: { type: boolean }\n confirmed: { type: boolean }\n confirmation_id: { type: string }\n request_sha256: { type: string }\n plan_sha256: { type: string }\n target_sha256: { type: string }\n revision:\n type: object\n additionalProperties: false\n required: [policy_revision, management_revision, revoke_epoch]\n properties:\n policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n quota:\n type: object\n additionalProperties: false\n properties:\n max_concurrent: { type: integer, minimum: 0, maximum: 9007199254740991 }\n max_duration_ms: { type: integer, minimum: 0, maximum: 9007199254740991 }\n max_stream_bytes: { type: integer, minimum: 0, maximum: 9007199254740991 }\n expires_at: { type: string, format: date-time }\n target:\n type: object\n additionalProperties: false\n required: [kind, fields]\n properties:\n kind: { type: string, minLength: 1 }\n fields: { type: object, additionalProperties: true }\n target_descriptor_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n stream_event_type_name: { type: string, minLength: 1 }\n stream_event_schema_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n oneOf:\n - required: [route_kind, contract]\n properties:\n route_kind: { const: capability }\n - required: [route_kind]\n properties:\n route_kind: { const: worker }\n not:\n required: [contract]\n - required: [route_kind]\n properties:\n route_kind: { const: core_action }\n not:\n required: [contract]\n OperationRecord:\n allOf:\n - $ref: \"#/components/schemas/PublicOperationBinding\"\n - type: object\n required:\n - operation_id\n - cancelable\n - created_at\n - updated_at\n properties:\n operation_id: { type: string, minLength: 1 }\n execution: { type: string, enum: [operation, subscription] }\n cancelable: { type: boolean }\n cancel_ack_timeout_ms: { type: integer, minimum: 0 }\n disable_behavior: { type: string, enum: [cancel, orphan, wait] }\n uninstall_behavior: { type: string, enum: [cancel_then_block_delete, force_cleanup_allowed] }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n cancel_requested_at: { type: string, format: date-time }\n orphaned_at: { type: string, format: date-time }\n terminal_at: { type: string, format: date-time }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n oneOf:\n - type: object\n required: [status, failure_code, reason]\n properties:\n status: { const: failed }\n failure_code: { $ref: \"#/components/schemas/ExecutionFailureCode\" }\n reason: { const: \"execution failed\" }\n - type: object\n required: [status]\n properties:\n status:\n enum: [running, cancel_requested, canceled, completed, orphaned_after_disable, orphaned_after_uninstall]\n reason: { type: string }\n not:\n required: [failure_code]\n unevaluatedProperties: false\n ExecutionFailureCode:\n type: string\n enum: [adapter_failed, contract_invalid, platform_failed, quota_exceeded, runtime_failed]\n StartRuntimeRequest:\n type: object\n required: [target]\n additionalProperties: false\n properties:\n target: { $ref: \"#/components/schemas/RuntimeTarget\" }\n ExportDataRequest:\n type: object\n required: [plugin_instance_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n DeleteDataExportRequest:\n type: object\n required: [plugin_instance_id, bundle_ref]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bundle_ref: { type: string, minLength: 1 }\n ImportDataRequest:\n type: object\n required: [plugin_instance_id, bundle_ref, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bundle_ref: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n PluginDataBinding:\n type: object\n required: [plugin_instance_id, generation_id, state, revision, shape_hash]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n generation_id: { type: string, minLength: 1 }\n state: { type: string, enum: [active, retained] }\n revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n shape_hash: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n retained_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n RetainedDataList:\n type: object\n required: [retained_data]\n additionalProperties: false\n properties:\n retained_data:\n type: array\n items:\n $ref: \"#/components/schemas/PluginDataBinding\"\n RetainedDataCleanupResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted:\n type: array\n items:\n $ref: \"#/components/schemas/PluginDataBinding\"\n DeleteRetainedDataRequest:\n type: object\n required: [plugin_instance_id, expected_binding_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n BindRetainedDataRequest:\n type: object\n required: [source_plugin_instance_id, expected_source_binding_revision, target_plugin_instance_id, target_expected_management_revision]\n additionalProperties: false\n properties:\n source_plugin_instance_id: { type: string, minLength: 1 }\n expected_source_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n target_plugin_instance_id: { type: string, minLength: 1 }\n target_expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n CleanupExpiredRetainedDataRequest:\n type: object\n additionalProperties: false\n GrantPermissionRequest:\n type: object\n required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n permission_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n expires_at: { type: string, format: date-time }\n RevokePermissionRequest:\n type: object\n required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n permission_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n reason: { type: string }\n PutSecurityPolicyRequest:\n type: object\n required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch, allowed_permissions, denied_methods]\n additionalProperties: false\n properties:\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n allowed_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n denied_methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n DeleteSecurityPolicyRequest:\n type: object\n required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n SecretRefRequest:\n type: object\n required: [plugin_instance_id, secret_ref, scope]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { type: string, enum: [user, environment] }\n ResourceScopeKind:\n type: string\n enum: [user, environment]\n PatchSettingsRequest:\n type: object\n required: [scope, expected_values_revision]\n additionalProperties: false\n minProperties: 3\n properties:\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n set:\n type: object\n minProperties: 1\n additionalProperties: true\n remove:\n type: array\n minItems: 1\n uniqueItems: true\n items: { type: string, minLength: 1 }\n";
171
+ readonly path: "spec/openapi/plugin-platform-v13.yaml";
172
+ readonly version: "plugin-platform-v13";
173
+ readonly sha256: "e0b0c3a2aede94b80e32fb84adf5f88d867c6e9958565c106e60ad5a2ae36f5e";
174
+ readonly body: "openapi: 3.1.0\ninfo:\n title: ReDevPlugin Plugin Platform API\n version: plugin-platform-v13\n description: Host-agnostic plugin management, bridge, operation, data, and sandbox routes. Release-ref install and update routes resolve host-controlled package artifacts server-side and do not accept requested trust_state values; external package URL, GitHub repository, and uploaded-package inspection flows derive package identity and trust facts server-side before reusing the shared commit/query lifecycle; local-import package install/update routes remain explicit developer/import flows and do not accept caller-supplied trust_state values.\nx-redevplugin-query-policy:\n reject_url_query_strings: true\n require_closed_json_bodies: true\n require_exact_origin: true\n csrf:\n get_query: not_required\n post_query: required\n mutation: required\npaths:\n /_redevplugin/api/plugins/{plugin_instance_id}/local-import:\n post:\n operationId: importLocalPackage\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n put:\n operationId: updateLocalPackage\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n - name: X-ReDevPlugin-Expected-Management-Revision\n in: header\n required: true\n description: Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected.\n schema: { type: integer, minimum: 1, maximum: 9007199254740991 }\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/inspect:\n post:\n operationId: inspectExternalPackage\n x-redevplugin-route-effect: mutation\n description: Resolves and inspects a package from a caller-selected URL or GitHub repository without installing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller.\n requestBody:\n $ref: \"#/components/requestBodies/InspectExternalPackageRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/upload/inspect:\n post:\n operationId: inspectUploadedExternalPackageInstall\n x-redevplugin-route-effect: mutation\n description: Uploads and inspects a package for installation without committing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller. The returned inspection is committed and reconciled through the shared external-package commit/query routes.\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/external-packages/upload/inspect:\n put:\n operationId: inspectUploadedExternalPackageUpdate\n x-redevplugin-route-effect: mutation\n description: Uploads and inspects a package for an optimistic-concurrency-controlled update without committing it. Package identity, hashes, provenance, signature state, approval, and update eligibility are computed by the platform and cannot be supplied by the caller. The returned inspection is committed and reconciled through the shared external-package commit/query routes.\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n - name: X-ReDevPlugin-Expected-Management-Revision\n in: header\n required: true\n description: Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected.\n schema: { type: integer, minimum: 1, maximum: 9007199254740991 }\n requestBody:\n required: true\n content:\n application/vnd.redevplugin.package+zip:\n schema: { type: string, format: binary }\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageInspectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/commit:\n post:\n operationId: commitExternalPackage\n x-redevplugin-route-effect: mutation\n description: Commits one unexpired inspection after the user confirms its exact server-computed digest. An absent signature does not make a package ineligible for installation; signature assessment affects trust classification and automatic-update eligibility only.\n requestBody:\n $ref: \"#/components/requestBodies/CommitExternalPackageRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageCommitResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/external-packages/commit/query:\n post:\n operationId: queryExternalPackageCommit\n x-redevplugin-route-effect: query\n description: Reconciles the commit result for one inspection without repeating the mutation.\n requestBody:\n $ref: \"#/components/requestBodies/QueryExternalPackageCommitRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ExternalPackageCommitResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/install-release-ref:\n post:\n operationId: installReleaseRef\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/InstallReleaseRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/release-install-operations:\n post:\n operationId: startReleaseInstallOperation\n x-redevplugin-route-effect: mutation\n description: Starts or recovers one owner-scoped durable release installation. Disconnecting the observer does not cancel the installation.\n requestBody:\n $ref: \"#/components/requestBodies/StartReleaseInstallOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ReleaseInstallOperationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n get:\n operationId: listReleaseInstallOperations\n x-redevplugin-route-effect: query\n description: Lists owner-scoped release installation operations. Trusted Origin and authenticated session remain required; GET queries do not require CSRF.\n responses:\n \"200\": { $ref: \"#/components/responses/ReleaseInstallOperationListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/release-install-operations/{operation_id}:\n get:\n operationId: getReleaseInstallOperation\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/OperationID\"\n responses:\n \"200\": { $ref: \"#/components/responses/ReleaseInstallOperationResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/release-install-operations/by-request/{request_id}:\n get:\n operationId: getReleaseInstallOperationByRequest\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/RequestID\"\n responses:\n \"200\": { $ref: \"#/components/responses/ReleaseInstallOperationResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/enable:\n post:\n operationId: enablePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/EnableRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/disable:\n post:\n operationId: disablePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DisableRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/uninstall:\n post:\n operationId: uninstallPlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/UninstallRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/update-release-ref:\n post:\n operationId: updateReleaseRef\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/UpdateReleaseRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/downgrade:\n post:\n operationId: downgradePlugin\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DowngradeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/catalog/query:\n post:\n operationId: listPlugins\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginCatalogResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/features/query:\n post:\n operationId: getPluginFeatures\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginFeaturesResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/platform/compatibility/query:\n post:\n operationId: getPluginPlatformCompatibility\n x-redevplugin-route-effect: query\n description: Returns the host-consumable ReDevPlugin compatibility manifest for the mounted platform artifact set.\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/CompatibilityResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/open:\n post:\n operationId: openPluginSurface\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/OpenSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceBootstrapResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/session/revoke-scope:\n post:\n operationId: revokePluginSessionScope\n x-redevplugin-route-effect: mutation\n description: Irreversibly fences the authenticated session, drains every exact-session platform and runtime resource, and returns only public cumulative counts.\n requestBody:\n $ref: \"#/components/requestBodies/RevokeSessionScopeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SessionScopeRevokeResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/prepare:\n post:\n operationId: preparePluginSurface\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PrepareSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfacePreparationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/bridge-token:\n post:\n operationId: createSurfaceBridgeToken\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/TrustedParentBridgeTokenRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/BridgeTokenResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/assets/read:\n post:\n operationId: readPreparedSurfaceAsset\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/ReadSurfaceAssetRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceAssetResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/read:\n post:\n operationId: readPreparedSurfaceStream\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/ReadSurfaceStreamRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceStreamResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/streams/ack:\n post:\n operationId: acknowledgePreparedSurfaceStream\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/AcknowledgeSurfaceStreamRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceStreamAcknowledgementResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/operations/cancel:\n post:\n operationId: cancelSurfacePluginOperation\n x-redevplugin-route-effect: mutation\n description: Cancels an operation only when it belongs to the authenticated surface, session, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/CancelSurfaceOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/operations/query:\n post:\n operationId: getSurfacePluginOperationSnapshot\n x-redevplugin-route-effect: query\n description: Returns only the sandbox-safe status projection for an operation bound to the authenticated surface, session, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/GetSurfaceOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginOperationSnapshotResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/confirmations/reject:\n post:\n operationId: rejectSurfacePluginConfirmation\n x-redevplugin-route-effect: mutation\n description: Atomically rejects a pending confirmation only when it belongs to the authenticated surface, session, current plugin revision, and private bridge channel.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/RejectSurfaceConfirmationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/ConfirmationRejectionResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/surfaces/{surface_instance_id}/dispose:\n post:\n operationId: disposePluginSurface\n x-redevplugin-route-effect: mutation\n description: Atomically observes and revokes one exact authenticated surface. An active surface becomes closed, a retained closure confirms closed, and an absent result is authoritative inactivity; transport failures remain an unknown mutation outcome.\n parameters:\n - $ref: \"#/components/parameters/SurfaceInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/DisposeSurfaceRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SurfaceDisposeResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/rpc:\n post:\n operationId: callPluginMethod\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/RPCRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/confirmations/prepare:\n post:\n operationId: preparePluginMethodConfirmation\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/PrepareMethodConfirmationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PluginMethodConfirmationPreparationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/intents/query:\n post:\n operationId: listPluginIntents\n x-redevplugin-route-effect: query\n description: 'Lists enabled, runnable plugin intents available to host-mediated interop. The response data is `{ \"intents\": [...] }`.'\n requestBody:\n $ref: \"#/components/requestBodies/ListIntentsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/IntentListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/intents/invoke:\n post:\n operationId: invokePluginIntent\n x-redevplugin-route-effect: mutation\n description: Invokes a host-mediated plugin intent without iframe gateway tokens while preserving local policy, permission grants, and dangerous-method fail-closed checks.\n requestBody:\n $ref: \"#/components/requestBodies/InvokeIntentRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RPCResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/query:\n post:\n operationId: listPluginOperations\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListOperationsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/{operation_id}/query:\n post:\n operationId: getPluginOperation\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/OperationID\"\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/operations/{operation_id}/cancel:\n post:\n operationId: cancelPluginOperation\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/OperationID\"\n requestBody:\n $ref: \"#/components/requestBodies/CancelOperationRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/OperationRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/start:\n post:\n operationId: startPluginRuntime\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/StartRuntimeRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/stop:\n post:\n operationId: stopPluginRuntime\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/EmptyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeStopResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/refresh-enabled:\n post:\n operationId: refreshEnabledPluginRuntimeState\n x-redevplugin-route-effect: mutation\n description: 'Replays runtime-derived state for enabled plugins after the embedding host process restarts or reattaches adapters. The response data is `{ \"results\": [...] }`.'\n requestBody:\n $ref: \"#/components/requestBodies/EmptyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeRefreshResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/runtime/health/query:\n post:\n operationId: getPluginRuntimeHealth\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RuntimeHealthResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/export:\n post:\n operationId: exportPluginData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/ExportDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataExportResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/export/delete:\n post:\n operationId: deletePluginDataExport\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DeleteDataExportRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataExportDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/data/import:\n post:\n operationId: importPluginData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/ImportDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DataImportResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/query:\n post:\n operationId: listPluginRetainedData\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListRetainedDataQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/delete:\n post:\n operationId: deletePluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/DeleteRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/bind:\n post:\n operationId: bindPluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/BindRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataBindingResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/retained-data/cleanup-expired:\n post:\n operationId: cleanupExpiredPluginRetainedData\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/CleanupExpiredRetainedDataRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/RetainedDataCleanupResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/query:\n post:\n operationId: listPluginPermissionGrants\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListPermissionsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/requirements/query:\n post:\n operationId: getPluginPermissionRequirements\n x-redevplugin-route-effect: query\n description: Projects required permissions only from the active plugin version's Host-verified capability contracts.\n requestBody:\n $ref: \"#/components/requestBodies/PermissionRequirementsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionRequirementsResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/grant:\n post:\n operationId: grantPluginPermission\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/GrantPermissionRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/permissions/revoke:\n post:\n operationId: revokePluginPermission\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/RevokePermissionRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/PermissionMutationResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/query:\n post:\n operationId: listPluginSecurityPolicies\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/{plugin_instance_id}/query:\n post:\n operationId: getPluginSecurityPolicy\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/EmptyQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/security-policies/{plugin_instance_id}:\n put:\n operationId: putPluginSecurityPolicy\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PutSecurityPolicyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyRecordResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n delete:\n operationId: deletePluginSecurityPolicy\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/DeleteSecurityPolicyRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecurityPolicyDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/diagnostics/query:\n post:\n operationId: listPluginDiagnosticEvents\n x-redevplugin-route-effect: query\n requestBody:\n $ref: \"#/components/requestBodies/ListDiagnosticsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/DiagnosticEventListResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/bind:\n post:\n operationId: bindPluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretBindResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/test:\n post:\n operationId: testPluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretTestResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/secrets/delete:\n post:\n operationId: deletePluginSecret\n x-redevplugin-route-effect: mutation\n requestBody:\n $ref: \"#/components/requestBodies/SecretRefRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SecretDeleteResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings/schema/query:\n post:\n operationId: getPluginSettingsSchema\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSchemaResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings/query:\n post:\n operationId: getPluginSettings\n x-redevplugin-route-effect: query\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/SettingsQueryRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n default: { $ref: \"#/components/responses/PlatformErrorResponse\" }\n /_redevplugin/api/plugins/{plugin_instance_id}/settings:\n patch:\n operationId: patchPluginSettings\n x-redevplugin-route-effect: mutation\n parameters:\n - $ref: \"#/components/parameters/PluginInstanceID\"\n requestBody:\n $ref: \"#/components/requestBodies/PatchSettingsRequest\"\n responses:\n \"200\": { $ref: \"#/components/responses/SettingsSnapshotResponse\" }\n default: { $ref: \"#/components/responses/MutationPlatformErrorResponse\" }\ncomponents:\n parameters:\n OperationID:\n name: operation_id\n in: path\n required: true\n schema: { type: string }\n PluginInstanceID:\n name: plugin_instance_id\n in: path\n required: true\n schema:\n type: string\n minLength: 1\n pattern: \"^[^./\\\\s](?:[^/]*[^/\\\\s])?$\"\n RequestID:\n name: request_id\n in: path\n required: true\n schema: { type: string, minLength: 1, maxLength: 256 }\n SurfaceInstanceID:\n name: surface_instance_id\n in: path\n required: true\n schema: { type: string }\n responses:\n PlatformErrorResponse:\n description: Closed non-success response for read-only platform operations.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PlatformErrorResponse\"\n MutationPlatformErrorResponse:\n description: Closed non-success response for operations that may change durable platform state.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/MutationPlatformErrorResponse\"\n RPCResponse:\n description: Typed plugin method result. Subscriptions always bind one operation and one stream.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RPCSuccessResponse\"\n SurfaceBootstrapResponse:\n description: Trusted-parent surface bootstrap. Capability-bearing fields are never forwarded into the opaque iframe or plugin worker.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceBootstrapSuccessResponse\"\n SurfacePreparationResponse:\n description: Trusted-parent asset-session exchange and validated opaque surface document.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfacePreparationSuccessResponse\"\n BridgeTokenResponse:\n description: Trusted-parent plugin gateway token response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/BridgeTokenSuccessResponse\"\n SurfaceAssetResponse:\n description: Trusted-parent package asset response. The plugin receives only a renderer-created blob URL.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceAssetSuccessResponse\"\n SurfaceStreamResponse:\n description: Trusted-parent stream redemption response. Stream tickets remain outside the plugin worker.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceStreamSuccessResponse\"\n SurfaceStreamAcknowledgementResponse:\n description: Confirms one exact stream delivery so the platform may release its events.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceStreamAcknowledgementSuccessResponse\"\n PluginOperationSnapshotResponse:\n description: Closed sandbox-safe operation status projection.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginOperationSnapshotSuccessResponse\"\n SurfaceDisposeResponse:\n description: Surface revocation response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SurfaceDisposeSuccessResponse\"\n SessionScopeRevokeResponse:\n description: Completed authenticated-session teardown response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SessionScopeRevokeSuccessResponse\"\n PluginRecordResponse:\n description: Plugin lifecycle response with typed registry trust assessment.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n ReleaseInstallOperationResponse:\n description: Durable release installation status and authoritative terminal result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReleaseInstallOperationSuccessResponse\"\n ReleaseInstallOperationListResponse:\n description: Owner-scoped durable release installation operations.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReleaseInstallOperationListSuccessResponse\"\n ExternalPackageInspectionResponse:\n description: Immutable server-computed package inspection and confirmation boundary.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExternalPackageInspectionSuccessResponse\"\n ExternalPackageCommitResponse:\n description: External package commit reconciliation result with explicit trust, approval, provenance, and update facts.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExternalPackageCommitSuccessResponse\"\n PluginCatalogResponse:\n description: Installed plugin catalog response with typed registry records.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginCatalogSuccessResponse\"\n PluginFeaturesResponse:\n description: Closed set of optional host modules configured for this platform.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginFeaturesSuccessResponse\"\n CompatibilityResponse:\n description: Released platform compatibility manifest.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CompatibilitySuccessResponse\"\n PluginMethodConfirmationPreparationResponse:\n description: Prepared plugin method confirmation. The raw confirmation token stays server-side and is never returned to parent JavaScript or the plugin iframe.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginMethodConfirmationPreparationSuccessResponse\"\n ConfirmationRejectionResponse:\n description: Trusted-parent acknowledgement that the pending confirmation was atomically rejected and cannot be replayed.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ConfirmationRejectionSuccessResponse\"\n IntentListResponse:\n description: Enabled plugin intent records.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/IntentListSuccessResponse\"\n RetainedDataListResponse:\n description: Retained plugin data list response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataListSuccessResponse\"\n RetainedDataBindingResponse:\n description: Plugin data binding returned after a retained-data mutation.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataBindingSuccessResponse\"\n RetainedDataCleanupResponse:\n description: Retained plugin data cleanup response.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RetainedDataCleanupSuccessResponse\"\n OperationRecordResponse:\n description: Host-owned operation record with its immutable execution binding.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OperationRecordSuccessResponse\"\n OperationListResponse:\n description: Host-owned operation records with immutable execution bindings.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OperationListSuccessResponse\"\n RuntimeHealthResponse:\n description: Runtime manager and shard health.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeHealthSuccessResponse\"\n RuntimeStopResponse:\n description: Runtime manager stop acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeStopSuccessResponse\"\n RuntimeRefreshResponse:\n description: Enabled plugin runtime refresh result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RuntimeRefreshSuccessResponse\"\n DataExportResponse:\n description: Plugin data export result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DataExportSuccessResponse\"\n DataExportDeleteResponse:\n description: Immutable plugin data export deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DataExportDeleteSuccessResponse\"\n DataImportResponse:\n description: Plugin record after the imported dataset becomes active.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PluginRecordSuccessResponse\"\n PermissionListResponse:\n description: Permission grants for the requested plugin scope.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionListSuccessResponse\"\n PermissionRequirementsResponse:\n description: Active-version permission requirements derived from Host-verified capability contracts.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionRequirementsSuccessResponse\"\n PermissionMutationResponse:\n description: Permission grant mutation result.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionMutationSuccessResponse\"\n SecurityPolicyListResponse:\n description: Complete list of configured plugin security policies.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyListSuccessResponse\"\n SecurityPolicyRecordResponse:\n description: Complete security policy for one plugin instance.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyRecordSuccessResponse\"\n SecurityPolicyDeleteResponse:\n description: Security policy deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecurityPolicyDeleteSuccessResponse\"\n DiagnosticEventListResponse:\n description: Diagnostic events matching the requested filters.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DiagnosticEventListSuccessResponse\"\n SecretBindResponse:\n description: Secret reference bind acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretBindSuccessResponse\"\n SecretTestResponse:\n description: Secret reference test acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretTestSuccessResponse\"\n SecretDeleteResponse:\n description: Secret reference deletion acknowledgement.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretDeleteSuccessResponse\"\n SettingsSchemaResponse:\n description: Plugin settings schema.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsSchemaSuccessResponse\"\n SettingsSnapshotResponse:\n description: Plugin settings snapshot.\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsSnapshotSuccessResponse\"\n requestBodies:\n InspectExternalPackageRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InspectExternalPackageRequest\"\n CommitExternalPackageRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CommitExternalPackageRequest\"\n QueryExternalPackageCommitRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/QueryExternalPackageCommitRequest\"\n InstallReleaseRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InstallReleaseRefRequest\"\n StartReleaseInstallOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/StartReleaseInstallOperationRequest\"\n UpdateReleaseRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/UpdateReleaseRefRequest\"\n DowngradeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DowngradeRequest\"\n EnableRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EnableRequest\"\n DisableRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DisableRequest\"\n UninstallRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/UninstallRequest\"\n OpenSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/OpenSurfaceRequest\"\n RevokeSessionScopeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RevokeSessionScopeRequest\"\n EmptyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EmptyRequest\"\n EmptyQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/EmptyQueryRequest\"\n ListIntentsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListIntentsQueryRequest\"\n ListOperationsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListOperationsQueryRequest\"\n ListRetainedDataQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListRetainedDataQueryRequest\"\n ListPermissionsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListPermissionsQueryRequest\"\n PermissionRequirementsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PermissionRequirementsQueryRequest\"\n ListDiagnosticsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ListDiagnosticsQueryRequest\"\n SettingsQueryRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SettingsQueryRequest\"\n PrepareSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PrepareSurfaceRequest\"\n TrustedParentBridgeTokenRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/TrustedParentBridgeTokenRequest\"\n ReadSurfaceAssetRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReadSurfaceAssetRequest\"\n ReadSurfaceStreamRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ReadSurfaceStreamRequest\"\n AcknowledgeSurfaceStreamRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/AcknowledgeSurfaceStreamRequest\"\n CancelSurfaceOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CancelSurfaceOperationRequest\"\n GetSurfaceOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/GetSurfaceOperationRequest\"\n RejectSurfaceConfirmationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RejectSurfaceConfirmationRequest\"\n DisposeSurfaceRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DisposeSurfaceRequest\"\n RPCRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RPCRequest\"\n PrepareMethodConfirmationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PrepareMethodConfirmationRequest\"\n InvokeIntentRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/InvokeIntentRequest\"\n CancelOperationRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CancelOperationRequest\"\n StartRuntimeRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/StartRuntimeRequest\"\n ExportDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ExportDataRequest\"\n DeleteDataExportRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteDataExportRequest\"\n ImportDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/ImportDataRequest\"\n DeleteRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteRetainedDataRequest\"\n BindRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/BindRetainedDataRequest\"\n CleanupExpiredRetainedDataRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/CleanupExpiredRetainedDataRequest\"\n GrantPermissionRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/GrantPermissionRequest\"\n RevokePermissionRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/RevokePermissionRequest\"\n PutSecurityPolicyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PutSecurityPolicyRequest\"\n DeleteSecurityPolicyRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/DeleteSecurityPolicyRequest\"\n SecretRefRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/SecretRefRequest\"\n PatchSettingsRequest:\n required: true\n content:\n application/json:\n schema:\n $ref: \"#/components/schemas/PatchSettingsRequest\"\n schemas:\n PlatformErrorResponse:\n type: object\n required: [ok, error]\n additionalProperties: false\n properties:\n ok: { const: false }\n error:\n $ref: \"#/components/schemas/PlatformError\"\n MutationPlatformErrorResponse:\n type: object\n required: [ok, error]\n additionalProperties: false\n properties:\n ok: { const: false }\n error:\n $ref: \"#/components/schemas/MutationPlatformError\"\n RPCSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RPCResult\" }\n SurfaceBootstrapSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceBootstrap\" }\n SurfacePreparationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfacePreparation\" }\n BridgeTokenSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/BridgeTokenResult\" }\n SurfaceAssetSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceAssetResult\" }\n SurfaceStreamSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceStreamResult\" }\n SurfaceStreamAcknowledgementSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceStreamAcknowledgementResult\" }\n PluginOperationSnapshotSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginOperationSnapshot\" }\n SurfaceDisposeSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SurfaceDisposeResult\" }\n SessionScopeRevokeSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/SessionScopeRevokeCompleteResult\" }\n PluginRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRecord\" }\n ReleaseInstallOperationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ReleaseInstallOperation\" }\n ReleaseInstallOperationListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ReleaseInstallOperationList\" }\n ExternalPackageInspectionSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ExternalPackageInspection\" }\n ExternalPackageCommitSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ExternalPackageCommitResult\" }\n PluginCatalogSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginCatalogResult\" }\n PluginFeaturesSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data:\n type: array\n uniqueItems: true\n items:\n type: string\n enum: [release, runtime, capability, connectivity, secrets, core_action, external_package]\n CompatibilitySuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginCompatibilityManifest\" }\n PluginMethodConfirmationPreparationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginMethodConfirmationPreparation\" }\n ConfirmationRejectionSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/ConfirmationRejectionResult\" }\n IntentListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginIntentList\" }\n RetainedDataListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RetainedDataList\" }\n RetainedDataBindingSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataBinding\" }\n RetainedDataCleanupSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/RetainedDataCleanupResult\" }\n OperationRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/OperationRecord\" }\n OperationListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginOperationList\" }\n RuntimeHealthSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeHealth\" }\n RuntimeStopSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeStopResult\" }\n RuntimeRefreshSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginRuntimeRefreshResult\" }\n DataExportSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataExportResult\" }\n DataExportDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDataExportDeleteResult\" }\n PermissionListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionList\" }\n PermissionRequirementsSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionRequirements\" }\n PermissionMutationSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginPermissionMutationResult\" }\n SecurityPolicyListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicyList\" }\n SecurityPolicyRecordSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n SecurityPolicyDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecurityPolicyDeleteResult\" }\n DiagnosticEventListSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginDiagnosticEventList\" }\n SecretBindSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretBindResult\" }\n SecretTestSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretTestResult\" }\n SecretDeleteSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSecretDeleteResult\" }\n SettingsSchemaSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSettingsSchema\" }\n SettingsSnapshotSuccessResponse:\n type: object\n required: [ok, data]\n additionalProperties: false\n properties:\n ok: { const: true }\n data: { $ref: \"#/components/schemas/PluginSettingsSnapshot\" }\n PlatformError:\n oneOf:\n - $ref: \"#/components/schemas/GenericPlatformError\"\n - $ref: \"#/components/schemas/OperationRateLimitPlatformError\"\n - $ref: \"#/components/schemas/JSONLimitPlatformError\"\n - $ref: \"#/components/schemas/PackageValidationPlatformError\"\n - $ref: \"#/components/schemas/ManagementRevisionPlatformError\"\n - $ref: \"#/components/schemas/AuthorizationRevisionPlatformError\"\n - $ref: \"#/components/schemas/BindingRevisionPlatformError\"\n - $ref: \"#/components/schemas/ValuesRevisionPlatformError\"\n - $ref: \"#/components/schemas/CapabilityPlatformError\"\n - $ref: \"#/components/schemas/WorkerPlatformError\"\n MutationPlatformError:\n oneOf:\n - $ref: \"#/components/schemas/MutationGenericPlatformError\"\n - $ref: \"#/components/schemas/MutationJSONLimitPlatformError\"\n - $ref: \"#/components/schemas/MutationPackageValidationPlatformError\"\n - $ref: \"#/components/schemas/MutationManagementRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationAuthorizationRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationBindingRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationValuesRevisionPlatformError\"\n - $ref: \"#/components/schemas/MutationCapabilityPlatformError\"\n - $ref: \"#/components/schemas/MutationWorkerPlatformError\"\n - $ref: \"#/components/schemas/MutationSessionTeardownPlatformError\"\n GenericPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code:\n $ref: \"#/components/schemas/GenericPlatformErrorCode\"\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details:\n $ref: \"#/components/schemas/EmptyErrorDetails\"\n OperationRateLimitPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_OPERATION_RATE_LIMITED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/OperationRateLimitErrorDetails\" }\n JSONLimitPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n PackageValidationPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n ManagementRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n AuthorizationRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n BindingRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n ValuesRevisionPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n CapabilityPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_CAPABILITY_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n WorkerPlatformError:\n type: object\n required: [code, message, details]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_WORKER_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n MutationGenericPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { $ref: \"#/components/schemas/GenericPlatformErrorCode\" }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/EmptyErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationJSONLimitPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_JSON_LIMIT_EXCEEDED }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/JSONLimitErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationPackageValidationPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_MANIFEST_INVALID, PLUGIN_PACKAGE_INVALID, PLUGIN_PACKAGE_TOO_LARGE, PLUGIN_PACKAGE_PATH_FORBIDDEN]\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/PackageValidationErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationManagementRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_MANAGEMENT_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ManagementRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationAuthorizationRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_AUTHORIZATION_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/AuthorizationRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationBindingRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_BINDING_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/BindingRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationValuesRevisionPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_VALUES_REVISION_MISMATCH }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/ValuesRevisionMismatchDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationCapabilityPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_CAPABILITY_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/CapabilityBusinessErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationWorkerPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_WORKER_ERROR }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/WorkerErrorDetails\" }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n MutationSessionTeardownPlatformError:\n type: object\n required: [code, message, details, mutation_outcome]\n additionalProperties: false\n properties:\n code: { const: PLUGIN_SESSION_TEARDOWN_INCOMPLETE }\n message: { $ref: \"#/components/schemas/PlatformErrorMessage\" }\n details: { $ref: \"#/components/schemas/SessionTeardownIncompleteErrorDetails\" }\n mutation_outcome: { const: committed }\n MutationOutcome:\n type: string\n enum: [committed, not_committed, unknown]\n EmptyErrorDetails:\n type: object\n additionalProperties: false\n OperationRateLimitErrorDetails:\n type: object\n additionalProperties: false\n required: [retry_after_ms]\n properties:\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n JSONLimitErrorDetails:\n type: object\n required: [reason]\n additionalProperties: false\n properties:\n reason:\n type: string\n enum: [payload_bytes, json_depth, prototype_key, number_precision]\n PackageValidationErrorDetails:\n type: object\n required: [reason]\n additionalProperties: false\n properties:\n reason:\n type: string\n enum: [manifest_missing, manifest_field, manifest_decode, zip_invalid, file_count, duplicate_entry, ambiguous_entry, non_regular_entry, invalid_utf8_path, non_nfc_path, symlink_entry, directory_entry, entry_bytes, path_length, compression_ratio, total_uncompressed_bytes, entry_open_failed, entry_read_failed, entry_close_failed, entry_size_mismatch, unsupported_signature_entry, manifest_artifact, package_asset_security, package_artifact_boundary, entry_path, manifest_canonical_json, canonical_hash, package_signature, empty_path, slash_separator, non_canonical_path, path_traversal, hidden_path, external_icon_path, unsupported_icon_format, missing_icon_asset, icon_magic_mismatch, query_or_fragment]\n path:\n type: string\n description: Package-local entry path related to the error, when available.\n pointer:\n type: string\n description: JSON Pointer into manifest.json related to the error, when available.\n CapabilityBusinessErrorDetails:\n type: object\n additionalProperties: false\n required: [capability_id, capability_version, detail_schema_sha256, business_error_code]\n properties:\n capability_id:\n type: string\n minLength: 1\n capability_version:\n $ref: \"#/components/schemas/StrictSemVer\"\n detail_schema_sha256:\n type: string\n pattern: \"^[0-9a-f]{64}$\"\n business_error_code:\n type: string\n pattern: \"^[A-Z][A-Z0-9_]*$\"\n business_error_details:\n type: object\n additionalProperties: true\n WorkerErrorDetails:\n type: object\n additionalProperties: false\n required: [worker_error_code, worker_error_message, worker_error_origin]\n properties:\n worker_error_code:\n type: string\n pattern: \"^[A-Z][A-Z0-9_]*$\"\n worker_error_message:\n type: string\n minLength: 1\n maxLength: 4096\n worker_error_origin:\n type: string\n enum: [runtime, hostcall, plugin]\n SessionTeardownIncompleteErrorDetails:\n type: object\n additionalProperties: false\n required: [session_scope]\n properties:\n session_scope:\n $ref: \"#/components/schemas/SessionScopeRevokeIncompleteResult\"\n ManagementRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_management_revision, actual_management_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n AuthorizationRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required:\n - plugin_instance_id\n - expected_policy_revision\n - actual_policy_revision\n - expected_management_revision\n - actual_management_revision\n - expected_revoke_epoch\n - actual_revoke_epoch\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n actual_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n BindingRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_binding_revision, actual_binding_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ValuesRevisionMismatchDetails:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, expected_values_revision, actual_values_revision]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n actual_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ErrorCode:\n $ref: \"../plugin/error-codes-v8.schema.json#/$defs/platform_error_code\"\n PlatformErrorMessage:\n type: string\n minLength: 1\n maxLength: 4096\n pattern: \".*\\\\S.*\"\n GenericPlatformErrorCode:\n type: string\n enum:\n - PLUGIN_INVALID_REQUEST\n - PLUGIN_SIGNATURE_INVALID\n - PLUGIN_TRUST_STATE_DENIED\n - PLUGIN_TRUST_VERIFICATION_REQUIRED\n - PLUGIN_TRUST_VERIFICATION_INVALID\n - PLUGIN_RELEASE_REF_VERIFICATION_FAILED\n - PLUGIN_RELEASE_REF_POLICY_DENIED\n - PLUGIN_RELEASE_NETWORK\n - PLUGIN_RELEASE_TIMEOUT\n - PLUGIN_RELEASE_ASSET_MISSING\n - PLUGIN_RELEASE_ASSET_INTEGRITY\n - PLUGIN_INSTALL_INTERRUPTED\n - PLUGIN_INSTALL_STATE_CONFLICT\n - PLUGIN_INTERNAL_FAILURE\n - PLUGIN_DISABLED\n - PLUGIN_DISABLED_BY_POLICY\n - PLUGIN_PERMISSION_DENIED\n - PLUGIN_ORIGIN_DENIED\n - PLUGIN_ACTION_DENIED\n - PLUGIN_OWNER_SCOPE_MISMATCH\n - PLUGIN_SECRET_SCOPE_MISMATCH\n - PLUGIN_STORAGE_SCOPE_MISMATCH\n - PLUGIN_ADAPTER_FAILURE\n - PLUGIN_SESSION_REVOKED\n - PLUGIN_SESSION_TEARDOWN_INCOMPLETE\n - PLUGIN_SESSION_FENCE_CAPACITY\n - PLUGIN_CONFIRMATION_REQUIRED\n - PLUGIN_CONFIRMATION_INVALID\n - PLUGIN_TOKEN_EXPIRED\n - PLUGIN_TOKEN_REPLAY\n - PLUGIN_GATEWAY_TOKEN_INVALID\n - PLUGIN_GATEWAY_TOKEN_REPLAYED\n - PLUGIN_GATEWAY_TOKEN_CHANNEL_MISMATCH\n - PLUGIN_ASSET_TICKET_INVALID\n - PLUGIN_ASSET_SESSION_INVALID\n - PLUGIN_STREAM_TICKET_INVALID\n - PLUGIN_STREAM_DELIVERY_INVALID\n - PLUGIN_STREAM_CANCELLED\n - PLUGIN_LEASE_INVALID\n - PLUGIN_LEASE_REPLAYED\n - PLUGIN_GRANT_INVALID\n - PLUGIN_STORAGE_QUOTA_EXCEEDED\n - PLUGIN_OPERATION_BLOCKED\n - PLUGIN_OPERATION_NOT_FOUND\n - PLUGIN_OPERATION_NOT_CANCELABLE\n - PLUGIN_NETWORK_TARGET_DENIED\n - PLUGIN_NETWORK_RATE_LIMITED\n - PLUGIN_RUNTIME_UNAVAILABLE\n - PLUGIN_RUNTIME_VERSION_MISMATCH\n - PLUGIN_RUNTIME_CONTRACT_MISMATCH\n - PLUGIN_UI_PROTOCOL_UNSUPPORTED\n - PLUGIN_UI_PROTOCOL_VIOLATION\n - PLUGIN_SURFACE_QUIESCE_TIMEOUT\n - PLUGIN_CONTRACT_MISMATCH\n - PLUGIN_CSRF_REQUIRED\n - PLUGIN_CSRF_INVALID\n - PLUGIN_FEATURE_NOT_CONFIGURED\n SurfaceDisposeResult:\n type: object\n required: [disposed, state, previous_state, revoked]\n additionalProperties: false\n properties:\n disposed: { const: true }\n state: { type: string, enum: [closed, absent] }\n previous_state: { type: string, enum: [active, closed, absent] }\n revoked: { type: boolean }\n SessionScopeRevokeCounts:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/revoke_counts\"\n SessionScopeRevokeResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/public_revoke_result\"\n SessionScopeRevokeCompleteResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/complete_revoke_result\"\n SessionScopeRevokeIncompleteResult:\n $ref: \"../plugin/session-scope-v1.schema.json#/$defs/incomplete_revoke_result\"\n PluginCatalogResult:\n type: object\n required: [plugins]\n additionalProperties: false\n properties:\n plugins:\n type: array\n items: { $ref: \"#/components/schemas/PluginRecord\" }\n PluginCompatibilityManifest:\n $ref: \"../plugin/compatibility-manifest-v15.schema.json\"\n PluginOperationList:\n type: object\n required: [operations]\n additionalProperties: false\n properties:\n operations:\n type: array\n items: { $ref: \"#/components/schemas/OperationRecord\" }\n next_cursor: { type: string, maxLength: 1024 }\n PluginIntentRecord:\n type: object\n required: [plugin_id, plugin_instance_id, publisher_id, display_name, version, active_fingerprint, intent_id, method, effect, execution]\n additionalProperties: false\n properties:\n plugin_id: { type: string }\n plugin_instance_id: { type: string }\n publisher_id: { type: string }\n display_name: { type: string }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string }\n intent_id: { type: string }\n method: { type: string }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n payload_schema:\n type: object\n additionalProperties: true\n PluginIntentList:\n type: object\n required: [intents]\n additionalProperties: false\n properties:\n intents:\n type: array\n items: { $ref: \"#/components/schemas/PluginIntentRecord\" }\n PluginPermissionGrant:\n type: object\n description: Explicit public HTTP projection of a permission grant. Internal actor ownership hashes are never returned.\n required: [plugin_instance_id, permission_id, effect, granted_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n permission_id: { type: string }\n effect: { type: string, enum: [grant, deny] }\n granted_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n revoked_at: { type: string, format: date-time }\n revoked_reason: { type: string }\n PluginPermissionList:\n type: object\n required: [permissions]\n additionalProperties: false\n properties:\n permissions:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n PluginPermissionRequirementMethod:\n type: object\n required: [method, required_permissions]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n PluginPermissionRequirementContract:\n type: object\n required: [contract_id, contract_version, contract_sha256, capability_id, capability_version, methods]\n additionalProperties: false\n properties:\n contract_id: { type: string, minLength: 1 }\n contract_version: { type: string, minLength: 1 }\n contract_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n capability_id: { type: string, minLength: 1 }\n capability_version: { type: string, minLength: 1 }\n methods:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionRequirementMethod\" }\n PluginPermissionRequirements:\n type: object\n required: [plugin_instance_id, plugin_version, active_fingerprint, management_revision, contracts, required_permissions]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { type: string, minLength: 1 }\n active_fingerprint: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n contracts:\n type: array\n items: { $ref: \"#/components/schemas/PluginPermissionRequirementContract\" }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n AuthorizationRevisions:\n type: object\n required: [policy_revision, management_revision, revoke_epoch]\n additionalProperties: false\n properties:\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n PluginPermissionMutationResult:\n type: object\n required: [permission, revisions]\n additionalProperties: false\n properties:\n permission: { $ref: \"#/components/schemas/PluginPermissionGrant\" }\n revisions: { $ref: \"#/components/schemas/AuthorizationRevisions\" }\n PluginSecurityPolicy:\n type: object\n required: [plugin_instance_id, allowed_permissions, denied_methods, policy_revision, management_revision, revoke_epoch, updated_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n allowed_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n denied_methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n updated_at: { type: string, format: date-time }\n PluginSecurityPolicyList:\n type: object\n required: [security_policies]\n additionalProperties: false\n properties:\n security_policies:\n type: array\n items: { $ref: \"#/components/schemas/PluginSecurityPolicy\" }\n PluginSecurityPolicyDeleteResult:\n type: object\n required: [plugin_instance_id, deleted, policy_revision, management_revision, revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n deleted: { const: true }\n policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n DiagnosticMutationOutcome:\n type: string\n enum: [committed, not_committed, unknown]\n PluginDiagnosticDetails:\n type: object\n additionalProperties: false\n properties:\n operations_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n streams_deleted: { type: integer, minimum: 0, maximum: 9007199254740991 }\n invocation_id: { type: string }\n method: { type: string }\n failure_code: { type: string }\n runtime_process_failure_code:\n $ref: \"../plugin/error-codes-v8.schema.json#/$defs/runtime_process_failure_code\"\n operation_id: { type: string }\n stream_id: { type: string }\n runtime_instance_id: { type: string }\n runtime_generation_id: { type: string }\n runtime_version: { type: string }\n rust_ipc_version: { type: string }\n wasm_abi_version: { type: string }\n contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n runtime_target_os: { type: string }\n runtime_target_arch: { type: string }\n runtime_binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n os: { type: string }\n arch: { type: string }\n stream: { type: string }\n package_hash: { type: string }\n artifact: { type: string }\n plugin_instance_id: { type: string }\n store_id: { type: string }\n operation: { type: string }\n hostcall: { type: string }\n code: { type: string }\n connector_id: { type: string }\n transport: { type: string }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n stage_id: { type: string }\n reason: { type: string }\n surface_instance_id: { type: string }\n PluginDiagnosticEvent:\n type: object\n required: [type, severity, message]\n additionalProperties: false\n properties:\n event_id: { type: string }\n type: { type: string }\n severity: { type: string, enum: [info, warning] }\n message: { type: string }\n plugin_id: { type: string }\n plugin_instance_id: { type: string }\n surface_id: { type: string }\n surface_instance_id: { type: string }\n active_fingerprint: { type: string }\n request_id: { type: string }\n correlation_id: { type: string }\n mutation_outcome: { $ref: \"#/components/schemas/DiagnosticMutationOutcome\" }\n occurred_at: { type: string, format: date-time }\n details: { $ref: \"#/components/schemas/PluginDiagnosticDetails\" }\n PluginDiagnosticEventList:\n type: object\n required: [diagnostic_events]\n additionalProperties: false\n properties:\n diagnostic_events:\n type: array\n items: { $ref: \"#/components/schemas/PluginDiagnosticEvent\" }\n PluginRuntimeShardHealth:\n type: object\n description: Explicit public HTTP projection of runtime shard health. IPC channel credentials and connection nonces are excluded.\n required: [runtime_shard_id, runtime_instance_id, runtime_generation_id, descriptor, ready, active_invocations, queued_invocations, limits, module_cache]\n additionalProperties: false\n properties:\n runtime_shard_id: { type: string }\n runtime_instance_id: { type: string }\n runtime_generation_id: { type: string }\n descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n ready: { type: boolean }\n active_invocations: { type: integer, minimum: 0 }\n queued_invocations: { type: integer, minimum: 0 }\n limits: { $ref: \"#/components/schemas/RuntimeLimits\" }\n module_cache: { $ref: \"#/components/schemas/RuntimeModuleCacheMetrics\" }\n PluginRuntimeHealth:\n type: object\n description: Explicit public HTTP projection of runtime manager health.\n required: [ready, descriptor, shards]\n additionalProperties: false\n properties:\n ready: { type: boolean }\n descriptor: { $ref: \"#/components/schemas/RuntimeDescriptor\" }\n shards:\n type: array\n items: { $ref: \"#/components/schemas/PluginRuntimeShardHealth\" }\n RuntimeTarget:\n oneOf:\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: darwin }\n arch: { const: amd64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: darwin }\n arch: { const: arm64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: linux }\n arch: { const: amd64 }\n - type: object\n required: [os, arch]\n additionalProperties: false\n properties:\n os: { const: linux }\n arch: { const: arm64 }\n RuntimeAdmissionTarget:\n type: string\n enum: [linux/amd64, linux/arm64]\n StrictSemVer:\n type: string\n pattern: '^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-(?:(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9][0-9]*|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$'\n RuntimeDescriptor:\n type: object\n required: [schema_version, platform_version, target, rust_ipc_version, wasm_abi_version, contract_set_sha256, binary_sha256]\n additionalProperties: false\n properties:\n schema_version: { const: runtime-descriptor-v2 }\n platform_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n target: { $ref: \"#/components/schemas/RuntimeAdmissionTarget\" }\n rust_ipc_version: { const: rust-ipc-v6 }\n wasm_abi_version: { const: redevplugin-wasm-worker-v2 }\n contract_set_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n binary_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n RuntimeLimits:\n type: object\n description: \"Negotiated runtime capacities. per_plugin_concurrency must not exceed worker_count. Route capacities are derived exactly from negotiated limits: active hostcall routes = worker_count, canceled hostcall retention = worker_count + queue_capacity, and compile-flight artifact routes = worker_count.\"\n required: [worker_count, queue_capacity, per_plugin_concurrency, module_cache_entries, module_cache_source_bytes]\n additionalProperties: false\n properties:\n worker_count: { type: integer, minimum: 1, maximum: 64, description: \"Number of runtime worker threads.\" }\n queue_capacity: { type: integer, minimum: 1, maximum: 64, description: \"Maximum queued worker invocations.\" }\n per_plugin_concurrency: { type: integer, minimum: 1, maximum: 64, description: \"Maximum concurrent invocations for one plugin; must not exceed worker_count.\" }\n module_cache_entries: { type: integer, minimum: 1, maximum: 1024, description: \"Maximum compiled modules retained by the runtime cache.\" }\n module_cache_source_bytes: { type: integer, minimum: 1, maximum: 134217728, description: \"Maximum source WASM bytes retained by the runtime cache (128 MiB).\" }\n RuntimeModuleCacheMetrics:\n type: object\n required: [hits, misses, compiles, entries, source_bytes]\n additionalProperties: false\n properties:\n hits: { type: integer, minimum: 0, maximum: 9007199254740991 }\n misses: { type: integer, minimum: 0, maximum: 9007199254740991 }\n compiles: { type: integer, minimum: 0, maximum: 9007199254740991 }\n entries: { type: integer, minimum: 0, maximum: 1024 }\n source_bytes: { type: integer, minimum: 0, maximum: 134217728 }\n PluginRuntimeStopResult:\n type: object\n required: [stopped]\n additionalProperties: false\n properties:\n stopped: { const: true }\n PluginRuntimeRefreshResult:\n type: object\n required: [results]\n additionalProperties: false\n properties:\n results:\n type: array\n items: { $ref: \"#/components/schemas/PluginRuntimeRefreshEntry\" }\n PluginRuntimeRefreshEntry:\n oneOf:\n - $ref: \"#/components/schemas/PluginRuntimeRefreshSuccess\"\n - $ref: \"#/components/schemas/PluginRuntimeRefreshFailure\"\n PluginRuntimeRefreshSuccess:\n type: object\n required: [plugin_instance_id, status]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n status: { const: refreshed }\n PluginRuntimeRefreshFailure:\n type: object\n required: [plugin_instance_id, status, error]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n status: { const: failed }\n error: { $ref: \"#/components/schemas/PluginRuntimeRefreshPublicError\" }\n PluginRuntimeRefreshPublicError:\n type: object\n required: [code, message]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_RUNTIME_UNAVAILABLE]\n message: { const: \"Plugin runtime state could not be refreshed\" }\n PluginDataExportResult:\n type: object\n required: [bundle_ref]\n additionalProperties: false\n properties:\n bundle_ref: { type: string, minLength: 1 }\n PluginDataExportDeleteResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted: { const: true }\n PluginSecretBindResult:\n type: object\n required: [bound]\n additionalProperties: false\n properties:\n bound: { const: true }\n PluginSecretTestResult:\n type: object\n required: [tested]\n additionalProperties: false\n properties:\n tested: { const: true }\n PluginSecretDeleteResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted: { const: true }\n PluginSettingsField:\n type: object\n required: [key, type, label, scope]\n additionalProperties: false\n properties:\n key: { type: string }\n type: { type: string }\n label: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n default: true\n secret_ref: { type: string }\n options:\n type: array\n items: { type: string }\n validation:\n type: object\n additionalProperties: true\n PluginSettingsSchema:\n type: object\n description: Explicit public HTTP projection of the settings schema for one owner scope.\n required: [plugin_instance_id, scope, schema_version, fields, values_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n schema_version: { type: integer, minimum: 1 }\n fields:\n type: array\n items: { $ref: \"#/components/schemas/PluginSettingsField\" }\n values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n PluginSettingsSnapshot:\n type: object\n description: Explicit public HTTP projection of settings values and redacted secret metadata for one owner scope.\n required: [plugin_instance_id, scope, schema_version, values_revision, values, secret_metadata]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n schema_version: { type: integer, minimum: 1 }\n values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n values:\n type: object\n additionalProperties: true\n secret_metadata:\n type: array\n items: { $ref: \"#/components/schemas/PluginSettingsSecretMetadata\" }\n PluginSettingsSecretMetadata:\n type: object\n required: [key, secret_ref, scope, bound]\n additionalProperties: false\n properties:\n key: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { type: string, enum: [user, environment] }\n bound: { type: boolean }\n last_test_status: { type: string }\n bound_at: { type: string, format: date-time }\n tested_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n ExternalPackageIntentRequest:\n description: Closed install or update intent. Update concurrency values are supplied by the caller, while package identity is always derived from the inspected artifact.\n oneOf:\n - type: object\n required: [action]\n additionalProperties: false\n properties:\n action: { const: install }\n - type: object\n required: [action, plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n action: { const: update }\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ExternalPackageIntent:\n description: Server-resolved install or update intent. The platform generates the install instance identifier during inspection.\n oneOf:\n - type: object\n required: [action, plugin_instance_id]\n additionalProperties: false\n properties:\n action: { const: install }\n plugin_instance_id: { type: string, minLength: 1 }\n - type: object\n required: [action, plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n action: { const: update }\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ExternalPackageSource:\n description: Caller-selected external source. Redirect resolution, package hashes, identity, and provenance are derived by the platform.\n oneOf:\n - type: object\n required: [kind, url]\n additionalProperties: false\n properties:\n kind: { const: package_url }\n url: { type: string, format: uri, minLength: 1 }\n - type: object\n required: [kind, url]\n additionalProperties: false\n properties:\n kind: { const: github_repository }\n url: { type: string, format: uri, minLength: 1 }\n tag:\n type: string\n minLength: 1\n maxLength: 255\n description: Optional exact release tag. When omitted, the resolver selects the repository's latest eligible release.\n InspectExternalPackageRequest:\n type: object\n description: Requests server-side inspection. Trust, hashes, package identity, approval, provenance, signature assessment, and update eligibility are intentionally not caller-controlled.\n required: [intent, source]\n additionalProperties: false\n properties:\n intent: { $ref: \"#/components/schemas/ExternalPackageIntentRequest\" }\n source: { $ref: \"#/components/schemas/ExternalPackageSource\" }\n CommitExternalPackageRequest:\n type: object\n description: Confirms the exact immutable inspection. The digest cannot override any inspected fact.\n required: [inspection_id, confirmation_digest]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n confirmation_digest: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n QueryExternalPackageCommitRequest:\n type: object\n required: [inspection_id]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n commit_id: { type: string, minLength: 1 }\n ExternalPackageSignatureAssessment:\n type: object\n description: Cryptographic signature fact computed over the inspected artifact. The absent state is installable and affects trust classification and automatic-update eligibility only.\n required: [state, reason_codes, assessed_hashes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [verified, absent, unknown_signer, invalid, revoked, unavailable]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_hashes: { $ref: \"#/components/schemas/TrustHashSet\" }\n algorithm: { type: string, minLength: 1 }\n key_id: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n assessment_epoch: { type: string, minLength: 1 }\n ExternalPackageRedirectHop:\n type: object\n description: Credential-free redirect projection. Userinfo, query strings, and fragments are never exposed.\n required: [origin, path]\n additionalProperties: false\n properties:\n origin: { type: string, format: uri, minLength: 1 }\n path: { type: string, pattern: \"^/\" }\n ExternalPackageSourceProvenance:\n description: Stable, credential-free source provenance computed after URL, GitHub release, or uploaded-package resolution. Upload identifiers are opaque server-generated values and cannot be supplied by callers.\n oneOf:\n - type: object\n required: [kind, source_origin, source_path, redirect_chain, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: package_url }\n source_origin: { type: string, format: uri, minLength: 1 }\n source_path: { type: string, pattern: \"^/\" }\n redirect_chain:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageRedirectHop\" }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n - type: object\n required: [kind, upload_id, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: package_upload }\n upload_id:\n type: string\n minLength: 1\n description: Opaque server-generated identifier for the staged uploaded artifact.\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n - type: object\n required: [kind, repository_id, release_id, asset_id, repository_url, owner, repository, resolved_commit_sha, package_sha256, resolved_at]\n additionalProperties: false\n properties:\n kind: { const: github_repository }\n repository_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub repository database ID encoded as decimal text.\n release_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub release database ID encoded as decimal text.\n asset_id:\n type: string\n pattern: \"^[1-9][0-9]*$\"\n description: Stable GitHub release asset database ID encoded as decimal text.\n repository_url: { type: string, format: uri, minLength: 1 }\n owner:\n type: string\n minLength: 1\n description: Display-only owner login; repository_id remains authoritative across renames.\n repository:\n type: string\n minLength: 1\n description: Display-only repository name; repository_id remains authoritative across renames.\n resolved_commit_sha: { type: string, pattern: \"^[0-9a-f]{40}$\" }\n release_tag: { type: string, minLength: 1 }\n asset_name: { type: string, minLength: 1 }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n resolved_at: { type: string, format: date-time }\n ExternalPackageExecutionApproval:\n type: object\n description: Execution decision independent from signature state. Session and owner hashes are excluded from this public projection.\n required: [state, reason_codes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [pending, user_approved, policy_approved, policy_blocked]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n approved_at: { type: string, format: date-time }\n ExternalPackageUpdateEligibility:\n type: object\n description: Automatic-update decision. Unsigned or otherwise unverified packages remain installable but are normally manual-only.\n required: [state, reason_codes, assessed_at]\n additionalProperties: false\n properties:\n state:\n type: string\n enum: [manual_only, automatic_eligible]\n reason_codes:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n assessed_at: { type: string, format: date-time }\n ExternalPackagePermissionSummary:\n type: object\n required: [permission_id, methods]\n additionalProperties: false\n properties:\n permission_id: { type: string, minLength: 1 }\n methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n ExternalPackageMethodRouteSummary:\n type: object\n required: [kind]\n additionalProperties: false\n properties:\n kind: { type: string, enum: [capability, worker, core_action] }\n binding_id: { type: string, minLength: 1 }\n target_method: { type: string, minLength: 1 }\n worker_id: { type: string, minLength: 1 }\n action_id: { type: string, minLength: 1 }\n ExternalPackageConfirmationSummary:\n type: object\n required: [mode, request_hash_fields, plan_hash_required]\n additionalProperties: false\n properties:\n mode: { type: string, enum: [none, required, risk_based] }\n preflight_method: { type: string, minLength: 1 }\n request_hash_fields:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n plan_hash_required: { type: boolean }\n ExternalPackageCancelSummary:\n type: object\n required: [cancelable, disable_behavior, uninstall_behavior, ack_timeout_ms]\n additionalProperties: false\n properties:\n cancelable: { type: boolean }\n disable_behavior: { type: string, enum: [cancel, orphan, wait] }\n uninstall_behavior: { type: string, enum: [cancel_then_block_delete, force_cleanup_allowed] }\n ack_timeout_ms: { type: integer, minimum: 0 }\n ExternalPackageMethodSummary:\n type: object\n required: [method, route, effect, execution, dangerous, preflight_only, required_permissions, confirmation]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n route: { $ref: \"#/components/schemas/ExternalPackageMethodRouteSummary\" }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n dangerous: { type: boolean }\n preflight_only: { type: boolean }\n required_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n confirmation: { $ref: \"#/components/schemas/ExternalPackageConfirmationSummary\" }\n cancel: { $ref: \"#/components/schemas/ExternalPackageCancelSummary\" }\n ExternalPackageCapabilityContractSummary:\n type: object\n required: [binding_id, capability_id, capability_version, contract_sha256]\n additionalProperties: false\n properties:\n binding_id: { type: string, minLength: 1 }\n capability_id: { type: string, minLength: 1 }\n capability_version: { type: string, minLength: 1 }\n contract_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n ExternalPackageWorkerSummary:\n type: object\n required: [worker_id, artifact, abi, mode, scope, memory_limit_bytes, idle_timeout_ms]\n additionalProperties: false\n properties:\n worker_id: { type: string, minLength: 1 }\n artifact: { type: string, minLength: 1 }\n abi: { const: redevplugin-wasm-worker-v2 }\n mode: { const: job }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n memory_limit_bytes: { type: integer, minimum: 1, maximum: 268435456 }\n idle_timeout_ms: { type: integer, minimum: 0 }\n ExternalPackageNetworkMethodAccessSummary:\n type: object\n required: [method, operations, http_methods]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n operations:\n type: array\n uniqueItems: true\n items: { type: string, enum: [http, http_stream, websocket_round_trip, tcp_round_trip, udp_round_trip] }\n http_methods:\n type: array\n uniqueItems: true\n items: { type: string, enum: [GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS] }\n ExternalPackageNetworkSummary:\n type: object\n required: [connector_id, transport, scope, destinations, auth_declared, tls_declared, method_access]\n additionalProperties: false\n properties:\n connector_id: { type: string, minLength: 1 }\n transport: { type: string, enum: [http, websocket, tcp, udp] }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n destinations:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n auth_declared: { type: boolean }\n tls_declared: { type: boolean }\n method_access:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageNetworkMethodAccessSummary\" }\n ExternalPackageStorageMethodAccessSummary:\n type: object\n required: [method, operations]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n operations:\n type: array\n uniqueItems: true\n items: { type: string, enum: [read, write, delete, list, get, put, query, exec] }\n ExternalPackageStorageSummary:\n type: object\n required: [store_id, kind, scope, quota_bytes, schema_version, method_access]\n additionalProperties: false\n properties:\n store_id: { type: string, minLength: 1 }\n kind: { type: string, enum: [kv, files, sqlite] }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n quota_bytes: { type: integer, minimum: 1, maximum: 1073741824 }\n quota_files: { type: integer, minimum: 1, maximum: 100000 }\n schema_version: { type: integer, minimum: 1 }\n method_access:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageStorageMethodAccessSummary\" }\n ExternalPackageSecretRefSummary:\n type: object\n required: [setting_key, secret_ref, scope]\n additionalProperties: false\n properties:\n setting_key: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n ExternalPackageCoreActionSummary:\n type: object\n required: [method, action_id, effect]\n additionalProperties: false\n properties:\n method: { type: string, minLength: 1 }\n action_id: { type: string, minLength: 1 }\n effect: { type: string, enum: [read, write, delete, execute, admin] }\n ExternalPackageIntentSummary:\n type: object\n required: [intent_id, method]\n additionalProperties: false\n properties:\n intent_id: { type: string, minLength: 1 }\n method: { type: string, minLength: 1 }\n ExternalPackageSurfaceSummary:\n type: object\n required: [surface_id, kind, intent, label, entry]\n additionalProperties: false\n properties:\n surface_id: { type: string, minLength: 1 }\n kind: { type: string, enum: [view, command, background] }\n intent: { type: string, enum: [primary, secondary, utility] }\n label: { type: string, minLength: 1 }\n entry: { type: string, minLength: 1 }\n icon: { type: string, minLength: 1 }\n default_size: { $ref: \"#/components/schemas/ExternalPackageSizeSummary\" }\n ExternalPackageSizeSummary:\n type: object\n required: [width, height]\n additionalProperties: false\n properties:\n width: { type: integer, minimum: 1 }\n height: { type: integer, minimum: 1 }\n ExternalPackageSecuritySummary:\n type: object\n description: Closed, display-ready projection of every security-relevant declaration in the inspected manifest.\n required: [summary_sha256, permissions, methods, capability_contracts, workers, network, storage, secret_refs, core_actions, intents, surfaces]\n additionalProperties: false\n properties:\n summary_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n permissions:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackagePermissionSummary\" }\n methods:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageMethodSummary\" }\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageCapabilityContractSummary\" }\n workers:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageWorkerSummary\" }\n network:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageNetworkSummary\" }\n storage:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageStorageSummary\" }\n secret_refs:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageSecretRefSummary\" }\n core_actions:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageCoreActionSummary\" }\n intents:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageIntentSummary\" }\n surfaces:\n type: array\n items: { $ref: \"#/components/schemas/ExternalPackageSurfaceSummary\" }\n SettingOptionPresentation:\n type: object\n required: [value, label]\n additionalProperties: false\n properties:\n value: { type: string, minLength: 1, maxLength: 128 }\n label: { type: string, minLength: 1, maxLength: 128 }\n ResolvedSurfacePresentation:\n type: object\n required: [surface_id, label]\n additionalProperties: false\n properties:\n surface_id: { type: string, minLength: 1 }\n label: { type: string, minLength: 1, maxLength: 128 }\n ResolvedSettingPresentation:\n type: object\n required: [key, label, options]\n additionalProperties: false\n properties:\n key: { type: string, minLength: 1 }\n label: { type: string, minLength: 1, maxLength: 128 }\n options:\n type: array\n items: { $ref: \"#/components/schemas/SettingOptionPresentation\" }\n PresentationLocale:\n type: object\n required: [locale, plugin_name, summary, description, highlights, keywords, surfaces, settings]\n additionalProperties: false\n properties:\n locale: { type: string, minLength: 2, maxLength: 255 }\n plugin_name: { type: string, minLength: 1, maxLength: 128 }\n publisher_name: { type: string, minLength: 1, maxLength: 128 }\n summary: { type: string, minLength: 1, maxLength: 240 }\n description:\n type: array\n minItems: 1\n maxItems: 12\n items: { type: string, minLength: 1, maxLength: 1000 }\n highlights:\n type: array\n maxItems: 8\n items: { type: string, minLength: 1, maxLength: 240 }\n keywords:\n type: array\n minItems: 1\n maxItems: 12\n items: { type: string, minLength: 1, maxLength: 64 }\n surfaces:\n type: array\n items: { $ref: \"#/components/schemas/ResolvedSurfacePresentation\" }\n settings:\n type: array\n items: { $ref: \"#/components/schemas/ResolvedSettingPresentation\" }\n PresentationCatalog:\n type: object\n required: [default_locale, locales]\n additionalProperties: false\n properties:\n default_locale: { type: string, minLength: 2, maxLength: 255 }\n locales:\n type: array\n minItems: 1\n maxItems: 16\n items: { $ref: \"#/components/schemas/PresentationLocale\" }\n ExternalPackageInspection:\n type: object\n description: Immutable inspection projection. Package identity and all four trust/security facts are server-derived.\n required: [inspection_id, expires_at, intent, publisher_id, plugin_id, version, presentation, presentation_sha256, inspected_hashes, signature_assessment, source_provenance, execution_approval, update_eligibility, security_summary, confirmation_digest]\n additionalProperties: false\n properties:\n inspection_id: { type: string, minLength: 1 }\n expires_at: { type: string, format: date-time }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n inspected_hashes: { $ref: \"#/components/schemas/TrustHashSet\" }\n signature_assessment: { $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\" }\n source_provenance: { $ref: \"#/components/schemas/ExternalPackageSourceProvenance\" }\n execution_approval: { $ref: \"#/components/schemas/ExternalPackageExecutionApproval\" }\n update_eligibility: { $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\" }\n security_summary: { $ref: \"#/components/schemas/ExternalPackageSecuritySummary\" }\n confirmation_digest: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n ExternalPackageCommitReceipt:\n type: object\n description: Immutable successful commit evidence.\n required: [commit_id, inspection_id, package_sha256, management_revision, committed_at]\n additionalProperties: false\n properties:\n commit_id: { type: string, minLength: 1 }\n inspection_id: { type: string, minLength: 1 }\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n committed_at: { type: string, format: date-time }\n ExternalPackageCommitResult:\n description: Closed commit reconciliation union. A committed result repeats all four facts so clients never infer them from legacy trust_state alone. A failed result is terminal evidence that a durable commit did not occur and requires a fresh inspection before retrying.\n oneOf:\n - type: object\n required: [status, inspection_id, intent, receipt, plugin, signature_assessment, source_provenance, execution_approval, update_eligibility, security_summary]\n additionalProperties: false\n properties:\n status: { const: committed }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n receipt: { $ref: \"#/components/schemas/ExternalPackageCommitReceipt\" }\n plugin: { $ref: \"#/components/schemas/PluginRecord\" }\n signature_assessment: { $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\" }\n source_provenance: { $ref: \"#/components/schemas/ExternalPackageSourceProvenance\" }\n execution_approval: { $ref: \"#/components/schemas/ExternalPackageExecutionApproval\" }\n update_eligibility: { $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\" }\n security_summary: { $ref: \"#/components/schemas/ExternalPackageSecuritySummary\" }\n - type: object\n required: [status, inspection_id, intent, retry_after_ms]\n additionalProperties: false\n properties:\n status: { const: in_progress }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n retry_after_ms: { type: integer, minimum: 1, maximum: 60000 }\n - type: object\n required: [status, inspection_id, intent, failure_code]\n additionalProperties: false\n properties:\n status: { const: failed }\n inspection_id: { type: string, minLength: 1 }\n intent: { $ref: \"#/components/schemas/ExternalPackageIntent\" }\n failure_code: { const: host_restarted_before_commit }\n TrustState:\n type: string\n enum: [verified, unsigned_local, untrusted, needs_review, trust_unavailable, blocked_security]\n TrustHashSet:\n type: object\n required: [package_sha256, manifest_sha256, entries_sha256]\n additionalProperties: false\n properties:\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n VerifiedSignature:\n type: object\n required: [algorithm, key_id]\n additionalProperties: false\n properties:\n algorithm: { type: string, minLength: 1 }\n key_id: { type: string, minLength: 1 }\n TrustAssessment:\n type: object\n required: [trust_state, verified_hashes]\n additionalProperties: false\n properties:\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n reason_codes:\n type: array\n items: { type: string }\n verified_hashes:\n $ref: \"#/components/schemas/TrustHashSet\"\n verified_signature:\n $ref: \"#/components/schemas/VerifiedSignature\"\n trust_assessment_epoch: { type: string }\n policy_epoch: { type: string }\n revocation_epoch: { type: string }\n metadata:\n type: object\n additionalProperties: { type: string }\n PluginVersion:\n type: object\n required: [version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, manifest, presentation, presentation_sha256, package_entries, activated_at]\n additionalProperties: false\n properties:\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n package_hash: { type: string, minLength: 1 }\n manifest_hash: { type: string, minLength: 1 }\n entries_hash: { type: string, minLength: 1 }\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n trust_assessment:\n $ref: \"#/components/schemas/TrustAssessment\"\n source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n source_policy_snapshot:\n type: object\n additionalProperties: true\n local_import_provenance:\n $ref: \"#/components/schemas/LocalImportProvenance\"\n signature_assessment:\n $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\"\n source_provenance:\n $ref: \"#/components/schemas/ExternalPackageSourceProvenance\"\n execution_approval:\n $ref: \"#/components/schemas/ExternalPackageExecutionApproval\"\n update_eligibility:\n $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\"\n security_summary:\n $ref: \"#/components/schemas/ExternalPackageSecuritySummary\"\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n manifest:\n $ref: \"../plugin/manifest-v8.schema.json\"\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n package_entries:\n type: array\n items: { $ref: \"#/components/schemas/PackageEntry\" }\n runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n activated_at: { type: string, format: date-time }\n metadata:\n type: object\n additionalProperties: { type: string }\n PluginRecord:\n type: object\n description: Explicit public HTTP projection of a registry record. Persistent owner identity is excluded.\n required: [plugin_instance_id, publisher_id, plugin_id, version, active_fingerprint, package_hash, manifest_hash, entries_hash, trust_state, trust_assessment, enable_state, policy_revision, management_revision, revoke_epoch, manifest, presentation, presentation_sha256, package_entries, installed_at, updated_at]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n publisher_id: { type: string }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n package_hash: { type: string }\n manifest_hash: { type: string }\n entries_hash: { type: string }\n trust_state:\n $ref: \"#/components/schemas/TrustState\"\n trust_assessment:\n $ref: \"#/components/schemas/TrustAssessment\"\n source_policy_snapshot_hash: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n source_policy_snapshot:\n type: object\n additionalProperties: true\n local_import_provenance:\n $ref: \"#/components/schemas/LocalImportProvenance\"\n signature_assessment:\n $ref: \"#/components/schemas/ExternalPackageSignatureAssessment\"\n source_provenance:\n $ref: \"#/components/schemas/ExternalPackageSourceProvenance\"\n execution_approval:\n $ref: \"#/components/schemas/ExternalPackageExecutionApproval\"\n update_eligibility:\n $ref: \"#/components/schemas/ExternalPackageUpdateEligibility\"\n security_summary:\n $ref: \"#/components/schemas/ExternalPackageSecuritySummary\"\n capability_contracts:\n type: array\n items: { $ref: \"#/components/schemas/CapabilityContractPin\" }\n enable_state:\n type: string\n enum: [disabled, enabled, disabled_by_policy, disabled_incompatible]\n disabled_reason: { type: string }\n policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n manifest:\n $ref: \"../plugin/manifest-v8.schema.json\"\n presentation: { $ref: \"#/components/schemas/PresentationCatalog\" }\n presentation_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n package_entries:\n type: array\n items: { $ref: \"#/components/schemas/PackageEntry\" }\n runtime_requirement: { $ref: \"#/components/schemas/RuntimeRequirement\" }\n version_history:\n type: array\n items:\n $ref: \"#/components/schemas/PluginVersion\"\n installed_at: { type: string, format: date-time }\n enabled_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n deleted_at: { type: string, format: date-time }\n metadata:\n type: object\n additionalProperties: { type: string }\n PackageEntry:\n type: object\n required: [path, size, sha256, mode]\n additionalProperties: false\n properties:\n path: { type: string, minLength: 1 }\n size: { type: integer, minimum: 0 }\n sha256: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n mode: { type: string, minLength: 1 }\n content_type: { type: string }\n RuntimeRequirement:\n type: object\n required: [min_version]\n additionalProperties: false\n properties:\n min_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n supported_targets:\n type: array\n uniqueItems: true\n items:\n type: string\n enum: [darwin/amd64, darwin/arm64, linux/amd64, linux/arm64]\n LocalImportProvenance:\n type: object\n required: [import_id, distribution, policy_epoch, unsigned_policy, assessed_at]\n additionalProperties: false\n properties:\n import_id: { type: string, minLength: 1 }\n distribution: { enum: [local_import] }\n policy_epoch: { type: string, minLength: 1 }\n unsigned_policy: { enum: [dev_only, review_required, block] }\n assessed_at: { type: string, format: date-time }\n PackageHashSet:\n type: object\n required: [package_sha256, manifest_sha256, entries_sha256]\n additionalProperties: false\n properties:\n package_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n manifest_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n entries_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n PluginReleaseRef:\n type: object\n required: [source_id, channel, release_metadata_ref, release_metadata_sha256, publisher_id, plugin_id, version, expected_hashes]\n additionalProperties: false\n properties:\n source_id: { type: string, minLength: 1 }\n channel: { type: string, pattern: \"^[a-z][a-z0-9._-]{0,127}$\" }\n release_metadata_ref: { type: string, minLength: 1 }\n release_metadata_sha256: { type: string, pattern: \"^(sha256:)?[0-9a-f]{64}$\" }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n expected_hashes:\n $ref: \"#/components/schemas/PackageHashSet\"\n InstallReleaseRefRequest:\n type: object\n required: [plugin_instance_id, release_ref]\n additionalProperties: false\n properties:\n release_ref:\n $ref: \"#/components/schemas/PluginReleaseRef\"\n plugin_instance_id: { type: string, minLength: 1 }\n StartReleaseInstallOperationRequest:\n type: object\n required: [request_id, plugin_instance_id, release_ref]\n additionalProperties: false\n properties:\n request_id: { type: string, minLength: 1, maxLength: 256 }\n plugin_instance_id: { type: string, minLength: 1 }\n release_ref:\n $ref: \"#/components/schemas/PluginReleaseRef\"\n ReleaseInstallProgress:\n oneOf:\n - type: object\n required: [kind]\n additionalProperties: false\n properties:\n kind: { const: indeterminate }\n - type: object\n required: [kind, completed, total]\n additionalProperties: false\n properties:\n kind: { type: string, enum: [items, bytes] }\n completed: { type: integer, minimum: 0, maximum: 9007199254740991 }\n total: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ReleaseInstallFailure:\n type: object\n required: [code, retryable]\n additionalProperties: false\n properties:\n code:\n type: string\n enum: [PLUGIN_RELEASE_NETWORK, PLUGIN_RELEASE_TIMEOUT, PLUGIN_RELEASE_ASSET_MISSING, PLUGIN_RELEASE_ASSET_INTEGRITY, PLUGIN_INSTALL_INTERRUPTED, PLUGIN_INSTALL_STATE_CONFLICT, PLUGIN_INTERNAL_FAILURE]\n retryable: { type: boolean }\n ReleaseInstallOperation:\n type: object\n required: [request_id, operation_id, plugin_instance_id, request_sha256, status, phase, progress, attempt, retry_after_ms, mutation_outcome, created_at, updated_at]\n additionalProperties: false\n properties:\n request_id: { type: string, minLength: 1, maxLength: 256 }\n operation_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n request_sha256: { type: string, pattern: \"^sha256:[0-9a-f]{64}$\" }\n status: { type: string, enum: [queued, running, reconciling, succeeded, failed] }\n phase: { type: string, minLength: 1, maxLength: 256 }\n progress: { $ref: \"#/components/schemas/ReleaseInstallProgress\" }\n attempt: { type: integer, minimum: 1, maximum: 3 }\n retry_after_ms: { type: integer, minimum: 0, maximum: 10000 }\n mutation_outcome: { $ref: \"#/components/schemas/MutationOutcome\" }\n failure: { $ref: \"#/components/schemas/ReleaseInstallFailure\" }\n plugin_record: { $ref: \"#/components/schemas/PluginRecord\" }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n terminal_at: { type: string, format: date-time }\n oneOf:\n - properties:\n status: { type: string, enum: [queued, running, reconciling] }\n not:\n anyOf:\n - required: [terminal_at]\n - required: [failure]\n - required: [plugin_record]\n - required: [status, terminal_at, plugin_record]\n properties:\n status: { const: succeeded }\n mutation_outcome: { const: committed }\n not:\n required: [failure]\n - required: [status, terminal_at, failure]\n properties:\n status: { const: failed }\n not:\n required: [plugin_record]\n ReleaseInstallOperationList:\n type: object\n required: [operations]\n additionalProperties: false\n properties:\n operations:\n type: array\n items: { $ref: \"#/components/schemas/ReleaseInstallOperation\" }\n UpdateReleaseRefRequest:\n type: object\n required: [plugin_instance_id, release_ref, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n release_ref:\n $ref: \"#/components/schemas/PluginReleaseRef\"\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n DowngradeRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n version: { $ref: \"#/components/schemas/StrictSemVer\" }\n package_hash: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n EnableRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n DisableRequest:\n type: object\n required: [plugin_instance_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n reason: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n UninstallRequest:\n type: object\n required: [plugin_instance_id, delete_data, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n delete_data: { type: boolean }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n OpenSurfaceRequest:\n type: object\n required: [plugin_instance_id, surface_id, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n RevokeSessionScopeRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n EmptyRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n EmptyQueryRequest:\n type: object\n additionalProperties: false\n maxProperties: 0\n ListIntentsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n intent_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n ListOperationsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n cursor: { type: string, minLength: 1, maxLength: 1024 }\n limit: { type: integer, minimum: 1, maximum: 500 }\n ListRetainedDataQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n ListPermissionsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n active_only: { type: boolean }\n PermissionRequirementsQueryRequest:\n type: object\n required: [plugin_instance_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n ListDiagnosticsQueryRequest:\n type: object\n additionalProperties: false\n properties:\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n type: { type: string, minLength: 1 }\n severity: { type: string, enum: [info, warning] }\n limit: { type: integer, minimum: 1, maximum: 1000 }\n SettingsQueryRequest:\n type: object\n additionalProperties: false\n required: [scope]\n properties:\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n SurfaceBootstrap:\n type: object\n additionalProperties: false\n required:\n - plugin_id\n - plugin_instance_id\n - plugin_version\n - ui_protocol_version\n - surface_id\n - surface_instance_id\n - active_fingerprint\n - entry_path\n - entry_sha256\n - asset_session_nonce\n - management_revision\n - revoke_epoch\n - runtime_generation_id\n - asset_ticket\n - asset_ticket_id\n - bridge_nonce\n - issued_at\n - expires_at\n properties:\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n ui_protocol_version: { type: string, enum: [plugin-ui-v7] }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n active_fingerprint: { type: string, minLength: 1 }\n entry_path: { type: string, minLength: 1 }\n entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n asset_session_nonce: { type: string, minLength: 16 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n runtime_generation_id: { type: string, minLength: 1 }\n asset_ticket: { type: string, minLength: 1 }\n asset_ticket_id: { type: string, minLength: 1 }\n bridge_nonce: { type: string, minLength: 16 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n PrepareSurfaceRequest:\n type: object\n required: [asset_ticket]\n additionalProperties: false\n properties:\n asset_ticket: { type: string, minLength: 1 }\n SurfacePreparation:\n type: object\n additionalProperties: false\n required:\n - asset_session\n - asset_session_id\n - asset_session_nonce\n - entry_path\n - entry_sha256\n - management_revision\n - revoke_epoch\n - issued_at\n - expires_at\n - document\n properties:\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n asset_session_nonce: { type: string, minLength: 16 }\n entry_path: { type: string, minLength: 1 }\n entry_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n document:\n $ref: \"../plugin/opaque-surface-document-v3.schema.json\"\n TrustedParentBridgeHandshake:\n type: object\n required: [type, plugin_id, surface_id, surface_instance_id, active_fingerprint, bridge_nonce, asset_session_nonce, management_revision, revoke_epoch, ui_protocol_version]\n additionalProperties: false\n properties:\n type: { const: redevplugin.bridge.handshake }\n plugin_id: { type: string, minLength: 1 }\n surface_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n active_fingerprint: { type: string, minLength: 1 }\n bridge_nonce: { type: string, minLength: 16 }\n asset_session_nonce: { type: string, minLength: 16 }\n management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 1, maximum: 9007199254740991 }\n ui_protocol_version: { type: string, enum: [plugin-ui-v7] }\n TrustedParentBridgeTokenRequest:\n type: object\n required: [handshake, bridge_channel_id, handshake_transcript_sha256]\n additionalProperties: false\n properties:\n handshake:\n $ref: \"#/components/schemas/TrustedParentBridgeHandshake\"\n bridge_channel_id: { type: string, minLength: 1 }\n handshake_transcript_sha256:\n type: string\n pattern: '^sha256:[0-9a-f]{64}$'\n previous_plugin_gateway_token:\n type: string\n minLength: 1\n description: Required only when renewing the current bridge channel lease.\n BridgeTokenResult:\n type: object\n additionalProperties: false\n required: [plugin_gateway_token, plugin_gateway_token_id, asset_session, asset_session_id, issued_at, expires_at]\n properties:\n plugin_gateway_token: { type: string, minLength: 1 }\n plugin_gateway_token_id: { type: string, minLength: 1 }\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n issued_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n ReadSurfaceAssetRequest:\n type: object\n additionalProperties: false\n required: [asset_session, asset_session_id, binding_id]\n properties:\n asset_session: { type: string, minLength: 1 }\n asset_session_id: { type: string, minLength: 1 }\n binding_id: { type: string, pattern: '^asset_[A-Za-z0-9_-]{8,128}$' }\n SurfaceAssetResult:\n type: object\n additionalProperties: false\n required: [path, sha256, content_type, content_base64]\n properties:\n path: { type: string, minLength: 1 }\n sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n content_type: { type: string, minLength: 1 }\n content_base64: { type: string, contentEncoding: base64 }\n ReadSurfaceStreamRequest:\n type: object\n additionalProperties: false\n required: [stream_id, stream_ticket, read_id]\n properties:\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n AcknowledgeSurfaceStreamRequest:\n type: object\n additionalProperties: false\n required: [stream_id, stream_ticket, delivery_id]\n properties:\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n SurfaceStreamResult:\n type: object\n additionalProperties: false\n required: [read_id, events, done]\n properties:\n delivery_id: { type: string, pattern: '^delivery_[A-Za-z0-9_-]{8,128}$' }\n read_id: { type: string, pattern: '^read_[A-Za-z0-9_-]{8,128}$' }\n events:\n type: array\n items:\n $ref: \"#/components/schemas/StreamEvent\"\n done: { type: boolean }\n terminal_status:\n enum: [closed, canceled, failed, orphaned_after_disable, orphaned_after_uninstall]\n allOf:\n - if:\n properties: { events: { minItems: 1 } }\n required: [events]\n then:\n required: [delivery_id]\n - if:\n properties: { done: { const: false } }\n required: [done]\n then:\n not:\n required: [terminal_status]\n - if:\n properties: { done: { const: true } }\n required: [done]\n then:\n required: [delivery_id, terminal_status]\n SurfaceStreamAcknowledgementResult:\n type: object\n required: [acknowledged]\n additionalProperties: false\n properties:\n acknowledged: { const: true }\n CancelSurfaceOperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id, bridge_channel_id]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n reason: { type: string, maxLength: 256 }\n GetSurfaceOperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id, bridge_channel_id]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n PluginOperationSnapshot:\n oneOf:\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { type: string, enum: [running, cancel_requested] }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms, terminal_at]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { type: string, enum: [completed, canceled, orphaned_after_disable, orphaned_after_uninstall] }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n terminal_at: { type: string, format: date-time }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n - type: object\n additionalProperties: false\n required: [operation_id, status, cancelable, created_at, updated_at, retry_after_ms, terminal_at, failure_code]\n properties:\n operation_id: { type: string, pattern: '^operation_[A-Za-z0-9_-]{8,150}$' }\n status: { const: failed }\n cancelable: { type: boolean }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n retry_after_ms: { type: integer, minimum: 500, maximum: 10000 }\n terminal_at: { type: string, format: date-time }\n failure_code: { type: string, enum: [adapter_failed, contract_invalid, platform_failed, quota_exceeded, runtime_failed] }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n OperationProgress:\n type: object\n additionalProperties: false\n required: [revision, phase]\n properties:\n revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n phase: { type: string, pattern: '^[A-Za-z0-9._:-]{1,128}$' }\n completed_units: { type: integer, minimum: 0, maximum: 9007199254740991 }\n total_units: { type: integer, minimum: 0, maximum: 9007199254740991 }\n unit: { type: string, pattern: '^[A-Za-z0-9._:-]{1,64}$' }\n allOf:\n - if:\n required: [completed_units]\n then:\n required: [total_units]\n - if:\n required: [total_units]\n then:\n required: [completed_units]\n RejectSurfaceConfirmationRequest:\n type: object\n additionalProperties: false\n required: [plugin_instance_id, bridge_channel_id, plugin_gateway_token, confirmation_id]\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1, maxLength: 256 }\n plugin_gateway_token: { type: string, minLength: 1 }\n confirmation_id: { type: string, pattern: '^confirmation_[A-Za-z0-9_-]{8,128}$' }\n ConfirmationRejectionResult:\n type: object\n additionalProperties: false\n required: [rejected]\n properties:\n rejected: { const: true }\n StreamEvent:\n type: object\n additionalProperties: false\n required: [stream_id, sequence, kind, at]\n properties:\n stream_id: { type: string, minLength: 1 }\n sequence: { type: integer, minimum: 0 }\n kind: { type: string, minLength: 1 }\n data: { type: string, contentEncoding: base64 }\n error: { type: string }\n at: { type: string, format: date-time }\n DisposeSurfaceRequest:\n type: object\n additionalProperties: false\n required: [bridge_nonce]\n properties:\n bridge_nonce: { type: string, minLength: 16 }\n RPCRequest:\n type: object\n required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1 }\n plugin_gateway_token: { type: string, minLength: 1 }\n confirmation_id: { type: string }\n method: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n PrepareMethodConfirmationRequest:\n type: object\n required: [plugin_instance_id, surface_instance_id, bridge_channel_id, plugin_gateway_token, method]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n surface_instance_id: { type: string, minLength: 1 }\n bridge_channel_id: { type: string, minLength: 1 }\n plugin_gateway_token: { type: string, minLength: 1 }\n method: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n RPCResult:\n oneOf:\n - type: object\n additionalProperties: false\n properties:\n data: true\n not:\n anyOf:\n - required: [operation_id]\n - required: [stream_id]\n - required: [confirmation_required]\n - type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n data: true\n operation_id: { type: string, minLength: 1 }\n - type: object\n additionalProperties: false\n required: [operation_id, stream_id, stream_ticket, stream_ticket_id, stream_expires_at]\n properties:\n data: true\n operation_id: { type: string, minLength: 1 }\n stream_id: { type: string, minLength: 1 }\n stream_ticket: { type: string, minLength: 1 }\n stream_ticket_id: { type: string, minLength: 1 }\n stream_expires_at: { type: string, format: date-time }\n - type: object\n additionalProperties: false\n required: [confirmation_required, confirmation_token_id, request_hash, plan_hash]\n properties:\n confirmation_required: { const: true }\n confirmation_token_id: { type: string, minLength: 1 }\n request_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n plan_hash: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n RiskFlag:\n type: object\n required: [id, severity, summary]\n additionalProperties: false\n properties:\n id:\n type: string\n minLength: 1\n description: Stable machine-readable risk identifier.\n severity:\n type: string\n enum: [info, low, medium, high, critical]\n summary: { type: string, minLength: 1 }\n description: { type: string }\n requires_confirmation: { type: boolean }\n requires_admin: { type: boolean }\n data_loss_risk: { type: boolean }\n destructive: { type: boolean }\n RiskPlan:\n type: object\n required: [schema_version, summary, risk_flags]\n additionalProperties: false\n properties:\n schema_version: { const: redevplugin.capability.risk_plan.v1 }\n capability_id: { type: string }\n binding_id: { type: string }\n method: { type: string }\n target_method: { type: string }\n action: { type: string }\n effect:\n type: string\n enum: [read, write, execute, delete, admin]\n resource_ref: { type: string }\n resource_display_name: { type: string }\n summary: { type: string, minLength: 1 }\n risk_flags:\n type: array\n items:\n $ref: \"#/components/schemas/RiskFlag\"\n requires_confirmation: { type: boolean }\n requires_admin: { type: boolean }\n data_loss_risk: { type: boolean }\n destructive: { type: boolean }\n deny_reason: { type: string }\n details:\n type: object\n additionalProperties: true\n PluginMethodConfirmationPreparation:\n type: object\n required: [confirmation_id, confirmation_token_id, request_hash, plan_hash, expires_at]\n additionalProperties: false\n properties:\n confirmation_id: { type: string, minLength: 1 }\n confirmation_token_id:\n type: string\n minLength: 1\n description: Opaque audit/display id for the server-held confirmation token. It is not a credential.\n request_hash:\n type: string\n pattern: \"^sha256:[0-9a-f]{64}$\"\n plan_hash:\n type: string\n pattern: \"^sha256:[0-9a-f]{64}$\"\n plan:\n description: Host-redacted confirmation plan payload returned by the declared preflight method, when available.\n oneOf:\n - $ref: \"#/components/schemas/RiskPlan\"\n - type: object\n additionalProperties: true\n properties:\n schema_version:\n not:\n type: string\n pattern: '^redevplugin\\.capability\\.risk_plan\\.'\n expires_at: { type: string, format: date-time }\n InvokeIntentRequest:\n type: object\n required: [intent_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string }\n intent_id: { type: string, minLength: 1 }\n params:\n type: object\n additionalProperties: true\n CancelOperationRequest:\n type: object\n additionalProperties: false\n properties:\n reason: { type: string }\n CapabilityContractPin:\n $ref: \"../plugin/host-capability-pin-v1.schema.json\"\n PublicOperationBinding:\n type: object\n description: Public immutable execution evidence embedded into operation responses. Session and bridge channel ownership fields are excluded.\n required:\n - invocation_id\n - audit_correlation_id\n - publisher_id\n - plugin_id\n - plugin_instance_id\n - plugin_version\n - active_fingerprint\n - route_kind\n - capability_id\n - capability_version\n - binding_id\n - method\n - target_method\n - effect\n - execution\n - permissions\n - confirmation\n - revision\n - quota\n - target\n - target_descriptor_sha256\n properties:\n invocation_id: { type: string, minLength: 1 }\n audit_correlation_id: { type: string, minLength: 1 }\n operation_id: { type: string, minLength: 1 }\n stream_id: { type: string, minLength: 1 }\n publisher_id: { type: string, minLength: 1 }\n plugin_id: { type: string, minLength: 1 }\n plugin_instance_id: { type: string, minLength: 1 }\n plugin_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n active_fingerprint: { type: string, minLength: 1 }\n surface_instance_id: { type: string }\n route_kind: { type: string, enum: [capability, worker, core_action] }\n capability_id: { type: string, minLength: 1 }\n capability_version: { $ref: \"#/components/schemas/StrictSemVer\" }\n binding_id: { type: string, minLength: 1 }\n contract:\n $ref: \"#/components/schemas/CapabilityContractPin\"\n method: { type: string, minLength: 1 }\n target_method: { type: string, minLength: 1 }\n effect: { type: string, enum: [read, write, execute, delete, admin] }\n execution: { type: string, enum: [sync, operation, subscription] }\n permissions:\n type: object\n additionalProperties: false\n required: [required, granted]\n properties:\n required: { type: array, items: { type: string } }\n granted: { type: array, items: { type: string } }\n confirmation:\n type: object\n additionalProperties: false\n required: [required, confirmed]\n properties:\n required: { type: boolean }\n confirmed: { type: boolean }\n confirmation_id: { type: string }\n request_sha256: { type: string }\n plan_sha256: { type: string }\n target_sha256: { type: string }\n revision:\n type: object\n additionalProperties: false\n required: [policy_revision, management_revision, revoke_epoch]\n properties:\n policy_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n management_revision: { type: integer, minimum: 0, maximum: 9007199254740991 }\n revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n quota:\n type: object\n additionalProperties: false\n properties:\n max_concurrent: { type: integer, minimum: 0, maximum: 9007199254740991 }\n max_duration_ms: { type: integer, minimum: 0, maximum: 9007199254740991 }\n max_stream_bytes: { type: integer, minimum: 0, maximum: 9007199254740991 }\n expires_at: { type: string, format: date-time }\n target:\n type: object\n additionalProperties: false\n required: [kind, fields]\n properties:\n kind: { type: string, minLength: 1 }\n fields: { type: object, additionalProperties: true }\n target_descriptor_sha256: { type: string, pattern: '^sha256:[0-9a-f]{64}$' }\n stream_event_type_name: { type: string, minLength: 1 }\n stream_event_schema_sha256: { type: string, pattern: '^[0-9a-f]{64}$' }\n oneOf:\n - required: [route_kind, contract]\n properties:\n route_kind: { const: capability }\n - required: [route_kind]\n properties:\n route_kind: { const: worker }\n not:\n required: [contract]\n - required: [route_kind]\n properties:\n route_kind: { const: core_action }\n not:\n required: [contract]\n OperationRecord:\n allOf:\n - $ref: \"#/components/schemas/PublicOperationBinding\"\n - type: object\n required:\n - operation_id\n - cancelable\n - created_at\n - updated_at\n properties:\n operation_id: { type: string, minLength: 1 }\n execution: { type: string, enum: [operation, subscription] }\n cancelable: { type: boolean }\n cancel_ack_timeout_ms: { type: integer, minimum: 0 }\n disable_behavior: { type: string, enum: [cancel, orphan, wait] }\n uninstall_behavior: { type: string, enum: [cancel_then_block_delete, force_cleanup_allowed] }\n created_at: { type: string, format: date-time }\n updated_at: { type: string, format: date-time }\n cancel_requested_at: { type: string, format: date-time }\n orphaned_at: { type: string, format: date-time }\n terminal_at: { type: string, format: date-time }\n progress: { $ref: \"#/components/schemas/OperationProgress\" }\n oneOf:\n - type: object\n required: [status, failure_code, reason]\n properties:\n status: { const: failed }\n failure_code: { $ref: \"#/components/schemas/ExecutionFailureCode\" }\n reason: { const: \"execution failed\" }\n - type: object\n required: [status]\n properties:\n status:\n enum: [running, cancel_requested, canceled, completed, orphaned_after_disable, orphaned_after_uninstall]\n reason: { type: string }\n not:\n required: [failure_code]\n unevaluatedProperties: false\n ExecutionFailureCode:\n type: string\n enum: [adapter_failed, contract_invalid, platform_failed, quota_exceeded, runtime_failed]\n StartRuntimeRequest:\n type: object\n required: [target]\n additionalProperties: false\n properties:\n target: { $ref: \"#/components/schemas/RuntimeTarget\" }\n ExportDataRequest:\n type: object\n required: [plugin_instance_id]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n DeleteDataExportRequest:\n type: object\n required: [plugin_instance_id, bundle_ref]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bundle_ref: { type: string, minLength: 1 }\n ImportDataRequest:\n type: object\n required: [plugin_instance_id, bundle_ref, expected_management_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n bundle_ref: { type: string, minLength: 1 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n PluginDataBinding:\n type: object\n required: [plugin_instance_id, generation_id, state, revision, shape_hash]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n generation_id: { type: string, minLength: 1 }\n state: { type: string, enum: [active, retained] }\n revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n shape_hash: { type: string, pattern: \"^[0-9a-f]{64}$\" }\n retained_at: { type: string, format: date-time }\n expires_at: { type: string, format: date-time }\n RetainedDataList:\n type: object\n required: [retained_data]\n additionalProperties: false\n properties:\n retained_data:\n type: array\n items:\n $ref: \"#/components/schemas/PluginDataBinding\"\n RetainedDataCleanupResult:\n type: object\n required: [deleted]\n additionalProperties: false\n properties:\n deleted:\n type: array\n items:\n $ref: \"#/components/schemas/PluginDataBinding\"\n DeleteRetainedDataRequest:\n type: object\n required: [plugin_instance_id, expected_binding_revision]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n expected_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n BindRetainedDataRequest:\n type: object\n required: [source_plugin_instance_id, expected_source_binding_revision, target_plugin_instance_id, target_expected_management_revision]\n additionalProperties: false\n properties:\n source_plugin_instance_id: { type: string, minLength: 1 }\n expected_source_binding_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n target_plugin_instance_id: { type: string, minLength: 1 }\n target_expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n CleanupExpiredRetainedDataRequest:\n type: object\n additionalProperties: false\n GrantPermissionRequest:\n type: object\n required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n permission_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n expires_at: { type: string, format: date-time }\n RevokePermissionRequest:\n type: object\n required: [plugin_instance_id, permission_id, expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n permission_id: { type: string, minLength: 1 }\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n reason: { type: string }\n PutSecurityPolicyRequest:\n type: object\n required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch, allowed_permissions, denied_methods]\n additionalProperties: false\n properties:\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n allowed_permissions:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n denied_methods:\n type: array\n uniqueItems: true\n items: { type: string, minLength: 1 }\n DeleteSecurityPolicyRequest:\n type: object\n required: [expected_policy_revision, expected_management_revision, expected_revoke_epoch]\n additionalProperties: false\n properties:\n expected_policy_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_management_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n expected_revoke_epoch: { type: integer, minimum: 0, maximum: 9007199254740991 }\n SecretRefRequest:\n type: object\n required: [plugin_instance_id, secret_ref, scope]\n additionalProperties: false\n properties:\n plugin_instance_id: { type: string, minLength: 1 }\n secret_ref: { type: string, minLength: 1 }\n scope: { type: string, enum: [user, environment] }\n ResourceScopeKind:\n type: string\n enum: [user, environment]\n PatchSettingsRequest:\n type: object\n required: [scope, expected_values_revision]\n additionalProperties: false\n minProperties: 3\n properties:\n scope: { $ref: \"#/components/schemas/ResourceScopeKind\" }\n expected_values_revision: { type: integer, minimum: 1, maximum: 9007199254740991 }\n set:\n type: object\n minProperties: 1\n additionalProperties: true\n remove:\n type: array\n minItems: 1\n uniqueItems: true\n items: { type: string, minLength: 1 }\n";
175
175
  }, {
176
176
  readonly id: "presentation-locale-fixture";
177
177
  readonly path: "spec/plugin/presentation-locale-fixtures-v1.json";
@@ -357,17 +357,17 @@ export declare const generatedRegistryContract: {
357
357
  readonly id: "contract-registry";
358
358
  readonly path: "spec/plugin/contract-registry-v2.json";
359
359
  readonly version: "contract-registry-v2";
360
- readonly sha256: "48be85b432582fd9d909f7bcff1c0082a0c3269ae863ef839527eed58c7435b4";
361
- readonly body: "{\n \"schema_version\": \"redevplugin.contract_registry.v2\",\n \"registry_version\": \"contract-registry-v2\",\n \"artifacts\": [\n {\n \"id\": \"compatibility-manifest-schema\",\n \"path\": \"spec/plugin/compatibility-manifest-v14.schema.json\",\n \"version\": \"compatibility-manifest-v14\",\n \"sha256\": \"67016ead2ed8b86410aafe3771d750ea2ab088479047475542ac65caa1691a7c\"\n },\n {\n \"id\": \"contract-registry-schema\",\n \"path\": \"spec/plugin/contract-registry-v2.schema.json\",\n \"version\": \"contract-registry-v2\",\n \"sha256\": \"d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac\"\n },\n {\n \"id\": \"error-codes-schema\",\n \"path\": \"spec/plugin/error-codes-v7.schema.json\",\n \"version\": \"error-codes-v7\",\n \"sha256\": \"4e7cac510a6036f90cae8f58ff8c3b785b3a2d3933875f2f69bef1c41de3d26c\"\n },\n {\n \"id\": \"external-signer-request-schema\",\n \"path\": \"spec/plugin/external-signer-request-v1.schema.json\",\n \"version\": \"external-signer-request-v1\",\n \"sha256\": \"abc18af2e29dea6f0b49a28b75b046ef02f200597978c8238cc587fb7e670760\"\n },\n {\n \"id\": \"external-signer-response-schema\",\n \"path\": \"spec/plugin/external-signer-response-v1.schema.json\",\n \"version\": \"external-signer-response-v1\",\n \"sha256\": \"bbe657df5afdf459a4c5f83282ddc3ec6c80c1ebd25bb954eac92101f35afc6c\"\n },\n {\n \"id\": \"host-capability-compatibility-schema\",\n \"path\": \"spec/plugin/host-capability-compatibility-v1.schema.json\",\n \"version\": \"host-capability-compatibility-v1\",\n \"sha256\": \"361ebbf7009aeb66c763ecde46427b17b6cf7d2307c01886c5987a1f4f1762de\"\n },\n {\n \"id\": \"host-capability-contract-schema\",\n \"path\": \"spec/plugin/host-capability-contract-v1.schema.json\",\n \"version\": \"host-capability-contract-v1\",\n \"sha256\": \"0a653e36d44104f1d16b06ee424648086c146f23c907b176bdf470ae73025485\"\n },\n {\n \"id\": \"host-capability-manifest-schema\",\n \"path\": \"spec/plugin/host-capability-manifest-v1.schema.json\",\n \"version\": \"host-capability-manifest-v1\",\n \"sha256\": \"5f13a8e5f918378b9cba9fdc133a9a75ba3a8311c30cb6a02ca0aba09035110e\"\n },\n {\n \"id\": \"host-capability-notices-schema\",\n \"path\": \"spec/plugin/host-capability-notices-v1.schema.json\",\n \"version\": \"host-capability-notices-v1\",\n \"sha256\": \"6affd5d0ae90239f6fd08cbeddae4eef393efa2838c9e4935874ba3dc0e05948\"\n },\n {\n \"id\": \"host-capability-pin-schema\",\n \"path\": \"spec/plugin/host-capability-pin-v1.schema.json\",\n \"version\": \"host-capability-pin-v1\",\n \"sha256\": \"20526a5934f0d85a3db7882492487266f09de5bcd176e2c7936f05d0b7fe0338\"\n },\n {\n \"id\": \"host-capability-publisher-config-schema\",\n \"path\": \"spec/plugin/host-capability-publisher-config-v1.schema.json\",\n \"version\": \"host-capability-publisher-config-v1\",\n \"sha256\": \"f06ab3d70f3f9dd2114fe9d489841f1d6b5f169ee17b8c92aa1bfaf9bbf865c4\"\n },\n {\n \"id\": \"host-capability-signature-schema\",\n \"path\": \"spec/plugin/host-capability-signature-v1.schema.json\",\n \"version\": \"host-capability-signature-v1\",\n \"sha256\": \"88cbc1d63afb7e289ca4f8b7c76f702b8d20156f7722c1b71f3ab9138a240a5e\"\n },\n {\n \"id\": \"host-capability-signer-request-schema\",\n \"path\": \"spec/plugin/host-capability-signer-request-v1.schema.json\",\n \"version\": \"host-capability-signer-request-v1\",\n \"sha256\": \"7f22e9e0f813b91106693edfbb91309489dde1640152c29d878961fdef6b89d8\"\n },\n {\n \"id\": \"host-capability-signer-response-schema\",\n \"path\": \"spec/plugin/host-capability-signer-response-v1.schema.json\",\n \"version\": \"host-capability-signer-response-v1\",\n \"sha256\": \"02a50b1fc0d1b8ae0611eab95b5560122c6425709ecc8de5e00bf0dd68085f44\"\n },\n {\n \"id\": \"iframe-bridge-schema\",\n \"path\": \"spec/plugin/bridge-v7.schema.json\",\n \"version\": \"bridge-v7\",\n \"sha256\": \"f4b5f04870b58e8e2363aaba98b273adccef3a3e9ac1eb1a2dbbc3fb4c71b300\"\n },\n {\n \"id\": \"manifest-schema\",\n \"path\": \"spec/plugin/manifest-v8.schema.json\",\n \"version\": \"manifest-v8\",\n \"sha256\": \"f4f6ec875936b19ae3371459804b5ad2c36a4bd0739a83976037efffe51ada48\"\n },\n {\n \"id\": \"network-grant-schema\",\n \"path\": \"spec/plugin/network-grant-v2.schema.json\",\n \"version\": \"network-grant-v2\",\n \"sha256\": \"5fc1cfc3469a992e551fd392fab982abb6f95e456a1cb768ceca137f7c693abc\"\n },\n {\n \"id\": \"opaque-surface-document-schema\",\n \"path\": \"spec/plugin/opaque-surface-document-v3.schema.json\",\n \"version\": \"opaque-surface-document-v3\",\n \"sha256\": \"63419ff5b5a8890e14f97ca29aaae175b93daff61d4567c5bdff7f6e6a9e7450\"\n },\n {\n \"id\": \"opaque-surface-transport-schema\",\n \"path\": \"spec/plugin/opaque-surface-transport-v6.schema.json\",\n \"version\": \"opaque-surface-transport-v6\",\n \"sha256\": \"8f2af2669edc9413020c26765ee3f1986ef63a7d0803466861d8cdae3977ccff\"\n },\n {\n \"id\": \"owner-scope-inventory-registry\",\n \"path\": \"spec/plugin/owner-scope-inventories-v1.json\",\n \"version\": \"owner-scope-inventory-registry-v1\",\n \"sha256\": \"f655313a641368383b3d84b6ea4f6a2a2ef42a44a4dd23f71211361c9c2e0505\"\n },\n {\n \"id\": \"owner-scope-inventory-schema\",\n \"path\": \"spec/plugin/owner-scope-inventory-v1.schema.json\",\n \"version\": \"owner-scope-inventory-v1\",\n \"sha256\": \"21dc4980103f3a36f4252ce141d7350476ec00968e8a320695e450274e928be1\"\n },\n {\n \"id\": \"owner-scope-migration-schema\",\n \"path\": \"spec/plugin/owner-scope-migration-v1.schema.json\",\n \"version\": \"owner-scope-migration-v1\",\n \"sha256\": \"497fff8a09d48fe195c18d13ff05ca6c9f8406f6215588901cb6d89315b713eb\"\n },\n {\n \"id\": \"owner-scope-root-recovery-schema\",\n \"path\": \"spec/plugin/owner-scope-root-recovery-v1.schema.json\",\n \"version\": \"owner-scope-root-recovery-v1\",\n \"sha256\": \"81b961a9933d129c8f9119e3091226039ffbc0b4721116a4811f9785bebf9d64\"\n },\n {\n \"id\": \"package-signature-schema\",\n \"path\": \"spec/plugin/package-signature-v1.schema.json\",\n \"version\": \"package-signature-v1\",\n \"sha256\": \"13951c0f6831ba28647774368c76a817868aeb7984628e2cf3dc4ad1b54f8284\"\n },\n {\n \"id\": \"performance-contract\",\n \"path\": \"spec/plugin/performance-contract-v4.json\",\n \"version\": \"performance-contract-v4\",\n \"sha256\": \"aedc50ed8899346140965dc46e8adf2048c47bcf6c146c3b7a51646eda7725e1\"\n },\n {\n \"id\": \"performance-evidence-schema\",\n \"path\": \"spec/plugin/performance-evidence-v4.schema.json\",\n \"version\": \"performance-evidence-v4\",\n \"sha256\": \"f51ba9d425f0e40bc4f2db7ed26454e7575b14ffb6937a06dc01b8e7a66b3f61\"\n },\n {\n \"id\": \"platform-package-publication-schema\",\n \"path\": \"spec/plugin/platform-package-publication-v1.schema.json\",\n \"version\": \"platform-package-publication-v1\",\n \"sha256\": \"20450b516c34d5a122020f4064ddfa03ffcb97ffea661e0868cd09760b3f08b0\"\n },\n {\n \"id\": \"platform-package-set-schema\",\n \"path\": \"spec/plugin/platform-package-set-v1.schema.json\",\n \"version\": \"platform-package-set-v1\",\n \"sha256\": \"4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796\"\n },\n {\n \"id\": \"plugin-platform-openapi\",\n \"path\": \"spec/openapi/plugin-platform-v12.yaml\",\n \"version\": \"plugin-platform-v12\",\n \"sha256\": \"715698e9e1e357e243ee21b3157cc044befac83979107f54d024b5e9e48f7050\"\n },\n {\n \"id\": \"presentation-locale-fixture\",\n \"path\": \"spec/plugin/presentation-locale-fixtures-v1.json\",\n \"version\": \"presentation-locale-fixtures-v1\",\n \"sha256\": \"cbb4c0188d020b5fbde9a0c2c33b3677d21cc64c0f0297b7f6f3f6c0efabc40e\"\n },\n {\n \"id\": \"process-containment-schema\",\n \"path\": \"spec/plugin/process-containment-v1.schema.json\",\n \"version\": \"process-containment-v1\",\n \"sha256\": \"930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc\"\n },\n {\n \"id\": \"publisher-release-ref-schema\",\n \"path\": \"spec/plugin/publisher-release-ref-v1.schema.json\",\n \"version\": \"publisher-release-ref-v1\",\n \"sha256\": \"f9fd40c87197064ffa3e21a361780a4d057b51df2e886988aac64279785acdc0\"\n },\n {\n \"id\": \"quarantine-cleanup-schema\",\n \"path\": \"spec/plugin/quarantine-cleanup-v1.schema.json\",\n \"version\": \"quarantine-cleanup-v1\",\n \"sha256\": \"0aced01a8d409953d5075a799ac273cae79e285ac82debe93ac4d8b706571ad1\"\n },\n {\n \"id\": \"release-metadata-schema\",\n \"path\": \"spec/plugin/release-metadata-v8.schema.json\",\n \"version\": \"release-metadata-v8\",\n \"sha256\": \"f454fc1923be10fd5a4b46df4a6e376f7e9fe1d462f3da57977b92ad7c7496b0\"\n },\n {\n \"id\": \"release-publisher-config-schema\",\n \"path\": \"spec/plugin/release-publisher-config-v1.schema.json\",\n \"version\": \"release-publisher-config-v1\",\n \"sha256\": \"c18b11489f81ac657c8324ed344b88b61b259981383ee7b4f9f0b65603a171f8\"\n },\n {\n \"id\": \"release-revocation-pointer-schema\",\n \"path\": \"spec/plugin/release-revocation-pointer-v2.schema.json\",\n \"version\": \"release-revocation-pointer-v2\",\n \"sha256\": \"dd39ba618ab02698f135875305d4aa6eb562af7d15520c4ad312cd82e9a7032b\"\n },\n {\n \"id\": \"release-revocation-schema\",\n \"path\": \"spec/plugin/release-revocation-v3.schema.json\",\n \"version\": \"release-revocation-v3\",\n \"sha256\": \"bd2ca3ab93f047897d3b377adc7fa8b073fc946539a0c5495def1e64915a782b\"\n },\n {\n \"id\": \"release-root-delegation-schema\",\n \"path\": \"spec/plugin/release-root-delegation-v1.schema.json\",\n \"version\": \"release-root-delegation-v1\",\n \"sha256\": \"c1adbb13eaeeca145d5ee787ff43777e60a5f329e460d20b8db358e4f5fc4825\"\n },\n {\n \"id\": \"release-signature-envelope-schema\",\n \"path\": \"spec/plugin/release-signature-envelope-v1.schema.json\",\n \"version\": \"release-signature-envelope-v1\",\n \"sha256\": \"7df9afd22bfdebfa89dc3bdb46ecdbe22a91ecce35fa46c492dd9795c66fae29\"\n },\n {\n \"id\": \"release-signing-ledger-evidence-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-evidence-v1.schema.json\",\n \"version\": \"release-signing-ledger-evidence-v1\",\n \"sha256\": \"9ab8b7f65dedcd119d578debb4f6ff97fc35f4c7ac95c0e5435f8b0959bc1a5c\"\n },\n {\n \"id\": \"release-signing-ledger-receipt-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-receipt-v1.schema.json\",\n \"version\": \"release-signing-ledger-receipt-v1\",\n \"sha256\": \"29210cfefd967017c5c74bcf8489bd50511c5c9f36d17b0200056ccb90c30561\"\n },\n {\n \"id\": \"release-signing-ledger-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-v1.schema.json\",\n \"version\": \"release-signing-ledger-v1\",\n \"sha256\": \"0c72b30bfd6b857b9809e48e1b7eaaeb7134d5afd6a935aa8373465054403765\"\n },\n {\n \"id\": \"release-signing-subject-schema\",\n \"path\": \"spec/plugin/release-signing-subject-v1.schema.json\",\n \"version\": \"release-signing-subject-v1\",\n \"sha256\": \"876b1459824f90042bd141e96bfea4633333bdf2a227e15b6e25c72db1179c8e\"\n },\n {\n \"id\": \"release-source-policy-pointer-schema\",\n \"path\": \"spec/plugin/release-source-policy-pointer-v2.schema.json\",\n \"version\": \"release-source-policy-pointer-v2\",\n \"sha256\": \"735659143db7204abdd20c6fbc994ac7474618c41b85949aad4c28fb2912e034\"\n },\n {\n \"id\": \"release-source-policy-schema\",\n \"path\": \"spec/plugin/release-source-policy-v3.schema.json\",\n \"version\": \"release-source-policy-v3\",\n \"sha256\": \"8814de028800c92b26c8c85a06298762598aeba1835f57048ec6c06430f8567b\"\n },\n {\n \"id\": \"release-trust-state-schema\",\n \"path\": \"spec/plugin/release-trust-state-v1.schema.json\",\n \"version\": \"release-trust-state-v1\",\n \"sha256\": \"19ffa182932a22401a33ee4c9921e957c67895c2d8b041c9a27ee3530bdfb2d2\"\n },\n {\n \"id\": \"resource-scope-schema\",\n \"path\": \"spec/plugin/resource-scope-v1.schema.json\",\n \"version\": \"resource-scope-v1\",\n \"sha256\": \"e6021bd576c7220ad5536645a7ad8e57ee7aeb9901c31a89444fa6b695d8dc6f\"\n },\n {\n \"id\": \"runtime-admission-schema\",\n \"path\": \"spec/plugin/runtime-admission-v1.schema.json\",\n \"version\": \"runtime-admission-v1\",\n \"sha256\": \"bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb\"\n },\n {\n \"id\": \"runtime-descriptor-schema\",\n \"path\": \"spec/plugin/runtime-descriptor-v2.schema.json\",\n \"version\": \"runtime-descriptor-v2\",\n \"sha256\": \"2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351\"\n },\n {\n \"id\": \"runtime-exec-journal-schema\",\n \"path\": \"spec/plugin/runtime-exec-journal-v1.schema.json\",\n \"version\": \"runtime-exec-journal-v1\",\n \"sha256\": \"2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2\"\n },\n {\n \"id\": \"rust-ipc-schema\",\n \"path\": \"spec/plugin/ipc-v6.schema.json\",\n \"version\": \"rust-ipc-v6\",\n \"sha256\": \"9814ca091ac2e4e8435c1ab553e248e9d2e792de93ce9fd27bd030486774837f\"\n },\n {\n \"id\": \"session-scope-maintenance-contract\",\n \"path\": \"spec/plugin/session-scope-maintenance-v1.json\",\n \"version\": \"session-scope-maintenance-v1\",\n \"sha256\": \"fd87b6654c954ee2a2dc67958ba214048b894aa421bb74a85fb02000ec51f37b\"\n },\n {\n \"id\": \"session-scope-schema\",\n \"path\": \"spec/plugin/session-scope-v1.schema.json\",\n \"version\": \"session-scope-v1\",\n \"sha256\": \"3df0084264f0aff9fe2261c237cea439adb5cdc2534bfaaa0488d5992d4a7d2e\"\n },\n {\n \"id\": \"target-classifier-fixture\",\n \"path\": \"spec/plugin/target-classifier-v2.json\",\n \"version\": \"target-classifier-v2\",\n \"sha256\": \"ae7336cce77a2e820f96f1cc309b93f8442c932dcebec25e3890d31cd098e2d1\"\n },\n {\n \"id\": \"token-ticket-schema\",\n \"path\": \"spec/plugin/token-ticket-v4.schema.json\",\n \"version\": \"token-ticket-v4\",\n \"sha256\": \"5cf365b5b52a331ac0d3ad35a98be3c2ce668804ae88fdeaf9679a44db14feb1\"\n },\n {\n \"id\": \"trusted-time-evidence-schema\",\n \"path\": \"spec/plugin/trusted-time-evidence-v1.schema.json\",\n \"version\": \"trusted-time-evidence-v1\",\n \"sha256\": \"4398cbd2a3eea42a85008ee16a69d7adb265673e6749b1f13a4f1610f36e5e38\"\n },\n {\n \"id\": \"trusted-time-leaf-schema\",\n \"path\": \"spec/plugin/trusted-time-leaf-v1.schema.json\",\n \"version\": \"trusted-time-leaf-v1\",\n \"sha256\": \"1c25eb0040800eef145aa2bb4c0e1ae197ae584d365e9595ab89037e26fe5ddb\"\n },\n {\n \"id\": \"wasm-worker-schema\",\n \"path\": \"spec/plugin/wasm-worker-v2.schema.json\",\n \"version\": \"redevplugin-wasm-worker-v2\",\n \"sha256\": \"00bf123f3a9ed932de4b71c180e2a5c34af0f82050defb271fedec42cf217902\"\n },\n {\n \"id\": \"worker-invocation-schema\",\n \"path\": \"spec/plugin/worker-invocation-v3.schema.json\",\n \"version\": \"worker-invocation-v3\",\n \"sha256\": \"f08af491cbf5e7b71d1aeafbeac9ae581ee5fc3bcb76184daec369f94bab3927\"\n }\n ]\n}\n";
360
+ readonly sha256: "6b9a53504f8dde917dc51e31d785b7b2e767334e15d63d9a3ded491e2bdb9a7a";
361
+ readonly body: "{\n \"schema_version\": \"redevplugin.contract_registry.v2\",\n \"registry_version\": \"contract-registry-v2\",\n \"artifacts\": [\n {\n \"id\": \"compatibility-manifest-schema\",\n \"path\": \"spec/plugin/compatibility-manifest-v15.schema.json\",\n \"version\": \"compatibility-manifest-v15\",\n \"sha256\": \"921beeaff20abd3f67d73bd695f27459f453b014730cefb22864c015837c239a\"\n },\n {\n \"id\": \"contract-registry-schema\",\n \"path\": \"spec/plugin/contract-registry-v2.schema.json\",\n \"version\": \"contract-registry-v2\",\n \"sha256\": \"d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac\"\n },\n {\n \"id\": \"error-codes-schema\",\n \"path\": \"spec/plugin/error-codes-v8.schema.json\",\n \"version\": \"error-codes-v8\",\n \"sha256\": \"454e3c8b46e20bc524080ca1aa91dcf2ecdfe0a90cc33b5b328e87356d07e7e3\"\n },\n {\n \"id\": \"external-signer-request-schema\",\n \"path\": \"spec/plugin/external-signer-request-v1.schema.json\",\n \"version\": \"external-signer-request-v1\",\n \"sha256\": \"abc18af2e29dea6f0b49a28b75b046ef02f200597978c8238cc587fb7e670760\"\n },\n {\n \"id\": \"external-signer-response-schema\",\n \"path\": \"spec/plugin/external-signer-response-v1.schema.json\",\n \"version\": \"external-signer-response-v1\",\n \"sha256\": \"bbe657df5afdf459a4c5f83282ddc3ec6c80c1ebd25bb954eac92101f35afc6c\"\n },\n {\n \"id\": \"host-capability-compatibility-schema\",\n \"path\": \"spec/plugin/host-capability-compatibility-v1.schema.json\",\n \"version\": \"host-capability-compatibility-v1\",\n \"sha256\": \"361ebbf7009aeb66c763ecde46427b17b6cf7d2307c01886c5987a1f4f1762de\"\n },\n {\n \"id\": \"host-capability-contract-schema\",\n \"path\": \"spec/plugin/host-capability-contract-v1.schema.json\",\n \"version\": \"host-capability-contract-v1\",\n \"sha256\": \"0a653e36d44104f1d16b06ee424648086c146f23c907b176bdf470ae73025485\"\n },\n {\n \"id\": \"host-capability-manifest-schema\",\n \"path\": \"spec/plugin/host-capability-manifest-v1.schema.json\",\n \"version\": \"host-capability-manifest-v1\",\n \"sha256\": \"5f13a8e5f918378b9cba9fdc133a9a75ba3a8311c30cb6a02ca0aba09035110e\"\n },\n {\n \"id\": \"host-capability-notices-schema\",\n \"path\": \"spec/plugin/host-capability-notices-v1.schema.json\",\n \"version\": \"host-capability-notices-v1\",\n \"sha256\": \"6affd5d0ae90239f6fd08cbeddae4eef393efa2838c9e4935874ba3dc0e05948\"\n },\n {\n \"id\": \"host-capability-pin-schema\",\n \"path\": \"spec/plugin/host-capability-pin-v1.schema.json\",\n \"version\": \"host-capability-pin-v1\",\n \"sha256\": \"20526a5934f0d85a3db7882492487266f09de5bcd176e2c7936f05d0b7fe0338\"\n },\n {\n \"id\": \"host-capability-publisher-config-schema\",\n \"path\": \"spec/plugin/host-capability-publisher-config-v1.schema.json\",\n \"version\": \"host-capability-publisher-config-v1\",\n \"sha256\": \"f06ab3d70f3f9dd2114fe9d489841f1d6b5f169ee17b8c92aa1bfaf9bbf865c4\"\n },\n {\n \"id\": \"host-capability-signature-schema\",\n \"path\": \"spec/plugin/host-capability-signature-v1.schema.json\",\n \"version\": \"host-capability-signature-v1\",\n \"sha256\": \"88cbc1d63afb7e289ca4f8b7c76f702b8d20156f7722c1b71f3ab9138a240a5e\"\n },\n {\n \"id\": \"host-capability-signer-request-schema\",\n \"path\": \"spec/plugin/host-capability-signer-request-v1.schema.json\",\n \"version\": \"host-capability-signer-request-v1\",\n \"sha256\": \"7f22e9e0f813b91106693edfbb91309489dde1640152c29d878961fdef6b89d8\"\n },\n {\n \"id\": \"host-capability-signer-response-schema\",\n \"path\": \"spec/plugin/host-capability-signer-response-v1.schema.json\",\n \"version\": \"host-capability-signer-response-v1\",\n \"sha256\": \"02a50b1fc0d1b8ae0611eab95b5560122c6425709ecc8de5e00bf0dd68085f44\"\n },\n {\n \"id\": \"iframe-bridge-schema\",\n \"path\": \"spec/plugin/bridge-v7.schema.json\",\n \"version\": \"bridge-v7\",\n \"sha256\": \"fe8da4e5b14ac6d7c7bb3101e041246e92573c58e1c9537e8cda2c26bf175ef5\"\n },\n {\n \"id\": \"manifest-schema\",\n \"path\": \"spec/plugin/manifest-v8.schema.json\",\n \"version\": \"manifest-v8\",\n \"sha256\": \"f4f6ec875936b19ae3371459804b5ad2c36a4bd0739a83976037efffe51ada48\"\n },\n {\n \"id\": \"network-grant-schema\",\n \"path\": \"spec/plugin/network-grant-v2.schema.json\",\n \"version\": \"network-grant-v2\",\n \"sha256\": \"5fc1cfc3469a992e551fd392fab982abb6f95e456a1cb768ceca137f7c693abc\"\n },\n {\n \"id\": \"opaque-surface-document-schema\",\n \"path\": \"spec/plugin/opaque-surface-document-v3.schema.json\",\n \"version\": \"opaque-surface-document-v3\",\n \"sha256\": \"63419ff5b5a8890e14f97ca29aaae175b93daff61d4567c5bdff7f6e6a9e7450\"\n },\n {\n \"id\": \"opaque-surface-transport-schema\",\n \"path\": \"spec/plugin/opaque-surface-transport-v6.schema.json\",\n \"version\": \"opaque-surface-transport-v6\",\n \"sha256\": \"8f2af2669edc9413020c26765ee3f1986ef63a7d0803466861d8cdae3977ccff\"\n },\n {\n \"id\": \"owner-scope-inventory-registry\",\n \"path\": \"spec/plugin/owner-scope-inventories-v1.json\",\n \"version\": \"owner-scope-inventory-registry-v1\",\n \"sha256\": \"f655313a641368383b3d84b6ea4f6a2a2ef42a44a4dd23f71211361c9c2e0505\"\n },\n {\n \"id\": \"owner-scope-inventory-schema\",\n \"path\": \"spec/plugin/owner-scope-inventory-v1.schema.json\",\n \"version\": \"owner-scope-inventory-v1\",\n \"sha256\": \"21dc4980103f3a36f4252ce141d7350476ec00968e8a320695e450274e928be1\"\n },\n {\n \"id\": \"owner-scope-migration-schema\",\n \"path\": \"spec/plugin/owner-scope-migration-v1.schema.json\",\n \"version\": \"owner-scope-migration-v1\",\n \"sha256\": \"497fff8a09d48fe195c18d13ff05ca6c9f8406f6215588901cb6d89315b713eb\"\n },\n {\n \"id\": \"owner-scope-root-recovery-schema\",\n \"path\": \"spec/plugin/owner-scope-root-recovery-v1.schema.json\",\n \"version\": \"owner-scope-root-recovery-v1\",\n \"sha256\": \"81b961a9933d129c8f9119e3091226039ffbc0b4721116a4811f9785bebf9d64\"\n },\n {\n \"id\": \"package-signature-schema\",\n \"path\": \"spec/plugin/package-signature-v1.schema.json\",\n \"version\": \"package-signature-v1\",\n \"sha256\": \"13951c0f6831ba28647774368c76a817868aeb7984628e2cf3dc4ad1b54f8284\"\n },\n {\n \"id\": \"performance-contract\",\n \"path\": \"spec/plugin/performance-contract-v4.json\",\n \"version\": \"performance-contract-v4\",\n \"sha256\": \"aedc50ed8899346140965dc46e8adf2048c47bcf6c146c3b7a51646eda7725e1\"\n },\n {\n \"id\": \"performance-evidence-schema\",\n \"path\": \"spec/plugin/performance-evidence-v4.schema.json\",\n \"version\": \"performance-evidence-v4\",\n \"sha256\": \"f51ba9d425f0e40bc4f2db7ed26454e7575b14ffb6937a06dc01b8e7a66b3f61\"\n },\n {\n \"id\": \"platform-package-publication-schema\",\n \"path\": \"spec/plugin/platform-package-publication-v1.schema.json\",\n \"version\": \"platform-package-publication-v1\",\n \"sha256\": \"20450b516c34d5a122020f4064ddfa03ffcb97ffea661e0868cd09760b3f08b0\"\n },\n {\n \"id\": \"platform-package-set-schema\",\n \"path\": \"spec/plugin/platform-package-set-v1.schema.json\",\n \"version\": \"platform-package-set-v1\",\n \"sha256\": \"4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796\"\n },\n {\n \"id\": \"plugin-platform-openapi\",\n \"path\": \"spec/openapi/plugin-platform-v13.yaml\",\n \"version\": \"plugin-platform-v13\",\n \"sha256\": \"e0b0c3a2aede94b80e32fb84adf5f88d867c6e9958565c106e60ad5a2ae36f5e\"\n },\n {\n \"id\": \"presentation-locale-fixture\",\n \"path\": \"spec/plugin/presentation-locale-fixtures-v1.json\",\n \"version\": \"presentation-locale-fixtures-v1\",\n \"sha256\": \"cbb4c0188d020b5fbde9a0c2c33b3677d21cc64c0f0297b7f6f3f6c0efabc40e\"\n },\n {\n \"id\": \"process-containment-schema\",\n \"path\": \"spec/plugin/process-containment-v1.schema.json\",\n \"version\": \"process-containment-v1\",\n \"sha256\": \"930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc\"\n },\n {\n \"id\": \"publisher-release-ref-schema\",\n \"path\": \"spec/plugin/publisher-release-ref-v1.schema.json\",\n \"version\": \"publisher-release-ref-v1\",\n \"sha256\": \"f9fd40c87197064ffa3e21a361780a4d057b51df2e886988aac64279785acdc0\"\n },\n {\n \"id\": \"quarantine-cleanup-schema\",\n \"path\": \"spec/plugin/quarantine-cleanup-v1.schema.json\",\n \"version\": \"quarantine-cleanup-v1\",\n \"sha256\": \"0aced01a8d409953d5075a799ac273cae79e285ac82debe93ac4d8b706571ad1\"\n },\n {\n \"id\": \"release-metadata-schema\",\n \"path\": \"spec/plugin/release-metadata-v8.schema.json\",\n \"version\": \"release-metadata-v8\",\n \"sha256\": \"f454fc1923be10fd5a4b46df4a6e376f7e9fe1d462f3da57977b92ad7c7496b0\"\n },\n {\n \"id\": \"release-publisher-config-schema\",\n \"path\": \"spec/plugin/release-publisher-config-v1.schema.json\",\n \"version\": \"release-publisher-config-v1\",\n \"sha256\": \"c18b11489f81ac657c8324ed344b88b61b259981383ee7b4f9f0b65603a171f8\"\n },\n {\n \"id\": \"release-revocation-pointer-schema\",\n \"path\": \"spec/plugin/release-revocation-pointer-v2.schema.json\",\n \"version\": \"release-revocation-pointer-v2\",\n \"sha256\": \"dd39ba618ab02698f135875305d4aa6eb562af7d15520c4ad312cd82e9a7032b\"\n },\n {\n \"id\": \"release-revocation-schema\",\n \"path\": \"spec/plugin/release-revocation-v3.schema.json\",\n \"version\": \"release-revocation-v3\",\n \"sha256\": \"bd2ca3ab93f047897d3b377adc7fa8b073fc946539a0c5495def1e64915a782b\"\n },\n {\n \"id\": \"release-root-delegation-schema\",\n \"path\": \"spec/plugin/release-root-delegation-v1.schema.json\",\n \"version\": \"release-root-delegation-v1\",\n \"sha256\": \"c1adbb13eaeeca145d5ee787ff43777e60a5f329e460d20b8db358e4f5fc4825\"\n },\n {\n \"id\": \"release-signature-envelope-schema\",\n \"path\": \"spec/plugin/release-signature-envelope-v1.schema.json\",\n \"version\": \"release-signature-envelope-v1\",\n \"sha256\": \"7df9afd22bfdebfa89dc3bdb46ecdbe22a91ecce35fa46c492dd9795c66fae29\"\n },\n {\n \"id\": \"release-signing-ledger-evidence-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-evidence-v1.schema.json\",\n \"version\": \"release-signing-ledger-evidence-v1\",\n \"sha256\": \"9ab8b7f65dedcd119d578debb4f6ff97fc35f4c7ac95c0e5435f8b0959bc1a5c\"\n },\n {\n \"id\": \"release-signing-ledger-receipt-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-receipt-v1.schema.json\",\n \"version\": \"release-signing-ledger-receipt-v1\",\n \"sha256\": \"29210cfefd967017c5c74bcf8489bd50511c5c9f36d17b0200056ccb90c30561\"\n },\n {\n \"id\": \"release-signing-ledger-schema\",\n \"path\": \"spec/plugin/release-signing-ledger-v1.schema.json\",\n \"version\": \"release-signing-ledger-v1\",\n \"sha256\": \"0c72b30bfd6b857b9809e48e1b7eaaeb7134d5afd6a935aa8373465054403765\"\n },\n {\n \"id\": \"release-signing-subject-schema\",\n \"path\": \"spec/plugin/release-signing-subject-v1.schema.json\",\n \"version\": \"release-signing-subject-v1\",\n \"sha256\": \"876b1459824f90042bd141e96bfea4633333bdf2a227e15b6e25c72db1179c8e\"\n },\n {\n \"id\": \"release-source-policy-pointer-schema\",\n \"path\": \"spec/plugin/release-source-policy-pointer-v2.schema.json\",\n \"version\": \"release-source-policy-pointer-v2\",\n \"sha256\": \"735659143db7204abdd20c6fbc994ac7474618c41b85949aad4c28fb2912e034\"\n },\n {\n \"id\": \"release-source-policy-schema\",\n \"path\": \"spec/plugin/release-source-policy-v3.schema.json\",\n \"version\": \"release-source-policy-v3\",\n \"sha256\": \"8814de028800c92b26c8c85a06298762598aeba1835f57048ec6c06430f8567b\"\n },\n {\n \"id\": \"release-trust-state-schema\",\n \"path\": \"spec/plugin/release-trust-state-v1.schema.json\",\n \"version\": \"release-trust-state-v1\",\n \"sha256\": \"19ffa182932a22401a33ee4c9921e957c67895c2d8b041c9a27ee3530bdfb2d2\"\n },\n {\n \"id\": \"resource-scope-schema\",\n \"path\": \"spec/plugin/resource-scope-v1.schema.json\",\n \"version\": \"resource-scope-v1\",\n \"sha256\": \"e6021bd576c7220ad5536645a7ad8e57ee7aeb9901c31a89444fa6b695d8dc6f\"\n },\n {\n \"id\": \"runtime-admission-schema\",\n \"path\": \"spec/plugin/runtime-admission-v1.schema.json\",\n \"version\": \"runtime-admission-v1\",\n \"sha256\": \"bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb\"\n },\n {\n \"id\": \"runtime-descriptor-schema\",\n \"path\": \"spec/plugin/runtime-descriptor-v2.schema.json\",\n \"version\": \"runtime-descriptor-v2\",\n \"sha256\": \"2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351\"\n },\n {\n \"id\": \"runtime-exec-journal-schema\",\n \"path\": \"spec/plugin/runtime-exec-journal-v1.schema.json\",\n \"version\": \"runtime-exec-journal-v1\",\n \"sha256\": \"2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2\"\n },\n {\n \"id\": \"rust-ipc-schema\",\n \"path\": \"spec/plugin/ipc-v6.schema.json\",\n \"version\": \"rust-ipc-v6\",\n \"sha256\": \"9814ca091ac2e4e8435c1ab553e248e9d2e792de93ce9fd27bd030486774837f\"\n },\n {\n \"id\": \"session-scope-maintenance-contract\",\n \"path\": \"spec/plugin/session-scope-maintenance-v1.json\",\n \"version\": \"session-scope-maintenance-v1\",\n \"sha256\": \"fd87b6654c954ee2a2dc67958ba214048b894aa421bb74a85fb02000ec51f37b\"\n },\n {\n \"id\": \"session-scope-schema\",\n \"path\": \"spec/plugin/session-scope-v1.schema.json\",\n \"version\": \"session-scope-v1\",\n \"sha256\": \"3df0084264f0aff9fe2261c237cea439adb5cdc2534bfaaa0488d5992d4a7d2e\"\n },\n {\n \"id\": \"target-classifier-fixture\",\n \"path\": \"spec/plugin/target-classifier-v2.json\",\n \"version\": \"target-classifier-v2\",\n \"sha256\": \"ae7336cce77a2e820f96f1cc309b93f8442c932dcebec25e3890d31cd098e2d1\"\n },\n {\n \"id\": \"token-ticket-schema\",\n \"path\": \"spec/plugin/token-ticket-v4.schema.json\",\n \"version\": \"token-ticket-v4\",\n \"sha256\": \"5cf365b5b52a331ac0d3ad35a98be3c2ce668804ae88fdeaf9679a44db14feb1\"\n },\n {\n \"id\": \"trusted-time-evidence-schema\",\n \"path\": \"spec/plugin/trusted-time-evidence-v1.schema.json\",\n \"version\": \"trusted-time-evidence-v1\",\n \"sha256\": \"4398cbd2a3eea42a85008ee16a69d7adb265673e6749b1f13a4f1610f36e5e38\"\n },\n {\n \"id\": \"trusted-time-leaf-schema\",\n \"path\": \"spec/plugin/trusted-time-leaf-v1.schema.json\",\n \"version\": \"trusted-time-leaf-v1\",\n \"sha256\": \"1c25eb0040800eef145aa2bb4c0e1ae197ae584d365e9595ab89037e26fe5ddb\"\n },\n {\n \"id\": \"wasm-worker-schema\",\n \"path\": \"spec/plugin/wasm-worker-v2.schema.json\",\n \"version\": \"redevplugin-wasm-worker-v2\",\n \"sha256\": \"00bf123f3a9ed932de4b71c180e2a5c34af0f82050defb271fedec42cf217902\"\n },\n {\n \"id\": \"worker-invocation-schema\",\n \"path\": \"spec/plugin/worker-invocation-v3.schema.json\",\n \"version\": \"worker-invocation-v3\",\n \"sha256\": \"f08af491cbf5e7b71d1aeafbeac9ae581ee5fc3bcb76184daec369f94bab3927\"\n }\n ]\n}\n";
362
362
  };
363
363
  export declare const generatedContractRegistry: {
364
364
  readonly schema_version: "redevplugin.contract_registry.v2";
365
365
  readonly registry_version: "contract-registry-v2";
366
366
  readonly artifacts: readonly [{
367
367
  readonly id: "compatibility-manifest-schema";
368
- readonly path: "spec/plugin/compatibility-manifest-v14.schema.json";
369
- readonly version: "compatibility-manifest-v14";
370
- readonly sha256: "67016ead2ed8b86410aafe3771d750ea2ab088479047475542ac65caa1691a7c";
368
+ readonly path: "spec/plugin/compatibility-manifest-v15.schema.json";
369
+ readonly version: "compatibility-manifest-v15";
370
+ readonly sha256: "921beeaff20abd3f67d73bd695f27459f453b014730cefb22864c015837c239a";
371
371
  }, {
372
372
  readonly id: "contract-registry-schema";
373
373
  readonly path: "spec/plugin/contract-registry-v2.schema.json";
@@ -375,9 +375,9 @@ export declare const generatedContractRegistry: {
375
375
  readonly sha256: "d516b3565158ac1b0d5e9f86b91b13ac19321ab3ff54468be41951b68d7085ac";
376
376
  }, {
377
377
  readonly id: "error-codes-schema";
378
- readonly path: "spec/plugin/error-codes-v7.schema.json";
379
- readonly version: "error-codes-v7";
380
- readonly sha256: "4e7cac510a6036f90cae8f58ff8c3b785b3a2d3933875f2f69bef1c41de3d26c";
378
+ readonly path: "spec/plugin/error-codes-v8.schema.json";
379
+ readonly version: "error-codes-v8";
380
+ readonly sha256: "454e3c8b46e20bc524080ca1aa91dcf2ecdfe0a90cc33b5b328e87356d07e7e3";
381
381
  }, {
382
382
  readonly id: "external-signer-request-schema";
383
383
  readonly path: "spec/plugin/external-signer-request-v1.schema.json";
@@ -437,7 +437,7 @@ export declare const generatedContractRegistry: {
437
437
  readonly id: "iframe-bridge-schema";
438
438
  readonly path: "spec/plugin/bridge-v7.schema.json";
439
439
  readonly version: "bridge-v7";
440
- readonly sha256: "f4b5f04870b58e8e2363aaba98b273adccef3a3e9ac1eb1a2dbbc3fb4c71b300";
440
+ readonly sha256: "fe8da4e5b14ac6d7c7bb3101e041246e92573c58e1c9537e8cda2c26bf175ef5";
441
441
  }, {
442
442
  readonly id: "manifest-schema";
443
443
  readonly path: "spec/plugin/manifest-v8.schema.json";
@@ -505,9 +505,9 @@ export declare const generatedContractRegistry: {
505
505
  readonly sha256: "4d9979f5205ec047895b64c995312c588d998bb1c1448f6c9c559f1b7ab0d796";
506
506
  }, {
507
507
  readonly id: "plugin-platform-openapi";
508
- readonly path: "spec/openapi/plugin-platform-v12.yaml";
509
- readonly version: "plugin-platform-v12";
510
- readonly sha256: "715698e9e1e357e243ee21b3157cc044befac83979107f54d024b5e9e48f7050";
508
+ readonly path: "spec/openapi/plugin-platform-v13.yaml";
509
+ readonly version: "plugin-platform-v13";
510
+ readonly sha256: "e0b0c3a2aede94b80e32fb84adf5f88d867c6e9958565c106e60ad5a2ae36f5e";
511
511
  }, {
512
512
  readonly id: "presentation-locale-fixture";
513
513
  readonly path: "spec/plugin/presentation-locale-fixtures-v1.json";
@@ -662,44 +662,44 @@ export declare const generatedContractRegistry: {
662
662
  };
663
663
  export declare const generatedPackageSet: {
664
664
  readonly schema_version: "redevplugin.platform_package_set.v1";
665
- readonly platform_version: "0.7.0";
665
+ readonly platform_version: "0.7.2";
666
666
  readonly go_module: {
667
667
  readonly module: "github.com/floegence/redevplugin";
668
- readonly version: "v0.7.0";
668
+ readonly version: "v0.7.2";
669
669
  };
670
670
  readonly npm_packages: readonly [{
671
671
  readonly name: "@floegence/redevplugin-contracts";
672
- readonly version: "0.7.0";
672
+ readonly version: "0.7.2";
673
673
  }, {
674
674
  readonly name: "@floegence/redevplugin-ui";
675
- readonly version: "0.7.0";
675
+ readonly version: "0.7.2";
676
676
  }];
677
677
  readonly rust_crates: readonly [{
678
678
  readonly name: "redevplugin-contracts";
679
- readonly version: "0.7.0";
679
+ readonly version: "0.7.2";
680
680
  readonly role: "contracts";
681
681
  }, {
682
682
  readonly name: "redevplugin-ipc";
683
- readonly version: "0.7.0";
683
+ readonly version: "0.7.2";
684
684
  readonly role: "ipc";
685
685
  }, {
686
686
  readonly name: "redevplugin-wasm-abi";
687
- readonly version: "0.7.0";
687
+ readonly version: "0.7.2";
688
688
  readonly role: "wasm_abi";
689
689
  }, {
690
690
  readonly name: "redevplugin-target-classifier";
691
- readonly version: "0.7.0";
691
+ readonly version: "0.7.2";
692
692
  readonly role: "target_classifier";
693
693
  }, {
694
694
  readonly name: "redevplugin-worker-sdk";
695
- readonly version: "0.7.0";
695
+ readonly version: "0.7.2";
696
696
  readonly role: "worker_sdk";
697
697
  }, {
698
698
  readonly name: "redevplugin-runtime";
699
- readonly version: "0.7.0";
699
+ readonly version: "0.7.2";
700
700
  readonly role: "runtime";
701
701
  }];
702
702
  readonly contract_registry_version: "contract-registry-v2";
703
- readonly contract_set_sha256: "ce37ac605cb6c618d8fb26f5e72a7c1346d0315d351f8700aadf6f7ae1708545";
703
+ readonly contract_set_sha256: "ba19b4252fedf64be30d6985a24679a7d45884842dc04eee452f0d9d15842941";
704
704
  };
705
- export declare const generatedContractSetSHA256: "ce37ac605cb6c618d8fb26f5e72a7c1346d0315d351f8700aadf6f7ae1708545";
705
+ export declare const generatedContractSetSHA256: "ba19b4252fedf64be30d6985a24679a7d45884842dc04eee452f0d9d15842941";