@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,52 @@
|
|
|
1
|
+
/** Bun HTTP adapter for the same authenticated workspace gateway protocol.
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import * as BunHttpServer from "@effect/platform-bun/BunHttpServer"
|
|
6
|
+
import { Cause, Effect, Layer } from "effect"
|
|
7
|
+
import type { HttpServer } from "effect/unstable/http/HttpServer"
|
|
8
|
+
import type { ServeError } from "effect/unstable/http/HttpServerError"
|
|
9
|
+
import { GatewayError } from "../GatewayError.ts"
|
|
10
|
+
import type * as GatewayServer from "../GatewayServer.ts"
|
|
11
|
+
import * as NativeGateway from "../internal/NativeGateway.ts"
|
|
12
|
+
|
|
13
|
+
export { bearerPrincipal, scopedPrincipal } from "../internal/NativeGateway.ts"
|
|
14
|
+
|
|
15
|
+
/** TCP bind and existing gateway policy options supported by the Bun host.
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category models
|
|
18
|
+
*/
|
|
19
|
+
export type ServerOptions = Pick<
|
|
20
|
+
NativeGateway.ServerOptions,
|
|
21
|
+
"host" | "port" | "allowedHosts" | "listen" | "credential" | "heartbeatMillis" | "maxRequestBodyBytes"
|
|
22
|
+
>
|
|
23
|
+
|
|
24
|
+
const native = NativeGateway.makeLayer((options) =>
|
|
25
|
+
BunHttpServer.layerServer({
|
|
26
|
+
// Shared listenOptions has already supplied and admitted the bind host.
|
|
27
|
+
hostname: options.host!,
|
|
28
|
+
port: options.port ?? 7331
|
|
29
|
+
}).pipe(Layer.catchCause((cause): Layer.Layer<HttpServer, ServeError | GatewayError> => {
|
|
30
|
+
const failure = Cause.squash(cause)
|
|
31
|
+
const code = typeof failure === "object" && failure !== null && "code" in failure ? failure.code : undefined
|
|
32
|
+
if (Cause.hasInterruptsOnly(cause) || !["EADDRINUSE", "EACCES", "EADDRNOTAVAIL"].includes(String(code))) {
|
|
33
|
+
return Layer.effectContext<HttpServer, ServeError | GatewayError, never>(Effect.failCause(cause))
|
|
34
|
+
}
|
|
35
|
+
// The errno is safe to keep: NativeGateway logs it for the operator and
|
|
36
|
+
// strips it from the refusal every bearer holder sees.
|
|
37
|
+
return Layer.effectContext<HttpServer, ServeError | GatewayError, never>(Effect.fail(
|
|
38
|
+
new GatewayError({
|
|
39
|
+
code: "bind_failed",
|
|
40
|
+
message: "The gateway socket could not be bound",
|
|
41
|
+
cause: { _tag: "BunServeError", code: String(code) }
|
|
42
|
+
})
|
|
43
|
+
))
|
|
44
|
+
}))
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
/** Serves the existing HTTP/WebSocket gateway using Bun.serve in the caller's scope.
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category layers
|
|
50
|
+
*/
|
|
51
|
+
export const layer = (health: GatewayServer.Health, options: ServerOptions = NativeGateway.defaultServerOptions) =>
|
|
52
|
+
native(health, options)
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The assembled workspace gateway: one HTTP surface carrying the control
|
|
3
|
+
* plane, the sync read path, the served projections, and a health probe.
|
|
4
|
+
*
|
|
5
|
+
* The package also declares the wire schemas those mounts speak and the pure
|
|
6
|
+
* folds that compute every served row from control-plane facts.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.1.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @since 0.1.0 @category errors
|
|
13
|
+
*/
|
|
14
|
+
export * as GatewayError from "./GatewayError.ts"
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @since 0.1.0 @category models
|
|
18
|
+
*/
|
|
19
|
+
export * as GatewaySchema from "./GatewaySchema.ts"
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0 @category projections
|
|
23
|
+
*/
|
|
24
|
+
export * as Diagnosis from "./Diagnosis.ts"
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @since 1.0.0 @category projections
|
|
28
|
+
*/
|
|
29
|
+
export * as RunTrace from "./RunTrace.ts"
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0 @category projections
|
|
33
|
+
*/
|
|
34
|
+
export * as EngineTrace from "./EngineTrace.ts"
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0 @category projections
|
|
38
|
+
*/
|
|
39
|
+
export * as RunDevTools from "./RunDevTools.ts"
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0 @category projections
|
|
43
|
+
*/
|
|
44
|
+
export * as GatewayProjection from "./GatewayProjection.ts"
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0 @category rpc
|
|
48
|
+
*/
|
|
49
|
+
export * as GatewayRpcs from "./GatewayRpcs.ts"
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @since 1.0.0 @category layers
|
|
53
|
+
*/
|
|
54
|
+
export * as GatewayServer from "./GatewayServer.ts"
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @since 1.0.0 @category services
|
|
58
|
+
*/
|
|
59
|
+
export * as Projections from "./Projections.ts"
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @since 1.0.0 @category rpc
|
|
63
|
+
*/
|
|
64
|
+
export * as RunHistory from "./RunHistory.ts"
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @since 1.0.0 @category runtime bridge
|
|
68
|
+
*/
|
|
69
|
+
export * as RuntimeBridge from "./RuntimeBridge.ts"
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The canonical durable journal synchronization package.
|
|
73
|
+
*
|
|
74
|
+
* @since 0.1.0
|
|
75
|
+
* @category services
|
|
76
|
+
*/
|
|
77
|
+
export * as Sync from "@smthrs/sync"
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared native gateway bind policy, credential policy,
|
|
3
|
+
* and the one composition a `smithers serve` verb hosts.
|
|
4
|
+
*
|
|
5
|
+
* Two rules decide whether a bind is allowed, and both fail closed:
|
|
6
|
+
*
|
|
7
|
+
* 1. A non-loopback host requires an explicit `listen` opt-in. Binding
|
|
8
|
+
* `0.0.0.0` because a port was free is how a workspace gateway ends up on
|
|
9
|
+
* a shared network by accident.
|
|
10
|
+
* 2. A non-loopback bind requires a bearer credential. The control plane can
|
|
11
|
+
* launch runs, cancel them, and approve capability grants; reachable from
|
|
12
|
+
* another machine, an unauthenticated one is a remote execution service.
|
|
13
|
+
*
|
|
14
|
+
* A loopback bind with no network credential allows anonymous reads; approval
|
|
15
|
+
* decisions require the session operator token. Ingress still checks Host and
|
|
16
|
+
* Origin so a web page cannot exercise the loopback endpoint.
|
|
17
|
+
*
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { ControlRpcs, ScopedToken } from "@smthrs/control"
|
|
22
|
+
import { Effect, Layer } from "effect"
|
|
23
|
+
import { HttpRouter } from "effect/unstable/http"
|
|
24
|
+
import type { HttpServer } from "effect/unstable/http/HttpServer"
|
|
25
|
+
import type { ServeError } from "effect/unstable/http/HttpServerError"
|
|
26
|
+
import { RpcSerialization } from "effect/unstable/rpc"
|
|
27
|
+
import type { ListenOptions } from "node:net"
|
|
28
|
+
import { GatewayError, settingRefusal } from "../GatewayError.ts"
|
|
29
|
+
import * as GatewayServer from "../GatewayServer.ts"
|
|
30
|
+
import type * as RuntimeBridge from "../RuntimeBridge.ts"
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Where the gateway binds, and whether a non-loopback bind was asked for.
|
|
34
|
+
*
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @category models
|
|
37
|
+
*/
|
|
38
|
+
export interface ServerOptions extends ListenOptions {
|
|
39
|
+
/** Additional accepted Host header names (without ports), for network or proxy access. */
|
|
40
|
+
readonly allowedHosts?: ReadonlyArray<string> | undefined
|
|
41
|
+
/** The `--listen` opt-in required for a non-loopback host. */
|
|
42
|
+
readonly listen?: boolean | undefined
|
|
43
|
+
/** The shared bearer credential, required for a non-loopback bind. */
|
|
44
|
+
readonly credential?: string | undefined
|
|
45
|
+
/** Per-session approval token on credential-free loopback. Read calls remain anonymous. */
|
|
46
|
+
readonly operatorToken?: string | undefined
|
|
47
|
+
/**
|
|
48
|
+
* How often an idle followed `Watch` on `/rpc/ws` and an idle followed
|
|
49
|
+
* `Projection.Subscribe` on `/projections/ws` emit a keepalive frame. Unset,
|
|
50
|
+
* both run at `Projections.heartbeatIntervalMillis` unless the supplied
|
|
51
|
+
* `Projections` service was built with its own cadence. A relay with an idle
|
|
52
|
+
* cut shorter than that one needs a shorter cadence here.
|
|
53
|
+
*/
|
|
54
|
+
readonly heartbeatMillis?: number | undefined
|
|
55
|
+
/** Maximum bytes accepted on one HTTP RPC request. Default one MiB. */
|
|
56
|
+
readonly maxRequestBodyBytes?: number | undefined
|
|
57
|
+
/** Immutable identity of an opt-in packaged Flow runtime bridge. */
|
|
58
|
+
readonly runtimeBridge?: Omit<RuntimeBridge.Config, "authenticate"> | undefined
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The default bind: loopback, port 7331, no credential.
|
|
63
|
+
*
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @category models
|
|
66
|
+
*/
|
|
67
|
+
export const defaultServerOptions: ServerOptions = { host: "127.0.0.1", port: 7331 }
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Whether a host names this machine only.
|
|
71
|
+
*
|
|
72
|
+
* @param host the host to classify
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @category predicates
|
|
75
|
+
*/
|
|
76
|
+
export const isLoopbackHost = (host: string): boolean => GatewayServer.loopbackHostNames.includes(host)
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The typed refusal a requested bind earns, or `undefined` when it is allowed.
|
|
80
|
+
*
|
|
81
|
+
* Every start-time rule this module enforces answers here as a `bind_failed`
|
|
82
|
+
* `GatewayError`, so a host that wants to report a refusal rather than crash on
|
|
83
|
+
* one asks this before it composes a layer. {@link listenOptions} and
|
|
84
|
+
* {@link layer} fail with exactly what this returns.
|
|
85
|
+
*
|
|
86
|
+
* @param options the requested bind
|
|
87
|
+
* @since 1.0.0
|
|
88
|
+
* @category constructors
|
|
89
|
+
*/
|
|
90
|
+
export const bindRefusal = (options: ServerOptions): GatewayError | undefined => {
|
|
91
|
+
const setting = settingRefusal("The gateway keepalive cadence", options.heartbeatMillis) ??
|
|
92
|
+
settingRefusal("The gateway request body limit", options.maxRequestBodyBytes)
|
|
93
|
+
if (setting !== undefined) return setting
|
|
94
|
+
// The bridge authenticates only with the bearer credential, even on
|
|
95
|
+
// loopback, so a bridge without one would answer 401 to every request.
|
|
96
|
+
if (options.runtimeBridge !== undefined && (options.credential === undefined || options.credential === "")) {
|
|
97
|
+
return new GatewayError({
|
|
98
|
+
code: "bind_failed",
|
|
99
|
+
message: "Refusing to enable the runtime bridge without a bearer credential"
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
const host = options.host ?? "127.0.0.1"
|
|
103
|
+
if (isLoopbackHost(host)) return undefined
|
|
104
|
+
if (options.listen !== true) {
|
|
105
|
+
return new GatewayError({
|
|
106
|
+
code: "bind_failed",
|
|
107
|
+
message: `Refusing non-loopback gateway bind ${host} without an explicit --listen opt-in`
|
|
108
|
+
})
|
|
109
|
+
}
|
|
110
|
+
if (options.credential === undefined || options.credential === "") {
|
|
111
|
+
return new GatewayError({
|
|
112
|
+
code: "bind_failed",
|
|
113
|
+
message: `Refusing non-loopback gateway bind ${host} without a bearer credential`
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
return undefined
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Applies the bind policy, returning the admitted Node options or a typed
|
|
121
|
+
* `bind_failed` refusal.
|
|
122
|
+
*
|
|
123
|
+
* @param options the requested bind
|
|
124
|
+
* @since 1.0.0
|
|
125
|
+
* @category constructors
|
|
126
|
+
*/
|
|
127
|
+
export const listenOptions = (options: ServerOptions): Effect.Effect<ListenOptions, GatewayError> =>
|
|
128
|
+
Effect.suspend(() => {
|
|
129
|
+
const refusal = bindRefusal(options)
|
|
130
|
+
if (refusal !== undefined) return Effect.fail(refusal)
|
|
131
|
+
// `credential`, `listen`, and the keepalive cadence are this module's, not
|
|
132
|
+
// `node:net`'s: they are named here so the rest is exactly a bind.
|
|
133
|
+
const {
|
|
134
|
+
allowedHosts: _allowedHosts,
|
|
135
|
+
credential: _credential,
|
|
136
|
+
heartbeatMillis: _cadence,
|
|
137
|
+
listen: _listen,
|
|
138
|
+
maxRequestBodyBytes: _maxBody,
|
|
139
|
+
runtimeBridge: _runtimeBridge,
|
|
140
|
+
...node
|
|
141
|
+
} = options
|
|
142
|
+
return Effect.succeed({ ...node, host: node.host ?? "127.0.0.1" })
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* The authentication both RPC mounts run under.
|
|
147
|
+
*
|
|
148
|
+
* A configured credential authenticates every request that presents it and
|
|
149
|
+
* stamps the same server-owned principal. A scoped token minted under that
|
|
150
|
+
* credential (`@smthrs/control` `ScopedToken`) authenticates only the
|
|
151
|
+
* procedures, run, or flow it names, until it expires, and stamps
|
|
152
|
+
* {@link scopedPrincipal}. With no credential the composition is
|
|
153
|
+
* loopback-only (see {@link listenOptions}) and every request runs as the
|
|
154
|
+
* anonymous read principal. A session operator token alone stamps the local
|
|
155
|
+
* operator for approval decisions; without it approvals are unauthorized.
|
|
156
|
+
*
|
|
157
|
+
* @param options the requested bind
|
|
158
|
+
* @since 1.0.0
|
|
159
|
+
* @category layers
|
|
160
|
+
*/
|
|
161
|
+
export const layerAuth = (options: ServerOptions): Layer.Layer<ControlRpcs.ControlAuth> =>
|
|
162
|
+
options.credential === undefined || options.credential === ""
|
|
163
|
+
? ControlRpcs.layerAuth({
|
|
164
|
+
authenticate: (headers) => {
|
|
165
|
+
const token = options.operatorToken
|
|
166
|
+
if (token === undefined || token === "") {
|
|
167
|
+
return Effect.succeed({ id: "loopback", kind: "anonymous", stampedAt: 0 })
|
|
168
|
+
}
|
|
169
|
+
return ControlRpcs.bearerAuthenticator({
|
|
170
|
+
token,
|
|
171
|
+
principal: { id: "local", kind: "operator" }
|
|
172
|
+
}).authenticate(headers).pipe(
|
|
173
|
+
Effect.catchTag(
|
|
174
|
+
"/control/Unauthorized",
|
|
175
|
+
() => Effect.succeed({ id: "loopback", kind: "anonymous", stampedAt: 0 })
|
|
176
|
+
)
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
}, gatewayRunVisibility)
|
|
180
|
+
: ControlRpcs.layerAuth(credentialAuthenticator(options.credential), gatewayRunVisibility)
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Every identity this gateway stamps reads every run. They all stand for the
|
|
184
|
+
* one operator who holds the gateway's credential, or the machine's loopback
|
|
185
|
+
* user when there is none; a scoped token is that operator's grant, confined
|
|
186
|
+
* by the procedures, run, or flow it names rather than by who launched a run.
|
|
187
|
+
*/
|
|
188
|
+
const gatewayRunVisibility: ControlRpcs.AuthOptions = { seesAllRuns: () => true }
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* The bearer credential itself, or a scoped token minted under it.
|
|
192
|
+
*
|
|
193
|
+
* The runtime bridge deliberately does not use this: it accepts the bearer
|
|
194
|
+
* alone, because a scoped token names control procedures and the bridge's
|
|
195
|
+
* versioned commands are not those.
|
|
196
|
+
*/
|
|
197
|
+
const credentialAuthenticator = (credential: string): ControlRpcs.Authenticator =>
|
|
198
|
+
ControlRpcs.anyAuthenticator([
|
|
199
|
+
ControlRpcs.bearerAuthenticator({ token: credential, principal: bearerPrincipal }),
|
|
200
|
+
ScopedToken.authenticator({ key: credential, principal: scopedPrincipal })
|
|
201
|
+
])
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* The identity stamped only after this gateway verifies its configured token.
|
|
205
|
+
* Hosts may explicitly delegate operator decisions to this exact identity.
|
|
206
|
+
* @category constants
|
|
207
|
+
* @since 1.0.0
|
|
208
|
+
*/
|
|
209
|
+
export const bearerPrincipal = Object.freeze({ id: "gateway", kind: "bearer" })
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* The protected mounts a scoped token may reach: those guarded in band by
|
|
213
|
+
* `ControlAuth`, which checks each frame's procedure against the token, and
|
|
214
|
+
* the ticket exchange that opens their sockets.
|
|
215
|
+
* @category constants
|
|
216
|
+
* @since 1.0.0
|
|
217
|
+
*/
|
|
218
|
+
export const scopedTokenPaths: ReadonlyArray<string> = [
|
|
219
|
+
"/rpc",
|
|
220
|
+
"/rpc/ws",
|
|
221
|
+
"/projections",
|
|
222
|
+
"/projections/ws",
|
|
223
|
+
"/auth/ticket"
|
|
224
|
+
]
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* The identity stamped after this gateway verifies a scoped token minted
|
|
228
|
+
* under its configured credential. It is its own kind so that delegating
|
|
229
|
+
* approval to {@link bearerPrincipal} does not delegate it to every token
|
|
230
|
+
* minted from the bearer; a host that wants a scoped `approve:runs` token to
|
|
231
|
+
* decide delegates to this identity explicitly.
|
|
232
|
+
* @category constants
|
|
233
|
+
* @since 1.0.0
|
|
234
|
+
*/
|
|
235
|
+
export const scopedPrincipal = Object.freeze({ id: "gateway", kind: "scoped" })
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* The ingress policy a requested bind runs behind.
|
|
239
|
+
*
|
|
240
|
+
* The accepted Host names are the loopback names, the operator's
|
|
241
|
+
* `allowedHosts`, and the concrete bind host itself, so `--host 192.168.1.10`
|
|
242
|
+
* is reachable at that address without naming it twice. A wildcard bind
|
|
243
|
+
* (`0.0.0.0` or `::`) adds nothing: every interface is not a Host name, and
|
|
244
|
+
* the operator names the reachable ones. Protected paths are authenticated
|
|
245
|
+
* before any request body is read.
|
|
246
|
+
*
|
|
247
|
+
* @param options the requested bind
|
|
248
|
+
* @since 1.0.0
|
|
249
|
+
* @category constructors
|
|
250
|
+
*/
|
|
251
|
+
export const ingressOptions = (options: ServerOptions): GatewayServer.IngressOptions => {
|
|
252
|
+
const maxRequestBodyBytes = options.maxRequestBodyBytes
|
|
253
|
+
const host = options.host ?? "127.0.0.1"
|
|
254
|
+
const allowedHosts = [...GatewayServer.loopbackHostHeaderNames, ...options.allowedHosts ?? []]
|
|
255
|
+
const bindAuthority = URL.parse(`http://${host.includes(":") ? `[${host}]` : host}`)
|
|
256
|
+
if (host !== "0.0.0.0" && host !== "::" && bindAuthority !== null && !allowedHosts.includes(bindAuthority.hostname)) {
|
|
257
|
+
allowedHosts.push(bindAuthority.hostname)
|
|
258
|
+
}
|
|
259
|
+
if (options.credential === undefined || options.credential === "") {
|
|
260
|
+
return {
|
|
261
|
+
loopbackOnly: true,
|
|
262
|
+
...(maxRequestBodyBytes === undefined ? {} : { maxRequestBodyBytes }),
|
|
263
|
+
allowedHosts
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// The edge knows no call, so a scoped token passes here on its signature
|
|
267
|
+
// and expiry, and only toward the mounts whose every frame `ControlAuth`
|
|
268
|
+
// judges in band; journal sync and the runtime bridge take the bearer alone.
|
|
269
|
+
const bearer = ControlRpcs.bearerAuthenticator({ token: options.credential, principal: bearerPrincipal })
|
|
270
|
+
const scoped = credentialAuthenticator(options.credential)
|
|
271
|
+
return {
|
|
272
|
+
allowedHosts,
|
|
273
|
+
...(maxRequestBodyBytes === undefined ? {} : { maxRequestBodyBytes }),
|
|
274
|
+
authorize: (headers, path) =>
|
|
275
|
+
(scopedTokenPaths.includes(path) ? scoped : bearer).authenticate(headers).pipe(
|
|
276
|
+
Effect.match({ onFailure: () => false, onSuccess: () => true })
|
|
277
|
+
)
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const bindFailure = (failure: ServeError | GatewayError): GatewayError =>
|
|
282
|
+
new GatewayError({
|
|
283
|
+
code: "bind_failed",
|
|
284
|
+
message: "The gateway socket could not be bound",
|
|
285
|
+
cause: { _tag: failure._tag }
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Fails the layer with the sanitized refusal every bearer holder may see, after
|
|
290
|
+
* logging the operator's copy: the requested authority and the operating-system
|
|
291
|
+
* cause (`EADDRINUSE`, `EACCES`, `EADDRNOTAVAIL`), which the wire error omits.
|
|
292
|
+
*/
|
|
293
|
+
const mapServeError = <A, R>(
|
|
294
|
+
bind: ListenOptions,
|
|
295
|
+
server: Layer.Layer<A, ServeError | GatewayError, R>
|
|
296
|
+
): Layer.Layer<A, GatewayError, R> =>
|
|
297
|
+
server.pipe(
|
|
298
|
+
Layer.catch((failure) =>
|
|
299
|
+
Layer.effectContext<A, GatewayError, never>(
|
|
300
|
+
Effect.logError({
|
|
301
|
+
message: "The gateway socket could not be bound",
|
|
302
|
+
host: bind.host,
|
|
303
|
+
port: bind.port,
|
|
304
|
+
cause: failure
|
|
305
|
+
}).pipe(Effect.andThen(Effect.fail(bindFailure(failure))))
|
|
306
|
+
)
|
|
307
|
+
)
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Hosts the assembled gateway on an injected native HTTP server.
|
|
312
|
+
*
|
|
313
|
+
* Supplies the bind policy, the shared-credential authentication both RPC
|
|
314
|
+
* mounts run under, and newline-delimited JSON as the wire serialization. The
|
|
315
|
+
* caller supplies what the mounts read through: `Control`, `Projections`,
|
|
316
|
+
* `SyncServer`, and the `SyncAuth` middleware.
|
|
317
|
+
*
|
|
318
|
+
* The returned layer retains the concrete `HttpServer` service, so a caller
|
|
319
|
+
* that bound port 0 can read the ephemeral address it got.
|
|
320
|
+
*
|
|
321
|
+
* Policy refusals and operating-system listen failures both fail the layer as
|
|
322
|
+
* sanitized `bind_failed` `GatewayError` values.
|
|
323
|
+
*
|
|
324
|
+
* @param health the identity `GET /health` answers with
|
|
325
|
+
* @param options the requested bind
|
|
326
|
+
* @since 1.0.0
|
|
327
|
+
* @category layers
|
|
328
|
+
*/
|
|
329
|
+
export const makeLayer = (
|
|
330
|
+
server: (options: ListenOptions) => Layer.Layer<HttpServer, ServeError | GatewayError>
|
|
331
|
+
) =>
|
|
332
|
+
(
|
|
333
|
+
health: GatewayServer.Health,
|
|
334
|
+
options: ServerOptions = defaultServerOptions
|
|
335
|
+
) =>
|
|
336
|
+
Layer.unwrap(
|
|
337
|
+
Effect.map(listenOptions(options), (nodeOptions) =>
|
|
338
|
+
HttpRouter.serve(
|
|
339
|
+
GatewayServer.layer(health, {
|
|
340
|
+
...(options.heartbeatMillis === undefined ? {} : { heartbeatMillis: options.heartbeatMillis }),
|
|
341
|
+
ingress: ingressOptions(options),
|
|
342
|
+
...(options.runtimeBridge === undefined ? {} : {
|
|
343
|
+
runtimeBridge: {
|
|
344
|
+
...options.runtimeBridge,
|
|
345
|
+
authenticate: ControlRpcs.bearerAuthenticator({
|
|
346
|
+
// listenOptions rejects a runtime bridge without a credential.
|
|
347
|
+
token: options.credential!,
|
|
348
|
+
principal: bearerPrincipal
|
|
349
|
+
}).authenticate
|
|
350
|
+
}
|
|
351
|
+
})
|
|
352
|
+
}).pipe(
|
|
353
|
+
Layer.provide(layerAuth(options)),
|
|
354
|
+
Layer.provide(RpcSerialization.layerNdjson)
|
|
355
|
+
),
|
|
356
|
+
{ disableListenLog: true, disableLogger: true }
|
|
357
|
+
).pipe(
|
|
358
|
+
Layer.provideMerge(mapServeError(nodeOptions, server(nodeOptions)))
|
|
359
|
+
))
|
|
360
|
+
)
|