@smthrs/gateway 0.35.0 → 1.0.0-rc.4

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 (605) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/LICENSE +1 -1
  3. package/README.md +92 -0
  4. package/dist/cjs/Diagnosis.d.ts +275 -0
  5. package/dist/cjs/Diagnosis.d.ts.map +1 -0
  6. package/dist/cjs/Diagnosis.js +476 -0
  7. package/dist/cjs/Diagnosis.js.map +7 -0
  8. package/dist/cjs/EngineTrace.d.ts +76 -0
  9. package/dist/cjs/EngineTrace.d.ts.map +1 -0
  10. package/dist/cjs/EngineTrace.js +509 -0
  11. package/dist/cjs/EngineTrace.js.map +7 -0
  12. package/dist/cjs/GatewayError.d.ts +54 -0
  13. package/dist/cjs/GatewayError.d.ts.map +1 -0
  14. package/dist/cjs/GatewayError.js +51 -0
  15. package/dist/cjs/GatewayError.js.map +7 -0
  16. package/dist/cjs/GatewayProjection.d.ts +480 -0
  17. package/dist/cjs/GatewayProjection.d.ts.map +1 -0
  18. package/dist/cjs/GatewayProjection.js +471 -0
  19. package/dist/cjs/GatewayProjection.js.map +7 -0
  20. package/dist/cjs/GatewayRpcs.d.ts +1886 -0
  21. package/dist/cjs/GatewayRpcs.d.ts.map +1 -0
  22. package/dist/cjs/GatewayRpcs.js +121 -0
  23. package/dist/cjs/GatewayRpcs.js.map +7 -0
  24. package/dist/cjs/GatewaySchema.d.ts +3274 -0
  25. package/dist/cjs/GatewaySchema.d.ts.map +1 -0
  26. package/dist/cjs/GatewaySchema.js +141 -0
  27. package/dist/cjs/GatewaySchema.js.map +7 -0
  28. package/dist/cjs/GatewayServer.d.ts +427 -0
  29. package/dist/cjs/GatewayServer.d.ts.map +1 -0
  30. package/dist/cjs/GatewayServer.js +428 -0
  31. package/dist/cjs/GatewayServer.js.map +7 -0
  32. package/dist/cjs/HostBranchPresence.d.ts +19 -0
  33. package/dist/cjs/HostBranchPresence.d.ts.map +1 -0
  34. package/dist/cjs/HostBranchPresence.js +82 -0
  35. package/dist/cjs/HostBranchPresence.js.map +7 -0
  36. package/dist/cjs/Projections.d.ts +209 -0
  37. package/dist/cjs/Projections.d.ts.map +1 -0
  38. package/dist/cjs/Projections.js +906 -0
  39. package/dist/cjs/Projections.js.map +7 -0
  40. package/dist/cjs/RunDevTools.d.ts +181 -0
  41. package/dist/cjs/RunDevTools.d.ts.map +1 -0
  42. package/dist/cjs/RunDevTools.js +195 -0
  43. package/dist/cjs/RunDevTools.js.map +7 -0
  44. package/dist/cjs/RunHistory.d.ts +185 -0
  45. package/dist/cjs/RunHistory.d.ts.map +1 -0
  46. package/dist/cjs/RunHistory.js +68 -0
  47. package/dist/cjs/RunHistory.js.map +7 -0
  48. package/dist/cjs/RunTrace.d.ts +753 -0
  49. package/dist/cjs/RunTrace.d.ts.map +1 -0
  50. package/dist/cjs/RunTrace.js +1595 -0
  51. package/dist/cjs/RunTrace.js.map +7 -0
  52. package/dist/cjs/RuntimeBridge.d.ts +1386 -0
  53. package/dist/cjs/RuntimeBridge.d.ts.map +1 -0
  54. package/dist/cjs/RuntimeBridge.js +598 -0
  55. package/dist/cjs/RuntimeBridge.js.map +7 -0
  56. package/dist/cjs/bun/BunGateway.d.ts +20 -0
  57. package/dist/cjs/bun/BunGateway.d.ts.map +1 -0
  58. package/dist/cjs/bun/BunGateway.js +62 -0
  59. package/dist/cjs/bun/BunGateway.js.map +7 -0
  60. package/dist/cjs/index.d.ts +65 -0
  61. package/dist/cjs/index.d.ts.map +1 -0
  62. package/dist/cjs/index.js +59 -0
  63. package/dist/cjs/index.js.map +7 -0
  64. package/dist/cjs/internal/NativeGateway.d.ts +176 -0
  65. package/dist/cjs/internal/NativeGateway.d.ts.map +1 -0
  66. package/dist/cjs/internal/NativeGateway.js +187 -0
  67. package/dist/cjs/internal/NativeGateway.js.map +7 -0
  68. package/dist/cjs/internal/actionRenderings.d.ts +12 -0
  69. package/dist/cjs/internal/actionRenderings.d.ts.map +1 -0
  70. package/dist/cjs/internal/actionRenderings.js +224 -0
  71. package/dist/cjs/internal/actionRenderings.js.map +7 -0
  72. package/dist/cjs/internal/callEvents.d.ts +97 -0
  73. package/dist/cjs/internal/callEvents.d.ts.map +1 -0
  74. package/dist/cjs/internal/callEvents.js +169 -0
  75. package/dist/cjs/internal/callEvents.js.map +7 -0
  76. package/dist/cjs/internal/digestIndex.d.ts +31 -0
  77. package/dist/cjs/internal/digestIndex.d.ts.map +1 -0
  78. package/dist/cjs/internal/digestIndex.js +105 -0
  79. package/dist/cjs/internal/digestIndex.js.map +7 -0
  80. package/dist/cjs/internal/digestMemory.d.ts +19 -0
  81. package/dist/cjs/internal/digestMemory.d.ts.map +1 -0
  82. package/dist/cjs/internal/digestMemory.js +33 -0
  83. package/dist/cjs/internal/digestMemory.js.map +7 -0
  84. package/dist/cjs/internal/inspectLabels.d.ts +13 -0
  85. package/dist/cjs/internal/inspectLabels.d.ts.map +1 -0
  86. package/dist/cjs/internal/inspectLabels.js +29 -0
  87. package/dist/cjs/internal/inspectLabels.js.map +7 -0
  88. package/dist/cjs/internal/nativeResolution.d.ts +41 -0
  89. package/dist/cjs/internal/nativeResolution.d.ts.map +1 -0
  90. package/dist/cjs/internal/nativeResolution.js +62 -0
  91. package/dist/cjs/internal/nativeResolution.js.map +7 -0
  92. package/dist/cjs/internal/nodeEvents.d.ts +47 -0
  93. package/dist/cjs/internal/nodeEvents.d.ts.map +1 -0
  94. package/dist/cjs/internal/nodeEvents.js +60 -0
  95. package/dist/cjs/internal/nodeEvents.js.map +7 -0
  96. package/dist/cjs/node/NodeGateway.d.ts +16 -0
  97. package/dist/cjs/node/NodeGateway.d.ts.map +1 -0
  98. package/dist/cjs/node/NodeGateway.js +48 -0
  99. package/dist/cjs/node/NodeGateway.js.map +7 -0
  100. package/dist/cjs/package.json +1 -0
  101. package/dist/esm/Diagnosis.d.ts +275 -0
  102. package/dist/esm/Diagnosis.d.ts.map +1 -0
  103. package/dist/esm/Diagnosis.js +697 -0
  104. package/dist/esm/Diagnosis.js.map +1 -0
  105. package/dist/esm/EngineTrace.d.ts +76 -0
  106. package/dist/esm/EngineTrace.d.ts.map +1 -0
  107. package/dist/esm/EngineTrace.js +557 -0
  108. package/dist/esm/EngineTrace.js.map +1 -0
  109. package/dist/esm/GatewayError.d.ts +54 -0
  110. package/dist/esm/GatewayError.d.ts.map +1 -0
  111. package/dist/esm/GatewayError.js +60 -0
  112. package/dist/esm/GatewayError.js.map +1 -0
  113. package/dist/esm/GatewayProjection.d.ts +480 -0
  114. package/dist/esm/GatewayProjection.d.ts.map +1 -0
  115. package/dist/esm/GatewayProjection.js +799 -0
  116. package/dist/esm/GatewayProjection.js.map +1 -0
  117. package/dist/esm/GatewayRpcs.d.ts +1886 -0
  118. package/dist/esm/GatewayRpcs.d.ts.map +1 -0
  119. package/dist/esm/GatewayRpcs.js +145 -0
  120. package/dist/esm/GatewayRpcs.js.map +1 -0
  121. package/dist/esm/GatewaySchema.d.ts +3274 -0
  122. package/dist/esm/GatewaySchema.d.ts.map +1 -0
  123. package/dist/esm/GatewaySchema.js +244 -0
  124. package/dist/esm/GatewaySchema.js.map +1 -0
  125. package/dist/esm/GatewayServer.d.ts +427 -0
  126. package/dist/esm/GatewayServer.d.ts.map +1 -0
  127. package/dist/esm/GatewayServer.js +725 -0
  128. package/dist/esm/GatewayServer.js.map +1 -0
  129. package/dist/esm/HostBranchPresence.d.ts +19 -0
  130. package/dist/esm/HostBranchPresence.d.ts.map +1 -0
  131. package/dist/esm/HostBranchPresence.js +57 -0
  132. package/dist/esm/HostBranchPresence.js.map +1 -0
  133. package/dist/esm/Projections.d.ts +209 -0
  134. package/dist/esm/Projections.d.ts.map +1 -0
  135. package/dist/esm/Projections.js +1254 -0
  136. package/dist/esm/Projections.js.map +1 -0
  137. package/dist/esm/RunDevTools.d.ts +181 -0
  138. package/dist/esm/RunDevTools.d.ts.map +1 -0
  139. package/dist/esm/RunDevTools.js +281 -0
  140. package/dist/esm/RunDevTools.js.map +1 -0
  141. package/dist/esm/RunHistory.d.ts +185 -0
  142. package/dist/esm/RunHistory.d.ts.map +1 -0
  143. package/dist/esm/RunHistory.js +109 -0
  144. package/dist/esm/RunHistory.js.map +1 -0
  145. package/dist/esm/RunTrace.d.ts +753 -0
  146. package/dist/esm/RunTrace.d.ts.map +1 -0
  147. package/dist/esm/RunTrace.js +2106 -0
  148. package/dist/esm/RunTrace.js.map +1 -0
  149. package/dist/esm/RuntimeBridge.d.ts +1386 -0
  150. package/dist/esm/RuntimeBridge.d.ts.map +1 -0
  151. package/dist/esm/RuntimeBridge.js +659 -0
  152. package/dist/esm/RuntimeBridge.js.map +1 -0
  153. package/dist/esm/bun/BunGateway.d.ts +20 -0
  154. package/dist/esm/bun/BunGateway.d.ts.map +1 -0
  155. package/dist/esm/bun/BunGateway.js +32 -0
  156. package/dist/esm/bun/BunGateway.js.map +1 -0
  157. package/dist/esm/index.d.ts +65 -0
  158. package/dist/esm/index.d.ts.map +1 -0
  159. package/dist/esm/index.js +65 -0
  160. package/dist/esm/index.js.map +1 -0
  161. package/dist/esm/internal/NativeGateway.d.ts +176 -0
  162. package/dist/esm/internal/NativeGateway.d.ts.map +1 -0
  163. package/dist/esm/internal/NativeGateway.js +268 -0
  164. package/dist/esm/internal/NativeGateway.js.map +1 -0
  165. package/dist/esm/internal/actionRenderings.d.ts +12 -0
  166. package/dist/esm/internal/actionRenderings.d.ts.map +1 -0
  167. package/dist/esm/internal/actionRenderings.js +212 -0
  168. package/dist/esm/internal/actionRenderings.js.map +1 -0
  169. package/dist/esm/internal/callEvents.d.ts +97 -0
  170. package/dist/esm/internal/callEvents.d.ts.map +1 -0
  171. package/dist/esm/internal/callEvents.js +206 -0
  172. package/dist/esm/internal/callEvents.js.map +1 -0
  173. package/dist/esm/internal/digestIndex.d.ts +31 -0
  174. package/dist/esm/internal/digestIndex.d.ts.map +1 -0
  175. package/dist/esm/internal/digestIndex.js +87 -0
  176. package/dist/esm/internal/digestIndex.js.map +1 -0
  177. package/dist/esm/internal/digestMemory.d.ts +19 -0
  178. package/dist/esm/internal/digestMemory.d.ts.map +1 -0
  179. package/dist/esm/internal/digestMemory.js +23 -0
  180. package/dist/esm/internal/digestMemory.js.map +1 -0
  181. package/dist/esm/internal/inspectLabels.d.ts +13 -0
  182. package/dist/esm/internal/inspectLabels.d.ts.map +1 -0
  183. package/dist/esm/internal/inspectLabels.js +17 -0
  184. package/dist/esm/internal/inspectLabels.js.map +1 -0
  185. package/dist/esm/internal/nativeResolution.d.ts +41 -0
  186. package/dist/esm/internal/nativeResolution.d.ts.map +1 -0
  187. package/dist/esm/internal/nativeResolution.js +78 -0
  188. package/dist/esm/internal/nativeResolution.js.map +1 -0
  189. package/dist/esm/internal/nodeEvents.d.ts +47 -0
  190. package/dist/esm/internal/nodeEvents.d.ts.map +1 -0
  191. package/dist/esm/internal/nodeEvents.js +60 -0
  192. package/dist/esm/internal/nodeEvents.js.map +1 -0
  193. package/dist/esm/node/NodeGateway.d.ts +16 -0
  194. package/dist/esm/node/NodeGateway.d.ts.map +1 -0
  195. package/dist/esm/node/NodeGateway.js +13 -0
  196. package/dist/esm/node/NodeGateway.js.map +1 -0
  197. package/dist/vendor/adapters.json +2707 -0
  198. package/dist/vendor/bun/BunChildProcessSpawner.d.ts +7 -0
  199. package/dist/vendor/bun/BunChildProcessSpawner.js +14 -0
  200. package/dist/vendor/bun/BunClusterHttp.d.ts +83 -0
  201. package/dist/vendor/bun/BunClusterHttp.js +39 -0
  202. package/dist/vendor/bun/BunClusterSocket.d.ts +65 -0
  203. package/dist/vendor/bun/BunClusterSocket.js +22 -0
  204. package/dist/vendor/bun/BunCrypto.d.ts +10 -0
  205. package/dist/vendor/bun/BunCrypto.js +8 -0
  206. package/dist/vendor/bun/BunFileSystem.d.ts +10 -0
  207. package/dist/vendor/bun/BunFileSystem.js +9 -0
  208. package/dist/vendor/bun/BunHttpClient.d.ts +9 -0
  209. package/dist/vendor/bun/BunHttpClient.js +1 -0
  210. package/dist/vendor/bun/BunHttpPlatform.d.ts +10 -0
  211. package/dist/vendor/bun/BunHttpPlatform.js +11 -0
  212. package/dist/vendor/bun/BunHttpServer.d.ts +142 -0
  213. package/dist/vendor/bun/BunHttpServer.js +38 -0
  214. package/dist/vendor/bun/BunHttpServerRequest.d.ts +18 -0
  215. package/dist/vendor/bun/BunHttpServerRequest.js +7 -0
  216. package/dist/vendor/bun/BunMultipart.d.ts +31 -0
  217. package/dist/vendor/bun/BunMultipart.js +12 -0
  218. package/dist/vendor/bun/BunPath.d.ts +24 -0
  219. package/dist/vendor/bun/BunPath.js +12 -0
  220. package/dist/vendor/bun/BunRedis.d.ts +49 -0
  221. package/dist/vendor/bun/BunRedis.js +11 -0
  222. package/dist/vendor/bun/BunRuntime.d.ts +85 -0
  223. package/dist/vendor/bun/BunRuntime.js +8 -0
  224. package/dist/vendor/bun/BunServices.d.ts +34 -0
  225. package/dist/vendor/bun/BunServices.js +23 -0
  226. package/dist/vendor/bun/BunSink.d.ts +8 -0
  227. package/dist/vendor/bun/BunSink.js +12 -0
  228. package/dist/vendor/bun/BunSocket.d.ts +40 -0
  229. package/dist/vendor/bun/BunSocket.js +29 -0
  230. package/dist/vendor/bun/BunSocketServer.d.ts +8 -0
  231. package/dist/vendor/bun/BunSocketServer.js +21 -0
  232. package/dist/vendor/bun/BunStdio.d.ts +11 -0
  233. package/dist/vendor/bun/BunStdio.js +10 -0
  234. package/dist/vendor/bun/BunStream.d.ts +19 -0
  235. package/dist/vendor/bun/BunStream.js +30 -0
  236. package/dist/vendor/bun/BunTerminal.d.ts +21 -0
  237. package/dist/vendor/bun/BunTerminal.js +10 -0
  238. package/dist/vendor/bun/BunWorker.d.ts +20 -0
  239. package/dist/vendor/bun/BunWorker.js +9 -0
  240. package/dist/vendor/bun/BunWorkerRunner.d.ts +12 -0
  241. package/dist/vendor/bun/BunWorkerRunner.js +7 -0
  242. package/dist/vendor/bun/LICENSE +21 -0
  243. package/dist/vendor/bun/index.d.ts +92 -0
  244. package/dist/vendor/bun/index.js +107 -0
  245. package/dist/vendor/chunk-2GCOZTTW.js +48 -0
  246. package/dist/vendor/chunk-37CUR3PO.js +81 -0
  247. package/dist/vendor/chunk-3ARKKENZ.js +45 -0
  248. package/dist/vendor/chunk-3NV2UDBI.js +7 -0
  249. package/dist/vendor/chunk-3OSW7CT7.js +143 -0
  250. package/dist/vendor/chunk-62R63L74.js +62 -0
  251. package/dist/vendor/chunk-6AQLBC2I.js +118 -0
  252. package/dist/vendor/chunk-6C5H7S6B.js +18 -0
  253. package/dist/vendor/chunk-6DY5RBZD.js +85 -0
  254. package/dist/vendor/chunk-6UPBD47P.js +53 -0
  255. package/dist/vendor/chunk-AVVVN75Z.js +96 -0
  256. package/dist/vendor/chunk-B4DHEMBB.js +14 -0
  257. package/dist/vendor/chunk-BCK3NJOX.js +15 -0
  258. package/dist/vendor/chunk-BFBIHJ6X.js +0 -0
  259. package/dist/vendor/chunk-CES4OUM4.js +63 -0
  260. package/dist/vendor/chunk-D64L6YND.js +59 -0
  261. package/dist/vendor/chunk-DS2R6WOM.js +18 -0
  262. package/dist/vendor/chunk-DX4Z23DM.js +65 -0
  263. package/dist/vendor/chunk-DZ2VOUDP.js +564 -0
  264. package/dist/vendor/chunk-FOXN6JPJ.js +61 -0
  265. package/dist/vendor/chunk-FPQF7CR5.js +55 -0
  266. package/dist/vendor/chunk-FUTCTCEG.js +20 -0
  267. package/dist/vendor/chunk-GUPAV2YZ.js +18 -0
  268. package/dist/vendor/chunk-H2Z2Y4QH.js +70 -0
  269. package/dist/vendor/chunk-HAEDVSSM.js +129 -0
  270. package/dist/vendor/chunk-HY7BBL3K.js +93 -0
  271. package/dist/vendor/chunk-IFTTT6D5.js +31 -0
  272. package/dist/vendor/chunk-KQDSNB7M.js +26 -0
  273. package/dist/vendor/chunk-LIHLXXGQ.js +26 -0
  274. package/dist/vendor/chunk-LKCGQEE5.js +28 -0
  275. package/dist/vendor/chunk-MH2J3BYB.js +0 -0
  276. package/dist/vendor/chunk-ML2NAFH2.js +131 -0
  277. package/dist/vendor/chunk-MLFIZ5O2.js +0 -0
  278. package/dist/vendor/chunk-MLKGABMK.js +9 -0
  279. package/dist/vendor/chunk-MSCLEMYX.js +71 -0
  280. package/dist/vendor/chunk-OBWXQKVP.js +57 -0
  281. package/dist/vendor/chunk-QR557K66.js +20 -0
  282. package/dist/vendor/chunk-R4QUY7DH.js +18 -0
  283. package/dist/vendor/chunk-RGECXXJS.js +18 -0
  284. package/dist/vendor/chunk-TFY7W6D4.js +36 -0
  285. package/dist/vendor/chunk-TGPIVY4A.js +104 -0
  286. package/dist/vendor/chunk-TGXCX6W3.js +398 -0
  287. package/dist/vendor/chunk-TOHSFXMV.js +437 -0
  288. package/dist/vendor/chunk-UHIDPUFF.js +34 -0
  289. package/dist/vendor/chunk-ULT6CWUI.js +109 -0
  290. package/dist/vendor/chunk-UXBGYQR3.js +18 -0
  291. package/dist/vendor/chunk-V6LUGQ7O.js +21 -0
  292. package/dist/vendor/chunk-W4OASVX6.js +92 -0
  293. package/dist/vendor/chunk-WAII54GA.js +18 -0
  294. package/dist/vendor/chunk-WECQDT36.js +426 -0
  295. package/dist/vendor/chunk-WHKMOC7Z.js +28 -0
  296. package/dist/vendor/chunk-WVFOZ2UL.js +40 -0
  297. package/dist/vendor/chunk-X73E2UPI.js +18 -0
  298. package/dist/vendor/chunk-XCYARUII.js +63 -0
  299. package/dist/vendor/chunk-XFEVTDVD.js +34 -0
  300. package/dist/vendor/chunk-XFZZYSJ4.js +22 -0
  301. package/dist/vendor/chunk-XJWJXLXJ.js +18 -0
  302. package/dist/vendor/chunk-XY3Q62EO.js +18 -0
  303. package/dist/vendor/chunk-YDASSC75.js +394 -0
  304. package/dist/vendor/chunk-Z6C7SO5Z.js +507 -0
  305. package/dist/vendor/chunk-Z7QNPJEB.js +229 -0
  306. package/dist/vendor/chunk-Z7QPP4YH.js +249 -0
  307. package/dist/vendor/chunk-ZCHYLHJH.js +86 -0
  308. package/dist/vendor/chunk-ZIQVYVMA.js +22 -0
  309. package/dist/vendor/chunk-ZPIG2CUA.js +34 -0
  310. package/dist/vendor/cjs/bun/BunChildProcessSpawner.d.ts +7 -0
  311. package/dist/vendor/cjs/bun/BunChildProcessSpawner.js +1 -0
  312. package/dist/vendor/cjs/bun/BunClusterHttp.d.ts +83 -0
  313. package/dist/vendor/cjs/bun/BunClusterHttp.js +1 -0
  314. package/dist/vendor/cjs/bun/BunClusterSocket.d.ts +65 -0
  315. package/dist/vendor/cjs/bun/BunClusterSocket.js +1 -0
  316. package/dist/vendor/cjs/bun/BunCrypto.d.ts +10 -0
  317. package/dist/vendor/cjs/bun/BunCrypto.js +1 -0
  318. package/dist/vendor/cjs/bun/BunFileSystem.d.ts +10 -0
  319. package/dist/vendor/cjs/bun/BunFileSystem.js +1 -0
  320. package/dist/vendor/cjs/bun/BunHttpClient.d.ts +9 -0
  321. package/dist/vendor/cjs/bun/BunHttpClient.js +1 -0
  322. package/dist/vendor/cjs/bun/BunHttpPlatform.d.ts +10 -0
  323. package/dist/vendor/cjs/bun/BunHttpPlatform.js +1 -0
  324. package/dist/vendor/cjs/bun/BunHttpServer.d.ts +142 -0
  325. package/dist/vendor/cjs/bun/BunHttpServer.js +1 -0
  326. package/dist/vendor/cjs/bun/BunHttpServerRequest.d.ts +18 -0
  327. package/dist/vendor/cjs/bun/BunHttpServerRequest.js +1 -0
  328. package/dist/vendor/cjs/bun/BunMultipart.d.ts +31 -0
  329. package/dist/vendor/cjs/bun/BunMultipart.js +1 -0
  330. package/dist/vendor/cjs/bun/BunPath.d.ts +24 -0
  331. package/dist/vendor/cjs/bun/BunPath.js +1 -0
  332. package/dist/vendor/cjs/bun/BunRedis.d.ts +49 -0
  333. package/dist/vendor/cjs/bun/BunRedis.js +1 -0
  334. package/dist/vendor/cjs/bun/BunRuntime.d.ts +85 -0
  335. package/dist/vendor/cjs/bun/BunRuntime.js +1 -0
  336. package/dist/vendor/cjs/bun/BunServices.d.ts +34 -0
  337. package/dist/vendor/cjs/bun/BunServices.js +1 -0
  338. package/dist/vendor/cjs/bun/BunSink.d.ts +8 -0
  339. package/dist/vendor/cjs/bun/BunSink.js +1 -0
  340. package/dist/vendor/cjs/bun/BunSocket.d.ts +40 -0
  341. package/dist/vendor/cjs/bun/BunSocket.js +1 -0
  342. package/dist/vendor/cjs/bun/BunSocketServer.d.ts +8 -0
  343. package/dist/vendor/cjs/bun/BunSocketServer.js +1 -0
  344. package/dist/vendor/cjs/bun/BunStdio.d.ts +11 -0
  345. package/dist/vendor/cjs/bun/BunStdio.js +1 -0
  346. package/dist/vendor/cjs/bun/BunStream.d.ts +19 -0
  347. package/dist/vendor/cjs/bun/BunStream.js +1 -0
  348. package/dist/vendor/cjs/bun/BunTerminal.d.ts +21 -0
  349. package/dist/vendor/cjs/bun/BunTerminal.js +1 -0
  350. package/dist/vendor/cjs/bun/BunWorker.d.ts +20 -0
  351. package/dist/vendor/cjs/bun/BunWorker.js +1 -0
  352. package/dist/vendor/cjs/bun/BunWorkerRunner.d.ts +12 -0
  353. package/dist/vendor/cjs/bun/BunWorkerRunner.js +1 -0
  354. package/dist/vendor/cjs/bun/index.d.ts +92 -0
  355. package/dist/vendor/cjs/bun/index.js +1 -0
  356. package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
  357. package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
  358. package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
  359. package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
  360. package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
  361. package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
  362. package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
  363. package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
  364. package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
  365. package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
  366. package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
  367. package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
  368. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
  369. package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
  370. package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
  371. package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
  372. package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
  373. package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
  374. package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
  375. package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
  376. package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
  377. package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
  378. package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
  379. package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
  380. package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
  381. package/dist/vendor/cjs/node/NodePath.js +1 -0
  382. package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
  383. package/dist/vendor/cjs/node/NodeRedis.js +1 -0
  384. package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
  385. package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
  386. package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
  387. package/dist/vendor/cjs/node/NodeServices.js +1 -0
  388. package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
  389. package/dist/vendor/cjs/node/NodeSink.js +1 -0
  390. package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
  391. package/dist/vendor/cjs/node/NodeSocket.js +1 -0
  392. package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
  393. package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
  394. package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
  395. package/dist/vendor/cjs/node/NodeStdio.js +1 -0
  396. package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
  397. package/dist/vendor/cjs/node/NodeStream.js +1 -0
  398. package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
  399. package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
  400. package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
  401. package/dist/vendor/cjs/node/NodeWorker.js +1 -0
  402. package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
  403. package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
  404. package/dist/vendor/cjs/node/Undici.d.ts +28 -0
  405. package/dist/vendor/cjs/node/Undici.js +1 -0
  406. package/dist/vendor/cjs/node/index.d.ts +100 -0
  407. package/dist/vendor/cjs/node/index.js +1 -0
  408. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  409. package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
  410. package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
  411. package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
  412. package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
  413. package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
  414. package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
  415. package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
  416. package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
  417. package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
  418. package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
  419. package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
  420. package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
  421. package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
  422. package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
  423. package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
  424. package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
  425. package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
  426. package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
  427. package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
  428. package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
  429. package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
  430. package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
  431. package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
  432. package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
  433. package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
  434. package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
  435. package/dist/vendor/cjs/node-shared/index.js +1 -0
  436. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  437. package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
  438. package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
  439. package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
  440. package/dist/vendor/cjs/package.json +1 -0
  441. package/dist/vendor/cjs/platform-bun.d.ts +92 -0
  442. package/dist/vendor/cjs/platform-bun.js +1 -0
  443. package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
  444. package/dist/vendor/cjs/platform-node-shared.js +1 -0
  445. package/dist/vendor/cjs/platform-node.d.ts +100 -0
  446. package/dist/vendor/cjs/platform-node.js +1 -0
  447. package/dist/vendor/node/LICENSE +21 -0
  448. package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
  449. package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
  450. package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
  451. package/dist/vendor/node/NodeClusterHttp.js +43 -0
  452. package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
  453. package/dist/vendor/node/NodeClusterSocket.js +30 -0
  454. package/dist/vendor/node/NodeCrypto.d.ts +10 -0
  455. package/dist/vendor/node/NodeCrypto.js +8 -0
  456. package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
  457. package/dist/vendor/node/NodeFileSystem.js +9 -0
  458. package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
  459. package/dist/vendor/node/NodeHttpClient.js +46 -0
  460. package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
  461. package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
  462. package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
  463. package/dist/vendor/node/NodeHttpPlatform.js +16 -0
  464. package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
  465. package/dist/vendor/node/NodeHttpServer.js +46 -0
  466. package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
  467. package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
  468. package/dist/vendor/node/NodeMultipart.d.ts +46 -0
  469. package/dist/vendor/node/NodeMultipart.js +15 -0
  470. package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
  471. package/dist/vendor/node/NodeMultipartParser.js +11 -0
  472. package/dist/vendor/node/NodePath.d.ts +27 -0
  473. package/dist/vendor/node/NodePath.js +12 -0
  474. package/dist/vendor/node/NodeRedis.d.ts +74 -0
  475. package/dist/vendor/node/NodeRedis.js +11 -0
  476. package/dist/vendor/node/NodeRuntime.d.ts +85 -0
  477. package/dist/vendor/node/NodeRuntime.js +8 -0
  478. package/dist/vendor/node/NodeServices.d.ts +34 -0
  479. package/dist/vendor/node/NodeServices.js +23 -0
  480. package/dist/vendor/node/NodeSink.d.ts +8 -0
  481. package/dist/vendor/node/NodeSink.js +12 -0
  482. package/dist/vendor/node/NodeSocket.d.ts +38 -0
  483. package/dist/vendor/node/NodeSocket.js +31 -0
  484. package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
  485. package/dist/vendor/node/NodeSocketServer.js +21 -0
  486. package/dist/vendor/node/NodeStdio.d.ts +11 -0
  487. package/dist/vendor/node/NodeStdio.js +10 -0
  488. package/dist/vendor/node/NodeStream.d.ts +8 -0
  489. package/dist/vendor/node/NodeStream.js +27 -0
  490. package/dist/vendor/node/NodeTerminal.d.ts +21 -0
  491. package/dist/vendor/node/NodeTerminal.js +10 -0
  492. package/dist/vendor/node/NodeWorker.d.ts +22 -0
  493. package/dist/vendor/node/NodeWorker.js +9 -0
  494. package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
  495. package/dist/vendor/node/NodeWorkerRunner.js +7 -0
  496. package/dist/vendor/node/Undici.d.ts +28 -0
  497. package/dist/vendor/node/Undici.js +9 -0
  498. package/dist/vendor/node/index.d.ts +100 -0
  499. package/dist/vendor/node/index.js +115 -0
  500. package/dist/vendor/node-shared/LICENSE +21 -0
  501. package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
  502. package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
  503. package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
  504. package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
  505. package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
  506. package/dist/vendor/node-shared/NodeCrypto.js +9 -0
  507. package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
  508. package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
  509. package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
  510. package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
  511. package/dist/vendor/node-shared/NodePath.d.ts +27 -0
  512. package/dist/vendor/node-shared/NodePath.js +11 -0
  513. package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
  514. package/dist/vendor/node-shared/NodeRuntime.js +7 -0
  515. package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
  516. package/dist/vendor/node-shared/NodeSink.js +11 -0
  517. package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
  518. package/dist/vendor/node-shared/NodeSocket.js +23 -0
  519. package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
  520. package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
  521. package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
  522. package/dist/vendor/node-shared/NodeStdio.js +9 -0
  523. package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
  524. package/dist/vendor/node-shared/NodeStream.js +26 -0
  525. package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
  526. package/dist/vendor/node-shared/NodeTerminal.js +9 -0
  527. package/dist/vendor/node-shared/index.d.ts +56 -0
  528. package/dist/vendor/node-shared/index.js +58 -0
  529. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
  530. package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
  531. package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
  532. package/dist/vendor/node-shared/internal/utils.js +7 -0
  533. package/dist/vendor/platform-bun.d.ts +92 -0
  534. package/dist/vendor/platform-bun.js +107 -0
  535. package/dist/vendor/platform-node-shared.d.ts +56 -0
  536. package/dist/vendor/platform-node-shared.js +58 -0
  537. package/dist/vendor/platform-node.d.ts +100 -0
  538. package/dist/vendor/platform-node.js +115 -0
  539. package/docs/README.md +158 -0
  540. package/docs/api.md +601 -0
  541. package/docs/concepts/projections.md +250 -0
  542. package/docs/concepts/subscriptions.md +204 -0
  543. package/docs/concepts/trust-boundary.md +256 -0
  544. package/docs/guides/diagnose-a-run.md +115 -0
  545. package/docs/guides/follow-a-run.md +150 -0
  546. package/docs/guides/host-the-gateway.md +153 -0
  547. package/docs/guides/read-a-projection.md +138 -0
  548. package/docs/guides/serve-beyond-loopback.md +166 -0
  549. package/docs/guides/submit-an-approval.md +187 -0
  550. package/docs/guides/testing.md +148 -0
  551. package/docs/installation.md +89 -0
  552. package/docs/quickstart.md +200 -0
  553. package/docs/troubleshooting.md +355 -0
  554. package/package.json +264 -32
  555. package/src/Diagnosis.ts +892 -0
  556. package/src/EngineTrace.ts +627 -0
  557. package/src/GatewayError.ts +71 -0
  558. package/src/GatewayProjection.ts +959 -0
  559. package/src/GatewayRpcs.ts +179 -0
  560. package/src/GatewaySchema.ts +516 -0
  561. package/src/GatewayServer.ts +932 -0
  562. package/src/HostBranchPresence.ts +76 -0
  563. package/src/Projections.ts +1735 -0
  564. package/src/RunDevTools.ts +394 -0
  565. package/src/RunHistory.ts +174 -0
  566. package/src/RunTrace.ts +2796 -0
  567. package/src/RuntimeBridge.ts +835 -0
  568. package/src/bun/BunGateway.ts +52 -0
  569. package/src/index.ts +77 -0
  570. package/src/internal/NativeGateway.ts +360 -0
  571. package/src/internal/actionRenderings.ts +212 -0
  572. package/src/internal/callEvents.ts +257 -0
  573. package/src/internal/digestIndex.ts +134 -0
  574. package/src/internal/digestMemory.ts +27 -0
  575. package/src/internal/inspectLabels.ts +18 -0
  576. package/src/internal/nativeResolution.ts +103 -0
  577. package/src/internal/nodeEvents.ts +100 -0
  578. package/src/node/NodeGateway.ts +30 -0
  579. package/openapi.yaml +0 -29945
  580. package/src/README.md +0 -39
  581. package/src/api/README.md +0 -23
  582. package/src/api/apiCollectionNames.js +0 -10
  583. package/src/api/index.d.ts +0 -126
  584. package/src/api/index.js +0 -14
  585. package/src/api/normalizeApiRow.js +0 -36
  586. package/src/api/serializeAccountRow.js +0 -10
  587. package/src/api/serializeApprovalRow.js +0 -53
  588. package/src/api/serializeComparisonScoreRow.js +0 -18
  589. package/src/api/serializeCronRow.js +0 -30
  590. package/src/api/serializeDocRow.js +0 -20
  591. package/src/api/serializeMemoryFactRow.js +0 -21
  592. package/src/api/serializePromptRow.js +0 -10
  593. package/src/api/serializeRunEventRow.js +0 -28
  594. package/src/api/serializeRunRow.js +0 -93
  595. package/src/api/serializeScoreDetailRow.js +0 -25
  596. package/src/api/serializeScoreRow.js +0 -26
  597. package/src/api/serializeTicketRow.js +0 -20
  598. package/src/api/serializeWorkflowRow.js +0 -10
  599. package/src/auth/scopes.d.ts +0 -19
  600. package/src/auth/scopes.js +0 -164
  601. package/src/index.d.ts +0 -316
  602. package/src/index.js +0 -108
  603. package/src/rpc/gatewayRpcTypes.ts +0 -186
  604. package/src/rpc/index.d.ts +0 -223
  605. package/src/rpc/index.js +0 -2527
