@smthrs/gateway 0.34.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 -29182
- 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 -61
- 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 -183
- package/src/rpc/index.d.ts +0 -221
- package/src/rpc/index.js +0 -2431
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var Diagnosis_exports = {};
|
|
30
|
+
__export(Diagnosis_exports, {
|
|
31
|
+
asNumber: () => asNumber,
|
|
32
|
+
asRecord: () => asRecord,
|
|
33
|
+
asString: () => asString,
|
|
34
|
+
callEventKey: () => import_callEvents2.callEventKey,
|
|
35
|
+
callScope: () => import_callEvents2.callScope,
|
|
36
|
+
clip: () => clip,
|
|
37
|
+
combine: () => combine,
|
|
38
|
+
digest: () => digest,
|
|
39
|
+
duration: () => duration,
|
|
40
|
+
emptyDigest: () => emptyDigest,
|
|
41
|
+
firstLine: () => firstLine,
|
|
42
|
+
foreignVerdict: () => foreignVerdict,
|
|
43
|
+
handlerReach: () => handlerReach,
|
|
44
|
+
nativeCallEvent: () => import_callEvents2.nativeCallEvent,
|
|
45
|
+
nativeStepEvent: () => import_callEvents2.nativeStepEvent,
|
|
46
|
+
openCallIndex: () => import_callEvents3.openCallIndex,
|
|
47
|
+
render: () => render,
|
|
48
|
+
resolvedOutput: () => resolvedOutput,
|
|
49
|
+
timeOf: () => timeOf,
|
|
50
|
+
uniqueCallEvents: () => import_callEvents.uniqueCallEvents,
|
|
51
|
+
usd: () => usd,
|
|
52
|
+
verdict: () => verdict
|
|
53
|
+
});
|
|
54
|
+
module.exports = __toCommonJS(Diagnosis_exports);
|
|
55
|
+
var import_control = require("@smthrs/control");
|
|
56
|
+
var Fault = __toESM(require("@smthrs/flow/Fault"), 1);
|
|
57
|
+
var import_effect = require("effect");
|
|
58
|
+
var import_callEvents = require("./internal/callEvents.js");
|
|
59
|
+
var DigestIndex = __toESM(require("./internal/digestIndex.js"), 1);
|
|
60
|
+
var import_digestMemory = require("./internal/digestMemory.js");
|
|
61
|
+
var NativeResolution = __toESM(require("./internal/nativeResolution.js"), 1);
|
|
62
|
+
var import_callEvents2 = require("./internal/callEvents.js");
|
|
63
|
+
var import_callEvents3 = require("./internal/callEvents.js");
|
|
64
|
+
const runStatuses = new Set(import_control.ControlSchema.RunStatus.literals);
|
|
65
|
+
const editFlows = /* @__PURE__ */ new Set(["write", "edit", "apply_patch"]);
|
|
66
|
+
const asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
|
|
67
|
+
const asString = (value) => typeof value === "string" ? value : void 0;
|
|
68
|
+
const isFault = import_effect.Schema.is(Fault.Fault);
|
|
69
|
+
const asNumber = (value) => typeof value === "number" ? value : void 0;
|
|
70
|
+
const timeOf = (event) => asNumber(asRecord(event.payload).at) ?? event.occurredAt;
|
|
71
|
+
const firstLine = (text) => {
|
|
72
|
+
const index = text.search(/[\r\n]/);
|
|
73
|
+
return index < 0 ? text : text.slice(0, index);
|
|
74
|
+
};
|
|
75
|
+
const clip = (text, width) => {
|
|
76
|
+
if (width <= 0) return "";
|
|
77
|
+
const points = [...text];
|
|
78
|
+
return points.length <= width ? text : `${points.slice(0, width - 1).join("")}\u2026`;
|
|
79
|
+
};
|
|
80
|
+
const handlers = {
|
|
81
|
+
"control.agent.turn-opened": {
|
|
82
|
+
reach: "aggregate",
|
|
83
|
+
apply: (accumulator, payload) => {
|
|
84
|
+
accumulator.turns += 1;
|
|
85
|
+
accumulator.seat = asString(payload.seat) ?? accumulator.seat;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"control.agent.model-settled": {
|
|
89
|
+
reach: "aggregate",
|
|
90
|
+
apply: (accumulator, payload) => {
|
|
91
|
+
const usage = asRecord(payload.usage);
|
|
92
|
+
accumulator.inputTokens += asNumber(usage.inputTokens) ?? 0;
|
|
93
|
+
accumulator.outputTokens += asNumber(usage.outputTokens) ?? 0;
|
|
94
|
+
const cost = asNumber(payload.costUsd);
|
|
95
|
+
if (cost !== void 0 && Number.isFinite(cost) && cost > 0) accumulator.costUsd += cost;
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"control.agent.cell-call-started": {
|
|
99
|
+
reach: "aggregate",
|
|
100
|
+
apply: (accumulator, payload) => {
|
|
101
|
+
accumulator.calls += 1;
|
|
102
|
+
if (editFlows.has(asString(payload.flowName) ?? "")) accumulator.editsAttempted += 1;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"control.agent.resolved": {
|
|
106
|
+
reach: "root",
|
|
107
|
+
apply: (accumulator, payload) => {
|
|
108
|
+
accumulator.finalOutput = asString(payload.text);
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"control.approval.requested": {
|
|
112
|
+
reach: "root",
|
|
113
|
+
apply: (accumulator, payload) => {
|
|
114
|
+
accumulator.parkedQuestion = asString(payload.question);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
const handlerReach = Object.fromEntries(
|
|
119
|
+
Object.entries(handlers).map(([kind, handler]) => [kind, handler.reach])
|
|
120
|
+
);
|
|
121
|
+
const rawDigest = (events) => {
|
|
122
|
+
const accumulator = {
|
|
123
|
+
status: void 0,
|
|
124
|
+
cause: void 0,
|
|
125
|
+
fault: void 0,
|
|
126
|
+
seat: void 0,
|
|
127
|
+
turns: 0,
|
|
128
|
+
calls: 0,
|
|
129
|
+
callsFailed: 0,
|
|
130
|
+
editsAttempted: 0,
|
|
131
|
+
editsSucceeded: 0,
|
|
132
|
+
inputTokens: 0,
|
|
133
|
+
outputTokens: 0,
|
|
134
|
+
costUsd: 0,
|
|
135
|
+
finalOutput: void 0,
|
|
136
|
+
parkedQuestion: void 0
|
|
137
|
+
};
|
|
138
|
+
const refusalCounts = /* @__PURE__ */ new Map();
|
|
139
|
+
let startedAt;
|
|
140
|
+
let endedAt;
|
|
141
|
+
let nativeResolution;
|
|
142
|
+
const observe = (at) => {
|
|
143
|
+
startedAt = startedAt === void 0 ? at : Math.min(startedAt, at);
|
|
144
|
+
endedAt = endedAt === void 0 ? at : Math.max(endedAt, at);
|
|
145
|
+
};
|
|
146
|
+
for (const event of (0, import_callEvents.uniqueCallEvents)(events)) {
|
|
147
|
+
nativeResolution = NativeResolution.combine(nativeResolution, NativeResolution.fromEvent(event));
|
|
148
|
+
const payload = asRecord(event.payload);
|
|
149
|
+
const at = timeOf(event);
|
|
150
|
+
const handler = Object.hasOwn(handlers, event.kind) ? handlers[event.kind] : void 0;
|
|
151
|
+
if (handler !== void 0) {
|
|
152
|
+
observe(at);
|
|
153
|
+
if (handler.reach === "aggregate" || (0, import_callEvents.callScope)(event) === void 0) handler.apply(accumulator, payload);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (event.kind === "control.agent.cell-call-settled") {
|
|
157
|
+
observe(at);
|
|
158
|
+
if (asString(payload.outcome) === "failure") {
|
|
159
|
+
accumulator.callsFailed += 1;
|
|
160
|
+
const message = firstLine(asString(payload.message) ?? "unknown refusal");
|
|
161
|
+
refusalCounts.set(message, (refusalCounts.get(message) ?? 0) + 1);
|
|
162
|
+
} else if (editFlows.has(asString(payload.flowName) ?? "")) {
|
|
163
|
+
accumulator.editsSucceeded += 1;
|
|
164
|
+
}
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (event.kind.startsWith("control.run.")) {
|
|
168
|
+
const status = event.kind.slice("control.run.".length);
|
|
169
|
+
if (!runStatuses.has(status)) continue;
|
|
170
|
+
observe(at);
|
|
171
|
+
accumulator.status = status;
|
|
172
|
+
if (status === "failed") accumulator.cause = asString(payload.cause);
|
|
173
|
+
accumulator.fault = status === "failed" && isFault(payload.fault) ? payload.fault : void 0;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
...accumulator,
|
|
178
|
+
...nativeResolution === void 0 ? {} : { nativeResolution },
|
|
179
|
+
refusals: [...refusalCounts.entries()].map(([message, count]) => ({ message, count })).sort((left, right) => right.count - left.count),
|
|
180
|
+
startedAt,
|
|
181
|
+
endedAt
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
const counters = [
|
|
185
|
+
"turns",
|
|
186
|
+
"calls",
|
|
187
|
+
"callsFailed",
|
|
188
|
+
"editsAttempted",
|
|
189
|
+
"editsSucceeded",
|
|
190
|
+
"inputTokens",
|
|
191
|
+
"outputTokens",
|
|
192
|
+
"costUsd"
|
|
193
|
+
];
|
|
194
|
+
const contributionValue = (value) => ({
|
|
195
|
+
...Object.fromEntries(counters.filter((counter) => value[counter] !== 0).map((counter) => [counter, value[counter]])),
|
|
196
|
+
...value.seat === void 0 ? {} : { seat: value.seat },
|
|
197
|
+
...value.startedAt === void 0 ? {} : { startedAt: value.startedAt },
|
|
198
|
+
...value.endedAt === void 0 ? {} : { endedAt: value.endedAt },
|
|
199
|
+
...value.refusals.length === 0 ? {} : { refusals: value.refusals }
|
|
200
|
+
});
|
|
201
|
+
const emptyIndexes = () => ({ timings: void 0, refusals: import_effect.HashMap.empty(), refusalBytes: 0 });
|
|
202
|
+
const refusalIndexBytes = (message, tree) => tree === void 0 ? 0 : (0, import_digestMemory.encodedBytes)(message) + tree.bytes;
|
|
203
|
+
const indexContribution = (indexes, previous, next) => {
|
|
204
|
+
let refusals = indexes.refusals;
|
|
205
|
+
let refusalBytes = indexes.refusalBytes;
|
|
206
|
+
for (const refusal of previous?.value.refusals ?? []) {
|
|
207
|
+
if (next.value.refusals?.some((member) => member.message === refusal.message)) continue;
|
|
208
|
+
const oldTree = import_effect.HashMap.getUnsafe(refusals, refusal.message);
|
|
209
|
+
const tree = DigestIndex.remove(oldTree, next.ordinal);
|
|
210
|
+
refusalBytes += refusalIndexBytes(refusal.message, tree) - refusalIndexBytes(refusal.message, oldTree);
|
|
211
|
+
refusals = tree === void 0 ? import_effect.HashMap.remove(refusals, refusal.message) : import_effect.HashMap.set(refusals, refusal.message, tree);
|
|
212
|
+
}
|
|
213
|
+
for (const refusal of next.value.refusals ?? []) {
|
|
214
|
+
if (previous?.value.refusals?.some((member) => member.message === refusal.message)) continue;
|
|
215
|
+
const old = import_effect.HashMap.get(refusals, refusal.message);
|
|
216
|
+
const oldTree = old._tag === "Some" ? old.value : void 0;
|
|
217
|
+
const tree = DigestIndex.set(oldTree, next.ordinal);
|
|
218
|
+
refusalBytes += refusalIndexBytes(refusal.message, tree) - refusalIndexBytes(refusal.message, oldTree);
|
|
219
|
+
refusals = import_effect.HashMap.set(refusals, refusal.message, tree);
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
timings: DigestIndex.set(indexes.timings, next.ordinal, next.value.startedAt, next.value.endedAt),
|
|
223
|
+
refusals,
|
|
224
|
+
refusalBytes
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
const digestStates = /* @__PURE__ */ new WeakMap();
|
|
228
|
+
const remember = (value, state) => {
|
|
229
|
+
digestStates.set(value, state);
|
|
230
|
+
(0, import_digestMemory.recordDigestBytes)(
|
|
231
|
+
value,
|
|
232
|
+
(0, import_digestMemory.encodedBytes)(value) + (value === state.base ? 0 : (0, import_digestMemory.encodedBytes)(state.base)) + state.contributionBytes + (state.indexes.timings?.bytes ?? 0) + state.indexes.refusalBytes + (0, import_digestMemory.encodedBytes)({
|
|
233
|
+
writes: state.writes,
|
|
234
|
+
baseSeatOrdinal: state.baseSeatOrdinal,
|
|
235
|
+
baseRefusals: [...state.baseRefusals],
|
|
236
|
+
length: state.length
|
|
237
|
+
})
|
|
238
|
+
);
|
|
239
|
+
return value;
|
|
240
|
+
};
|
|
241
|
+
const foreignVerdict = (event, runId) => runId !== void 0 && event.runId !== void 0 && event.runId !== runId && event.kind.startsWith("control.run.");
|
|
242
|
+
const digest = (events, runId) => {
|
|
243
|
+
if (runId !== void 0 && events.some((event) => foreignVerdict(event, runId))) {
|
|
244
|
+
events = events.filter((event) => !foreignVerdict(event, runId));
|
|
245
|
+
}
|
|
246
|
+
let contributions = import_effect.HashMap.empty();
|
|
247
|
+
let indexes = emptyIndexes();
|
|
248
|
+
let contributionBytes = 0;
|
|
249
|
+
const baseEvents = [];
|
|
250
|
+
const baseRefusals = /* @__PURE__ */ new Map();
|
|
251
|
+
const writes = { cause: false, finalOutput: false, parkedQuestion: false };
|
|
252
|
+
let baseSeatOrdinal;
|
|
253
|
+
for (const [ordinal, event] of events.entries()) {
|
|
254
|
+
const key = (0, import_callEvents.callEventKey)(event);
|
|
255
|
+
if (key === void 0) {
|
|
256
|
+
baseEvents.push(event);
|
|
257
|
+
if (event.kind === "control.run.failed") writes.cause = true;
|
|
258
|
+
if ((0, import_callEvents.callScope)(event) === void 0) {
|
|
259
|
+
if (event.kind === "control.agent.resolved") writes.finalOutput = true;
|
|
260
|
+
if (event.kind === "control.approval.requested") writes.parkedQuestion = true;
|
|
261
|
+
}
|
|
262
|
+
const payload = asRecord(event.payload);
|
|
263
|
+
if (event.kind === "control.agent.turn-opened" && asString(payload.seat) !== void 0) baseSeatOrdinal = ordinal;
|
|
264
|
+
if (event.kind === "control.agent.cell-call-settled" && payload.outcome === "failure") {
|
|
265
|
+
const message = firstLine(asString(payload.message) ?? "unknown refusal");
|
|
266
|
+
if (!baseRefusals.has(message)) baseRefusals.set(message, ordinal);
|
|
267
|
+
}
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
const native = (0, import_callEvents.nativeStepEvent)(event) ?? (0, import_callEvents.nativeCallEvent)(event);
|
|
271
|
+
const previous = import_effect.HashMap.get(contributions, key);
|
|
272
|
+
if (previous._tag === "Some" && (previous.value.authoritative || native === void 0)) continue;
|
|
273
|
+
const contribution = {
|
|
274
|
+
ordinal: previous._tag === "Some" ? previous.value.ordinal : ordinal,
|
|
275
|
+
authoritative: native !== void 0,
|
|
276
|
+
value: contributionValue(rawDigest([native ?? event]))
|
|
277
|
+
};
|
|
278
|
+
contributionBytes += (0, import_digestMemory.encodedBytes)([key, contribution]) - (previous._tag === "Some" ? (0, import_digestMemory.encodedBytes)([key, previous.value]) : 0);
|
|
279
|
+
contributions = import_effect.HashMap.set(contributions, key, contribution);
|
|
280
|
+
indexes = indexContribution(indexes, previous._tag === "Some" ? previous.value : void 0, contribution);
|
|
281
|
+
}
|
|
282
|
+
const value = rawDigest(events);
|
|
283
|
+
return remember(value, {
|
|
284
|
+
base: baseEvents.length === events.length ? value : rawDigest(baseEvents),
|
|
285
|
+
writes,
|
|
286
|
+
baseSeatOrdinal,
|
|
287
|
+
baseRefusals,
|
|
288
|
+
indexes,
|
|
289
|
+
contributions,
|
|
290
|
+
contributionBytes,
|
|
291
|
+
length: events.length
|
|
292
|
+
});
|
|
293
|
+
};
|
|
294
|
+
const duration = (value) => {
|
|
295
|
+
if (value.startedAt === void 0 || value.endedAt === void 0) return "0s";
|
|
296
|
+
const seconds = Math.max(0, Math.round((value.endedAt - value.startedAt) / 1e3));
|
|
297
|
+
return seconds < 60 ? `${seconds}s` : `${Math.floor(seconds / 60)}m ${String(seconds % 60).padStart(2, "0")}s`;
|
|
298
|
+
};
|
|
299
|
+
const usd = (value) => `$${value.toFixed(value >= 1 ? 2 : 4)}`;
|
|
300
|
+
const resolvedOutput = (value) => value.finalOutput ?? NativeResolution.output(value.nativeResolution);
|
|
301
|
+
const verdict = (value) => {
|
|
302
|
+
const status = value.status ?? "unlaunched";
|
|
303
|
+
const output = resolvedOutput(value);
|
|
304
|
+
if (status === "failed") {
|
|
305
|
+
return value.cause === void 0 ? "failed \u2014 no cause recorded in the journal" : `failed \u2014 ${clip(firstLine(value.cause), 100)}`;
|
|
306
|
+
}
|
|
307
|
+
if (status === "waiting-approval") {
|
|
308
|
+
return value.parkedQuestion === void 0 ? "waiting-approval \u2014 a permission gate is pending" : `waiting-approval \u2014 asks: ${clip(value.parkedQuestion, 90)}`;
|
|
309
|
+
}
|
|
310
|
+
if (status === "completed" && value.calls > 0 && value.editsAttempted === 0) {
|
|
311
|
+
return `completed \u2014 but 0 of ${value.calls} calls attempted an edit; the run only read`;
|
|
312
|
+
}
|
|
313
|
+
if (status === "completed" && output !== void 0 && output.length > 0) {
|
|
314
|
+
return `completed \u2014 ${clip(firstLine(output), 100)}`;
|
|
315
|
+
}
|
|
316
|
+
return status;
|
|
317
|
+
};
|
|
318
|
+
const label = (name) => name.padEnd(10);
|
|
319
|
+
const render = (subject, value) => {
|
|
320
|
+
const output = resolvedOutput(value);
|
|
321
|
+
const lines = [
|
|
322
|
+
`${label("Verdict")}${verdict(value)}`,
|
|
323
|
+
`${label("Run")}${subject.runId}${subject.flowId === void 0 ? "" : ` \xB7 ${subject.flowId}`}${value.seat === void 0 ? "" : ` \xB7 ${value.seat}`} \xB7 ${duration(value)}`,
|
|
324
|
+
`${label("Activity")}${value.turns} turns \xB7 ${value.calls} calls (${value.callsFailed} refused) \xB7 edits ${value.editsSucceeded}/${value.editsAttempted}`,
|
|
325
|
+
`${label("Tokens")}${value.inputTokens} in / ${value.outputTokens} out`,
|
|
326
|
+
...value.costUsd > 0 ? [`${label("Cost")}${usd(value.costUsd)}`] : []
|
|
327
|
+
];
|
|
328
|
+
for (const [index, refusal] of value.refusals.slice(0, 3).entries()) {
|
|
329
|
+
lines.push(`${label(index === 0 ? "Refusals" : "")}${refusal.count}\xD7 ${clip(refusal.message, 110)}`);
|
|
330
|
+
}
|
|
331
|
+
if (value.cause !== void 0) lines.push(`${label("Cause")}${clip(firstLine(value.cause), 120)}`);
|
|
332
|
+
if (output !== void 0 && output.length > 0) {
|
|
333
|
+
lines.push(`${label("Output")}${clip(firstLine(output), 120)}`);
|
|
334
|
+
}
|
|
335
|
+
return lines.join("\n");
|
|
336
|
+
};
|
|
337
|
+
const emptyDigest = () => digest([]);
|
|
338
|
+
const earliest = (left, right) => left === void 0 ? right : right === void 0 ? left : Math.min(left, right);
|
|
339
|
+
const latest = (left, right) => left === void 0 ? right : right === void 0 ? left : Math.max(left, right);
|
|
340
|
+
const combinePlain = (earlier, later, writes) => {
|
|
341
|
+
const counts = /* @__PURE__ */ new Map();
|
|
342
|
+
for (const refusal of [...earlier.refusals, ...later.refusals]) {
|
|
343
|
+
counts.set(refusal.message, (counts.get(refusal.message) ?? 0) + refusal.count);
|
|
344
|
+
}
|
|
345
|
+
return {
|
|
346
|
+
status: later.status ?? earlier.status,
|
|
347
|
+
cause: writes.cause ? later.cause : earlier.cause,
|
|
348
|
+
fault: writes.cause || later.status !== void 0 && later.status !== "failed" ? later.fault : earlier.fault,
|
|
349
|
+
seat: later.seat ?? earlier.seat,
|
|
350
|
+
turns: earlier.turns + later.turns,
|
|
351
|
+
calls: earlier.calls + later.calls,
|
|
352
|
+
callsFailed: earlier.callsFailed + later.callsFailed,
|
|
353
|
+
editsAttempted: earlier.editsAttempted + later.editsAttempted,
|
|
354
|
+
editsSucceeded: earlier.editsSucceeded + later.editsSucceeded,
|
|
355
|
+
refusals: [...counts.entries()].map(([message, count]) => ({ message, count })).sort((left, right) => right.count - left.count),
|
|
356
|
+
inputTokens: earlier.inputTokens + later.inputTokens,
|
|
357
|
+
outputTokens: earlier.outputTokens + later.outputTokens,
|
|
358
|
+
costUsd: earlier.costUsd + later.costUsd,
|
|
359
|
+
finalOutput: writes.finalOutput ? later.finalOutput : earlier.finalOutput,
|
|
360
|
+
nativeResolution: NativeResolution.combine(earlier.nativeResolution, later.nativeResolution),
|
|
361
|
+
parkedQuestion: writes.parkedQuestion ? later.parkedQuestion : earlier.parkedQuestion,
|
|
362
|
+
startedAt: earliest(earlier.startedAt, later.startedAt),
|
|
363
|
+
endedAt: latest(earlier.endedAt, later.endedAt)
|
|
364
|
+
};
|
|
365
|
+
};
|
|
366
|
+
const stateOf = (value) => digestStates.get(value) ?? {
|
|
367
|
+
base: value,
|
|
368
|
+
writes: {
|
|
369
|
+
cause: value.cause !== void 0,
|
|
370
|
+
finalOutput: value.finalOutput !== void 0,
|
|
371
|
+
parkedQuestion: value.parkedQuestion !== void 0
|
|
372
|
+
},
|
|
373
|
+
baseSeatOrdinal: value.seat === void 0 ? void 0 : 0,
|
|
374
|
+
baseRefusals: new Map(value.refusals.map((refusal) => [refusal.message, 0])),
|
|
375
|
+
indexes: emptyIndexes(),
|
|
376
|
+
contributions: import_effect.HashMap.empty(),
|
|
377
|
+
contributionBytes: 0,
|
|
378
|
+
length: 1
|
|
379
|
+
};
|
|
380
|
+
const combinedFacts = (state) => {
|
|
381
|
+
const result = { ...state.base };
|
|
382
|
+
let seatOrdinal = state.baseSeatOrdinal ?? -1;
|
|
383
|
+
const refusals = new Map(state.base.refusals.map((refusal) => [refusal.message, {
|
|
384
|
+
count: refusal.count,
|
|
385
|
+
ordinal: state.baseRefusals.get(refusal.message)
|
|
386
|
+
}]));
|
|
387
|
+
for (const [, contribution] of state.contributions) {
|
|
388
|
+
const value = contribution.value;
|
|
389
|
+
for (const key of counters) result[key] += value[key] ?? 0;
|
|
390
|
+
if (value.seat !== void 0 && contribution.ordinal > seatOrdinal) {
|
|
391
|
+
result.seat = value.seat;
|
|
392
|
+
seatOrdinal = contribution.ordinal;
|
|
393
|
+
}
|
|
394
|
+
result.startedAt = earliest(result.startedAt, value.startedAt);
|
|
395
|
+
result.endedAt = latest(result.endedAt, value.endedAt);
|
|
396
|
+
for (const refusal of value.refusals ?? []) {
|
|
397
|
+
const previous = refusals.get(refusal.message);
|
|
398
|
+
refusals.set(refusal.message, {
|
|
399
|
+
count: (previous?.count ?? 0) + refusal.count,
|
|
400
|
+
ordinal: Math.min(previous?.ordinal ?? contribution.ordinal, contribution.ordinal)
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
result.refusals = [...refusals].sort(
|
|
405
|
+
([, left], [, right]) => right.count - left.count || left.ordinal - right.ordinal
|
|
406
|
+
).map(([message, { count }]) => ({ message, count }));
|
|
407
|
+
return result;
|
|
408
|
+
};
|
|
409
|
+
const combine = (earlier, later) => {
|
|
410
|
+
const left = stateOf(earlier);
|
|
411
|
+
const right = stateOf(later);
|
|
412
|
+
let contributions = left.contributions;
|
|
413
|
+
let indexes = left.indexes;
|
|
414
|
+
let contributionBytes = left.contributionBytes;
|
|
415
|
+
let accepted = import_effect.HashMap.empty();
|
|
416
|
+
const corrected = { ...earlier };
|
|
417
|
+
for (const [key, value2] of right.contributions) {
|
|
418
|
+
const previous = import_effect.HashMap.get(contributions, key);
|
|
419
|
+
if (previous._tag === "Some" && (previous.value.authoritative || !value2.authoritative)) continue;
|
|
420
|
+
if (previous._tag === "Some") {
|
|
421
|
+
const old = previous.value.value;
|
|
422
|
+
const next = value2.value;
|
|
423
|
+
for (const counter of counters) corrected[counter] += (next[counter] ?? 0) - (old[counter] ?? 0);
|
|
424
|
+
} else accepted = import_effect.HashMap.set(accepted, key, value2);
|
|
425
|
+
const contribution = {
|
|
426
|
+
...value2,
|
|
427
|
+
ordinal: previous._tag === "Some" ? previous.value.ordinal : left.length + value2.ordinal
|
|
428
|
+
};
|
|
429
|
+
contributionBytes += (0, import_digestMemory.encodedBytes)([key, contribution]) - (previous._tag === "Some" ? (0, import_digestMemory.encodedBytes)([key, previous.value]) : 0);
|
|
430
|
+
contributions = import_effect.HashMap.set(contributions, key, contribution);
|
|
431
|
+
indexes = indexContribution(indexes, previous._tag === "Some" ? previous.value : void 0, contribution);
|
|
432
|
+
}
|
|
433
|
+
const baseRefusals = new Map(left.baseRefusals);
|
|
434
|
+
for (const [message, ordinal] of right.baseRefusals) {
|
|
435
|
+
if (!baseRefusals.has(message)) baseRefusals.set(message, left.length + ordinal);
|
|
436
|
+
}
|
|
437
|
+
const incomingComplete = import_effect.HashMap.size(accepted) === import_effect.HashMap.size(right.contributions);
|
|
438
|
+
const incoming = incomingComplete ? later : combinedFacts({ ...right, contributions: accepted });
|
|
439
|
+
const state = {
|
|
440
|
+
base: combinePlain(left.base, right.base, right.writes),
|
|
441
|
+
writes: {
|
|
442
|
+
cause: left.writes.cause || right.writes.cause,
|
|
443
|
+
finalOutput: left.writes.finalOutput || right.writes.finalOutput,
|
|
444
|
+
parkedQuestion: left.writes.parkedQuestion || right.writes.parkedQuestion
|
|
445
|
+
},
|
|
446
|
+
baseSeatOrdinal: right.baseSeatOrdinal === void 0 ? left.baseSeatOrdinal : left.length + right.baseSeatOrdinal,
|
|
447
|
+
baseRefusals,
|
|
448
|
+
indexes,
|
|
449
|
+
contributions,
|
|
450
|
+
contributionBytes,
|
|
451
|
+
length: left.length + right.length
|
|
452
|
+
};
|
|
453
|
+
const value = { ...combinePlain(corrected, incoming, right.writes) };
|
|
454
|
+
value.startedAt = state.base.startedAt;
|
|
455
|
+
value.endedAt = state.base.endedAt;
|
|
456
|
+
if (indexes.timings?.min !== void 0) {
|
|
457
|
+
value.startedAt = Math.min(value.startedAt ?? indexes.timings.min, indexes.timings.min);
|
|
458
|
+
}
|
|
459
|
+
if (indexes.timings?.max !== void 0) {
|
|
460
|
+
value.endedAt = Math.max(value.endedAt ?? indexes.timings.max, indexes.timings.max);
|
|
461
|
+
}
|
|
462
|
+
const refusals = new Map(state.base.refusals.map((refusal) => [refusal.message, {
|
|
463
|
+
count: refusal.count,
|
|
464
|
+
ordinal: baseRefusals.get(refusal.message)
|
|
465
|
+
}]));
|
|
466
|
+
for (const [message, tree] of indexes.refusals) {
|
|
467
|
+
const previous = refusals.get(message);
|
|
468
|
+
refusals.set(message, {
|
|
469
|
+
count: (previous?.count ?? 0) + tree.size,
|
|
470
|
+
ordinal: Math.min(previous?.ordinal ?? tree.first, tree.first)
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
value.refusals = [...refusals].sort(([, a], [, b]) => b.count - a.count || a.ordinal - b.ordinal).map(([message, { count }]) => ({ message, count }));
|
|
474
|
+
return remember(value, state);
|
|
475
|
+
};
|
|
476
|
+
//# sourceMappingURL=Diagnosis.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Diagnosis.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The run diagnosis: what happened to a run, computed from its own control\n * events.\n *\n * The old gateway answered this question with a `whatHappened` RPC that read\n * run rows, node-iteration rows, and attempt rows out of the engine database\n * and optionally asked an agent to narrate them. The rc.0 gateway serves the\n * same answer as a field of the `run-summary` projection, computed from the\n * ordered `ControlEvent` deltas `Control.watch` already publishes. Nothing\n * here opens a database, so a diagnosis read through a relay is the same\n * diagnosis a local reader computes.\n *\n * This is the one fold both surfaces read. `@smthrs/cli` `Forensics` calls\n * `digest` and adds what a terminal card needs on top of it: duplicate calls,\n * per-flow counts, the parked approval payload, and the declined-launch state\n * the wire vocabulary does not carry. The counts, the refusal aggregation, and\n * the clipping are therefore one implementation, not two that drift.\n *\n * @since 1.0.0\n */\n\nimport { ControlSchema } from \"@smthrs/control\"\nimport * as Fault from \"@smthrs/flow/Fault\"\nimport { HashMap, Schema } from \"effect\"\nimport { callEventKey, callScope, nativeCallEvent, nativeStepEvent, uniqueCallEvents } from \"./internal/callEvents.ts\"\nimport * as DigestIndex from \"./internal/digestIndex.ts\"\nimport { encodedBytes, recordDigestBytes } from \"./internal/digestMemory.ts\"\nimport * as NativeResolution from \"./internal/nativeResolution.ts\"\n\n/**\n * Keeps one start and settlement per durable call identity, preferring a\n * committed native fact over telemetry at the first observation's position.\n * Unidentified legacy events remain distinct because their identity cannot\n * be recovered from flow names and inputs. Shared with CLI call counts.\n *\n * @since 1.0.0\n * @category projections\n */\nexport { uniqueCallEvents }\n\n/**\n * Native fact normalization and stable call/checkpoint identities.\n * Incremental readers retain these keys to match the full history fold.\n *\n * @since 1.0.0\n * @category projections\n */\nexport { callEventKey, callScope, nativeCallEvent, nativeStepEvent } from \"./internal/callEvents.ts\"\n\n/**\n * Finds an open call by ID, with name/FIFO fallback only for legacy starts.\n * Shared by gateway node output and the CLI's compatible flow/ordinal IDs.\n *\n * @since 1.0.0\n * @category projections\n */\nexport { openCallIndex } from \"./internal/callEvents.ts\"\n\n/**\n * The run statuses a digest may report.\n *\n * `@smthrs/control` `ControlSchema.RunStatus` is the vocabulary; this is the\n * runtime set the fold checks a journaled kind against.\n *\n * @since 1.0.0\n * @category models\n */\nexport type RunStatus = ControlSchema.RunStatus\n\n/**\n * Every `control.run.*` suffix that names a status rather than an operation.\n *\n * `@smthrs/control` journals `control.run.lineage`, `control.run.resume`,\n * `control.run.resumed`, `control.run.cancel-requested`, and\n * `control.run.pending` under the same prefix as the status transitions, and\n * `Lineage.derive` adds one more to every followed stream. Reading a status\n * off the prefix alone made a live run's verdict read `lineage` or `resume`,\n * so the fold accepts only the schema statuses a client may render.\n */\nconst runStatuses: ReadonlySet<string> = new Set(ControlSchema.RunStatus.literals)\n\n/**\n * One refused flow call, aggregated by its refusal message.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface Refusal {\n readonly message: string\n readonly count: number\n}\n\n/**\n * Everything the diagnosis computes from one run's events.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface Digest {\n /** The last run status seen, or undefined before launch. */\n readonly status: RunStatus | undefined\n /** The journaled failure cause, when the run failed and recorded one. */\n readonly cause: string | undefined\n /** The typed fault stamped beside {@link cause}; it is written and cleared with it. */\n readonly fault?: Fault.Fault | undefined\n /** The model seat the last opened turn ran on. */\n readonly seat: string | undefined\n readonly turns: number\n readonly calls: number\n readonly callsFailed: number\n readonly editsAttempted: number\n readonly editsSucceeded: number\n /** Refusal messages, descending by count. */\n readonly refusals: ReadonlyArray<Refusal>\n readonly inputTokens: number\n readonly outputTokens: number\n /** USD the run's priced model calls cost; zero when none was priced. */\n readonly costUsd: number\n /** The final assistant output, when the run resolved. */\n readonly finalOutput: string | undefined\n /** Root binding and committed native result, retained across bounded windows. */\n readonly nativeResolution?: NativeResolution.NativeResolution | undefined\n /** The pending ask's question, when the run parked for approval. */\n readonly parkedQuestion: string | undefined\n /** The earliest time a kind this fold handles occurred at. */\n readonly startedAt: number | undefined\n /** The latest time a kind this fold handles occurred at. */\n readonly endedAt: number | undefined\n}\n\n/** Flows whose calls count as edit attempts. */\nconst editFlows: ReadonlySet<string> = new Set([\"write\", \"edit\", \"apply_patch\"])\n\n/**\n * Reads a payload as a record. Wire payloads are `Json`, so every field read\n * tolerates absence and the digest of a malformed journal is a sparse digest,\n * never a throw.\n *\n * @param value the payload to read\n * @since 1.0.0\n * @category conversions\n */\nexport const asRecord = (value: unknown): Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value) ? value as Record<string, unknown> : {}\n\n/**\n * Reads a payload field as a string, or nothing when it is not one.\n *\n * @param value the field to read\n * @since 1.0.0\n * @category conversions\n */\nexport const asString = (value: unknown): string | undefined => typeof value === \"string\" ? value : undefined\n\nconst isFault = Schema.is(Fault.Fault)\n\n/**\n * Reads a payload field as a number, or nothing when it is not one.\n *\n * @param value the field to read\n * @since 1.0.0\n * @category conversions\n */\nexport const asNumber = (value: unknown): number | undefined => typeof value === \"number\" ? value : undefined\n\n/**\n * Occurrence time: the payload's own stamp, else journal admission time.\n *\n * @param event the event to time\n * @since 1.0.0\n * @category conversions\n */\nexport const timeOf = (event: ControlSchema.ControlEvent): number =>\n asNumber(asRecord(event.payload).at) ?? event.occurredAt\n\n/**\n * The first line, whichever line ending produced it. Splitting on `\\n` alone\n * left the `\\r` of a CRLF cause on the wire, and every reader of a one-line\n * field, here and in `@smthrs/cli` `Forensics`, wants the same answer.\n *\n * @param text the text to read one line of\n * @since 1.0.0\n * @category conversions\n */\nexport const firstLine = (text: string): string => {\n const index = text.search(/[\\r\\n]/)\n return index < 0 ? text : text.slice(0, index)\n}\n\n/**\n * Truncates to a display width, marking the cut.\n *\n * The cut is made on code points, never on UTF-16 code units. Slicing code\n * units splits an astral character in half and puts a lone surrogate on the\n * wire, where a Go decoder silently replaces it with U+FFFD and a strict\n * decoder rejects the whole frame; the result of this function is always well\n * formed. A clipped result is exactly `width` code points, so `width` 1 is the\n * ellipsis alone and `width` 0, or any negative width, is the empty string.\n *\n * @param text the text to clip\n * @param width the greatest number of code points to keep\n * @since 1.0.0\n * @category rendering\n */\nexport const clip = (text: string, width: number): string => {\n if (width <= 0) return \"\"\n const points = [...text]\n return points.length <= width ? text : `${points.slice(0, width - 1).join(\"\")}\u2026`\n}\n\n/** The mutable accumulator the fold below writes into. */\ninterface Accumulator {\n status: RunStatus | undefined\n cause: string | undefined\n fault: Fault.Fault | undefined\n seat: string | undefined\n turns: number\n calls: number\n callsFailed: number\n editsAttempted: number\n editsSucceeded: number\n inputTokens: number\n outputTokens: number\n costUsd: number\n finalOutput: string | undefined\n parkedQuestion: string | undefined\n}\n\n/**\n * Which events may write a run-level field.\n *\n * `uniqueCallEvents` normalizes a native step fact into the `control.agent.*`\n * event the step recorded, so this fold reads two streams at once: the run's\n * own, and one per step a module run dispatched. A step's record carries the\n * `step` object its checkpoint was written under, which is what `callScope`\n * reads; the run's own records carry none. Every run-level field therefore\n * belongs to one of three classes, and a new handler has to name its class\n * before it compiles:\n *\n * - `aggregate`: the field sums or counts what the whole run did, steps\n * included, so a step's record contributes to it like any other.\n * - `root`: the field is the run's own answer or state, so only an unscoped\n * record may set it. A step's record is skipped.\n * - scope dependent: the field means something only beside the scope that\n * recorded it, so it is kept per scope rather than run wide. No field of\n * this digest is one; `GatewayProjection.callHistory` holds the one that is,\n * the seat a call ran on.\n *\n * The table, field by field:\n *\n * | Field | Class | Why |\n * | ------------------------------- | --------- | ---------------------------------------------------------- |\n * | `turns` | aggregate | a turn a step opened is a turn this run opened |\n * | `seat` | aggregate | the seat of the run's last opened turn, wherever it opened |\n * | `inputTokens`, `outputTokens` | aggregate | a step spends the run's budget, so the run pays for it |\n * | `costUsd` | aggregate | the dollars of those same calls |\n * | `calls`, `editsAttempted` | aggregate | a call a step made is a call this run made |\n * | `callsFailed`, `editsSucceeded` | aggregate | the settlement of one of those calls |\n * | `refusals` | aggregate | the messages those settlements refused with |\n * | `startedAt`, `endedAt` | aggregate | a step runs inside the run's span, so its records widen it |\n * | `finalOutput` | root | THE run's answer; a step's answer is the step's |\n * | `parkedQuestion` | root | THE question the run is parked on |\n * | `status`, `cause` | root | THE run's terminal state, from `control.run.*` alone |\n *\n * `status`, `cause` and `parkedQuestion` are root only by construction as well\n * as by this class: `StepFact.Fact` accepts an `eventType` matching\n * `^control\\.agent\\.[a-z-]+$`, so no step fact can normalize to a\n * `control.run.*` kind or to `control.approval.requested`.\n */\ntype Reach = \"aggregate\" | \"root\"\n\n/** One kind's contribution, and the class of the fields it writes. */\ninterface Handler {\n readonly reach: Reach\n readonly apply: (accumulator: Accumulator, payload: Record<string, unknown>) => void\n}\n\nconst handlers: Readonly<Record<string, Handler>> = {\n \"control.agent.turn-opened\": {\n reach: \"aggregate\",\n apply: (accumulator, payload) => {\n accumulator.turns += 1\n accumulator.seat = asString(payload.seat) ?? accumulator.seat\n }\n },\n \"control.agent.model-settled\": {\n reach: \"aggregate\",\n apply: (accumulator, payload) => {\n const usage = asRecord(payload.usage)\n accumulator.inputTokens += asNumber(usage.inputTokens) ?? 0\n accumulator.outputTokens += asNumber(usage.outputTokens) ?? 0\n const cost = asNumber(payload.costUsd)\n if (cost !== undefined && Number.isFinite(cost) && cost > 0) accumulator.costUsd += cost\n }\n },\n \"control.agent.cell-call-started\": {\n reach: \"aggregate\",\n apply: (accumulator, payload) => {\n accumulator.calls += 1\n if (editFlows.has(asString(payload.flowName) ?? \"\")) accumulator.editsAttempted += 1\n }\n },\n \"control.agent.resolved\": {\n reach: \"root\",\n apply: (accumulator, payload) => {\n accumulator.finalOutput = asString(payload.text)\n }\n },\n \"control.approval.requested\": {\n reach: \"root\",\n apply: (accumulator, payload) => {\n accumulator.parkedQuestion = asString(payload.question)\n }\n }\n}\n\n/**\n * The kinds this fold handles, with the class each one's fields belong to.\n *\n * Exported so a test can hold the table above against the map rather than\n * trusting a comment, and so a new handler that names no class fails both the\n * compiler and that test.\n *\n * @since 1.0.0\n * @category models\n */\nexport const handlerReach: Readonly<Record<string, \"aggregate\" | \"root\">> = Object.fromEntries(\n Object.entries(handlers).map(([kind, handler]) => [kind, handler.reach])\n)\n\n/**\n * Computes the diagnosis facts for one run from its ordered control events.\n *\n * Total on purpose: an event this vocabulary does not know contributes\n * nothing rather than failing the fold.\n *\n * @param events the run's ordered control events\n * @since 1.0.0\n * @category constructors\n */\nconst rawDigest = (events: ReadonlyArray<ControlSchema.ControlEvent>): Digest => {\n const accumulator: Accumulator = {\n status: undefined,\n cause: undefined,\n fault: undefined,\n seat: undefined,\n turns: 0,\n calls: 0,\n callsFailed: 0,\n editsAttempted: 0,\n editsSucceeded: 0,\n inputTokens: 0,\n outputTokens: 0,\n costUsd: 0,\n finalOutput: undefined,\n parkedQuestion: undefined\n }\n const refusalCounts = new Map<string, number>()\n let startedAt: number | undefined\n let endedAt: number | undefined\n let nativeResolution: NativeResolution.NativeResolution | undefined\n\n /**\n * Widens the span this digest reports.\n *\n * Only a kind this fold handles widens it. The gateway merges a keepalive\n * event whose kind no emitter uses into every followed `Watch` stream\n * (`GatewayServer.watchHeartbeatKind`), and a fold that let an unhandled kind\n * contribute its timestamp reported a run that ran for as long as it was\n * watched.\n */\n const observe = (at: number): void => {\n startedAt = startedAt === undefined ? at : Math.min(startedAt, at)\n endedAt = endedAt === undefined ? at : Math.max(endedAt, at)\n }\n\n for (const event of uniqueCallEvents(events)) {\n nativeResolution = NativeResolution.combine(nativeResolution, NativeResolution.fromEvent(event))\n const payload = asRecord(event.payload)\n const at = timeOf(event)\n const handler = Object.hasOwn(handlers, event.kind) ? handlers[event.kind] : undefined\n if (handler !== undefined) {\n // A step's record still widens the span it was recorded in, because the\n // step ran inside this run. Whether it may write the field is the\n // handler's class: a root-only field keeps the root's reading.\n observe(at)\n if (handler.reach === \"aggregate\" || callScope(event) === undefined) handler.apply(accumulator, payload)\n continue\n }\n if (event.kind === \"control.agent.cell-call-settled\") {\n observe(at)\n if (asString(payload.outcome) === \"failure\") {\n accumulator.callsFailed += 1\n const message = firstLine(asString(payload.message) ?? \"unknown refusal\")\n refusalCounts.set(message, (refusalCounts.get(message) ?? 0) + 1)\n } else if (editFlows.has(asString(payload.flowName) ?? \"\")) {\n accumulator.editsSucceeded += 1\n }\n continue\n }\n if (event.kind.startsWith(\"control.run.\")) {\n const status = event.kind.slice(\"control.run.\".length)\n if (!runStatuses.has(status)) continue\n observe(at)\n accumulator.status = status as RunStatus\n if (status === \"failed\") accumulator.cause = asString(payload.cause)\n // A resumed run is no longer failed, so the fault of its last failure goes.\n accumulator.fault = status === \"failed\" && isFault(payload.fault) ? payload.fault : undefined\n }\n }\n\n return {\n ...accumulator,\n ...(nativeResolution === undefined ? {} : { nativeResolution }),\n refusals: [...refusalCounts.entries()]\n .map(([message, count]) => ({ message, count }))\n .sort((left, right) => right.count - left.count),\n startedAt,\n endedAt\n }\n}\n\nconst counters = [\n \"turns\",\n \"calls\",\n \"callsFailed\",\n \"editsAttempted\",\n \"editsSucceeded\",\n \"inputTokens\",\n \"outputTokens\",\n \"costUsd\"\n] as const\ntype ContributionValue = Partial<Pick<Digest, typeof counters[number] | \"seat\" | \"startedAt\" | \"endedAt\" | \"refusals\">>\n\nconst contributionValue = (value: Digest): ContributionValue => ({\n ...Object.fromEntries(counters.filter((counter) => value[counter] !== 0).map((counter) => [counter, value[counter]])),\n ...(value.seat === undefined ? {} : { seat: value.seat }),\n ...(value.startedAt === undefined ? {} : { startedAt: value.startedAt }),\n ...(value.endedAt === undefined ? {} : { endedAt: value.endedAt }),\n ...(value.refusals.length === 0 ? {} : { refusals: value.refusals })\n})\n\ninterface Contribution {\n readonly ordinal: number\n readonly authoritative: boolean\n readonly value: ContributionValue\n}\n\ninterface DigestState {\n readonly base: Digest\n readonly writes: { readonly cause: boolean; readonly finalOutput: boolean; readonly parkedQuestion: boolean }\n readonly baseSeatOrdinal: number | undefined\n readonly baseRefusals: ReadonlyMap<string, number>\n readonly indexes: Indexes\n readonly contributions: HashMap.HashMap<string, Contribution>\n readonly contributionBytes: number\n readonly length: number\n}\n\ninterface Indexes {\n readonly timings: DigestIndex.Index | undefined\n readonly refusals: HashMap.HashMap<string, DigestIndex.Index>\n readonly refusalBytes: number\n}\n\nconst emptyIndexes = (): Indexes => ({ timings: undefined, refusals: HashMap.empty(), refusalBytes: 0 })\nconst refusalIndexBytes = (message: string, tree: DigestIndex.Index | undefined): number =>\n tree === undefined ? 0 : encodedBytes(message) + tree.bytes\n\nconst indexContribution = (indexes: Indexes, previous: Contribution | undefined, next: Contribution): Indexes => {\n let refusals = indexes.refusals\n let refusalBytes = indexes.refusalBytes\n for (const refusal of previous?.value.refusals ?? []) {\n if (next.value.refusals?.some((member) => member.message === refusal.message)) continue\n // Every previous refusal was indexed when its contribution was retained.\n const oldTree = HashMap.getUnsafe(refusals, refusal.message)\n const tree = DigestIndex.remove(oldTree, next.ordinal)\n refusalBytes += refusalIndexBytes(refusal.message, tree) - refusalIndexBytes(refusal.message, oldTree)\n refusals = tree === undefined\n ? HashMap.remove(refusals, refusal.message)\n : HashMap.set(refusals, refusal.message, tree)\n }\n for (const refusal of next.value.refusals ?? []) {\n if (previous?.value.refusals?.some((member) => member.message === refusal.message)) continue\n const old = HashMap.get(refusals, refusal.message)\n const oldTree = old._tag === \"Some\" ? old.value : undefined\n const tree = DigestIndex.set(oldTree, next.ordinal)\n refusalBytes += refusalIndexBytes(refusal.message, tree) - refusalIndexBytes(refusal.message, oldTree)\n refusals = HashMap.set(refusals, refusal.message, tree)\n }\n return {\n timings: DigestIndex.set(indexes.timings, next.ordinal, next.value.startedAt, next.value.endedAt),\n refusals,\n refusalBytes\n }\n}\n\n// Scalar contributions only: no model input, call output, or event body is\n// retained. Weak associations keep the public Digest and its wire shape intact.\nconst digestStates = new WeakMap<Digest, DigestState>()\nconst remember = (value: Digest, state: DigestState): Digest => {\n digestStates.set(value, state)\n recordDigestBytes(\n value,\n encodedBytes(value) + (value === state.base ? 0 : encodedBytes(state.base)) +\n state.contributionBytes + (state.indexes.timings?.bytes ?? 0) + state.indexes.refusalBytes + encodedBytes({\n writes: state.writes,\n baseSeatOrdinal: state.baseSeatOrdinal,\n baseRefusals: [...state.baseRefusals],\n length: state.length\n })\n )\n return value\n}\n\n/**\n * A `control.run.*` verdict stamped with a run id other than `runId`, such as\n * a child's riding in the parent's events. It must not set the digested run's\n * status or failure cause. An unstamped verdict is the run's own.\n *\n * @param event the event to classify\n * @param runId the run being digested; omitted, no verdict is foreign\n * @category predicates\n * @since 1.0.0\n */\nexport const foreignVerdict = (event: ControlSchema.ControlEvent, runId: string | undefined): boolean =>\n runId !== undefined && event.runId !== undefined && event.runId !== runId && event.kind.startsWith(\"control.run.\")\n\n/**\n * Folds one event range, retaining compact identities for later combination.\n * Native facts supersede telemetry at its first position across ranges too.\n *\n * @param events the range to fold\n * @param runId the run being digested; a `control.run.*` verdict stamped with\n * another run's id is skipped. Omitted, every verdict folds.\n * @category constructors\n * @since 1.0.0\n */\nexport const digest = (events: ReadonlyArray<ControlSchema.ControlEvent>, runId?: string): Digest => {\n if (runId !== undefined && events.some((event) => foreignVerdict(event, runId))) {\n events = events.filter((event) => !foreignVerdict(event, runId))\n }\n let contributions = HashMap.empty<string, Contribution>()\n let indexes = emptyIndexes()\n let contributionBytes = 0\n const baseEvents: Array<ControlSchema.ControlEvent> = []\n const baseRefusals = new Map<string, number>()\n const writes = { cause: false, finalOutput: false, parkedQuestion: false }\n let baseSeatOrdinal: number | undefined\n for (const [ordinal, event] of events.entries()) {\n const key = callEventKey(event)\n if (key === undefined) {\n baseEvents.push(event)\n if (event.kind === \"control.run.failed\") writes.cause = true\n if (callScope(event) === undefined) {\n if (event.kind === \"control.agent.resolved\") writes.finalOutput = true\n if (event.kind === \"control.approval.requested\") writes.parkedQuestion = true\n }\n const payload = asRecord(event.payload)\n if (event.kind === \"control.agent.turn-opened\" && asString(payload.seat) !== undefined) baseSeatOrdinal = ordinal\n if (event.kind === \"control.agent.cell-call-settled\" && payload.outcome === \"failure\") {\n const message = firstLine(asString(payload.message) ?? \"unknown refusal\")\n if (!baseRefusals.has(message)) baseRefusals.set(message, ordinal)\n }\n continue\n }\n const native = nativeStepEvent(event) ?? nativeCallEvent(event)\n const previous = HashMap.get(contributions, key)\n if (previous._tag === \"Some\" && (previous.value.authoritative || native === undefined)) continue\n const contribution = {\n ordinal: previous._tag === \"Some\" ? previous.value.ordinal : ordinal,\n authoritative: native !== undefined,\n value: contributionValue(rawDigest([native ?? event]))\n }\n contributionBytes += encodedBytes([key, contribution]) -\n (previous._tag === \"Some\" ? encodedBytes([key, previous.value]) : 0)\n contributions = HashMap.set(contributions, key, contribution)\n indexes = indexContribution(indexes, previous._tag === \"Some\" ? previous.value : undefined, contribution)\n }\n const value = rawDigest(events)\n return remember(value, {\n base: baseEvents.length === events.length ? value : rawDigest(baseEvents),\n writes,\n baseSeatOrdinal,\n baseRefusals,\n indexes,\n contributions,\n contributionBytes,\n length: events.length\n })\n}\n\n/**\n * The wall-clock span the events cover, rendered for a reader.\n *\n * Only the span is read, so a caller carrying a wider digest of its own, as\n * `@smthrs/cli` `Forensics` does, measures it with this rather than a copy.\n *\n * @param value the span to measure\n * @since 1.0.0\n * @category rendering\n */\nexport const duration = (value: Pick<Digest, \"startedAt\" | \"endedAt\">): string => {\n if (value.startedAt === undefined || value.endedAt === undefined) return \"0s\"\n const seconds = Math.max(0, Math.round((value.endedAt - value.startedAt) / 1000))\n return seconds < 60 ? `${seconds}s` : `${Math.floor(seconds / 60)}m ${String(seconds % 60).padStart(2, \"0\")}s`\n}\n\n/**\n * A USD amount for a reader: cents from one dollar, four places below it, so\n * a cheap run never reads as `$0.00`.\n *\n * @param value dollars, finite and non-negative\n * @since 1.0.0\n * @category rendering\n */\nexport const usd = (value: number): string => `$${value.toFixed(value >= 1 ? 2 : 4)}`\n\n/**\n * Assistant text, or a typed module's committed result under its bound root.\n * @category projections\n * @since 1.0.0\n */\nexport const resolvedOutput = (value: Pick<Digest, \"finalOutput\" | \"nativeResolution\">): string | undefined =>\n value.finalOutput ?? NativeResolution.output(value.nativeResolution)\n\n/**\n * The one-line verdict: the status plus the reason that most explains it.\n *\n * Priority order mirrors what a reader needs first: a recorded failure cause,\n * then a park's question, then the \"worked but never edited\" pathology a green\n * status would otherwise hide, then the resolved output.\n *\n * @param value the digest to judge\n * @since 1.0.0\n * @category rendering\n */\nexport const verdict = (value: Digest): string => {\n const status = value.status ?? \"unlaunched\"\n const output = resolvedOutput(value)\n if (status === \"failed\") {\n return value.cause === undefined\n ? \"failed \u2014 no cause recorded in the journal\"\n : `failed \u2014 ${clip(firstLine(value.cause), 100)}`\n }\n if (status === \"waiting-approval\") {\n return value.parkedQuestion === undefined\n ? \"waiting-approval \u2014 a permission gate is pending\"\n : `waiting-approval \u2014 asks: ${clip(value.parkedQuestion, 90)}`\n }\n if (status === \"completed\" && value.calls > 0 && value.editsAttempted === 0) {\n return `completed \u2014 but 0 of ${value.calls} calls attempted an edit; the run only read`\n }\n if (status === \"completed\" && output !== undefined && output.length > 0) {\n return `completed \u2014 ${clip(firstLine(output), 100)}`\n }\n return status\n}\n\nconst label = (name: string): string => name.padEnd(10)\n\n/**\n * Identity a diagnosis is rendered for.\n *\n * @since 1.0.0\n * @category models\n */\nexport interface Subject {\n readonly runId: string\n readonly flowId?: string | undefined\n}\n\n/**\n * Renders the diagnosis card for one run: verdict, activity evidence, tokens,\n * cost when any call was priced, refusals, cause, and output.\n *\n * @param subject the run being diagnosed\n * @param value the digest computed from its events\n * @since 1.0.0\n * @category rendering\n */\nexport const render = (subject: Subject, value: Digest): string => {\n const output = resolvedOutput(value)\n const lines: Array<string> = [\n `${label(\"Verdict\")}${verdict(value)}`,\n `${label(\"Run\")}${subject.runId}${subject.flowId === undefined ? \"\" : ` \u00B7 ${subject.flowId}`}${\n value.seat === undefined ? \"\" : ` \u00B7 ${value.seat}`\n } \u00B7 ${duration(value)}`,\n `${\n label(\"Activity\")\n }${value.turns} turns \u00B7 ${value.calls} calls (${value.callsFailed} refused) \u00B7 edits ${value.editsSucceeded}/${value.editsAttempted}`,\n `${label(\"Tokens\")}${value.inputTokens} in / ${value.outputTokens} out`,\n ...(value.costUsd > 0 ? [`${label(\"Cost\")}${usd(value.costUsd)}`] : [])\n ]\n for (const [index, refusal] of value.refusals.slice(0, 3).entries()) {\n lines.push(`${label(index === 0 ? \"Refusals\" : \"\")}${refusal.count}\u00D7 ${clip(refusal.message, 110)}`)\n }\n if (value.cause !== undefined) lines.push(`${label(\"Cause\")}${clip(firstLine(value.cause), 120)}`)\n if (output !== undefined && output.length > 0) {\n lines.push(`${label(\"Output\")}${clip(firstLine(output), 120)}`)\n }\n return lines.join(\"\\n\")\n}\n\n/**\n * A digest of no events at all: the identity {@link combine} folds onto.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const emptyDigest = (): Digest => digest([])\n\nconst earliest = (left: number | undefined, right: number | undefined): number | undefined =>\n left === undefined ? right : right === undefined ? left : Math.min(left, right)\nconst latest = (left: number | undefined, right: number | undefined): number | undefined =>\n left === undefined ? right : right === undefined ? left : Math.max(left, right)\n\n/**\n * Folds two digests of adjacent event ranges into the digest of both.\n *\n * `digest` is a left fold over an ordered range, so the digest of a whole\n * journal is the digest of its prefix combined with the digest of its\n * remainder. That identity is what lets a bounded reader keep exact counters\n * for a run whose journal it cannot hold: it folds the events it drops into a\n * carry digest and combines that carry with the digest of the window it kept.\n *\n * Used for contributions that do not overlap. Written fields may deliberately\n * clear an older value. Refusal counts merge and re-sort. The span widens.\n *\n * @param earlier the digest of the earlier range\n * @param later the digest of the range that follows it\n * @since 1.0.0\n * @category constructors\n */\nconst combinePlain = (earlier: Digest, later: Digest, writes: DigestState[\"writes\"]): Digest => {\n const counts = new Map<string, number>()\n for (const refusal of [...earlier.refusals, ...later.refusals]) {\n counts.set(refusal.message, (counts.get(refusal.message) ?? 0) + refusal.count)\n }\n return {\n status: later.status ?? earlier.status,\n cause: writes.cause ? later.cause : earlier.cause,\n fault: writes.cause || (later.status !== undefined && later.status !== \"failed\") ? later.fault : earlier.fault,\n seat: later.seat ?? earlier.seat,\n turns: earlier.turns + later.turns,\n calls: earlier.calls + later.calls,\n callsFailed: earlier.callsFailed + later.callsFailed,\n editsAttempted: earlier.editsAttempted + later.editsAttempted,\n editsSucceeded: earlier.editsSucceeded + later.editsSucceeded,\n refusals: [...counts.entries()]\n .map(([message, count]) => ({ message, count }))\n .sort((left, right) => right.count - left.count),\n inputTokens: earlier.inputTokens + later.inputTokens,\n outputTokens: earlier.outputTokens + later.outputTokens,\n costUsd: earlier.costUsd + later.costUsd,\n finalOutput: writes.finalOutput ? later.finalOutput : earlier.finalOutput,\n nativeResolution: NativeResolution.combine(earlier.nativeResolution, later.nativeResolution),\n parkedQuestion: writes.parkedQuestion ? later.parkedQuestion : earlier.parkedQuestion,\n startedAt: earliest(earlier.startedAt, later.startedAt),\n endedAt: latest(earlier.endedAt, later.endedAt)\n }\n}\n\nconst stateOf = (value: Digest): DigestState =>\n digestStates.get(value) ?? {\n base: value,\n writes: {\n cause: value.cause !== undefined,\n finalOutput: value.finalOutput !== undefined,\n parkedQuestion: value.parkedQuestion !== undefined\n },\n baseSeatOrdinal: value.seat === undefined ? undefined : 0,\n baseRefusals: new Map(value.refusals.map((refusal) => [refusal.message, 0])),\n indexes: emptyIndexes(),\n contributions: HashMap.empty(),\n contributionBytes: 0,\n length: 1\n }\n\n/** Rebuild only scalar facts; keyed observations never own root result/state fields. */\nconst combinedFacts = (state: DigestState): Digest => {\n const result = { ...state.base }\n let seatOrdinal = state.baseSeatOrdinal ?? -1\n const refusals = new Map(state.base.refusals.map((refusal) => [refusal.message, {\n count: refusal.count,\n ordinal: state.baseRefusals.get(refusal.message)!\n }]))\n for (const [, contribution] of state.contributions) {\n const value = contribution.value\n for (const key of counters) result[key] += value[key] ?? 0\n if (value.seat !== undefined && contribution.ordinal > seatOrdinal) {\n result.seat = value.seat\n seatOrdinal = contribution.ordinal\n }\n result.startedAt = earliest(result.startedAt, value.startedAt)\n result.endedAt = latest(result.endedAt, value.endedAt)\n for (const refusal of value.refusals ?? []) {\n const previous = refusals.get(refusal.message)\n refusals.set(refusal.message, {\n count: (previous?.count ?? 0) + refusal.count,\n ordinal: Math.min(previous?.ordinal ?? contribution.ordinal, contribution.ordinal)\n })\n }\n }\n result.refusals = [...refusals].sort(([, left], [, right]) =>\n right.count - left.count || left.ordinal - right.ordinal\n )\n .map(([message, { count }]) => ({ message, count }))\n return result\n}\n\n/**\n * Combines adjacent digests without counting an identified call or checkpoint\n * twice. A later native fact replaces the earlier telemetry contribution.\n * Identity state is private and must stay with the in-memory digest; a plain\n * reconstructed Digest is treated as an already aggregated, unkeyed value.\n * @category constructors\n * @since 1.0.0\n */\nexport const combine = (earlier: Digest, later: Digest): Digest => {\n const left = stateOf(earlier)\n const right = stateOf(later)\n let contributions = left.contributions\n let indexes = left.indexes\n let contributionBytes = left.contributionBytes\n let accepted = HashMap.empty<string, Contribution>()\n const corrected = { ...earlier }\n for (const [key, value] of right.contributions) {\n const previous = HashMap.get(contributions, key)\n if (previous._tag === \"Some\" && (previous.value.authoritative || !value.authoritative)) continue\n if (previous._tag === \"Some\") {\n const old = previous.value.value\n const next = value.value\n for (const counter of counters) corrected[counter] += (next[counter] ?? 0) - (old[counter] ?? 0)\n } else accepted = HashMap.set(accepted, key, value)\n const contribution = {\n ...value,\n ordinal: previous._tag === \"Some\" ? previous.value.ordinal : left.length + value.ordinal\n }\n contributionBytes += encodedBytes([key, contribution]) -\n (previous._tag === \"Some\" ? encodedBytes([key, previous.value]) : 0)\n contributions = HashMap.set(contributions, key, contribution)\n indexes = indexContribution(indexes, previous._tag === \"Some\" ? previous.value : undefined, contribution)\n }\n const baseRefusals = new Map(left.baseRefusals)\n for (const [message, ordinal] of right.baseRefusals) {\n if (!baseRefusals.has(message)) baseRefusals.set(message, left.length + ordinal)\n }\n const incomingComplete = HashMap.size(accepted) === HashMap.size(right.contributions)\n const incoming = incomingComplete ? later : combinedFacts({ ...right, contributions: accepted })\n const state: DigestState = {\n base: combinePlain(left.base, right.base, right.writes),\n writes: {\n cause: left.writes.cause || right.writes.cause,\n finalOutput: left.writes.finalOutput || right.writes.finalOutput,\n parkedQuestion: left.writes.parkedQuestion || right.writes.parkedQuestion\n },\n baseSeatOrdinal: right.baseSeatOrdinal === undefined ? left.baseSeatOrdinal : left.length + right.baseSeatOrdinal,\n baseRefusals,\n indexes,\n contributions,\n contributionBytes,\n length: left.length + right.length\n }\n // Appending new identities (or replaying an existing one) should cost the\n // incoming range, not re-fold the entire retained ledger on every eviction.\n // Indexed timestamps and refusal positions handle native corrections without\n // re-scanning all identities. Refusal rendering costs distinct messages.\n const value = { ...combinePlain(corrected, incoming, right.writes) }\n value.startedAt = state.base.startedAt\n value.endedAt = state.base.endedAt\n if (indexes.timings?.min !== undefined) {\n value.startedAt = Math.min(value.startedAt ?? indexes.timings.min, indexes.timings.min)\n }\n if (indexes.timings?.max !== undefined) {\n value.endedAt = Math.max(value.endedAt ?? indexes.timings.max, indexes.timings.max)\n }\n const refusals = new Map(state.base.refusals.map((refusal) => [refusal.message, {\n count: refusal.count,\n ordinal: baseRefusals.get(refusal.message)!\n }]))\n for (const [message, tree] of indexes.refusals) {\n const previous = refusals.get(message)\n refusals.set(message, {\n count: (previous?.count ?? 0) + tree.size,\n ordinal: Math.min(previous?.ordinal ?? tree.first, tree.first)\n })\n }\n value.refusals = [...refusals].sort(([, a], [, b]) => b.count - a.count || a.ordinal - b.ordinal)\n .map(([message, { count }]) => ({ message, count }))\n return remember(value, state)\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA,qBAA8B;AAC9B,YAAuB;AACvB,oBAAgC;AAChC,wBAA4F;AAC5F,kBAA6B;AAC7B,0BAAgD;AAChD,uBAAkC;AAoBlC,IAAAA,qBAA0E;AAS1E,IAAAA,qBAA8B;AAuB9B,MAAM,cAAmC,IAAI,IAAI,6BAAc,UAAU,QAAQ;AAoDjF,MAAM,YAAiC,oBAAI,IAAI,CAAC,SAAS,QAAQ,aAAa,CAAC;AAWxE,MAAM,WAAW,CAAC,UACvB,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IAAI,QAAmC,CAAC;AAStG,MAAM,WAAW,CAAC,UAAuC,OAAO,UAAU,WAAW,QAAQ;AAEpG,MAAM,UAAU,qBAAO,GAAG,MAAM,KAAK;AAS9B,MAAM,WAAW,CAAC,UAAuC,OAAO,UAAU,WAAW,QAAQ;AAS7F,MAAM,SAAS,CAAC,UACrB,SAAS,SAAS,MAAM,OAAO,EAAE,EAAE,KAAK,MAAM;AAWzC,MAAM,YAAY,CAAC,SAAyB;AACjD,QAAM,QAAQ,KAAK,OAAO,QAAQ;AAClC,SAAO,QAAQ,IAAI,OAAO,KAAK,MAAM,GAAG,KAAK;AAC/C;AAiBO,MAAM,OAAO,CAAC,MAAc,UAA0B;AAC3D,MAAI,SAAS,EAAG,QAAO;AACvB,QAAM,SAAS,CAAC,GAAG,IAAI;AACvB,SAAO,OAAO,UAAU,QAAQ,OAAO,GAAG,OAAO,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;AAC/E;AAqEA,MAAM,WAA8C;AAAA,EAClD,6BAA6B;AAAA,IAC3B,OAAO;AAAA,IACP,OAAO,CAAC,aAAa,YAAY;AAC/B,kBAAY,SAAS;AACrB,kBAAY,OAAO,SAAS,QAAQ,IAAI,KAAK,YAAY;AAAA,IAC3D;AAAA,EACF;AAAA,EACA,+BAA+B;AAAA,IAC7B,OAAO;AAAA,IACP,OAAO,CAAC,aAAa,YAAY;AAC/B,YAAM,QAAQ,SAAS,QAAQ,KAAK;AACpC,kBAAY,eAAe,SAAS,MAAM,WAAW,KAAK;AAC1D,kBAAY,gBAAgB,SAAS,MAAM,YAAY,KAAK;AAC5D,YAAM,OAAO,SAAS,QAAQ,OAAO;AACrC,UAAI,SAAS,UAAa,OAAO,SAAS,IAAI,KAAK,OAAO,EAAG,aAAY,WAAW;AAAA,IACtF;AAAA,EACF;AAAA,EACA,mCAAmC;AAAA,IACjC,OAAO;AAAA,IACP,OAAO,CAAC,aAAa,YAAY;AAC/B,kBAAY,SAAS;AACrB,UAAI,UAAU,IAAI,SAAS,QAAQ,QAAQ,KAAK,EAAE,EAAG,aAAY,kBAAkB;AAAA,IACrF;AAAA,EACF;AAAA,EACA,0BAA0B;AAAA,IACxB,OAAO;AAAA,IACP,OAAO,CAAC,aAAa,YAAY;AAC/B,kBAAY,cAAc,SAAS,QAAQ,IAAI;AAAA,IACjD;AAAA,EACF;AAAA,EACA,8BAA8B;AAAA,IAC5B,OAAO;AAAA,IACP,OAAO,CAAC,aAAa,YAAY;AAC/B,kBAAY,iBAAiB,SAAS,QAAQ,QAAQ;AAAA,IACxD;AAAA,EACF;AACF;AAYO,MAAM,eAA+D,OAAO;AAAA,EACjF,OAAO,QAAQ,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,QAAQ,KAAK,CAAC;AACzE;AAYA,MAAM,YAAY,CAAC,WAA8D;AAC/E,QAAM,cAA2B;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,cAAc;AAAA,IACd,SAAS;AAAA,IACT,aAAa;AAAA,IACb,gBAAgB;AAAA,EAClB;AACA,QAAM,gBAAgB,oBAAI,IAAoB;AAC9C,MAAI;AACJ,MAAI;AACJ,MAAI;AAWJ,QAAM,UAAU,CAAC,OAAqB;AACpC,gBAAY,cAAc,SAAY,KAAK,KAAK,IAAI,WAAW,EAAE;AACjE,cAAU,YAAY,SAAY,KAAK,KAAK,IAAI,SAAS,EAAE;AAAA,EAC7D;AAEA,aAAW,aAAS,oCAAiB,MAAM,GAAG;AAC5C,uBAAmB,iBAAiB,QAAQ,kBAAkB,iBAAiB,UAAU,KAAK,CAAC;AAC/F,UAAM,UAAU,SAAS,MAAM,OAAO;AACtC,UAAM,KAAK,OAAO,KAAK;AACvB,UAAM,UAAU,OAAO,OAAO,UAAU,MAAM,IAAI,IAAI,SAAS,MAAM,IAAI,IAAI;AAC7E,QAAI,YAAY,QAAW;AAIzB,cAAQ,EAAE;AACV,UAAI,QAAQ,UAAU,mBAAe,6BAAU,KAAK,MAAM,OAAW,SAAQ,MAAM,aAAa,OAAO;AACvG;AAAA,IACF;AACA,QAAI,MAAM,SAAS,mCAAmC;AACpD,cAAQ,EAAE;AACV,UAAI,SAAS,QAAQ,OAAO,MAAM,WAAW;AAC3C,oBAAY,eAAe;AAC3B,cAAM,UAAU,UAAU,SAAS,QAAQ,OAAO,KAAK,iBAAiB;AACxE,sBAAc,IAAI,UAAU,cAAc,IAAI,OAAO,KAAK,KAAK,CAAC;AAAA,MAClE,WAAW,UAAU,IAAI,SAAS,QAAQ,QAAQ,KAAK,EAAE,GAAG;AAC1D,oBAAY,kBAAkB;AAAA,MAChC;AACA;AAAA,IACF;AACA,QAAI,MAAM,KAAK,WAAW,cAAc,GAAG;AACzC,YAAM,SAAS,MAAM,KAAK,MAAM,eAAe,MAAM;AACrD,UAAI,CAAC,YAAY,IAAI,MAAM,EAAG;AAC9B,cAAQ,EAAE;AACV,kBAAY,SAAS;AACrB,UAAI,WAAW,SAAU,aAAY,QAAQ,SAAS,QAAQ,KAAK;AAEnE,kBAAY,QAAQ,WAAW,YAAY,QAAQ,QAAQ,KAAK,IAAI,QAAQ,QAAQ;AAAA,IACtF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,IAC7D,UAAU,CAAC,GAAG,cAAc,QAAQ,CAAC,EAClC,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,SAAS,MAAM,EAAE,EAC9C,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,KAAK;AAAA,IACjD;AAAA,IACA;AAAA,EACF;AACF;AAEA,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,MAAM,oBAAoB,CAAC,WAAsC;AAAA,EAC/D,GAAG,OAAO,YAAY,SAAS,OAAO,CAAC,YAAY,MAAM,OAAO,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,MAAM,OAAO,CAAC,CAAC,CAAC;AAAA,EACpH,GAAI,MAAM,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,MAAM,KAAK;AAAA,EACvD,GAAI,MAAM,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,MAAM,UAAU;AAAA,EACtE,GAAI,MAAM,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,MAAM,QAAQ;AAAA,EAChE,GAAI,MAAM,SAAS,WAAW,IAAI,CAAC,IAAI,EAAE,UAAU,MAAM,SAAS;AACpE;AAyBA,MAAM,eAAe,OAAgB,EAAE,SAAS,QAAW,UAAU,sBAAQ,MAAM,GAAG,cAAc,EAAE;AACtG,MAAM,oBAAoB,CAAC,SAAiB,SAC1C,SAAS,SAAY,QAAI,kCAAa,OAAO,IAAI,KAAK;AAExD,MAAM,oBAAoB,CAAC,SAAkB,UAAoC,SAAgC;AAC/G,MAAI,WAAW,QAAQ;AACvB,MAAI,eAAe,QAAQ;AAC3B,aAAW,WAAW,UAAU,MAAM,YAAY,CAAC,GAAG;AACpD,QAAI,KAAK,MAAM,UAAU,KAAK,CAAC,WAAW,OAAO,YAAY,QAAQ,OAAO,EAAG;AAE/E,UAAM,UAAU,sBAAQ,UAAU,UAAU,QAAQ,OAAO;AAC3D,UAAM,OAAO,YAAY,OAAO,SAAS,KAAK,OAAO;AACrD,oBAAgB,kBAAkB,QAAQ,SAAS,IAAI,IAAI,kBAAkB,QAAQ,SAAS,OAAO;AACrG,eAAW,SAAS,SAChB,sBAAQ,OAAO,UAAU,QAAQ,OAAO,IACxC,sBAAQ,IAAI,UAAU,QAAQ,SAAS,IAAI;AAAA,EACjD;AACA,aAAW,WAAW,KAAK,MAAM,YAAY,CAAC,GAAG;AAC/C,QAAI,UAAU,MAAM,UAAU,KAAK,CAAC,WAAW,OAAO,YAAY,QAAQ,OAAO,EAAG;AACpF,UAAM,MAAM,sBAAQ,IAAI,UAAU,QAAQ,OAAO;AACjD,UAAM,UAAU,IAAI,SAAS,SAAS,IAAI,QAAQ;AAClD,UAAM,OAAO,YAAY,IAAI,SAAS,KAAK,OAAO;AAClD,oBAAgB,kBAAkB,QAAQ,SAAS,IAAI,IAAI,kBAAkB,QAAQ,SAAS,OAAO;AACrG,eAAW,sBAAQ,IAAI,UAAU,QAAQ,SAAS,IAAI;AAAA,EACxD;AACA,SAAO;AAAA,IACL,SAAS,YAAY,IAAI,QAAQ,SAAS,KAAK,SAAS,KAAK,MAAM,WAAW,KAAK,MAAM,OAAO;AAAA,IAChG;AAAA,IACA;AAAA,EACF;AACF;AAIA,MAAM,eAAe,oBAAI,QAA6B;AACtD,MAAM,WAAW,CAAC,OAAe,UAA+B;AAC9D,eAAa,IAAI,OAAO,KAAK;AAC7B;AAAA,IACE;AAAA,QACA,kCAAa,KAAK,KAAK,UAAU,MAAM,OAAO,QAAI,kCAAa,MAAM,IAAI,KACvE,MAAM,qBAAqB,MAAM,QAAQ,SAAS,SAAS,KAAK,MAAM,QAAQ,mBAAe,kCAAa;AAAA,MACxG,QAAQ,MAAM;AAAA,MACd,iBAAiB,MAAM;AAAA,MACvB,cAAc,CAAC,GAAG,MAAM,YAAY;AAAA,MACpC,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACL;AACA,SAAO;AACT;AAYO,MAAM,iBAAiB,CAAC,OAAmC,UAChE,UAAU,UAAa,MAAM,UAAU,UAAa,MAAM,UAAU,SAAS,MAAM,KAAK,WAAW,cAAc;AAY5G,MAAM,SAAS,CAAC,QAAmD,UAA2B;AACnG,MAAI,UAAU,UAAa,OAAO,KAAK,CAAC,UAAU,eAAe,OAAO,KAAK,CAAC,GAAG;AAC/E,aAAS,OAAO,OAAO,CAAC,UAAU,CAAC,eAAe,OAAO,KAAK,CAAC;AAAA,EACjE;AACA,MAAI,gBAAgB,sBAAQ,MAA4B;AACxD,MAAI,UAAU,aAAa;AAC3B,MAAI,oBAAoB;AACxB,QAAM,aAAgD,CAAC;AACvD,QAAM,eAAe,oBAAI,IAAoB;AAC7C,QAAM,SAAS,EAAE,OAAO,OAAO,aAAa,OAAO,gBAAgB,MAAM;AACzE,MAAI;AACJ,aAAW,CAAC,SAAS,KAAK,KAAK,OAAO,QAAQ,GAAG;AAC/C,UAAM,UAAM,gCAAa,KAAK;AAC9B,QAAI,QAAQ,QAAW;AACrB,iBAAW,KAAK,KAAK;AACrB,UAAI,MAAM,SAAS,qBAAsB,QAAO,QAAQ;AACxD,cAAI,6BAAU,KAAK,MAAM,QAAW;AAClC,YAAI,MAAM,SAAS,yBAA0B,QAAO,cAAc;AAClE,YAAI,MAAM,SAAS,6BAA8B,QAAO,iBAAiB;AAAA,MAC3E;AACA,YAAM,UAAU,SAAS,MAAM,OAAO;AACtC,UAAI,MAAM,SAAS,+BAA+B,SAAS,QAAQ,IAAI,MAAM,OAAW,mBAAkB;AAC1G,UAAI,MAAM,SAAS,qCAAqC,QAAQ,YAAY,WAAW;AACrF,cAAM,UAAU,UAAU,SAAS,QAAQ,OAAO,KAAK,iBAAiB;AACxE,YAAI,CAAC,aAAa,IAAI,OAAO,EAAG,cAAa,IAAI,SAAS,OAAO;AAAA,MACnE;AACA;AAAA,IACF;AACA,UAAM,aAAS,mCAAgB,KAAK,SAAK,mCAAgB,KAAK;AAC9D,UAAM,WAAW,sBAAQ,IAAI,eAAe,GAAG;AAC/C,QAAI,SAAS,SAAS,WAAW,SAAS,MAAM,iBAAiB,WAAW,QAAY;AACxF,UAAM,eAAe;AAAA,MACnB,SAAS,SAAS,SAAS,SAAS,SAAS,MAAM,UAAU;AAAA,MAC7D,eAAe,WAAW;AAAA,MAC1B,OAAO,kBAAkB,UAAU,CAAC,UAAU,KAAK,CAAC,CAAC;AAAA,IACvD;AACA,6BAAqB,kCAAa,CAAC,KAAK,YAAY,CAAC,KAClD,SAAS,SAAS,aAAS,kCAAa,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI;AACpE,oBAAgB,sBAAQ,IAAI,eAAe,KAAK,YAAY;AAC5D,cAAU,kBAAkB,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAW,YAAY;AAAA,EAC1G;AACA,QAAM,QAAQ,UAAU,MAAM;AAC9B,SAAO,SAAS,OAAO;AAAA,IACrB,MAAM,WAAW,WAAW,OAAO,SAAS,QAAQ,UAAU,UAAU;AAAA,IACxE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,OAAO;AAAA,EACjB,CAAC;AACH;AAYO,MAAM,WAAW,CAAC,UAAyD;AAChF,MAAI,MAAM,cAAc,UAAa,MAAM,YAAY,OAAW,QAAO;AACzE,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,OAAO,MAAM,UAAU,MAAM,aAAa,GAAI,CAAC;AAChF,SAAO,UAAU,KAAK,GAAG,OAAO,MAAM,GAAG,KAAK,MAAM,UAAU,EAAE,CAAC,KAAK,OAAO,UAAU,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAC7G;AAUO,MAAM,MAAM,CAAC,UAA0B,IAAI,MAAM,QAAQ,SAAS,IAAI,IAAI,CAAC,CAAC;AAO5E,MAAM,iBAAiB,CAAC,UAC7B,MAAM,eAAe,iBAAiB,OAAO,MAAM,gBAAgB;AAa9D,MAAM,UAAU,CAAC,UAA0B;AAChD,QAAM,SAAS,MAAM,UAAU;AAC/B,QAAM,SAAS,eAAe,KAAK;AACnC,MAAI,WAAW,UAAU;AACvB,WAAO,MAAM,UAAU,SACnB,mDACA,iBAAY,KAAK,UAAU,MAAM,KAAK,GAAG,GAAG,CAAC;AAAA,EACnD;AACA,MAAI,WAAW,oBAAoB;AACjC,WAAO,MAAM,mBAAmB,SAC5B,yDACA,iCAA4B,KAAK,MAAM,gBAAgB,EAAE,CAAC;AAAA,EAChE;AACA,MAAI,WAAW,eAAe,MAAM,QAAQ,KAAK,MAAM,mBAAmB,GAAG;AAC3E,WAAO,6BAAwB,MAAM,KAAK;AAAA,EAC5C;AACA,MAAI,WAAW,eAAe,WAAW,UAAa,OAAO,SAAS,GAAG;AACvE,WAAO,oBAAe,KAAK,UAAU,MAAM,GAAG,GAAG,CAAC;AAAA,EACpD;AACA,SAAO;AACT;AAEA,MAAM,QAAQ,CAAC,SAAyB,KAAK,OAAO,EAAE;AAsB/C,MAAM,SAAS,CAAC,SAAkB,UAA0B;AACjE,QAAM,SAAS,eAAe,KAAK;AACnC,QAAM,QAAuB;AAAA,IAC3B,GAAG,MAAM,SAAS,CAAC,GAAG,QAAQ,KAAK,CAAC;AAAA,IACpC,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,KAAK,GAAG,QAAQ,WAAW,SAAY,KAAK,SAAM,QAAQ,MAAM,EAAE,GAC1F,MAAM,SAAS,SAAY,KAAK,SAAM,MAAM,IAAI,EAClD,SAAM,SAAS,KAAK,CAAC;AAAA,IACrB,GACE,MAAM,UAAU,CAClB,GAAG,MAAM,KAAK,eAAY,MAAM,KAAK,WAAW,MAAM,WAAW,wBAAqB,MAAM,cAAc,IAAI,MAAM,cAAc;AAAA,IAClI,GAAG,MAAM,QAAQ,CAAC,GAAG,MAAM,WAAW,SAAS,MAAM,YAAY;AAAA,IACjE,GAAI,MAAM,UAAU,IAAI,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,EACvE;AACA,aAAW,CAAC,OAAO,OAAO,KAAK,MAAM,SAAS,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG;AACnE,UAAM,KAAK,GAAG,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC,GAAG,QAAQ,KAAK,QAAK,KAAK,QAAQ,SAAS,GAAG,CAAC,EAAE;AAAA,EACrG;AACA,MAAI,MAAM,UAAU,OAAW,OAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,KAAK,UAAU,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE;AACjG,MAAI,WAAW,UAAa,OAAO,SAAS,GAAG;AAC7C,UAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,KAAK,UAAU,MAAM,GAAG,GAAG,CAAC,EAAE;AAAA,EAChE;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AAQO,MAAM,cAAc,MAAc,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,CAAC,MAA0B,UAC1C,SAAS,SAAY,QAAQ,UAAU,SAAY,OAAO,KAAK,IAAI,MAAM,KAAK;AAChF,MAAM,SAAS,CAAC,MAA0B,UACxC,SAAS,SAAY,QAAQ,UAAU,SAAY,OAAO,KAAK,IAAI,MAAM,KAAK;AAmBhF,MAAM,eAAe,CAAC,SAAiB,OAAe,WAA0C;AAC9F,QAAM,SAAS,oBAAI,IAAoB;AACvC,aAAW,WAAW,CAAC,GAAG,QAAQ,UAAU,GAAG,MAAM,QAAQ,GAAG;AAC9D,WAAO,IAAI,QAAQ,UAAU,OAAO,IAAI,QAAQ,OAAO,KAAK,KAAK,QAAQ,KAAK;AAAA,EAChF;AACA,SAAO;AAAA,IACL,QAAQ,MAAM,UAAU,QAAQ;AAAA,IAChC,OAAO,OAAO,QAAQ,MAAM,QAAQ,QAAQ;AAAA,IAC5C,OAAO,OAAO,SAAU,MAAM,WAAW,UAAa,MAAM,WAAW,WAAY,MAAM,QAAQ,QAAQ;AAAA,IACzG,MAAM,MAAM,QAAQ,QAAQ;AAAA,IAC5B,OAAO,QAAQ,QAAQ,MAAM;AAAA,IAC7B,OAAO,QAAQ,QAAQ,MAAM;AAAA,IAC7B,aAAa,QAAQ,cAAc,MAAM;AAAA,IACzC,gBAAgB,QAAQ,iBAAiB,MAAM;AAAA,IAC/C,gBAAgB,QAAQ,iBAAiB,MAAM;AAAA,IAC/C,UAAU,CAAC,GAAG,OAAO,QAAQ,CAAC,EAC3B,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,SAAS,MAAM,EAAE,EAC9C,KAAK,CAAC,MAAM,UAAU,MAAM,QAAQ,KAAK,KAAK;AAAA,IACjD,aAAa,QAAQ,cAAc,MAAM;AAAA,IACzC,cAAc,QAAQ,eAAe,MAAM;AAAA,IAC3C,SAAS,QAAQ,UAAU,MAAM;AAAA,IACjC,aAAa,OAAO,cAAc,MAAM,cAAc,QAAQ;AAAA,IAC9D,kBAAkB,iBAAiB,QAAQ,QAAQ,kBAAkB,MAAM,gBAAgB;AAAA,IAC3F,gBAAgB,OAAO,iBAAiB,MAAM,iBAAiB,QAAQ;AAAA,IACvE,WAAW,SAAS,QAAQ,WAAW,MAAM,SAAS;AAAA,IACtD,SAAS,OAAO,QAAQ,SAAS,MAAM,OAAO;AAAA,EAChD;AACF;AAEA,MAAM,UAAU,CAAC,UACf,aAAa,IAAI,KAAK,KAAK;AAAA,EACzB,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,OAAO,MAAM,UAAU;AAAA,IACvB,aAAa,MAAM,gBAAgB;AAAA,IACnC,gBAAgB,MAAM,mBAAmB;AAAA,EAC3C;AAAA,EACA,iBAAiB,MAAM,SAAS,SAAY,SAAY;AAAA,EACxD,cAAc,IAAI,IAAI,MAAM,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC;AAAA,EAC3E,SAAS,aAAa;AAAA,EACtB,eAAe,sBAAQ,MAAM;AAAA,EAC7B,mBAAmB;AAAA,EACnB,QAAQ;AACV;AAGF,MAAM,gBAAgB,CAAC,UAA+B;AACpD,QAAM,SAAS,EAAE,GAAG,MAAM,KAAK;AAC/B,MAAI,cAAc,MAAM,mBAAmB;AAC3C,QAAM,WAAW,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,SAAS;AAAA,IAC9E,OAAO,QAAQ;AAAA,IACf,SAAS,MAAM,aAAa,IAAI,QAAQ,OAAO;AAAA,EACjD,CAAC,CAAC,CAAC;AACH,aAAW,CAAC,EAAE,YAAY,KAAK,MAAM,eAAe;AAClD,UAAM,QAAQ,aAAa;AAC3B,eAAW,OAAO,SAAU,QAAO,GAAG,KAAK,MAAM,GAAG,KAAK;AACzD,QAAI,MAAM,SAAS,UAAa,aAAa,UAAU,aAAa;AAClE,aAAO,OAAO,MAAM;AACpB,oBAAc,aAAa;AAAA,IAC7B;AACA,WAAO,YAAY,SAAS,OAAO,WAAW,MAAM,SAAS;AAC7D,WAAO,UAAU,OAAO,OAAO,SAAS,MAAM,OAAO;AACrD,eAAW,WAAW,MAAM,YAAY,CAAC,GAAG;AAC1C,YAAM,WAAW,SAAS,IAAI,QAAQ,OAAO;AAC7C,eAAS,IAAI,QAAQ,SAAS;AAAA,QAC5B,QAAQ,UAAU,SAAS,KAAK,QAAQ;AAAA,QACxC,SAAS,KAAK,IAAI,UAAU,WAAW,aAAa,SAAS,aAAa,OAAO;AAAA,MACnF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,WAAW,CAAC,GAAG,QAAQ,EAAE;AAAA,IAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,MACtD,MAAM,QAAQ,KAAK,SAAS,KAAK,UAAU,MAAM;AAAA,EACnD,EACG,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE;AACrD,SAAO;AACT;AAUO,MAAM,UAAU,CAAC,SAAiB,UAA0B;AACjE,QAAM,OAAO,QAAQ,OAAO;AAC5B,QAAM,QAAQ,QAAQ,KAAK;AAC3B,MAAI,gBAAgB,KAAK;AACzB,MAAI,UAAU,KAAK;AACnB,MAAI,oBAAoB,KAAK;AAC7B,MAAI,WAAW,sBAAQ,MAA4B;AACnD,QAAM,YAAY,EAAE,GAAG,QAAQ;AAC/B,aAAW,CAAC,KAAKC,MAAK,KAAK,MAAM,eAAe;AAC9C,UAAM,WAAW,sBAAQ,IAAI,eAAe,GAAG;AAC/C,QAAI,SAAS,SAAS,WAAW,SAAS,MAAM,iBAAiB,CAACA,OAAM,eAAgB;AACxF,QAAI,SAAS,SAAS,QAAQ;AAC5B,YAAM,MAAM,SAAS,MAAM;AAC3B,YAAM,OAAOA,OAAM;AACnB,iBAAW,WAAW,SAAU,WAAU,OAAO,MAAM,KAAK,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK;AAAA,IAChG,MAAO,YAAW,sBAAQ,IAAI,UAAU,KAAKA,MAAK;AAClD,UAAM,eAAe;AAAA,MACnB,GAAGA;AAAA,MACH,SAAS,SAAS,SAAS,SAAS,SAAS,MAAM,UAAU,KAAK,SAASA,OAAM;AAAA,IACnF;AACA,6BAAqB,kCAAa,CAAC,KAAK,YAAY,CAAC,KAClD,SAAS,SAAS,aAAS,kCAAa,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI;AACpE,oBAAgB,sBAAQ,IAAI,eAAe,KAAK,YAAY;AAC5D,cAAU,kBAAkB,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAW,YAAY;AAAA,EAC1G;AACA,QAAM,eAAe,IAAI,IAAI,KAAK,YAAY;AAC9C,aAAW,CAAC,SAAS,OAAO,KAAK,MAAM,cAAc;AACnD,QAAI,CAAC,aAAa,IAAI,OAAO,EAAG,cAAa,IAAI,SAAS,KAAK,SAAS,OAAO;AAAA,EACjF;AACA,QAAM,mBAAmB,sBAAQ,KAAK,QAAQ,MAAM,sBAAQ,KAAK,MAAM,aAAa;AACpF,QAAM,WAAW,mBAAmB,QAAQ,cAAc,EAAE,GAAG,OAAO,eAAe,SAAS,CAAC;AAC/F,QAAM,QAAqB;AAAA,IACzB,MAAM,aAAa,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,IACtD,QAAQ;AAAA,MACN,OAAO,KAAK,OAAO,SAAS,MAAM,OAAO;AAAA,MACzC,aAAa,KAAK,OAAO,eAAe,MAAM,OAAO;AAAA,MACrD,gBAAgB,KAAK,OAAO,kBAAkB,MAAM,OAAO;AAAA,IAC7D;AAAA,IACA,iBAAiB,MAAM,oBAAoB,SAAY,KAAK,kBAAkB,KAAK,SAAS,MAAM;AAAA,IAClG;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,KAAK,SAAS,MAAM;AAAA,EAC9B;AAKA,QAAM,QAAQ,EAAE,GAAG,aAAa,WAAW,UAAU,MAAM,MAAM,EAAE;AACnE,QAAM,YAAY,MAAM,KAAK;AAC7B,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,QAAQ,SAAS,QAAQ,QAAW;AACtC,UAAM,YAAY,KAAK,IAAI,MAAM,aAAa,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,GAAG;AAAA,EACxF;AACA,MAAI,QAAQ,SAAS,QAAQ,QAAW;AACtC,UAAM,UAAU,KAAK,IAAI,MAAM,WAAW,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,GAAG;AAAA,EACpF;AACA,QAAM,WAAW,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,SAAS;AAAA,IAC9E,OAAO,QAAQ;AAAA,IACf,SAAS,aAAa,IAAI,QAAQ,OAAO;AAAA,EAC3C,CAAC,CAAC,CAAC;AACH,aAAW,CAAC,SAAS,IAAI,KAAK,QAAQ,UAAU;AAC9C,UAAM,WAAW,SAAS,IAAI,OAAO;AACrC,aAAS,IAAI,SAAS;AAAA,MACpB,QAAQ,UAAU,SAAS,KAAK,KAAK;AAAA,MACrC,SAAS,KAAK,IAAI,UAAU,WAAW,KAAK,OAAO,KAAK,KAAK;AAAA,IAC/D,CAAC;AAAA,EACH;AACA,QAAM,WAAW,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAC7F,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE;AACrD,SAAO,SAAS,OAAO,KAAK;AAC9B;",
|
|
6
|
+
"names": ["import_callEvents", "value"]
|
|
7
|
+
}
|