@smthrs/gateway 0.35.0 → 1.0.0-rc.3

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 +501 -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 +462 -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 +12 -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 +1593 -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 +2 -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 +8 -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 +548 -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 +792 -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 +12 -0
  130. package/dist/esm/HostBranchPresence.d.ts.map +1 -0
  131. package/dist/esm/HostBranchPresence.js +54 -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 +2105 -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 +2 -0
  166. package/dist/esm/internal/actionRenderings.d.ts.map +1 -0
  167. package/dist/esm/internal/actionRenderings.js +202 -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 +8 -0
  182. package/dist/esm/internal/inspectLabels.d.ts.map +1 -0
  183. package/dist/esm/internal/inspectLabels.js +12 -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 +605 -0
  557. package/src/GatewayError.ts +71 -0
  558. package/src/GatewayProjection.ts +948 -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 +72 -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 +2793 -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 +201 -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 +13 -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,89 @@
1
+ ---
2
+ title: "Installation"
3
+ description: "Install @smthrs/gateway, know which Node version it needs, which import forms are public, and which four services a host must supply before the mounts can serve."
4
+ sidebar:
5
+ order: 1
6
+ ---
7
+
8
+ ## Install
9
+
10
+ Not on npm yet; see [Installation](https://github.com/smithersai/smithers/blob/main/packages/smithers/docs/installation.md#install-the-cli).
11
+
12
+ ## Requirements
13
+
14
+ - Node.js 26.4.0 or later. The Node host uses `node:http` and
15
+ `@effect/platform-node`, so it does not run in a browser or in a Worker.
16
+ - One copy of `effect` in the resolved tree. A second copy makes a `Layer`
17
+ built against one fail to satisfy a requirement declared against the other.
18
+
19
+ `effect` is the only peer, pinned to `4.0.0-rc.115`. Node and Bun adapters
20
+ are bundled privately at the same version, including their shared implementation.
21
+ Hosts need no separate adapter install:
22
+
23
+ ```bash
24
+ pnpm add effect@4.0.0-rc.115
25
+ ```
26
+
27
+ Use `@smthrs/gateway/node/NodeGateway` on Node or
28
+ `@smthrs/gateway/bun/BunGateway` on Bun. The root and protocol subpaths need
29
+ neither native adapter at runtime.
30
+
31
+ Runtime dependencies install with the package, including
32
+ [`@smthrs/control`](/api/control) and [`@smthrs/sync`](/api/smithers-sync).
33
+ You do not name them separately to compile against this package's API.
34
+ The guides that compose a full host or a test stack say which additional
35
+ packages they import.
36
+
37
+ ## Import forms
38
+
39
+ The root entry point exports one namespace per module:
40
+
41
+ ```ts
42
+ import { Diagnosis, GatewayError, GatewayProjection, GatewaySchema, GatewayServer, Projections } from "@smthrs/gateway"
43
+ ```
44
+
45
+ Every local module is also importable on its own path, which is what a host
46
+ that only needs one of them should use:
47
+
48
+ ```ts
49
+ import * as GatewayServer from "@smthrs/gateway/GatewayServer"
50
+ import * as NodeGateway from "@smthrs/gateway/node/NodeGateway"
51
+ ```
52
+
53
+ `@smthrs/gateway/package.json` is exported. `@smthrs/gateway/internal/*` and
54
+ nested `@smthrs/gateway/<Module>/index` subpaths are not public and resolve to
55
+ nothing.
56
+
57
+ The root entry also re-exports `@smthrs/sync` whole as `Sync`, so a host that
58
+ mounts the journal read path does not add a second import:
59
+
60
+ ```ts
61
+ import { Sync } from "@smthrs/gateway"
62
+
63
+ const server = Sync.SyncServer.layer
64
+ ```
65
+
66
+ ## What a host supplies
67
+
68
+ `NodeGateway.layer` builds the socket, the newline-delimited JSON
69
+ serialization, and the shared-credential authentication. Four services stay the
70
+ caller's, because only a project on disk can provide them:
71
+
72
+ | Service | Comes from | Serves |
73
+ | ----------------------------- | ------------------------------------------ | --------------------- |
74
+ | `Control` (`@smthrs/control`) | `ControlLive.layer` over a control runtime | `/rpc`, `/rpc/ws` |
75
+ | `Projections` (this package) | `Projections.layer`, over that `Control` | `/projections` |
76
+ | `SyncServer` (`@smthrs/sync`) | `SyncServer.layer` over a journal | `/sync` |
77
+ | `SyncAuth` (`@smthrs/sync`) | `SyncAuth.layer` | `/sync` authorization |
78
+
79
+ `Projections.layer` reads through the ambient `Control`, so a host that
80
+ composes both gets one control plane rather than two views of one database.
81
+ The full composition, with the storage underneath it, is in
82
+ [Host the gateway in your own process](./guides/host-the-gateway.md).
83
+
84
+ ## Running without composing anything
85
+
86
+ [`smthrs serve`](/cli/serve) hosts this exact assembly for a project on disk.
87
+ If you want a gateway rather than a library, use the CLI instead. Not on npm yet; see [Installation](https://github.com/smithersai/smithers/blob/main/packages/smithers/docs/installation.md#install-the-cli).
88
+
89
+ Then see the [Quickstart](./quickstart.md).
@@ -0,0 +1,200 @@
1
+ ---
2
+ title: "Quickstart"
3
+ description: "Serve a workspace gateway on loopback, prove which workspace it belongs to, read a projection snapshot off the wire, and follow one run live."
4
+ sidebar:
5
+ order: 2
6
+ ---
7
+
8
+ This quickstart brings a real gateway up over a real project and reads it the
9
+ way a client outside the process reads it: over HTTP, off the wire, with no
10
+ library on the other end.
11
+
12
+ By the end you will have probed `/health`, read a `workspace-runs` snapshot as
13
+ newline-delimited JSON, and followed one run's summary until it settled.
14
+
15
+ ## Before you start
16
+
17
+ - The `smthrs` executable, installed as described in
18
+ [Installation](./installation.md).
19
+ - A project with at least one run. If you have none,
20
+ [the CLI quickstart](/pkg/cli/quickstart) takes an empty directory to a
21
+ settled run in six commands.
22
+ - `curl` and `jq`, and Node 26.4.0 or later for the last step.
23
+
24
+ ## Serve the workspace
25
+
26
+ From the project root:
27
+
28
+ ```bash
29
+ smthrs serve
30
+ ```
31
+
32
+ ```text
33
+ smthrs serve listening on http://127.0.0.1:3000
34
+ /rpc http://127.0.0.1:3000/rpc control rpc
35
+ /rpc/ws ws://127.0.0.1:3000/rpc/ws control rpc, including watch
36
+ /projections http://127.0.0.1:3000/projections projection snapshots
37
+ /projections/ws ws://127.0.0.1:3000/projections/ws projection subscriptions
38
+ /sync http://127.0.0.1:3000/sync journal sync
39
+ /sync/ws ws://127.0.0.1:3000/sync/ws journal sync stream
40
+ /health http://127.0.0.1:3000/health workspace identity
41
+ auth no bearer (loopback Host; loopback browser Origin)
42
+ ```
43
+
44
+ That is `@smthrs/gateway`'s assembly, bound by `NodeGateway.layer`. The bind is
45
+ loopback, so it needs no credential. It accepts only loopback `Host` values,
46
+ and a browser request that carries `Origin` must name `http` or `https` on
47
+ `localhost`, `127.0.0.1`, or `[::1]`; an Origin-less CLI request remains
48
+ accepted. The server lives exactly as long as the command, so leave it running
49
+ and open a second terminal for everything below.
50
+
51
+ ## Ask which workspace it is
52
+
53
+ ```bash
54
+ curl -s http://127.0.0.1:3000/health | jq
55
+ ```
56
+
57
+ ```json
58
+ {
59
+ "workspaceHash": "8f4b2c1d90a37e56",
60
+ "gatewayId": "cli-4821",
61
+ "protocolVersion": "1",
62
+ "version": "1.0.0-rc.0"
63
+ }
64
+ ```
65
+
66
+ `/health` is the one unauthenticated route, and identity is all it carries: no
67
+ token, no run, no path. A supervisor that finds a process already on this port
68
+ asks it this before deciding to keep or replace it.
69
+
70
+ ## Read the workspace's runs
71
+
72
+ The read path speaks RPC over newline-delimited JSON. One request is one line:
73
+ a `Request` envelope naming the procedure and carrying its payload.
74
+
75
+ ```bash
76
+ curl -s http://127.0.0.1:3000/projections \
77
+ -H 'content-type: application/json' \
78
+ --data-binary '{"_tag":"Request","id":1,"tag":"Projection.Snapshot","payload":{"selector":{"_tag":"workspace-runs"}},"headers":[]}
79
+ '
80
+ ```
81
+
82
+ The answer is one `Exit` line. Pull the snapshot out of it:
83
+
84
+ ```bash
85
+ curl -s http://127.0.0.1:3000/projections \
86
+ -H 'content-type: application/json' \
87
+ --data-binary '{"_tag":"Request","id":1,"tag":"Projection.Snapshot","payload":{"selector":{"_tag":"workspace-runs"}},"headers":[]}
88
+ ' | head -1 | jq '.exit.value.rows[0]'
89
+ ```
90
+
91
+ ```json
92
+ {
93
+ "runId": "run-1",
94
+ "flowId": "hello",
95
+ "status": "completed",
96
+ "statusRollup": {
97
+ "subjectId": "run:run-1",
98
+ "state": "completed",
99
+ "activity": "unknown",
100
+ "health": "healthy",
101
+ "attention": "none",
102
+ "freshness": "unobserved",
103
+ "updatedAt": 2000
104
+ },
105
+ "createdAt": 1000,
106
+ "updatedAt": 2000,
107
+ "seat": "anthropic:claude-sonnet-4-5",
108
+ "turns": 1,
109
+ "calls": 1,
110
+ "callsFailed": 0,
111
+ "editsAttempted": 1,
112
+ "editsSucceeded": 1,
113
+ "inputTokens": 0,
114
+ "outputTokens": 0,
115
+ "verdict": "completed \u2014 shipped",
116
+ "diagnosis": "Verdict completed \u2014 shipped\nRun run-1 · hello · anthropic:claude-sonnet-4-5 · 5s\nActivity 1 turns · 1 calls (0 refused) · edits 1/1\nTokens 0 in / 0 out\nOutput shipped",
117
+ "finalOutput": "shipped"
118
+ }
119
+ ```
120
+
121
+ Nothing in that row is a database column. Every field is either a
122
+ `@smthrs/control` run-summary value or something folded out of that run's
123
+ ordered control events, which is why the same row reaches a browser through a
124
+ relay unchanged. See [Projections](./concepts/projections.md).
125
+
126
+ The snapshot also carries the cursor its rows were read at. Keep it: it is what
127
+ makes a follower resume without rewinding.
128
+
129
+ ## Follow one run
130
+
131
+ Copy a `runId` from the listing, then follow that run's summary over the
132
+ subscription socket. Save this as `follow.mjs`:
133
+
134
+ ```js
135
+ const runId = process.argv[2]
136
+ const socket = new WebSocket("ws://127.0.0.1:3000/projections/ws")
137
+
138
+ socket.addEventListener("open", () => {
139
+ socket.send(
140
+ JSON.stringify({
141
+ _tag: "Request",
142
+ id: 1,
143
+ tag: "Projection.Subscribe",
144
+ payload: { selector: { _tag: "run-summary", runId } },
145
+ headers: []
146
+ }) + "\n"
147
+ )
148
+ })
149
+
150
+ // The server answers NDJSON. A stream arrives as Chunk messages whose values
151
+ // are the subscription's own frames.
152
+ socket.addEventListener("message", (event) => {
153
+ for (const line of String(event.data).split("\n").filter((text) => text !== "")) {
154
+ const message = JSON.parse(line)
155
+ if (message._tag !== "Chunk") continue
156
+ for (const frame of message.values) console.log(frame._tag, frame.cursor?.value ?? "")
157
+ }
158
+ })
159
+ ```
160
+
161
+ ```bash
162
+ node follow.mjs run-1
163
+ ```
164
+
165
+ ```text
166
+ snapshot-start 6
167
+ row 6
168
+ snapshot-end 6
169
+ heartbeat
170
+ ```
171
+
172
+ Three snapshot frames, then a keepalive because nothing has changed yet.
173
+ Launch or steer that run from another terminal and `delta` frames arrive, each
174
+ one carrying the selector's rows recomputed at a new cursor. The keepalive is
175
+ not decoration: an idle subscription that sent nothing for 600 seconds would
176
+ be cut by a relay, so the server emits one every 30 seconds.
177
+
178
+ ## What just happened
179
+
180
+ One process served four mounts on one socket. `/health` answered an identity
181
+ question with no credential. `/projections` answered a fold over the control
182
+ plane's own events, framed exactly the way a relay forwards them to a browser.
183
+ The socket turned that same fold into a snapshot plus a live tail, at a cursor
184
+ a client can resume from.
185
+
186
+ The control plane was there the whole time, on `/rpc`, under the same
187
+ credential rule. That mount is [`@smthrs/control`](/api/control)'s contract
188
+ unchanged: this package mounts it and adds a keepalive, and re-declares none of
189
+ its procedures.
190
+
191
+ ## Next steps
192
+
193
+ - [Read a projection over HTTP](./guides/read-a-projection.md): every selector,
194
+ the row each answers with, and how to decode instead of cast.
195
+ - [Follow a run over a WebSocket](./guides/follow-a-run.md): the frame
196
+ vocabulary, and resuming from a cursor without a second snapshot.
197
+ - [Host the gateway in your own process](./guides/host-the-gateway.md): the
198
+ composition behind `smthrs serve`.
199
+ - [Serve beyond loopback](./guides/serve-beyond-loopback.md): the two rules
200
+ that gate a network bind, and the ingress policy behind them.
@@ -0,0 +1,355 @@
1
+ ---
2
+ title: "Troubleshooting"
3
+ description: "The refusals a gateway answers with, grouped by where they come from: the bind, the ingress guard, the read path, a subscription, and the data a projection can and cannot see."
4
+ ---
5
+
6
+ Every refusal this package produces is a `GatewayError` carrying one of nine
7
+ stable codes. Find the symptom, then the code, then the change.
8
+
9
+ ## The gateway will not bind
10
+
11
+ ### Refusing non-loopback gateway bind
12
+
13
+ **Symptom**
14
+
15
+ ```text
16
+ Refusing non-loopback gateway bind 0.0.0.0 without an explicit --listen opt-in
17
+ Refusing non-loopback gateway bind 0.0.0.0 without a bearer credential
18
+ ```
19
+
20
+ **Cause** The bind policy, which fails closed. A host other than `127.0.0.1`,
21
+ `::1`, or `localhost` needs both an explicit `listen` opt-in and a bearer
22
+ credential.
23
+
24
+ **Fix** Supply both, or bind loopback. See
25
+ [Serve beyond loopback](./guides/serve-beyond-loopback.md).
26
+
27
+ ### A setting must be a positive safe integer
28
+
29
+ **Symptom**
30
+
31
+ ```text
32
+ The gateway keepalive cadence must be a positive safe integer, not 0
33
+ The gateway request body limit must be a positive safe integer, not -1
34
+ ```
35
+
36
+ **Cause** `heartbeatMillis` or `maxRequestBodyBytes` is zero, negative,
37
+ fractional, or outside the safe-integer range. A cadence of zero turns the
38
+ keepalive into a tight loop and a body limit of zero refuses every request, so
39
+ the composition is refused before it binds rather than after it is serving.
40
+
41
+ **Fix** Pass a positive integer, or omit the field and take the default: 30,000
42
+ milliseconds and 1,048,576 bytes.
43
+
44
+ ### The gateway socket could not be bound
45
+
46
+ **Symptom** A `bind_failed` `GatewayError` whose message is
47
+ `The gateway socket could not be bound`.
48
+
49
+ **Cause** The operating system refused the listen: the port is already in use,
50
+ the address is not local, or the port is privileged.
51
+
52
+ **Fix** Read the server log. The Node host writes one error-level line before
53
+ it sanitizes the failure: `The gateway socket could not be bound`, with the
54
+ requested `host` and `port` and the `ServeError` whose `cause` is the
55
+ operating-system error (`EADDRINUSE`, `EACCES`, `EADDRNOTAVAIL`). The wire error
56
+ deliberately omits all of that, because it reaches every bearer holder. Then
57
+ check what already holds the port. A gateway already serving this workspace
58
+ answers `GET /health` with the workspace hash, which is how a supervisor decides
59
+ whether to keep it.
60
+
61
+ ## The gateway is up but a request is refused
62
+
63
+ ### 421 invalid_host or 403 invalid_origin on a local gateway
64
+
65
+ **Symptom** A credential-less loopback gateway answers with `invalid_host`, or
66
+ a browser request or WebSocket upgrade answers with `invalid_origin`.
67
+
68
+ **Cause** Local mode accepts `Host` values naming only `localhost`,
69
+ `127.0.0.1`, or `[::1]`, with an optional port. If an `Origin` header is
70
+ present, it must be a canonical `http` or `https` origin whose host and port
71
+ equal the request's `Host`, in every mode. An app on `http://localhost:5173`
72
+ calling a gateway on `localhost:3000` is refused. This prevents a web page or
73
+ DNS-rebound hostname from acting as the local operator.
74
+
75
+ **Fix** Connect through the loopback URL the server printed. Serve the browser
76
+ client from that same origin, or put it behind a dev-server proxy that
77
+ forwards to the gateway so the browser only ever talks to one origin. CLI
78
+ clients should omit `Origin`, as usual; an Origin-less request is accepted.
79
+
80
+ ### 401 on /projections or /sync, but /rpc answers something else
81
+
82
+ **Symptom** `POST /projections`, or any protected socket upgrade, answers HTTP
83
+ 401 with this body, while `POST /rpc` with the same missing credential answers
84
+ HTTP 200 carrying a `/control/Unauthorized` in the RPC frame.
85
+
86
+ ```json
87
+ {
88
+ "_tag": "@smthrs/gateway/GatewayError",
89
+ "code": "unauthorized",
90
+ "message": "A valid bearer credential is required"
91
+ }
92
+ ```
93
+
94
+ **Cause** Not a bug. `/rpc` authenticates in band so that a caller sees the
95
+ control plane's own typed refusal, exactly as it would against a control server
96
+ hosting the same procedures. Every other RPC path is checked at the edge,
97
+ because a socket cannot be refused after it is open.
98
+
99
+ **Fix** Send `Authorization: Bearer <token>` on both. Handle the two shapes:
100
+ `@smthrs/control` `ControlError.Unauthorized` from `/rpc`, and a `GatewayError`
101
+ body under a 401 from the rest. The reasoning is in
102
+ [the trust boundary](./concepts/trust-boundary.md#edge-authentication-and-where-it-deliberately-stops).
103
+
104
+ ### 400 malformed_request: carries no RPC request message
105
+
106
+ **Symptom**
107
+
108
+ ```json
109
+ {
110
+ "_tag": "@smthrs/gateway/GatewayError",
111
+ "code": "malformed_request",
112
+ "message": "POST /projections carries no RPC request message"
113
+ }
114
+ ```
115
+
116
+ **Cause** The body decoded to something that is not a tagged RPC message:
117
+ `{}`, `[]`, prose, or nothing at all.
118
+
119
+ **Fix** Send the framed envelope, one JSON object per line:
120
+
121
+ ```text
122
+ {"_tag":"Request","id":1,"tag":"Projection.Snapshot","payload":{"selector":{"_tag":"workspace-runs"}},"headers":[]}
123
+ ```
124
+
125
+ A body naming a procedure that does not exist is _not_ this error. It reaches
126
+ the mount and the RPC protocol reports the defect itself.
127
+
128
+ ### 413 request_too_large
129
+
130
+ **Symptom** `POST /rpc exceeds the 1048576-byte request limit`.
131
+
132
+ **Cause** The body is over `maxRequestBodyBytes`, or its declared
133
+ `content-length` is.
134
+
135
+ **Fix** Send less, or raise the limit at the bind. A declared length over the
136
+ limit is refused without reading the body, so a client that lies low in
137
+ `content-length` is still measured as the body is read. A streaming body has no
138
+ declared size; when it crosses the limit, the Node host destroys the source
139
+ rather than draining attacker-controlled bytes, so the client may observe a
140
+ connection reset instead of the 413 response.
141
+
142
+ ### 400 malformed_request: a body the server could not read
143
+
144
+ **Symptom** `POST /rpc carries a body the server could not read`.
145
+
146
+ **Cause** The read failed for a reason that is not size: a truncated body, a
147
+ reset transport. This is deliberately not 413, because the request cannot be
148
+ retried smaller.
149
+
150
+ **Fix** Retry the request. If it repeats, look at the client's framing and at
151
+ whatever sits between it and the gateway.
152
+
153
+ ### 404 on a path that looks like a mount
154
+
155
+ **Symptom** `/rpc%2f`, `/%2frpc`, `/rpc%3Bp`, and `/rpc%20` answer 404.
156
+
157
+ **Cause** A reserved character left percent-encoded is not a separator, to the
158
+ router or to the ingress guard. Those spellings name no mount, exactly as they
159
+ name none to `HttpRouter`.
160
+
161
+ **Fix** Post to `/rpc`. Aliases the router does resolve, including `/rpc/`,
162
+ `//rpc`, `/RPC`, and `/rpc;p`, are recognized by the guard too, so they are
163
+ authenticated and size-limited rather than slipping past.
164
+
165
+ ## A read is refused
166
+
167
+ ### run_not_found for a run you can see
168
+
169
+ **Symptom** Every run-scoped selector answers
170
+ `{ "code": "run_not_found", "message": "No run <id>" }`.
171
+
172
+ **Cause** The control plane does not list that run. The gateway never opens the
173
+ engine database, so a run that exists only there is invisible here. Event reads
174
+ alone cannot distinguish an unknown run from an empty run, so the gateway checks
175
+ existence through `Control.list`. An existing run with no events projects successfully.
176
+
177
+ **Fix** Confirm the run with `Control.list`, or [`smthrs runs list`](/cli/runs). If the
178
+ run is in the engine database but not the control plane, the launch never
179
+ reached the control plane and the gateway is reporting that correctly.
180
+
181
+ ### resource_limit
182
+
183
+ **Symptom** A `resource_limit` `GatewayError` on a snapshot or a delta.
184
+
185
+ **Cause: retained state** A run projection keeps a window of at most 10,000
186
+ events and 4 MiB of retained events plus digest identity state. Older events
187
+ enter a carried digest. Large retained events are clipped to 16 KiB. The read
188
+ fails if the digest's exact identity state cannot fit the 4 MiB budget.
189
+
190
+ **Cause: oversized graph event** A native `flows.engine.plan-recorded` or
191
+ `flows.engine.subgraph-appended` event exceeds 16 KiB. These events are refused
192
+ instead of clipped, including on `run-events` pages, so graph topology stays
193
+ intact.
194
+
195
+ **Fix** Inspect raw history through `run-events` snapshots. Each page returns
196
+ at most 1,000 events and 4 MiB, plus a cursor; pass that cursor as `after` until
197
+ a page is empty. Other large events are clipped, while admitted native
198
+ `control.engine.event` payloads remain complete. One event too large for a
199
+ 4 MiB page fails with `resource_limit`. Inspect an oversized graph event with
200
+ a bounded `Control.watch` read and keep future graph events within 16 KiB.
201
+
202
+ **Cause: projected rows** The encoded projected row set exceeds 4 MiB.
203
+
204
+ **Fix** Narrow the selector to reduce the projected row set, for example
205
+ `node-output` for one node or `run-summary`. This only helps if the selected
206
+ rows fit within the row budget.
207
+
208
+ A `resource_limit` refusal returns no rows. A successful `run-events` page is a
209
+ bounded part of the history; use its cursor to continue.
210
+
211
+ ### run_unavailable with a cause that says almost nothing
212
+
213
+ **Symptom**
214
+
215
+ ```json
216
+ {
217
+ "code": "run_unavailable",
218
+ "message": "Listing runs failed",
219
+ "cause": { "_tag": "/control/Unavailable", "code": "unavailable" }
220
+ }
221
+ ```
222
+
223
+ **Cause** A control-plane read failed. The cause carries only the failure's tag
224
+ and stable code.
225
+
226
+ **Fix** Use the projection log operation identifier and known control error
227
+ tag/code to locate the failing backend operation. Projection logs omit backend
228
+ messages and nested causes, including SQL, credentials, and file paths.
229
+
230
+ ## A subscription misbehaves
231
+
232
+ ### malformed_request when resuming from a cursor
233
+
234
+ **Symptom** One of:
235
+
236
+ ```text
237
+ A cursor for the run-tree projection cannot resume a run-summary subscription
238
+ A cursor can resume only the exact selector that issued it
239
+ A cursor for run run-2 cannot resume a subscription to run run-1
240
+ A workspace-runs subscription has no resumable cursor, because control journal sequences belong to per-run partitions
241
+ Cursor 12:0 was not issued by run run-1
242
+ Cursor 99:0 cannot resume run run-1 past its last position 12:0
243
+ ```
244
+
245
+ **Cause** The cursor does not belong to this subscription, or names a position
246
+ this run never reached.
247
+
248
+ **Fix** Send back the cursor exactly as it arrived, from the same selector.
249
+ For a workspace projection there is no resume at all: re-subscribe without
250
+ `after` and take the snapshot again.
251
+
252
+ ### The connection drops after a few minutes of quiet
253
+
254
+ **Symptom** A follower on a quiet run disconnects and reconnects on a cycle,
255
+ with no error from the gateway.
256
+
257
+ **Cause** Something between the client and the gateway cuts idle connections
258
+ sooner than the keepalive cadence. The default is one frame every 30 seconds,
259
+ sized for a relay that cuts at 600 seconds.
260
+
261
+ **Fix** Shorten the cadence at the bind with `heartbeatMillis`, which re-times
262
+ both the `/projections/ws` heartbeat and the `/rpc/ws` `Watch` keepalive, or
263
+ build the read path with `Projections.layerWith({ heartbeatMillis })` to
264
+ shorten the projection heartbeat alone.
265
+
266
+ ### A followed Watch delivers events nothing emitted
267
+
268
+ **Symptom** `/rpc/ws` `Watch` frames arrive with kind
269
+ `control.gateway.heartbeat` and a `null` payload, repeating the last sequence.
270
+
271
+ **Cause** That is the gateway's keepalive. `ControlRpcs.Watch` answers
272
+ `ControlEvent` and has no frame of its own for one, so the keepalive is
273
+ published as an event whose kind no emitter uses.
274
+
275
+ **Fix** Ignore the kind, as every fold in this package does with an unknown
276
+ kind. It repeats the last delivered sequence on purpose, so resuming from the
277
+ last sequence you saw does not rewind.
278
+
279
+ ## A projection is missing something you expected
280
+
281
+ ### The run tree has no nodes, though the run did work
282
+
283
+ **Cause** `run-tree` folds agent cell calls, from
284
+ `control.agent.cell-call-started` and `control.agent.cell-call-settled`. The
285
+ durable engine's own `flows.engine.*` records live in a different database with
286
+ a different journal, and `Control.watch` reads one run's partition of the
287
+ control journal alone.
288
+
289
+ **Fix** Nothing to change here. What an engine step did reaches a client as the
290
+ agent call that made it. A run driven by an executor that journals no agent
291
+ events has no tree, correctly.
292
+
293
+ ### The approvals inbox is empty though a run is waiting
294
+
295
+ **Cause** The unscoped `approvals` selector asks the control plane for runs
296
+ whose status is `waiting-approval` and then keeps only those with a pending
297
+ gate. A run parked for another reason, or one whose gate was already decided,
298
+ is not in the inbox.
299
+
300
+ **Fix** Use the run-scoped form, `{ _tag: "approvals", runId }`, which lists
301
+ that run's gates including the decided ones. That is what a run card renders.
302
+
303
+ A human wait held by a NESTED execution is no longer one of these cases. A
304
+ flow that calls another flow parks the child, so a `HumanTask` several
305
+ `.child()` boundaries down used to leave the run an operator opened reading
306
+ `waiting · event` with an empty inbox, the shape run-3 of `coding/request`
307
+ parked in, on a gate named `coding-clarification`. The control plane now rolls
308
+ a run tree's open human waits onto the root as
309
+ `ControlSchema.RunSummary.pendingWaits` and rolls its status up with them, and
310
+ the projection turns each into a pending row of that root. A run still showing
311
+ an empty inbox is waiting on a timer, an event, or a quota, and its
312
+ `waitingReason` says which.
313
+
314
+ ### A question in the inbox cannot be answered
315
+
316
+ **Cause** A `HumanTask` gate asks for a value, and `decision: "approve"` alone
317
+ carries none. The run stays parked on the wait it opened.
318
+
319
+ **Fix** Submit the value in `Approval.Submit`'s `answer`, shaped for the
320
+ `kind` the row's `request` declares. The mount routes it to `Control.signal`
321
+ addressed to the row's `runId` and naming its `requestId`, and the control
322
+ plane resolves the wait wherever in the tree it is held. `smthrs runs signal <root
323
+ run> '{"name":"<the question>","payload":…}'` is the same act from a terminal.
324
+
325
+ ### The workspace listing stops at 500 runs
326
+
327
+ **Cause** `Projections.maxWorkspaceRuns` is 500, matching
328
+ `ControlSchema.maxPageSize` so the control plane can answer the whole allowance
329
+ in one page.
330
+
331
+ **Fix** Read the runs you care about individually with `run-summary`. There is
332
+ no paging on the workspace projection: a workspace with more runs is answered
333
+ with its newest 500, and a newly created run displaces the oldest one.
334
+
335
+ ## Recovery
336
+
337
+ ### An abandoned run is never resumed
338
+
339
+ **Cause** The gateway does not supervise runs, so nothing it serves discovers
340
+ or resumes a run whose owner died.
341
+
342
+ **Fix** Recovery is a reclaim rather than a supervisor. A run becomes
343
+ reclaimable once the heartbeat its owner stopped renewing is older than 30
344
+ seconds, and any running process with the flow registered takes it over. Bring
345
+ up a host composition running the durable engine driver with the relevant flows
346
+ registered, or recover the run explicitly.
347
+
348
+ ### /health answers but every projection fails
349
+
350
+ **Cause** Startup is deliberately not blocked by a subsystem that failed to
351
+ recover. A gateway whose read path cannot read still comes up, because a
352
+ supervisor still has to be able to ask which workspace this process is.
353
+
354
+ **Fix** Read the server log for the read path's own failure. The identity
355
+ answer is correct and is not evidence that the rest is healthy.