@@ -0,0 +1,52 @@
1
+ /** Bun HTTP adapter for the same authenticated workspace gateway protocol.
2
+ * @since 1.0.0
3
+ */
4
+
5
+ import * as BunHttpServer from "@effect/platform-bun/BunHttpServer"
6
+ import { Cause, Effect, Layer } from "effect"
7
+ import type { HttpServer } from "effect/unstable/http/HttpServer"
8
+ import type { ServeError } from "effect/unstable/http/HttpServerError"
9
+ import { GatewayError } from "../GatewayError.ts"
10
+ import type * as GatewayServer from "../GatewayServer.ts"
11
+ import * as NativeGateway from "../internal/NativeGateway.ts"
12
+
13
+ export { bearerPrincipal, scopedPrincipal } from "../internal/NativeGateway.ts"
14
+
15
+ /** TCP bind and existing gateway policy options supported by the Bun host.
16
+ * @since 1.0.0
17
+ * @category models
18
+ */
19
+ export type ServerOptions = Pick<
20
+ NativeGateway.ServerOptions,
21
+ "host" | "port" | "allowedHosts" | "listen" | "credential" | "heartbeatMillis" | "maxRequestBodyBytes"
22
+ >
23
+
24
+ const native = NativeGateway.makeLayer((options) =>
25
+ BunHttpServer.layerServer({
26
+ // Shared listenOptions has already supplied and admitted the bind host.
27
+ hostname: options.host!,
28
+ port: options.port ?? 7331
29
+ }).pipe(Layer.catchCause((cause): Layer.Layer<HttpServer, ServeError | GatewayError> => {
30
+ const failure = Cause.squash(cause)
31
+ const code = typeof failure === "object" && failure !== null && "code" in failure ? failure.code : undefined
32
+ if (Cause.hasInterruptsOnly(cause) || !["EADDRINUSE", "EACCES", "EADDRNOTAVAIL"].includes(String(code))) {
33
+ return Layer.effectContext<HttpServer, ServeError | GatewayError, never>(Effect.failCause(cause))
34
+ }
35
+ // The errno is safe to keep: NativeGateway logs it for the operator and
36
+ // strips it from the refusal every bearer holder sees.
37
+ return Layer.effectContext<HttpServer, ServeError | GatewayError, never>(Effect.fail(
38
+ new GatewayError({
39
+ code: "bind_failed",
40
+ message: "The gateway socket could not be bound",
41
+ cause: { _tag: "BunServeError", code: String(code) }
42
+ })
43
+ ))
44
+ }))
45
+ )
46
+
47
+ /** Serves the existing HTTP/WebSocket gateway using Bun.serve in the caller's scope.
48
+ * @since 1.0.0
49
+ * @category layers
50
+ */
51
+ export const layer = (health: GatewayServer.Health, options: ServerOptions = NativeGateway.defaultServerOptions) =>
52
+ native(health, options)
package/src/index.ts ADDED
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The assembled workspace gateway: one HTTP surface carrying the control
3
+ * plane, the sync read path, the served projections, and a health probe.
4
+ *
5
+ * The package also declares the wire schemas those mounts speak and the pure
6
+ * folds that compute every served row from control-plane facts.
7
+ *
8
+ * @since 0.1.0
9
+ */
10
+
11
+ /**
12
+ * @since 0.1.0 @category errors
13
+ */
14
+ export * as GatewayError from "./GatewayError.ts"
15
+
16
+ /**
17
+ * @since 0.1.0 @category models
18
+ */
19
+ export * as GatewaySchema from "./GatewaySchema.ts"
20
+
21
+ /**
22
+ * @since 1.0.0 @category projections
23
+ */
24
+ export * as Diagnosis from "./Diagnosis.ts"
25
+
26
+ /**
27
+ * @since 1.0.0 @category projections
28
+ */
29
+ export * as RunTrace from "./RunTrace.ts"
30
+
31
+ /**
32
+ * @since 1.0.0 @category projections
33
+ */
34
+ export * as EngineTrace from "./EngineTrace.ts"
35
+
36
+ /**
37
+ * @since 1.0.0 @category projections
38
+ */
39
+ export * as RunDevTools from "./RunDevTools.ts"
40
+
41
+ /**
42
+ * @since 1.0.0 @category projections
43
+ */
44
+ export * as GatewayProjection from "./GatewayProjection.ts"
45
+
46
+ /**
47
+ * @since 1.0.0 @category rpc
48
+ */
49
+ export * as GatewayRpcs from "./GatewayRpcs.ts"
50
+
51
+ /**
52
+ * @since 1.0.0 @category layers
53
+ */
54
+ export * as GatewayServer from "./GatewayServer.ts"
55
+
56
+ /**
57
+ * @since 1.0.0 @category services
58
+ */
59
+ export * as Projections from "./Projections.ts"
60
+
61
+ /**
62
+ * @since 1.0.0 @category rpc
63
+ */
64
+ export * as RunHistory from "./RunHistory.ts"
65
+
66
+ /**
67
+ * @since 1.0.0 @category runtime bridge
68
+ */
69
+ export * as RuntimeBridge from "./RuntimeBridge.ts"
70
+
71
+ /**
72
+ * The canonical durable journal synchronization package.
73
+ *
74
+ * @since 0.1.0
75
+ * @category services
76
+ */
77
+ export * as Sync from "@smthrs/sync"
@@ -0,0 +1,360 @@
1
+ /**
2
+ * Shared native gateway bind policy, credential policy,
3
+ * and the one composition a `smithers serve` verb hosts.
4
+ *
5
+ * Two rules decide whether a bind is allowed, and both fail closed:
6
+ *
7
+ * 1. A non-loopback host requires an explicit `listen` opt-in. Binding
8
+ * `0.0.0.0` because a port was free is how a workspace gateway ends up on
9
+ * a shared network by accident.
10
+ * 2. A non-loopback bind requires a bearer credential. The control plane can
11
+ * launch runs, cancel them, and approve capability grants; reachable from
12
+ * another machine, an unauthenticated one is a remote execution service.
13
+ *
14
+ * A loopback bind with no network credential allows anonymous reads; approval
15
+ * decisions require the session operator token. Ingress still checks Host and
16
+ * Origin so a web page cannot exercise the loopback endpoint.
17
+ *
18
+ * @since 1.0.0
19
+ */
20
+
21
+ import { ControlRpcs, ScopedToken } from "@smthrs/control"
22
+ import { Effect, Layer } from "effect"
23
+ import { HttpRouter } from "effect/unstable/http"
24
+ import type { HttpServer } from "effect/unstable/http/HttpServer"
25
+ import type { ServeError } from "effect/unstable/http/HttpServerError"
26
+ import { RpcSerialization } from "effect/unstable/rpc"
27
+ import type { ListenOptions } from "node:net"
28
+ import { GatewayError, settingRefusal } from "../GatewayError.ts"
29
+ import * as GatewayServer from "../GatewayServer.ts"
30
+ import type * as RuntimeBridge from "../RuntimeBridge.ts"
31
+
32
+ /**
33
+ * Where the gateway binds, and whether a non-loopback bind was asked for.
34
+ *
35
+ * @since 1.0.0
36
+ * @category models
37
+ */
38
+ export interface ServerOptions extends ListenOptions {
39
+ /** Additional accepted Host header names (without ports), for network or proxy access. */
40
+ readonly allowedHosts?: ReadonlyArray<string> | undefined
41
+ /** The `--listen` opt-in required for a non-loopback host. */
42
+ readonly listen?: boolean | undefined
43
+ /** The shared bearer credential, required for a non-loopback bind. */
44
+ readonly credential?: string | undefined
45
+ /** Per-session approval token on credential-free loopback. Read calls remain anonymous. */
46
+ readonly operatorToken?: string | undefined
47
+ /**
48
+ * How often an idle followed `Watch` on `/rpc/ws` and an idle followed
49
+ * `Projection.Subscribe` on `/projections/ws` emit a keepalive frame. Unset,
50
+ * both run at `Projections.heartbeatIntervalMillis` unless the supplied
51
+ * `Projections` service was built with its own cadence. A relay with an idle
52
+ * cut shorter than that one needs a shorter cadence here.
53
+ */
54
+ readonly heartbeatMillis?: number | undefined
55
+ /** Maximum bytes accepted on one HTTP RPC request. Default one MiB. */
56
+ readonly maxRequestBodyBytes?: number | undefined
57
+ /** Immutable identity of an opt-in packaged Flow runtime bridge. */
58
+ readonly runtimeBridge?: Omit<RuntimeBridge.Config, "authenticate"> | undefined
59
+ }
60
+
61
+ /**
62
+ * The default bind: loopback, port 7331, no credential.
63
+ *
64
+ * @since 1.0.0
65
+ * @category models
66
+ */
67
+ export const defaultServerOptions: ServerOptions = { host: "127.0.0.1", port: 7331 }
68
+
69
+ /**
70
+ * Whether a host names this machine only.
71
+ *
72
+ * @param host the host to classify
73
+ * @since 1.0.0
74
+ * @category predicates
75
+ */
76
+ export const isLoopbackHost = (host: string): boolean => GatewayServer.loopbackHostNames.includes(host)
77
+
78
+ /**
79
+ * The typed refusal a requested bind earns, or `undefined` when it is allowed.
80
+ *
81
+ * Every start-time rule this module enforces answers here as a `bind_failed`
82
+ * `GatewayError`, so a host that wants to report a refusal rather than crash on
83
+ * one asks this before it composes a layer. {@link listenOptions} and
84
+ * {@link layer} fail with exactly what this returns.
85
+ *
86
+ * @param options the requested bind
87
+ * @since 1.0.0
88
+ * @category constructors
89
+ */
90
+ export const bindRefusal = (options: ServerOptions): GatewayError | undefined => {
91
+ const setting = settingRefusal("The gateway keepalive cadence", options.heartbeatMillis) ??
92
+ settingRefusal("The gateway request body limit", options.maxRequestBodyBytes)
93
+ if (setting !== undefined) return setting
94
+ // The bridge authenticates only with the bearer credential, even on
95
+ // loopback, so a bridge without one would answer 401 to every request.
96
+ if (options.runtimeBridge !== undefined && (options.credential === undefined || options.credential === "")) {
97
+ return new GatewayError({
98
+ code: "bind_failed",
99
+ message: "Refusing to enable the runtime bridge without a bearer credential"
100
+ })
101
+ }
102
+ const host = options.host ?? "127.0.0.1"
103
+ if (isLoopbackHost(host)) return undefined
104
+ if (options.listen !== true) {
105
+ return new GatewayError({
106
+ code: "bind_failed",
107
+ message: `Refusing non-loopback gateway bind ${host} without an explicit --listen opt-in`
108
+ })
109
+ }
110
+ if (options.credential === undefined || options.credential === "") {
111
+ return new GatewayError({
112
+ code: "bind_failed",
113
+ message: `Refusing non-loopback gateway bind ${host} without a bearer credential`
114
+ })
115
+ }
116
+ return undefined
117
+ }
118
+
119
+ /**
120
+ * Applies the bind policy, returning the admitted Node options or a typed
121
+ * `bind_failed` refusal.
122
+ *
123
+ * @param options the requested bind
124
+ * @since 1.0.0
125
+ * @category constructors
126
+ */
127
+ export const listenOptions = (options: ServerOptions): Effect.Effect<ListenOptions, GatewayError> =>
128
+ Effect.suspend(() => {
129
+ const refusal = bindRefusal(options)
130
+ if (refusal !== undefined) return Effect.fail(refusal)
131
+ // `credential`, `listen`, and the keepalive cadence are this module's, not
132
+ // `node:net`'s: they are named here so the rest is exactly a bind.
133
+ const {
134
+ allowedHosts: _allowedHosts,
135
+ credential: _credential,
136
+ heartbeatMillis: _cadence,
137
+ listen: _listen,
138
+ maxRequestBodyBytes: _maxBody,
139
+ runtimeBridge: _runtimeBridge,
140
+ ...node
141
+ } = options
142
+ return Effect.succeed({ ...node, host: node.host ?? "127.0.0.1" })
143
+ })
144
+
145
+ /**
146
+ * The authentication both RPC mounts run under.
147
+ *
148
+ * A configured credential authenticates every request that presents it and
149
+ * stamps the same server-owned principal. A scoped token minted under that
150
+ * credential (`@smthrs/control` `ScopedToken`) authenticates only the
151
+ * procedures, run, or flow it names, until it expires, and stamps
152
+ * {@link scopedPrincipal}. With no credential the composition is
153
+ * loopback-only (see {@link listenOptions}) and every request runs as the
154
+ * anonymous read principal. A session operator token alone stamps the local
155
+ * operator for approval decisions; without it approvals are unauthorized.
156
+ *
157
+ * @param options the requested bind
158
+ * @since 1.0.0
159
+ * @category layers
160
+ */
161
+ export const layerAuth = (options: ServerOptions): Layer.Layer<ControlRpcs.ControlAuth> =>
162
+ options.credential === undefined || options.credential === ""
163
+ ? ControlRpcs.layerAuth({
164
+ authenticate: (headers) => {
165
+ const token = options.operatorToken
166
+ if (token === undefined || token === "") {
167
+ return Effect.succeed({ id: "loopback", kind: "anonymous", stampedAt: 0 })
168
+ }
169
+ return ControlRpcs.bearerAuthenticator({
170
+ token,
171
+ principal: { id: "local", kind: "operator" }
172
+ }).authenticate(headers).pipe(
173
+ Effect.catchTag(
174
+ "/control/Unauthorized",
175
+ () => Effect.succeed({ id: "loopback", kind: "anonymous", stampedAt: 0 })
176
+ )
177
+ )
178
+ }
179
+ }, gatewayRunVisibility)
180
+ : ControlRpcs.layerAuth(credentialAuthenticator(options.credential), gatewayRunVisibility)
181
+
182
+ /**
183
+ * Every identity this gateway stamps reads every run. They all stand for the
184
+ * one operator who holds the gateway's credential, or the machine's loopback
185
+ * user when there is none; a scoped token is that operator's grant, confined
186
+ * by the procedures, run, or flow it names rather than by who launched a run.
187
+ */
188
+ const gatewayRunVisibility: ControlRpcs.AuthOptions = { seesAllRuns: () => true }
189
+
190
+ /**
191
+ * The bearer credential itself, or a scoped token minted under it.
192
+ *
193
+ * The runtime bridge deliberately does not use this: it accepts the bearer
194
+ * alone, because a scoped token names control procedures and the bridge's
195
+ * versioned commands are not those.
196
+ */
197
+ const credentialAuthenticator = (credential: string): ControlRpcs.Authenticator =>
198
+ ControlRpcs.anyAuthenticator([
199
+ ControlRpcs.bearerAuthenticator({ token: credential, principal: bearerPrincipal }),
200
+ ScopedToken.authenticator({ key: credential, principal: scopedPrincipal })
201
+ ])
202
+
203
+ /**
204
+ * The identity stamped only after this gateway verifies its configured token.
205
+ * Hosts may explicitly delegate operator decisions to this exact identity.
206
+ * @category constants
207
+ * @since 1.0.0
208
+ */
209
+ export const bearerPrincipal = Object.freeze({ id: "gateway", kind: "bearer" })
210
+
211
+ /**
212
+ * The protected mounts a scoped token may reach: those guarded in band by
213
+ * `ControlAuth`, which checks each frame's procedure against the token, and
214
+ * the ticket exchange that opens their sockets.
215
+ * @category constants
216
+ * @since 1.0.0
217
+ */
218
+ export const scopedTokenPaths: ReadonlyArray<string> = [
219
+ "/rpc",
220
+ "/rpc/ws",
221
+ "/projections",
222
+ "/projections/ws",
223
+ "/auth/ticket"
224
+ ]
225
+
226
+ /**
227
+ * The identity stamped after this gateway verifies a scoped token minted
228
+ * under its configured credential. It is its own kind so that delegating
229
+ * approval to {@link bearerPrincipal} does not delegate it to every token
230
+ * minted from the bearer; a host that wants a scoped `approve:runs` token to
231
+ * decide delegates to this identity explicitly.
232
+ * @category constants
233
+ * @since 1.0.0
234
+ */
235
+ export const scopedPrincipal = Object.freeze({ id: "gateway", kind: "scoped" })
236
+
237
+ /**
238
+ * The ingress policy a requested bind runs behind.
239
+ *
240
+ * The accepted Host names are the loopback names, the operator's
241
+ * `allowedHosts`, and the concrete bind host itself, so `--host 192.168.1.10`
242
+ * is reachable at that address without naming it twice. A wildcard bind
243
+ * (`0.0.0.0` or `::`) adds nothing: every interface is not a Host name, and
244
+ * the operator names the reachable ones. Protected paths are authenticated
245
+ * before any request body is read.
246
+ *
247
+ * @param options the requested bind
248
+ * @since 1.0.0
249
+ * @category constructors
250
+ */
251
+ export const ingressOptions = (options: ServerOptions): GatewayServer.IngressOptions => {
252
+ const maxRequestBodyBytes = options.maxRequestBodyBytes
253
+ const host = options.host ?? "127.0.0.1"
254
+ const allowedHosts = [...GatewayServer.loopbackHostHeaderNames, ...options.allowedHosts ?? []]
255
+ const bindAuthority = URL.parse(`http://${host.includes(":") ? `[${host}]` : host}`)
256
+ if (host !== "0.0.0.0" && host !== "::" && bindAuthority !== null && !allowedHosts.includes(bindAuthority.hostname)) {
257
+ allowedHosts.push(bindAuthority.hostname)
258
+ }
259
+ if (options.credential === undefined || options.credential === "") {
260
+ return {
261
+ loopbackOnly: true,
262
+ ...(maxRequestBodyBytes === undefined ? {} : { maxRequestBodyBytes }),
263
+ allowedHosts
264
+ }
265
+ }
266
+ // The edge knows no call, so a scoped token passes here on its signature
267
+ // and expiry, and only toward the mounts whose every frame `ControlAuth`
268
+ // judges in band; journal sync and the runtime bridge take the bearer alone.
269
+ const bearer = ControlRpcs.bearerAuthenticator({ token: options.credential, principal: bearerPrincipal })
270
+ const scoped = credentialAuthenticator(options.credential)
271
+ return {
272
+ allowedHosts,
273
+ ...(maxRequestBodyBytes === undefined ? {} : { maxRequestBodyBytes }),
274
+ authorize: (headers, path) =>
275
+ (scopedTokenPaths.includes(path) ? scoped : bearer).authenticate(headers).pipe(
276
+ Effect.match({ onFailure: () => false, onSuccess: () => true })
277
+ )
278
+ }
279
+ }
280
+
281
+ const bindFailure = (failure: ServeError | GatewayError): GatewayError =>
282
+ new GatewayError({
283
+ code: "bind_failed",
284
+ message: "The gateway socket could not be bound",
285
+ cause: { _tag: failure._tag }
286
+ })
287
+
288
+ /**
289
+ * Fails the layer with the sanitized refusal every bearer holder may see, after
290
+ * logging the operator's copy: the requested authority and the operating-system
291
+ * cause (`EADDRINUSE`, `EACCES`, `EADDRNOTAVAIL`), which the wire error omits.
292
+ */
293
+ const mapServeError = <A, R>(
294
+ bind: ListenOptions,
295
+ server: Layer.Layer<A, ServeError | GatewayError, R>
296
+ ): Layer.Layer<A, GatewayError, R> =>
297
+ server.pipe(
298
+ Layer.catch((failure) =>
299
+ Layer.effectContext<A, GatewayError, never>(
300
+ Effect.logError({
301
+ message: "The gateway socket could not be bound",
302
+ host: bind.host,
303
+ port: bind.port,
304
+ cause: failure
305
+ }).pipe(Effect.andThen(Effect.fail(bindFailure(failure))))
306
+ )
307
+ )
308
+ )
309
+
310
+ /**
311
+ * Hosts the assembled gateway on an injected native HTTP server.
312
+ *
313
+ * Supplies the bind policy, the shared-credential authentication both RPC
314
+ * mounts run under, and newline-delimited JSON as the wire serialization. The
315
+ * caller supplies what the mounts read through: `Control`, `Projections`,
316
+ * `SyncServer`, and the `SyncAuth` middleware.
317
+ *
318
+ * The returned layer retains the concrete `HttpServer` service, so a caller
319
+ * that bound port 0 can read the ephemeral address it got.
320
+ *
321
+ * Policy refusals and operating-system listen failures both fail the layer as
322
+ * sanitized `bind_failed` `GatewayError` values.
323
+ *
324
+ * @param health the identity `GET /health` answers with
325
+ * @param options the requested bind
326
+ * @since 1.0.0
327
+ * @category layers
328
+ */
329
+ export const makeLayer = (
330
+ server: (options: ListenOptions) => Layer.Layer<HttpServer, ServeError | GatewayError>
331
+ ) =>
332
+ (
333
+ health: GatewayServer.Health,
334
+ options: ServerOptions = defaultServerOptions
335
+ ) =>
336
+ Layer.unwrap(
337
+ Effect.map(listenOptions(options), (nodeOptions) =>
338
+ HttpRouter.serve(
339
+ GatewayServer.layer(health, {
340
+ ...(options.heartbeatMillis === undefined ? {} : { heartbeatMillis: options.heartbeatMillis }),
341
+ ingress: ingressOptions(options),
342
+ ...(options.runtimeBridge === undefined ? {} : {
343
+ runtimeBridge: {
344
+ ...options.runtimeBridge,
345
+ authenticate: ControlRpcs.bearerAuthenticator({
346
+ // listenOptions rejects a runtime bridge without a credential.
347
+ token: options.credential!,
348
+ principal: bearerPrincipal
349
+ }).authenticate
350
+ }
351
+ })
352
+ }).pipe(
353
+ Layer.provide(layerAuth(options)),
354
+ Layer.provide(RpcSerialization.layerNdjson)
355
+ ),
356
+ { disableListenLog: true, disableLogger: true }
357
+ ).pipe(
358
+ Layer.provideMerge(mapServeError(nodeOptions, server(nodeOptions)))
359
+ ))
360
+ )