@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,627 @@
1
+ /**
2
+ * Recorded native evidence, decoded through the contracts that wrote it.
3
+ *
4
+ * @since 1.0.0
5
+ */
6
+
7
+ import { RunState } from "@smthrs/engine-store/RunState"
8
+ import { ResultEncoded } from "@smthrs/flow/Flow"
9
+ import * as EngineEvent from "@smthrs/journal/EngineEvent"
10
+ import * as JournalEvent from "@smthrs/journal/JournalEvent"
11
+ import { Option, Schema } from "effect"
12
+ import { inspectLabel } from "./internal/inspectLabels.ts"
13
+ import type { JournalRecord, SpanDetail, TraceBuilder } from "./RunTrace.ts"
14
+
15
+ // This is the private control bridge's envelope, not another engine contract.
16
+ const Envelope = Schema.Struct({
17
+ version: Schema.Literal(1),
18
+ executionId: JournalEvent.RunId,
19
+ generation: JournalEvent.NonNegativeQuantity,
20
+ sequence: JournalEvent.Seq,
21
+ eventId: Schema.String,
22
+ sourceId: JournalEvent.SourceId,
23
+ sourceSequence: JournalEvent.SourceSeq,
24
+ emittedAtMs: JournalEvent.TimestampMs,
25
+ eventType: Schema.NonEmptyString,
26
+ payload: Schema.Json,
27
+ meta: Schema.Json
28
+ })
29
+ type Envelope = typeof Envelope.Type
30
+
31
+ const decodeEnvelope = Schema.decodeUnknownOption(Envelope)
32
+ const decodeGraph = Schema.decodeUnknownOption(EngineEvent.NodeGraph)
33
+ const decodeScheduled = Schema.decodeUnknownOption(EngineEvent.NodeScheduledPayload)
34
+ const decodeSettled = Schema.decodeUnknownOption(EngineEvent.NodeSettledPayload)
35
+ const decodeAttempt = Schema.decodeUnknownOption(EngineEvent.AttemptPayload, { onExcessProperty: "error" })
36
+ const decodeState = Schema.decodeUnknownOption(EngineEvent.StatePayload, { onExcessProperty: "error" })
37
+ const decodeMarker = Schema.decodeUnknownOption(EngineEvent.CurrentAttempt)
38
+ const stateDecisions = [
39
+ "created",
40
+ "resumed",
41
+ "transitioned",
42
+ "handed-off",
43
+ "lineage-exhausted",
44
+ "round-invalid",
45
+ "quarantined",
46
+ "interrupt-released"
47
+ ] as const
48
+ const decodeDecision = Schema.decodeUnknownOption(Schema.Struct({
49
+ decision: Schema.Literals(stateDecisions),
50
+ status: Schema.optionalKey(Schema.Literals(["pending", "running", "suspended", "completed", "failed", "cancelled"])),
51
+ state: RunState
52
+ }))
53
+ // RunDriver's durable cancellation record has no run-decision counterpart.
54
+ const decodeCancellation = Schema.decodeUnknownOption(Schema.Struct({
55
+ outcome: Schema.Literal("cancelled"),
56
+ interruptedAtMs: JournalEvent.TimestampMs,
57
+ owner: Schema.String,
58
+ cascadedTo: Schema.optionalKey(Schema.Array(JournalEvent.RunId))
59
+ }))
60
+ const decodeResult = Schema.decodeUnknownOption(ResultEncoded, { onExcessProperty: "error" })
61
+
62
+ const json = (value: unknown): string => typeof value === "string" ? value : JSON.stringify(value)
63
+ const identity = (...parts: ReadonlyArray<string | number>) =>
64
+ parts.map((part) => encodeURIComponent(String(part))).join(":")
65
+ const span = (id: string, kind: TraceBuilder["kind"], label: string, at: number, detail: SpanDetail): TraceBuilder => ({
66
+ id,
67
+ kind,
68
+ label,
69
+ status: "recorded",
70
+ startedAt: at,
71
+ children: [],
72
+ detail
73
+ })
74
+ const detail = (row: JournalRecord, envelope: Envelope): SpanDetail => ({
75
+ sequence: row.sequence,
76
+ event: envelope.eventType,
77
+ fields: { ...envelope }
78
+ })
79
+ interface Execution {
80
+ readonly envelope: Envelope
81
+ readonly span: TraceBuilder
82
+ parentId?: string | undefined
83
+ parentExecutionId?: string | undefined
84
+ parentKnown?: boolean | undefined
85
+ flowName?: string | undefined
86
+ coherent: boolean
87
+ waits?: Map<string, { id: string; kind: "sleep" | "signal"; since: number; settledAt?: number }>
88
+ graph?: EngineEvent.NodeGraph | undefined
89
+ result?: { readonly value: unknown; readonly sequence: number } | undefined
90
+ failure?: EngineExecutionEvidence["failure"] | undefined
91
+ }
92
+
93
+ /**
94
+ * A render-only view of the same decoded execution facts; never persisted.
95
+ *
96
+ * @category models
97
+ * @since 1.0.0
98
+ */
99
+ export interface EngineExecutionEvidence {
100
+ readonly executionId: string
101
+ readonly generation: number
102
+ readonly spanId: string
103
+ readonly parentExecutionId?: string | undefined
104
+ readonly parentKnown: boolean
105
+ readonly flowName?: string | undefined
106
+ readonly input?: unknown | undefined
107
+ readonly coherent: boolean
108
+ /** Declared nodes, including work not reached at this journal cursor. */
109
+ readonly graph?: EngineEvent.NodeGraph | undefined
110
+ readonly status: string
111
+ /** Recorded clock and deferred registrations and their explicit settlements. */
112
+ readonly waits: ReadonlyArray<
113
+ { readonly id: string; readonly kind: "sleep" | "signal"; readonly since: number; readonly settledAt?: number }
114
+ >
115
+ readonly result?: { readonly value: unknown; readonly sequence: number } | undefined
116
+ /** Original classified failure bytes, never parsed from rendered detail. */
117
+ readonly failure?: {
118
+ readonly kind: "cause" | "error" | "defect" | "interrupted" | "encoding"
119
+ readonly value: unknown
120
+ readonly sequence: number
121
+ } | undefined
122
+ }
123
+ const decodeProjection = Schema.decodeUnknownOption(Schema.Struct({
124
+ version: Schema.Literal(1),
125
+ executionId: JournalEvent.RunId,
126
+ generation: JournalEvent.NonNegativeQuantity
127
+ }))
128
+
129
+ /**
130
+ * Observation completion is separate from the control run's terminal verdict.
131
+ *
132
+ * @category utilities
133
+ * @since 1.0.0
134
+ */
135
+ export const engineProjectionPending = (records: ReadonlyArray<JournalRecord> = []): boolean => {
136
+ const states = new Map<string, { generation: number; pending: boolean }>()
137
+ for (const row of [...records].sort((left, right) => (left.sequence ?? 0) - (right.sequence ?? 0))) {
138
+ if (row.kind === "control.engine.projection-gap") {
139
+ // The gap is rendered as missing evidence. Stop polling rather than
140
+ // disguising an observation failure as an indefinitely running task.
141
+ for (const state of states.values()) state.pending = false
142
+ continue
143
+ }
144
+ if (row.kind !== "control.engine.projection-started" && row.kind !== "control.engine.projection-settled") continue
145
+ const decoded = decodeProjection(row.payload)
146
+ if (Option.isNone(decoded)) continue
147
+ const { executionId, generation } = decoded.value
148
+ const current = states.get(executionId)
149
+ if (row.kind === "control.engine.projection-started") {
150
+ if (current === undefined || generation > current.generation) {
151
+ states.set(executionId, { generation, pending: true })
152
+ }
153
+ } else if (current?.generation === generation) current.pending = false
154
+ }
155
+ return [...states.values()].some((state) => state.pending)
156
+ }
157
+
158
+ /**
159
+ * Generations never share attempt identity. Native timestamps describe native
160
+ * work; the outer control sequence still determines the historical UI cursor.
161
+ * Only recorded parent IDs can nest executions. Ambiguous parent generations
162
+ * remain beside the root instead of guessing which historical parent owned them.
163
+ */
164
+ const foldEngineJournal = (records: ReadonlyArray<JournalRecord>) => {
165
+ const executions = new Map<string, Execution>()
166
+ const attempts = new Map<string, TraceBuilder>()
167
+ const notices: Array<TraceBuilder> = []
168
+ const nodes = new Map<string, TraceBuilder>()
169
+ const instances = new Map<string, number>()
170
+ const seen = new Map<string, string>()
171
+ for (const row of records) {
172
+ if (row.kind === "control.engine.projection-gap") {
173
+ const notice = span(
174
+ `engine-gap:${row.sequence ?? notices.length}`,
175
+ "event",
176
+ "Engine evidence gap",
177
+ row.occurredAt ?? 0,
178
+ {
179
+ sequence: row.sequence,
180
+ event: row.kind,
181
+ fields: { evidence: row.payload }
182
+ }
183
+ )
184
+ notice.status = "unknown"
185
+ notice.endedAt = notice.startedAt
186
+ notices.push(notice)
187
+ continue
188
+ }
189
+ if (row.kind !== "control.engine.event") continue
190
+ const decoded = decodeEnvelope(row.payload)
191
+ if (Option.isNone(decoded)) {
192
+ const notice = span(
193
+ `engine-invalid:${row.sequence ?? notices.length}`,
194
+ "event",
195
+ "Unreadable engine evidence",
196
+ row.occurredAt ?? 0,
197
+ {
198
+ sequence: row.sequence,
199
+ event: row.kind,
200
+ fields: { evidence: row.payload }
201
+ }
202
+ )
203
+ notice.status = "unknown"
204
+ notice.endedAt = notice.startedAt
205
+ notices.push(notice)
206
+ continue
207
+ }
208
+ const envelope = decoded.value
209
+ const key = identity(envelope.executionId, envelope.generation)
210
+ const eventKey = identity(key, envelope.sequence)
211
+ const previous = seen.get(eventKey)
212
+ if (previous !== undefined) {
213
+ if (previous !== JSON.stringify(envelope)) {
214
+ const conflict = executions.get(key)
215
+ conflict!.coherent = false
216
+ }
217
+ continue
218
+ }
219
+ seen.set(eventKey, JSON.stringify(envelope))
220
+ let execution = executions.get(key)
221
+ if (execution === undefined) {
222
+ execution = {
223
+ envelope,
224
+ coherent: true,
225
+ span: span(`engine:${key}`, "execution", envelope.executionId, envelope.emittedAtMs, detail(row, envelope))
226
+ }
227
+ executions.set(key, execution)
228
+ }
229
+ const parent = (parentId: string | undefined) => {
230
+ if (execution.parentKnown && execution.parentExecutionId !== parentId) execution.coherent = false
231
+ execution.parentKnown = true
232
+ execution.parentExecutionId = parentId
233
+ execution.parentId = parentId
234
+ }
235
+ const result = (value: unknown) => {
236
+ if (Number.isSafeInteger(row.sequence) && row.sequence! >= 0) {
237
+ execution.result = { value, sequence: row.sequence! }
238
+ }
239
+ }
240
+ const failure = (kind: NonNullable<EngineExecutionEvidence["failure"]>["kind"], value: unknown) => {
241
+ if (Number.isSafeInteger(row.sequence) && row.sequence! >= 0) {
242
+ execution.failure = { kind, value, sequence: row.sequence! }
243
+ }
244
+ }
245
+ const generic = () => {
246
+ const event = span(
247
+ `engine-event:${eventKey}`,
248
+ "event",
249
+ envelope.eventType,
250
+ envelope.emittedAtMs,
251
+ detail(row, envelope)
252
+ )
253
+ event.endedAt = event.startedAt
254
+ execution.span.children.push(event)
255
+ }
256
+ const attempt = (step: string, number: number) => {
257
+ const attemptKey = identity(key, step, number)
258
+ let current = attempts.get(attemptKey)
259
+ if (current === undefined) {
260
+ current = span(
261
+ `engine-attempt:${attemptKey}`,
262
+ "attempt",
263
+ `attempt ${number} · ${step.slice(0, 12)}`,
264
+ envelope.emittedAtMs,
265
+ detail(row, envelope)
266
+ )
267
+ attempts.set(attemptKey, current)
268
+ execution.span.children.push(current)
269
+ }
270
+ return current
271
+ }
272
+ if (
273
+ envelope.eventType === EngineEvent.nodeEventTypes.planRecorded ||
274
+ envelope.eventType === EngineEvent.nodeEventTypes.subgraphAppended
275
+ ) {
276
+ const payload = envelope.payload as { graph?: unknown }
277
+ const graph = decodeGraph(payload?.graph)
278
+ if (Option.isSome(graph)) {
279
+ const nodes = new Map(execution.graph?.nodes.map((node) => [node.id, node]))
280
+ for (const node of graph.value.nodes) nodes.set(node.id, node)
281
+ execution.graph = { ...graph.value, nodes: [...nodes.values()] }
282
+ }
283
+ generic()
284
+ continue
285
+ }
286
+ if (
287
+ envelope.eventType === EngineEvent.nodeEventTypes.nodeScheduled ||
288
+ envelope.eventType === EngineEvent.nodeEventTypes.nodeSettled
289
+ ) {
290
+ const scheduled = envelope.eventType === EngineEvent.nodeEventTypes.nodeScheduled
291
+ ? decodeScheduled(envelope.payload) :
292
+ Option.none()
293
+ const settled = envelope.eventType === EngineEvent.nodeEventTypes.nodeSettled
294
+ ? decodeSettled(envelope.payload) :
295
+ Option.none()
296
+ const recorded = Option.isSome(scheduled) ? scheduled.value : Option.isSome(settled) ? settled.value : undefined
297
+ if (recorded === undefined) {
298
+ generic()
299
+ continue
300
+ }
301
+ const nodeKey = identity(key, recorded.nodeId)
302
+ const action = recorded.action ?? execution.graph?.nodes.find((node) => node.id === recorded.nodeId)?.action
303
+ let node = nodes.get(nodeKey)
304
+ if (node === undefined || Option.isSome(scheduled)) {
305
+ const instance = (instances.get(nodeKey) ?? 0) + 1
306
+ instances.set(nodeKey, instance)
307
+ node = span(
308
+ `engine-node:${nodeKey}#${instance}`,
309
+ "call",
310
+ inspectLabel(action ?? recorded.nodeId),
311
+ envelope.emittedAtMs,
312
+ detail(row, envelope)
313
+ )
314
+ nodes.set(nodeKey, node)
315
+ execution.span.children.push(node)
316
+ }
317
+ if (action !== undefined) node.label = inspectLabel(action)
318
+ node.detail = { ...detail(row, envelope), sequence: node.detail.sequence }
319
+ if (Option.isSome(scheduled)) {
320
+ node.status = "running"
321
+ } else {
322
+ const value = Option.getOrThrow(settled)
323
+ node.status = value.outcome === "failed" ?
324
+ "failed"
325
+ : value.outcome === "deferred" ?
326
+ "waiting"
327
+ : value.outcome === "skipped"
328
+ ? "skipped"
329
+ : "completed"
330
+ if (value.outcome !== "deferred") node.endedAt = envelope.emittedAtMs
331
+ // The redacted preview is evidence, including when truncated. Never
332
+ // evaluate it, or mistake a JSON prefix for a complete return value.
333
+ if (value.result !== undefined) node.detail = { ...node.detail, output: value.result.preview }
334
+ }
335
+ continue
336
+ }
337
+ if (
338
+ envelope.eventType === "flows.engine.attempt-started" || envelope.eventType === "flows.engine.attempt-finished"
339
+ ) {
340
+ const marker = decodeMarker({ eventType: envelope.eventType, payload: envelope.payload })
341
+ if (Option.isNone(marker) || marker.value.payload.runId !== envelope.executionId) {
342
+ generic()
343
+ continue
344
+ }
345
+ const current = attempt(marker.value.payload.stepKeyDigest, marker.value.payload.attempt)
346
+ if (marker.value.eventType === "flows.engine.attempt-started") current.status = "running"
347
+ else {
348
+ current.status = marker.value.payload.state === "succeeded" ? "completed" : "failed"
349
+ current.endedAt = envelope.emittedAtMs
350
+ }
351
+ current.detail = { ...current.detail, fields: { ...envelope } }
352
+ continue
353
+ }
354
+ if (envelope.eventType === EngineEvent.attemptEventType) {
355
+ const recorded = decodeAttempt(envelope.payload)
356
+ if (Option.isNone(recorded) || recorded.value.executionId !== envelope.executionId) {
357
+ execution.coherent = false
358
+ generic()
359
+ continue
360
+ }
361
+ const { lifecycle, lineage, stepKeyDigest, attempt: number } = recorded.value
362
+ // Lineage may describe a trampoline predecessor, not a spawned parent.
363
+ // Product ancestry comes only from RunState.parentExecutionId below.
364
+ execution.parentId = lineage.parentRunId ?? undefined
365
+ const current = attempt(stepKeyDigest, number)
366
+ current.startedAt = lifecycle.startedAtMs
367
+ current.status = lifecycle.state === "succeeded"
368
+ ? "completed"
369
+ : lifecycle.state === "suspended"
370
+ ? "waiting"
371
+ : lifecycle.state
372
+ current.detail = { ...detail(row, envelope), sequence: current.detail.sequence }
373
+ if (lifecycle.state === "succeeded" || lifecycle.state === "failed") {
374
+ current.endedAt = lifecycle.finishedAtMs
375
+ current.detail = {
376
+ ...current.detail,
377
+ ...(lifecycle.result._tag === "Success"
378
+ ? { output: json(lifecycle.result.value) }
379
+ : { message: json(lifecycle.result.detail) })
380
+ }
381
+ }
382
+ continue
383
+ }
384
+ if (envelope.eventType === EngineEvent.stateEventType) {
385
+ const recorded = decodeState(envelope.payload)
386
+ if (Option.isNone(recorded) || recorded.value.executionId !== envelope.executionId) {
387
+ execution.coherent = false
388
+ generic()
389
+ continue
390
+ }
391
+ execution.parentId = recorded.value.lineage.parentRunId ?? undefined
392
+ const registerWait = (waitId: string, kind: "sleep" | "signal") => {
393
+ const waits = execution.waits ??= new Map()
394
+ const id = identity(key, waitId)
395
+ const existing = waits.get(id)
396
+ if (existing === undefined) waits.set(id, { id: `engine-wait:${id}`, kind, since: envelope.emittedAtMs })
397
+ // A later clock record refines a generic deferred identity without
398
+ // restarting the wait or dropping its recorded settlement.
399
+ else if (kind === "sleep") existing.kind = kind
400
+ }
401
+ if (recorded.value.event._tag === "Execution" && recorded.value.event.lifecycle.state !== "completed") {
402
+ for (const wait of recorded.value.event.lifecycle.waits) {
403
+ registerWait(wait.waitId, wait._tag === "Clock" ? "sleep" : "signal")
404
+ }
405
+ }
406
+ if (recorded.value.event._tag === "ClockScheduled") {
407
+ registerWait(recorded.value.event.waitId, "sleep")
408
+ } else if (recorded.value.event._tag === "DeferredCompleted") {
409
+ const wait = execution.waits?.get(identity(key, recorded.value.event.waitId))
410
+ if (wait !== undefined && wait.settledAt === undefined) wait.settledAt = envelope.emittedAtMs
411
+ }
412
+ if (recorded.value.event._tag !== "Execution") {
413
+ generic()
414
+ continue
415
+ }
416
+ const { lifecycle } = recorded.value.event
417
+ execution.result = undefined
418
+ execution.failure = undefined
419
+ execution.span.detail = {
420
+ ...detail(row, envelope),
421
+ sequence: execution.span.detail.sequence,
422
+ input: execution.span.detail.input
423
+ }
424
+ if (lifecycle.state === "completed") {
425
+ execution.span.status = lifecycle.result._tag === "Success" ? "completed" : "failed"
426
+ execution.span.endedAt = envelope.emittedAtMs
427
+ execution.span.detail = {
428
+ ...execution.span.detail,
429
+ ...(lifecycle.result._tag === "Success"
430
+ ? { output: json(lifecycle.result.value) }
431
+ : { message: json(lifecycle.result.detail) })
432
+ }
433
+ if (lifecycle.result._tag === "Success") result(lifecycle.result.value)
434
+ else failure(lifecycle.result.reason, lifecycle.result.detail)
435
+ } else execution.span.status = lifecycle.state === "suspended" ? "waiting" : "running"
436
+ continue
437
+ }
438
+ if (envelope.eventType === "flows.engine.interrupted") {
439
+ const cancelled = decodeCancellation(envelope.payload)
440
+ if (Option.isNone(cancelled)) {
441
+ generic()
442
+ continue
443
+ }
444
+ execution.result = undefined
445
+ execution.failure = undefined
446
+ execution.span.status = "cancelled"
447
+ execution.span.endedAt = cancelled.value.interruptedAtMs
448
+ execution.span.detail = {
449
+ ...detail(row, envelope),
450
+ sequence: execution.span.detail.sequence,
451
+ input: execution.span.detail.input
452
+ }
453
+ continue
454
+ }
455
+ if (envelope.eventType === "flows.engine.run-decision") {
456
+ const decision = decodeDecision(envelope.payload)
457
+ if (Option.isNone(decision)) {
458
+ const payload = envelope.payload
459
+ // Claim, owner-fence, wake and child-policy decisions deliberately do
460
+ // not carry RunState. Keep them visible without losing valid state
461
+ // evidence; malformed state-bearing decisions still refuse claims.
462
+ if (
463
+ typeof payload === "object" && payload !== null &&
464
+ ("state" in payload || ("decision" in payload && stateDecisions.some((name) => name === payload.decision)))
465
+ ) {
466
+ execution.coherent = false
467
+ }
468
+ generic()
469
+ continue
470
+ }
471
+ const { state, status } = decision.value
472
+ if (execution.flowName !== undefined && execution.flowName !== state.flowName) execution.coherent = false
473
+ execution.flowName = state.flowName
474
+ execution.span.label = inspectLabel(state.flowName)
475
+ parent(state.parentExecutionId)
476
+ execution.result = undefined
477
+ execution.failure = undefined
478
+ execution.span.detail = {
479
+ ...detail(row, envelope),
480
+ sequence: execution.span.detail.sequence,
481
+ input: state.payload
482
+ }
483
+ if (decision.value.decision === "created") execution.span.status = "pending"
484
+ // RunDriver commits this decision with suspended even when its payload
485
+ // omits status/result (a released host scope can retain no suspension).
486
+ else if (decision.value.decision === "interrupt-released") execution.span.status = "waiting"
487
+ else if (status === "running" || status === "pending" || status === "suspended") {
488
+ execution.span.status = status === "suspended" ? "waiting" : status
489
+ } else if (status !== undefined) {
490
+ const decodedResult = decodeResult(state.result)
491
+ if (
492
+ Option.isSome(decodedResult) && decodedResult.value._tag === "Handoff" && status === "completed" &&
493
+ decision.value.decision === "handed-off"
494
+ ) {
495
+ // A round handed off; its raw result describes the successor, not an output.
496
+ execution.span.status = "completed"
497
+ execution.span.endedAt = envelope.emittedAtMs
498
+ continue
499
+ }
500
+ if (
501
+ Option.isNone(decodedResult) || decodedResult.value._tag !== "Complete" ||
502
+ (status === "completed") !== (decodedResult.value.exit._tag === "Success")
503
+ ) {
504
+ execution.coherent = false
505
+ execution.span.status = "unknown"
506
+ generic()
507
+ continue
508
+ }
509
+ execution.span.status = status
510
+ execution.span.endedAt = envelope.emittedAtMs
511
+ execution.span.detail = {
512
+ ...execution.span.detail,
513
+ ...(decodedResult.value.exit._tag === "Success"
514
+ ? { output: json(decodedResult.value.exit.value) }
515
+ : { message: json(decodedResult.value.exit.cause) })
516
+ }
517
+ if (decodedResult.value.exit._tag === "Success") result(decodedResult.value.exit.value)
518
+ else failure("cause", decodedResult.value.exit.cause)
519
+ }
520
+ continue
521
+ }
522
+ generic()
523
+ }
524
+ const byExecution = new Map<string, Array<Execution>>()
525
+ for (const current of executions.values()) {
526
+ const generations = byExecution.get(current.envelope.executionId) ?? []
527
+ generations.push(current)
528
+ byExecution.set(current.envelope.executionId, generations)
529
+ }
530
+ const roots: Array<TraceBuilder> = []
531
+ for (const current of executions.values()) {
532
+ const parents = current.parentId === undefined ? [] : byExecution.get(current.parentId) ?? []
533
+ // Build only a forest. Malformed cycles remain separate evidence rows.
534
+ const ancestors = new Set<string>([current.envelope.executionId])
535
+ let parent = parents.length === 1 ? parents[0] : undefined
536
+ let cursor = parent
537
+ while (cursor !== undefined) {
538
+ if (ancestors.has(cursor.envelope.executionId)) {
539
+ parent = undefined
540
+ break
541
+ }
542
+ ancestors.add(cursor.envelope.executionId)
543
+ const next = cursor.parentId === undefined ? [] : byExecution.get(cursor.parentId) ?? []
544
+ cursor = next.length === 1 ? next[0] : undefined
545
+ }
546
+ if (parent === undefined) roots.push(current.span)
547
+ else parent.span.children.push(current.span)
548
+ }
549
+ const evidence: Array<EngineExecutionEvidence> = [...executions.values()].map((current) => ({
550
+ executionId: current.envelope.executionId,
551
+ generation: current.envelope.generation,
552
+ spanId: current.span.id,
553
+ parentExecutionId: current.parentExecutionId,
554
+ parentKnown: current.parentKnown === true,
555
+ flowName: current.flowName,
556
+ input: current.span.detail.input,
557
+ coherent: current.coherent,
558
+ graph: current.graph,
559
+ status: current.span.status,
560
+ waits: [...current.waits?.values() ?? []],
561
+ result: current.result,
562
+ failure: current.failure
563
+ }))
564
+ return { trace: [...roots, ...notices], evidence }
565
+ }
566
+
567
+ /**
568
+ * Folds native executions and attempts into trace spans with recorded ancestry.
569
+ *
570
+ * @category utilities
571
+ * @since 1.0.0
572
+ */
573
+ export const engineTraceFromJournal = (records: ReadonlyArray<JournalRecord>): Array<TraceBuilder> =>
574
+ foldEngineJournal(records).trace
575
+
576
+ /**
577
+ * Product claims use these typed facts, never text rendered into trace details.
578
+ *
579
+ * @category utilities
580
+ * @since 1.0.0
581
+ */
582
+ export const engineExecutionEvidence = (
583
+ records: ReadonlyArray<JournalRecord>
584
+ ): ReadonlyArray<EngineExecutionEvidence> => foldEngineJournal(records).evidence
585
+
586
+ /**
587
+ * Same recorded native ancestry and historical cursor for every product result projection.
588
+ *
589
+ * @category utilities
590
+ * @since 1.0.0
591
+ */
592
+ export const engineRunEvidence = (records: ReadonlyArray<JournalRecord>, rootId: string, cursorSeq?: number) => {
593
+ const visible: ReadonlyArray<JournalRecord> = records
594
+ .filter((row) =>
595
+ Number.isSafeInteger(row.sequence) && Number(row.sequence) >= 0 &&
596
+ (cursorSeq === undefined || Number(row.sequence) <= cursorSeq)
597
+ )
598
+ .sort((left, right) => Number(left.sequence) - Number(right.sequence))
599
+ const executions = engineExecutionEvidence(visible)
600
+ const generations = new Map<string, Array<EngineExecutionEvidence>>()
601
+ for (const execution of executions) {
602
+ const found = generations.get(execution.executionId) ?? []
603
+ found.push(execution)
604
+ generations.set(execution.executionId, found)
605
+ }
606
+ const current = (execution: EngineExecutionEvidence) =>
607
+ execution.coherent &&
608
+ execution.generation === Math.max(...generations.get(execution.executionId)!.map((row) => row.generation))
609
+ const belongs = (execution: EngineExecutionEvidence, ownerId = rootId): boolean => {
610
+ const visited = new Set<string>()
611
+ let candidate: EngineExecutionEvidence = execution
612
+ while (true) {
613
+ if (!candidate.coherent || !candidate.parentKnown || visited.has(candidate.executionId)) return false
614
+ visited.add(candidate.executionId)
615
+ if (candidate.executionId === ownerId) return ownerId !== rootId || candidate.parentExecutionId === undefined
616
+ if (candidate.parentExecutionId === undefined) return false
617
+ const parents: ReadonlyArray<EngineExecutionEvidence> = generations.get(candidate.parentExecutionId) ?? []
618
+ // A child names a native parent ID, not its generation. Never infer a
619
+ // parent generation from arrival time after a rewind.
620
+ if (parents.length !== 1) return false
621
+ candidate = parents[0]!
622
+ }
623
+ }
624
+ const owned = executions.filter((row) => current(row) && belongs(row))
625
+ const completed = owned.filter((row) => row.status === "completed" && row.result !== undefined)
626
+ return { executions: owned, completed, belongs }
627
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Typed failures surfaced by the workspace gateway.
3
+ *
4
+ * @since 0.1.0
5
+ */
6
+
7
+ import { Schema } from "effect"
8
+
9
+ /**
10
+ * Stable failure codes exposed by gateway operations.
11
+ *
12
+ * @since 0.1.0
13
+ * @category errors
14
+ */
15
+ export const GatewayErrorCode = Schema.Literals([
16
+ "bind_failed",
17
+ "invalid_host",
18
+ "invalid_origin",
19
+ "unauthorized",
20
+ "malformed_request",
21
+ "request_too_large",
22
+ "resource_limit",
23
+ "run_unavailable",
24
+ "run_not_found"
25
+ ])
26
+
27
+ /**
28
+ * A stable gateway failure code.
29
+ *
30
+ * @since 0.1.0
31
+ * @category errors
32
+ */
33
+ export type GatewayErrorCode = typeof GatewayErrorCode.Type
34
+
35
+ /**
36
+ * A normalized gateway operation failure.
37
+ *
38
+ * @since 0.1.0
39
+ * @category errors
40
+ */
41
+ export class GatewayError extends Schema.TaggedError<GatewayError>()("@smthrs/gateway/GatewayError", {
42
+ code: GatewayErrorCode,
43
+ message: Schema.String,
44
+ cause: Schema.optional(Schema.Struct({
45
+ _tag: Schema.String,
46
+ code: Schema.optional(Schema.String)
47
+ }))
48
+ }) {}
49
+
50
+ /**
51
+ * The refusal a numeric setting earns when it is not a positive safe integer,
52
+ * or `undefined` when the gateway can run under it.
53
+ *
54
+ * The keepalive cadence and the request body limit are the same kind of
55
+ * setting and are checked the same way. A cadence of zero turns the keepalive
56
+ * into a tight loop and a body limit of zero refuses every request, so a
57
+ * composition that asks for either is refused before it binds rather than
58
+ * after it is serving.
59
+ *
60
+ * @param name what the value configures, named as the message will read
61
+ * @param value the configured value, or undefined to accept the default
62
+ * @since 1.0.0
63
+ * @category constructors
64
+ */
65
+ export const settingRefusal = (name: string, value: number | undefined): GatewayError | undefined =>
66
+ value === undefined || (Number.isSafeInteger(value) && value > 0)
67
+ ? undefined
68
+ : new GatewayError({
69
+ code: "bind_failed",
70
+ message: `${name} must be a positive safe integer, not ${value}`
71
+ })