space-data-module-sdk 0.8.4 → 0.8.6

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 +725 -11
  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 +352 -14
  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
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Publication visibility for the plugin listing
3
+ */
4
+ export declare enum publicationState {
5
+ /**
6
+ * Discoverable in public storefront listings
7
+ */
8
+ Public = 0,
9
+ /**
10
+ * Addressable directly but hidden from public browse surfaces
11
+ */
12
+ Unlisted = 1,
13
+ /**
14
+ * No longer offered for new installs or purchases
15
+ */
16
+ Retired = 2
17
+ }
18
+ //# sourceMappingURL=publicationState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicationState.d.ts","sourceRoot":"","sources":["../../../ts/PLG/publicationState.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,gBAAgB;IAC1B;;OAEG;IACH,MAAM,IAAI;IAEV;;OAEG;IACH,QAAQ,IAAI;IAEZ;;OAEG;IACH,OAAO,IAAI;CACZ"}
@@ -0,0 +1,20 @@
1
+ // automatically generated by the FlatBuffers compiler, do not modify
2
+ /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
3
+ /**
4
+ * Publication visibility for the plugin listing
5
+ */
6
+ export var publicationState;
7
+ (function (publicationState) {
8
+ /**
9
+ * Discoverable in public storefront listings
10
+ */
11
+ publicationState[publicationState["Public"] = 0] = "Public";
12
+ /**
13
+ * Addressable directly but hidden from public browse surfaces
14
+ */
15
+ publicationState[publicationState["Unlisted"] = 1] = "Unlisted";
16
+ /**
17
+ * No longer offered for new installs or purchases
18
+ */
19
+ publicationState[publicationState["Retired"] = 2] = "Retired";
20
+ })(publicationState || (publicationState = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Storefront payment model for the plugin listing
3
+ */
4
+ export declare enum purchaseTier {
5
+ /**
6
+ * No payment required
7
+ */
8
+ Free = 0,
9
+ /**
10
+ * Single one-time purchase
11
+ */
12
+ OneTime = 1,
13
+ /**
14
+ * Recurring subscription purchase
15
+ */
16
+ Subscription = 2
17
+ }
18
+ //# sourceMappingURL=purchaseTier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purchaseTier.d.ts","sourceRoot":"","sources":["../../../ts/PLG/purchaseTier.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,oBAAY,YAAY;IACtB;;OAEG;IACH,IAAI,IAAI;IAER;;OAEG;IACH,OAAO,IAAI;IAEX;;OAEG;IACH,YAAY,IAAI;CACjB"}
@@ -0,0 +1,20 @@
1
+ // automatically generated by the FlatBuffers compiler, do not modify
2
+ /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */
3
+ /**
4
+ * Storefront payment model for the plugin listing
5
+ */
6
+ export var purchaseTier;
7
+ (function (purchaseTier) {
8
+ /**
9
+ * No payment required
10
+ */
11
+ purchaseTier[purchaseTier["Free"] = 0] = "Free";
12
+ /**
13
+ * Single one-time purchase
14
+ */
15
+ purchaseTier[purchaseTier["OneTime"] = 1] = "OneTime";
16
+ /**
17
+ * Recurring subscription purchase
18
+ */
19
+ purchaseTier[purchaseTier["Subscription"] = 2] = "Subscription";
20
+ })(purchaseTier || (purchaseTier = {}));
@@ -5,7 +5,7 @@ host/runtime boundary that compliant modules can rely on.
5
5
 
6
6
  ## What Authors Should Take From This Directory
7
7
 
8
- - The portable shared path is standalone WASI, optionally plus `sdn_host`.
8
+ - The portable shared path is standalone WASI, optionally plus `space_data_module_host`.
9
9
  - Browser helpers here are host-side shims and harnesses, not proof that raw
10
10
  WasmEdge-native guest imports are browser-portable.
11
11
  - The isomorphic loader and browser harness show how the same artifact is meant
@@ -14,7 +14,7 @@ host/runtime boundary that compliant modules can rely on.
14
14
  ## Host Rules Authors Should Follow
15
15
 
16
16
  - Shared browser/WasmEdge artifacts must stay within standalone WASI plus the
17
- optional `sdn_host` bridge. Raw WasmEdge-native extension imports are not
17
+ optional `space_data_module_host` bridge. Raw WasmEdge-native extension imports are not
18
18
  browser-isomorphic.
19
19
  - Browser shims are host-side replacements, not a promise that the guest can
20
20
  import WasmEdge-native sockets, TLS, or filesystem extensions directly.
package/src/host/abi.js CHANGED
@@ -1,9 +1,13 @@
1
- import { bytesToBase64 } from "../utils/encoding.js";
1
+ import {
2
+ attachBinaryValues,
3
+ decodeHostcallEnvelope,
4
+ detachBinaryValues,
5
+ encodeHostcallEnvelope,
6
+ } from "./hostcallWire.js";
2
7
 
3
8
  const textDecoder = new TextDecoder();
4
- const textEncoder = new TextEncoder();
5
9
 
6
- export const DEFAULT_HOSTCALL_IMPORT_MODULE = "sdn_host";
10
+ export const DEFAULT_HOSTCALL_IMPORT_MODULE = "space_data_module_host";
7
11
  export const HOSTCALL_STATUS_OK = 0;
8
12
  export const HOSTCALL_STATUS_ERROR = 1;
9
13
 
@@ -152,15 +156,12 @@ function writeMemoryBytes(getMemory, ptr, bytes, maxLen) {
152
156
  return bytesToCopy;
153
157
  }
154
158
 
155
- function parseJsonPayload(bytes) {
159
+ function parseHostcallParams(bytes) {
156
160
  if (bytes.length === 0) {
157
161
  return null;
158
162
  }
159
- const text = textDecoder.decode(bytes);
160
- if (!text.trim()) {
161
- return null;
162
- }
163
- return JSON.parse(text);
163
+ const { meta, segments } = decodeHostcallEnvelope(bytes);
164
+ return attachBinaryValues(meta, segments);
164
165
  }
165
166
 
166
167
  function serializeHostcallError(error, operation = null) {
@@ -190,47 +191,6 @@ function assertSyncHostcallResult(value, operation) {
190
191
  return value;
191
192
  }
192
193
 
193
- function encodeHostcallValue(value) {
194
- if (value === undefined) {
195
- return undefined;
196
- }
197
- if (
198
- value instanceof Uint8Array ||
199
- value instanceof ArrayBuffer ||
200
- ArrayBuffer.isView(value)
201
- ) {
202
- const bytes =
203
- value instanceof Uint8Array
204
- ? value
205
- : new Uint8Array(
206
- value.buffer ?? value,
207
- value.byteOffset ?? 0,
208
- value.byteLength ?? value.byteLength,
209
- );
210
- return {
211
- __type: "bytes",
212
- base64: bytesToBase64(bytes),
213
- };
214
- }
215
- if (value instanceof Date) {
216
- return value.toISOString();
217
- }
218
- if (typeof value === "bigint") {
219
- return value.toString();
220
- }
221
- if (Array.isArray(value)) {
222
- return value.map((entry) => encodeHostcallValue(entry));
223
- }
224
- if (value && typeof value === "object") {
225
- return Object.fromEntries(
226
- Object.entries(value)
227
- .filter(([, entry]) => entry !== undefined)
228
- .map(([key, entry]) => [key, encodeHostcallValue(entry)]),
229
- );
230
- }
231
- return value;
232
- }
233
-
234
194
  export function dispatchHostSyncOperation(host, operation, params = null) {
235
195
  const normalized = assertNonEmptyString(operation, "Hostcall operation");
236
196
  switch (normalized) {
@@ -300,6 +260,25 @@ export function dispatchHostSyncOperation(host, operation, params = null) {
300
260
  ),
301
261
  normalized,
302
262
  );
263
+ case "crypto.secp256k1.publicKeyFromPrivate":
264
+ return assertSyncHostcallResult(
265
+ host.crypto.secp256k1.publicKeyFromPrivate(params?.privateKey),
266
+ normalized,
267
+ );
268
+ case "crypto.secp256k1.sign":
269
+ return assertSyncHostcallResult(
270
+ host.crypto.secp256k1.sign(params?.message, params?.privateKey),
271
+ normalized,
272
+ );
273
+ case "crypto.secp256k1.verify":
274
+ return assertSyncHostcallResult(
275
+ host.crypto.secp256k1.verify(
276
+ params?.message,
277
+ params?.signature,
278
+ params?.publicKey,
279
+ ),
280
+ normalized,
281
+ );
303
282
  case "crypto.ed25519.publicKeyFromSeed":
304
283
  return assertSyncHostcallResult(
305
284
  host.crypto.ed25519.publicKeyFromSeed(params?.seed),
@@ -379,10 +358,18 @@ export function createAsyncHostDispatcher(host) {
379
358
  dispatchHostOperation(host, operation, params);
380
359
  }
381
360
 
382
- export function createJsonHostcallBridge(options = {}) {
361
+ /**
362
+ * Synchronous hostcall bridge using the binary hostcall wire format.
363
+ *
364
+ * Modules import `space_data_module_host.call` with a binary envelope
365
+ * payload (length-prefixed meta JSON + raw byte segments — see
366
+ * hostcallWire.js). Binary values never round-trip through base64/JSON;
367
+ * the JSON meta document carries only small control metadata.
368
+ */
369
+ export function createHostcallBridge(options = {}) {
383
370
  const dispatch = options.dispatch;
384
371
  if (typeof dispatch !== "function") {
385
- throw new TypeError("createJsonHostcallBridge requires a dispatch function.");
372
+ throw new TypeError("createHostcallBridge requires a dispatch function.");
386
373
  }
387
374
 
388
375
  const getMemory = options.getMemory;
@@ -392,17 +379,19 @@ export function createJsonHostcallBridge(options = {}) {
392
379
  );
393
380
  const maxRequestBytes = Number.isInteger(options.maxRequestBytes)
394
381
  ? options.maxRequestBytes
395
- : 64 * 1024;
382
+ : 16 * 1024 * 1024;
396
383
  const maxResponseBytes = Number.isInteger(options.maxResponseBytes)
397
384
  ? options.maxResponseBytes
398
- : 1024 * 1024;
385
+ : 64 * 1024 * 1024;
399
386
 
400
387
  let lastStatusCode = HOSTCALL_STATUS_OK;
401
388
  let lastEnvelope = { ok: true, result: null };
402
- let lastResponseBytes = textEncoder.encode(JSON.stringify(lastEnvelope));
389
+ let lastResponseBytes = encodeHostcallEnvelope(lastEnvelope, []);
403
390
 
404
391
  function setEnvelope(statusCode, envelope) {
405
- const encoded = textEncoder.encode(JSON.stringify(envelope));
392
+ const segments = [];
393
+ const meta = detachBinaryValues(envelope, segments);
394
+ const encoded = encodeHostcallEnvelope(meta, segments);
406
395
  if (encoded.length > maxResponseBytes) {
407
396
  throw new Error(
408
397
  `Hostcall response exceeds ${maxResponseBytes} byte limit.`,
@@ -413,7 +402,7 @@ export function createJsonHostcallBridge(options = {}) {
413
402
  lastResponseBytes = encoded;
414
403
  }
415
404
 
416
- function callJson(operationPtr, operationLen, payloadPtr, payloadLen) {
405
+ function call(operationPtr, operationLen, payloadPtr, payloadLen) {
417
406
  try {
418
407
  if (payloadLen > maxRequestBytes) {
419
408
  throw new Error(
@@ -423,7 +412,7 @@ export function createJsonHostcallBridge(options = {}) {
423
412
  const operation = textDecoder.decode(
424
413
  readMemoryBytes(getMemory, operationPtr, operationLen, "Operation"),
425
414
  );
426
- const params = parseJsonPayload(
415
+ const params = parseHostcallParams(
427
416
  readMemoryBytes(getMemory, payloadPtr, payloadLen, "Payload"),
428
417
  );
429
418
  const result = dispatch(operation, params);
@@ -434,7 +423,7 @@ export function createJsonHostcallBridge(options = {}) {
434
423
  }
435
424
  setEnvelope(HOSTCALL_STATUS_OK, {
436
425
  ok: true,
437
- result: encodeHostcallValue(result),
426
+ result: result === undefined ? null : result,
438
427
  });
439
428
  return HOSTCALL_STATUS_OK;
440
429
  } catch (error) {
@@ -477,7 +466,7 @@ export function createJsonHostcallBridge(options = {}) {
477
466
  moduleName,
478
467
  imports: {
479
468
  [moduleName]: {
480
- call_json: callJson,
469
+ call,
481
470
  response_len: responseLen,
482
471
  read_response: readResponse,
483
472
  clear_response: clearResponse,
@@ -490,11 +479,9 @@ export function createJsonHostcallBridge(options = {}) {
490
479
  getLastResponseBytes() {
491
480
  return new Uint8Array(lastResponseBytes);
492
481
  },
493
- getLastResponseText() {
494
- return textDecoder.decode(lastResponseBytes);
495
- },
496
- getLastResponseJson() {
497
- return JSON.parse(this.getLastResponseText());
482
+ getLastResponseEnvelope() {
483
+ const { meta, segments } = decodeHostcallEnvelope(lastResponseBytes);
484
+ return attachBinaryValues(meta, segments);
498
485
  },
499
486
  };
500
487
  }
@@ -507,7 +494,7 @@ export function createNodeHostSyncHostcallBridge(options = {}) {
507
494
  );
508
495
  }
509
496
 
510
- return createJsonHostcallBridge({
497
+ return createHostcallBridge({
511
498
  ...options,
512
499
  dispatch: createNodeHostSyncDispatcher(host),
513
500
  });