@floegence/redevplugin-ui 1.1.4 → 2.0.1

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,3 +1,5 @@
1
+ export declare const surfaceAPIMajor: 1;
2
+ /** @deprecated Internal frozen transport alias. Plugin code should use surfaceAPIMajor. */
1
3
  export declare const pluginUIProtocolVersion: "plugin-ui-v7";
2
4
  export declare const pluginHostProtocolVersion: "plugin-host-v11";
3
5
  export declare const bridgeSchemaVersion: "bridge-v7";
@@ -11,9 +13,9 @@ export declare const redevPluginContractVersions: {
11
13
  readonly bridge_schema_version: "bridge-v7";
12
14
  }];
13
15
  readonly plugin_host_protocol_version: "plugin-host-v11";
14
- readonly rust_ipc_version: "rust-ipc-v6";
16
+ readonly rust_ipc_version: "rust-ipc-v7";
15
17
  readonly wasm_abi_version: "redevplugin-wasm-worker-v2";
16
- readonly manifest_schema_version: "manifest-v8";
18
+ readonly manifest_schema_version: "manifest-v9";
17
19
  readonly package_signature_schema_version: "package-signature-v1";
18
20
  readonly release_metadata_schema_version: "release-metadata-v8";
19
21
  readonly release_root_delegation_schema_version: "release-root-delegation-v1";
