@floegence/redevplugin-ui 0.6.7 → 0.6.10

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.
@@ -19,6 +19,91 @@ export interface paths {
19
19
  patch?: never;
20
20
  trace?: never;
21
21
  };
22
+ "/_redevplugin/api/plugins/external-packages/inspect": {
23
+ parameters: {
24
+ query?: never;
25
+ header?: never;
26
+ path?: never;
27
+ cookie?: never;
28
+ };
29
+ get?: never;
30
+ put?: never;
31
+ /** @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. */
32
+ post: operations["inspectExternalPackage"];
33
+ delete?: never;
34
+ options?: never;
35
+ head?: never;
36
+ patch?: never;
37
+ trace?: never;
38
+ };
39
+ "/_redevplugin/api/plugins/external-packages/upload/inspect": {
40
+ parameters: {
41
+ query?: never;
42
+ header?: never;
43
+ path?: never;
44
+ cookie?: never;
45
+ };
46
+ get?: never;
47
+ put?: never;
48
+ /** @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. */
49
+ post: operations["inspectUploadedExternalPackageInstall"];
50
+ delete?: never;
51
+ options?: never;
52
+ head?: never;
53
+ patch?: never;
54
+ trace?: never;
55
+ };
56
+ "/_redevplugin/api/plugins/{plugin_instance_id}/external-packages/upload/inspect": {
57
+ parameters: {
58
+ query?: never;
59
+ header?: never;
60
+ path?: never;
61
+ cookie?: never;
62
+ };
63
+ get?: never;
64
+ /** @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. */
65
+ put: operations["inspectUploadedExternalPackageUpdate"];
66
+ post?: never;
67
+ delete?: never;
68
+ options?: never;
69
+ head?: never;
70
+ patch?: never;
71
+ trace?: never;
72
+ };
73
+ "/_redevplugin/api/plugins/external-packages/commit": {
74
+ parameters: {
75
+ query?: never;
76
+ header?: never;
77
+ path?: never;
78
+ cookie?: never;
79
+ };
80
+ get?: never;
81
+ put?: never;
82
+ /** @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. */
83
+ post: operations["commitExternalPackage"];
84
+ delete?: never;
85
+ options?: never;
86
+ head?: never;
87
+ patch?: never;
88
+ trace?: never;
89
+ };
90
+ "/_redevplugin/api/plugins/external-packages/commit/query": {
91
+ parameters: {
92
+ query?: never;
93
+ header?: never;
94
+ path?: never;
95
+ cookie?: never;
96
+ };
97
+ get?: never;
98
+ put?: never;
99
+ /** @description Reconciles the commit result for one inspection without repeating the mutation. */
100
+ post: operations["queryExternalPackageCommit"];
101
+ delete?: never;
102
+ options?: never;
103
+ head?: never;
104
+ patch?: never;
105
+ trace?: never;
106
+ };
22
107
  "/_redevplugin/api/plugins/install-release-ref": {
23
108
  parameters: {
24
109
  query?: never;
@@ -320,6 +405,7 @@ export interface paths {
320
405
  };
321
406
  get?: never;
322
407
  put?: never;
408
+ /** @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. */
323
409
  post: operations["disposePluginSurface"];
324
410
  delete?: never;
325
411
  options?: never;
@@ -634,6 +720,23 @@ export interface paths {
634
720
  patch?: never;
635
721
  trace?: never;
636
722
  };
723
+ "/_redevplugin/api/plugins/permissions/requirements/query": {
724
+ parameters: {
725
+ query?: never;
726
+ header?: never;
727
+ path?: never;
728
+ cookie?: never;
729
+ };
730
+ get?: never;
731
+ put?: never;
732
+ /** @description Projects required permissions only from the active plugin version's Host-verified capability contracts. */
733
+ post: operations["getPluginPermissionRequirements"];
734
+ delete?: never;
735
+ options?: never;
736
+ head?: never;
737
+ patch?: never;
738
+ trace?: never;
739
+ };
637
740
  "/_redevplugin/api/plugins/permissions/grant": {
638
741
  parameters: {
639
742
  query?: never;
@@ -890,6 +993,16 @@ export interface components {
890
993
  ok: true;
891
994
  data: components["schemas"]["PluginRecord"];
892
995
  };
996
+ ExternalPackageInspectionSuccessResponse: {
997
+ /** @constant */
998
+ ok: true;
999
+ data: components["schemas"]["ExternalPackageInspection"];
1000
+ };
1001
+ ExternalPackageCommitSuccessResponse: {
1002
+ /** @constant */
1003
+ ok: true;
1004
+ data: components["schemas"]["ExternalPackageCommitResult"];
1005
+ };
893
1006
  PluginCatalogSuccessResponse: {
894
1007
  /** @constant */
895
1008
  ok: true;
@@ -898,7 +1011,7 @@ export interface components {
898
1011
  PluginFeaturesSuccessResponse: {
899
1012
  /** @constant */
900
1013
  ok: true;
901
- data: ("release" | "runtime" | "capability" | "connectivity" | "secrets" | "core_action")[];
1014
+ data: ("release" | "runtime" | "capability" | "connectivity" | "secrets" | "core_action" | "external_package")[];
902
1015
  };
903
1016
  CompatibilitySuccessResponse: {
904
1017
  /** @constant */
@@ -975,6 +1088,11 @@ export interface components {
975
1088
  ok: true;
976
1089
  data: components["schemas"]["PluginPermissionList"];
977
1090
  };
1091
+ PermissionRequirementsSuccessResponse: {
1092
+ /** @constant */
1093
+ ok: true;
1094
+ data: components["schemas"]["PluginPermissionRequirements"];
1095
+ };
978
1096
  PermissionMutationSuccessResponse: {
979
1097
  /** @constant */
980
1098
  ok: true;
@@ -1214,6 +1332,11 @@ export interface components {
1214
1332
  SurfaceDisposeResult: {
1215
1333
  /** @constant */
1216
1334
  disposed: true;
1335
+ /** @enum {string} */
1336
+ state: "closed" | "absent";
1337
+ /** @enum {string} */
1338
+ previous_state: "active" | "closed" | "absent";
1339
+ revoked: boolean;
1217
1340
  };
1218
1341
  SessionScopeRevokeCounts: components["schemas"]["SessionScopeV1RevokeCounts"];
1219
1342
  SessionScopeRevokeResult: components["schemas"]["SessionScopeV1PublicRevokeResult"];
@@ -1264,6 +1387,26 @@ export interface components {
1264
1387
  PluginPermissionList: {
1265
1388
  permissions: components["schemas"]["PluginPermissionGrant"][];
1266
1389
  };
1390
+ PluginPermissionRequirementMethod: {
1391
+ method: string;
1392
+ required_permissions: string[];
1393
+ };
1394
+ PluginPermissionRequirementContract: {
1395
+ contract_id: string;
1396
+ contract_version: string;
1397
+ contract_sha256: string;
1398
+ capability_id: string;
1399
+ capability_version: string;
1400
+ methods: components["schemas"]["PluginPermissionRequirementMethod"][];
1401
+ };
1402
+ PluginPermissionRequirements: {
1403
+ plugin_instance_id: string;
1404
+ plugin_version: string;
1405
+ active_fingerprint: string;
1406
+ management_revision: number;
1407
+ contracts: components["schemas"]["PluginPermissionRequirementContract"][];
1408
+ required_permissions: string[];
1409
+ };
1267
1410
  AuthorizationRevisions: {
1268
1411
  policy_revision: number;
1269
1412
  management_revision: number;
@@ -1515,6 +1658,315 @@ export interface components {
1515
1658
  /** Format: date-time */
1516
1659
  updated_at?: string;
1517
1660
  };
1661
+ /** @description Closed install or update intent. Update concurrency values are supplied by the caller, while package identity is always derived from the inspected artifact. */
1662
+ ExternalPackageIntentRequest: {
1663
+ /** @constant */
1664
+ action: "install";
1665
+ } | {
1666
+ /** @constant */
1667
+ action: "update";
1668
+ plugin_instance_id: string;
1669
+ expected_management_revision: number;
1670
+ };
1671
+ /** @description Server-resolved install or update intent. The platform generates the install instance identifier during inspection. */
1672
+ ExternalPackageIntent: {
1673
+ /** @constant */
1674
+ action: "install";
1675
+ plugin_instance_id: string;
1676
+ } | {
1677
+ /** @constant */
1678
+ action: "update";
1679
+ plugin_instance_id: string;
1680
+ expected_management_revision: number;
1681
+ };
1682
+ /** @description Caller-selected external source. Redirect resolution, package hashes, identity, and provenance are derived by the platform. */
1683
+ ExternalPackageSource: {
1684
+ /** @constant */
1685
+ kind: "package_url";
1686
+ /** Format: uri */
1687
+ url: string;
1688
+ } | {
1689
+ /** @constant */
1690
+ kind: "github_repository";
1691
+ /** Format: uri */
1692
+ url: string;
1693
+ /** @description Optional exact release tag. When omitted, the resolver selects the repository's latest eligible release. */
1694
+ tag?: string;
1695
+ };
1696
+ /** @description Requests server-side inspection. Trust, hashes, package identity, approval, provenance, signature assessment, and update eligibility are intentionally not caller-controlled. */
1697
+ InspectExternalPackageRequest: {
1698
+ intent: components["schemas"]["ExternalPackageIntentRequest"];
1699
+ source: components["schemas"]["ExternalPackageSource"];
1700
+ };
1701
+ /** @description Confirms the exact immutable inspection. The digest cannot override any inspected fact. */
1702
+ CommitExternalPackageRequest: {
1703
+ inspection_id: string;
1704
+ confirmation_digest: string;
1705
+ };
1706
+ QueryExternalPackageCommitRequest: {
1707
+ inspection_id: string;
1708
+ commit_id?: string;
1709
+ };
1710
+ /** @description Cryptographic signature fact computed over the inspected artifact. The absent state is installable and affects trust classification and automatic-update eligibility only. */
1711
+ ExternalPackageSignatureAssessment: {
1712
+ /** @enum {string} */
1713
+ state: "verified" | "absent" | "unknown_signer" | "invalid" | "revoked" | "unavailable";
1714
+ reason_codes: string[];
1715
+ assessed_hashes: components["schemas"]["TrustHashSet"];
1716
+ algorithm?: string;
1717
+ key_id?: string;
1718
+ /** Format: date-time */
1719
+ assessed_at: string;
1720
+ assessment_epoch?: string;
1721
+ };
1722
+ /** @description Credential-free redirect projection. Userinfo, query strings, and fragments are never exposed. */
1723
+ ExternalPackageRedirectHop: {
1724
+ /** Format: uri */
1725
+ origin: string;
1726
+ path: string;
1727
+ };
1728
+ /** @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. */
1729
+ ExternalPackageSourceProvenance: {
1730
+ /** @constant */
1731
+ kind: "package_url";
1732
+ /** Format: uri */
1733
+ source_origin: string;
1734
+ source_path: string;
1735
+ redirect_chain: components["schemas"]["ExternalPackageRedirectHop"][];
1736
+ package_sha256: string;
1737
+ /** Format: date-time */
1738
+ resolved_at: string;
1739
+ } | {
1740
+ /** @constant */
1741
+ kind: "package_upload";
1742
+ /** @description Opaque server-generated identifier for the staged uploaded artifact. */
1743
+ upload_id: string;
1744
+ package_sha256: string;
1745
+ /** Format: date-time */
1746
+ resolved_at: string;
1747
+ } | {
1748
+ /** @constant */
1749
+ kind: "github_repository";
1750
+ /** @description Stable GitHub repository database ID encoded as decimal text. */
1751
+ repository_id: string;
1752
+ /** @description Stable GitHub release database ID encoded as decimal text. */
1753
+ release_id: string;
1754
+ /** @description Stable GitHub release asset database ID encoded as decimal text. */
1755
+ asset_id: string;
1756
+ /** Format: uri */
1757
+ repository_url: string;
1758
+ /** @description Display-only owner login; repository_id remains authoritative across renames. */
1759
+ owner: string;
1760
+ /** @description Display-only repository name; repository_id remains authoritative across renames. */
1761
+ repository: string;
1762
+ resolved_commit_sha: string;
1763
+ release_tag?: string;
1764
+ asset_name?: string;
1765
+ package_sha256: string;
1766
+ /** Format: date-time */
1767
+ resolved_at: string;
1768
+ };
1769
+ /** @description Execution decision independent from signature state. Session and owner hashes are excluded from this public projection. */
1770
+ ExternalPackageExecutionApproval: {
1771
+ /** @enum {string} */
1772
+ state: "pending" | "user_approved" | "policy_approved" | "policy_blocked";
1773
+ reason_codes: string[];
1774
+ /** Format: date-time */
1775
+ assessed_at: string;
1776
+ /** Format: date-time */
1777
+ approved_at?: string;
1778
+ };
1779
+ /** @description Automatic-update decision. Unsigned or otherwise unverified packages remain installable but are normally manual-only. */
1780
+ ExternalPackageUpdateEligibility: {
1781
+ /** @enum {string} */
1782
+ state: "manual_only" | "automatic_eligible";
1783
+ reason_codes: string[];
1784
+ /** Format: date-time */
1785
+ assessed_at: string;
1786
+ };
1787
+ ExternalPackagePermissionSummary: {
1788
+ permission_id: string;
1789
+ methods: string[];
1790
+ };
1791
+ ExternalPackageMethodRouteSummary: {
1792
+ /** @enum {string} */
1793
+ kind: "capability" | "worker" | "core_action";
1794
+ binding_id?: string;
1795
+ target_method?: string;
1796
+ worker_id?: string;
1797
+ action_id?: string;
1798
+ };
1799
+ ExternalPackageConfirmationSummary: {
1800
+ /** @enum {string} */
1801
+ mode: "none" | "required" | "risk_based";
1802
+ preflight_method?: string;
1803
+ request_hash_fields: string[];
1804
+ plan_hash_required: boolean;
1805
+ };
1806
+ ExternalPackageCancelSummary: {
1807
+ cancelable: boolean;
1808
+ /** @enum {string} */
1809
+ disable_behavior: "cancel" | "orphan" | "wait";
1810
+ /** @enum {string} */
1811
+ uninstall_behavior: "cancel_then_block_delete" | "force_cleanup_allowed";
1812
+ ack_timeout_ms: number;
1813
+ };
1814
+ ExternalPackageMethodSummary: {
1815
+ method: string;
1816
+ route: components["schemas"]["ExternalPackageMethodRouteSummary"];
1817
+ /** @enum {string} */
1818
+ effect: "read" | "write" | "delete" | "execute" | "admin";
1819
+ /** @enum {string} */
1820
+ execution: "sync" | "operation" | "subscription";
1821
+ dangerous: boolean;
1822
+ preflight_only: boolean;
1823
+ required_permissions: string[];
1824
+ confirmation: components["schemas"]["ExternalPackageConfirmationSummary"];
1825
+ cancel?: components["schemas"]["ExternalPackageCancelSummary"];
1826
+ };
1827
+ ExternalPackageCapabilityContractSummary: {
1828
+ binding_id: string;
1829
+ capability_id: string;
1830
+ capability_version: string;
1831
+ contract_sha256: string;
1832
+ };
1833
+ ExternalPackageWorkerSummary: {
1834
+ worker_id: string;
1835
+ artifact: string;
1836
+ /** @constant */
1837
+ abi: "redevplugin-wasm-worker-v2";
1838
+ /** @constant */
1839
+ mode: "job";
1840
+ scope: components["schemas"]["ResourceScopeKind"];
1841
+ memory_limit_bytes: number;
1842
+ idle_timeout_ms: number;
1843
+ };
1844
+ ExternalPackageNetworkMethodAccessSummary: {
1845
+ method: string;
1846
+ operations: ("http" | "http_stream" | "websocket_round_trip" | "tcp_round_trip" | "udp_round_trip")[];
1847
+ http_methods: ("GET" | "HEAD" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS")[];
1848
+ };
1849
+ ExternalPackageNetworkSummary: {
1850
+ connector_id: string;
1851
+ /** @enum {string} */
1852
+ transport: "http" | "websocket" | "tcp" | "udp";
1853
+ scope: components["schemas"]["ResourceScopeKind"];
1854
+ destinations: string[];
1855
+ auth_declared: boolean;
1856
+ tls_declared: boolean;
1857
+ method_access: components["schemas"]["ExternalPackageNetworkMethodAccessSummary"][];
1858
+ };
1859
+ ExternalPackageStorageMethodAccessSummary: {
1860
+ method: string;
1861
+ operations: ("read" | "write" | "delete" | "list" | "get" | "put" | "query" | "exec")[];
1862
+ };
1863
+ ExternalPackageStorageSummary: {
1864
+ store_id: string;
1865
+ /** @enum {string} */
1866
+ kind: "kv" | "files" | "sqlite";
1867
+ scope: components["schemas"]["ResourceScopeKind"];
1868
+ quota_bytes: number;
1869
+ quota_files?: number;
1870
+ schema_version: number;
1871
+ method_access: components["schemas"]["ExternalPackageStorageMethodAccessSummary"][];
1872
+ };
1873
+ ExternalPackageSecretRefSummary: {
1874
+ setting_key: string;
1875
+ secret_ref: string;
1876
+ scope: components["schemas"]["ResourceScopeKind"];
1877
+ };
1878
+ ExternalPackageCoreActionSummary: {
1879
+ method: string;
1880
+ action_id: string;
1881
+ /** @enum {string} */
1882
+ effect: "read" | "write" | "delete" | "execute" | "admin";
1883
+ };
1884
+ ExternalPackageIntentSummary: {
1885
+ intent_id: string;
1886
+ method: string;
1887
+ };
1888
+ ExternalPackageSurfaceSummary: {
1889
+ surface_id: string;
1890
+ /** @enum {string} */
1891
+ kind: "view" | "command" | "background";
1892
+ /** @enum {string} */
1893
+ intent: "primary" | "secondary" | "utility";
1894
+ label: string;
1895
+ entry: string;
1896
+ icon?: string;
1897
+ default_size?: components["schemas"]["ExternalPackageSizeSummary"];
1898
+ };
1899
+ ExternalPackageSizeSummary: {
1900
+ width: number;
1901
+ height: number;
1902
+ };
1903
+ /** @description Closed, display-ready projection of every security-relevant declaration in the inspected manifest. */
1904
+ ExternalPackageSecuritySummary: {
1905
+ summary_sha256: string;
1906
+ permissions: components["schemas"]["ExternalPackagePermissionSummary"][];
1907
+ methods: components["schemas"]["ExternalPackageMethodSummary"][];
1908
+ capability_contracts: components["schemas"]["ExternalPackageCapabilityContractSummary"][];
1909
+ workers: components["schemas"]["ExternalPackageWorkerSummary"][];
1910
+ network: components["schemas"]["ExternalPackageNetworkSummary"][];
1911
+ storage: components["schemas"]["ExternalPackageStorageSummary"][];
1912
+ secret_refs: components["schemas"]["ExternalPackageSecretRefSummary"][];
1913
+ core_actions: components["schemas"]["ExternalPackageCoreActionSummary"][];
1914
+ intents: components["schemas"]["ExternalPackageIntentSummary"][];
1915
+ surfaces: components["schemas"]["ExternalPackageSurfaceSummary"][];
1916
+ };
1917
+ /** @description Immutable inspection projection. Package identity and all four trust/security facts are server-derived. */
1918
+ ExternalPackageInspection: {
1919
+ inspection_id: string;
1920
+ /** Format: date-time */
1921
+ expires_at: string;
1922
+ intent: components["schemas"]["ExternalPackageIntent"];
1923
+ publisher_id: string;
1924
+ plugin_id: string;
1925
+ version: components["schemas"]["StrictSemVer"];
1926
+ inspected_hashes: components["schemas"]["TrustHashSet"];
1927
+ signature_assessment: components["schemas"]["ExternalPackageSignatureAssessment"];
1928
+ source_provenance: components["schemas"]["ExternalPackageSourceProvenance"];
1929
+ execution_approval: components["schemas"]["ExternalPackageExecutionApproval"];
1930
+ update_eligibility: components["schemas"]["ExternalPackageUpdateEligibility"];
1931
+ security_summary: components["schemas"]["ExternalPackageSecuritySummary"];
1932
+ confirmation_digest: string;
1933
+ };
1934
+ /** @description Immutable successful commit evidence. */
1935
+ ExternalPackageCommitReceipt: {
1936
+ commit_id: string;
1937
+ inspection_id: string;
1938
+ package_sha256: string;
1939
+ management_revision: number;
1940
+ /** Format: date-time */
1941
+ committed_at: string;
1942
+ };
1943
+ /** @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. */
1944
+ ExternalPackageCommitResult: {
1945
+ /** @constant */
1946
+ status: "committed";
1947
+ inspection_id: string;
1948
+ intent: components["schemas"]["ExternalPackageIntent"];
1949
+ receipt: components["schemas"]["ExternalPackageCommitReceipt"];
1950
+ plugin: components["schemas"]["PluginRecord"];
1951
+ signature_assessment: components["schemas"]["ExternalPackageSignatureAssessment"];
1952
+ source_provenance: components["schemas"]["ExternalPackageSourceProvenance"];
1953
+ execution_approval: components["schemas"]["ExternalPackageExecutionApproval"];
1954
+ update_eligibility: components["schemas"]["ExternalPackageUpdateEligibility"];
1955
+ security_summary: components["schemas"]["ExternalPackageSecuritySummary"];
1956
+ } | {
1957
+ /** @constant */
1958
+ status: "in_progress";
1959
+ inspection_id: string;
1960
+ intent: components["schemas"]["ExternalPackageIntent"];
1961
+ retry_after_ms: number;
1962
+ } | {
1963
+ /** @constant */
1964
+ status: "failed";
1965
+ inspection_id: string;
1966
+ intent: components["schemas"]["ExternalPackageIntent"];
1967
+ /** @constant */
1968
+ failure_code: "host_restarted_before_commit";
1969
+ };
1518
1970
  /** @enum {string} */
1519
1971
  TrustState: "verified" | "unsigned_local" | "untrusted" | "needs_review" | "trust_unavailable" | "blocked_security";
1520
1972
  TrustHashSet: {
@@ -1551,6 +2003,11 @@ export interface components {
1551
2003
  [key: string]: unknown;
1552
2004
  };
1553
2005
  local_import_provenance?: components["schemas"]["LocalImportProvenance"];
2006
+ signature_assessment?: components["schemas"]["ExternalPackageSignatureAssessment"];
2007
+ source_provenance?: components["schemas"]["ExternalPackageSourceProvenance"];
2008
+ execution_approval?: components["schemas"]["ExternalPackageExecutionApproval"];
2009
+ update_eligibility?: components["schemas"]["ExternalPackageUpdateEligibility"];
2010
+ security_summary?: components["schemas"]["ExternalPackageSecuritySummary"];
1554
2011
  capability_contracts?: components["schemas"]["CapabilityContractPin"][];
1555
2012
  manifest: components["schemas"]["ManifestV5"];
1556
2013
  package_entries: components["schemas"]["PackageEntry"][];
@@ -1578,6 +2035,11 @@ export interface components {
1578
2035
  [key: string]: unknown;
1579
2036
  };
1580
2037
  local_import_provenance?: components["schemas"]["LocalImportProvenance"];
2038
+ signature_assessment?: components["schemas"]["ExternalPackageSignatureAssessment"];
2039
+ source_provenance?: components["schemas"]["ExternalPackageSourceProvenance"];
2040
+ execution_approval?: components["schemas"]["ExternalPackageExecutionApproval"];
2041
+ update_eligibility?: components["schemas"]["ExternalPackageUpdateEligibility"];
2042
+ security_summary?: components["schemas"]["ExternalPackageSecuritySummary"];
1581
2043
  capability_contracts?: components["schemas"]["CapabilityContractPin"][];
1582
2044
  /** @enum {string} */
1583
2045
  enable_state: "disabled" | "enabled" | "disabled_by_policy" | "disabled_incompatible";
@@ -1691,6 +2153,9 @@ export interface components {
1691
2153
  plugin_instance_id?: string;
1692
2154
  active_only?: boolean;
1693
2155
  };
2156
+ PermissionRequirementsQueryRequest: {
2157
+ plugin_instance_id: string;
2158
+ };
1694
2159
  ListDiagnosticsQueryRequest: {
1695
2160
  plugin_id?: string;
1696
2161
  plugin_instance_id?: string;
@@ -2782,6 +3247,24 @@ export interface components {
2782
3247
  "application/json": components["schemas"]["PluginRecordSuccessResponse"];
2783
3248
  };
2784
3249
  };
3250
+ /** @description Immutable server-computed package inspection and confirmation boundary. */
3251
+ ExternalPackageInspectionResponse: {
3252
+ headers: {
3253
+ [name: string]: unknown;
3254
+ };
3255
+ content: {
3256
+ "application/json": components["schemas"]["ExternalPackageInspectionSuccessResponse"];
3257
+ };
3258
+ };
3259
+ /** @description External package commit reconciliation result with explicit trust, approval, provenance, and update facts. */
3260
+ ExternalPackageCommitResponse: {
3261
+ headers: {
3262
+ [name: string]: unknown;
3263
+ };
3264
+ content: {
3265
+ "application/json": components["schemas"]["ExternalPackageCommitSuccessResponse"];
3266
+ };
3267
+ };
2785
3268
  /** @description Installed plugin catalog response with typed registry records. */
2786
3269
  PluginCatalogResponse: {
2787
3270
  headers: {
@@ -2944,6 +3427,15 @@ export interface components {
2944
3427
  "application/json": components["schemas"]["PermissionListSuccessResponse"];
2945
3428
  };
2946
3429
  };
3430
+ /** @description Active-version permission requirements derived from Host-verified capability contracts. */
3431
+ PermissionRequirementsResponse: {
3432
+ headers: {
3433
+ [name: string]: unknown;
3434
+ };
3435
+ content: {
3436
+ "application/json": components["schemas"]["PermissionRequirementsSuccessResponse"];
3437
+ };
3438
+ };
2947
3439
  /** @description Permission grant mutation result. */
2948
3440
  PermissionMutationResponse: {
2949
3441
  headers: {
@@ -3041,6 +3533,21 @@ export interface components {
3041
3533
  SurfaceInstanceID: string;
3042
3534
  };
3043
3535
  requestBodies: {
3536
+ InspectExternalPackageRequest: {
3537
+ content: {
3538
+ "application/json": components["schemas"]["InspectExternalPackageRequest"];
3539
+ };
3540
+ };
3541
+ CommitExternalPackageRequest: {
3542
+ content: {
3543
+ "application/json": components["schemas"]["CommitExternalPackageRequest"];
3544
+ };
3545
+ };
3546
+ QueryExternalPackageCommitRequest: {
3547
+ content: {
3548
+ "application/json": components["schemas"]["QueryExternalPackageCommitRequest"];
3549
+ };
3550
+ };
3044
3551
  InstallReleaseRefRequest: {
3045
3552
  content: {
3046
3553
  "application/json": components["schemas"]["InstallReleaseRefRequest"];
@@ -3111,6 +3618,11 @@ export interface components {
3111
3618
  "application/json": components["schemas"]["ListPermissionsQueryRequest"];
3112
3619
  };
3113
3620
  };
3621
+ PermissionRequirementsQueryRequest: {
3622
+ content: {
3623
+ "application/json": components["schemas"]["PermissionRequirementsQueryRequest"];
3624
+ };
3625
+ };
3114
3626
  ListDiagnosticsQueryRequest: {
3115
3627
  content: {
3116
3628
  "application/json": components["schemas"]["ListDiagnosticsQueryRequest"];
@@ -3293,6 +3805,84 @@ export interface operations {
3293
3805
  default: components["responses"]["MutationPlatformErrorResponse"];
3294
3806
  };
3295
3807
  };
3808
+ inspectExternalPackage: {
3809
+ parameters: {
3810
+ query?: never;
3811
+ header?: never;
3812
+ path?: never;
3813
+ cookie?: never;
3814
+ };
3815
+ requestBody: components["requestBodies"]["InspectExternalPackageRequest"];
3816
+ responses: {
3817
+ 200: components["responses"]["ExternalPackageInspectionResponse"];
3818
+ default: components["responses"]["MutationPlatformErrorResponse"];
3819
+ };
3820
+ };
3821
+ inspectUploadedExternalPackageInstall: {
3822
+ parameters: {
3823
+ query?: never;
3824
+ header?: never;
3825
+ path?: never;
3826
+ cookie?: never;
3827
+ };
3828
+ requestBody: {
3829
+ content: {
3830
+ "application/vnd.redevplugin.package+zip": string;
3831
+ };
3832
+ };
3833
+ responses: {
3834
+ 200: components["responses"]["ExternalPackageInspectionResponse"];
3835
+ default: components["responses"]["MutationPlatformErrorResponse"];
3836
+ };
3837
+ };
3838
+ inspectUploadedExternalPackageUpdate: {
3839
+ parameters: {
3840
+ query?: never;
3841
+ header: {
3842
+ /** @description Canonical decimal management revision. Duplicate, combined, empty, or whitespace-padded values are rejected. */
3843
+ "X-ReDevPlugin-Expected-Management-Revision": number;
3844
+ };
3845
+ path: {
3846
+ plugin_instance_id: components["parameters"]["PluginInstanceID"];
3847
+ };
3848
+ cookie?: never;
3849
+ };
3850
+ requestBody: {
3851
+ content: {
3852
+ "application/vnd.redevplugin.package+zip": string;
3853
+ };
3854
+ };
3855
+ responses: {
3856
+ 200: components["responses"]["ExternalPackageInspectionResponse"];
3857
+ default: components["responses"]["MutationPlatformErrorResponse"];
3858
+ };
3859
+ };
3860
+ commitExternalPackage: {
3861
+ parameters: {
3862
+ query?: never;
3863
+ header?: never;
3864
+ path?: never;
3865
+ cookie?: never;
3866
+ };
3867
+ requestBody: components["requestBodies"]["CommitExternalPackageRequest"];
3868
+ responses: {
3869
+ 200: components["responses"]["ExternalPackageCommitResponse"];
3870
+ default: components["responses"]["MutationPlatformErrorResponse"];
3871
+ };
3872
+ };
3873
+ queryExternalPackageCommit: {
3874
+ parameters: {
3875
+ query?: never;
3876
+ header?: never;
3877
+ path?: never;
3878
+ cookie?: never;
3879
+ };
3880
+ requestBody: components["requestBodies"]["QueryExternalPackageCommitRequest"];
3881
+ responses: {
3882
+ 200: components["responses"]["ExternalPackageCommitResponse"];
3883
+ default: components["responses"]["PlatformErrorResponse"];
3884
+ };
3885
+ };
3296
3886
  installReleaseRef: {
3297
3887
  parameters: {
3298
3888
  query?: never;
@@ -3807,6 +4397,19 @@ export interface operations {
3807
4397
  default: components["responses"]["PlatformErrorResponse"];
3808
4398
  };
3809
4399
  };
4400
+ getPluginPermissionRequirements: {
4401
+ parameters: {
4402
+ query?: never;
4403
+ header?: never;
4404
+ path?: never;
4405
+ cookie?: never;
4406
+ };
4407
+ requestBody: components["requestBodies"]["PermissionRequirementsQueryRequest"];
4408
+ responses: {
4409
+ 200: components["responses"]["PermissionRequirementsResponse"];
4410
+ default: components["responses"]["PlatformErrorResponse"];
4411
+ };
4412
+ };
3810
4413
  grantPluginPermission: {
3811
4414
  parameters: {
3812
4415
  query?: never;