@smthrs/gateway 0.35.0 → 1.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +509 -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 +471 -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 +19 -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 +1595 -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 +12 -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 +13 -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 +557 -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 +799 -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 +19 -0
- package/dist/esm/HostBranchPresence.d.ts.map +1 -0
- package/dist/esm/HostBranchPresence.js +57 -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 +2106 -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 +12 -0
- package/dist/esm/internal/actionRenderings.d.ts.map +1 -0
- package/dist/esm/internal/actionRenderings.js +212 -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 +13 -0
- package/dist/esm/internal/inspectLabels.d.ts.map +1 -0
- package/dist/esm/internal/inspectLabels.js +17 -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 +627 -0
- package/src/GatewayError.ts +71 -0
- package/src/GatewayProjection.ts +959 -0
- package/src/GatewayRpcs.ts +179 -0
- package/src/GatewaySchema.ts +516 -0
- package/src/GatewayServer.ts +932 -0
- package/src/HostBranchPresence.ts +76 -0
- package/src/Projections.ts +1735 -0
- package/src/RunDevTools.ts +394 -0
- package/src/RunHistory.ts +174 -0
- package/src/RunTrace.ts +2796 -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 +212 -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 +18 -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,250 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Projections"
|
|
3
|
+
description: "Why the gateway serves folds over control events instead of database rows, what the eight projections answer, and how a node gets its id."
|
|
4
|
+
sidebar:
|
|
5
|
+
order: 1
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
A projection is a read model: a row folded from the ordered `ControlEvent`
|
|
9
|
+
deltas [`@smthrs/control`](/api/control) already publishes, plus the run summary
|
|
10
|
+
the control plane already exposes. Subscribing to one never claims a run and
|
|
11
|
+
never writes.
|
|
12
|
+
|
|
13
|
+
The rule behind every design decision in this package is that the gateway never
|
|
14
|
+
opens the engine database. `Projections` reads through two control-plane
|
|
15
|
+
operations and nothing else: `Control.list` for run and flow listings, and
|
|
16
|
+
`Control.watch` for one run's ordered events. Two consequences follow, and both
|
|
17
|
+
are the point:
|
|
18
|
+
|
|
19
|
+
- A projection served to a browser through a relay is the same projection a
|
|
20
|
+
local reader computes. There is no privileged path.
|
|
21
|
+
- A projection cannot drift from the control plane by reading a column the
|
|
22
|
+
control plane does not expose, because it has no column to read.
|
|
23
|
+
|
|
24
|
+
That is why a UI depends on this package and on `@smthrs/control`, and never on
|
|
25
|
+
[`@smthrs/engine-store`](/api/engine-store). A projection is the contract; a
|
|
26
|
+
store row is an implementation detail.
|
|
27
|
+
|
|
28
|
+
## The eight projections
|
|
29
|
+
|
|
30
|
+
`GatewaySchema.ProjectionName` is the authority for the list, and the set a
|
|
31
|
+
release serves is the set the schema declares.
|
|
32
|
+
|
|
33
|
+
| Projection | Selector | Answers |
|
|
34
|
+
| ---------------- | ----------------------- | ----------------------------------------------------------------------------------------------- |
|
|
35
|
+
| `workspace-runs` | `WorkspaceRunsSelector` | one summary row per run in the workspace |
|
|
36
|
+
| `run-summary` | `RunSummarySelector` | one run's card: status, timing, activity counts, and the diagnosis of what happened to it |
|
|
37
|
+
| `run-events` | `RunEventsSelector` | the run's ordered control events, unfolded |
|
|
38
|
+
| `transcript` | `TranscriptSelector` | one turn-numbered line per reported event |
|
|
39
|
+
| `run-tree` | `RunTreeSelector` | the agent cell calls the run made, keyed `call-1`, `call-2`, and so on |
|
|
40
|
+
| `approvals` | `ApprovalsSelector` | with a run, that run's gates including decided ones; without one, the workspace's pending gates |
|
|
41
|
+
| `node-output` | `NodeOutputSelector` | the value one settled call produced |
|
|
42
|
+
| `flow-durations` | `FlowDurationsSelector` | how long one flow's nodes take, per action tag, over its newest finished runs |
|
|
43
|
+
|
|
44
|
+
`GatewaySchema.rowSchemaFor` maps a selector to the schema of the rows it
|
|
45
|
+
answers with, so a client decodes a snapshot instead of casting it.
|
|
46
|
+
|
|
47
|
+
## The rows speak the control plane's vocabulary
|
|
48
|
+
|
|
49
|
+
Wire names are the flows names. `RunSummaryRow.flowId` carries what an older
|
|
50
|
+
wire split across `workflowKey` and `workflow`; `createdAt` carries what it
|
|
51
|
+
called `createdAtMs`; `ApprovalRow.payload` is the `ApprovalTarget.Node`
|
|
52
|
+
envelope a client submits back unchanged. A client written against the control
|
|
53
|
+
plane reads these rows with no translation table, and no client reconstructs
|
|
54
|
+
authority for itself.
|
|
55
|
+
|
|
56
|
+
`ControlFacts.fold` is the shared run/approval fold used by both snapshots and
|
|
57
|
+
subscription deltas. Current control lifecycle writers include `factVersion: 1`
|
|
58
|
+
and the complete fenced control snapshot in the event. The first accepted
|
|
59
|
+
snapshot has a `created` baseline. The first upgraded transition of an older run
|
|
60
|
+
has a `legacy` baseline: it establishes state at that sequence and does not
|
|
61
|
+
invent the missing earlier history.
|
|
62
|
+
|
|
63
|
+
`RunSummaryRow.lifecycleProvenance` explains the boundary. `control: "events"`
|
|
64
|
+
means the latest versioned snapshot agrees with the current coordination row's
|
|
65
|
+
status and update time. `legacy-snapshot` means no versioned baseline is present.
|
|
66
|
+
`unverified-snapshot` means the row is ahead of the covered facts, a lifecycle
|
|
67
|
+
fact is missing, or a producer version is unknown. These last two cases retain
|
|
68
|
+
the observed row; they are never labelled successful replay. A later complete
|
|
69
|
+
snapshot begins a new legacy baseline after a gap.
|
|
70
|
+
|
|
71
|
+
Engine observations are independent: `execution: "engine-observed"` preserves
|
|
72
|
+
the status and waiting/ancestry fields `ControlLive` read from the executor;
|
|
73
|
+
`engine-missing` records that no execution was visible. Neither is claimed as
|
|
74
|
+
control-journal replay. No projection read writes a migration or acquires a run.
|
|
75
|
+
The field is optional on the wire for older gateway compatibility.
|
|
76
|
+
|
|
77
|
+
Current approval facts bind the full target, run, request, and digest. Duplicate
|
|
78
|
+
requests cannot reopen a decided gate; exact decisions can precede a request.
|
|
79
|
+
Legacy payloads remain readable, and an unnamed legacy decision can close only
|
|
80
|
+
a legacy request in that run. An unknown current identity never consumes another
|
|
81
|
+
gate. Serving historical approval content grants no authority: the control
|
|
82
|
+
decision endpoint still validates the exact target and principal.
|
|
83
|
+
|
|
84
|
+
## Committed flow results
|
|
85
|
+
|
|
86
|
+
`RunSummaryRow.finalOutput` prefers the assistant's final text. Otherwise it
|
|
87
|
+
uses the committed successful result of the `agent/run` execution named by
|
|
88
|
+
`control.engine.bound`. A matching `control.engine.event` must carry the
|
|
89
|
+
completed root's versioned run decision. Child results, unbound events, and
|
|
90
|
+
conflicting evidence do not supply output. Strings are preserved; other JSON
|
|
91
|
+
values are serialized. The binding and result survive in the carried diagnosis
|
|
92
|
+
when older events leave the retained window.
|
|
93
|
+
|
|
94
|
+
## How a node gets its id
|
|
95
|
+
|
|
96
|
+
`run-tree` folds agent cell calls, not child runs. A node opens on a call
|
|
97
|
+
invocation and settles on the matching recorded result. The native action owner
|
|
98
|
+
commits `flows.harness.call-fact.v1` inside its attempt transaction, then the
|
|
99
|
+
existing engine bridge copies it into `control.engine.event`. `Diagnosis`'s
|
|
100
|
+
shared `nativeCallEvent` and `uniqueCallEvents` normalize these facts with
|
|
101
|
+
compatible `control.agent.cell-call-started` / `cell-call-settled` telemetry.
|
|
102
|
+
`AgentSession` still emits the latter on its best-effort trace channel.
|
|
103
|
+
The normalized start carries `{callId, flowName, input}` and the settlement
|
|
104
|
+
carries `{callId, flowName, outcome, message, value}`. `callId` is
|
|
105
|
+
`cell-call-v1:` followed by the SHA-256 digest of the canonical JSON dispatch
|
|
106
|
+
identity: session, frame, cell digest, invocation ordinal, declaration digest,
|
|
107
|
+
and ordered active layers. The harness creates that identity before dispatch
|
|
108
|
+
and carries it unchanged into settlement. The same call keeps its identity
|
|
109
|
+
across replay, and two calls of the same flow can settle in either order.
|
|
110
|
+
|
|
111
|
+
The public node key remains the ordinal of each distinct start: `call-1`,
|
|
112
|
+
`call-2`, and so on. Identified settlements join by `callId`. Repeated starts
|
|
113
|
+
or settlements with the same ID contribute one observation to
|
|
114
|
+
the tree, node output, transcript, and diagnostic counts. A committed native
|
|
115
|
+
fact supersedes identified telemetry while retaining the first observation's
|
|
116
|
+
position and sequence, so existing node references remain stable. Without a
|
|
117
|
+
native fact, the first identified telemetry record remains the observation.
|
|
118
|
+
Transcript rows
|
|
119
|
+
expose the optional `callId`; `run-events` continues to expose every journal
|
|
120
|
+
record, including duplicates, for inspection.
|
|
121
|
+
|
|
122
|
+
Older records have no `callId` and are read without rewriting history. They
|
|
123
|
+
retain FIFO matching among **unidentified** starts with the same flow name.
|
|
124
|
+
An identified settlement may match an unidentified start when an older parked
|
|
125
|
+
run resumes with the new writer. Neither an unknown ID nor an unidentified
|
|
126
|
+
settlement can consume an identified start. A settlement with no eligible
|
|
127
|
+
start produces no node output. Correlation of overlapping, same-name legacy
|
|
128
|
+
calls cannot be recovered exactly from those old records.
|
|
129
|
+
|
|
130
|
+
`node-output` keys its rows the same way and advances its ordinal on exactly
|
|
131
|
+
the same distinct starts, so the node id a tree view shows is the node id
|
|
132
|
+
`node-output` answers for. The CLI/MCP node-output reader retains its existing
|
|
133
|
+
`flowName#ordinal` IDs, counting distinct starts within each flow, and uses
|
|
134
|
+
the same identity/legacy matching rule. A fold that skipped a distinct start
|
|
135
|
+
before advancing its ordinal would shift references to later nodes.
|
|
136
|
+
|
|
137
|
+
A node that never settled stays `running`, which is how a live tree renders
|
|
138
|
+
work in flight.
|
|
139
|
+
|
|
140
|
+
## A duration is measured, never estimated
|
|
141
|
+
|
|
142
|
+
`flow-durations` is the one projection that reads across runs. It lists the
|
|
143
|
+
flow's runs through `Control.list`, keeps the newest `Projections.maxDurationRuns`
|
|
144
|
+
that reached a terminal status, and folds each one's node records into samples.
|
|
145
|
+
|
|
146
|
+
A sample is one node the engine really ran: the distance between the
|
|
147
|
+
`flows.engine.node-scheduled` record that admitted it and the
|
|
148
|
+
`flows.engine.node-settled` record that closed it, both copied into the control
|
|
149
|
+
journal as `control.engine.event` envelopes by the host's engine bridge. Only
|
|
150
|
+
the `built` outcome counts. `clean` was served from records rather than run,
|
|
151
|
+
`failed` measures a collapse, `skipped` was never reached, and `deferred` is
|
|
152
|
+
scheduling debt, so none of them describes how long the work takes.
|
|
153
|
+
|
|
154
|
+
Samples are grouped by the node's action tag, because the tag is the part of a
|
|
155
|
+
node's key material that survives a re-key: the same step keeps its tag when
|
|
156
|
+
its input changes, and its plan key and dispatch key do not. Both percentiles
|
|
157
|
+
are nearest-rank, so `p50Ms` and `p90Ms` are durations the flow really took.
|
|
158
|
+
`samples` is on the wire beside them, because a percentile over one sample and
|
|
159
|
+
a percentile over twenty are different claims.
|
|
160
|
+
|
|
161
|
+
One call is one sample. The engine records a `FlowCall` twice: the caller
|
|
162
|
+
admits and settles the node that made the call, and the callee's own execution
|
|
163
|
+
admits and settles its `root` over the same span with the same tag. The fold
|
|
164
|
+
keeps the caller's node and drops the callee's root, which it can tell apart
|
|
165
|
+
because the host's `control.engine.bound` record names the native root the
|
|
166
|
+
control run owns. A run with no such record, such as one no engine bridge
|
|
167
|
+
wrote, keeps both: a fold that cannot name the root cannot name the echo
|
|
168
|
+
either.
|
|
169
|
+
|
|
170
|
+
A duration is wall time between two engine records, so a node that waits is
|
|
171
|
+
measured through its wait. A flow tag whose flow parks on a `HumanTask`
|
|
172
|
+
measures the park, and so does every flow tag above it. These rows answer how
|
|
173
|
+
long the flow took, not how much compute it spent.
|
|
174
|
+
|
|
175
|
+
A tag nothing has measured has no row, and a flow nothing has finished answers
|
|
176
|
+
with no rows at all. There is no shape here for an unmeasured prediction.
|
|
177
|
+
|
|
178
|
+
## What is not in a projection
|
|
179
|
+
|
|
180
|
+
A host keeps the control plane and the engine in two databases with two
|
|
181
|
+
journals. `Control.watch` reads one run's control partition; the gateway does
|
|
182
|
+
not open the native database. Native call and execution facts become readable
|
|
183
|
+
through the durable engine bridge, which can lag its source. Other engine
|
|
184
|
+
records remain inspection material unless a specific pure fold recognizes
|
|
185
|
+
their versioned producer contract. Model deltas and printed trace text still
|
|
186
|
+
have best-effort delivery; call fact coverage does not make the entire trace
|
|
187
|
+
replayable. Public values are redacted and bounded commitments, not private
|
|
188
|
+
native outcome rows.
|
|
189
|
+
|
|
190
|
+
## The folds are pure and total
|
|
191
|
+
|
|
192
|
+
`GatewayProjection.runSummary`, `runTree`, `approvals`, `nodeOutput`, and
|
|
193
|
+
`transcript` are ordinary functions from control facts to rows. They read no
|
|
194
|
+
service, and an event kind outside their vocabulary contributes nothing rather
|
|
195
|
+
than failing the fold. Wire payloads are JSON, so every field read tolerates
|
|
196
|
+
absence: the digest of a malformed journal is a sparse digest, never a throw.
|
|
197
|
+
|
|
198
|
+
That purity is what makes a delta trustworthy. A subscription recomputes the
|
|
199
|
+
selector's rows from accumulated events rather than patching them, and
|
|
200
|
+
recomputation is only safe because the same events always fold to the same
|
|
201
|
+
rows. `run-events` sends only what one event added. `transcript` normally does
|
|
202
|
+
the same, but a later native fact can correct previously emitted telemetry. It
|
|
203
|
+
then sends the existing `snapshot-start` / `row` / `snapshot-end` reset so the
|
|
204
|
+
subscriber converges to a fresh fold at the same cursor. See
|
|
205
|
+
[Subscriptions and cursors](./subscriptions.md).
|
|
206
|
+
|
|
207
|
+
## What a projection costs
|
|
208
|
+
|
|
209
|
+
A projection reads one journal per run, so the read is bounded on purpose:
|
|
210
|
+
|
|
211
|
+
| Bound | Value | What it caps |
|
|
212
|
+
| -------------------------------- | ------ | --------------------------------------------------------------------------- |
|
|
213
|
+
| `Projections.maxWorkspaceRuns` | 500 | runs one workspace projection folds, newest first |
|
|
214
|
+
| `Projections.maxEventsPerRun` | 10,000 | retained events per run |
|
|
215
|
+
| `Projections.maxEventsPerPage` | 1,000 | events per `run-events` page |
|
|
216
|
+
| `Projections.maxEventBytes` | 16 KiB | retained event size before clipping |
|
|
217
|
+
| `Projections.maxProjectionBytes` | 4 MiB | retained events and digest identity state, event page, or projected row set |
|
|
218
|
+
|
|
219
|
+
`maxWorkspaceRuns` equals `ControlSchema.maxPageSize`, so the control plane can
|
|
220
|
+
satisfy the whole gateway allowance in one page when it can. A workspace with
|
|
221
|
+
more runs is answered with its newest 500. Older retained events are folded into
|
|
222
|
+
a carried digest. Compact scalar contributions retain call and checkpoint
|
|
223
|
+
identities so replay is counted once and committed native facts can correct
|
|
224
|
+
earlier telemetry across the window boundary. These contributions share the
|
|
225
|
+
retained byte budget; their inputs, outputs, and event bodies are not retained.
|
|
226
|
+
If the exact identity state or a projected row set cannot fit, the read fails
|
|
227
|
+
with `resource_limit`.
|
|
228
|
+
|
|
229
|
+
`run-events` pages preserve complete `control.engine.event` payloads, including
|
|
230
|
+
native typed results, without the 16 KiB clipping applied to other large events.
|
|
231
|
+
A page stops at its event or byte budget and returns a cursor. One event whose
|
|
232
|
+
encoded size plus array brackets exceeds 4 MiB fails with `resource_limit`.
|
|
233
|
+
|
|
234
|
+
The approvals inbox is the one workspace projection that filters before it
|
|
235
|
+
counts: it asks the control plane for runs whose status is `waiting-approval`,
|
|
236
|
+
and admits only runs still in that status with at least one pending gate after
|
|
237
|
+
reconciling their journals. Snapshot admission and live refresh use the same
|
|
238
|
+
predicate: cancellation removes a run even when its gate remains pending.
|
|
239
|
+
A run with no pending gate does not consume the source allowance. An inbox
|
|
240
|
+
cannot be exhausted by completed histories.
|
|
241
|
+
|
|
242
|
+
Native lifecycle uses an independent `ExecutionFact` fold over the host-bound
|
|
243
|
+
engine bridge. Run rows may include `executionProvenance` (`events`,
|
|
244
|
+
`legacy-observation`, or `unverified-observation`) alongside the existing
|
|
245
|
+
`lifecycleProvenance`; engine replay does not become control-stream authority.
|
|
246
|
+
The fold verifies the native root/current-round view against the executor's
|
|
247
|
+
coherent observation. A missing binding, native generation gap, unsupported
|
|
248
|
+
version, or differing observation retains explicit fallback. Snapshot and
|
|
249
|
+
subscription paths share this fold. The protected native wait token remains in
|
|
250
|
+
the execution store; the event carries its SHA-256 digest for comparison.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Subscriptions and cursors"
|
|
3
|
+
description: "The frame vocabulary a subscription speaks, which deltas replace and which append, what a delta costs, what a cursor is made of, and which subscriptions can resume from one."
|
|
4
|
+
sidebar:
|
|
5
|
+
order: 2
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
`Projection.Snapshot` answers the rows a selector currently projects.
|
|
9
|
+
`Projection.Subscribe` answers a stream of tagged frames instead, so a client
|
|
10
|
+
can tell a snapshot from a change without guessing.
|
|
11
|
+
|
|
12
|
+
## The frames
|
|
13
|
+
|
|
14
|
+
| Frame | Means |
|
|
15
|
+
| -------------------- | ----------------------------------- |
|
|
16
|
+
| `SnapshotStartFrame` | the snapshot begins, at this cursor |
|
|
17
|
+
| `RowFrame` | one row of the snapshot |
|
|
18
|
+
| `SnapshotEndFrame` | the snapshot is complete |
|
|
19
|
+
| `DeltaFrame` | the selector's rows after a change |
|
|
20
|
+
| `HeartbeatFrame` | the connection is alive |
|
|
21
|
+
|
|
22
|
+
`GatewaySchema.GatewayFrame` is the union of all five. Every frame except the
|
|
23
|
+
heartbeat carries the selector it belongs to and the cursor it was produced at,
|
|
24
|
+
so a client multiplexing several subscriptions on one socket routes on the
|
|
25
|
+
frame rather than on the request id.
|
|
26
|
+
|
|
27
|
+
## A delta replaces, except where it appends
|
|
28
|
+
|
|
29
|
+
For `workspace-runs`, `run-summary`, `run-tree`, `approvals`, and
|
|
30
|
+
`node-output`, `DeltaFrame.delta` is the whole row set of the selector,
|
|
31
|
+
recomputed from the events accumulated so far. It is not a patch.
|
|
32
|
+
|
|
33
|
+
That is a deliberate trade. A projection is a reproducible fold, and
|
|
34
|
+
recomputation is the only delta that cannot disagree with a fresh snapshot. A
|
|
35
|
+
patch would have to encode an inverse for every fold, and any bug in one would
|
|
36
|
+
leave a client's view permanently wrong in a way nothing detects.
|
|
37
|
+
|
|
38
|
+
Two projections send append deltas: a delta carries only what one event added.
|
|
39
|
+
The client appends it to the rows it already holds.
|
|
40
|
+
|
|
41
|
+
| Selector | Delta carries |
|
|
42
|
+
| ------------ | ------------------------------------------------- |
|
|
43
|
+
| `run-events` | the one event that arrived |
|
|
44
|
+
| `transcript` | the rows that event contributed, usually one line |
|
|
45
|
+
|
|
46
|
+
One projection sends no delta at all. `flow-durations` ranks the runs a flow
|
|
47
|
+
has already finished, so no event of a live run changes a row, and the run that
|
|
48
|
+
would change one is outside the window until it settles. Subscribing to it
|
|
49
|
+
answers the snapshot and ends; a client that wants newer rows takes another
|
|
50
|
+
snapshot.
|
|
51
|
+
|
|
52
|
+
`run-events` rows _are_ the immutable ordered events. `transcript` normally
|
|
53
|
+
adds a row with the same turn counter a full fold would give it. A later native
|
|
54
|
+
call fact can supersede earlier identified telemetry; then the follower sends
|
|
55
|
+
the existing `snapshot-start` / `row` / `snapshot-end` sequence at the new
|
|
56
|
+
cursor to replace those rows. Applying the reset as well as append deltas
|
|
57
|
+
yields exactly the transcript a fresh snapshot would fold. Unidentified legacy
|
|
58
|
+
history is never assigned a guessed call identity to force a match.
|
|
59
|
+
|
|
60
|
+
Events accumulate in the stream, so recomputing each delta does not re-read
|
|
61
|
+
the journal. Resuming a historical `run-summary` first rebuilds its compacted
|
|
62
|
+
health prefix once through durable follow replay, as described below. During
|
|
63
|
+
ordinary run following, `run-summary`, `run-tree`, and `approvals` re-read the
|
|
64
|
+
run row for current lifecycle state and open human waits.
|
|
65
|
+
|
|
66
|
+
## What a delta costs
|
|
67
|
+
|
|
68
|
+
A run subscription folds once per event. A replacing selector sends its whole
|
|
69
|
+
row set on each delta, bounded by `Projections.maxProjectionBytes`; an
|
|
70
|
+
appending selector sends one event's rows, so catching up on E events sends E
|
|
71
|
+
rows in total.
|
|
72
|
+
|
|
73
|
+
A workspace subscription does not fold per event. The follower gathers the
|
|
74
|
+
events that arrive within a 50 millisecond window, or the first 1024 of them,
|
|
75
|
+
and admits them as one batch. Each run's rows are cached and refolded only
|
|
76
|
+
when that run's journal grew, and a grown run's row is re-read once per batch
|
|
77
|
+
rather than once per event. One batch answers one `DeltaFrame` carrying the
|
|
78
|
+
whole workspace, so a burst across many runs costs one frame plus one run
|
|
79
|
+
lookup per run that changed. The window bounds the frame rate at twenty per
|
|
80
|
+
second no matter how many runs journal at once; a quiet workspace sends no
|
|
81
|
+
delta at all.
|
|
82
|
+
|
|
83
|
+
## A reconciled snapshot cutoff
|
|
84
|
+
|
|
85
|
+
The gateway reads each run summary before and after its journal snapshot. If
|
|
86
|
+
the summary changed, it retries with the new summary, up to eight journal
|
|
87
|
+
reads. A row that keeps changing is refused with `run_unavailable`. This keeps
|
|
88
|
+
a terminal event from being acknowledged with the preceding run status.
|
|
89
|
+
|
|
90
|
+
Snapshot rows and the follow seed share the same final event buffer. Workspace
|
|
91
|
+
snapshots reconcile up to eight runs concurrently. Listing stops at 500 runs,
|
|
92
|
+
an empty page, or a repeated cursor; each continued page adds a run, so at most
|
|
93
|
+
500 pages are read.
|
|
94
|
+
|
|
95
|
+
An empty event buffer follows from the beginning, including journal sequence
|
|
96
|
+
zero. A buffer that already contains sequence zero suppresses those seeded
|
|
97
|
+
events, including their derived offsets.
|
|
98
|
+
|
|
99
|
+
## What a cursor is
|
|
100
|
+
|
|
101
|
+
`GatewaySchema.ProjectionCursor` carries five things:
|
|
102
|
+
|
|
103
|
+
| Field | Holds |
|
|
104
|
+
| ------------ | ----------------------------------------------------------------------------- |
|
|
105
|
+
| `selector` | the exact selector that issued it |
|
|
106
|
+
| `projection` | that selector's projection name |
|
|
107
|
+
| `runId` | the source run, or `null` for a workspace projection |
|
|
108
|
+
| `value` | the journal sequence the read reached |
|
|
109
|
+
| `offset` | the position within that sequence, for several derived events at one sequence |
|
|
110
|
+
|
|
111
|
+
The selector is embedded rather than referenced, so two `node-output`
|
|
112
|
+
subscriptions on different nodes of one run cannot share a cursor. The
|
|
113
|
+
`(value, offset)` pair rather than a bare sequence is what lets a client resume
|
|
114
|
+
inside one journal sequence without losing a derived event.
|
|
115
|
+
|
|
116
|
+
## Resuming
|
|
117
|
+
|
|
118
|
+
Pass a cursor as `after` and the subscription skips the snapshot, answering the
|
|
119
|
+
deltas after that cursor alone. The read still happens, because a folded
|
|
120
|
+
projection cannot be recomputed from the events after the cursor alone. What
|
|
121
|
+
the client skips is receiving rows it already has.
|
|
122
|
+
|
|
123
|
+
A resumed run summary rebuilds its health prefix from the durable subscription
|
|
124
|
+
replay before emitting deltas. The latest compacted buffer may have replaced an
|
|
125
|
+
observation that was current at the older cursor; reusing that buffer could let
|
|
126
|
+
a late, weaker reading displace stronger evidence. Replay uses the same bounded
|
|
127
|
+
compaction as a snapshot and emits nothing at or before the issued cursor.
|
|
128
|
+
|
|
129
|
+
The bounded fold admits only observations for the run's own subject before
|
|
130
|
+
applying evidence precedence or eviction. Foreign-subject observations still
|
|
131
|
+
advance the raw journal cursor. It retains at most 16 health incarnations and
|
|
132
|
+
protects the authoritative run incarnation's strongest evidence from eviction. Late readings
|
|
133
|
+
from former owners cannot clear that reading or let weaker evidence replace it;
|
|
134
|
+
equal evidence advances only with a later durable sequence. Live run summaries
|
|
135
|
+
refresh the run row before compacting each event, and workspace subscriptions
|
|
136
|
+
refresh it before compacting that run's first new event in a batch.
|
|
137
|
+
|
|
138
|
+
Every frame of one snapshot carries the same cursor, the position the read
|
|
139
|
+
reached, so a cursor from a row proves nothing about which rows arrived. A
|
|
140
|
+
client commits a snapshot and its cursor together, at `snapshot-end`. A
|
|
141
|
+
connection cut before `snapshot-end` leaves no cursor to resume from: the
|
|
142
|
+
client re-subscribes without `after`.
|
|
143
|
+
|
|
144
|
+
A cursor is refused with `malformed_request` when it:
|
|
145
|
+
|
|
146
|
+
- names a different projection than the subscription's selector;
|
|
147
|
+
- names a different selector of the same projection;
|
|
148
|
+
- names a different run than the subscription's;
|
|
149
|
+
- is negative, fractional, or not a safe integer in `value` or `offset`;
|
|
150
|
+
- names a position past the run's last position;
|
|
151
|
+
- names a position the run never issued.
|
|
152
|
+
|
|
153
|
+
## Workspace subscriptions do not resume
|
|
154
|
+
|
|
155
|
+
Control journal sequences belong to per-run partitions, so there is no
|
|
156
|
+
workspace-wide sequence to advertise. A workspace cursor is therefore always
|
|
157
|
+
`value` 0 with a `null` run, and passing one back is refused: a
|
|
158
|
+
`workspace-runs` or unscoped `approvals` subscription has no resumable cursor
|
|
159
|
+
at all.
|
|
160
|
+
|
|
161
|
+
It can still follow, and does, by following every partition without a cursor.
|
|
162
|
+
The follower drops replay through each retained run's last sequence and
|
|
163
|
+
duplicate-sequence offset. Each source stores that position and updates it on
|
|
164
|
+
append, so checking replay does not scan its journal.
|
|
165
|
+
|
|
166
|
+
Sources and cached exclusion verdicts share a `maxWorkspaceRuns` ceiling of
|
|
167
|
+
500 entries. An excluded run retains its journal cutoff and observed position,
|
|
168
|
+
without its history. Replayed events through that cutoff cost no further
|
|
169
|
+
journal reads; later events reconsider the run. Missing run partitions,
|
|
170
|
+
including `plan:` partitions, are skipped after the first lookup failure while
|
|
171
|
+
the verdict is retained. New entries evict the oldest exclusion verdict and
|
|
172
|
+
its cursor state. An evicted run may require another read. At 500 admitted
|
|
173
|
+
sources, a run created after the oldest followed run displaces it, so the
|
|
174
|
+
tail keeps the newest runs the snapshot folded. An older run stays out.
|
|
175
|
+
|
|
176
|
+
## Heartbeats
|
|
177
|
+
|
|
178
|
+
An idle subscription emits a `HeartbeatFrame` every
|
|
179
|
+
`Projections.heartbeatIntervalMillis`, which is 30 seconds. A relay cuts an
|
|
180
|
+
idle tunnel at 600 seconds, so a quiet run has to produce a frame well inside
|
|
181
|
+
that window or every follower is disconnected and reconnects. Thirty seconds
|
|
182
|
+
leaves twenty heartbeats of margin. `Projections.layerWith({ heartbeatMillis })`
|
|
183
|
+
shortens it for a relay that cuts sooner. `ServerOptions.heartbeatMillis` at
|
|
184
|
+
the bind re-times both this keepalive and the `Watch` keepalive below, so one
|
|
185
|
+
option governs every followed socket the gateway serves.
|
|
186
|
+
|
|
187
|
+
The first tick is dropped, so the cadence is what it says it is: an immediate
|
|
188
|
+
keepalive would arrive before the snapshot it is meant to keep alive.
|
|
189
|
+
|
|
190
|
+
## The other keepalive
|
|
191
|
+
|
|
192
|
+
`ControlRpcs.Watch` on `/rpc/ws` has the same idle problem and no frame type of
|
|
193
|
+
its own for a keepalive, so the gateway publishes one as a `ControlEvent` whose
|
|
194
|
+
kind no emitter uses: `GatewayServer.watchHeartbeatKind`, the literal
|
|
195
|
+
`control.gateway.heartbeat`. A fold that does not know the kind ignores it,
|
|
196
|
+
which is what every fold in this package already does with an unknown kind.
|
|
197
|
+
|
|
198
|
+
Two properties make it safe to ignore and safe to read:
|
|
199
|
+
|
|
200
|
+
- It repeats the sequence and run-scoped cursor of the last event delivered,
|
|
201
|
+
including any expansion offset. Before delivery it retains the resume cursor.
|
|
202
|
+
- It carries the watched run id, so a client routing by run keeps routing.
|
|
203
|
+
|
|
204
|
+
A snapshot read, `follow: false`, is left alone. It has to end.
|