space-data-module-sdk 0.8.3 → 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 +26 -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
package/src/index.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ import type { ModuleDeploymentPlan } from "./deployment/index.js";
2
+ import type {
3
+ HarnessInputFrame,
4
+ ModuleHarness,
5
+ RuntimeHostTestModuleDefinition,
6
+ } from "./testing/index.js";
7
+
1
8
  // --- Manifest ---
2
9
 
3
10
  export type PayloadWireFormat = "flatbuffer" | "aligned-binary";
@@ -12,6 +19,7 @@ export type ProtocolRoleName = "handle" | "dial" | "both";
12
19
  export interface PayloadTypeRef {
13
20
  schemaName?: string;
14
21
  fileIdentifier?: string;
22
+ schemaVersion?: string;
15
23
  schemaHash?: string | number[] | Uint8Array;
16
24
  acceptsAnyFlatbuffer?: boolean;
17
25
  wireFormat?: PayloadWireFormat;
@@ -38,6 +46,16 @@ export function payloadTypeRefsMatch(
38
46
  actualTypeRef?: PayloadTypeRef | null,
39
47
  ): boolean;
40
48
 
49
+ export function payloadSchemaIdentitiesEqual(
50
+ leftTypeRef?: PayloadTypeRef | null,
51
+ rightTypeRef?: PayloadTypeRef | null,
52
+ ): boolean;
53
+
54
+ export function alignedPayloadLayoutsCompatible(
55
+ leftTypeRef?: PayloadTypeRef | null,
56
+ rightTypeRef?: PayloadTypeRef | null,
57
+ ): boolean;
58
+
41
59
  export function selectPreferredPayloadTypeRef(
42
60
  port?: { acceptedTypeSets?: Array<{ allowedTypes?: PayloadTypeRef[] }> } | null,
43
61
  options?: { preferredWireFormat?: PayloadWireFormat | string | null },
@@ -48,6 +66,7 @@ export type AllowedType = PayloadTypeRef;
48
66
  export interface AcceptedTypeSet {
49
67
  setId: string;
50
68
  allowedTypes: PayloadTypeRef[];
69
+ allowedWireFormats?: PayloadWireFormat[];
51
70
  }
52
71
 
53
72
  export interface PortManifest {
@@ -114,6 +133,39 @@ export interface BuildArtifact {
114
133
  entrySymbol?: string | null;
115
134
  }
116
135
 
136
+ export interface PluginFlowNode {
137
+ nodeId: string;
138
+ pluginId: string;
139
+ methodId?: string | null;
140
+ kind?: string | null;
141
+ dispatchModel?: string | null;
142
+ config?: Uint8Array | number[];
143
+ uiX?: number;
144
+ uiY?: number;
145
+ }
146
+
147
+ export interface PluginFlowEdge {
148
+ edgeId?: string | null;
149
+ fromNodeId: string;
150
+ fromPortId: string;
151
+ toNodeId: string;
152
+ toPortId: string;
153
+ }
154
+
155
+ export interface PluginFlowTrigger {
156
+ triggerId: string;
157
+ kind?: string | null;
158
+ source?: string | null;
159
+ defaultIntervalMs?: number | bigint;
160
+ httpPath?: string | null;
161
+ }
162
+
163
+ export interface PluginFlowTriggerBinding {
164
+ triggerId: string;
165
+ targetNodeId: string;
166
+ targetPortId: string;
167
+ }
168
+
117
169
  export interface PluginManifest {
118
170
  pluginId: string;
119
171
  name: string;
@@ -128,6 +180,10 @@ export interface PluginManifest {
128
180
  protocols?: ProtocolSpec[];
129
181
  schemasUsed?: PayloadTypeRef[];
130
182
  buildArtifacts?: BuildArtifact[];
183
+ flowNodes?: PluginFlowNode[];
184
+ flowEdges?: PluginFlowEdge[];
185
+ flowTriggers?: PluginFlowTrigger[];
186
+ flowTriggerBindings?: PluginFlowTriggerBinding[];
131
187
  abiVersion?: number;
132
188
  }
133
189
 
@@ -149,6 +205,30 @@ export function writeEmbeddedManifestArtifacts(options: {
149
205
 
150
206
  // --- Invoke ---
151
207
 
208
+ export interface InvokeArenaTransferToken {}
209
+
210
+ export interface InvokeArenaLease {
211
+ readonly arena: Uint8Array;
212
+ readonly generation: number;
213
+ readonly closed: boolean;
214
+ advance(
215
+ nextArena?: Uint8Array | ArrayBuffer | ArrayBufferView,
216
+ ): number;
217
+ close(): void;
218
+ createTransferToken(
219
+ frame: InvokeFrame,
220
+ options?: {
221
+ ownership?: number | string;
222
+ mutability?: number | string;
223
+ },
224
+ ): InvokeArenaTransferToken;
225
+ }
226
+
227
+ export function createInvokeArenaLease(
228
+ arena: Uint8Array | ArrayBuffer | ArrayBufferView,
229
+ options?: { generation?: number },
230
+ ): InvokeArenaLease;
231
+
152
232
  export interface InvokeFrame {
153
233
  portId?: string | null;
154
234
  typeRef?: PayloadTypeRef | null;
@@ -156,8 +236,11 @@ export interface InvokeFrame {
156
236
  offset?: number;
157
237
  size?: number;
158
238
  ownership?: number | string;
239
+ arenaLease?: InvokeArenaLease;
240
+ arenaGeneration?: number;
159
241
  generation?: number;
160
242
  mutability?: number | string;
243
+ frameId?: bigint | number | string;
161
244
  traceId?: bigint | number | string;
162
245
  streamId?: number;
163
246
  sequence?: bigint | number | string;
@@ -169,32 +252,84 @@ export interface PluginInvokeRequestEnvelope {
169
252
  methodId: string;
170
253
  inputs?: InvokeFrame[];
171
254
  inputFrames?: InvokeFrame[];
255
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
172
256
  payloadArena?: Uint8Array;
257
+ traceId?: bigint | number | string;
258
+ outputStreamCap?: number;
173
259
  }
174
260
 
175
261
  export interface PluginInvokeResponseEnvelope {
176
262
  statusCode?: number;
263
+ status?: number;
177
264
  yielded?: boolean;
178
265
  backlogRemaining?: number;
179
266
  outputs?: InvokeFrame[];
180
267
  outputFrames?: InvokeFrame[];
268
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
181
269
  payloadArena?: Uint8Array;
182
270
  errorCode?: string | null;
183
271
  errorMessage?: string | null;
272
+ traceId?: bigint | number | string;
273
+ }
274
+
275
+ export interface DecodedPluginInvokeRequestEnvelope
276
+ extends PluginInvokeRequestEnvelope {
277
+ envelope: "PIV";
278
+ arenaLease: InvokeArenaLease;
279
+ }
280
+
281
+ export interface DecodedPluginInvokeResponseEnvelope
282
+ extends PluginInvokeResponseEnvelope {
283
+ envelope: "PIV";
284
+ arenaLease: InvokeArenaLease;
285
+ }
286
+
287
+ export interface DecodePluginInvokeEnvelopeOptions {
288
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
289
+ arenaLease?: InvokeArenaLease;
184
290
  }
185
291
 
186
292
  export function encodePluginInvokeRequest(
187
293
  request: PluginInvokeRequestEnvelope,
188
294
  ): Uint8Array;
295
+ export function writePluginInvokeRequestToArena(
296
+ request: PluginInvokeRequestEnvelope,
297
+ arena: Uint8Array | ArrayBuffer | ArrayBufferView,
298
+ ): Uint8Array;
189
299
  export function decodePluginInvokeRequest(
190
300
  data: Uint8Array | ArrayBuffer | ArrayBufferView,
191
- ): PluginInvokeRequestEnvelope;
301
+ options?: DecodePluginInvokeEnvelopeOptions,
302
+ ): DecodedPluginInvokeRequestEnvelope;
192
303
  export function encodePluginInvokeResponse(
193
304
  response: PluginInvokeResponseEnvelope,
194
305
  ): Uint8Array;
195
306
  export function decodePluginInvokeResponse(
196
307
  data: Uint8Array | ArrayBuffer | ArrayBufferView,
197
- ): PluginInvokeResponseEnvelope;
308
+ options?: DecodePluginInvokeEnvelopeOptions,
309
+ ): DecodedPluginInvokeResponseEnvelope;
310
+ /**
311
+ * Alignment (bytes) guaranteed for the payload arena base of every encoded
312
+ * invoke envelope, as an absolute address at every host<->module hop.
313
+ */
314
+ export const INVOKE_ARENA_ALIGNMENT: number;
315
+ export function assertAlignedInvokeBuffer(
316
+ bytes: Uint8Array,
317
+ arenaArray: Uint8Array | null,
318
+ kind: "request" | "response",
319
+ arenaAlignment?: number,
320
+ ): void;
321
+ /**
322
+ * Zero-copy module-to-module hop: reuse a decoded output frame (payload view
323
+ * and type metadata) as an input frame for the next invocation without any
324
+ * decode/re-serialize round-trip.
325
+ */
326
+ export function forwardOutputFrameAsInput(
327
+ outputFrame: InvokeFrame,
328
+ overrides?: Partial<InvokeFrame> & {
329
+ copyCanonical?: boolean;
330
+ arenaTransfer?: InvokeArenaTransferToken;
331
+ },
332
+ ): InvokeFrame;
198
333
  export function normalizeInvokeSurfaceName(
199
334
  value: InvokeSurface | number | string | null | undefined,
200
335
  ): InvokeSurface | null;
@@ -240,7 +375,7 @@ export function validatePluginArtifact(options: {
240
375
 
241
376
  export function validateManifestWithStandards(
242
377
  manifest: PluginManifest,
243
- options?: { sourceName?: string },
378
+ options?: { sourceName?: string; catalog?: StandardsEntry[]; standardsRoot?: string },
244
379
  ): Promise<ComplianceReport>;
245
380
 
246
381
  export function validateArtifactWithStandards(options: {
@@ -249,6 +384,8 @@ export function validateArtifactWithStandards(options: {
249
384
  wasmPath?: string;
250
385
  exportNames?: string[];
251
386
  sourceName?: string;
387
+ catalog?: StandardsEntry[];
388
+ standardsRoot?: string;
252
389
  }): Promise<ComplianceReport>;
253
390
 
254
391
  export function loadManifestFromFile(manifestPath: string): Promise<PluginManifest>;
@@ -639,6 +776,90 @@ export interface EncryptedEnvelope {
639
776
 
640
777
  export function generateX25519Keypair(): Promise<X25519Keypair>;
641
778
 
779
+ export interface MarketplaceArtifactBinding {
780
+ listingId: string;
781
+ moduleId: string;
782
+ version: string;
783
+ encryptedCid: string;
784
+ encryptedHash: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | string;
785
+ providerId: string;
786
+ policyId: string;
787
+ keyEpoch: string;
788
+ manifestHash: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | string;
789
+ contentKeyId?: string;
790
+ }
791
+
792
+ export interface MarketplaceContentRecipient {
793
+ recipientPeerId: string;
794
+ recipientKeyId: string;
795
+ publicKey: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | string;
796
+ grantId: string;
797
+ scope: string;
798
+ expiresAtMs?: number;
799
+ }
800
+
801
+ export interface MarketplaceContentKeyWrap {
802
+ algorithm: string;
803
+ contentKeyId: string;
804
+ recipientPeerId: string;
805
+ recipientKeyId: string;
806
+ providerId: string;
807
+ encryptedCid: string;
808
+ grantId: string;
809
+ scope: string;
810
+ expiresAtMs: number;
811
+ providerEphemeralPublicKey: Uint8Array;
812
+ nonce: Uint8Array;
813
+ aad: Uint8Array;
814
+ ciphertext: Uint8Array;
815
+ tag: Uint8Array;
816
+ }
817
+
818
+ export interface MarketplaceProtectedContent {
819
+ algorithm: "AES-256-GCM";
820
+ contentKeyId: string;
821
+ artifact: {
822
+ listingId: string;
823
+ moduleId: string;
824
+ version: string;
825
+ encryptedCid: string;
826
+ encryptedHash: string;
827
+ providerId: string;
828
+ policyId: string;
829
+ keyEpoch: string;
830
+ manifestHash: string;
831
+ contentKeyId: string;
832
+ };
833
+ aad: Uint8Array;
834
+ encryptedPayload: {
835
+ algorithm: "AES-256-GCM";
836
+ nonce: Uint8Array;
837
+ aad: Uint8Array;
838
+ ciphertext: Uint8Array;
839
+ tag: Uint8Array;
840
+ };
841
+ wrappedKeys: MarketplaceContentKeyWrap[];
842
+ }
843
+
844
+ export function createMarketplaceContentAad(
845
+ artifact: MarketplaceArtifactBinding,
846
+ ): Uint8Array;
847
+
848
+ export function protectMarketplaceContent(options: {
849
+ plaintext: Uint8Array | ArrayBuffer | ArrayBufferView | number[];
850
+ artifact: MarketplaceArtifactBinding;
851
+ recipients: MarketplaceContentRecipient[];
852
+ contentKey?: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | null;
853
+ contentNonce?: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | null;
854
+ providerWrapKeyPair?: X25519Keypair | null;
855
+ wrapNonce?: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | null;
856
+ }): Promise<MarketplaceProtectedContent>;
857
+
858
+ export function decryptMarketplaceContentKeyWrap(options: {
859
+ wrap: MarketplaceContentKeyWrap;
860
+ recipientPrivateKey: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | string;
861
+ }): Promise<Uint8Array>;
862
+
642
863
  export function encryptBytesForRecipient(options: {
643
864
  plaintext: Uint8Array | ArrayBuffer;
644
865
  recipientPublicKey: Uint8Array | string;
@@ -763,6 +984,7 @@ export interface GuestLinkArtifact {
763
984
  symbolPrefix: string;
764
985
  methodSymbols: Record<string, string>;
765
986
  threadModel: ModuleThreadModelName;
987
+ capabilities: string[];
766
988
  objectBytes: Uint8Array;
767
989
  }
768
990
 
@@ -807,7 +1029,15 @@ export function compileModuleFromSource(options: {
807
1029
  language?: string;
808
1030
  threadModel?: ModuleThreadModelName;
809
1031
  outputPath?: string;
1032
+ importedMemory?: boolean;
1033
+ sharedMemory?: boolean;
1034
+ initialMemoryBytes?: number;
1035
+ maximumMemoryBytes?: number;
1036
+ emscriptenRoot?: string;
810
1037
  allowUndefinedImports?: boolean;
1038
+ guestLinkCapabilities?: string[];
1039
+ catalog?: StandardsEntry[];
1040
+ standardsRoot?: string;
811
1041
  }): Promise<CompilationResult>;
812
1042
 
813
1043
  export function cleanupCompilation(
@@ -821,6 +1051,8 @@ export function protectModuleArtifact(options: {
821
1051
  artifactId?: string;
822
1052
  recipientPublicKeyHex?: string;
823
1053
  mnemonic?: string;
1054
+ publishTimestamp?: string;
1055
+ publishTimestampMs?: number;
824
1056
  target?: string | DeploymentTarget;
825
1057
  targetUrl?: string;
826
1058
  capabilities?: string[];
@@ -834,6 +1066,12 @@ export function createRecipientKeypairHex(): Promise<{
834
1066
  privateKeyHex: string;
835
1067
  }>;
836
1068
 
1069
+ export function getFlatbuffersCppRuntimeHeaders(): Promise<
1070
+ Record<string, string>
1071
+ >;
1072
+
1073
+ export function getInvokeCppSchemaHeaders(): Promise<Record<string, string>>;
1074
+
837
1075
  export type {
838
1076
  EmceptionCommandResult,
839
1077
  SharedEmceptionFileContent,
@@ -922,17 +1160,24 @@ export interface StandardsEntry {
922
1160
  hash: string | null;
923
1161
  version: string | null;
924
1162
  files: string[];
1163
+ rootTypeName?: string | null;
1164
+ idl?: string;
1165
+ source?: string;
925
1166
  }
926
1167
 
927
- export function loadStandardsCatalog(): Promise<StandardsEntry[]>;
928
- export function loadKnownTypeCatalog(): Promise<StandardsEntry[]>;
1168
+ export function loadStandardsCatalog(options?: {
1169
+ standardsRoot?: string;
1170
+ }): Promise<StandardsEntry[]>;
1171
+ export function loadKnownTypeCatalog(options?: {
1172
+ standardsRoot?: string;
1173
+ }): Promise<StandardsEntry[]>;
929
1174
  export function resolveStandardsTypeRef(
930
1175
  typeRef: PayloadTypeRef,
931
1176
  catalog?: StandardsEntry[],
932
1177
  ): StandardsEntry | null;
933
1178
  export function validateManifestAgainstStandardsCatalog(
934
1179
  manifest: PluginManifest,
935
- options?: { sourceName?: string; catalog?: StandardsEntry[] },
1180
+ options?: { sourceName?: string; catalog?: StandardsEntry[]; standardsRoot?: string },
936
1181
  ): Promise<{ catalog: StandardsEntry[]; issues: ComplianceIssue[] }>;
937
1182
 
938
1183
  // --- Bundle ---
@@ -1087,8 +1332,7 @@ export interface HostcallBridge {
1087
1332
  imports: Record<string, Record<string, (...args: number[]) => number>>;
1088
1333
  getLastEnvelope(): unknown;
1089
1334
  getLastResponseBytes(): Uint8Array;
1090
- getLastResponseText(): string;
1091
- getLastResponseJson(): unknown;
1335
+ getLastResponseEnvelope(): unknown;
1092
1336
  }
1093
1337
 
1094
1338
  export interface BrowserFilesystemShim {
@@ -1625,7 +1869,7 @@ export function dispatchNodeHostSyncOperation(
1625
1869
  export function createNodeHostSyncDispatcher(
1626
1870
  host: NodeHost,
1627
1871
  ): (operation: string, params?: unknown) => unknown;
1628
- export function createJsonHostcallBridge(options: {
1872
+ export function createHostcallBridge(options: {
1629
1873
  dispatch: (operation: string, params?: unknown) => unknown;
1630
1874
  getMemory: () => { buffer: ArrayBuffer | SharedArrayBuffer };
1631
1875
  moduleName?: string;
@@ -1675,8 +1919,29 @@ export interface BrowserModuleHarness {
1675
1919
  invokeRaw(
1676
1920
  requestBytes: Uint8Array | ArrayBuffer | ArrayBufferView,
1677
1921
  ): Promise<Uint8Array>;
1922
+ invokeDirect(request: {
1923
+ methodId?: string | null;
1924
+ /**
1925
+ * Browser direct invoke requires this to be a full view of the active
1926
+ * SharedArrayBuffer-backed module memory; foreign arenas and
1927
+ * payload-bearing frames are rejected.
1928
+ */
1929
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
1930
+ inputs?: HarnessInputFrame[];
1931
+ }): Promise<{
1932
+ statusCode: number;
1933
+ errorCode?: string | null;
1934
+ errorMessage?: string | null;
1935
+ outputs: HarnessInputFrame[];
1936
+ }>;
1678
1937
  invoke(request: {
1679
1938
  methodId?: string | null;
1939
+ /**
1940
+ * Browser direct invoke requires this to be a full view of the active
1941
+ * SharedArrayBuffer-backed module memory; foreign arenas and
1942
+ * payload-bearing frames are rejected.
1943
+ */
1944
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
1680
1945
  inputs?: HarnessInputFrame[];
1681
1946
  }): Promise<{
1682
1947
  statusCode: number;
@@ -1694,13 +1959,406 @@ export function createBrowserModuleHarness(options?: {
1694
1959
  hostOptions?: BrowserHostOptions;
1695
1960
  args?: string[];
1696
1961
  env?: Record<string, string>;
1962
+ manifest?: PluginManifest | Record<string, unknown>;
1697
1963
  surface?: "direct" | "command";
1698
1964
  performance?: {
1699
1965
  now(): number;
1700
1966
  timeOrigin: number;
1701
1967
  };
1968
+ wasmMemory?: WebAssembly.Memory;
1969
+ memory?: WebAssembly.Memory;
1970
+ sharedMemory?: boolean;
1971
+ allowRawInvoke?: boolean;
1972
+ initialMemoryBytes?: number;
1973
+ maximumMemoryBytes?: number;
1702
1974
  logOutput?: boolean;
1975
+ hostcallDispatch?: (operation: string, params: unknown) => unknown;
1703
1976
  }): Promise<BrowserModuleHarness>;
1977
+
1978
+ // --- Async in-WASM host bridge (WS6.1): worker harness + SAB channel ---
1979
+ export interface WorkerModuleHarness {
1980
+ runtime: { kind: "worker"; inner?: unknown };
1981
+ host: unknown;
1982
+ buffer: SharedArrayBuffer;
1983
+ exports: string[];
1984
+ callExport(name: string, ...args: unknown[]): Promise<unknown>;
1985
+ invoke(request: unknown): Promise<unknown>;
1986
+ invokeRaw(requestBytes: Uint8Array): Promise<unknown>;
1987
+ readMemory(ptr: number, length: number): Promise<Uint8Array>;
1988
+ readManifest(): Promise<Uint8Array | null>;
1989
+ destroy(): Promise<void>;
1990
+ }
1991
+ export function createWorkerModuleHarness(options: {
1992
+ wasmSource: Uint8Array | ArrayBuffer;
1993
+ host?: unknown;
1994
+ hostOptions?: BrowserHostOptions;
1995
+ dispatchHost?: (operation: string, params: unknown) => Promise<unknown>;
1996
+ maxHostcallResponseBytes?: number;
1997
+ hostcallTimeoutMs?: number;
1998
+ workerUrl?: URL | string;
1999
+ harnessOptions?: Record<string, unknown>;
2000
+ }): Promise<WorkerModuleHarness>;
2001
+ export function createSabHostcallBuffer(options?: {
2002
+ maxResponseBytes?: number;
2003
+ }): SharedArrayBuffer;
2004
+ export function createSabHostcallClientDispatch(options: {
2005
+ buffer: SharedArrayBuffer;
2006
+ postRequest: (request: { operation: string; params: unknown }) => void;
2007
+ timeoutMs?: number;
2008
+ }): (operation: string, params?: unknown) => unknown;
2009
+ export function createSabHostcallServer(options: {
2010
+ buffer: SharedArrayBuffer;
2011
+ dispatch: (operation: string, params: unknown) => Promise<unknown> | unknown;
2012
+ }): { handleRequest(request: { operation: string; params?: unknown }): Promise<void> };
2013
+
2014
+ // --- Browser cron/timer driver (WS6.3) ---
2015
+ export interface ModuleTimerRunRecord {
2016
+ timerId: string;
2017
+ methodId: string;
2018
+ trigger: "scheduled" | "manual";
2019
+ status: "running" | "ok" | "error" | "skipped";
2020
+ startedAt: number;
2021
+ finishedAt?: number;
2022
+ message?: string;
2023
+ }
2024
+ export interface ModuleTimerInfo {
2025
+ timerId: string;
2026
+ methodId: string;
2027
+ description: string;
2028
+ defaultIntervalMs: number;
2029
+ intervalMs: number;
2030
+ enabled: boolean;
2031
+ scheduled: boolean;
2032
+ }
2033
+ export interface ModuleTimerDriver {
2034
+ listTimers(): ModuleTimerInfo[];
2035
+ runHistory(timerId: string): ModuleTimerRunRecord[];
2036
+ start(): ModuleTimerInfo[];
2037
+ runNow(timerId: string): Promise<unknown>;
2038
+ stop(): void;
2039
+ }
2040
+ export function createModuleTimerDriver(options: {
2041
+ harness?: { invoke(request: unknown): Promise<unknown> };
2042
+ invoke?: (request: { methodId: string; inputs: unknown[] }) => Promise<unknown>;
2043
+ manifestBytes?: Uint8Array;
2044
+ manifest?: Record<string, unknown>;
2045
+ timers?: Array<Record<string, unknown>>;
2046
+ schedules?: Record<string, { enabled?: boolean; intervalMs?: number }>;
2047
+ minIntervalMs?: number;
2048
+ maxRunHistory?: number;
2049
+ setIntervalImpl?: (fn: () => void, ms: number) => unknown;
2050
+ clearIntervalImpl?: (handle: unknown) => void;
2051
+ now?: () => number;
2052
+ onRun?: (run: ModuleTimerRunRecord) => void;
2053
+ }): ModuleTimerDriver;
2054
+
2055
+ // --- JS flow-runtime host (WS3.2 / Phase 3 routing ABI) ---
2056
+ export type FlowFrameOwnership =
2057
+ | "host-owned"
2058
+ | "plugin-owned"
2059
+ | "transferred"
2060
+ | "unknown";
2061
+ export type FlowFrameMutability =
2062
+ | "immutable"
2063
+ | "single-writer-mutable"
2064
+ | "append-only"
2065
+ | "unknown";
2066
+
2067
+ export interface FlowFrameData {
2068
+ portId: string;
2069
+ bytes: Uint8Array;
2070
+ typeRef: PayloadTypeRef | null;
2071
+ wireFormat: PayloadWireFormat;
2072
+ alignment: number;
2073
+ ownership: FlowFrameOwnership;
2074
+ mutability: FlowFrameMutability;
2075
+ frameId: bigint;
2076
+ arenaGeneration: number;
2077
+ streamId: number;
2078
+ sequence: number;
2079
+ endOfStream: boolean;
2080
+ }
2081
+
2082
+ export interface FlowTriggerFrameOptions {
2083
+ portId?: string;
2084
+ bytes?: Uint8Array | ArrayBuffer;
2085
+ typeRef?: PayloadTypeRef | null;
2086
+ wireFormat?: PayloadWireFormat | 0 | 1;
2087
+ alignment?: number;
2088
+ ownership?:
2089
+ | Exclude<FlowFrameOwnership, "unknown">
2090
+ | "producer-owned"
2091
+ | "borrowed"
2092
+ | "shared"
2093
+ | 0
2094
+ | 1
2095
+ | 2;
2096
+ mutability?:
2097
+ | Exclude<FlowFrameMutability, "unknown">
2098
+ | "mutable"
2099
+ | 0
2100
+ | 1
2101
+ | 2;
2102
+ frameId?: bigint | number | string;
2103
+ traceToken?: bigint | number | string;
2104
+ streamId?: number;
2105
+ sequence?: number;
2106
+ endOfStream?: boolean;
2107
+ }
2108
+
2109
+ export interface FlowOutputFrame extends FlowTriggerFrameOptions {
2110
+ bytes?: Uint8Array | ArrayBuffer;
2111
+ }
2112
+
2113
+ export interface FlowNodeDispatchDescriptor {
2114
+ nodeIdPtr: number;
2115
+ nodeIndex: number;
2116
+ dependencyIdPtr: number;
2117
+ dependencyIndex: number;
2118
+ pluginIdPtr: number;
2119
+ methodIdPtr: number;
2120
+ dispatchModelPtr: number;
2121
+ entrypointPtr: number;
2122
+ manifestBytesSymbolPtr: number;
2123
+ manifestSizeSymbolPtr: number;
2124
+ initSymbolPtr: number;
2125
+ destroySymbolPtr: number;
2126
+ mallocSymbolPtr: number;
2127
+ freeSymbolPtr: number;
2128
+ streamInvokeSymbolPtr: number;
2129
+ nodeId: string;
2130
+ dependencyId: string;
2131
+ pluginId: string;
2132
+ methodId: string;
2133
+ dispatchModel: string;
2134
+ }
2135
+
2136
+ export interface FlowDependencyDescriptor {
2137
+ dependencyIdPtr: number;
2138
+ pluginIdPtr: number;
2139
+ versionPtr: number;
2140
+ sha256Ptr: number;
2141
+ signaturePtr: number;
2142
+ signerPublicKeyPtr: number;
2143
+ entrypointPtr: number;
2144
+ manifestBytesSymbolPtr: number;
2145
+ manifestSizeSymbolPtr: number;
2146
+ initSymbolPtr: number;
2147
+ destroySymbolPtr: number;
2148
+ mallocSymbolPtr: number;
2149
+ freeSymbolPtr: number;
2150
+ streamInvokeSymbolPtr: number;
2151
+ wasmBytesPtr: number;
2152
+ wasmSize: number;
2153
+ manifestBytesPtr: number;
2154
+ manifestSize: number;
2155
+ dependencyId: string;
2156
+ pluginId: string;
2157
+ version: string;
2158
+ sha256: string | null;
2159
+ signature: string | null;
2160
+ signerPublicKey: string | null;
2161
+ }
2162
+
2163
+ export interface FlowEdgeDescriptor {
2164
+ fromNode: number;
2165
+ fromPortPtr: number;
2166
+ toNode: number;
2167
+ toPortPtr: number;
2168
+ schemaNamePtr: number;
2169
+ fileIdentifierPtr: number;
2170
+ schemaVersionPtr: number;
2171
+ schemaHashPtr: number;
2172
+ schemaHashSize: number;
2173
+ rootTypeNamePtr: number;
2174
+ canonicalFallbackAvailable: number;
2175
+ alignedEligible: number;
2176
+ alignedLayoutFields: number;
2177
+ alignedByteLength: number;
2178
+ alignedFixedStringLength: number;
2179
+ alignedRequiredAlignment: number;
2180
+ /** OPAQUE byte route (SDS $PLG 1.0.13): no SDS identity, no aligned layout. */
2181
+ opaque: number;
2182
+ fromPort: string;
2183
+ toPort: string;
2184
+ schemaName: string;
2185
+ fileIdentifier: string;
2186
+ schemaVersion: string | null;
2187
+ schemaHash: Uint8Array;
2188
+ rootTypeName: string;
2189
+ }
2190
+
2191
+ export interface FlowRoutingState {
2192
+ alignedSharedRoutes: bigint;
2193
+ alignedCopiedRoutes: bigint;
2194
+ canonicalRoutes: bigint;
2195
+ rejectedFrames: bigint;
2196
+ }
2197
+
2198
+ export interface FlowNodeState {
2199
+ invocationCount: bigint;
2200
+ consumedFrames: bigint;
2201
+ queuedFrames: number;
2202
+ backlogRemaining: number;
2203
+ lastStatus: number;
2204
+ ready: boolean;
2205
+ yielded: boolean;
2206
+ }
2207
+
2208
+ export interface FlowIngressState {
2209
+ totalReceived: bigint;
2210
+ totalDropped: bigint;
2211
+ queuedFrames: number;
2212
+ }
2213
+
2214
+ export interface FlowEngineBodyReference {
2215
+ token: bigint;
2216
+ generation: bigint;
2217
+ fnv1a64: bigint;
2218
+ enginePtr: number;
2219
+ size: number;
2220
+ frames: number;
2221
+ used: number;
2222
+ bytes: Uint8Array;
2223
+ }
2224
+
2225
+ export interface FlowHandlerInvocation {
2226
+ nodeIndex: number;
2227
+ pluginId: string;
2228
+ methodId: string;
2229
+ dependencyId: string;
2230
+ nodeId: string;
2231
+ frames: FlowFrameData[];
2232
+ }
2233
+
2234
+ export interface FlowHandlerResult {
2235
+ statusCode?: number;
2236
+ backlogRemaining?: number;
2237
+ yielded?: boolean;
2238
+ outputs?: FlowOutputFrame[];
2239
+ errorCode?: string | null;
2240
+ errorMessage?: string | null;
2241
+ error?: unknown;
2242
+ }
2243
+
2244
+ export type FlowHandler = (
2245
+ invocation: FlowHandlerInvocation,
2246
+ ) => Promise<FlowHandlerResult | void> | FlowHandlerResult | void;
2247
+ export type FlowHandlerMap = Record<string, FlowHandler>;
2248
+
2249
+ export interface FlowDrainOptions {
2250
+ maxIterations?: number;
2251
+ frameBudget?: number;
2252
+ }
2253
+
2254
+ export interface FlowDrainResult {
2255
+ iterations: number;
2256
+ nodesInvoked: number;
2257
+ handlersSkipped: number;
2258
+ }
2259
+
2260
+ export interface FlowRuntimeHost {
2261
+ instance: WebAssembly.Instance;
2262
+ memory: WebAssembly.Memory;
2263
+ nodeCount: number;
2264
+ /** Number of real route edges in the compiled graph. */
2265
+ edgeCount: number;
2266
+ /** Number of all type descriptor rows, including trigger-only identities. */
2267
+ typeDescriptorCount: number;
2268
+ triggerCount: number;
2269
+ dependencyCount: number;
2270
+ resetState(): void;
2271
+ readCString(ptr: number, maxLength?: number): string;
2272
+ getNodeDispatchDescriptor(index: number): FlowNodeDispatchDescriptor;
2273
+ getDependencyDescriptor(index: number): FlowDependencyDescriptor;
2274
+ getEdgeDescriptor(index: number): FlowEdgeDescriptor;
2275
+ getTypeDescriptor(index: number): FlowEdgeDescriptor | null;
2276
+ getRoutingState(): FlowRoutingState;
2277
+ getNodeState(index: number): FlowNodeState;
2278
+ getIngressState(index: number): FlowIngressState;
2279
+ resolveEngineBodyRef(
2280
+ token: bigint | number | string,
2281
+ ): FlowEngineBodyReference | null;
2282
+ enqueueTrigger(triggerIndex: number): void;
2283
+ enqueueTriggerFrame(
2284
+ triggerIndex: number,
2285
+ frame?: FlowTriggerFrameOptions,
2286
+ ): number;
2287
+ drain(
2288
+ handlers?: FlowHandlerMap,
2289
+ options?: FlowDrainOptions,
2290
+ ): Promise<FlowDrainResult>;
2291
+ }
2292
+
2293
+ export interface FlowRuntimeHostOptions {
2294
+ wasmSource?: Uint8Array | ArrayBuffer;
2295
+ wasmBytes?: Uint8Array | ArrayBuffer;
2296
+ wasmModule?: WebAssembly.Module;
2297
+ args?: string[];
2298
+ env?: Record<string, string>;
2299
+ logOutput?: boolean;
2300
+ extraImports?: WebAssembly.Imports;
2301
+ legacyHostImportCompat?: boolean;
2302
+ engineLink?: {
2303
+ exports: WebAssembly.Exports & { memory: WebAssembly.Memory };
2304
+ } | null;
2305
+ }
2306
+
2307
+ export const FLOW_INVALID_INDEX: number;
2308
+ export function createFlowRuntimeHost(
2309
+ options: FlowRuntimeHostOptions,
2310
+ ): Promise<FlowRuntimeHost>;
2311
+
2312
+ export interface ModuleSignatureVerificationPolicy {
2313
+ trustedPublicKeys?: string[] | string;
2314
+ requireSignature?: boolean;
2315
+ }
2316
+
2317
+ export interface IsomorphicFlowChildOptions {
2318
+ pluginId: string;
2319
+ wasmSource: Uint8Array | ArrayBuffer | ArrayBufferView;
2320
+ manifest?: PluginManifest | Record<string, unknown>;
2321
+ surface?: "direct" | "command";
2322
+ verifySignature?: false | ModuleSignatureVerificationPolicy;
2323
+ host?: BrowserHost | RuntimeHost | Record<string, unknown>;
2324
+ hostcallDispatch?: (operation: string, params: unknown) => unknown;
2325
+ imports?: WebAssembly.Imports;
2326
+ }
2327
+
2328
+ export interface IsomorphicFlowChildRecord {
2329
+ nodeId: string;
2330
+ pluginId: string;
2331
+ sha256: string;
2332
+ descriptor: FlowDependencyDescriptor;
2333
+ config: Uint8Array;
2334
+ configInputPortId: string | null;
2335
+ harness: BrowserModuleHarness;
2336
+ }
2337
+
2338
+ export interface IsomorphicFlowDrainOptions extends FlowDrainOptions {
2339
+ handlers?: FlowHandlerMap;
2340
+ }
2341
+
2342
+ export interface IsomorphicFlowRuntimeHost
2343
+ extends Omit<FlowRuntimeHost, "drain"> {
2344
+ parent: FlowRuntimeHost;
2345
+ children: Map<string, IsomorphicFlowChildRecord>;
2346
+ drain(options?: IsomorphicFlowDrainOptions): Promise<FlowDrainResult>;
2347
+ destroy(): void;
2348
+ }
2349
+
2350
+ export interface IsomorphicFlowRuntimeHostOptions
2351
+ extends FlowRuntimeHostOptions {
2352
+ /** Exact signed artifact bytes are required; precompiled modules are rejected. */
2353
+ wasmModule?: never;
2354
+ verifySignature?: false | ModuleSignatureVerificationPolicy;
2355
+ children?: IsomorphicFlowChildOptions[];
2356
+ }
2357
+
2358
+ export function createIsomorphicFlowRuntimeHost(
2359
+ options: IsomorphicFlowRuntimeHostOptions,
2360
+ ): Promise<IsomorphicFlowRuntimeHost>;
2361
+
1704
2362
  export interface ModuleFlatBufferStreamPumpStats {
1705
2363
  bytesReceived: number;
1706
2364
  chunksReceived: number;
@@ -1840,7 +2498,7 @@ export interface LicensingGrantModuleDescriptor {
1840
2498
  moduleVersion?: string;
1841
2499
  requiredScope?: string;
1842
2500
  keyId?: string;
1843
- allowedDomains: string[];
2501
+ allowedXpubs: string[];
1844
2502
  maxGrantTimeoutMs: number;
1845
2503
  encrypted: boolean;
1846
2504
  }
@@ -1963,6 +2621,54 @@ export function validateLicensingGrant(
1963
2621
  },
1964
2622
  ): LicensingGrantMessage;
1965
2623
 
2624
+ export function encodeUnsignedLicensingGrantForProviderSignature(
2625
+ grant: LicensingGrantMessage,
2626
+ ): Uint8Array;
2627
+
2628
+ export function verifyLicensingGrantProviderSignature(
2629
+ grant: LicensingGrantMessage,
2630
+ options: {
2631
+ requestedAtMs?: number;
2632
+ verify(
2633
+ publicKey: Uint8Array,
2634
+ payload: Uint8Array,
2635
+ signature: Uint8Array,
2636
+ ): boolean | Promise<boolean>;
2637
+ },
2638
+ ): Promise<LicensingGrantMessage>;
2639
+
2640
+ export function encodeUnsignedFieldStreamPolicyForProviderSignature(
2641
+ policy: unknown,
2642
+ ): Uint8Array;
2643
+
2644
+ export function verifyFieldStreamPolicyProviderSignature(
2645
+ policy: unknown,
2646
+ options: {
2647
+ providerPublicKey: Uint8Array | ArrayBuffer | ArrayBufferView;
2648
+ verify(
2649
+ publicKey: Uint8Array,
2650
+ payload: Uint8Array,
2651
+ signature: Uint8Array,
2652
+ ): boolean | Promise<boolean>;
2653
+ },
2654
+ ): Promise<unknown>;
2655
+
2656
+ export function encodeUnsignedFieldStreamMessageForProviderSignature(
2657
+ message: unknown,
2658
+ ): Uint8Array;
2659
+
2660
+ export function verifyFieldStreamMessageProviderSignature(
2661
+ message: unknown,
2662
+ options: {
2663
+ providerPublicKey: Uint8Array | ArrayBuffer | ArrayBufferView;
2664
+ verify(
2665
+ publicKey: Uint8Array,
2666
+ payload: Uint8Array,
2667
+ signature: Uint8Array,
2668
+ ): boolean | Promise<boolean>;
2669
+ },
2670
+ ): Promise<unknown>;
2671
+
1966
2672
  export function extractGrantModuleDescriptor(
1967
2673
  grant: LicensingGrantMessage,
1968
2674
  ): LicensingGrantModuleDescriptor;