@@ -29,9 +31,10 @@ export declare const redevPluginContractVersions: {
29
31
  readonly network_grant_schema_version: "network-grant-v2";
30
32
  readonly resource_scope_schema_version: "resource-scope-v1";
31
33
  readonly session_scope_schema_version: "session-scope-v1";
32
- readonly plugin_platform_openapi_version: "plugin-platform-v16";
33
- readonly compatibility_manifest_version: "redevplugin.compatibility.v19";
34
- readonly compatibility_schema_version: "compatibility-manifest-v19";
34
+ readonly plugin_platform_openapi_version: "plugin-platform-v17";
35
+ readonly public_api_catalog_version: "public-api-v1";
36
+ readonly compatibility_manifest_version: "redevplugin.compatibility.v20";
37
+ readonly compatibility_schema_version: "compatibility-manifest-v20";
35
38
  readonly worker_invocation_schema_version: "worker-invocation-v3";
36
39
  readonly host_capability_contract_schema_version: "host-capability-contract-v1";
37
40
  readonly host_capability_pin_schema_version: "host-capability-pin-v1";
@@ -42,7 +45,7 @@ export declare const redevPluginContractVersions: {
42
45
  readonly platform_package_set_schema_version: "platform-package-set-v3";
43
46
  readonly platform_package_publication_schema_version: "platform-package-publication-v2";
44
47
  readonly runtime_admission_schema_version: "runtime-admission-v1";
45
- readonly runtime_descriptor_schema_version: "runtime-descriptor-v2";
48
+ readonly runtime_descriptor_schema_version: "runtime-descriptor-v3";
46
49
  readonly owner_scope_inventory_registry_version: "owner-scope-inventory-registry-v1";
47
50
  readonly owner_scope_inventory_schema_version: "owner-scope-inventory-v1";
48
51
  readonly owner_scope_migration_schema_version: "owner-scope-migration-v1";
@@ -59,9 +62,9 @@ export type ReDevPluginContractArtifact = {
59
62
  };
60
63
  export declare const redevPluginContractArtifacts: readonly [{
61
64
  readonly id: "compatibility-manifest-schema";
62
- readonly path: "spec/plugin/compatibility-manifest-v19.schema.json";
63
- readonly version: "compatibility-manifest-v19";
64
- readonly sha256: "c871e24cb88386dbddaae0bd37bcc9177e54b3c02fb957de4b46ddb329d8bb5b";
65
+ readonly path: "spec/plugin/compatibility-manifest-v20.schema.json";
66
+ readonly version: "compatibility-manifest-v20";
67
+ readonly sha256: "8ace15ee3f0bb05e5cdd3449385dd498e37f5fb2e22a67302efb5efeaee1aa02";
65
68
  }, {
66
69
  readonly id: "contract-registry-schema";
67
70
  readonly path: "spec/plugin/contract-registry-v2.schema.json";
@@ -99,9 +102,9 @@ export declare const redevPluginContractArtifacts: readonly [{
99
102
  readonly sha256: "5a6e7307f1649eb70d13e83e5d16177458957bffb3262b9299b4cf6d443e284a";
100
103
  }, {
101
104
  readonly id: "manifest-schema";
102
- readonly path: "spec/plugin/manifest-v8.schema.json";
103
- readonly version: "manifest-v8";
104
- readonly sha256: "dfe5e9ea5f15d4f9c0272427ca8650d475e2fa8aacc4fb6be3a945a3069a26fb";
105
+ readonly path: "spec/plugin/manifest-v9.schema.json";
106
+ readonly version: "manifest-v9";
107
+ readonly sha256: "d8b0fc348179a1a9af81f152897bad1891b1f8b7a7a4448c0a4e54e9883f1322";
105
108
  }, {
106
109
  readonly id: "network-grant-schema";
107
110
  readonly path: "spec/plugin/network-grant-v2.schema.json";
@@ -146,7 +149,7 @@ export declare const redevPluginContractArtifacts: readonly [{
146
149
  readonly id: "performance-contract";
147
150
  readonly path: "spec/plugin/performance-contract-v4.json";
148
151
  readonly version: "performance-contract-v4";
149
- readonly sha256: "75bd7955383cf77711c7df9b624d62b1eda3275ddc558500f206be4ea876f858";
152
+ readonly sha256: "08830053b38f0f8466c4e9e608fd7f21e24175063ec02307543fbd8adfb5692e";
150
153
  }, {
151
154
  readonly id: "performance-evidence-schema";
152
155
  readonly path: "spec/plugin/performance-evidence-v4.schema.json";
@@ -156,17 +159,17 @@ export declare const redevPluginContractArtifacts: readonly [{
156
159
  readonly id: "platform-package-publication-schema";
157
160
  readonly path: "spec/plugin/platform-package-publication-v2.schema.json";
158
161
  readonly version: "platform-package-publication-v2";
159
- readonly sha256: "f506ef7838757a05d5742fd3f223eb80cec99710972c517860cebd61c517012b";
162
+ readonly sha256: "1cc7a342b7dda8533324764c7f29fa7a3ca24a93f6015e7a18a17539febd538a";
160
163
  }, {
161
164
  readonly id: "platform-package-set-schema";
162
165
  readonly path: "spec/plugin/platform-package-set-v3.schema.json";
163
166
  readonly version: "platform-package-set-v3";
164
- readonly sha256: "2ac6e9a520e21a3294bec0059e0fabb6ee5d285fe6efe08a6bb6cbf2c7aea2bb";
167
+ readonly sha256: "8acba305f9df90be10cca516b98a598efc9a4bffd0e3c2915d78385e18397b88";
165
168
  }, {
166
169
  readonly id: "plugin-platform-openapi";
167
- readonly path: "spec/openapi/plugin-platform-v16.yaml";
168
- readonly version: "plugin-platform-v16";
169
- readonly sha256: "a85c284d1a6d677039bf9ec59e5bf80e93bc707d6ea7b1a7a967bf9daacdd5c0";
170
+ readonly path: "spec/openapi/plugin-platform-v17.yaml";
171
+ readonly version: "plugin-platform-v17";
172
+ readonly sha256: "1a043991f4d87ddfabdf614364e1bec42400f4bc19b7856c4c774b9f282fcda3";
170
173
  }, {
171
174
  readonly id: "presentation-icon-evidence-schema";
172
175
  readonly path: "spec/plugin/presentation-icon-evidence-v1.schema.json";
@@ -182,6 +185,11 @@ export declare const redevPluginContractArtifacts: readonly [{
182
185
  readonly path: "spec/plugin/process-containment-v1.schema.json";
183
186
  readonly version: "process-containment-v1";
184
187
  readonly sha256: "930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc";
188
+ }, {
189
+ readonly id: "public-api-catalog";
190
+ readonly path: "spec/plugin/public-api-v1.json";
191
+ readonly version: "public-api-v1";
192
+ readonly sha256: "fec900c56ce6eb2ad5ee1f229d62918726c23af48eb6cbe52bb0aff7599e06cc";
185
193
  }, {
186
194
  readonly id: "publisher-release-ref-schema";
187
195
  readonly path: "spec/plugin/publisher-release-ref-v1.schema.json";
@@ -239,9 +247,9 @@ export declare const redevPluginContractArtifacts: readonly [{
239
247
  readonly sha256: "bee7b149876447d663a4099dbd71e71fa97f8ff80ddf4e12cbfba951a47c4beb";
240
248
  }, {
241
249
  readonly id: "runtime-descriptor-schema";
242
- readonly path: "spec/plugin/runtime-descriptor-v2.schema.json";
243
- readonly version: "runtime-descriptor-v2";
244
- readonly sha256: "2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351";
250
+ readonly path: "spec/plugin/runtime-descriptor-v3.schema.json";
251
+ readonly version: "runtime-descriptor-v3";
252
+ readonly sha256: "c95c9126c0bbb4b5f697114d4e11d7107d1bebea56d700d3549d00812e7c3e97";
245
253
  }, {
246
254
  readonly id: "runtime-exec-journal-schema";
247
255
  readonly path: "spec/plugin/runtime-exec-journal-v1.schema.json";
@@ -249,9 +257,9 @@ export declare const redevPluginContractArtifacts: readonly [{
249
257
  readonly sha256: "2bddbba383843b8ebc1554009909f0bb25e98616be763826a697cb0f408870d2";
250
258
  }, {
251
259
  readonly id: "rust-ipc-schema";
252
- readonly path: "spec/plugin/ipc-v6.schema.json";
253
- readonly version: "rust-ipc-v6";
254
- readonly sha256: "75d7fb83d4502be726e986025f7ec14fac592bcaeb7add6b28dff42a7360c5dc";
260
+ readonly path: "spec/plugin/ipc-v7.schema.json";
261
+ readonly version: "rust-ipc-v7";
262
+ readonly sha256: "1e1c5b6414030a0c7ffa6f4356f95e2f78f339b9b4dff45bb3691931316d9502";
255
263
  }, {
256
264
  readonly id: "session-scope-schema";
257
265
  readonly path: "spec/plugin/session-scope-v1.schema.json";
@@ -1,4 +1,6 @@
1
1
  // Code generated by scripts/generate_contract_registry.mjs; DO NOT EDIT.
2
+ export const surfaceAPIMajor = 1;
3
+ /** @deprecated Internal frozen transport alias. Plugin code should use surfaceAPIMajor. */
2
4
  export const pluginUIProtocolVersion = "plugin-ui-v7";
3
5
  export const pluginHostProtocolVersion = "plugin-host-v11";
4
6
  export const bridgeSchemaVersion = "bridge-v7";
@@ -8,9 +10,9 @@ export const redevPluginContractVersions = {
8
10
  "supported_plugin_ui_protocol_versions": ["plugin-ui-v7"],
9
11
  "plugin_ui_transport_mappings": [{ "plugin_ui_protocol_version": "plugin-ui-v7", "opaque_surface_transport_schema_version": "opaque-surface-transport-v6", "bridge_schema_version": "bridge-v7" }],
10
12
  "plugin_host_protocol_version": "plugin-host-v11",
11
- "rust_ipc_version": "rust-ipc-v6",
13
+ "rust_ipc_version": "rust-ipc-v7",
12
14
  "wasm_abi_version": "redevplugin-wasm-worker-v2",
13
- "manifest_schema_version": "manifest-v8",
15
+ "manifest_schema_version": "manifest-v9",
14
16
  "package_signature_schema_version": "package-signature-v1",
15
17
  "release_metadata_schema_version": "release-metadata-v8",
16
18
  "release_root_delegation_schema_version": "release-root-delegation-v1",
@@ -26,9 +28,10 @@ export const redevPluginContractVersions = {
26
28
  "network_grant_schema_version": "network-grant-v2",
27
29
  "resource_scope_schema_version": "resource-scope-v1",
28
30
  "session_scope_schema_version": "session-scope-v1",
29
- "plugin_platform_openapi_version": "plugin-platform-v16",
30
- "compatibility_manifest_version": "redevplugin.compatibility.v19",
31
- "compatibility_schema_version": "compatibility-manifest-v19",
31
+ "plugin_platform_openapi_version": "plugin-platform-v17",
32
+ "public_api_catalog_version": "public-api-v1",
33
+ "compatibility_manifest_version": "redevplugin.compatibility.v20",
34
+ "compatibility_schema_version": "compatibility-manifest-v20",
32
35
  "worker_invocation_schema_version": "worker-invocation-v3",
33
36
  "host_capability_contract_schema_version": "host-capability-contract-v1",
34
37
  "host_capability_pin_schema_version": "host-capability-pin-v1",
@@ -39,7 +42,7 @@ export const redevPluginContractVersions = {
39
42
  "platform_package_set_schema_version": "platform-package-set-v3",
40
43
  "platform_package_publication_schema_version": "platform-package-publication-v2",
41
44
  "runtime_admission_schema_version": "runtime-admission-v1",
42
- "runtime_descriptor_schema_version": "runtime-descriptor-v2",
45
+ "runtime_descriptor_schema_version": "runtime-descriptor-v3",
43
46
  "owner_scope_inventory_registry_version": "owner-scope-inventory-registry-v1",
44
47
  "owner_scope_inventory_schema_version": "owner-scope-inventory-v1",
45
48
  "owner_scope_migration_schema_version": "owner-scope-migration-v1",
@@ -51,9 +54,9 @@ export const redevPluginContractVersions = {
51
54
  export const redevPluginContractArtifacts = [
52
55
  {
53
56
  id: "compatibility-manifest-schema",
54
- path: "spec/plugin/compatibility-manifest-v19.schema.json",
55
- version: "compatibility-manifest-v19",
56
- sha256: "c871e24cb88386dbddaae0bd37bcc9177e54b3c02fb957de4b46ddb329d8bb5b",
57
+ path: "spec/plugin/compatibility-manifest-v20.schema.json",
58
+ version: "compatibility-manifest-v20",
59
+ sha256: "8ace15ee3f0bb05e5cdd3449385dd498e37f5fb2e22a67302efb5efeaee1aa02",
57
60
  },
58
61
  {
59
62
  id: "contract-registry-schema",
@@ -99,9 +102,9 @@ export const redevPluginContractArtifacts = [
99
102
  },
100
103
  {
101
104
  id: "manifest-schema",
102
- path: "spec/plugin/manifest-v8.schema.json",
103
- version: "manifest-v8",
104
- sha256: "dfe5e9ea5f15d4f9c0272427ca8650d475e2fa8aacc4fb6be3a945a3069a26fb",
105
+ path: "spec/plugin/manifest-v9.schema.json",
106
+ version: "manifest-v9",
107
+ sha256: "d8b0fc348179a1a9af81f152897bad1891b1f8b7a7a4448c0a4e54e9883f1322",
105
108
  },
106
109
  {
107
110
  id: "network-grant-schema",
@@ -155,7 +158,7 @@ export const redevPluginContractArtifacts = [
155
158
  id: "performance-contract",
156
159
  path: "spec/plugin/performance-contract-v4.json",
157
160
  version: "performance-contract-v4",
158
- sha256: "75bd7955383cf77711c7df9b624d62b1eda3275ddc558500f206be4ea876f858",
161
+ sha256: "08830053b38f0f8466c4e9e608fd7f21e24175063ec02307543fbd8adfb5692e",
159
162
  },
160
163
  {
161
164
  id: "performance-evidence-schema",
@@ -167,19 +170,19 @@ export const redevPluginContractArtifacts = [
167
170
  id: "platform-package-publication-schema",
168
171
  path: "spec/plugin/platform-package-publication-v2.schema.json",
169
172
  version: "platform-package-publication-v2",
170
- sha256: "f506ef7838757a05d5742fd3f223eb80cec99710972c517860cebd61c517012b",
173
+ sha256: "1cc7a342b7dda8533324764c7f29fa7a3ca24a93f6015e7a18a17539febd538a",
171
174
  },
172
175
  {
173
176
  id: "platform-package-set-schema",
174
177
  path: "spec/plugin/platform-package-set-v3.schema.json",
175
178
  version: "platform-package-set-v3",
176
- sha256: "2ac6e9a520e21a3294bec0059e0fabb6ee5d285fe6efe08a6bb6cbf2c7aea2bb",
179
+ sha256: "8acba305f9df90be10cca516b98a598efc9a4bffd0e3c2915d78385e18397b88",
177
180
  },
178
181
  {
179
182
  id: "plugin-platform-openapi",
180
- path: "spec/openapi/plugin-platform-v16.yaml",
181
- version: "plugin-platform-v16",
182
- sha256: "a85c284d1a6d677039bf9ec59e5bf80e93bc707d6ea7b1a7a967bf9daacdd5c0",
183
+ path: "spec/openapi/plugin-platform-v17.yaml",
184
+ version: "plugin-platform-v17",
185
+ sha256: "1a043991f4d87ddfabdf614364e1bec42400f4bc19b7856c4c774b9f282fcda3",
183
186
  },
184
187
  {
185
188
  id: "presentation-icon-evidence-schema",
@@ -199,6 +202,12 @@ export const redevPluginContractArtifacts = [
199
202
  version: "process-containment-v1",
200
203
  sha256: "930ea44b1f62361706e994649e84f62af0a6418b77a661ae9bf9c10f1398e3fc",
201
204
  },
205
+ {
206
+ id: "public-api-catalog",
207
+ path: "spec/plugin/public-api-v1.json",
208
+ version: "public-api-v1",
209
+ sha256: "fec900c56ce6eb2ad5ee1f229d62918726c23af48eb6cbe52bb0aff7599e06cc",
210
+ },
202
211
  {
203
212
  id: "publisher-release-ref-schema",
204
213
  path: "spec/plugin/publisher-release-ref-v1.schema.json",
@@ -267,9 +276,9 @@ export const redevPluginContractArtifacts = [
267
276
  },
268
277
  {
269
278
  id: "runtime-descriptor-schema",
270
- path: "spec/plugin/runtime-descriptor-v2.schema.json",
271
- version: "runtime-descriptor-v2",
272
- sha256: "2ba59f6fb70d4ad757f60aca5541f4a44886542525e5bf76c393cd2368188351",
279
+ path: "spec/plugin/runtime-descriptor-v3.schema.json",
280
+ version: "runtime-descriptor-v3",
281
+ sha256: "c95c9126c0bbb4b5f697114d4e11d7107d1bebea56d700d3549d00812e7c3e97",
273
282
  },
274
283
  {
275
284
  id: "runtime-exec-journal-schema",
@@ -279,9 +288,9 @@ export const redevPluginContractArtifacts = [
279
288
  },
280
289
  {
281
290
  id: "rust-ipc-schema",
282
- path: "spec/plugin/ipc-v6.schema.json",
283
- version: "rust-ipc-v6",
284
- sha256: "75d7fb83d4502be726e986025f7ec14fac592bcaeb7add6b28dff42a7360c5dc",
291
+ path: "spec/plugin/ipc-v7.schema.json",
292
+ version: "rust-ipc-v7",
293
+ sha256: "1e1c5b6414030a0c7ffa6f4356f95e2f78f339b9b4dff45bb3691931316d9502",
285
294
  },
286
295
  {
287
296
  id: "session-scope-schema",
package/dist/http.d.ts CHANGED
@@ -40,3 +40,4 @@ export declare function readMutationPlatformResponse<T>(response: FetchResponseL
40
40
  export declare function isRecord(value: unknown): value is Record<string, unknown>;
41
41
  export declare function hasExactKeys(value: unknown, keys: readonly string[]): value is Record<string, unknown>;
42
42
  export declare function hasAllowedKeys(value: unknown, keys: readonly string[]): value is Record<string, unknown>;
43
+ export declare function hasRequiredKeys(value: Record<string, unknown>, keys: readonly string[]): boolean;
package/dist/http.js CHANGED
@@ -95,12 +95,12 @@ function isPlatformResponse(value, mutation) {
95
95
  if (!isRecord(value) || typeof value.ok !== "boolean")
96
96
  return false;
97
97
  if (value.ok) {
98
- return hasExactKeys(value, ["ok", "data"]);
98
+ return hasRequiredKeys(value, ["ok", "data"]);
99
99
  }
100
- if (!hasExactKeys(value, ["ok", "error"]) || !isRecord(value.error))
100
+ if (!hasRequiredKeys(value, ["ok", "error"]) || !isRecord(value.error))
101
101
  return false;
102
102
  const errorKeys = mutation ? ["code", "message", "details", "mutation_outcome"] : ["code", "message", "details"];
103
- if (!hasExactKeys(value.error, errorKeys) ||
103
+ if (!hasRequiredKeys(value.error, errorKeys) ||
104
104
  !isPluginPlatformErrorCode(value.error.code) ||
105
105
  typeof value.error.message !== "string" || value.error.message.trim().length === 0 ||
106
106
  Array.from(value.error.message).length > 4096 ||
@@ -212,6 +212,6 @@ function isIncompleteSessionScopeResult(value) {
212
212
  return false;
213
213
  return sessionScopeCountKeys.every((key) => Number.isSafeInteger(counts[key]) && Number(counts[key]) >= 0);
214
214
  }
215
- function hasRequiredKeys(value, keys) {
215
+ export function hasRequiredKeys(value, keys) {
216
216
  return keys.every((key) => Object.hasOwn(value, key));
217
217
  }
@@ -1382,7 +1382,7 @@ export interface components {
1382
1382
  PluginCatalogResult: {
1383
1383
  plugins: components["schemas"]["PluginCatalogRecord"][];
1384
1384
  };
1385
- PluginCompatibilityManifest: components["schemas"]["CompatibilityManifestV19"];
1385
+ PluginCompatibilityManifest: components["schemas"]["CompatibilityManifestV20"];
1386
1386
  ExecutionList: {
1387
1387
  executions: components["schemas"]["Execution"][];
1388
1388
  next_cursor?: number;
@@ -1579,14 +1579,32 @@ export interface components {
1579
1579
  StrictSemVer: string;
1580
1580
  RuntimeDescriptor: {
1581
1581
  /** @constant */
1582
- schema_version: "runtime-descriptor-v2";
1582
+ schema_version: "runtime-descriptor-v3";
1583
1583
  platform_version: components["schemas"]["StrictSemVer"];
1584
1584
  target: components["schemas"]["RuntimeAdmissionTarget"];
1585
- /** @constant */
1586
- rust_ipc_version: "rust-ipc-v6";
1587
- /** @constant */
1588
- wasm_abi_version: "redevplugin-wasm-worker-v2";
1589
- contract_set_sha256: string;
1585
+ internal: {
1586
+ /** @constant */
1587
+ rust_ipc: "rust-ipc-v7";
1588
+ contract_set_sha256: string;
1589
+ };
1590
+ public_api: {
1591
+ /** @constant */
1592
+ worker_majors: [
1593
+ 1
1594
+ ];
1595
+ /** @constant */
1596
+ features: [
1597
+ "fs.environment.v1",
1598
+ "fs.home.v1",
1599
+ "fs.watch.v1",
1600
+ "fs.workspace.v1",
1601
+ "io.stream.v1",
1602
+ "net.http.v1",
1603
+ "net.tcp.v1",
1604
+ "net.udp.v1",
1605
+ "net.websocket.v1"
1606
+ ];
1607
+ };
1590
1608
  binary_sha256: string;
1591
1609
  };
1592
1610
  /** @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. */
@@ -2068,7 +2086,7 @@ export interface components {
2068
2086
  update_eligibility?: components["schemas"]["ExternalPackageUpdateEligibility"];
2069
2087
  security_summary?: components["schemas"]["ExternalPackageSecuritySummary"];
2070
2088
  capability_contracts?: components["schemas"]["CapabilityContractPin"][];
2071
- manifest: components["schemas"]["ManifestV8"];
2089
+ manifest: components["schemas"]["ManifestV9"];
2072
2090
  presentation: components["schemas"]["PresentationCatalog"];
2073
2091
  presentation_sha256: string;
2074
2092
  package_entries: components["schemas"]["PackageEntry"][];
@@ -2108,7 +2126,7 @@ export interface components {
2108
2126
  policy_revision: number;
2109
2127
  management_revision: number;
2110
2128
  revoke_epoch: number;
2111
- manifest: components["schemas"]["ManifestV8"];
2129
+ manifest: components["schemas"]["ManifestV9"];
2112
2130
  presentation: components["schemas"]["PresentationCatalog"];
2113
2131
  presentation_sha256: string;
2114
2132
  package_entries: components["schemas"]["PackageEntry"][];
@@ -2654,9 +2672,9 @@ export interface components {
2654
2672
  counts: components["schemas"]["SessionScopeV1RevokeCounts"];
2655
2673
  };
2656
2674
  SessionScopeV1PublicRevokeResult: components["schemas"]["SessionScopeV1CompleteRevokeResult"] | components["schemas"]["SessionScopeV1IncompleteRevokeResult"];
2657
- CompatibilityManifestV19: {
2675
+ CompatibilityManifestV20: {
2658
2676
  /** @constant */
2659
- schema_version: "redevplugin.compatibility.v19";
2677
+ schema_version: "redevplugin.compatibility.v20";
2660
2678
  package_set: components["schemas"]["PlatformPackageSetV3"];
2661
2679
  matrix: {
2662
2680
  /** @constant */
@@ -2676,11 +2694,11 @@ export interface components {
2676
2694
  /** @constant */
2677
2695
  plugin_host_protocol_version: "plugin-host-v11";
2678
2696
  /** @constant */
2679
- rust_ipc_version: "rust-ipc-v6";
2697
+ rust_ipc_version: "rust-ipc-v7";
2680
2698
  /** @constant */
2681
2699
  wasm_abi_version: "redevplugin-wasm-worker-v2";
2682
2700
  /** @constant */
2683
- manifest_schema_version: "manifest-v8";
2701
+ manifest_schema_version: "manifest-v9";
2684
2702
  /** @constant */
2685
2703
  package_signature_schema_version: "package-signature-v1";
2686
2704
  /** @constant */
@@ -2712,9 +2730,11 @@ export interface components {
2712
2730
  /** @constant */
2713
2731
  session_scope_schema_version: "session-scope-v1";
2714
2732
  /** @constant */
2715
- plugin_platform_openapi_version: "plugin-platform-v16";
2733
+ plugin_platform_openapi_version: "plugin-platform-v17";
2716
2734
  /** @constant */
2717
- compatibility_schema_version: "compatibility-manifest-v19";
2735
+ public_api_catalog_version: "public-api-v1";
2736
+ /** @constant */
2737
+ compatibility_schema_version: "compatibility-manifest-v20";
2718
2738
  /** @constant */
2719
2739
  worker_invocation_schema_version: "worker-invocation-v3";
2720
2740
  /** @constant */
@@ -2736,7 +2756,7 @@ export interface components {
2736
2756
  /** @constant */
2737
2757
  runtime_admission_schema_version: "runtime-admission-v1";
2738
2758
  /** @constant */
2739
- runtime_descriptor_schema_version: "runtime-descriptor-v2";
2759
+ runtime_descriptor_schema_version: "runtime-descriptor-v3";
2740
2760
  /** @constant */
2741
2761
  owner_scope_inventory_registry_version: "owner-scope-inventory-registry-v1";
2742
2762
  /** @constant */
@@ -2753,9 +2773,9 @@ export interface components {
2753
2773
  quarantine_cleanup_schema_version: "quarantine-cleanup-v1";
2754
2774
  };
2755
2775
  contract_set_sha256: string;
2756
- contracts: components["schemas"]["CompatibilityManifestV19Contract"][];
2776
+ contracts: components["schemas"]["CompatibilityManifestV20Contract"][];
2757
2777
  };
2758
- CompatibilityManifestV19Contract: {
2778
+ CompatibilityManifestV20Contract: {
2759
2779
  id: string;
2760
2780
  path: string;
2761
2781
  version: string;
@@ -2782,7 +2802,7 @@ export interface components {
2782
2802
  PlatformPackageSetV3Sha256: string;
2783
2803
  PlatformPackageSetV3GoModule: {
2784
2804
  /** @constant */
2785
- module: "github.com/floegence/redevplugin";
2805
+ module: "github.com/floegence/redevplugin/v2";
2786
2806
  version: string;
2787
2807
  };
2788
2808
  PlatformPackageSetV3NpmPackage: {
@@ -2815,9 +2835,9 @@ export interface components {
2815
2835
  /** @constant */
2816
2836
  role?: "runtime";
2817
2837
  };
2818
- ManifestV8: {
2838
+ ManifestV9: {
2819
2839
  /** @constant */
2820
- schema_version: "redevplugin.manifest.v8";
2840
+ schema_version: "redevplugin.manifest.v9";
2821
2841
  publisher: {
2822
2842
  publisher_id: string;
2823
2843
  display_name?: string;
@@ -2825,23 +2845,24 @@ export interface components {
2825
2845
  plugin: {
2826
2846
  plugin_id: string;
2827
2847
  display_name: string;
2828
- version: components["schemas"]["ManifestV8Semver"];
2848
+ version: components["schemas"]["ManifestV9Semver"];
2849
+ };
2850
+ api: {
2829
2851
  /** @constant */
2830
- api_version: "plugin-v1";
2831
- min_runtime_version: components["schemas"]["ManifestV8Semver"];
2852
+ surface: 1;
2832
2853
  /** @constant */
2833
- ui_protocol_version: "plugin-ui-v7";
2854
+ worker: 1;
2855
+ required_features?: components["schemas"]["ManifestV9RequiredFeatures"];
2856
+ optional_features?: components["schemas"]["ManifestV9OptionalFeatures"];
2834
2857
  };
2858
+ permissions: ("fs.workspace.read" | "fs.workspace.write" | "fs.home.read" | "fs.home.write" | "fs.environment.read" | "fs.environment.write" | "network.client" | "network.listen")[];
2835
2859
  presentation: {
2836
- default_locale: components["schemas"]["ManifestV8Locale"];
2837
- summary: components["schemas"]["ManifestV8Summary"];
2838
- description: components["schemas"]["ManifestV8Description"];
2839
- highlights: components["schemas"]["ManifestV8Highlights"];
2840
- keywords: components["schemas"]["ManifestV8Keywords"];
2860
+ locales: {
2861
+ default: components["schemas"]["ManifestV9Locale"];
2862
+ };
2841
2863
  icon?: {
2842
2864
  path: string;
2843
2865
  };
2844
- localizations: components["schemas"]["ManifestV8Localization"][];
2845
2866
  };
2846
2867
  surfaces: {
2847
2868
  surface_id: string;
@@ -2857,78 +2878,24 @@ export interface components {
2857
2878
  height: number;
2858
2879
  };
2859
2880
  }[];
2860
- capability_bindings?: {
2861
- binding_id: string;
2862
- contract: components["schemas"]["HostCapabilityPinV1"];
2863
- }[];
2864
- methods?: ({
2865
- method: string;
2866
- /** @enum {unknown} */
2867
- effect?: "read" | "write" | "delete" | "execute" | "admin";
2868
- /** @enum {unknown} */
2869
- execution?: "sync" | "operation" | "subscription";
2870
- dangerous?: boolean;
2871
- preflight_only?: boolean;
2872
- broker_access?: {
2873
- storage?: {
2874
- store_id: string;
2875
- operations: ("read" | "write" | "delete" | "list" | "get" | "put" | "query" | "exec")[];
2876
- }[];
2877
- network?: ({
2878
- connector_id: string;
2879
- /** @enum {unknown} */
2880
- transport: "http" | "websocket" | "tcp" | "udp";
2881
- operations: ("http" | "http_stream" | "websocket_round_trip" | "tcp_round_trip" | "udp_round_trip")[];
2882
- http_methods?: ("GET" | "HEAD" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS")[];
2883
- } & unknown)[];
2884
- };
2885
- route: {
2886
- /** @enum {unknown} */
2887
- kind: "capability" | "worker" | "core_action";
2888
- binding_id?: string;
2889
- target_method?: string;
2890
- worker_id?: string;
2891
- action_id?: string;
2892
- } & (unknown & unknown & unknown);
2893
- confirmation?: {
2894
- /** @enum {unknown} */
2895
- mode: "none" | "required" | "risk_based";
2896
- preflight_method?: string | null;
2897
- request_hash_fields?: string[];
2898
- plan_hash_required?: boolean;
2899
- };
2900
- cancel_policy?: {
2901
- cancelable: boolean;
2902
- /** @enum {unknown} */
2903
- disable_behavior?: "cancel" | "orphan" | "wait";
2904
- /** @enum {unknown} */
2905
- uninstall_behavior?: "cancel_then_block_delete" | "force_cleanup_allowed";
2906
- ack_timeout_ms?: number;
2907
- } & (unknown & unknown);
2908
- request_schema?: components["schemas"]["ManifestV8MethodSchema"] & {
2909
- /** @constant */
2910
- type: "object";
2911
- /** @constant */
2912
- additionalProperties: false;
2913
- };
2914
- response_schema?: components["schemas"]["ManifestV8MethodSchema"] & {
2915
- /** @constant */
2916
- type: "object";
2917
- /** @constant */
2918
- additionalProperties: false;
2919
- };
2920
- } & (unknown & unknown & unknown & unknown))[];
2921
- workers?: {
2881
+ workers: {
2922
2882
  worker_id: string;
2923
2883
  artifact: string;
2924
2884
  /** @constant */
2925
- abi: "redevplugin-wasm-worker-v2";
2926
- /** @constant */
2927
2885
  mode: "job";
2928
2886
  /** @enum {unknown} */
2929
2887
  scope: "user" | "environment";
2930
2888
  memory_limit_bytes: number;
2931
- idle_timeout_ms?: number;
2889
+ }[];
2890
+ methods: {
2891
+ method: string;
2892
+ worker_id: string;
2893
+ /** @enum {unknown} */
2894
+ effect: "read" | "write" | "execute" | "delete" | "admin";
2895
+ /** @enum {unknown} */
2896
+ execution: "sync" | "operation" | "subscription";
2897
+ request_schema: components["schemas"]["ManifestV9MethodSchema"];
2898
+ response_schema: components["schemas"]["ManifestV9MethodSchema"];
2932
2899
  }[];
2933
2900
  storage?: {
2934
2901
  stores?: {
@@ -2942,115 +2909,13 @@ export interface components {
2942
2909
  schema_version: number;
2943
2910
  }[];
2944
2911
  };
2945
- network_access?: {
2946
- connectors?: {
2947
- connector_id: string;
2948
- /** @enum {unknown} */
2949
- transport: "http" | "websocket" | "tcp" | "udp";
2950
- /** @enum {unknown} */
2951
- scope: "user" | "environment";
2952
- destinations: string[];
2953
- auth?: Record<string, never>;
2954
- tls?: Record<string, never>;
2955
- }[];
2956
- };
2957
- settings?: {
2958
- schema_version: number;
2959
- fields?: {
2960
- key: string;
2961
- type: string;
2962
- /** @enum {unknown} */
2963
- scope: "user" | "environment";
2964
- label: string;
2965
- default?: unknown;
2966
- secret_ref?: string;
2967
- options?: components["schemas"]["ManifestV8SettingOption"][];
2968
- validation?: Record<string, never>;
2969
- }[];
2970
- };
2971
- intents?: {
2972
- intent_id: string;
2973
- method: string;
2974
- payload_schema?: Record<string, never>;
2975
- }[];
2976
- };
2977
- ManifestV8Locale: string;
2978
- ManifestV8Summary: string;
2979
- ManifestV8Description: string[];
2980
- ManifestV8Highlights: string[];
2981
- ManifestV8Keywords: string[];
2982
- ManifestV8SettingOption: {
2983
- value: string;
2984
- label: string;
2985
- };
2986
- ManifestV8LocalizedSurface: {
2987
- surface_id: string;
2988
- label: string;
2989
- };
2990
- ManifestV8LocalizedSetting: {
2991
- key: string;
2992
- label: string;
2993
- options: components["schemas"]["ManifestV8SettingOption"][];
2994
- };
2995
- ManifestV8Localization: {
2996
- locale: components["schemas"]["ManifestV8Locale"];
2997
- plugin_name: string;
2998
- publisher_name?: string;
2999
- summary: components["schemas"]["ManifestV8Summary"];
3000
- description: components["schemas"]["ManifestV8Description"];
3001
- highlights: components["schemas"]["ManifestV8Highlights"];
3002
- keywords: components["schemas"]["ManifestV8Keywords"];
3003
- surfaces: components["schemas"]["ManifestV8LocalizedSurface"][];
3004
- settings: components["schemas"]["ManifestV8LocalizedSetting"][];
3005
- };
3006
- ManifestV8Semver: string;
3007
- ManifestV8MethodSchema: false | (({
3008
- description?: string;
3009
- readOnly?: boolean;
3010
- writeOnly?: boolean;
3011
- $ref?: string;
3012
- type?: ("null" | "boolean" | "object" | "array" | "number" | "integer" | "string") | ("null" | "boolean" | "object" | "array" | "number" | "integer" | "string")[];
3013
- properties?: {
3014
- [key: string]: components["schemas"]["ManifestV8MethodSchema"];
3015
- };
3016
- patternProperties?: {
3017
- [key: string]: components["schemas"]["ManifestV8MethodSchema"];
3018
- };
3019
- required?: string[];
3020
- /** @constant */
3021
- additionalProperties?: false;
3022
- items?: components["schemas"]["ManifestV8MethodSchema"];
3023
- allOf?: components["schemas"]["ManifestV8MethodSchema"][];
3024
- anyOf?: components["schemas"]["ManifestV8MethodSchema"][];
3025
- oneOf?: components["schemas"]["ManifestV8MethodSchema"][];
3026
- enum?: unknown[];
3027
- const?: unknown;
3028
- default?: unknown;
3029
- examples?: unknown[];
3030
- minimum?: number;
3031
- maximum?: number;
3032
- exclusiveMinimum?: number;
3033
- exclusiveMaximum?: number;
3034
- multipleOf?: number;
3035
- minLength?: number;
3036
- maxLength?: number;
3037
- pattern?: string;
3038
- format?: string;
3039
- minItems?: number;
3040
- maxItems?: number;
3041
- uniqueItems?: boolean;
3042
- minProperties?: number;
3043
- maxProperties?: number;
3044
- } & (unknown & unknown)) | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown | unknown);
3045
- HostCapabilityPinV1: {
3046
- publisher_id: components["schemas"]["HostCapabilityPinV1Id"];
3047
- contract_id: components["schemas"]["HostCapabilityPinV1Id"];
3048
- contract_version: components["schemas"]["HostCapabilityPinV1Semver"];
3049
- artifact_sha256: components["schemas"]["HostCapabilityPinV1Sha256"];
2912
+ settings?: Record<string, never>;
3050
2913
  };
3051
- HostCapabilityPinV1Id: string;
3052
- HostCapabilityPinV1Semver: string;
3053
- HostCapabilityPinV1Sha256: string;
2914
+ ManifestV9Semver: string;
2915
+ ManifestV9Locale: string;
2916
+ ManifestV9RequiredFeatures: ("io.stream.v1" | "fs.workspace.v1" | "fs.home.v1" | "fs.environment.v1" | "fs.watch.v1" | "net.http.v1" | "net.websocket.v1" | "net.tcp.v1" | "net.udp.v1")[];
2917
+ ManifestV9OptionalFeatures: string[];
2918
+ ManifestV9MethodSchema: false | Record<string, never>;
3054
2919
  OpaqueSurfaceDocumentV3: {
3055
2920
  /** @constant */
3056
2921
  schema_version: "redevplugin.opaque_surface_document.v3";
@@ -3087,6 +2952,15 @@ export interface components {
3087
2952
  size: number;
3088
2953
  content_type: string;
3089
2954
  };
2955
+ HostCapabilityPinV1: {
2956
+ publisher_id: components["schemas"]["HostCapabilityPinV1Id"];
2957
+ contract_id: components["schemas"]["HostCapabilityPinV1Id"];
2958
+ contract_version: components["schemas"]["HostCapabilityPinV1Semver"];
2959
+ artifact_sha256: components["schemas"]["HostCapabilityPinV1Sha256"];
2960
+ };
2961
+ HostCapabilityPinV1Id: string;
2962
+ HostCapabilityPinV1Semver: string;
2963
+ HostCapabilityPinV1Sha256: string;
3090
2964
  };
3091
2965
  responses: {
3092
2966
  /** @description Closed non-success response for read-only platform operations. */
package/dist/plugin.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { PluginBridgeClient } from "./surface.js";
2
2
  export { PluginBridgeError } from "./errors.js";
3
+ export { surfaceAPIMajor } from "./contracts.gen.js";
3
4
  export { callCapabilityOperation, callCapabilityStream, callCapabilitySync, isCapabilityBusinessError, } from "./capability-client.js";
4
5
  export type { BridgeLifecycleEvent, MessagePortLike, PluginBridgeClientOptions, PluginBridgeRequestOptions, PluginCanvasAccessibilityState, PluginCanvasInputEvent, PluginCanvasKeyEvent, PluginCanvasPointerEvent, PluginCanvasResizeEvent, PluginCanvasSurface, PluginJSONObject, PluginJSONValue, PluginMethodResult, PluginExecutionFailureCode, PluginExecutionSnapshot, PluginExecutionProgress, PluginExecutionEvent, PluginExecutionEventList, PluginSurfaceContext, PluginUIActionEvent, PluginUIAttributeValue, PluginUIElementVNode, PluginUIPatchOperation, PluginUIVNode, } from "./surface.js";
5
6
  export type { PluginCapabilitySchema, PluginCapabilityEffect, PluginCapabilityOperationContract, PluginCapabilityStreamContract, PluginCapabilitySyncContract, PluginCapabilityStreamEvent, PluginCapabilityStreamReadResult, PluginExecution, PluginExecutionTerminalStatus, PluginExecutionWaitOptions, PluginStream, } from "./capability-client.js";
package/dist/plugin.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { PluginBridgeClient } from "./surface.js";
2
2
  export { PluginBridgeError } from "./errors.js";
3
+ export { surfaceAPIMajor } from "./contracts.gen.js";
3
4
  export { callCapabilityOperation, callCapabilityStream, callCapabilitySync, isCapabilityBusinessError, } from "./capability-client.js";
package/dist/surface.js CHANGED
@@ -2,7 +2,7 @@ import { PluginBridgeError, PluginPlatformRequestError, PluginTransportError, pl
2
2
  import { pluginBridgeCapabilityEffect, } from "./bridge-capability.js";
3
3
  import { pluginUIProtocolVersion } from "./contracts.gen.js";
4
4
  import { opaqueSurfaceAllowedTags, opaqueSurfaceGlobalAttributes, opaqueSurfaceRenderLimits, opaqueSurfaceSafeInputTypes, opaqueSurfaceTagAttributes, } from "./opaque-surface-policy.gen.js";
5
- import { defaultFetch, hasAllowedKeys, hasExactKeys, isRecord, readMutationPlatformResponse, readPlatformResponse, } from "./http.js";
5
+ import { defaultFetch, hasAllowedKeys, hasExactKeys, hasRequiredKeys, isRecord, readMutationPlatformResponse, readPlatformResponse, } from "./http.js";
6
6
  import { defaultPluginSurfaceScope, registerPluginSurface, } from "./surface-scope.js";
7
7
  import { PluginUIReconcileError, reconcileValidatedPluginUITrees, validatePluginUITree, } from "./ui-reconciler.js";
8
8
  export const opaqueSurfaceDocumentSchemaVersion = "redevplugin.opaque_surface_document.v3";
@@ -4051,16 +4051,17 @@ function validDateTime(value) {
4051
4051
  return typeof value === "string" && value.length > 0 && Number.isFinite(Date.parse(value));
4052
4052
  }
4053
4053
  function isPluginExecutionEventList(value, executionID, afterCursor) {
4054
- if (!hasExactKeys(value, ["execution_id", "events", "cursor"]) || value.execution_id !== executionID ||
4054
+ if (!isRecord(value) || !hasRequiredKeys(value, ["execution_id", "events", "cursor"]) || value.execution_id !== executionID ||
4055
4055
  !Array.isArray(value.events) || !Number.isSafeInteger(value.cursor) || Number(value.cursor) < afterCursor)
4056
4056
  return false;
4057
4057
  let cursor = afterCursor;
4058
4058
  for (const event of value.events) {
4059
- if (!isRecord(event) || !hasAllowedKeys(event, ["execution_id", "sequence", "kind", "payload", "error"]) ||
4059
+ if (!isRecord(event) || !hasRequiredKeys(event, ["execution_id", "sequence", "kind"]) ||
4060
4060
  event.execution_id !== executionID || !Number.isSafeInteger(event.sequence) || Number(event.sequence) <= cursor ||
4061
4061
  !["progress", "data", "diagnostic", "terminal"].includes(String(event.kind)) ||
4062
4062
  (event.payload !== undefined && !isRecord(event.payload)) ||
4063
- (event.error !== undefined && (!hasExactKeys(event.error, ["code", "message"]) || typeof event.error.code !== "string" || typeof event.error.message !== "string")))
4063
+ (event.error !== undefined && (!isRecord(event.error) || !hasRequiredKeys(event.error, ["code", "message"]) ||
4064
+ typeof event.error.code !== "string" || typeof event.error.message !== "string")))
4064
4065
  return false;
4065
4066
  cursor = Number(event.sequence);
4066
4067
  }
@@ -4086,10 +4087,9 @@ function isBridgeResponse(value) {
4086
4087
  if (!isBridgeResponseCandidate(value) || !validBridgeRequestID(value.id))
4087
4088
  return false;
4088
4089
  if (value.ok === true)
4089
- return Object.keys(value).every((key) => ["type", "id", "ok", "data"].includes(key));
4090
+ return true;
4090
4091
  if (value.ok !== false || typeof value.error_code !== "string" || !pluginBridgeErrorCodeSet.has(value.error_code) ||
4091
4092
  typeof value.error !== "string" || value.error.length > 4096 ||
4092
- !Object.keys(value).every((key) => ["type", "id", "ok", "error_code", "error", "error_details", "mutation_outcome"].includes(key)) ||
4093
4093
  (value.mutation_outcome !== undefined && value.mutation_outcome !== "committed" &&
4094
4094
  value.mutation_outcome !== "not_committed" && value.mutation_outcome !== "unknown")) {
4095
4095
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/redevplugin-ui",
3
- "version": "1.1.4",
3
+ "version": "2.0.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "repository": {
@@ -40,7 +40,7 @@
40
40
  "dist"
41
41
  ],
42
42
  "dependencies": {
43
- "@floegence/redevplugin-contracts": "1.1.4"
43
+ "@floegence/redevplugin-contracts": "2.0.1"
44
44
  },
45
45
  "publishConfig": {
46
46
  "access": "public"