@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.
- package/CHANGELOG.md +198 -0
- package/LICENSE +1 -1
- package/README.md +92 -0
- package/dist/cjs/Diagnosis.d.ts +275 -0
- package/dist/cjs/Diagnosis.d.ts.map +1 -0
- package/dist/cjs/Diagnosis.js +476 -0
- package/dist/cjs/Diagnosis.js.map +7 -0
- package/dist/cjs/EngineTrace.d.ts +76 -0
- package/dist/cjs/EngineTrace.d.ts.map +1 -0
- package/dist/cjs/EngineTrace.js +501 -0
- package/dist/cjs/EngineTrace.js.map +7 -0
- package/dist/cjs/GatewayError.d.ts +54 -0
- package/dist/cjs/GatewayError.d.ts.map +1 -0
- package/dist/cjs/GatewayError.js +51 -0
- package/dist/cjs/GatewayError.js.map +7 -0
- package/dist/cjs/GatewayProjection.d.ts +480 -0
- package/dist/cjs/GatewayProjection.d.ts.map +1 -0
- package/dist/cjs/GatewayProjection.js +462 -0
- package/dist/cjs/GatewayProjection.js.map +7 -0
- package/dist/cjs/GatewayRpcs.d.ts +1886 -0
- package/dist/cjs/GatewayRpcs.d.ts.map +1 -0
- package/dist/cjs/GatewayRpcs.js +121 -0
- package/dist/cjs/GatewayRpcs.js.map +7 -0
- package/dist/cjs/GatewaySchema.d.ts +3274 -0
- package/dist/cjs/GatewaySchema.d.ts.map +1 -0
- package/dist/cjs/GatewaySchema.js +141 -0
- package/dist/cjs/GatewaySchema.js.map +7 -0
- package/dist/cjs/GatewayServer.d.ts +427 -0
- package/dist/cjs/GatewayServer.d.ts.map +1 -0
- package/dist/cjs/GatewayServer.js +428 -0
- package/dist/cjs/GatewayServer.js.map +7 -0
- package/dist/cjs/HostBranchPresence.d.ts +12 -0
- package/dist/cjs/HostBranchPresence.d.ts.map +1 -0
- package/dist/cjs/HostBranchPresence.js +82 -0
- package/dist/cjs/HostBranchPresence.js.map +7 -0
- package/dist/cjs/Projections.d.ts +209 -0
- package/dist/cjs/Projections.d.ts.map +1 -0
- package/dist/cjs/Projections.js +906 -0
- package/dist/cjs/Projections.js.map +7 -0
- package/dist/cjs/RunDevTools.d.ts +181 -0
- package/dist/cjs/RunDevTools.d.ts.map +1 -0
- package/dist/cjs/RunDevTools.js +195 -0
- package/dist/cjs/RunDevTools.js.map +7 -0
- package/dist/cjs/RunHistory.d.ts +185 -0
- package/dist/cjs/RunHistory.d.ts.map +1 -0
- package/dist/cjs/RunHistory.js +68 -0
- package/dist/cjs/RunHistory.js.map +7 -0
- package/dist/cjs/RunTrace.d.ts +753 -0
- package/dist/cjs/RunTrace.d.ts.map +1 -0
- package/dist/cjs/RunTrace.js +1593 -0
- package/dist/cjs/RunTrace.js.map +7 -0
- package/dist/cjs/RuntimeBridge.d.ts +1386 -0
- package/dist/cjs/RuntimeBridge.d.ts.map +1 -0
- package/dist/cjs/RuntimeBridge.js +598 -0
- package/dist/cjs/RuntimeBridge.js.map +7 -0
- package/dist/cjs/bun/BunGateway.d.ts +20 -0
- package/dist/cjs/bun/BunGateway.d.ts.map +1 -0
- package/dist/cjs/bun/BunGateway.js +62 -0
- package/dist/cjs/bun/BunGateway.js.map +7 -0
- package/dist/cjs/index.d.ts +65 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +59 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/internal/NativeGateway.d.ts +176 -0
- package/dist/cjs/internal/NativeGateway.d.ts.map +1 -0
- package/dist/cjs/internal/NativeGateway.js +187 -0
- package/dist/cjs/internal/NativeGateway.js.map +7 -0
- package/dist/cjs/internal/actionRenderings.d.ts +2 -0
- package/dist/cjs/internal/actionRenderings.d.ts.map +1 -0
- package/dist/cjs/internal/actionRenderings.js +224 -0
- package/dist/cjs/internal/actionRenderings.js.map +7 -0
- package/dist/cjs/internal/callEvents.d.ts +97 -0
- package/dist/cjs/internal/callEvents.d.ts.map +1 -0
- package/dist/cjs/internal/callEvents.js +169 -0
- package/dist/cjs/internal/callEvents.js.map +7 -0
- package/dist/cjs/internal/digestIndex.d.ts +31 -0
- package/dist/cjs/internal/digestIndex.d.ts.map +1 -0
- package/dist/cjs/internal/digestIndex.js +105 -0
- package/dist/cjs/internal/digestIndex.js.map +7 -0
- package/dist/cjs/internal/digestMemory.d.ts +19 -0
- package/dist/cjs/internal/digestMemory.d.ts.map +1 -0
- package/dist/cjs/internal/digestMemory.js +33 -0
- package/dist/cjs/internal/digestMemory.js.map +7 -0
- package/dist/cjs/internal/inspectLabels.d.ts +8 -0
- package/dist/cjs/internal/inspectLabels.d.ts.map +1 -0
- package/dist/cjs/internal/inspectLabels.js +29 -0
- package/dist/cjs/internal/inspectLabels.js.map +7 -0
- package/dist/cjs/internal/nativeResolution.d.ts +41 -0
- package/dist/cjs/internal/nativeResolution.d.ts.map +1 -0
- package/dist/cjs/internal/nativeResolution.js +62 -0
- package/dist/cjs/internal/nativeResolution.js.map +7 -0
- package/dist/cjs/internal/nodeEvents.d.ts +47 -0
- package/dist/cjs/internal/nodeEvents.d.ts.map +1 -0
- package/dist/cjs/internal/nodeEvents.js +60 -0
- package/dist/cjs/internal/nodeEvents.js.map +7 -0
- package/dist/cjs/node/NodeGateway.d.ts +16 -0
- package/dist/cjs/node/NodeGateway.d.ts.map +1 -0
- package/dist/cjs/node/NodeGateway.js +48 -0
- package/dist/cjs/node/NodeGateway.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/Diagnosis.d.ts +275 -0
- package/dist/esm/Diagnosis.d.ts.map +1 -0
- package/dist/esm/Diagnosis.js +697 -0
- package/dist/esm/Diagnosis.js.map +1 -0
- package/dist/esm/EngineTrace.d.ts +76 -0
- package/dist/esm/EngineTrace.d.ts.map +1 -0
- package/dist/esm/EngineTrace.js +548 -0
- package/dist/esm/EngineTrace.js.map +1 -0
- package/dist/esm/GatewayError.d.ts +54 -0
- package/dist/esm/GatewayError.d.ts.map +1 -0
- package/dist/esm/GatewayError.js +60 -0
- package/dist/esm/GatewayError.js.map +1 -0
- package/dist/esm/GatewayProjection.d.ts +480 -0
- package/dist/esm/GatewayProjection.d.ts.map +1 -0
- package/dist/esm/GatewayProjection.js +792 -0
- package/dist/esm/GatewayProjection.js.map +1 -0
- package/dist/esm/GatewayRpcs.d.ts +1886 -0
- package/dist/esm/GatewayRpcs.d.ts.map +1 -0
- package/dist/esm/GatewayRpcs.js +145 -0
- package/dist/esm/GatewayRpcs.js.map +1 -0
- package/dist/esm/GatewaySchema.d.ts +3274 -0
- package/dist/esm/GatewaySchema.d.ts.map +1 -0
- package/dist/esm/GatewaySchema.js +244 -0
- package/dist/esm/GatewaySchema.js.map +1 -0
- package/dist/esm/GatewayServer.d.ts +427 -0
- package/dist/esm/GatewayServer.d.ts.map +1 -0
- package/dist/esm/GatewayServer.js +725 -0
- package/dist/esm/GatewayServer.js.map +1 -0
- package/dist/esm/HostBranchPresence.d.ts +12 -0
- package/dist/esm/HostBranchPresence.d.ts.map +1 -0
- package/dist/esm/HostBranchPresence.js +54 -0
- package/dist/esm/HostBranchPresence.js.map +1 -0
- package/dist/esm/Projections.d.ts +209 -0
- package/dist/esm/Projections.d.ts.map +1 -0
- package/dist/esm/Projections.js +1254 -0
- package/dist/esm/Projections.js.map +1 -0
- package/dist/esm/RunDevTools.d.ts +181 -0
- package/dist/esm/RunDevTools.d.ts.map +1 -0
- package/dist/esm/RunDevTools.js +281 -0
- package/dist/esm/RunDevTools.js.map +1 -0
- package/dist/esm/RunHistory.d.ts +185 -0
- package/dist/esm/RunHistory.d.ts.map +1 -0
- package/dist/esm/RunHistory.js +109 -0
- package/dist/esm/RunHistory.js.map +1 -0
- package/dist/esm/RunTrace.d.ts +753 -0
- package/dist/esm/RunTrace.d.ts.map +1 -0
- package/dist/esm/RunTrace.js +2105 -0
- package/dist/esm/RunTrace.js.map +1 -0
- package/dist/esm/RuntimeBridge.d.ts +1386 -0
- package/dist/esm/RuntimeBridge.d.ts.map +1 -0
- package/dist/esm/RuntimeBridge.js +659 -0
- package/dist/esm/RuntimeBridge.js.map +1 -0
- package/dist/esm/bun/BunGateway.d.ts +20 -0
- package/dist/esm/bun/BunGateway.d.ts.map +1 -0
- package/dist/esm/bun/BunGateway.js +32 -0
- package/dist/esm/bun/BunGateway.js.map +1 -0
- package/dist/esm/index.d.ts +65 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +65 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/NativeGateway.d.ts +176 -0
- package/dist/esm/internal/NativeGateway.d.ts.map +1 -0
- package/dist/esm/internal/NativeGateway.js +268 -0
- package/dist/esm/internal/NativeGateway.js.map +1 -0
- package/dist/esm/internal/actionRenderings.d.ts +2 -0
- package/dist/esm/internal/actionRenderings.d.ts.map +1 -0
- package/dist/esm/internal/actionRenderings.js +202 -0
- package/dist/esm/internal/actionRenderings.js.map +1 -0
- package/dist/esm/internal/callEvents.d.ts +97 -0
- package/dist/esm/internal/callEvents.d.ts.map +1 -0
- package/dist/esm/internal/callEvents.js +206 -0
- package/dist/esm/internal/callEvents.js.map +1 -0
- package/dist/esm/internal/digestIndex.d.ts +31 -0
- package/dist/esm/internal/digestIndex.d.ts.map +1 -0
- package/dist/esm/internal/digestIndex.js +87 -0
- package/dist/esm/internal/digestIndex.js.map +1 -0
- package/dist/esm/internal/digestMemory.d.ts +19 -0
- package/dist/esm/internal/digestMemory.d.ts.map +1 -0
- package/dist/esm/internal/digestMemory.js +23 -0
- package/dist/esm/internal/digestMemory.js.map +1 -0
- package/dist/esm/internal/inspectLabels.d.ts +8 -0
- package/dist/esm/internal/inspectLabels.d.ts.map +1 -0
- package/dist/esm/internal/inspectLabels.js +12 -0
- package/dist/esm/internal/inspectLabels.js.map +1 -0
- package/dist/esm/internal/nativeResolution.d.ts +41 -0
- package/dist/esm/internal/nativeResolution.d.ts.map +1 -0
- package/dist/esm/internal/nativeResolution.js +78 -0
- package/dist/esm/internal/nativeResolution.js.map +1 -0
- package/dist/esm/internal/nodeEvents.d.ts +47 -0
- package/dist/esm/internal/nodeEvents.d.ts.map +1 -0
- package/dist/esm/internal/nodeEvents.js +60 -0
- package/dist/esm/internal/nodeEvents.js.map +1 -0
- package/dist/esm/node/NodeGateway.d.ts +16 -0
- package/dist/esm/node/NodeGateway.d.ts.map +1 -0
- package/dist/esm/node/NodeGateway.js +13 -0
- package/dist/esm/node/NodeGateway.js.map +1 -0
- package/dist/vendor/adapters.json +2707 -0
- package/dist/vendor/bun/BunChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/bun/BunChildProcessSpawner.js +14 -0
- package/dist/vendor/bun/BunClusterHttp.d.ts +83 -0
- package/dist/vendor/bun/BunClusterHttp.js +39 -0
- package/dist/vendor/bun/BunClusterSocket.d.ts +65 -0
- package/dist/vendor/bun/BunClusterSocket.js +22 -0
- package/dist/vendor/bun/BunCrypto.d.ts +10 -0
- package/dist/vendor/bun/BunCrypto.js +8 -0
- package/dist/vendor/bun/BunFileSystem.d.ts +10 -0
- package/dist/vendor/bun/BunFileSystem.js +9 -0
- package/dist/vendor/bun/BunHttpClient.d.ts +9 -0
- package/dist/vendor/bun/BunHttpClient.js +1 -0
- package/dist/vendor/bun/BunHttpPlatform.d.ts +10 -0
- package/dist/vendor/bun/BunHttpPlatform.js +11 -0
- package/dist/vendor/bun/BunHttpServer.d.ts +142 -0
- package/dist/vendor/bun/BunHttpServer.js +38 -0
- package/dist/vendor/bun/BunHttpServerRequest.d.ts +18 -0
- package/dist/vendor/bun/BunHttpServerRequest.js +7 -0
- package/dist/vendor/bun/BunMultipart.d.ts +31 -0
- package/dist/vendor/bun/BunMultipart.js +12 -0
- package/dist/vendor/bun/BunPath.d.ts +24 -0
- package/dist/vendor/bun/BunPath.js +12 -0
- package/dist/vendor/bun/BunRedis.d.ts +49 -0
- package/dist/vendor/bun/BunRedis.js +11 -0
- package/dist/vendor/bun/BunRuntime.d.ts +85 -0
- package/dist/vendor/bun/BunRuntime.js +8 -0
- package/dist/vendor/bun/BunServices.d.ts +34 -0
- package/dist/vendor/bun/BunServices.js +23 -0
- package/dist/vendor/bun/BunSink.d.ts +8 -0
- package/dist/vendor/bun/BunSink.js +12 -0
- package/dist/vendor/bun/BunSocket.d.ts +40 -0
- package/dist/vendor/bun/BunSocket.js +29 -0
- package/dist/vendor/bun/BunSocketServer.d.ts +8 -0
- package/dist/vendor/bun/BunSocketServer.js +21 -0
- package/dist/vendor/bun/BunStdio.d.ts +11 -0
- package/dist/vendor/bun/BunStdio.js +10 -0
- package/dist/vendor/bun/BunStream.d.ts +19 -0
- package/dist/vendor/bun/BunStream.js +30 -0
- package/dist/vendor/bun/BunTerminal.d.ts +21 -0
- package/dist/vendor/bun/BunTerminal.js +10 -0
- package/dist/vendor/bun/BunWorker.d.ts +20 -0
- package/dist/vendor/bun/BunWorker.js +9 -0
- package/dist/vendor/bun/BunWorkerRunner.d.ts +12 -0
- package/dist/vendor/bun/BunWorkerRunner.js +7 -0
- package/dist/vendor/bun/LICENSE +21 -0
- package/dist/vendor/bun/index.d.ts +92 -0
- package/dist/vendor/bun/index.js +107 -0
- package/dist/vendor/chunk-2GCOZTTW.js +48 -0
- package/dist/vendor/chunk-37CUR3PO.js +81 -0
- package/dist/vendor/chunk-3ARKKENZ.js +45 -0
- package/dist/vendor/chunk-3NV2UDBI.js +7 -0
- package/dist/vendor/chunk-3OSW7CT7.js +143 -0
- package/dist/vendor/chunk-62R63L74.js +62 -0
- package/dist/vendor/chunk-6AQLBC2I.js +118 -0
- package/dist/vendor/chunk-6C5H7S6B.js +18 -0
- package/dist/vendor/chunk-6DY5RBZD.js +85 -0
- package/dist/vendor/chunk-6UPBD47P.js +53 -0
- package/dist/vendor/chunk-AVVVN75Z.js +96 -0
- package/dist/vendor/chunk-B4DHEMBB.js +14 -0
- package/dist/vendor/chunk-BCK3NJOX.js +15 -0
- package/dist/vendor/chunk-BFBIHJ6X.js +0 -0
- package/dist/vendor/chunk-CES4OUM4.js +63 -0
- package/dist/vendor/chunk-D64L6YND.js +59 -0
- package/dist/vendor/chunk-DS2R6WOM.js +18 -0
- package/dist/vendor/chunk-DX4Z23DM.js +65 -0
- package/dist/vendor/chunk-DZ2VOUDP.js +564 -0
- package/dist/vendor/chunk-FOXN6JPJ.js +61 -0
- package/dist/vendor/chunk-FPQF7CR5.js +55 -0
- package/dist/vendor/chunk-FUTCTCEG.js +20 -0
- package/dist/vendor/chunk-GUPAV2YZ.js +18 -0
- package/dist/vendor/chunk-H2Z2Y4QH.js +70 -0
- package/dist/vendor/chunk-HAEDVSSM.js +129 -0
- package/dist/vendor/chunk-HY7BBL3K.js +93 -0
- package/dist/vendor/chunk-IFTTT6D5.js +31 -0
- package/dist/vendor/chunk-KQDSNB7M.js +26 -0
- package/dist/vendor/chunk-LIHLXXGQ.js +26 -0
- package/dist/vendor/chunk-LKCGQEE5.js +28 -0
- package/dist/vendor/chunk-MH2J3BYB.js +0 -0
- package/dist/vendor/chunk-ML2NAFH2.js +131 -0
- package/dist/vendor/chunk-MLFIZ5O2.js +0 -0
- package/dist/vendor/chunk-MLKGABMK.js +9 -0
- package/dist/vendor/chunk-MSCLEMYX.js +71 -0
- package/dist/vendor/chunk-OBWXQKVP.js +57 -0
- package/dist/vendor/chunk-QR557K66.js +20 -0
- package/dist/vendor/chunk-R4QUY7DH.js +18 -0
- package/dist/vendor/chunk-RGECXXJS.js +18 -0
- package/dist/vendor/chunk-TFY7W6D4.js +36 -0
- package/dist/vendor/chunk-TGPIVY4A.js +104 -0
- package/dist/vendor/chunk-TGXCX6W3.js +398 -0
- package/dist/vendor/chunk-TOHSFXMV.js +437 -0
- package/dist/vendor/chunk-UHIDPUFF.js +34 -0
- package/dist/vendor/chunk-ULT6CWUI.js +109 -0
- package/dist/vendor/chunk-UXBGYQR3.js +18 -0
- package/dist/vendor/chunk-V6LUGQ7O.js +21 -0
- package/dist/vendor/chunk-W4OASVX6.js +92 -0
- package/dist/vendor/chunk-WAII54GA.js +18 -0
- package/dist/vendor/chunk-WECQDT36.js +426 -0
- package/dist/vendor/chunk-WHKMOC7Z.js +28 -0
- package/dist/vendor/chunk-WVFOZ2UL.js +40 -0
- package/dist/vendor/chunk-X73E2UPI.js +18 -0
- package/dist/vendor/chunk-XCYARUII.js +63 -0
- package/dist/vendor/chunk-XFEVTDVD.js +34 -0
- package/dist/vendor/chunk-XFZZYSJ4.js +22 -0
- package/dist/vendor/chunk-XJWJXLXJ.js +18 -0
- package/dist/vendor/chunk-XY3Q62EO.js +18 -0
- package/dist/vendor/chunk-YDASSC75.js +394 -0
- package/dist/vendor/chunk-Z6C7SO5Z.js +507 -0
- package/dist/vendor/chunk-Z7QNPJEB.js +229 -0
- package/dist/vendor/chunk-Z7QPP4YH.js +249 -0
- package/dist/vendor/chunk-ZCHYLHJH.js +86 -0
- package/dist/vendor/chunk-ZIQVYVMA.js +22 -0
- package/dist/vendor/chunk-ZPIG2CUA.js +34 -0
- package/dist/vendor/cjs/bun/BunChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/cjs/bun/BunChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/bun/BunClusterHttp.d.ts +83 -0
- package/dist/vendor/cjs/bun/BunClusterHttp.js +1 -0
- package/dist/vendor/cjs/bun/BunClusterSocket.d.ts +65 -0
- package/dist/vendor/cjs/bun/BunClusterSocket.js +1 -0
- package/dist/vendor/cjs/bun/BunCrypto.d.ts +10 -0
- package/dist/vendor/cjs/bun/BunCrypto.js +1 -0
- package/dist/vendor/cjs/bun/BunFileSystem.d.ts +10 -0
- package/dist/vendor/cjs/bun/BunFileSystem.js +1 -0
- package/dist/vendor/cjs/bun/BunHttpClient.d.ts +9 -0
- package/dist/vendor/cjs/bun/BunHttpClient.js +1 -0
- package/dist/vendor/cjs/bun/BunHttpPlatform.d.ts +10 -0
- package/dist/vendor/cjs/bun/BunHttpPlatform.js +1 -0
- package/dist/vendor/cjs/bun/BunHttpServer.d.ts +142 -0
- package/dist/vendor/cjs/bun/BunHttpServer.js +1 -0
- package/dist/vendor/cjs/bun/BunHttpServerRequest.d.ts +18 -0
- package/dist/vendor/cjs/bun/BunHttpServerRequest.js +1 -0
- package/dist/vendor/cjs/bun/BunMultipart.d.ts +31 -0
- package/dist/vendor/cjs/bun/BunMultipart.js +1 -0
- package/dist/vendor/cjs/bun/BunPath.d.ts +24 -0
- package/dist/vendor/cjs/bun/BunPath.js +1 -0
- package/dist/vendor/cjs/bun/BunRedis.d.ts +49 -0
- package/dist/vendor/cjs/bun/BunRedis.js +1 -0
- package/dist/vendor/cjs/bun/BunRuntime.d.ts +85 -0
- package/dist/vendor/cjs/bun/BunRuntime.js +1 -0
- package/dist/vendor/cjs/bun/BunServices.d.ts +34 -0
- package/dist/vendor/cjs/bun/BunServices.js +1 -0
- package/dist/vendor/cjs/bun/BunSink.d.ts +8 -0
- package/dist/vendor/cjs/bun/BunSink.js +1 -0
- package/dist/vendor/cjs/bun/BunSocket.d.ts +40 -0
- package/dist/vendor/cjs/bun/BunSocket.js +1 -0
- package/dist/vendor/cjs/bun/BunSocketServer.d.ts +8 -0
- package/dist/vendor/cjs/bun/BunSocketServer.js +1 -0
- package/dist/vendor/cjs/bun/BunStdio.d.ts +11 -0
- package/dist/vendor/cjs/bun/BunStdio.js +1 -0
- package/dist/vendor/cjs/bun/BunStream.d.ts +19 -0
- package/dist/vendor/cjs/bun/BunStream.js +1 -0
- package/dist/vendor/cjs/bun/BunTerminal.d.ts +21 -0
- package/dist/vendor/cjs/bun/BunTerminal.js +1 -0
- package/dist/vendor/cjs/bun/BunWorker.d.ts +20 -0
- package/dist/vendor/cjs/bun/BunWorker.js +1 -0
- package/dist/vendor/cjs/bun/BunWorkerRunner.d.ts +12 -0
- package/dist/vendor/cjs/bun/BunWorkerRunner.js +1 -0
- package/dist/vendor/cjs/bun/index.d.ts +92 -0
- package/dist/vendor/cjs/bun/index.js +1 -0
- package/dist/vendor/cjs/node/NodeChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/cjs/node/NodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node/NodeClusterHttp.d.ts +63 -0
- package/dist/vendor/cjs/node/NodeClusterHttp.js +1 -0
- package/dist/vendor/cjs/node/NodeClusterSocket.d.ts +79 -0
- package/dist/vendor/cjs/node/NodeClusterSocket.js +1 -0
- package/dist/vendor/cjs/node/NodeCrypto.d.ts +10 -0
- package/dist/vendor/cjs/node/NodeCrypto.js +1 -0
- package/dist/vendor/cjs/node/NodeFileSystem.d.ts +10 -0
- package/dist/vendor/cjs/node/NodeFileSystem.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpClient.d.ts +179 -0
- package/dist/vendor/cjs/node/NodeHttpClient.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpIncomingMessage.d.ts +62 -0
- package/dist/vendor/cjs/node/NodeHttpIncomingMessage.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpPlatform.d.ts +36 -0
- package/dist/vendor/cjs/node/NodeHttpPlatform.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpServer.d.ts +120 -0
- package/dist/vendor/cjs/node/NodeHttpServer.js +1 -0
- package/dist/vendor/cjs/node/NodeHttpServerRequest.d.ts +29 -0
- package/dist/vendor/cjs/node/NodeHttpServerRequest.js +1 -0
- package/dist/vendor/cjs/node/NodeMultipart.d.ts +46 -0
- package/dist/vendor/cjs/node/NodeMultipart.js +1 -0
- package/dist/vendor/cjs/node/NodeMultipartParser.d.ts +97 -0
- package/dist/vendor/cjs/node/NodeMultipartParser.js +1 -0
- package/dist/vendor/cjs/node/NodePath.d.ts +27 -0
- package/dist/vendor/cjs/node/NodePath.js +1 -0
- package/dist/vendor/cjs/node/NodeRedis.d.ts +74 -0
- package/dist/vendor/cjs/node/NodeRedis.js +1 -0
- package/dist/vendor/cjs/node/NodeRuntime.d.ts +85 -0
- package/dist/vendor/cjs/node/NodeRuntime.js +1 -0
- package/dist/vendor/cjs/node/NodeServices.d.ts +34 -0
- package/dist/vendor/cjs/node/NodeServices.js +1 -0
- package/dist/vendor/cjs/node/NodeSink.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeSink.js +1 -0
- package/dist/vendor/cjs/node/NodeSocket.d.ts +38 -0
- package/dist/vendor/cjs/node/NodeSocket.js +1 -0
- package/dist/vendor/cjs/node/NodeSocketServer.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeSocketServer.js +1 -0
- package/dist/vendor/cjs/node/NodeStdio.d.ts +11 -0
- package/dist/vendor/cjs/node/NodeStdio.js +1 -0
- package/dist/vendor/cjs/node/NodeStream.d.ts +8 -0
- package/dist/vendor/cjs/node/NodeStream.js +1 -0
- package/dist/vendor/cjs/node/NodeTerminal.d.ts +21 -0
- package/dist/vendor/cjs/node/NodeTerminal.js +1 -0
- package/dist/vendor/cjs/node/NodeWorker.d.ts +22 -0
- package/dist/vendor/cjs/node/NodeWorker.js +1 -0
- package/dist/vendor/cjs/node/NodeWorkerRunner.d.ts +12 -0
- package/dist/vendor/cjs/node/NodeWorkerRunner.js +1 -0
- package/dist/vendor/cjs/node/Undici.d.ts +28 -0
- package/dist/vendor/cjs/node/Undici.js +1 -0
- package/dist/vendor/cjs/node/index.d.ts +100 -0
- package/dist/vendor/cjs/node/index.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.d.ts +57 -0
- package/dist/vendor/cjs/node-shared/NodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeClusterSocket.d.ts +22 -0
- package/dist/vendor/cjs/node-shared/NodeClusterSocket.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeCrypto.d.ts +27 -0
- package/dist/vendor/cjs/node-shared/NodeCrypto.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeFileSystem.d.ts +11 -0
- package/dist/vendor/cjs/node-shared/NodeFileSystem.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeHttpCompression.d.ts +36 -0
- package/dist/vendor/cjs/node-shared/NodeHttpCompression.js +1 -0
- package/dist/vendor/cjs/node-shared/NodePath.d.ts +27 -0
- package/dist/vendor/cjs/node-shared/NodePath.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeRuntime.d.ts +47 -0
- package/dist/vendor/cjs/node-shared/NodeRuntime.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSink.d.ts +69 -0
- package/dist/vendor/cjs/node-shared/NodeSink.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSocket.d.ts +134 -0
- package/dist/vendor/cjs/node-shared/NodeSocket.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeSocketServer.d.ts +80 -0
- package/dist/vendor/cjs/node-shared/NodeSocketServer.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeStdio.d.ts +12 -0
- package/dist/vendor/cjs/node-shared/NodeStdio.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeStream.d.ts +179 -0
- package/dist/vendor/cjs/node-shared/NodeStream.js +1 -0
- package/dist/vendor/cjs/node-shared/NodeTerminal.d.ts +22 -0
- package/dist/vendor/cjs/node-shared/NodeTerminal.js +1 -0
- package/dist/vendor/cjs/node-shared/index.d.ts +56 -0
- package/dist/vendor/cjs/node-shared/index.js +1 -0
- package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/dist/vendor/cjs/node-shared/internal/nodeChildProcessSpawner.js +1 -0
- package/dist/vendor/cjs/node-shared/internal/utils.d.ts +2 -0
- package/dist/vendor/cjs/node-shared/internal/utils.js +1 -0
- package/dist/vendor/cjs/package.json +1 -0
- package/dist/vendor/cjs/platform-bun.d.ts +92 -0
- package/dist/vendor/cjs/platform-bun.js +1 -0
- package/dist/vendor/cjs/platform-node-shared.d.ts +56 -0
- package/dist/vendor/cjs/platform-node-shared.js +1 -0
- package/dist/vendor/cjs/platform-node.d.ts +100 -0
- package/dist/vendor/cjs/platform-node.js +1 -0
- package/dist/vendor/node/LICENSE +21 -0
- package/dist/vendor/node/NodeChildProcessSpawner.d.ts +7 -0
- package/dist/vendor/node/NodeChildProcessSpawner.js +14 -0
- package/dist/vendor/node/NodeClusterHttp.d.ts +63 -0
- package/dist/vendor/node/NodeClusterHttp.js +43 -0
- package/dist/vendor/node/NodeClusterSocket.d.ts +79 -0
- package/dist/vendor/node/NodeClusterSocket.js +30 -0
- package/dist/vendor/node/NodeCrypto.d.ts +10 -0
- package/dist/vendor/node/NodeCrypto.js +8 -0
- package/dist/vendor/node/NodeFileSystem.d.ts +10 -0
- package/dist/vendor/node/NodeFileSystem.js +9 -0
- package/dist/vendor/node/NodeHttpClient.d.ts +179 -0
- package/dist/vendor/node/NodeHttpClient.js +46 -0
- package/dist/vendor/node/NodeHttpIncomingMessage.d.ts +62 -0
- package/dist/vendor/node/NodeHttpIncomingMessage.js +10 -0
- package/dist/vendor/node/NodeHttpPlatform.d.ts +36 -0
- package/dist/vendor/node/NodeHttpPlatform.js +16 -0
- package/dist/vendor/node/NodeHttpServer.d.ts +120 -0
- package/dist/vendor/node/NodeHttpServer.js +46 -0
- package/dist/vendor/node/NodeHttpServerRequest.d.ts +29 -0
- package/dist/vendor/node/NodeHttpServerRequest.js +9 -0
- package/dist/vendor/node/NodeMultipart.d.ts +46 -0
- package/dist/vendor/node/NodeMultipart.js +15 -0
- package/dist/vendor/node/NodeMultipartParser.d.ts +97 -0
- package/dist/vendor/node/NodeMultipartParser.js +11 -0
- package/dist/vendor/node/NodePath.d.ts +27 -0
- package/dist/vendor/node/NodePath.js +12 -0
- package/dist/vendor/node/NodeRedis.d.ts +74 -0
- package/dist/vendor/node/NodeRedis.js +11 -0
- package/dist/vendor/node/NodeRuntime.d.ts +85 -0
- package/dist/vendor/node/NodeRuntime.js +8 -0
- package/dist/vendor/node/NodeServices.d.ts +34 -0
- package/dist/vendor/node/NodeServices.js +23 -0
- package/dist/vendor/node/NodeSink.d.ts +8 -0
- package/dist/vendor/node/NodeSink.js +12 -0
- package/dist/vendor/node/NodeSocket.d.ts +38 -0
- package/dist/vendor/node/NodeSocket.js +31 -0
- package/dist/vendor/node/NodeSocketServer.d.ts +8 -0
- package/dist/vendor/node/NodeSocketServer.js +21 -0
- package/dist/vendor/node/NodeStdio.d.ts +11 -0
- package/dist/vendor/node/NodeStdio.js +10 -0
- package/dist/vendor/node/NodeStream.d.ts +8 -0
- package/dist/vendor/node/NodeStream.js +27 -0
- package/dist/vendor/node/NodeTerminal.d.ts +21 -0
- package/dist/vendor/node/NodeTerminal.js +10 -0
- package/dist/vendor/node/NodeWorker.d.ts +22 -0
- package/dist/vendor/node/NodeWorker.js +9 -0
- package/dist/vendor/node/NodeWorkerRunner.d.ts +12 -0
- package/dist/vendor/node/NodeWorkerRunner.js +7 -0
- package/dist/vendor/node/Undici.d.ts +28 -0
- package/dist/vendor/node/Undici.js +9 -0
- package/dist/vendor/node/index.d.ts +100 -0
- package/dist/vendor/node/index.js +115 -0
- package/dist/vendor/node-shared/LICENSE +21 -0
- package/dist/vendor/node-shared/NodeChildProcessSpawner.d.ts +57 -0
- package/dist/vendor/node-shared/NodeChildProcessSpawner.js +13 -0
- package/dist/vendor/node-shared/NodeClusterSocket.d.ts +22 -0
- package/dist/vendor/node-shared/NodeClusterSocket.js +11 -0
- package/dist/vendor/node-shared/NodeCrypto.d.ts +27 -0
- package/dist/vendor/node-shared/NodeCrypto.js +9 -0
- package/dist/vendor/node-shared/NodeFileSystem.d.ts +11 -0
- package/dist/vendor/node-shared/NodeFileSystem.js +8 -0
- package/dist/vendor/node-shared/NodeHttpCompression.d.ts +36 -0
- package/dist/vendor/node-shared/NodeHttpCompression.js +13 -0
- package/dist/vendor/node-shared/NodePath.d.ts +27 -0
- package/dist/vendor/node-shared/NodePath.js +11 -0
- package/dist/vendor/node-shared/NodeRuntime.d.ts +47 -0
- package/dist/vendor/node-shared/NodeRuntime.js +7 -0
- package/dist/vendor/node-shared/NodeSink.d.ts +69 -0
- package/dist/vendor/node-shared/NodeSink.js +11 -0
- package/dist/vendor/node-shared/NodeSocket.d.ts +134 -0
- package/dist/vendor/node-shared/NodeSocket.js +23 -0
- package/dist/vendor/node-shared/NodeSocketServer.d.ts +80 -0
- package/dist/vendor/node-shared/NodeSocketServer.js +20 -0
- package/dist/vendor/node-shared/NodeStdio.d.ts +12 -0
- package/dist/vendor/node-shared/NodeStdio.js +9 -0
- package/dist/vendor/node-shared/NodeStream.d.ts +179 -0
- package/dist/vendor/node-shared/NodeStream.js +26 -0
- package/dist/vendor/node-shared/NodeTerminal.d.ts +22 -0
- package/dist/vendor/node-shared/NodeTerminal.js +9 -0
- package/dist/vendor/node-shared/index.d.ts +56 -0
- package/dist/vendor/node-shared/index.js +58 -0
- package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/dist/vendor/node-shared/internal/nodeChildProcessSpawner.js +7 -0
- package/dist/vendor/node-shared/internal/utils.d.ts +2 -0
- package/dist/vendor/node-shared/internal/utils.js +7 -0
- package/dist/vendor/platform-bun.d.ts +92 -0
- package/dist/vendor/platform-bun.js +107 -0
- package/dist/vendor/platform-node-shared.d.ts +56 -0
- package/dist/vendor/platform-node-shared.js +58 -0
- package/dist/vendor/platform-node.d.ts +100 -0
- package/dist/vendor/platform-node.js +115 -0
- package/docs/README.md +158 -0
- package/docs/api.md +601 -0
- package/docs/concepts/projections.md +250 -0
- package/docs/concepts/subscriptions.md +204 -0
- package/docs/concepts/trust-boundary.md +256 -0
- package/docs/guides/diagnose-a-run.md +115 -0
- package/docs/guides/follow-a-run.md +150 -0
- package/docs/guides/host-the-gateway.md +153 -0
- package/docs/guides/read-a-projection.md +138 -0
- package/docs/guides/serve-beyond-loopback.md +166 -0
- package/docs/guides/submit-an-approval.md +187 -0
- package/docs/guides/testing.md +148 -0
- package/docs/installation.md +89 -0
- package/docs/quickstart.md +200 -0
- package/docs/troubleshooting.md +355 -0
- package/package.json +264 -32
- package/src/Diagnosis.ts +892 -0
- package/src/EngineTrace.ts +605 -0
- package/src/GatewayError.ts +71 -0
- package/src/GatewayProjection.ts +948 -0
- package/src/GatewayRpcs.ts +179 -0
- package/src/GatewaySchema.ts +516 -0
- package/src/GatewayServer.ts +932 -0
- package/src/HostBranchPresence.ts +72 -0
- package/src/Projections.ts +1735 -0
- package/src/RunDevTools.ts +394 -0
- package/src/RunHistory.ts +174 -0
- package/src/RunTrace.ts +2793 -0
- package/src/RuntimeBridge.ts +835 -0
- package/src/bun/BunGateway.ts +52 -0
- package/src/index.ts +77 -0
- package/src/internal/NativeGateway.ts +360 -0
- package/src/internal/actionRenderings.ts +201 -0
- package/src/internal/callEvents.ts +257 -0
- package/src/internal/digestIndex.ts +134 -0
- package/src/internal/digestMemory.ts +27 -0
- package/src/internal/inspectLabels.ts +13 -0
- package/src/internal/nativeResolution.ts +103 -0
- package/src/internal/nodeEvents.ts +100 -0
- package/src/node/NodeGateway.ts +30 -0
- package/openapi.yaml +0 -29945
- package/src/README.md +0 -39
- package/src/api/README.md +0 -23
- package/src/api/apiCollectionNames.js +0 -10
- package/src/api/index.d.ts +0 -126
- package/src/api/index.js +0 -14
- package/src/api/normalizeApiRow.js +0 -36
- package/src/api/serializeAccountRow.js +0 -10
- package/src/api/serializeApprovalRow.js +0 -53
- package/src/api/serializeComparisonScoreRow.js +0 -18
- package/src/api/serializeCronRow.js +0 -30
- package/src/api/serializeDocRow.js +0 -20
- package/src/api/serializeMemoryFactRow.js +0 -21
- package/src/api/serializePromptRow.js +0 -10
- package/src/api/serializeRunEventRow.js +0 -28
- package/src/api/serializeRunRow.js +0 -93
- package/src/api/serializeScoreDetailRow.js +0 -25
- package/src/api/serializeScoreRow.js +0 -26
- package/src/api/serializeTicketRow.js +0 -20
- package/src/api/serializeWorkflowRow.js +0 -10
- package/src/auth/scopes.d.ts +0 -19
- package/src/auth/scopes.js +0 -164
- package/src/index.d.ts +0 -316
- package/src/index.js +0 -108
- package/src/rpc/gatewayRpcTypes.ts +0 -186
- package/src/rpc/index.d.ts +0 -223
- 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.
|