space-data-module-sdk 0.8.4 → 0.8.5

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.
Files changed (354) hide show
  1. package/README.md +117 -20
  2. package/bin/space-data-module.js +263 -0
  3. package/docs/.nojekyll +1 -0
  4. package/docs/AGENTS.md +34 -0
  5. package/docs/architecture.svg +141 -0
  6. package/docs/browser-wasmedge-isomorphic.md +179 -0
  7. package/docs/flatsql-streaming-standard.md +341 -0
  8. package/docs/gpu-module-abi.md +193 -0
  9. package/docs/index.html +125 -0
  10. package/docs/isomorphic-pthreads.md +188 -0
  11. package/docs/isomorphic-sdn-runtime-plan.md +167 -0
  12. package/docs/language-runtime-matrix.md +82 -0
  13. package/docs/manifest-structure.svg +114 -0
  14. package/docs/module-bundle-runtime-plan.md +19 -0
  15. package/docs/module-lifecycle.svg +70 -0
  16. package/docs/module-publication-standard.md +540 -0
  17. package/docs/node-red-default-node-parity.md +88 -0
  18. package/docs/protocol-installation.md +196 -0
  19. package/docs/secrets-capability.md +152 -0
  20. package/docs/styles.css +288 -0
  21. package/docs/testing-harness.md +408 -0
  22. package/docs/tri-runtime-parity.md +132 -0
  23. package/docs/wallet-callback.html +2 -0
  24. package/package.json +25 -6
  25. package/schemas/HttpRequestAbi.fbs +41 -0
  26. package/schemas/HttpResponseAbi.fbs +36 -0
  27. package/schemas/PluginManifest.fbs +2 -1
  28. package/src/AGENTS.md +1 -1
  29. package/src/app/codec.js +548 -0
  30. package/src/app/index.js +6 -0
  31. package/src/browser.js +5 -0
  32. package/src/bundle/constants.js +1 -0
  33. package/src/bundle/index.js +15 -0
  34. package/src/bundle/sigdomain.js +179 -0
  35. package/src/bundle/signing.js +767 -0
  36. package/src/bundle/wasm.js +3 -2
  37. package/src/capabilities.js +3 -0
  38. package/src/compat/index.js +7 -0
  39. package/src/compat/sdnLegacy.js +449 -0
  40. package/src/compiler/compileModule.js +556 -55
  41. package/src/compiler/flatcSupport.js +41 -27
  42. package/src/compiler/index.d.ts +2 -0
  43. package/src/compiler/index.js +18 -0
  44. package/src/compiler/invokeGlue.js +1212 -183
  45. package/src/compiler/pthreadArtifactGuard.js +910 -0
  46. package/src/compiler/sdnShimGenerator.js +323 -0
  47. package/src/compiler/wasiThreadsToolchain.js +150 -0
  48. package/src/compliance/index.js +11 -1
  49. package/src/compliance/legacyWildcardPorts.js +228 -0
  50. package/src/compliance/pluginCompliance.js +1000 -96
  51. package/src/field-stream/index.d.ts +31 -0
  52. package/src/field-stream/index.js +119 -0
  53. package/src/flow/dependencyStreamBridge.js +234 -0
  54. package/src/flow/flatsqlLinkShim.js +304 -0
  55. package/src/flow/flowCodec.js +107 -0
  56. package/src/flow/flowCompiler.js +2900 -0
  57. package/src/flow/flowRuntimeHost.js +877 -0
  58. package/src/flow/index.d.ts +117 -0
  59. package/src/flow/index.js +31 -0
  60. package/src/flow/isomorphicFlowHost.js +384 -0
  61. package/src/flow/jsFlowRuntime.js +275 -0
  62. package/src/flow/normalize.js +294 -0
  63. package/src/flow/runtime-src/flow_runtime.cpp +1699 -0
  64. package/src/flow/vendor/sdn-flow/MethodRegistry.js +400 -0
  65. package/src/flow/vendor/sdn-flow/constants.js +39 -0
  66. package/src/flow/vendor/sdn-flow/index.js +29 -0
  67. package/src/flow/vendor/sdn-flow/normalize.js +506 -0
  68. package/src/flow/vendor/sdn-flow/wasmCompatibility.js +189 -0
  69. package/src/generated/http/cpp/HttpRequestAbi_generated.h +285 -0
  70. package/src/generated/http/cpp/HttpResponseAbi_generated.h +192 -0
  71. package/src/generated/http/sdn/http/http-header.js +53 -0
  72. package/src/generated/http/sdn/http/http-header.ts +67 -0
  73. package/src/generated/http/sdn/http/http-request.js +132 -0
  74. package/src/generated/http/sdn/http/http-request.ts +179 -0
  75. package/src/generated/http/sdn/http/http-response.js +144 -0
  76. package/src/generated/http/sdn/http/http-response.ts +168 -0
  77. package/src/generated/http/sdn/http.js +11 -0
  78. package/src/generated/http/sdn/http.ts +4 -0
  79. package/src/generated/orbpro/flow/backpressure-policy.d.ts +12 -0
  80. package/src/generated/orbpro/flow/backpressure-policy.d.ts.map +1 -0
  81. package/src/generated/orbpro/flow/backpressure-policy.js +17 -0
  82. package/src/generated/orbpro/flow/backpressure-policy.js.map +1 -0
  83. package/src/generated/orbpro/flow/backpressure-policy.ts +15 -0
  84. package/src/generated/orbpro/flow/flow-bundle-manifest.d.ts +142 -0
  85. package/src/generated/orbpro/flow/flow-bundle-manifest.d.ts.map +1 -0
  86. package/src/generated/orbpro/flow/flow-bundle-manifest.js +304 -0
  87. package/src/generated/orbpro/flow/flow-bundle-manifest.js.map +1 -0
  88. package/src/generated/orbpro/flow/flow-bundle-manifest.ts +399 -0
  89. package/src/generated/orbpro/flow/flow-edge.d.ts +113 -0
  90. package/src/generated/orbpro/flow/flow-edge.d.ts.map +1 -0
  91. package/src/generated/orbpro/flow/flow-edge.js +221 -0
  92. package/src/generated/orbpro/flow/flow-edge.js.map +1 -0
  93. package/src/generated/orbpro/flow/flow-edge.ts +292 -0
  94. package/src/generated/orbpro/flow/flow-node.d.ts +80 -0
  95. package/src/generated/orbpro/flow/flow-node.d.ts.map +1 -0
  96. package/src/generated/orbpro/flow/flow-node.js +158 -0
  97. package/src/generated/orbpro/flow/flow-node.js.map +1 -0
  98. package/src/generated/orbpro/flow/flow-node.ts +202 -0
  99. package/src/generated/orbpro/flow/flow-program.d.ts +164 -0
  100. package/src/generated/orbpro/flow/flow-program.d.ts.map +1 -0
  101. package/src/generated/orbpro/flow/flow-program.js +350 -0
  102. package/src/generated/orbpro/flow/flow-program.js.map +1 -0
  103. package/src/generated/orbpro/flow/flow-program.ts +477 -0
  104. package/src/generated/orbpro/flow/flow-trigger.d.ts +108 -0
  105. package/src/generated/orbpro/flow/flow-trigger.d.ts.map +1 -0
  106. package/src/generated/orbpro/flow/flow-trigger.js +207 -0
  107. package/src/generated/orbpro/flow/flow-trigger.js.map +1 -0
  108. package/src/generated/orbpro/flow/flow-trigger.ts +276 -0
  109. package/src/generated/orbpro/flow/node-kind.d.ts +13 -0
  110. package/src/generated/orbpro/flow/node-kind.d.ts.map +1 -0
  111. package/src/generated/orbpro/flow/node-kind.js +16 -0
  112. package/src/generated/orbpro/flow/node-kind.js.map +1 -0
  113. package/src/generated/orbpro/{invoke.ts → flow/node-kind.ts} +12 -2
  114. package/src/generated/orbpro/flow/plugin-version-binding.d.ts +52 -0
  115. package/src/generated/orbpro/flow/plugin-version-binding.d.ts.map +1 -0
  116. package/src/generated/orbpro/flow/plugin-version-binding.js +85 -0
  117. package/src/generated/orbpro/flow/plugin-version-binding.js.map +1 -0
  118. package/src/generated/orbpro/flow/plugin-version-binding.ts +121 -0
  119. package/src/generated/orbpro/flow/schema-hash-binding.d.ts +70 -0
  120. package/src/generated/orbpro/flow/schema-hash-binding.d.ts.map +1 -0
  121. package/src/generated/orbpro/flow/schema-hash-binding.js +143 -0
  122. package/src/generated/orbpro/flow/schema-hash-binding.js.map +1 -0
  123. package/src/generated/orbpro/flow/schema-hash-binding.ts +189 -0
  124. package/src/generated/orbpro/flow/trigger-binding.d.ts +71 -0
  125. package/src/generated/orbpro/flow/trigger-binding.d.ts.map +1 -0
  126. package/src/generated/orbpro/flow/trigger-binding.js +142 -0
  127. package/src/generated/orbpro/flow/trigger-binding.js.map +1 -0
  128. package/src/generated/orbpro/flow/trigger-binding.ts +181 -0
  129. package/src/generated/orbpro/flow/trigger-kind.d.ts +14 -0
  130. package/src/generated/orbpro/flow/trigger-kind.d.ts.map +1 -0
  131. package/src/generated/orbpro/flow/trigger-kind.js +17 -0
  132. package/src/generated/orbpro/flow/trigger-kind.js.map +1 -0
  133. package/src/generated/orbpro/flow/trigger-kind.ts +17 -0
  134. package/src/generated/orbpro/flow.d.ts +21 -0
  135. package/src/generated/orbpro/flow.d.ts.map +1 -0
  136. package/src/generated/orbpro/flow.js +23 -0
  137. package/src/generated/orbpro/flow.js.map +1 -0
  138. package/src/generated/orbpro/flow.ts +24 -0
  139. package/src/generated/orbpro/manifest/capability-kind.d.ts +2 -1
  140. package/src/generated/orbpro/manifest/capability-kind.js +1 -0
  141. package/src/generated/orbpro/manifest/capability-kind.ts +1 -0
  142. package/src/generated/orbpro/plugin/stream-invoke-request.d.ts +93 -0
  143. package/src/generated/orbpro/plugin/stream-invoke-request.js +160 -0
  144. package/src/generated/orbpro/plugin/stream-invoke-request.ts +211 -0
  145. package/src/generated/orbpro/plugin/stream-invoke-response.d.ts +99 -0
  146. package/src/generated/orbpro/plugin/stream-invoke-response.js +175 -0
  147. package/src/generated/orbpro/plugin/stream-invoke-response.ts +226 -0
  148. package/src/generated/orbpro/plugin.js +8 -0
  149. package/src/generated/orbpro/stream.d.ts +12 -0
  150. package/src/generated/orbpro/stream.js +14 -0
  151. package/src/generated/orbpro/stream.ts +15 -0
  152. package/src/generated/spacedatastandards/plg/EntryFunction.d.ts +52 -0
  153. package/src/generated/spacedatastandards/plg/EntryFunction.d.ts.map +1 -0
  154. package/src/generated/spacedatastandards/plg/EntryFunction.js +106 -0
  155. package/src/generated/spacedatastandards/plg/EntryFunction.ts +162 -0
  156. package/src/generated/spacedatastandards/plg/FlatBufferTypeRef.d.ts +90 -0
  157. package/src/generated/spacedatastandards/plg/FlatBufferTypeRef.d.ts.map +1 -0
  158. package/src/generated/spacedatastandards/plg/FlatBufferTypeRef.js +189 -0
  159. package/src/generated/spacedatastandards/plg/FlatBufferTypeRef.ts +270 -0
  160. package/src/generated/spacedatastandards/plg/PLG.d.ts +492 -0
  161. package/src/generated/spacedatastandards/plg/PLG.d.ts.map +1 -0
  162. package/src/generated/spacedatastandards/plg/PLG.js +1139 -0
  163. package/src/generated/spacedatastandards/plg/PLG.ts +1600 -0
  164. package/src/generated/spacedatastandards/plg/PLGAcceptedTypeSet.d.ts +63 -0
  165. package/src/generated/spacedatastandards/plg/PLGAcceptedTypeSet.d.ts.map +1 -0
  166. package/src/generated/spacedatastandards/plg/PLGAcceptedTypeSet.js +138 -0
  167. package/src/generated/spacedatastandards/plg/PLGAcceptedTypeSet.ts +189 -0
  168. package/src/generated/spacedatastandards/plg/PLGBuildArtifact.d.ts +41 -0
  169. package/src/generated/spacedatastandards/plg/PLGBuildArtifact.d.ts.map +1 -0
  170. package/src/generated/spacedatastandards/plg/PLGBuildArtifact.js +104 -0
  171. package/src/generated/spacedatastandards/plg/PLGBuildArtifact.ts +151 -0
  172. package/src/generated/spacedatastandards/plg/PLGFlowEdge.d.ts +68 -0
  173. package/src/generated/spacedatastandards/plg/PLGFlowEdge.d.ts.map +1 -0
  174. package/src/generated/spacedatastandards/plg/PLGFlowEdge.js +124 -0
  175. package/src/generated/spacedatastandards/plg/PLGFlowEdge.ts +184 -0
  176. package/src/generated/spacedatastandards/plg/PLGFlowEdgeContract.d.ts +58 -0
  177. package/src/generated/spacedatastandards/plg/PLGFlowEdgeContract.d.ts.map +1 -0
  178. package/src/generated/spacedatastandards/plg/PLGFlowEdgeContract.js +126 -0
  179. package/src/generated/spacedatastandards/plg/PLGFlowEdgeContract.ts +161 -0
  180. package/src/generated/spacedatastandards/plg/PLGFlowNode.d.ts +82 -0
  181. package/src/generated/spacedatastandards/plg/PLGFlowNode.d.ts.map +1 -0
  182. package/src/generated/spacedatastandards/plg/PLGFlowNode.js +164 -0
  183. package/src/generated/spacedatastandards/plg/PLGFlowNode.ts +244 -0
  184. package/src/generated/spacedatastandards/plg/PLGFlowTrigger.d.ts +55 -0
  185. package/src/generated/spacedatastandards/plg/PLGFlowTrigger.d.ts.map +1 -0
  186. package/src/generated/spacedatastandards/plg/PLGFlowTrigger.js +105 -0
  187. package/src/generated/spacedatastandards/plg/PLGFlowTrigger.ts +162 -0
  188. package/src/generated/spacedatastandards/plg/PLGFlowTriggerBinding.d.ts +42 -0
  189. package/src/generated/spacedatastandards/plg/PLGFlowTriggerBinding.d.ts.map +1 -0
  190. package/src/generated/spacedatastandards/plg/PLGFlowTriggerBinding.js +83 -0
  191. package/src/generated/spacedatastandards/plg/PLGFlowTriggerBinding.ts +127 -0
  192. package/src/generated/spacedatastandards/plg/PLGHostCapability.d.ts +36 -0
  193. package/src/generated/spacedatastandards/plg/PLGHostCapability.d.ts.map +1 -0
  194. package/src/generated/spacedatastandards/plg/PLGHostCapability.js +90 -0
  195. package/src/generated/spacedatastandards/plg/PLGHostCapability.ts +127 -0
  196. package/src/generated/spacedatastandards/plg/PLGMethodManifest.d.ts +53 -0
  197. package/src/generated/spacedatastandards/plg/PLGMethodManifest.d.ts.map +1 -0
  198. package/src/generated/spacedatastandards/plg/PLGMethodManifest.js +153 -0
  199. package/src/generated/spacedatastandards/plg/PLGMethodManifest.ts +210 -0
  200. package/src/generated/spacedatastandards/plg/PLGPortManifest.d.ts +70 -0
  201. package/src/generated/spacedatastandards/plg/PLGPortManifest.d.ts.map +1 -0
  202. package/src/generated/spacedatastandards/plg/PLGPortManifest.js +149 -0
  203. package/src/generated/spacedatastandards/plg/PLGPortManifest.ts +212 -0
  204. package/src/generated/spacedatastandards/plg/PLGProtocolSpec.d.ts +73 -0
  205. package/src/generated/spacedatastandards/plg/PLGProtocolSpec.d.ts.map +1 -0
  206. package/src/generated/spacedatastandards/plg/PLGProtocolSpec.js +199 -0
  207. package/src/generated/spacedatastandards/plg/PLGProtocolSpec.ts +292 -0
  208. package/src/generated/spacedatastandards/plg/PLGTimerSpec.d.ts +40 -0
  209. package/src/generated/spacedatastandards/plg/PLGTimerSpec.d.ts.map +1 -0
  210. package/src/generated/spacedatastandards/plg/PLGTimerSpec.js +103 -0
  211. package/src/generated/spacedatastandards/plg/PLGTimerSpec.ts +148 -0
  212. package/src/generated/spacedatastandards/plg/PluginCapability.d.ts +41 -0
  213. package/src/generated/spacedatastandards/plg/PluginCapability.d.ts.map +1 -0
  214. package/src/generated/spacedatastandards/plg/PluginCapability.js +82 -0
  215. package/src/generated/spacedatastandards/plg/{plugin-capability.ts → PluginCapability.ts} +55 -18
  216. package/src/generated/spacedatastandards/plg/PluginDependency.d.ts +42 -0
  217. package/src/generated/spacedatastandards/plg/PluginDependency.d.ts.map +1 -0
  218. package/src/generated/spacedatastandards/plg/PluginDependency.js +80 -0
  219. package/src/generated/spacedatastandards/plg/PluginDependency.ts +124 -0
  220. package/src/generated/spacedatastandards/plg/TAB.d.ts +85 -0
  221. package/src/generated/spacedatastandards/plg/TAB.d.ts.map +1 -0
  222. package/src/generated/spacedatastandards/plg/TAB.js +173 -0
  223. package/src/generated/spacedatastandards/plg/TAB.ts +228 -0
  224. package/src/generated/spacedatastandards/plg/bufferMutability.d.ts +18 -0
  225. package/src/generated/spacedatastandards/plg/bufferMutability.d.ts.map +1 -0
  226. package/src/generated/spacedatastandards/plg/bufferMutability.js +20 -0
  227. package/src/generated/spacedatastandards/plg/bufferMutability.ts +23 -0
  228. package/src/generated/spacedatastandards/plg/bufferOwnership.d.ts +18 -0
  229. package/src/generated/spacedatastandards/plg/bufferOwnership.d.ts.map +1 -0
  230. package/src/generated/spacedatastandards/plg/bufferOwnership.js +20 -0
  231. package/src/generated/spacedatastandards/plg/bufferOwnership.ts +23 -0
  232. package/src/generated/spacedatastandards/plg/drainBehavior.d.ts +20 -0
  233. package/src/generated/spacedatastandards/plg/drainBehavior.d.ts.map +1 -0
  234. package/src/generated/spacedatastandards/plg/drainBehavior.js +22 -0
  235. package/src/generated/spacedatastandards/plg/drainBehavior.ts +25 -0
  236. package/src/generated/spacedatastandards/plg/flowEdgeRoutePolicy.d.ts +10 -0
  237. package/src/generated/spacedatastandards/plg/flowEdgeRoutePolicy.d.ts.map +1 -0
  238. package/src/generated/spacedatastandards/plg/flowEdgeRoutePolicy.js +12 -0
  239. package/src/generated/spacedatastandards/plg/flowEdgeRoutePolicy.ts +13 -0
  240. package/src/generated/spacedatastandards/plg/hostCapabilityKind.d.ts +51 -0
  241. package/src/generated/spacedatastandards/plg/hostCapabilityKind.d.ts.map +1 -0
  242. package/src/generated/spacedatastandards/plg/hostCapabilityKind.js +53 -0
  243. package/src/generated/spacedatastandards/plg/hostCapabilityKind.ts +55 -0
  244. package/src/generated/spacedatastandards/plg/invokeSurfaceKind.d.ts +15 -0
  245. package/src/generated/spacedatastandards/plg/invokeSurfaceKind.d.ts.map +1 -0
  246. package/src/generated/spacedatastandards/plg/invokeSurfaceKind.js +17 -0
  247. package/src/generated/spacedatastandards/plg/invokeSurfaceKind.ts +19 -0
  248. package/src/generated/spacedatastandards/plg/main.d.ts +29 -0
  249. package/src/generated/spacedatastandards/plg/main.d.ts.map +1 -0
  250. package/src/generated/spacedatastandards/plg/main.js +30 -0
  251. package/src/generated/spacedatastandards/plg/main.ts +32 -0
  252. package/src/generated/spacedatastandards/plg/payloadWireFormat.d.ts +17 -0
  253. package/src/generated/spacedatastandards/plg/payloadWireFormat.d.ts.map +1 -0
  254. package/src/generated/spacedatastandards/plg/payloadWireFormat.js +19 -0
  255. package/src/generated/spacedatastandards/plg/payloadWireFormat.ts +21 -0
  256. package/src/generated/spacedatastandards/plg/pluginCategory.d.ts +82 -0
  257. package/src/generated/spacedatastandards/plg/pluginCategory.d.ts.map +1 -0
  258. package/src/generated/spacedatastandards/plg/pluginCategory.js +84 -0
  259. package/src/generated/spacedatastandards/plg/pluginCategory.ts +103 -0
  260. package/src/generated/spacedatastandards/plg/publicationState.d.ts +18 -0
  261. package/src/generated/spacedatastandards/plg/publicationState.d.ts.map +1 -0
  262. package/src/generated/spacedatastandards/plg/publicationState.js +20 -0
  263. package/src/generated/spacedatastandards/plg/purchaseTier.d.ts +18 -0
  264. package/src/generated/spacedatastandards/plg/purchaseTier.d.ts.map +1 -0
  265. package/src/generated/spacedatastandards/plg/purchaseTier.js +20 -0
  266. package/src/host/AGENTS.md +2 -2
  267. package/src/host/abi.js +53 -66
  268. package/src/host/browserHost.js +355 -8
  269. package/src/host/cpp/keyslotClient.hpp +231 -0
  270. package/src/host/cpp/secretsClient.hpp +583 -0
  271. package/src/host/hostcallWire.js +183 -0
  272. package/src/host/index.js +2 -0
  273. package/src/host/isomorphicLoader.js +44 -7
  274. package/src/host/nodeHost.js +227 -8
  275. package/src/host/sabHostcallChannel.js +206 -0
  276. package/src/host/timerDriver.js +203 -0
  277. package/src/host/wasiShim.js +41 -1
  278. package/src/host/wasiThreadBrowserWorker.mjs +48 -0
  279. package/src/host/wasiThreadHost.js +393 -0
  280. package/src/host/wasiThreadWorker.mjs +32 -0
  281. package/src/host/wasiThreadWorkerRuntime.js +93 -0
  282. package/src/http/index.js +339 -0
  283. package/src/index.d.ts +716 -10
  284. package/src/index.js +4 -0
  285. package/src/invoke/codec.js +1202 -128
  286. package/src/invoke/index.js +5 -1
  287. package/src/licensing/index.d.ts +2 -0
  288. package/src/licensing/index.js +2 -0
  289. package/src/licensing/records.js +287 -8
  290. package/src/manifest/codec.js +62 -14
  291. package/src/manifest/index.js +2 -0
  292. package/src/manifest/legacyToPlg.js +164 -25
  293. package/src/manifest/normalize.js +1 -0
  294. package/src/manifest/plgCodec.js +1303 -62
  295. package/src/manifest/typeRefs.js +162 -24
  296. package/src/runtime/compiledRuntimeAbi.js +47 -0
  297. package/src/runtime/compiledRuntimeAbi.json +33 -0
  298. package/src/runtime/index.d.ts +32 -0
  299. package/src/runtime/index.js +1 -0
  300. package/src/runtime-host/index.js +3 -0
  301. package/src/runtime-host/methodRegistry.js +55 -0
  302. package/src/standards/index.js +200 -56
  303. package/src/standards/sharedCatalog.js +16 -0
  304. package/src/testing/browserModuleHarness.js +604 -31
  305. package/src/testing/docker/wasmedge-parity.Dockerfile +39 -0
  306. package/src/testing/index.d.ts +151 -0
  307. package/src/testing/index.js +21 -0
  308. package/src/testing/native/wasmedge_emscripten_pthread_runner.c +25 -1
  309. package/src/testing/parityBrowserRunner.js +138 -0
  310. package/src/testing/parityHarness.js +616 -0
  311. package/src/testing/parityLanes.js +537 -0
  312. package/src/testing/processInvoke.js +29 -21
  313. package/src/testing/streamInvokeCodec.js +10 -175
  314. package/src/testing/wasmedgePin.json +6 -0
  315. package/src/testing/workerModuleHarness.js +242 -0
  316. package/src/testing/workerModuleHarnessWorker.js +176 -0
  317. package/src/transport/index.js +3 -0
  318. package/src/transport/pki.js +299 -11
  319. package/src/transport/records.js +16 -7
  320. package/src/utils/ecdsaDer.js +106 -0
  321. package/src/utils/wasmCrypto.js +0 -43
  322. package/templates/gpu-module/README.md +48 -0
  323. package/templates/gpu-module/include/space_data_gpu_abi.h +122 -0
  324. package/templates/gpu-module/manifest.json +84 -0
  325. package/schemas/PluginInvokeRequest.fbs +0 -18
  326. package/schemas/PluginInvokeResponse.fbs +0 -30
  327. package/schemas/spacedatastandards/PLG.fbs +0 -191
  328. package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts +0 -51
  329. package/src/generated/orbpro/invoke/plugin-invoke-request.d.ts.map +0 -1
  330. package/src/generated/orbpro/invoke/plugin-invoke-request.js +0 -131
  331. package/src/generated/orbpro/invoke/plugin-invoke-request.js.map +0 -1
  332. package/src/generated/orbpro/invoke/plugin-invoke-request.ts +0 -173
  333. package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts +0 -76
  334. package/src/generated/orbpro/invoke/plugin-invoke-response.d.ts.map +0 -1
  335. package/src/generated/orbpro/invoke/plugin-invoke-response.js +0 -184
  336. package/src/generated/orbpro/invoke/plugin-invoke-response.js.map +0 -1
  337. package/src/generated/orbpro/invoke/plugin-invoke-response.ts +0 -243
  338. package/src/generated/orbpro/invoke.d.ts +0 -3
  339. package/src/generated/orbpro/invoke.js +0 -5
  340. package/src/generated/spacedatastandards/plg/entry-function.js +0 -86
  341. package/src/generated/spacedatastandards/plg/entry-function.ts +0 -119
  342. package/src/generated/spacedatastandards/plg/index.js +0 -16
  343. package/src/generated/spacedatastandards/plg/index.ts +0 -11
  344. package/src/generated/spacedatastandards/plg/plg.js +0 -657
  345. package/src/generated/spacedatastandards/plg/plg.ts +0 -924
  346. package/src/generated/spacedatastandards/plg/plugin-capability.js +0 -66
  347. package/src/generated/spacedatastandards/plg/plugin-category.js +0 -15
  348. package/src/generated/spacedatastandards/plg/plugin-category.ts +0 -53
  349. package/src/generated/spacedatastandards/plg/plugin-dependency.js +0 -63
  350. package/src/generated/spacedatastandards/plg/plugin-dependency.ts +0 -86
  351. package/src/generated/spacedatastandards/plg/publication-state.js +0 -9
  352. package/src/generated/spacedatastandards/plg/purchase-tier.js +0 -9
  353. /package/src/generated/spacedatastandards/plg/{publication-state.ts → publicationState.ts} +0 -0
  354. /package/src/generated/spacedatastandards/plg/{purchase-tier.ts → purchaseTier.ts} +0 -0
