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
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,97 @@ 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 type KeyAgreementProvider = (params: {
859
+ ephemeralPublicKey: Uint8Array;
860
+ context: string;
861
+ keyExchange: string;
862
+ }) => Promise<Uint8Array>;
863
+
864
+ export function decryptMarketplaceContentKeyWrap(options: {
865
+ wrap: MarketplaceContentKeyWrap;
866
+ recipientPrivateKey?: Uint8Array | ArrayBuffer | ArrayBufferView | number[] | string;
867
+ keyAgreement?: KeyAgreementProvider;
868
+ }): Promise<Uint8Array>;
869
+
642
870
  export function encryptBytesForRecipient(options: {
643
871
  plaintext: Uint8Array | ArrayBuffer;
644
872
  recipientPublicKey: Uint8Array | string;
@@ -651,7 +879,8 @@ export function encryptBytesForRecipient(options: {
651
879
 
652
880
  export function decryptProtectedBytes(options: {
653
881
  protectedBytes: Uint8Array | ArrayBuffer;
654
- recipientPrivateKey: Uint8Array | string;
882
+ recipientPrivateKey?: Uint8Array | string;
883
+ keyAgreement?: KeyAgreementProvider;
655
884
  }): Promise<Uint8Array>;
656
885
 
657
886
  export function decryptBytesFromEnvelope(options: {
@@ -763,6 +992,7 @@ export interface GuestLinkArtifact {
763
992
  symbolPrefix: string;
764
993
  methodSymbols: Record<string, string>;
765
994
  threadModel: ModuleThreadModelName;
995
+ capabilities: string[];
766
996
  objectBytes: Uint8Array;
767
997
  }
768
998
 
@@ -807,7 +1037,15 @@ export function compileModuleFromSource(options: {
807
1037
  language?: string;
808
1038
  threadModel?: ModuleThreadModelName;
809
1039
  outputPath?: string;
1040
+ importedMemory?: boolean;
1041
+ sharedMemory?: boolean;
1042
+ initialMemoryBytes?: number;
1043
+ maximumMemoryBytes?: number;
1044
+ emscriptenRoot?: string;
810
1045
  allowUndefinedImports?: boolean;
1046
+ guestLinkCapabilities?: string[];
1047
+ catalog?: StandardsEntry[];
1048
+ standardsRoot?: string;
811
1049
  }): Promise<CompilationResult>;
812
1050
 
813
1051
  export function cleanupCompilation(
@@ -821,6 +1059,8 @@ export function protectModuleArtifact(options: {
821
1059
  artifactId?: string;
822
1060
  recipientPublicKeyHex?: string;
823
1061
  mnemonic?: string;
1062
+ publishTimestamp?: string;
1063
+ publishTimestampMs?: number;
824
1064
  target?: string | DeploymentTarget;
825
1065
  targetUrl?: string;
826
1066
  capabilities?: string[];
@@ -834,6 +1074,12 @@ export function createRecipientKeypairHex(): Promise<{
834
1074
  privateKeyHex: string;
835
1075
  }>;
836
1076
 
1077
+ export function getFlatbuffersCppRuntimeHeaders(): Promise<
1078
+ Record<string, string>
1079
+ >;
1080
+
1081
+ export function getInvokeCppSchemaHeaders(): Promise<Record<string, string>>;
1082
+
837
1083
  export type {
838
1084
  EmceptionCommandResult,
839
1085
  SharedEmceptionFileContent,
@@ -922,17 +1168,24 @@ export interface StandardsEntry {
922
1168
  hash: string | null;
923
1169
  version: string | null;
924
1170
  files: string[];
1171
+ rootTypeName?: string | null;
1172
+ idl?: string;
1173
+ source?: string;
925
1174
  }
926
1175
 
927
- export function loadStandardsCatalog(): Promise<StandardsEntry[]>;
928
- export function loadKnownTypeCatalog(): Promise<StandardsEntry[]>;
1176
+ export function loadStandardsCatalog(options?: {
1177
+ standardsRoot?: string;
1178
+ }): Promise<StandardsEntry[]>;
1179
+ export function loadKnownTypeCatalog(options?: {
1180
+ standardsRoot?: string;
1181
+ }): Promise<StandardsEntry[]>;
929
1182
  export function resolveStandardsTypeRef(
930
1183
  typeRef: PayloadTypeRef,
931
1184
  catalog?: StandardsEntry[],
932
1185
  ): StandardsEntry | null;
933
1186
  export function validateManifestAgainstStandardsCatalog(
934
1187
  manifest: PluginManifest,
935
- options?: { sourceName?: string; catalog?: StandardsEntry[] },
1188
+ options?: { sourceName?: string; catalog?: StandardsEntry[]; standardsRoot?: string },
936
1189
  ): Promise<{ catalog: StandardsEntry[]; issues: ComplianceIssue[] }>;
937
1190
 
938
1191
  // --- Bundle ---
@@ -1087,8 +1340,7 @@ export interface HostcallBridge {
1087
1340
  imports: Record<string, Record<string, (...args: number[]) => number>>;
1088
1341
  getLastEnvelope(): unknown;
1089
1342
  getLastResponseBytes(): Uint8Array;
1090
- getLastResponseText(): string;
1091
- getLastResponseJson(): unknown;
1343
+ getLastResponseEnvelope(): unknown;
1092
1344
  }
1093
1345
 
1094
1346
  export interface BrowserFilesystemShim {
@@ -1625,7 +1877,7 @@ export function dispatchNodeHostSyncOperation(
1625
1877
  export function createNodeHostSyncDispatcher(
1626
1878
  host: NodeHost,
1627
1879
  ): (operation: string, params?: unknown) => unknown;
1628
- export function createJsonHostcallBridge(options: {
1880
+ export function createHostcallBridge(options: {
1629
1881
  dispatch: (operation: string, params?: unknown) => unknown;
1630
1882
  getMemory: () => { buffer: ArrayBuffer | SharedArrayBuffer };
1631
1883
  moduleName?: string;
@@ -1675,8 +1927,29 @@ export interface BrowserModuleHarness {
1675
1927
  invokeRaw(
1676
1928
  requestBytes: Uint8Array | ArrayBuffer | ArrayBufferView,
1677
1929
  ): Promise<Uint8Array>;
1930
+ invokeDirect(request: {
1931
+ methodId?: string | null;
1932
+ /**
1933
+ * Browser direct invoke requires this to be a full view of the active
1934
+ * SharedArrayBuffer-backed module memory; foreign arenas and
1935
+ * payload-bearing frames are rejected.
1936
+ */
1937
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
1938
+ inputs?: HarnessInputFrame[];
1939
+ }): Promise<{
1940
+ statusCode: number;
1941
+ errorCode?: string | null;
1942
+ errorMessage?: string | null;
1943
+ outputs: HarnessInputFrame[];
1944
+ }>;
1678
1945
  invoke(request: {
1679
1946
  methodId?: string | null;
1947
+ /**
1948
+ * Browser direct invoke requires this to be a full view of the active
1949
+ * SharedArrayBuffer-backed module memory; foreign arenas and
1950
+ * payload-bearing frames are rejected.
1951
+ */
1952
+ externalArena?: Uint8Array | ArrayBuffer | ArrayBufferView;
1680
1953
  inputs?: HarnessInputFrame[];
1681
1954
  }): Promise<{
1682
1955
  statusCode: number;
@@ -1694,13 +1967,406 @@ export function createBrowserModuleHarness(options?: {
1694
1967
  hostOptions?: BrowserHostOptions;
1695
1968
  args?: string[];
1696
1969
  env?: Record<string, string>;
1970
+ manifest?: PluginManifest | Record<string, unknown>;
1697
1971
  surface?: "direct" | "command";
1698
1972
  performance?: {
1699
1973
  now(): number;
1700
1974
  timeOrigin: number;
1701
1975
  };
1976
+ wasmMemory?: WebAssembly.Memory;
1977
+ memory?: WebAssembly.Memory;
1978
+ sharedMemory?: boolean;
1979
+ allowRawInvoke?: boolean;
1980
+ initialMemoryBytes?: number;
1981
+ maximumMemoryBytes?: number;
1702
1982
  logOutput?: boolean;
1983
+ hostcallDispatch?: (operation: string, params: unknown) => unknown;
1703
1984
  }): Promise<BrowserModuleHarness>;
1985
+
1986
+ // --- Async in-WASM host bridge (WS6.1): worker harness + SAB channel ---
1987
+ export interface WorkerModuleHarness {
1988
+ runtime: { kind: "worker"; inner?: unknown };
1989
+ host: unknown;
1990
+ buffer: SharedArrayBuffer;
1991
+ exports: string[];
1992
+ callExport(name: string, ...args: unknown[]): Promise<unknown>;
1993
+ invoke(request: unknown): Promise<unknown>;
1994
+ invokeRaw(requestBytes: Uint8Array): Promise<unknown>;
1995
+ readMemory(ptr: number, length: number): Promise<Uint8Array>;
1996
+ readManifest(): Promise<Uint8Array | null>;
1997
+ destroy(): Promise<void>;
1998
+ }
1999
+ export function createWorkerModuleHarness(options: {
2000
+ wasmSource: Uint8Array | ArrayBuffer;
2001
+ host?: unknown;
2002
+ hostOptions?: BrowserHostOptions;
2003
+ dispatchHost?: (operation: string, params: unknown) => Promise<unknown>;
2004
+ maxHostcallResponseBytes?: number;
2005
+ hostcallTimeoutMs?: number;
2006
+ workerUrl?: URL | string;
2007
+ harnessOptions?: Record<string, unknown>;
2008
+ }): Promise<WorkerModuleHarness>;
2009
+ export function createSabHostcallBuffer(options?: {
2010
+ maxResponseBytes?: number;
2011
+ }): SharedArrayBuffer;
2012
+ export function createSabHostcallClientDispatch(options: {
2013
+ buffer: SharedArrayBuffer;
2014
+ postRequest: (request: { operation: string; params: unknown }) => void;
2015
+ timeoutMs?: number;
2016
+ }): (operation: string, params?: unknown) => unknown;
2017
+ export function createSabHostcallServer(options: {
2018
+ buffer: SharedArrayBuffer;
2019
+ dispatch: (operation: string, params: unknown) => Promise<unknown> | unknown;
2020
+ }): { handleRequest(request: { operation: string; params?: unknown }): Promise<void> };
2021
+
2022
+ // --- Browser cron/timer driver (WS6.3) ---
2023
+ export interface ModuleTimerRunRecord {
2024
+ timerId: string;
2025
+ methodId: string;
2026
+ trigger: "scheduled" | "manual";
2027
+ status: "running" | "ok" | "error" | "skipped";
2028
+ startedAt: number;
2029
+ finishedAt?: number;
2030
+ message?: string;
2031
+ }
2032
+ export interface ModuleTimerInfo {
2033
+ timerId: string;
2034
+ methodId: string;
2035
+ description: string;
2036
+ defaultIntervalMs: number;
2037
+ intervalMs: number;
2038
+ enabled: boolean;
2039
+ scheduled: boolean;
2040
+ }
2041
+ export interface ModuleTimerDriver {
2042
+ listTimers(): ModuleTimerInfo[];
2043
+ runHistory(timerId: string): ModuleTimerRunRecord[];
2044
+ start(): ModuleTimerInfo[];
2045
+ runNow(timerId: string): Promise<unknown>;
2046
+ stop(): void;
2047
+ }
2048
+ export function createModuleTimerDriver(options: {
2049
+ harness?: { invoke(request: unknown): Promise<unknown> };
2050
+ invoke?: (request: { methodId: string; inputs: unknown[] }) => Promise<unknown>;
2051
+ manifestBytes?: Uint8Array;
2052
+ manifest?: Record<string, unknown>;
2053
+ timers?: Array<Record<string, unknown>>;
2054
+ schedules?: Record<string, { enabled?: boolean; intervalMs?: number }>;
2055
+ minIntervalMs?: number;
2056
+ maxRunHistory?: number;
2057
+ setIntervalImpl?: (fn: () => void, ms: number) => unknown;
2058
+ clearIntervalImpl?: (handle: unknown) => void;
2059
+ now?: () => number;
2060
+ onRun?: (run: ModuleTimerRunRecord) => void;
2061
+ }): ModuleTimerDriver;
2062
+
2063
+ // --- JS flow-runtime host (WS3.2 / Phase 3 routing ABI) ---
2064
+ export type FlowFrameOwnership =
2065
+ | "host-owned"
2066
+ | "plugin-owned"
2067
+ | "transferred"
2068
+ | "unknown";
2069
+ export type FlowFrameMutability =
2070
+ | "immutable"
2071
+ | "single-writer-mutable"
2072
+ | "append-only"
2073
+ | "unknown";
2074
+
2075
+ export interface FlowFrameData {
2076
+ portId: string;
2077
+ bytes: Uint8Array;
2078
+ typeRef: PayloadTypeRef | null;
2079
+ wireFormat: PayloadWireFormat;
2080
+ alignment: number;
2081
+ ownership: FlowFrameOwnership;
2082
+ mutability: FlowFrameMutability;
2083
+ frameId: bigint;
2084
+ arenaGeneration: number;
2085
+ streamId: number;
2086
+ sequence: number;
2087
+ endOfStream: boolean;
2088
+ }
2089
+
2090
+ export interface FlowTriggerFrameOptions {
2091
+ portId?: string;
2092
+ bytes?: Uint8Array | ArrayBuffer;
2093
+ typeRef?: PayloadTypeRef | null;
2094
+ wireFormat?: PayloadWireFormat | 0 | 1;
2095
+ alignment?: number;
2096
+ ownership?:
2097
+ | Exclude<FlowFrameOwnership, "unknown">
2098
+ | "producer-owned"
2099
+ | "borrowed"
2100
+ | "shared"
2101
+ | 0
2102
+ | 1
2103
+ | 2;
2104
+ mutability?:
2105
+ | Exclude<FlowFrameMutability, "unknown">
2106
+ | "mutable"
2107
+ | 0
2108
+ | 1
2109
+ | 2;
2110
+ frameId?: bigint | number | string;
2111
+ traceToken?: bigint | number | string;
2112
+ streamId?: number;
2113
+ sequence?: number;
2114
+ endOfStream?: boolean;
2115
+ }
2116
+
2117
+ export interface FlowOutputFrame extends FlowTriggerFrameOptions {
2118
+ bytes?: Uint8Array | ArrayBuffer;
2119
+ }
2120
+
2121
+ export interface FlowNodeDispatchDescriptor {
2122
+ nodeIdPtr: number;
2123
+ nodeIndex: number;
2124
+ dependencyIdPtr: number;
2125
+ dependencyIndex: number;
2126
+ pluginIdPtr: number;
2127
+ methodIdPtr: number;
2128
+ dispatchModelPtr: number;
2129
+ entrypointPtr: number;
2130
+ manifestBytesSymbolPtr: number;
2131
+ manifestSizeSymbolPtr: number;
2132
+ initSymbolPtr: number;
2133
+ destroySymbolPtr: number;
2134
+ mallocSymbolPtr: number;
2135
+ freeSymbolPtr: number;
2136
+ streamInvokeSymbolPtr: number;
2137
+ nodeId: string;
2138
+ dependencyId: string;
2139
+ pluginId: string;
2140
+ methodId: string;
2141
+ dispatchModel: string;
2142
+ }
2143
+
2144
+ export interface FlowDependencyDescriptor {
2145
+ dependencyIdPtr: number;
2146
+ pluginIdPtr: number;
2147
+ versionPtr: number;
2148
+ sha256Ptr: number;
2149
+ signaturePtr: number;
2150
+ signerPublicKeyPtr: number;
2151
+ entrypointPtr: number;
2152
+ manifestBytesSymbolPtr: number;
2153
+ manifestSizeSymbolPtr: number;
2154
+ initSymbolPtr: number;
2155
+ destroySymbolPtr: number;
2156
+ mallocSymbolPtr: number;
2157
+ freeSymbolPtr: number;
2158
+ streamInvokeSymbolPtr: number;
2159
+ wasmBytesPtr: number;
2160
+ wasmSize: number;
2161
+ manifestBytesPtr: number;
2162
+ manifestSize: number;
2163
+ dependencyId: string;
2164
+ pluginId: string;
2165
+ version: string;
2166
+ sha256: string | null;
2167
+ signature: string | null;
2168
+ signerPublicKey: string | null;
2169
+ }
2170
+
2171
+ export interface FlowEdgeDescriptor {
2172
+ fromNode: number;
2173
+ fromPortPtr: number;
2174
+ toNode: number;
2175
+ toPortPtr: number;
2176
+ schemaNamePtr: number;
2177
+ fileIdentifierPtr: number;
2178
+ schemaVersionPtr: number;
2179
+ schemaHashPtr: number;
2180
+ schemaHashSize: number;
2181
+ rootTypeNamePtr: number;
2182
+ canonicalFallbackAvailable: number;
2183
+ alignedEligible: number;
2184
+ alignedLayoutFields: number;
2185
+ alignedByteLength: number;
2186
+ alignedFixedStringLength: number;
2187
+ alignedRequiredAlignment: number;
2188
+ /** OPAQUE byte route (SDS $PLG 1.0.13): no SDS identity, no aligned layout. */
2189
+ opaque: number;
2190
+ fromPort: string;
2191
+ toPort: string;
2192
+ schemaName: string;
2193
+ fileIdentifier: string;
2194
+ schemaVersion: string | null;
2195
+ schemaHash: Uint8Array;
2196
+ rootTypeName: string;
2197
+ }
2198
+
2199
+ export interface FlowRoutingState {
2200
+ alignedSharedRoutes: bigint;
2201
+ alignedCopiedRoutes: bigint;
2202
+ canonicalRoutes: bigint;
2203
+ rejectedFrames: bigint;
2204
+ }
2205
+
2206
+ export interface FlowNodeState {
2207
+ invocationCount: bigint;
2208
+ consumedFrames: bigint;
2209
+ queuedFrames: number;
2210
+ backlogRemaining: number;
2211
+ lastStatus: number;
2212
+ ready: boolean;
2213
+ yielded: boolean;
2214
+ }
2215
+
2216
+ export interface FlowIngressState {
2217
+ totalReceived: bigint;
2218
+ totalDropped: bigint;
2219
+ queuedFrames: number;
2220
+ }
2221
+
2222
+ export interface FlowEngineBodyReference {
2223
+ token: bigint;
2224
+ generation: bigint;
2225
+ fnv1a64: bigint;
2226
+ enginePtr: number;
2227
+ size: number;
2228
+ frames: number;
2229
+ used: number;
2230
+ bytes: Uint8Array;
2231
+ }
2232
+
2233
+ export interface FlowHandlerInvocation {
2234
+ nodeIndex: number;
2235
+ pluginId: string;
2236
+ methodId: string;
2237
+ dependencyId: string;
2238
+ nodeId: string;
2239
+ frames: FlowFrameData[];
2240
+ }
2241
+
2242
+ export interface FlowHandlerResult {
2243
+ statusCode?: number;
2244
+ backlogRemaining?: number;
2245
+ yielded?: boolean;
2246
+ outputs?: FlowOutputFrame[];
2247
+ errorCode?: string | null;
2248
+ errorMessage?: string | null;
2249
+ error?: unknown;
2250
+ }
2251
+
2252
+ export type FlowHandler = (
2253
+ invocation: FlowHandlerInvocation,
2254
+ ) => Promise<FlowHandlerResult | void> | FlowHandlerResult | void;
2255
+ export type FlowHandlerMap = Record<string, FlowHandler>;
2256
+
2257
+ export interface FlowDrainOptions {
2258
+ maxIterations?: number;
2259
+ frameBudget?: number;
2260
+ }
2261
+
2262
+ export interface FlowDrainResult {
2263
+ iterations: number;
2264
+ nodesInvoked: number;
2265
+ handlersSkipped: number;
2266
+ }
2267
+
2268
+ export interface FlowRuntimeHost {
2269
+ instance: WebAssembly.Instance;
2270
+ memory: WebAssembly.Memory;
2271
+ nodeCount: number;
2272
+ /** Number of real route edges in the compiled graph. */
2273
+ edgeCount: number;
2274
+ /** Number of all type descriptor rows, including trigger-only identities. */
2275
+ typeDescriptorCount: number;
2276
+ triggerCount: number;
2277
+ dependencyCount: number;
2278
+ resetState(): void;
2279
+ readCString(ptr: number, maxLength?: number): string;
2280
+ getNodeDispatchDescriptor(index: number): FlowNodeDispatchDescriptor;
2281
+ getDependencyDescriptor(index: number): FlowDependencyDescriptor;
2282
+ getEdgeDescriptor(index: number): FlowEdgeDescriptor;
2283
+ getTypeDescriptor(index: number): FlowEdgeDescriptor | null;
2284
+ getRoutingState(): FlowRoutingState;
2285
+ getNodeState(index: number): FlowNodeState;
2286
+ getIngressState(index: number): FlowIngressState;
2287
+ resolveEngineBodyRef(
2288
+ token: bigint | number | string,
2289
+ ): FlowEngineBodyReference | null;
2290
+ enqueueTrigger(triggerIndex: number): void;
2291
+ enqueueTriggerFrame(
2292
+ triggerIndex: number,
2293
+ frame?: FlowTriggerFrameOptions,
2294
+ ): number;
2295
+ drain(
2296
+ handlers?: FlowHandlerMap,
2297
+ options?: FlowDrainOptions,
2298
+ ): Promise<FlowDrainResult>;
2299
+ }
2300
+
2301
+ export interface FlowRuntimeHostOptions {
2302
+ wasmSource?: Uint8Array | ArrayBuffer;
2303
+ wasmBytes?: Uint8Array | ArrayBuffer;
2304
+ wasmModule?: WebAssembly.Module;
2305
+ args?: string[];
2306
+ env?: Record<string, string>;
2307
+ logOutput?: boolean;
2308
+ extraImports?: WebAssembly.Imports;
2309
+ legacyHostImportCompat?: boolean;
2310
+ engineLink?: {
2311
+ exports: WebAssembly.Exports & { memory: WebAssembly.Memory };
2312
+ } | null;
2313
+ }
2314
+
2315
+ export const FLOW_INVALID_INDEX: number;
2316
+ export function createFlowRuntimeHost(
2317
+ options: FlowRuntimeHostOptions,
2318
+ ): Promise<FlowRuntimeHost>;
2319
+
2320
+ export interface ModuleSignatureVerificationPolicy {
2321
+ trustedPublicKeys?: string[] | string;
2322
+ requireSignature?: boolean;
2323
+ }
2324
+
2325
+ export interface IsomorphicFlowChildOptions {
2326
+ pluginId: string;
2327
+ wasmSource: Uint8Array | ArrayBuffer | ArrayBufferView;
2328
+ manifest?: PluginManifest | Record<string, unknown>;
2329
+ surface?: "direct" | "command";
2330
+ verifySignature?: false | ModuleSignatureVerificationPolicy;
2331
+ host?: BrowserHost | RuntimeHost | Record<string, unknown>;
2332
+ hostcallDispatch?: (operation: string, params: unknown) => unknown;
2333
+ imports?: WebAssembly.Imports;
2334
+ }
2335
+
2336
+ export interface IsomorphicFlowChildRecord {
2337
+ nodeId: string;
2338
+ pluginId: string;
2339
+ sha256: string;
2340
+ descriptor: FlowDependencyDescriptor;
2341
+ config: Uint8Array;
2342
+ configInputPortId: string | null;
2343
+ harness: BrowserModuleHarness;
2344
+ }
2345
+
2346
+ export interface IsomorphicFlowDrainOptions extends FlowDrainOptions {
2347
+ handlers?: FlowHandlerMap;
2348
+ }
2349
+
2350
+ export interface IsomorphicFlowRuntimeHost
2351
+ extends Omit<FlowRuntimeHost, "drain"> {
2352
+ parent: FlowRuntimeHost;
2353
+ children: Map<string, IsomorphicFlowChildRecord>;
2354
+ drain(options?: IsomorphicFlowDrainOptions): Promise<FlowDrainResult>;
2355
+ destroy(): void;
2356
+ }
2357
+
2358
+ export interface IsomorphicFlowRuntimeHostOptions
2359
+ extends FlowRuntimeHostOptions {
2360
+ /** Exact signed artifact bytes are required; precompiled modules are rejected. */
2361
+ wasmModule?: never;
2362
+ verifySignature?: false | ModuleSignatureVerificationPolicy;
2363
+ children?: IsomorphicFlowChildOptions[];
2364
+ }
2365
+
2366
+ export function createIsomorphicFlowRuntimeHost(
2367
+ options: IsomorphicFlowRuntimeHostOptions,
2368
+ ): Promise<IsomorphicFlowRuntimeHost>;
2369
+
1704
2370
  export interface ModuleFlatBufferStreamPumpStats {
1705
2371
  bytesReceived: number;
1706
2372
  chunksReceived: number;
@@ -1840,7 +2506,7 @@ export interface LicensingGrantModuleDescriptor {
1840
2506
  moduleVersion?: string;
1841
2507
  requiredScope?: string;
1842
2508
  keyId?: string;
1843
- allowedDomains: string[];
2509
+ allowedXpubs: string[];
1844
2510
  maxGrantTimeoutMs: number;
1845
2511
  encrypted: boolean;
1846
2512
  }
@@ -1963,6 +2629,54 @@ export function validateLicensingGrant(
1963
2629
  },
1964
2630
  ): LicensingGrantMessage;
1965
2631
 
2632
+ export function encodeUnsignedLicensingGrantForProviderSignature(
2633
+ grant: LicensingGrantMessage,
2634
+ ): Uint8Array;
2635
+
2636
+ export function verifyLicensingGrantProviderSignature(
2637
+ grant: LicensingGrantMessage,
2638
+ options: {
2639
+ requestedAtMs?: number;
2640
+ verify(
2641
+ publicKey: Uint8Array,
2642
+ payload: Uint8Array,
2643
+ signature: Uint8Array,
2644
+ ): boolean | Promise<boolean>;
2645
+ },
2646
+ ): Promise<LicensingGrantMessage>;
2647
+
2648
+ export function encodeUnsignedFieldStreamPolicyForProviderSignature(
2649
+ policy: unknown,
2650
+ ): Uint8Array;
2651
+
2652
+ export function verifyFieldStreamPolicyProviderSignature(
2653
+ policy: unknown,
2654
+ options: {
2655
+ providerPublicKey: Uint8Array | ArrayBuffer | ArrayBufferView;
2656
+ verify(
2657
+ publicKey: Uint8Array,
2658
+ payload: Uint8Array,
2659
+ signature: Uint8Array,
2660
+ ): boolean | Promise<boolean>;
2661
+ },
2662
+ ): Promise<unknown>;
2663
+
2664
+ export function encodeUnsignedFieldStreamMessageForProviderSignature(
2665
+ message: unknown,
2666
+ ): Uint8Array;
2667
+
2668
+ export function verifyFieldStreamMessageProviderSignature(
2669
+ message: unknown,
2670
+ options: {
2671
+ providerPublicKey: Uint8Array | ArrayBuffer | ArrayBufferView;
2672
+ verify(
2673
+ publicKey: Uint8Array,
2674
+ payload: Uint8Array,
2675
+ signature: Uint8Array,
2676
+ ): boolean | Promise<boolean>;
2677
+ },
2678
+ ): Promise<unknown>;
2679
+
1966
2680
  export function extractGrantModuleDescriptor(
1967
2681
  grant: LicensingGrantMessage,
1968
2682
  ): LicensingGrantModuleDescriptor;