@@ -1,9 +1,13 @@
1
- export * from "../generated/orbpro/invoke.js";
2
1
  export {
2
+ INVOKE_ARENA_ALIGNMENT,
3
+ assertAlignedInvokeBuffer,
4
+ createInvokeArenaLease,
3
5
  decodePluginInvokeRequest,
4
6
  decodePluginInvokeResponse,
5
7
  encodePluginInvokeRequest,
6
8
  encodePluginInvokeResponse,
9
+ forwardOutputFrameAsInput,
7
10
  normalizeInvokeSurfaceName,
8
11
  normalizeInvokeSurfaces,
12
+ writePluginInvokeRequestToArena,
9
13
  } from "./codec.js";
@@ -3,11 +3,13 @@ export {
3
3
  decodeLicensingChallengeMessage,
4
4
  decodeLicensingGrant,
5
5
  decodeLicensingProofMessage,
6
+ encodeUnsignedLicensingGrantForProviderSignature,
6
7
  encodeLicensingChallengeRequest,
7
8
  encodeLicensingProof,
8
9
  extractGrantModuleDescriptor,
9
10
  extractWrappedContentKey,
10
11
  validateLicensingGrant,
12
+ verifyLicensingGrantProviderSignature,
11
13
  } from "../index.js";
12
14
 
13
15
  export type {
@@ -3,9 +3,11 @@ export {
3
3
  decodeLicensingChallengeMessage,
4
4
  decodeLicensingGrant,
5
5
  decodeLicensingProofMessage,
6
+ encodeUnsignedLicensingGrantForProviderSignature,
6
7
  encodeLicensingChallengeRequest,
7
8
  encodeLicensingProof,
8
9
  extractGrantModuleDescriptor,
9
10
  extractWrappedContentKey,
10
11
  validateLicensingGrant,
12
+ verifyLicensingGrantProviderSignature,
11
13
  } from "./records.js";
@@ -17,6 +17,8 @@ import {
17
17
  } from "spacedatastandards.org/lib/js/LGR/main.js";
18
18
  import { LPF, licensingProofMessageType } from "spacedatastandards.org/lib/js/LPF/main.js";
19
19
 
20
+ const PROVIDER_SIGNATURE_LENGTH = 64;
21
+
20
22
  export class LicensingProtocolError extends Error {
21
23
  constructor(code, message) {
22
24
  super(message);
@@ -77,6 +79,7 @@ export function encodeLicensingChallengeRequest(options) {
77
79
  providerPeerIdOffset,
78
80
  0,
79
81
  0,
82
+ 0,
80
83
  );
81
84
  LCH.finishLCHBuffer(builder, root);
82
85
  return builder.asUint8Array();
@@ -437,6 +440,82 @@ export function validateLicensingGrant(grant, options = {}) {
437
440
  return grant;
438
441
  }
439
442
 
443
+ export function encodeUnsignedLicensingGrantForProviderSignature(grant) {
444
+ if (!grant || typeof grant !== "object") {
445
+ throw new TypeError("grant is required");
446
+ }
447
+
448
+ const rawBytes = cloneOptionalBytes(grant.rawBytes);
449
+ if (rawBytes.length > 0) {
450
+ const root = LGR.getRootAsLGR(new flatbuffers.ByteBuffer(rawBytes));
451
+ if (root.MESSAGE_TYPE() !== licensingGrantMessageType.Granted) {
452
+ throw new LicensingProtocolError(
453
+ "invalid_grant",
454
+ "expected granted licensing record",
455
+ );
456
+ }
457
+ return encodeUnsignedGrantFromRawRoot(root, rawBytes);
458
+ }
459
+
460
+ return encodeUnsignedGrantFromDecodedMessage(grant);
461
+ }
462
+
463
+ export async function verifyLicensingGrantProviderSignature(grant, options = {}) {
464
+ const providerSignature = cloneOptionalBytes(grant?.providerSignature);
465
+ if (providerSignature.length !== PROVIDER_SIGNATURE_LENGTH) {
466
+ throw new LicensingProtocolError(
467
+ "invalid_grant",
468
+ `licensing grant provider signature must be ${PROVIDER_SIGNATURE_LENGTH} bytes`,
469
+ );
470
+ }
471
+ if (providerSignature.every((byte) => byte === 0)) {
472
+ throw new LicensingProtocolError(
473
+ "invalid_grant",
474
+ "licensing grant provider signature must not be all zeroes",
475
+ );
476
+ }
477
+ if (
478
+ Number.isFinite(options.requestedAtMs) &&
479
+ grant.expiresAtMs > 0 &&
480
+ grant.expiresAtMs <= options.requestedAtMs
481
+ ) {
482
+ throw new LicensingProtocolError(
483
+ "grant_expired",
484
+ "licensing grant has expired",
485
+ );
486
+ }
487
+ const status = trimOptional(grant.grantStatus)?.toLowerCase();
488
+ if (status === "revoked") {
489
+ throw new LicensingProtocolError(
490
+ "grant_revoked",
491
+ "licensing grant has been revoked",
492
+ );
493
+ }
494
+ if (status && status !== "active" && status !== "granted") {
495
+ throw new LicensingProtocolError(
496
+ "grant_status_invalid",
497
+ `licensing grant status is not active: ${status}`,
498
+ );
499
+ }
500
+
501
+ if (typeof options.verify !== "function") {
502
+ throw new TypeError("verifyLicensingGrantProviderSignature requires verify.");
503
+ }
504
+ const unsignedGrant = encodeUnsignedLicensingGrantForProviderSignature(grant);
505
+ const signatureValid = await options.verify(
506
+ cloneOptionalBytes(grant.grantVerifierPublicKey),
507
+ unsignedGrant,
508
+ providerSignature,
509
+ );
510
+ if (!signatureValid) {
511
+ throw new LicensingProtocolError(
512
+ "invalid_grant_signature",
513
+ "licensing grant provider signature verification failed",
514
+ );
515
+ }
516
+ return grant;
517
+ }
518
+
440
519
  export function extractGrantModuleDescriptor(grant) {
441
520
  if (!grant?.moduleDescriptor) {
442
521
  throw new LicensingProtocolError(
@@ -447,6 +526,153 @@ export function extractGrantModuleDescriptor(grant) {
447
526
  return grant.moduleDescriptor;
448
527
  }
449
528
 
529
+ function encodeUnsignedGrantFromRawRoot(root, rawBytes) {
530
+ const providerSignature = root.providerSignatureArray();
531
+ if (!providerSignature || providerSignature.length !== PROVIDER_SIGNATURE_LENGTH) {
532
+ throw new LicensingProtocolError(
533
+ "invalid_grant",
534
+ `licensing grant provider signature must be ${PROVIDER_SIGNATURE_LENGTH} bytes`,
535
+ );
536
+ }
537
+
538
+ const signingBytes = cloneBytes(rawBytes);
539
+ const signingRoot = LGR.getRootAsLGR(new flatbuffers.ByteBuffer(signingBytes));
540
+ signingRoot.providerSignatureArray().fill(0);
541
+ return signingBytes;
542
+ }
543
+
544
+ function encodeUnsignedGrantFromDecodedMessage(grant) {
545
+ const builder = new flatbuffers.Builder(2048);
546
+ const requestIdOffset = builder.createString(grant.reqId || "");
547
+ const moduleIdOffset = builder.createString(grant.moduleId || "");
548
+ const moduleVersionOffset = createOptionalString(builder, grant.moduleVersion);
549
+ const requesterPeerIdOffset = createOptionalString(builder, grant.requesterPeerId);
550
+ const requesterXpubOffset = createOptionalString(builder, grant.requesterXpub);
551
+ const requestedDomainOffset = createOptionalString(builder, grant.requestedDomain);
552
+ const grantedDomainOffset = createOptionalString(builder, grant.grantedDomain);
553
+ const requiredScopeOffset = createOptionalString(builder, grant.requiredScope);
554
+ const grantStatusOffset = createOptionalString(builder, grant.grantStatus);
555
+ const denialReasonOffset = createOptionalString(builder, grant.denialReason);
556
+ const capabilityTokenOffset = createOptionalVector(
557
+ builder,
558
+ LGR.createCapabilityTokenVector,
559
+ grant.capabilityToken,
560
+ );
561
+ const moduleDescriptorOffset = grant.moduleDescriptor
562
+ ? encodeDecodedModuleDescriptor(builder, grant.moduleDescriptor)
563
+ : 0;
564
+ const wrappedHeaderOffset = grant.wrappedContentKey?.header
565
+ ? encodeDecodedWrappedHeader(builder, grant.wrappedContentKey.header)
566
+ : 0;
567
+ const wrappedPayloadOffset = createOptionalVector(
568
+ builder,
569
+ LGR.createWrappedContentKeyPayloadVector,
570
+ grant.wrappedContentKey?.encryptedPayload,
571
+ );
572
+ const verifierPubkeyOffset = createOptionalVector(
573
+ builder,
574
+ LGR.createGrantVerifierPubkeyVector,
575
+ grant.grantVerifierPublicKey,
576
+ );
577
+ const providerSignatureOffset = LGR.createProviderSignatureVector(
578
+ builder,
579
+ new Uint8Array(PROVIDER_SIGNATURE_LENGTH),
580
+ );
581
+
582
+ LGR.startLGR(builder);
583
+ LGR.addMessageType(builder, licensingGrantMessageType.Granted);
584
+ LGR.addRequestId(builder, requestIdOffset);
585
+ LGR.addModuleId(builder, moduleIdOffset);
586
+ if (moduleVersionOffset !== 0) LGR.addModuleVersion(builder, moduleVersionOffset);
587
+ if (requesterPeerIdOffset !== 0) LGR.addRequesterPeerId(builder, requesterPeerIdOffset);
588
+ if (requesterXpubOffset !== 0) LGR.addRequesterXpub(builder, requesterXpubOffset);
589
+ if (requestedDomainOffset !== 0) LGR.addRequestedDomain(builder, requestedDomainOffset);
590
+ LGR.addRequestedTimeoutMs(builder, BigInt(grant.requestedTimeoutMs ?? 0));
591
+ if (grantedDomainOffset !== 0) LGR.addGrantedDomain(builder, grantedDomainOffset);
592
+ LGR.addGrantedTimeoutMs(builder, BigInt(grant.grantedTimeoutMs ?? 0));
593
+ LGR.addExpiresAt(builder, BigInt(grant.expiresAtMs ?? 0));
594
+ if (requiredScopeOffset !== 0) LGR.addRequiredScope(builder, requiredScopeOffset);
595
+ if (grantStatusOffset !== 0) LGR.addGrantStatus(builder, grantStatusOffset);
596
+ if (denialReasonOffset !== 0) LGR.addDenialReason(builder, denialReasonOffset);
597
+ if (capabilityTokenOffset !== 0) LGR.addCapabilityToken(builder, capabilityTokenOffset);
598
+ if (moduleDescriptorOffset !== 0) LGR.addModuleDescriptor(builder, moduleDescriptorOffset);
599
+ if (wrappedHeaderOffset !== 0) LGR.addWrappedContentKeyHeader(builder, wrappedHeaderOffset);
600
+ if (wrappedPayloadOffset !== 0) LGR.addWrappedContentKeyPayload(builder, wrappedPayloadOffset);
601
+ if (verifierPubkeyOffset !== 0) LGR.addGrantVerifierPubkey(builder, verifierPubkeyOffset);
602
+ LGR.addProviderSignature(builder, providerSignatureOffset);
603
+ const rootOffset = LGR.endLGR(builder);
604
+ LGR.finishLGRBuffer(builder, rootOffset);
605
+ return builder.asUint8Array();
606
+ }
607
+
608
+ function encodeDecodedModuleDescriptor(builder, descriptor) {
609
+ const pluginIdOffset = builder.createString(descriptor.moduleId || "");
610
+ const nameOffset = createOptionalString(builder, descriptor.moduleId);
611
+ const versionOffset = createOptionalString(builder, descriptor.moduleVersion);
612
+ const wasmHashOffset = createOptionalVector(builder, PLG.createWasmHashVector, descriptor.contentHash);
613
+ const wasmCidOffset = createOptionalString(builder, descriptor.cid);
614
+ const requiredScopeOffset = createOptionalString(builder, descriptor.requiredScope);
615
+ const keyIdOffset = createOptionalString(builder, descriptor.keyId);
616
+ const allowedXpubsOffset = createOptionalStringVector(
617
+ builder,
618
+ PLG.createAllowedXpubsVector,
619
+ descriptor.allowedXpubs ?? [],
620
+ );
621
+
622
+ PLG.startPLG(builder);
623
+ PLG.addPluginId(builder, pluginIdOffset);
624
+ if (nameOffset !== 0) PLG.addName(builder, nameOffset);
625
+ if (versionOffset !== 0) PLG.addVersion(builder, versionOffset);
626
+ if (wasmHashOffset !== 0) PLG.addWasmHash(builder, wasmHashOffset);
627
+ PLG.addWasmSize(builder, BigInt(descriptor.sizeBytes ?? 0));
628
+ if (wasmCidOffset !== 0) PLG.addWasmCid(builder, wasmCidOffset);
629
+ PLG.addEncrypted(builder, Boolean(descriptor.encrypted));
630
+ if (requiredScopeOffset !== 0) PLG.addRequiredScope(builder, requiredScopeOffset);
631
+ if (keyIdOffset !== 0) PLG.addKeyId(builder, keyIdOffset);
632
+ if (allowedXpubsOffset !== 0) PLG.addAllowedXpubs(builder, allowedXpubsOffset);
633
+ PLG.addMaxGrantTimeoutMs(builder, BigInt(descriptor.maxGrantTimeoutMs ?? 0));
634
+ return PLG.endPLG(builder);
635
+ }
636
+
637
+ function encodeDecodedWrappedHeader(builder, header) {
638
+ const ephemeralPublicKeyOffset = createOptionalVector(
639
+ builder,
640
+ ENC.createEphemeralPublicKeyVector,
641
+ header.ephemeralPublicKey,
642
+ );
643
+ const nonceStartOffset = createOptionalVector(
644
+ builder,
645
+ ENC.createNonceStartVector,
646
+ header.nonceStart,
647
+ );
648
+ const recipientKeyIdOffset = createOptionalVector(
649
+ builder,
650
+ ENC.createRecipientKeyIdVector,
651
+ header.recipientKeyId,
652
+ );
653
+ const contextOffset = createOptionalString(builder, header.context);
654
+ const schemaHashOffset = createOptionalVector(
655
+ builder,
656
+ ENC.createSchemaHashVector,
657
+ header.schemaHash,
658
+ );
659
+ const rootTypeOffset = createOptionalString(builder, header.rootType);
660
+ return ENC.createENC(
661
+ builder,
662
+ Number(header.version ?? 1),
663
+ normalizeKeyExchange(header.keyExchange),
664
+ normalizeSymmetricAlgorithm(header.symmetric),
665
+ normalizeKeyDerivation(header.keyDerivation),
666
+ ephemeralPublicKeyOffset,
667
+ nonceStartOffset,
668
+ recipientKeyIdOffset,
669
+ contextOffset,
670
+ schemaHashOffset,
671
+ rootTypeOffset,
672
+ BigInt(header.timestamp ?? 0),
673
+ );
674
+ }
675
+
450
676
  export function extractWrappedContentKey(grant) {
451
677
  if (!grant?.wrappedContentKey) {
452
678
  throw new LicensingProtocolError(
@@ -502,7 +728,7 @@ function decodeGrantModuleDescriptor(moduleDescriptor) {
502
728
  moduleVersion: trimOptional(moduleDescriptor.VERSION()),
503
729
  requiredScope: trimOptional(moduleDescriptor.REQUIRED_SCOPE()),
504
730
  keyId: trimOptional(moduleDescriptor.KEY_ID()),
505
- allowedDomains: readAllowedDomains(moduleDescriptor),
731
+ allowedXpubs: readAllowedXpubs(moduleDescriptor),
506
732
  maxGrantTimeoutMs: numberFromUint64(
507
733
  moduleDescriptor.MAX_GRANT_TIMEOUT_MS(),
508
734
  "moduleDescriptor.MAX_GRANT_TIMEOUT_MS",
@@ -606,6 +832,19 @@ function createOptionalString(builder, value) {
606
832
  return normalized ? builder.createString(normalized) : 0;
607
833
  }
608
834
 
835
+ function createOptionalVector(builder, createVector, value) {
836
+ const bytes = cloneOptionalBytes(value);
837
+ return bytes.length > 0 ? createVector.call(LGR, builder, bytes) : 0;
838
+ }
839
+
840
+ function createOptionalStringVector(builder, createVector, values) {
841
+ const offsets = (values ?? [])
842
+ .map((value) => trimOptional(value))
843
+ .filter(Boolean)
844
+ .map((value) => builder.createString(value));
845
+ return offsets.length > 0 ? createVector.call(PLG, builder, offsets) : 0;
846
+ }
847
+
609
848
  function toUint8Array(value, label) {
610
849
  if (value instanceof Uint8Array) {
611
850
  return value;
@@ -681,6 +920,46 @@ function normalizeProtocolCode(value, fallback) {
681
920
  return normalized || fallback;
682
921
  }
683
922
 
923
+ function normalizeKeyExchange(value) {
924
+ if (typeof value === "number") {
925
+ return value;
926
+ }
927
+ switch (String(value ?? "X25519").trim().toUpperCase()) {
928
+ case "X25519":
929
+ return KeyExchange.X25519;
930
+ case "SECP256K1":
931
+ return KeyExchange.Secp256k1;
932
+ case "P256":
933
+ return KeyExchange.P256;
934
+ default:
935
+ return KeyExchange.X25519;
936
+ }
937
+ }
938
+
939
+ function normalizeSymmetricAlgorithm(value) {
940
+ if (typeof value === "number") {
941
+ return value;
942
+ }
943
+ switch (String(value ?? "AES_256_CTR").trim().toUpperCase()) {
944
+ case "AES_256_CTR":
945
+ return SymmetricAlgo.AES_256_CTR;
946
+ default:
947
+ return SymmetricAlgo.AES_256_CTR;
948
+ }
949
+ }
950
+
951
+ function normalizeKeyDerivation(value) {
952
+ if (typeof value === "number") {
953
+ return value;
954
+ }
955
+ switch (String(value ?? "HKDF_SHA256").trim().toUpperCase()) {
956
+ case "HKDF_SHA256":
957
+ return KDF.HKDF_SHA256;
958
+ default:
959
+ return KDF.HKDF_SHA256;
960
+ }
961
+ }
962
+
684
963
  function challengeMessageTypeName(value) {
685
964
  switch (value) {
686
965
  case licensingChallengeMessageType.Request:
@@ -839,15 +1118,15 @@ function bytesToHex(bytes) {
839
1118
  );
840
1119
  }
841
1120
 
842
- function readAllowedDomains(descriptor) {
843
- const allowedDomains = [];
844
- for (let index = 0; index < descriptor.allowedDomainsLength(); index += 1) {
845
- const domain = descriptor.ALLOWED_DOMAINS(index);
846
- if (domain) {
847
- allowedDomains.push(domain);
1121
+ function readAllowedXpubs(descriptor) {
1122
+ const allowedXpubs = [];
1123
+ for (let index = 0; index < descriptor.allowedXpubsLength(); index += 1) {
1124
+ const xpub = descriptor.ALLOWED_XPUBS(index);
1125
+ if (xpub) {
1126
+ allowedXpubs.push(xpub);
848
1127
  }
849
1128
  }
850
- return allowedDomains;
1129
+ return allowedXpubs;
851
1130
  }
852
1131
 
853
1132
  export {
@@ -6,12 +6,11 @@ import {
6
6
  HostCapabilityT,
7
7
  PluginFamily,
8
8
  PluginManifest,
9
- PluginManifestT,
10
9
  } from "../generated/orbpro/manifest.js";
11
10
  import { normalizeInvokeSurfaceName } from "../invoke/codec.js";
12
11
  import { toUint8Array } from "../runtime/bufferLike.js";
13
- import { toEmbeddedPluginManifest } from "./normalize.js";
14
- import { decodePlgManifest, isPlgManifestBuffer } from "./plgCodec.js";
12
+ import { legacyManifestToPlg } from "./legacyToPlg.js";
13
+ import { decodePlgManifest, encodePlgManifest, isPlgManifestBuffer } from "./plgCodec.js";
15
14
 
16
15
  function toByteBuffer(data) {
17
16
  if (data instanceof flatbuffers.ByteBuffer) {
@@ -45,6 +44,34 @@ function normalizePluginFamilyName(value) {
45
44
  return normalizeEnumName(value, { separator: "_" });
46
45
  }
47
46
 
47
+ function normalizePlgPluginFamilyName(value) {
48
+ if (typeof value === "number") {
49
+ switch (value) {
50
+ case 0:
51
+ return "sensor";
52
+ case 1:
53
+ return "propagator";
54
+ case 2:
55
+ return "renderer";
56
+ case 4:
57
+ return "data_source";
58
+ case 5:
59
+ return "ew";
60
+ case 6:
61
+ return "comms";
62
+ case 7:
63
+ return "physics";
64
+ case 8:
65
+ return "shader";
66
+ case 3:
67
+ default:
68
+ return "analysis";
69
+ }
70
+ }
71
+ const normalized = normalizeEnumName(value, { separator: "_" });
72
+ return normalized === "datasource" ? "data_source" : normalized;
73
+ }
74
+
48
75
  function normalizeDrainPolicyName(value) {
49
76
  if (typeof value === "number" && typeof DrainPolicy[value] === "string") {
50
77
  return normalizeEnumName(DrainPolicy[value], { separator: "-" });
@@ -156,15 +183,42 @@ function methodFromPlgEntry(entry = {}) {
156
183
  }
157
184
 
158
185
  function normalizeDecodedPlgManifest(manifest = {}) {
159
- const methods = Array.isArray(manifest.entryFunctions)
186
+ const methods = Array.isArray(manifest.methods) && manifest.methods.length > 0
187
+ ? manifest.methods.map((method) => normalizeDecodedMethod(method))
188
+ : Array.isArray(manifest.entryFunctions)
160
189
  ? manifest.entryFunctions.map((entry) => methodFromPlgEntry(entry)).filter(Boolean)
161
190
  : [];
191
+ const hostCapabilities = Array.isArray(manifest.hostCapabilities)
192
+ ? manifest.hostCapabilities
193
+ : [];
194
+ const capabilities = hostCapabilities.length > 0
195
+ ? hostCapabilities.map((entry) => {
196
+ if (!entry || typeof entry !== "object") {
197
+ return null;
198
+ }
199
+ if (entry.scope || entry.description || entry.required === false) {
200
+ return entry;
201
+ }
202
+ return entry.capability;
203
+ }).filter(Boolean)
204
+ : Array.isArray(manifest.capabilities)
205
+ ? manifest.capabilities.map((entry) => {
206
+ if (typeof entry === "string") {
207
+ return entry;
208
+ }
209
+ if (entry?.name && entry.required !== false && !entry.version) {
210
+ return entry.name;
211
+ }
212
+ return entry;
213
+ })
214
+ : [];
162
215
  return {
163
216
  ...manifest,
217
+ pluginFamily:
218
+ manifest.pluginFamily ?? normalizePlgPluginFamilyName(manifest.pluginType),
164
219
  methods,
165
- capabilities: Array.isArray(manifest.capabilities)
166
- ? manifest.capabilities
167
- : [],
220
+ capabilities,
221
+ hostCapabilities,
168
222
  invokeSurfaces: Array.isArray(manifest.invokeSurfaces)
169
223
  ? manifest.invokeSurfaces
170
224
  .map((value) => normalizeInvokeSurfaceName(value))
@@ -202,11 +256,5 @@ export function decodePluginManifest(data) {
202
256
  }
203
257
 
204
258
  export function encodePluginManifest(manifest) {
205
- const value =
206
- manifest instanceof PluginManifestT
207
- ? manifest
208
- : toEmbeddedPluginManifest(manifest).manifest;
209
- const builder = new flatbuffers.Builder(1024);
210
- PluginManifest.finishPluginManifestBuffer(builder, value.pack(builder));
211
- return builder.asUint8Array();
259
+ return encodePlgManifest(legacyManifestToPlg(manifest));
212
260
  }
@@ -14,9 +14,11 @@ export {
14
14
  export { legacyManifestToPlg } from "./legacyToPlg.js";
15
15
  export { toEmbeddedPluginManifest } from "./normalize.js";
16
16
  export {
17
+ alignedPayloadLayoutsCompatible,
17
18
  clonePayloadTypeRef,
18
19
  getPayloadTypeWireFormat,
19
20
  normalizePayloadWireFormatName,
21
+ payloadSchemaIdentitiesEqual,
20
22
  payloadTypeRefsMatch,
21
23
  selectPreferredPayloadTypeRef,
22
24
  } from "./typeRefs.js";