@mastra/core 1.0.0-beta.0 → 1.0.0-beta.10
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 +1136 -0
- package/dist/agent/agent-legacy.d.ts +19 -22
- package/dist/agent/agent-legacy.d.ts.map +1 -1
- package/dist/agent/agent-types.test-d.d.ts +2 -0
- package/dist/agent/agent-types.test-d.d.ts.map +1 -0
- package/dist/agent/agent.d.ts +6 -6
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.types.d.ts +6 -4
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +9 -9
- package/dist/agent/index.js +2 -2
- package/dist/agent/message-list/index.cjs +3 -3
- package/dist/agent/message-list/index.d.ts +60 -3
- package/dist/agent/message-list/index.d.ts.map +1 -1
- package/dist/agent/message-list/index.js +1 -1
- package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
- package/dist/agent/message-list/prompt/convert-file.d.ts +1 -1
- package/dist/agent/message-list/prompt/convert-file.d.ts.map +1 -1
- package/dist/agent/message-list/prompt/download-assets.d.ts.map +1 -1
- package/dist/agent/save-queue/index.d.ts +3 -1
- package/dist/agent/save-queue/index.d.ts.map +1 -1
- package/dist/agent/test-utils.d.ts +37 -0
- package/dist/agent/test-utils.d.ts.map +1 -1
- package/dist/agent/trip-wire.d.ts.map +1 -1
- package/dist/agent/types.d.ts +21 -6
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/utils.d.ts +3 -3
- package/dist/agent/utils.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/index.d.ts +9 -7
- package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +3 -3
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +6 -5
- package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +2 -1
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/schema.d.ts +8 -8
- package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts +11 -1
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
- package/dist/base.cjs +2 -2
- package/dist/base.js +1 -1
- package/dist/bundler/index.cjs +2 -2
- package/dist/bundler/index.js +1 -1
- package/dist/cache/index.cjs +3 -3
- package/dist/cache/index.js +1 -1
- package/dist/{chunk-4CDL2QJT.js → chunk-267YOF47.js} +121 -36
- package/dist/chunk-267YOF47.js.map +1 -0
- package/dist/{chunk-OJNJA5ZI.js → chunk-3CKZSDTQ.js} +3 -3
- package/dist/{chunk-OJNJA5ZI.js.map → chunk-3CKZSDTQ.js.map} +1 -1
- package/dist/{chunk-JV2KH24V.js → chunk-3GKKHF36.js} +693 -375
- package/dist/chunk-3GKKHF36.js.map +1 -0
- package/dist/{chunk-TQTAMPSC.js → chunk-3N3QE4ZK.js} +3 -3
- package/dist/chunk-3N3QE4ZK.js.map +1 -0
- package/dist/{chunk-QUKUN6NR.cjs → chunk-4JKEUSCC.cjs} +107 -7
- package/dist/chunk-4JKEUSCC.cjs.map +1 -0
- package/dist/{chunk-XEVG546F.js → chunk-4Q3Z6QRE.js} +178 -12
- package/dist/chunk-4Q3Z6QRE.js.map +1 -0
- package/dist/{chunk-CBAB7GOD.cjs → chunk-6BJ7XHRH.cjs} +2 -2
- package/dist/{chunk-CBAB7GOD.cjs.map → chunk-6BJ7XHRH.cjs.map} +1 -1
- package/dist/{chunk-26SQQNMU.js → chunk-6CYYFT4O.js} +11389 -8193
- package/dist/chunk-6CYYFT4O.js.map +1 -0
- package/dist/{chunk-32CTMD2C.js → chunk-6ONQWD6S.js} +1221 -347
- package/dist/chunk-6ONQWD6S.js.map +1 -0
- package/dist/{chunk-J7O6WENZ.cjs → chunk-6TBWJV35.js} +5 -5
- package/dist/chunk-6TBWJV35.js.map +1 -0
- package/dist/chunk-6XCINXZ7.cjs +194 -0
- package/dist/chunk-6XCINXZ7.cjs.map +1 -0
- package/dist/{chunk-E7K4FTLN.cjs → chunk-72YCRTEX.cjs} +18 -2
- package/dist/chunk-72YCRTEX.cjs.map +1 -0
- package/dist/{chunk-BXOL277H.cjs → chunk-7THRV5KZ.cjs} +762 -27
- package/dist/chunk-7THRV5KZ.cjs.map +1 -0
- package/dist/{chunk-76K3IYWM.js → chunk-ADADLFDR.js} +3 -3
- package/dist/{chunk-76K3IYWM.js.map → chunk-ADADLFDR.js.map} +1 -1
- package/dist/{chunk-DSNPWVIG.cjs → chunk-AF74UXR5.cjs} +4 -3
- package/dist/chunk-AF74UXR5.cjs.map +1 -0
- package/dist/{chunk-QCQLOMJM.cjs → chunk-BCRRHJGV.cjs} +206 -65
- package/dist/chunk-BCRRHJGV.cjs.map +1 -0
- package/dist/chunk-BWYU7D33.js +192 -0
- package/dist/chunk-BWYU7D33.js.map +1 -0
- package/dist/{chunk-MV7KHWUT.js → chunk-BXONP7HX.js} +391 -15
- package/dist/chunk-BXONP7HX.js.map +1 -0
- package/dist/chunk-CDRYT2A5.js +513 -0
- package/dist/chunk-CDRYT2A5.js.map +1 -0
- package/dist/{chunk-S5MJLXMG.cjs → chunk-CZEJQSWB.cjs} +481 -124
- package/dist/chunk-CZEJQSWB.cjs.map +1 -0
- package/dist/chunk-DD2VNRQM.js +62 -0
- package/dist/chunk-DD2VNRQM.js.map +1 -0
- package/dist/{chunk-KEXGB7FK.cjs → chunk-DGV2FWB4.cjs} +7 -7
- package/dist/{chunk-KEXGB7FK.cjs.map → chunk-DGV2FWB4.cjs.map} +1 -1
- package/dist/{chunk-Y63IFHEZ.cjs → chunk-EOPEDKLG.cjs} +4 -4
- package/dist/chunk-EOPEDKLG.cjs.map +1 -0
- package/dist/{chunk-UIZSWUKP.js → chunk-F2GAJSBI.js} +105 -7
- package/dist/chunk-F2GAJSBI.js.map +1 -0
- package/dist/{chunk-VOY2RXOC.cjs → chunk-G4IFCTL5.cjs} +182 -15
- package/dist/chunk-G4IFCTL5.cjs.map +1 -0
- package/dist/chunk-KJBMTK5B.cjs +64 -0
- package/dist/chunk-KJBMTK5B.cjs.map +1 -0
- package/dist/{chunk-S6URFGCZ.js → chunk-LSHPJWM5.js} +3 -3
- package/dist/{chunk-S6URFGCZ.js.map → chunk-LSHPJWM5.js.map} +1 -1
- package/dist/chunk-MGCGWPQJ.cjs +275 -0
- package/dist/chunk-MGCGWPQJ.cjs.map +1 -0
- package/dist/chunk-MRFUISXC.cjs +4981 -0
- package/dist/chunk-MRFUISXC.cjs.map +1 -0
- package/dist/chunk-MSZP3FNH.cjs +518 -0
- package/dist/chunk-MSZP3FNH.cjs.map +1 -0
- package/dist/{chunk-KJ2SW6VA.js → chunk-NRUZYMHE.js} +4 -3
- package/dist/chunk-NRUZYMHE.js.map +1 -0
- package/dist/{chunk-7SKXKUYT.js → chunk-NUA6TSRD.js} +752 -17
- package/dist/chunk-NUA6TSRD.js.map +1 -0
- package/dist/chunk-OEIVMCWX.js +4959 -0
- package/dist/chunk-OEIVMCWX.js.map +1 -0
- package/dist/{chunk-VJUZZB2I.js → chunk-OIDPIW42.js} +26 -11
- package/dist/chunk-OIDPIW42.js.map +1 -0
- package/dist/{chunk-QUZGDSWE.cjs → chunk-OYIDRI3A.cjs} +32 -17
- package/dist/chunk-OYIDRI3A.cjs.map +1 -0
- package/dist/{chunk-YIK3ASEG.cjs → chunk-P2D2VO2O.cjs} +1226 -350
- package/dist/chunk-P2D2VO2O.cjs.map +1 -0
- package/dist/{chunk-L7XKOKOW.js → chunk-PK2A5WBG.js} +472 -125
- package/dist/chunk-PK2A5WBG.js.map +1 -0
- package/dist/{chunk-X7JMA3IY.js → chunk-PSCMWPLC.js} +2 -2
- package/dist/{chunk-X7JMA3IY.js.map → chunk-PSCMWPLC.js.map} +1 -1
- package/dist/{chunk-WM6CK2F3.cjs → chunk-QD3UWFAV.cjs} +130 -48
- package/dist/chunk-QD3UWFAV.cjs.map +1 -0
- package/dist/{chunk-FD734TPS.cjs → chunk-SL7Q6IZF.cjs} +11425 -8211
- package/dist/chunk-SL7Q6IZF.cjs.map +1 -0
- package/dist/{chunk-ECFXGXWO.cjs → chunk-SSPUH2N7.cjs} +693 -375
- package/dist/chunk-SSPUH2N7.cjs.map +1 -0
- package/dist/{chunk-BMAFVZ2D.cjs → chunk-T2VLUFGG.cjs} +4 -4
- package/dist/{chunk-BMAFVZ2D.cjs.map → chunk-T2VLUFGG.cjs.map} +1 -1
- package/dist/chunk-THZTRBFS.js +268 -0
- package/dist/chunk-THZTRBFS.js.map +1 -0
- package/dist/{chunk-Y6ROD72V.cjs → chunk-UIGRFDO6.cjs} +4 -4
- package/dist/{chunk-Y6ROD72V.cjs.map → chunk-UIGRFDO6.cjs.map} +1 -1
- package/dist/{chunk-GRBGQ2GE.js → chunk-UVHSM2GU.cjs} +9 -3
- package/dist/chunk-UVHSM2GU.cjs.map +1 -0
- package/dist/{chunk-GGYKYORQ.cjs → chunk-WX2DLWXF.cjs} +407 -22
- package/dist/chunk-WX2DLWXF.cjs.map +1 -0
- package/dist/{chunk-P6APHXPZ.js → chunk-XRJQ5ZA7.js} +179 -38
- package/dist/chunk-XRJQ5ZA7.js.map +1 -0
- package/dist/{chunk-KIZIOFZC.js → chunk-Y36Y5MTD.js} +17 -3
- package/dist/chunk-Y36Y5MTD.js.map +1 -0
- package/dist/{chunk-VV753WCB.cjs → chunk-YWMMBIOM.cjs} +21 -20
- package/dist/chunk-YWMMBIOM.cjs.map +1 -0
- package/dist/{chunk-BU4IAJWF.js → chunk-Z57R5WS4.js} +16 -15
- package/dist/chunk-Z57R5WS4.js.map +1 -0
- package/dist/deployer/index.cjs +2 -2
- package/dist/deployer/index.js +1 -1
- package/dist/di/index.cjs +10 -2
- package/dist/di/index.d.ts +1 -1
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +1 -1
- package/dist/evals/base.d.ts +10 -2
- package/dist/evals/base.d.ts.map +1 -1
- package/dist/evals/base.test-utils.d.ts +25 -25
- package/dist/evals/index.cjs +9 -9
- package/dist/evals/index.js +2 -2
- package/dist/evals/scoreTraces/index.cjs +7 -6
- package/dist/evals/scoreTraces/index.cjs.map +1 -1
- package/dist/evals/scoreTraces/index.js +4 -3
- package/dist/evals/scoreTraces/index.js.map +1 -1
- package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
- package/dist/evals/types.d.ts +25 -24
- package/dist/evals/types.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/integration/index.cjs +2 -2
- package/dist/integration/index.js +1 -1
- package/dist/llm/index.cjs +30 -10
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +5 -1
- package/dist/llm/model/aisdk/v5/model.d.ts +47 -0
- package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -0
- package/dist/llm/model/gateway-resolver.d.ts.map +1 -1
- package/dist/llm/model/gateways/azure.d.ts +36 -0
- package/dist/llm/model/gateways/azure.d.ts.map +1 -0
- package/dist/llm/model/gateways/base.d.ts +9 -4
- package/dist/llm/model/gateways/base.d.ts.map +1 -1
- package/dist/llm/model/gateways/constants.d.ts.map +1 -1
- package/dist/llm/model/gateways/index.d.ts +4 -1
- package/dist/llm/model/gateways/index.d.ts.map +1 -1
- package/dist/llm/model/gateways/models-dev.d.ts +3 -2
- package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
- package/dist/llm/model/gateways/netlify.d.ts +4 -3
- package/dist/llm/model/gateways/netlify.d.ts.map +1 -1
- package/dist/llm/model/is-v2-model.d.ts +3 -0
- package/dist/llm/model/is-v2-model.d.ts.map +1 -0
- package/dist/llm/model/model-method-from-agent.d.ts +4 -0
- package/dist/llm/model/model-method-from-agent.d.ts.map +1 -0
- package/dist/llm/model/model.d.ts.map +1 -1
- package/dist/llm/model/model.loop.d.ts +2 -2
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/llm/model/model.loop.types.d.ts +2 -0
- package/dist/llm/model/model.loop.types.d.ts.map +1 -1
- package/dist/llm/model/provider-options.d.ts +4 -1
- package/dist/llm/model/provider-options.d.ts.map +1 -1
- package/dist/llm/model/provider-registry.d.ts +11 -1
- package/dist/llm/model/provider-registry.d.ts.map +1 -1
- package/dist/llm/model/provider-types.generated.d.ts +520 -33
- package/dist/llm/model/registry-generator.d.ts +12 -0
- package/dist/llm/model/registry-generator.d.ts.map +1 -1
- package/dist/llm/model/resolve-model.d.ts +1 -1
- package/dist/llm/model/resolve-model.d.ts.map +1 -1
- package/dist/llm/model/router.d.ts +12 -5
- package/dist/llm/model/router.d.ts.map +1 -1
- package/dist/llm/model/shared.types.d.ts +10 -4
- package/dist/llm/model/shared.types.d.ts.map +1 -1
- package/dist/logger/constants.d.ts +1 -0
- package/dist/logger/constants.d.ts.map +1 -1
- package/dist/logger/index.cjs +11 -11
- package/dist/logger/index.js +2 -2
- package/dist/logger/transport.d.ts +1 -1
- package/dist/logger/transport.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/loop.d.ts.map +1 -1
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts +37 -0
- package/dist/loop/test-utils/MastraLanguageModelV2Mock.d.ts.map +1 -0
- package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
- package/dist/loop/test-utils/generateText.d.ts.map +1 -1
- package/dist/loop/test-utils/options.d.ts.map +1 -1
- package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
- package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
- package/dist/loop/test-utils/textStream.d.ts.map +1 -1
- package/dist/loop/test-utils/toUIMessageStream.d.ts.map +1 -1
- package/dist/loop/test-utils/tools.d.ts.map +1 -1
- package/dist/loop/test-utils/utils.d.ts +1 -1
- package/dist/loop/test-utils/utils.d.ts.map +1 -1
- package/dist/loop/types.d.ts +22 -5
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts +42 -42
- package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +29 -29
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +14 -14
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +1 -1
- package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts +44 -43
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/loop/workflows/run-state.d.ts +2 -2
- package/dist/loop/workflows/run-state.d.ts.map +1 -1
- package/dist/loop/workflows/schema.d.ts +14 -14
- package/dist/loop/workflows/stream.d.ts +1 -1
- package/dist/loop/workflows/stream.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +377 -12
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/mcp/index.cjs +4 -4
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.d.ts +4 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/types.d.ts +2 -2
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/memory/index.cjs +21 -327
- package/dist/memory/index.cjs.map +1 -1
- package/dist/memory/index.js +1 -327
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/memory.d.ts +28 -18
- package/dist/memory/memory.d.ts.map +1 -1
- package/dist/memory/mock.d.ts +15 -14
- package/dist/memory/mock.d.ts.map +1 -1
- package/dist/memory/types.d.ts +69 -11
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/models-dev-23RN2WHG.js +3 -0
- package/dist/{models-dev-7U4NRMM3.js.map → models-dev-23RN2WHG.js.map} +1 -1
- package/dist/models-dev-EO3SUIY2.cjs +12 -0
- package/dist/{models-dev-VKSAQPRK.cjs.map → models-dev-EO3SUIY2.cjs.map} +1 -1
- package/dist/netlify-GXJ5D5DD.js +3 -0
- package/dist/{netlify-42ZNWIDQ.js.map → netlify-GXJ5D5DD.js.map} +1 -1
- package/dist/netlify-KJLY3GFS.cjs +12 -0
- package/dist/{netlify-2IDXTNFW.cjs.map → netlify-KJLY3GFS.cjs.map} +1 -1
- package/dist/observability/index.cjs +16 -8
- package/dist/observability/index.js +1 -1
- package/dist/observability/types/tracing.d.ts +236 -13
- package/dist/observability/types/tracing.d.ts.map +1 -1
- package/dist/observability/utils.d.ts +47 -1
- package/dist/observability/utils.d.ts.map +1 -1
- package/dist/processors/index.cjs +35 -11
- package/dist/processors/index.d.ts +101 -23
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +1 -1
- package/dist/processors/memory/index.d.ts +7 -0
- package/dist/processors/memory/index.d.ts.map +1 -0
- package/dist/processors/memory/message-history.d.ts +43 -0
- package/dist/processors/memory/message-history.d.ts.map +1 -0
- package/dist/processors/memory/semantic-recall.d.ts +152 -0
- package/dist/processors/memory/semantic-recall.d.ts.map +1 -0
- package/dist/processors/memory/working-memory.d.ts +65 -0
- package/dist/processors/memory/working-memory.d.ts.map +1 -0
- package/dist/processors/processors/batch-parts.d.ts +1 -1
- package/dist/processors/processors/batch-parts.d.ts.map +1 -1
- package/dist/processors/processors/index.d.ts +2 -1
- package/dist/processors/processors/index.d.ts.map +1 -1
- package/dist/processors/processors/language-detector.d.ts +15 -1
- package/dist/processors/processors/language-detector.d.ts.map +1 -1
- package/dist/processors/processors/moderation.d.ts +15 -1
- package/dist/processors/processors/moderation.d.ts.map +1 -1
- package/dist/processors/processors/pii-detector.d.ts +15 -1
- package/dist/processors/processors/pii-detector.d.ts.map +1 -1
- package/dist/processors/processors/prompt-injection-detector.d.ts +15 -1
- package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
- package/dist/processors/processors/structured-output.d.ts +3 -2
- package/dist/processors/processors/structured-output.d.ts.map +1 -1
- package/dist/processors/processors/system-prompt-scrubber.d.ts +1 -1
- package/dist/processors/processors/system-prompt-scrubber.d.ts.map +1 -1
- package/dist/processors/processors/token-limiter.d.ts +22 -12
- package/dist/processors/processors/token-limiter.d.ts.map +1 -1
- package/dist/processors/processors/tool-call-filter.d.ts +28 -0
- package/dist/processors/processors/tool-call-filter.d.ts.map +1 -0
- package/dist/processors/processors/unicode-normalizer.d.ts +1 -1
- package/dist/processors/processors/unicode-normalizer.d.ts.map +1 -1
- package/dist/processors/runner.d.ts +35 -4
- package/dist/processors/runner.d.ts.map +1 -1
- package/dist/provider-registry-A7FILT6Q.cjs +40 -0
- package/dist/provider-registry-A7FILT6Q.cjs.map +1 -0
- package/dist/provider-registry-XM2YDI5X.js +3 -0
- package/dist/provider-registry-XM2YDI5X.js.map +1 -0
- package/dist/provider-registry.json +1135 -77
- package/dist/{registry-generator-MK63POJO.cjs → registry-generator-34SC4TAU.cjs} +23 -6
- package/dist/registry-generator-34SC4TAU.cjs.map +1 -0
- package/dist/{registry-generator-H4YNODDH.js → registry-generator-UMTNPBJX.js} +23 -7
- package/dist/registry-generator-UMTNPBJX.js.map +1 -0
- package/dist/relevance/index.cjs +2 -2
- package/dist/relevance/index.js +1 -1
- package/dist/request-context/index.cjs +10 -2
- package/dist/request-context/index.d.ts +26 -0
- package/dist/request-context/index.d.ts.map +1 -1
- package/dist/request-context/index.js +1 -1
- package/dist/server/auth.d.ts +11 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/base.d.ts +51 -0
- package/dist/server/base.d.ts.map +1 -0
- package/dist/server/composite-auth.d.ts +9 -0
- package/dist/server/composite-auth.d.ts.map +1 -0
- package/dist/server/index.cjs +124 -3
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +121 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/simple-auth.d.ts +27 -0
- package/dist/server/simple-auth.d.ts.map +1 -0
- package/dist/storage/base.d.ts +76 -3
- package/dist/storage/base.d.ts.map +1 -1
- package/dist/storage/constants.d.ts +3 -1
- package/dist/storage/constants.d.ts.map +1 -1
- package/dist/storage/domains/agents/base.d.ts +49 -0
- package/dist/storage/domains/agents/base.d.ts.map +1 -0
- package/dist/storage/domains/agents/index.d.ts +3 -0
- package/dist/storage/domains/agents/index.d.ts.map +1 -0
- package/dist/storage/domains/agents/inmemory.d.ts +22 -0
- package/dist/storage/domains/agents/inmemory.d.ts.map +1 -0
- package/dist/storage/domains/index.d.ts +1 -0
- package/dist/storage/domains/index.d.ts.map +1 -1
- package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/operations/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/scores/base.d.ts +2 -2
- package/dist/storage/domains/scores/base.d.ts.map +1 -1
- package/dist/storage/domains/scores/inmemory.d.ts +2 -2
- package/dist/storage/domains/scores/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/workflows/base.d.ts +4 -0
- package/dist/storage/domains/workflows/base.d.ts.map +1 -1
- package/dist/storage/domains/workflows/inmemory.d.ts +5 -1
- package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +65 -29
- package/dist/storage/index.js +1 -1
- package/dist/storage/mock.d.ts +7 -2
- package/dist/storage/mock.d.ts.map +1 -1
- package/dist/storage/storageWithInit.d.ts.map +1 -1
- package/dist/storage/types.d.ts +85 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/utils.d.ts +82 -0
- package/dist/storage/utils.d.ts.map +1 -1
- package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
- package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
- package/dist/stream/RunOutput.d.ts +2 -2
- package/dist/stream/RunOutput.d.ts.map +1 -1
- package/dist/stream/aisdk/v4/usage.d.ts +19 -0
- package/dist/stream/aisdk/v4/usage.d.ts.map +1 -0
- package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/execute.d.ts +8 -4
- package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/input.d.ts +4 -1
- package/dist/stream/aisdk/v5/input.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/output.d.ts +9 -9
- package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
- package/dist/stream/base/base.d.ts +1 -1
- package/dist/stream/base/base.d.ts.map +1 -1
- package/dist/stream/base/input.d.ts +1 -1
- package/dist/stream/base/output-format-handlers.d.ts +14 -1
- package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
- package/dist/stream/base/output.d.ts +3 -3
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +15 -11
- package/dist/stream/index.d.ts +2 -2
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +2 -2
- package/dist/stream/types.d.ts +48 -25
- package/dist/stream/types.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.cjs +101 -30
- package/dist/test-utils/llm-mock.cjs.map +1 -1
- package/dist/test-utils/llm-mock.d.ts +7 -2
- package/dist/test-utils/llm-mock.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.js +97 -30
- package/dist/test-utils/llm-mock.js.map +1 -1
- package/dist/tools/index.cjs +6 -6
- package/dist/tools/index.js +2 -2
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/stream.d.ts +10 -4
- package/dist/tools/stream.d.ts.map +1 -1
- package/dist/tools/tool-builder/builder.d.ts +2 -0
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/tool-stream-types.test-d.d.ts +2 -0
- package/dist/tools/tool-stream-types.test-d.d.ts.map +1 -0
- package/dist/tools/tool.d.ts +21 -8
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/types.d.ts +33 -6
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/validation.d.ts +25 -1
- package/dist/tools/validation.d.ts.map +1 -1
- package/dist/tts/index.cjs +2 -2
- package/dist/tts/index.js +1 -1
- package/dist/types/zod-compat.d.ts +14 -1
- package/dist/types/zod-compat.d.ts.map +1 -1
- package/dist/utils.cjs +25 -21
- package/dist/utils.d.ts +9 -4
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vector/filter/index.cjs +7 -189
- package/dist/vector/filter/index.cjs.map +1 -1
- package/dist/vector/filter/index.js +1 -190
- package/dist/vector/filter/index.js.map +1 -1
- package/dist/vector/index.cjs +7 -2
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.ts +1 -0
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/index.js +2 -1
- package/dist/vector/index.js.map +1 -1
- package/dist/vector/types.d.ts +86 -3
- package/dist/vector/types.d.ts.map +1 -1
- package/dist/vector/vector.d.ts +39 -2
- package/dist/vector/vector.d.ts.map +1 -1
- package/dist/voice/aisdk/index.d.ts +3 -0
- package/dist/voice/aisdk/index.d.ts.map +1 -0
- package/dist/voice/aisdk/speech.d.ts +23 -0
- package/dist/voice/aisdk/speech.d.ts.map +1 -0
- package/dist/voice/aisdk/transcription.d.ts +22 -0
- package/dist/voice/aisdk/transcription.d.ts.map +1 -0
- package/dist/voice/composite-voice.d.ts +4 -3
- package/dist/voice/composite-voice.d.ts.map +1 -1
- package/dist/voice/index.cjs +12 -4
- package/dist/voice/index.d.ts +1 -0
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +1 -1
- package/dist/workflows/default.d.ts +179 -270
- package/dist/workflows/default.d.ts.map +1 -1
- package/dist/workflows/evented/execution-engine.d.ts +3 -1
- package/dist/workflows/evented/execution-engine.d.ts.map +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/evented/step-executor.d.ts +1 -1
- package/dist/workflows/evented/step-executor.d.ts.map +1 -1
- package/dist/workflows/evented/workflow-event-processor/index.d.ts +5 -4
- package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
- package/dist/workflows/evented/workflow-event-processor/loop.d.ts +1 -1
- package/dist/workflows/evented/workflow-event-processor/loop.d.ts.map +1 -1
- package/dist/workflows/evented/workflow-event-processor/parallel.d.ts +2 -2
- package/dist/workflows/evented/workflow-event-processor/parallel.d.ts.map +1 -1
- package/dist/workflows/evented/workflow-event-processor/sleep.d.ts +2 -2
- package/dist/workflows/evented/workflow-event-processor/sleep.d.ts.map +1 -1
- package/dist/workflows/evented/workflow.d.ts +2 -1
- package/dist/workflows/evented/workflow.d.ts.map +1 -1
- package/dist/workflows/execution-engine.d.ts +8 -6
- package/dist/workflows/execution-engine.d.ts.map +1 -1
- package/dist/workflows/handlers/control-flow.d.ts +133 -0
- package/dist/workflows/handlers/control-flow.d.ts.map +1 -0
- package/dist/workflows/handlers/entry.d.ts +43 -0
- package/dist/workflows/handlers/entry.d.ts.map +1 -0
- package/dist/workflows/handlers/sleep.d.ts +60 -0
- package/dist/workflows/handlers/sleep.d.ts.map +1 -0
- package/dist/workflows/handlers/step.d.ts +58 -0
- package/dist/workflows/handlers/step.d.ts.map +1 -0
- package/dist/workflows/index.cjs +36 -16
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/step.d.ts +8 -6
- package/dist/workflows/step.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +224 -10
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/utils.d.ts +36 -0
- package/dist/workflows/utils.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +135 -54
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +26 -29
- package/src/llm/model/provider-types.generated.d.ts +520 -33
- package/dist/chunk-26SQQNMU.js.map +0 -1
- package/dist/chunk-32CTMD2C.js.map +0 -1
- package/dist/chunk-436FFEF6.js +0 -34
- package/dist/chunk-436FFEF6.js.map +0 -1
- package/dist/chunk-4CDL2QJT.js.map +0 -1
- package/dist/chunk-7AHYOMHJ.js +0 -149
- package/dist/chunk-7AHYOMHJ.js.map +0 -1
- package/dist/chunk-7SKXKUYT.js.map +0 -1
- package/dist/chunk-BNBRQS7N.js +0 -910
- package/dist/chunk-BNBRQS7N.js.map +0 -1
- package/dist/chunk-BU4IAJWF.js.map +0 -1
- package/dist/chunk-BXOL277H.cjs.map +0 -1
- package/dist/chunk-DSNPWVIG.cjs.map +0 -1
- package/dist/chunk-E7K4FTLN.cjs.map +0 -1
- package/dist/chunk-ECFXGXWO.cjs.map +0 -1
- package/dist/chunk-ET6UOTTU.cjs +0 -154
- package/dist/chunk-ET6UOTTU.cjs.map +0 -1
- package/dist/chunk-FD734TPS.cjs.map +0 -1
- package/dist/chunk-GGYKYORQ.cjs.map +0 -1
- package/dist/chunk-GRBGQ2GE.js.map +0 -1
- package/dist/chunk-HGNRQ3OG.js +0 -58
- package/dist/chunk-HGNRQ3OG.js.map +0 -1
- package/dist/chunk-IU2SZXJQ.cjs +0 -913
- package/dist/chunk-IU2SZXJQ.cjs.map +0 -1
- package/dist/chunk-J7O6WENZ.cjs.map +0 -1
- package/dist/chunk-JV2KH24V.js.map +0 -1
- package/dist/chunk-KIZIOFZC.js.map +0 -1
- package/dist/chunk-KJ2SW6VA.js.map +0 -1
- package/dist/chunk-L7XKOKOW.js.map +0 -1
- package/dist/chunk-LJFJTTZQ.cjs +0 -4
- package/dist/chunk-LJFJTTZQ.cjs.map +0 -1
- package/dist/chunk-LRSB62Z6.cjs +0 -60
- package/dist/chunk-LRSB62Z6.cjs.map +0 -1
- package/dist/chunk-MV7KHWUT.js.map +0 -1
- package/dist/chunk-P6APHXPZ.js.map +0 -1
- package/dist/chunk-QCQLOMJM.cjs.map +0 -1
- package/dist/chunk-QUKUN6NR.cjs.map +0 -1
- package/dist/chunk-QUZGDSWE.cjs.map +0 -1
- package/dist/chunk-S5MJLXMG.cjs.map +0 -1
- package/dist/chunk-TQTAMPSC.js.map +0 -1
- package/dist/chunk-UIZSWUKP.js.map +0 -1
- package/dist/chunk-V3VLOOSW.cjs +0 -36
- package/dist/chunk-V3VLOOSW.cjs.map +0 -1
- package/dist/chunk-VJUZZB2I.js.map +0 -1
- package/dist/chunk-VOY2RXOC.cjs.map +0 -1
- package/dist/chunk-VV753WCB.cjs.map +0 -1
- package/dist/chunk-WM6CK2F3.cjs.map +0 -1
- package/dist/chunk-XEVG546F.js.map +0 -1
- package/dist/chunk-Y63IFHEZ.cjs.map +0 -1
- package/dist/chunk-YIK3ASEG.cjs.map +0 -1
- package/dist/chunk-ZV5CC35D.js +0 -3
- package/dist/chunk-ZV5CC35D.js.map +0 -1
- package/dist/models-dev-7U4NRMM3.js +0 -3
- package/dist/models-dev-VKSAQPRK.cjs +0 -12
- package/dist/netlify-2IDXTNFW.cjs +0 -12
- package/dist/netlify-42ZNWIDQ.js +0 -3
- package/dist/registry-generator-H4YNODDH.js.map +0 -1
- package/dist/registry-generator-MK63POJO.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk72YCRTEX_cjs = require('./chunk-72YCRTEX.cjs');
|
|
4
4
|
var zod = require('zod');
|
|
5
5
|
|
|
6
6
|
var scoringExtractStepResultSchema = zod.z.record(zod.z.string(), zod.z.any()).optional();
|
|
@@ -18,7 +18,7 @@ var saveScorePayloadSchema = zod.z.object({
|
|
|
18
18
|
input: zod.z.any().optional(),
|
|
19
19
|
output: zod.z.any(),
|
|
20
20
|
source: zod.z.enum(["LIVE", "TEST"]),
|
|
21
|
-
entityType: zod.z.enum(["AGENT", "WORKFLOW", ...Object.values(
|
|
21
|
+
entityType: zod.z.enum(["AGENT", "WORKFLOW", ...Object.values(chunk72YCRTEX_cjs.SpanType)]).optional(),
|
|
22
22
|
scorer: zod.z.record(zod.z.string(), zod.z.any()),
|
|
23
23
|
traceId: zod.z.string().optional(),
|
|
24
24
|
spanId: zod.z.string().optional(),
|
|
@@ -43,5 +43,5 @@ exports.saveScorePayloadSchema = saveScorePayloadSchema;
|
|
|
43
43
|
exports.scoreResultSchema = scoreResultSchema;
|
|
44
44
|
exports.scoringExtractStepResultSchema = scoringExtractStepResultSchema;
|
|
45
45
|
exports.scoringValueSchema = scoringValueSchema;
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-T2VLUFGG.cjs.map
|
|
47
|
+
//# sourceMappingURL=chunk-T2VLUFGG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/evals/types.ts"],"names":["z","SpanType"],"mappings":";;;;;AA6CO,IAAM,8BAAA,GAAiCA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA;AAIrE,IAAM,kBAAA,GAAqBA,MAAE,MAAA;AAE7B,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,MAAA,EAAQA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS;AAAA,EAC/C,KAAA,EAAO,kBAAA;AAAA,EACP,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACrB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/evals/types.ts"],"names":["z","SpanType"],"mappings":"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","file":"chunk-T2VLUFGG.cjs","sourcesContent":["import type { CoreMessage, CoreSystemMessage } from '@internal/ai-sdk-v4';\nimport { z } from 'zod';\nimport type { MastraDBMessage } from '../agent';\nimport { SpanType } from '../observability';\nimport type { TracingContext } from '../observability';\n\nexport type ScoringSamplingConfig = { type: 'none' } | { type: 'ratio'; rate: number };\n\nexport type ScoringSource = 'LIVE' | 'TEST';\n\nexport type ScoringEntityType = 'AGENT' | 'WORKFLOW' | SpanType;\n\nexport type ScoringPrompts = {\n description: string;\n prompt: string;\n};\n\nexport type ScoringInput = {\n runId?: string;\n input?: any;\n output: any;\n additionalContext?: Record<string, any>;\n requestContext?: Record<string, any>;\n tracingContext?: TracingContext;\n};\n\nexport type ScoringHookInput = {\n runId?: string;\n scorer: Record<string, any>;\n input: any;\n output: any;\n metadata?: Record<string, any>;\n additionalContext?: Record<string, any>;\n source: ScoringSource;\n entity: Record<string, any>;\n entityType: ScoringEntityType;\n requestContext?: Record<string, any>;\n tracingContext?: TracingContext;\n structuredOutput?: boolean;\n traceId?: string;\n spanId?: string;\n resourceId?: string;\n threadId?: string;\n};\n\nexport const scoringExtractStepResultSchema = z.record(z.string(), z.any()).optional();\n\nexport type ScoringExtractStepResult = z.infer<typeof scoringExtractStepResultSchema>;\n\nexport const scoringValueSchema = z.number();\n\nexport const scoreResultSchema = z.object({\n result: z.record(z.string(), z.any()).optional(),\n score: scoringValueSchema,\n prompt: z.string().optional(),\n});\n\nexport type ScoringAnalyzeStepResult = z.infer<typeof scoreResultSchema>;\n\nexport type ScoringInputWithExtractStepResult<TExtract = any> = ScoringInput & {\n runId: string;\n extractStepResult?: TExtract;\n extractPrompt?: string;\n};\n\nexport type ScoringInputWithExtractStepResultAndAnalyzeStepResult<\n TExtract = any,\n TScore = any,\n> = ScoringInputWithExtractStepResult<TExtract> & {\n score: number;\n analyzeStepResult?: TScore;\n analyzePrompt?: string;\n};\n\nexport type ScoringInputWithExtractStepResultAndScoreAndReason =\n ScoringInputWithExtractStepResultAndAnalyzeStepResult & {\n reason?: string;\n reasonPrompt?: string;\n };\n\nexport type ScoreRowData = ScoringInputWithExtractStepResultAndScoreAndReason &\n ScoringHookInput & {\n id: string;\n entityId: string;\n scorerId: string;\n createdAt: Date;\n updatedAt: Date;\n preprocessStepResult?: Record<string, any>;\n preprocessPrompt?: string;\n generateScorePrompt?: string;\n generateReasonPrompt?: string;\n };\n\nexport type SaveScorePayload = Omit<ScoreRowData, 'id' | 'createdAt' | 'updatedAt'>;\n\nexport type ExtractionStepFn = (input: ScoringInput) => Promise<Record<string, any>>;\n\nexport type AnalyzeStepFn = (input: ScoringInputWithExtractStepResult) => Promise<ScoringAnalyzeStepResult>;\n\nexport type ReasonStepFn = (\n input: ScoringInputWithExtractStepResultAndAnalyzeStepResult,\n) => Promise<{ reason: string; reasonPrompt?: string } | null>;\n\nexport type ScorerOptions = {\n name: string;\n description: string;\n extract?: ExtractionStepFn;\n analyze: AnalyzeStepFn;\n reason?: ReasonStepFn;\n metadata?: Record<string, any>;\n isLLMScorer?: boolean;\n};\n\nexport type ScorerRunInputForAgent = {\n inputMessages: MastraDBMessage[];\n rememberedMessages: MastraDBMessage[];\n systemMessages: CoreMessage[];\n taggedSystemMessages: Record<string, CoreSystemMessage[]>;\n};\n\nexport type ScorerRunOutputForAgent = MastraDBMessage[];\n\nexport const saveScorePayloadSchema = z.object({\n runId: z.string(),\n scorerId: z.string(),\n entityId: z.string(),\n score: z.number(),\n input: z.any().optional(),\n output: z.any(),\n source: z.enum(['LIVE', 'TEST']),\n entityType: z.enum(['AGENT', 'WORKFLOW', ...Object.values(SpanType)]).optional(),\n scorer: z.record(z.string(), z.any()),\n\n traceId: z.string().optional(),\n spanId: z.string().optional(),\n preprocessStepResult: z.record(z.string(), z.any()).optional(),\n extractStepResult: z.record(z.string(), z.any()).optional(),\n analyzeStepResult: z.record(z.string(), z.any()).optional(),\n reason: z.string().optional(),\n metadata: z.record(z.string(), z.any()).optional(),\n preprocessPrompt: z.string().optional(),\n extractPrompt: z.string().optional(),\n generateScorePrompt: z.string().optional(),\n generateReasonPrompt: z.string().optional(),\n analyzePrompt: z.string().optional(),\n additionalContext: z.record(z.string(), z.any()).optional(),\n requestContext: z.record(z.string(), z.any()).optional(),\n entity: z.record(z.string(), z.any()).optional(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n});\n\nexport type ValidatedSaveScorePayload = z.infer<typeof saveScorePayloadSchema>;\n"]}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { RequestContext } from './chunk-6TBWJV35.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
function truncateForLogging(data, maxLength = 200) {
|
|
5
|
+
try {
|
|
6
|
+
const stringified = JSON.stringify(data, null, 2);
|
|
7
|
+
if (stringified.length <= maxLength) {
|
|
8
|
+
return stringified;
|
|
9
|
+
}
|
|
10
|
+
return stringified.slice(0, maxLength) + "... (truncated)";
|
|
11
|
+
} catch {
|
|
12
|
+
return "[Unable to serialize data]";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function validateToolSuspendData(schema, suspendData, toolId) {
|
|
16
|
+
if (!schema || !("safeParse" in schema)) {
|
|
17
|
+
return { data: suspendData };
|
|
18
|
+
}
|
|
19
|
+
const validation = schema.safeParse(suspendData);
|
|
20
|
+
if (validation.success) {
|
|
21
|
+
return { data: validation.data };
|
|
22
|
+
}
|
|
23
|
+
const errorMessages = validation.error.issues.map((e) => `- ${e.path?.join(".") || "root"}: ${e.message}`).join("\n");
|
|
24
|
+
const error = {
|
|
25
|
+
error: true,
|
|
26
|
+
message: `Tool suspension data validation failed${toolId ? ` for ${toolId}` : ""}. Please fix the following errors and try again:
|
|
27
|
+
${errorMessages}
|
|
28
|
+
|
|
29
|
+
Provided arguments: ${truncateForLogging(suspendData)}`,
|
|
30
|
+
validationErrors: validation.error.format()
|
|
31
|
+
};
|
|
32
|
+
return { data: suspendData, error };
|
|
33
|
+
}
|
|
34
|
+
function normalizeNullishInput(schema, input) {
|
|
35
|
+
if (input !== void 0 && input !== null) {
|
|
36
|
+
return input;
|
|
37
|
+
}
|
|
38
|
+
if (schema instanceof z.ZodArray) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
if (schema instanceof z.ZodObject) {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
46
|
+
function validateToolInput(schema, input, toolId) {
|
|
47
|
+
if (!schema || !("safeParse" in schema)) {
|
|
48
|
+
return { data: input };
|
|
49
|
+
}
|
|
50
|
+
const normalizedInput = normalizeNullishInput(schema, input);
|
|
51
|
+
const validation = schema.safeParse(normalizedInput);
|
|
52
|
+
if (validation.success) {
|
|
53
|
+
return { data: validation.data };
|
|
54
|
+
}
|
|
55
|
+
const errorMessages = validation.error.issues.map((e) => `- ${e.path?.join(".") || "root"}: ${e.message}`).join("\n");
|
|
56
|
+
const error = {
|
|
57
|
+
error: true,
|
|
58
|
+
message: `Tool input validation failed${toolId ? ` for ${toolId}` : ""}. Please fix the following errors and try again:
|
|
59
|
+
${errorMessages}
|
|
60
|
+
|
|
61
|
+
Provided arguments: ${truncateForLogging(input)}`,
|
|
62
|
+
validationErrors: validation.error.format()
|
|
63
|
+
};
|
|
64
|
+
return { data: input, error };
|
|
65
|
+
}
|
|
66
|
+
function validateToolOutput(schema, output, toolId, suspendCalled) {
|
|
67
|
+
if (!schema || !("safeParse" in schema) || suspendCalled) {
|
|
68
|
+
return { data: output };
|
|
69
|
+
}
|
|
70
|
+
const validation = schema.safeParse(output);
|
|
71
|
+
if (validation.success) {
|
|
72
|
+
return { data: validation.data };
|
|
73
|
+
}
|
|
74
|
+
const errorMessages = validation.error.issues.map((e) => `- ${e.path?.join(".") || "root"}: ${e.message}`).join("\n");
|
|
75
|
+
const error = {
|
|
76
|
+
error: true,
|
|
77
|
+
message: `Tool output validation failed${toolId ? ` for ${toolId}` : ""}. The tool returned invalid output:
|
|
78
|
+
${errorMessages}
|
|
79
|
+
|
|
80
|
+
Returned output: ${truncateForLogging(output)}`,
|
|
81
|
+
validationErrors: validation.error.format()
|
|
82
|
+
};
|
|
83
|
+
return { data: output, error };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/tools/tool.ts
|
|
87
|
+
var Tool = class {
|
|
88
|
+
/** Unique identifier for the tool */
|
|
89
|
+
id;
|
|
90
|
+
/** Description of what the tool does */
|
|
91
|
+
description;
|
|
92
|
+
/** Schema for validating input parameters */
|
|
93
|
+
inputSchema;
|
|
94
|
+
/** Schema for validating output structure */
|
|
95
|
+
outputSchema;
|
|
96
|
+
/** Schema for suspend operation data */
|
|
97
|
+
suspendSchema;
|
|
98
|
+
/** Schema for resume operation data */
|
|
99
|
+
resumeSchema;
|
|
100
|
+
/**
|
|
101
|
+
* Tool execution function
|
|
102
|
+
* @param inputData - The raw, validated input data
|
|
103
|
+
* @param context - Optional execution context with metadata
|
|
104
|
+
* @returns Promise resolving to tool output or a ValidationError if input validation fails
|
|
105
|
+
*/
|
|
106
|
+
execute;
|
|
107
|
+
/** Parent Mastra instance for accessing shared resources */
|
|
108
|
+
mastra;
|
|
109
|
+
/**
|
|
110
|
+
* Whether the tool requires explicit user approval before execution
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* // For destructive operations
|
|
114
|
+
* requireApproval: true
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
requireApproval;
|
|
118
|
+
/**
|
|
119
|
+
* Provider-specific options passed to the model when this tool is used.
|
|
120
|
+
* Keys are provider names (e.g., 'anthropic', 'openai'), values are provider-specific configs.
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* providerOptions: {
|
|
124
|
+
* anthropic: {
|
|
125
|
+
* cacheControl: { type: 'ephemeral' }
|
|
126
|
+
* }
|
|
127
|
+
* }
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
providerOptions;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a new Tool instance with input validation wrapper.
|
|
133
|
+
*
|
|
134
|
+
* @param opts - Tool configuration and execute function
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const tool = new Tool({
|
|
138
|
+
* id: 'my-tool',
|
|
139
|
+
* description: 'Does something useful',
|
|
140
|
+
* inputSchema: z.object({ name: z.string() }),
|
|
141
|
+
* execute: async (inputData) => ({ greeting: `Hello ${inputData.name}` })
|
|
142
|
+
* });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
constructor(opts) {
|
|
146
|
+
this.id = opts.id;
|
|
147
|
+
this.description = opts.description;
|
|
148
|
+
this.inputSchema = opts.inputSchema;
|
|
149
|
+
this.outputSchema = opts.outputSchema;
|
|
150
|
+
this.suspendSchema = opts.suspendSchema;
|
|
151
|
+
this.resumeSchema = opts.resumeSchema;
|
|
152
|
+
this.mastra = opts.mastra;
|
|
153
|
+
this.requireApproval = opts.requireApproval || false;
|
|
154
|
+
this.providerOptions = opts.providerOptions;
|
|
155
|
+
if (opts.execute) {
|
|
156
|
+
const originalExecute = opts.execute;
|
|
157
|
+
this.execute = async (inputData, context) => {
|
|
158
|
+
const { data, error } = validateToolInput(this.inputSchema, inputData, this.id);
|
|
159
|
+
if (error) {
|
|
160
|
+
return error;
|
|
161
|
+
}
|
|
162
|
+
let suspendData = null;
|
|
163
|
+
const baseContext = context ? {
|
|
164
|
+
...context,
|
|
165
|
+
...context.suspend ? {
|
|
166
|
+
suspend: (args) => {
|
|
167
|
+
suspendData = args;
|
|
168
|
+
return context.suspend?.(args);
|
|
169
|
+
}
|
|
170
|
+
} : {}
|
|
171
|
+
} : {};
|
|
172
|
+
let organizedContext = baseContext;
|
|
173
|
+
if (!context) {
|
|
174
|
+
organizedContext = {
|
|
175
|
+
requestContext: new RequestContext(),
|
|
176
|
+
mastra: void 0
|
|
177
|
+
};
|
|
178
|
+
} else {
|
|
179
|
+
const isAgentExecution = baseContext.toolCallId && baseContext.messages;
|
|
180
|
+
const isWorkflowExecution = !isAgentExecution && (baseContext.workflow || baseContext.workflowId);
|
|
181
|
+
if (isAgentExecution && !baseContext.agent) {
|
|
182
|
+
const { toolCallId, messages, suspend, resumeData: resumeData2, threadId, resourceId, writableStream, ...rest } = baseContext;
|
|
183
|
+
organizedContext = {
|
|
184
|
+
...rest,
|
|
185
|
+
agent: {
|
|
186
|
+
toolCallId,
|
|
187
|
+
messages,
|
|
188
|
+
suspend,
|
|
189
|
+
resumeData: resumeData2,
|
|
190
|
+
threadId,
|
|
191
|
+
resourceId,
|
|
192
|
+
writableStream
|
|
193
|
+
},
|
|
194
|
+
// Ensure requestContext is always present
|
|
195
|
+
requestContext: rest.requestContext || new RequestContext()
|
|
196
|
+
};
|
|
197
|
+
} else if (isWorkflowExecution && !baseContext.workflow) {
|
|
198
|
+
const { workflowId, runId, state, setState, suspend, resumeData: resumeData2, ...rest } = baseContext;
|
|
199
|
+
organizedContext = {
|
|
200
|
+
...rest,
|
|
201
|
+
workflow: {
|
|
202
|
+
workflowId,
|
|
203
|
+
runId,
|
|
204
|
+
state,
|
|
205
|
+
setState,
|
|
206
|
+
suspend,
|
|
207
|
+
resumeData: resumeData2
|
|
208
|
+
},
|
|
209
|
+
// Ensure requestContext is always present
|
|
210
|
+
requestContext: rest.requestContext || new RequestContext()
|
|
211
|
+
};
|
|
212
|
+
} else {
|
|
213
|
+
organizedContext = {
|
|
214
|
+
...baseContext,
|
|
215
|
+
agent: baseContext.agent ? {
|
|
216
|
+
...baseContext.agent,
|
|
217
|
+
suspend: (args) => {
|
|
218
|
+
suspendData = args;
|
|
219
|
+
return baseContext.agent?.suspend?.(args);
|
|
220
|
+
}
|
|
221
|
+
} : baseContext.agent,
|
|
222
|
+
workflow: baseContext.workflow ? {
|
|
223
|
+
...baseContext.workflow,
|
|
224
|
+
suspend: (args) => {
|
|
225
|
+
suspendData = args;
|
|
226
|
+
return baseContext.workflow?.suspend?.(args);
|
|
227
|
+
}
|
|
228
|
+
} : baseContext.workflow,
|
|
229
|
+
requestContext: baseContext.requestContext || new RequestContext()
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const resumeData = organizedContext.agent?.resumeData ?? organizedContext.workflow?.resumeData ?? organizedContext?.resumeData;
|
|
234
|
+
if (resumeData) {
|
|
235
|
+
const resumeValidation = validateToolInput(this.resumeSchema, resumeData, this.id);
|
|
236
|
+
if (resumeValidation.error) {
|
|
237
|
+
return resumeValidation.error;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
const output = await originalExecute(data, organizedContext);
|
|
241
|
+
if (suspendData) {
|
|
242
|
+
const suspendValidation = validateToolSuspendData(this.suspendSchema, suspendData, this.id);
|
|
243
|
+
if (suspendValidation.error) {
|
|
244
|
+
return suspendValidation.error;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const skiptOutputValidation = !!(typeof output === "undefined" && suspendData);
|
|
248
|
+
const outputValidation = validateToolOutput(this.outputSchema, output, this.id, skiptOutputValidation);
|
|
249
|
+
if (outputValidation.error) {
|
|
250
|
+
return outputValidation.error;
|
|
251
|
+
}
|
|
252
|
+
return outputValidation.data;
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
function createTool(opts) {
|
|
258
|
+
return new Tool(opts);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// src/tools/toolchecks.ts
|
|
262
|
+
function isVercelTool(tool) {
|
|
263
|
+
return !!(tool && !(tool instanceof Tool) && "parameters" in tool);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export { Tool, createTool, isVercelTool, validateToolInput, validateToolOutput, validateToolSuspendData };
|
|
267
|
+
//# sourceMappingURL=chunk-THZTRBFS.js.map
|
|
268
|
+
//# sourceMappingURL=chunk-THZTRBFS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/validation.ts","../src/tools/tool.ts","../src/tools/toolchecks.ts"],"names":["resumeData"],"mappings":"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","file":"chunk-THZTRBFS.js","sourcesContent":["import { z } from 'zod';\nimport type { ZodLikeSchema } from '../types/zod-compat';\n\nexport interface ValidationError<T = any> {\n error: true;\n message: string;\n validationErrors: z.ZodFormattedError<T>;\n}\n\n/**\n * Safely truncates data for error messages to avoid exposing sensitive information.\n * @param data The data to truncate\n * @param maxLength Maximum length of the truncated string (default: 200)\n * @returns Truncated string representation\n */\nfunction truncateForLogging(data: unknown, maxLength: number = 200): string {\n try {\n const stringified = JSON.stringify(data, null, 2);\n if (stringified.length <= maxLength) {\n return stringified;\n }\n return stringified.slice(0, maxLength) + '... (truncated)';\n } catch {\n return '[Unable to serialize data]';\n }\n}\n\n/**\n * Validates raw suspend data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param suspendData The raw suspend data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolSuspendData<T = any>(\n schema: ZodLikeSchema | undefined,\n suspendData: unknown,\n toolId?: string,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return suspend data as-is\n if (!schema || !('safeParse' in schema)) {\n return { data: suspendData };\n }\n\n // Validate the input directly - no unwrapping needed in v1.0\n const validation = schema.safeParse(suspendData);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.error.issues\n .map((e: z.ZodIssue) => `- ${e.path?.join('.') || 'root'}: ${e.message}`)\n .join('\\n');\n\n const error: ValidationError<T> = {\n error: true,\n message: `Tool suspension data validation failed${toolId ? ` for ${toolId}` : ''}. Please fix the following errors and try again:\\n${errorMessages}\\n\\nProvided arguments: ${truncateForLogging(suspendData)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: suspendData, error };\n}\n\n/**\n * Normalizes undefined/null input to an appropriate default value based on schema type.\n * This handles LLMs (Claude Sonnet 4.5, Gemini 2.4, etc.) that send undefined/null\n * instead of {} or [] when all parameters are optional.\n *\n * @param schema The Zod schema to check\n * @param input The input to normalize\n * @returns The normalized input (original value, {}, or [])\n */\nfunction normalizeNullishInput(schema: ZodLikeSchema, input: unknown): unknown {\n if (input !== undefined && input !== null) {\n return input;\n }\n\n // Check if schema is an array type\n if (schema instanceof z.ZodArray) {\n return [];\n }\n\n // Check if schema is an object type\n if (schema instanceof z.ZodObject) {\n return {};\n }\n\n // For other schema types, return the original input and let Zod validate\n return input;\n}\n\n/**\n * Validates raw input data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param input The raw input data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolInput<T = any>(\n schema: ZodLikeSchema | undefined,\n input: unknown,\n toolId?: string,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return input as-is\n if (!schema || !('safeParse' in schema)) {\n return { data: input };\n }\n\n // Normalize undefined/null input to appropriate default for the schema type\n // This handles LLMs that send undefined instead of {} or [] for optional parameters\n const normalizedInput = normalizeNullishInput(schema, input);\n\n // Validate the normalized input\n const validation = schema.safeParse(normalizedInput);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.error.issues\n .map((e: z.ZodIssue) => `- ${e.path?.join('.') || 'root'}: ${e.message}`)\n .join('\\n');\n\n const error: ValidationError<T> = {\n error: true,\n message: `Tool input validation failed${toolId ? ` for ${toolId}` : ''}. Please fix the following errors and try again:\\n${errorMessages}\\n\\nProvided arguments: ${truncateForLogging(input)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: input, error };\n}\n\n/**\n * Validates tool output data against a Zod schema.\n *\n * @param schema The Zod schema to validate against\n * @param output The output data to validate\n * @param toolId Optional tool ID for better error messages\n * @returns The validated data or a validation error\n */\nexport function validateToolOutput<T = any>(\n schema: ZodLikeSchema | undefined,\n output: unknown,\n toolId?: string,\n suspendCalled?: boolean,\n): { data: T | unknown; error?: ValidationError<T> } {\n // If no schema, return output as-is\n if (!schema || !('safeParse' in schema) || suspendCalled) {\n return { data: output };\n }\n\n // Validate the output\n const validation = schema.safeParse(output);\n\n if (validation.success) {\n return { data: validation.data };\n }\n\n // Validation failed, return error\n const errorMessages = validation.error.issues\n .map((e: z.ZodIssue) => `- ${e.path?.join('.') || 'root'}: ${e.message}`)\n .join('\\n');\n\n const error: ValidationError<T> = {\n error: true,\n message: `Tool output validation failed${toolId ? ` for ${toolId}` : ''}. The tool returned invalid output:\\n${errorMessages}\\n\\nReturned output: ${truncateForLogging(output)}`,\n validationErrors: validation.error.format() as z.ZodFormattedError<T>,\n };\n\n return { data: output, error };\n}\n","import type { Mastra } from '../mastra';\nimport { RequestContext } from '../request-context';\nimport type { ZodLikeSchema, InferZodLikeSchema, InferZodLikeSchemaInput } from '../types/zod-compat';\nimport type { ToolAction, ToolExecutionContext } from './types';\nimport { validateToolInput, validateToolOutput, validateToolSuspendData } from './validation';\n\n/**\n * A type-safe tool that agents and workflows can call to perform specific actions.\n *\n * @template TSchemaIn - Input schema type\n * @template TSchemaOut - Output schema type\n * @template TSuspendSchema - Suspend operation schema type\n * @template TResumeSchema - Resume operation schema type\n * @template TContext - Execution context type\n *\n * @example Basic tool with validation\n * ```typescript\n * const weatherTool = createTool({\n * id: 'get-weather',\n * description: 'Get weather for a location',\n * inputSchema: z.object({\n * location: z.string(),\n * units: z.enum(['celsius', 'fahrenheit']).optional()\n * }),\n * execute: async (inputData) => {\n * return await fetchWeather(inputData.location, inputData.units);\n * }\n * });\n * ```\n *\n * @example Tool requiring approval\n * ```typescript\n * const deleteFileTool = createTool({\n * id: 'delete-file',\n * description: 'Delete a file',\n * requireApproval: true,\n * inputSchema: z.object({ filepath: z.string() }),\n * execute: async (inputData) => {\n * await fs.unlink(inputData.filepath);\n * return { deleted: true };\n * }\n * });\n * ```\n *\n * @example Tool with Mastra integration\n * ```typescript\n * const saveTool = createTool({\n * id: 'save-data',\n * description: 'Save data to storage',\n * inputSchema: z.object({ key: z.string(), value: z.any() }),\n * execute: async (inputData, context) => {\n * const storage = context?.mastra?.getStorage();\n * await storage?.set(inputData.key, inputData.value);\n * return { saved: true };\n * }\n * });\n * ```\n */\nexport class Tool<\n TSchemaIn extends ZodLikeSchema | undefined = undefined,\n TSchemaOut extends ZodLikeSchema | undefined = undefined,\n TSuspendSchema extends ZodLikeSchema = any,\n TResumeSchema extends ZodLikeSchema = any,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema> = ToolExecutionContext<\n TSuspendSchema,\n TResumeSchema\n >,\n TId extends string = string,\n> implements ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>\n{\n /** Unique identifier for the tool */\n id: TId;\n\n /** Description of what the tool does */\n description: string;\n\n /** Schema for validating input parameters */\n inputSchema?: TSchemaIn;\n\n /** Schema for validating output structure */\n outputSchema?: TSchemaOut;\n\n /** Schema for suspend operation data */\n suspendSchema?: TSuspendSchema;\n\n /** Schema for resume operation data */\n resumeSchema?: TResumeSchema;\n\n /**\n * Tool execution function\n * @param inputData - The raw, validated input data\n * @param context - Optional execution context with metadata\n * @returns Promise resolving to tool output or a ValidationError if input validation fails\n */\n execute?: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext>['execute'];\n\n /** Parent Mastra instance for accessing shared resources */\n mastra?: Mastra;\n\n /**\n * Whether the tool requires explicit user approval before execution\n * @example\n * ```typescript\n * // For destructive operations\n * requireApproval: true\n * ```\n */\n requireApproval?: boolean;\n\n /**\n * Provider-specific options passed to the model when this tool is used.\n * Keys are provider names (e.g., 'anthropic', 'openai'), values are provider-specific configs.\n * @example\n * ```typescript\n * providerOptions: {\n * anthropic: {\n * cacheControl: { type: 'ephemeral' }\n * }\n * }\n * ```\n */\n providerOptions?: Record<string, Record<string, unknown>>;\n\n /**\n * Creates a new Tool instance with input validation wrapper.\n *\n * @param opts - Tool configuration and execute function\n * @example\n * ```typescript\n * const tool = new Tool({\n * id: 'my-tool',\n * description: 'Does something useful',\n * inputSchema: z.object({ name: z.string() }),\n * execute: async (inputData) => ({ greeting: `Hello ${inputData.name}` })\n * });\n * ```\n */\n constructor(opts: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>) {\n this.id = opts.id;\n this.description = opts.description;\n this.inputSchema = opts.inputSchema;\n this.outputSchema = opts.outputSchema;\n this.suspendSchema = opts.suspendSchema;\n this.resumeSchema = opts.resumeSchema;\n this.mastra = opts.mastra;\n this.requireApproval = opts.requireApproval || false;\n this.providerOptions = opts.providerOptions;\n\n // Tools receive two parameters:\n // 1. input - The raw, validated input data\n // 2. context - Execution metadata (mastra, suspend, etc.)\n if (opts.execute) {\n const originalExecute = opts.execute;\n this.execute = async (inputData: unknown, context?: any) => {\n // Validate input if schema exists\n const { data, error } = validateToolInput(this.inputSchema, inputData, this.id);\n if (error) {\n return error as any;\n }\n\n let suspendData = null;\n\n const baseContext = context\n ? {\n ...context,\n ...(context.suspend\n ? {\n suspend: (args: any) => {\n suspendData = args;\n return context.suspend?.(args);\n },\n }\n : {}),\n }\n : {};\n\n // Organize context based on execution source\n let organizedContext = baseContext;\n if (!context) {\n // No context provided - create a minimal context with requestContext\n organizedContext = {\n requestContext: new RequestContext(),\n mastra: undefined,\n };\n } else {\n // Check if this is agent execution (has toolCallId and messages)\n const isAgentExecution = baseContext.toolCallId && baseContext.messages;\n\n // Check if this is workflow execution (has workflow properties)\n // Agent execution takes precedence - don't treat as workflow if it's an agent call\n const isWorkflowExecution = !isAgentExecution && (baseContext.workflow || baseContext.workflowId);\n\n if (isAgentExecution && !baseContext.agent) {\n // Reorganize agent context - nest agent-specific properties under 'agent' key\n const { toolCallId, messages, suspend, resumeData, threadId, resourceId, writableStream, ...rest } =\n baseContext;\n organizedContext = {\n ...rest,\n agent: {\n toolCallId,\n messages,\n suspend,\n resumeData,\n threadId,\n resourceId,\n writableStream,\n },\n // Ensure requestContext is always present\n requestContext: rest.requestContext || new RequestContext(),\n };\n } else if (isWorkflowExecution && !baseContext.workflow) {\n // Reorganize workflow context - nest workflow-specific properties under 'workflow' key\n const { workflowId, runId, state, setState, suspend, resumeData, ...rest } = baseContext;\n organizedContext = {\n ...rest,\n workflow: {\n workflowId,\n runId,\n state,\n setState,\n suspend,\n resumeData,\n },\n // Ensure requestContext is always present\n requestContext: rest.requestContext || new RequestContext(),\n };\n } else {\n // Ensure requestContext is always present even for direct execution\n organizedContext = {\n ...baseContext,\n agent: baseContext.agent\n ? {\n ...baseContext.agent,\n suspend: (args: any) => {\n suspendData = args;\n return baseContext.agent?.suspend?.(args);\n },\n }\n : baseContext.agent,\n workflow: baseContext.workflow\n ? {\n ...baseContext.workflow,\n suspend: (args: any) => {\n suspendData = args;\n return baseContext.workflow?.suspend?.(args);\n },\n }\n : baseContext.workflow,\n requestContext: baseContext.requestContext || new RequestContext(),\n };\n }\n }\n\n const resumeData =\n organizedContext.agent?.resumeData ?? organizedContext.workflow?.resumeData ?? organizedContext?.resumeData;\n\n if (resumeData) {\n const resumeValidation = validateToolInput(this.resumeSchema, resumeData, this.id);\n if (resumeValidation.error) {\n return resumeValidation.error as any;\n }\n }\n\n // Call the original execute with validated input and organized context\n const output = await originalExecute(data as any, organizedContext);\n\n if (suspendData) {\n const suspendValidation = validateToolSuspendData(this.suspendSchema, suspendData, this.id);\n if (suspendValidation.error) {\n return suspendValidation.error as any;\n }\n }\n\n const skiptOutputValidation = !!(typeof output === 'undefined' && suspendData);\n\n // Validate output if schema exists\n const outputValidation = validateToolOutput(this.outputSchema, output, this.id, skiptOutputValidation);\n if (outputValidation.error) {\n return outputValidation.error as any;\n }\n\n return outputValidation.data;\n };\n }\n }\n}\n\n/**\n * Creates a type-safe tool with automatic input validation.\n *\n * @template TSchemaIn - Input schema type\n * @template TSchemaOut - Output schema type\n * @template TSuspendSchema - Suspend operation schema type\n * @template TResumeSchema - Resume operation schema type\n * @template TContext - Execution context type\n * @template TExecute - Execute function type\n *\n * @param opts - Tool configuration including schemas and execute function\n * @returns Type-safe Tool instance with conditional typing based on schemas\n *\n * @example Simple tool\n * ```typescript\n * const greetTool = createTool({\n * id: 'greet',\n * description: 'Say hello',\n * execute: async () => ({ message: 'Hello!' })\n * });\n * ```\n *\n * @example Tool with input validation\n * ```typescript\n * const calculateTool = createTool({\n * id: 'calculate',\n * description: 'Perform calculations',\n * inputSchema: z.object({\n * operation: z.enum(['add', 'subtract']),\n * a: z.number(),\n * b: z.number()\n * }),\n * execute: async (inputData) => {\n * const result = inputData.operation === 'add'\n * ? inputData.a + inputData.b\n * : inputData.a - inputData.b;\n * return { result };\n * }\n * });\n * ```\n *\n * @example Tool with output schema\n * ```typescript\n * const userTool = createTool({\n * id: 'get-user',\n * description: 'Get user data',\n * inputSchema: z.object({ userId: z.string() }),\n * outputSchema: z.object({\n * id: z.string(),\n * name: z.string(),\n * email: z.string()\n * }),\n * execute: async (inputData) => {\n * return await fetchUser(inputData.userId);\n * }\n * });\n * ```\n *\n * @example Tool with external API\n * ```typescript\n * const weatherTool = createTool({\n * id: 'weather',\n * description: 'Get weather data',\n * inputSchema: z.object({\n * city: z.string(),\n * units: z.enum(['metric', 'imperial']).default('metric')\n * }),\n * execute: async (inputData) => {\n * const response = await fetch(\n * `https://api.weather.com/v1/weather?q=${inputData.city}&units=${inputData.units}`\n * );\n * return response.json();\n * }\n * });\n * ```\n */\nexport function createTool<\n TId extends string = string,\n TSchemaIn extends ZodLikeSchema | undefined = undefined,\n TSchemaOut extends ZodLikeSchema | undefined = undefined,\n TSuspendSchema extends ZodLikeSchema = any,\n TResumeSchema extends ZodLikeSchema = any,\n TContext extends ToolExecutionContext<TSuspendSchema, TResumeSchema> = ToolExecutionContext<\n TSuspendSchema,\n TResumeSchema\n >,\n TExecute extends ToolAction<\n TSchemaIn,\n TSchemaOut,\n TSuspendSchema,\n TResumeSchema,\n TContext,\n TId\n >['execute'] = ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId>['execute'],\n>(\n opts: ToolAction<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId> & {\n execute?: TExecute;\n },\n): [TSchemaIn, TSchemaOut, TExecute] extends [ZodLikeSchema, ZodLikeSchema, Function]\n ? Tool<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId> & {\n inputSchema: TSchemaIn;\n outputSchema: TSchemaOut;\n execute: (\n inputData: TSchemaIn extends ZodLikeSchema ? InferZodLikeSchema<TSchemaIn> : unknown,\n context?: TContext,\n ) => Promise<TSchemaOut extends ZodLikeSchema ? InferZodLikeSchemaInput<TSchemaOut> : unknown>;\n }\n : Tool<TSchemaIn, TSchemaOut, TSuspendSchema, TResumeSchema, TContext, TId> {\n return new Tool(opts) as any;\n}\n","import { Tool } from './tool';\nimport type { ToolToConvert } from './tool-builder/builder';\nimport type { VercelTool } from './types';\n\n/**\n * Checks if a tool is a Vercel Tool\n * @param tool - The tool to check\n * @returns True if the tool is a Vercel Tool, false otherwise\n */\nexport function isVercelTool(tool?: ToolToConvert): tool is VercelTool {\n // Checks if this tool is not an instance of Tool\n return !!(tool && !(tool instanceof Tool) && 'parameters' in tool);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDGV2FWB4_cjs = require('./chunk-DGV2FWB4.cjs');
|
|
4
4
|
var TTLCache = require('@isaacs/ttlcache');
|
|
5
5
|
|
|
6
6
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -8,7 +8,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
8
8
|
var TTLCache__default = /*#__PURE__*/_interopDefault(TTLCache);
|
|
9
9
|
|
|
10
10
|
// src/cache/base.ts
|
|
11
|
-
var MastraServerCache = class extends
|
|
11
|
+
var MastraServerCache = class extends chunkDGV2FWB4_cjs.MastraBase {
|
|
12
12
|
constructor({ name }) {
|
|
13
13
|
super({
|
|
14
14
|
component: "SERVER_CACHE",
|
|
@@ -63,5 +63,5 @@ var InMemoryServerCache = class extends MastraServerCache {
|
|
|
63
63
|
|
|
64
64
|
exports.InMemoryServerCache = InMemoryServerCache;
|
|
65
65
|
exports.MastraServerCache = MastraServerCache;
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-UIGRFDO6.cjs.map
|
|
67
|
+
//# sourceMappingURL=chunk-UIGRFDO6.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cache/base.ts","../src/cache/inmemory.ts"],"names":["MastraBase","TTLCache"],"mappings":";;;;;;;;;;AAEO,IAAe,iBAAA,GAAf,cAAyCA,4BAAA,CAAW;AAAA,EACzD,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM;AAAA,MACJ,SAAA,EAAW,cAAA;AAAA,MACX;AAAA,KACD,CAAA;AAAA,EACH;AAeF;ACpBO,IAAM,mBAAA,GAAN,cAAkC,iBAAA,CAAkB;AAAA,EACjD,KAAA,GAAmC,IAAIC,yBAAA,CAAS;AAAA,IACtD,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,MAAO,EAAA,GAAK;AAAA,GAClB,CAAA;AAAA,EAED,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,IAAI,GAAA,EAA+B;AACvC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA+B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,GAAA,EAA8B;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,GAAA,EAAa,KAAA,EAA+B;AACzD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,CAAC,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,GAAA,EAAa,IAAA,EAAc,KAAa,EAAA,EAAwB;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAEvB,MAAA,MAAM,QAAA,GAAW,EAAA,KAAO,EAAA,GAAK,MAAA,GAAY,EAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,OAAO,GAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/cache/base.ts","../src/cache/inmemory.ts"],"names":["MastraBase","TTLCache"],"mappings":";;;;;;;;;;AAEO,IAAe,iBAAA,GAAf,cAAyCA,4BAAA,CAAW;AAAA,EACzD,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM;AAAA,MACJ,SAAA,EAAW,cAAA;AAAA,MACX;AAAA,KACD,CAAA;AAAA,EACH;AAeF;ACpBO,IAAM,mBAAA,GAAN,cAAkC,iBAAA,CAAkB;AAAA,EACjD,KAAA,GAAmC,IAAIC,yBAAA,CAAS;AAAA,IACtD,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,MAAO,EAAA,GAAK;AAAA,GAClB,CAAA;AAAA,EAED,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,IAAI,GAAA,EAA+B;AACvC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA+B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,GAAA,EAA8B;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,GAAA,EAAa,KAAA,EAA+B;AACzD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,CAAC,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,GAAA,EAAa,IAAA,EAAc,KAAa,EAAA,EAAwB;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAEvB,MAAA,MAAM,QAAA,GAAW,EAAA,KAAO,EAAA,GAAK,MAAA,GAAY,EAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,OAAO,GAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AACF","file":"chunk-UIGRFDO6.cjs","sourcesContent":["import { MastraBase } from '../base';\n\nexport abstract class MastraServerCache extends MastraBase {\n constructor({ name }: { name: string }) {\n super({\n component: 'SERVER_CACHE',\n name,\n });\n }\n\n abstract get(key: string): Promise<unknown>;\n\n abstract listLength(key: string): Promise<number>;\n\n abstract set(key: string, value: unknown): Promise<void>;\n\n abstract listPush(key: string, value: unknown): Promise<void>;\n\n abstract listFromTo(key: string, from: number, to?: number): Promise<unknown[]>;\n\n abstract delete(key: string): Promise<void>;\n\n abstract clear(): Promise<void>;\n}\n","import TTLCache from '@isaacs/ttlcache';\nimport { MastraServerCache } from './base';\n\nexport class InMemoryServerCache extends MastraServerCache {\n private cache: TTLCache<string, unknown> = new TTLCache({\n max: 1000,\n ttl: 1000 * 60 * 5,\n });\n\n constructor() {\n super({ name: 'InMemoryServerCache' });\n }\n\n async get(key: string): Promise<unknown> {\n return this.cache.get(key);\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.cache.set(key, value);\n }\n\n async listLength(key: string): Promise<number> {\n const list = this.cache.get(key) as unknown[];\n if (!Array.isArray(list)) {\n throw new Error(`${key} is not an array`);\n }\n return list.length;\n }\n\n async listPush(key: string, value: unknown): Promise<void> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n list.push(value);\n } else {\n this.cache.set(key, [value]);\n }\n }\n\n async listFromTo(key: string, from: number, to: number = -1): Promise<unknown[]> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n // Make 'to' inclusive like Redis LRANGE - add 1 unless it's -1\n const endIndex = to === -1 ? undefined : to + 1;\n return list.slice(from, endIndex);\n }\n return [];\n }\n\n async delete(key: string): Promise<void> {\n this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n}\n"]}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
1
3
|
// src/request-context/index.ts
|
|
4
|
+
var MASTRA_RESOURCE_ID_KEY = "mastra__resourceId";
|
|
5
|
+
var MASTRA_THREAD_ID_KEY = "mastra__threadId";
|
|
2
6
|
var RequestContext = class {
|
|
3
7
|
registry = /* @__PURE__ */ new Map();
|
|
4
8
|
constructor(iterable) {
|
|
@@ -73,6 +77,8 @@ var RequestContext = class {
|
|
|
73
77
|
}
|
|
74
78
|
};
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
exports.MASTRA_RESOURCE_ID_KEY = MASTRA_RESOURCE_ID_KEY;
|
|
81
|
+
exports.MASTRA_THREAD_ID_KEY = MASTRA_THREAD_ID_KEY;
|
|
82
|
+
exports.RequestContext = RequestContext;
|
|
83
|
+
//# sourceMappingURL=chunk-UVHSM2GU.cjs.map
|
|
84
|
+
//# sourceMappingURL=chunk-UVHSM2GU.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/request-context/index.ts"],"names":[],"mappings":";;;AAgBO,IAAM,sBAAA,GAAyB;AAc/B,IAAM,oBAAA,GAAuB;AAE7B,IAAM,iBAAN,MAA6E;AAAA,EAC1E,QAAA,uBAAe,GAAA,EAAqB;AAAA,EAE5C,YACE,QAAA,EAGA;AACA,IAAA,IAAA,CAAK,QAAA,GAAW,IAAI,GAAA,CAAI,QAAQ,CAAA;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKO,GAAA,CACL,KACA,KAAA,EACM;AAEN,IAAA,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAA,EAAe,KAAK,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKO,IAGL,GAAA,EAAW;AACX,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAa,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKO,IAA0E,GAAA,EAAiB;AAChG,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKO,OAA6E,GAAA,EAAiB;AACnG,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKO,KAAA,GAAc;AACnB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA,EAKO,IAAA,GAA4F;AACjG,IAAA,OAAO,IAAA,CAAK,SAAS,IAAA,EAAK;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA,EAKO,MAAA,GAAuG;AAC5G,IAAA,OAAO,IAAA,CAAK,SAAS,MAAA,EAAO;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKO,OAAA,GAEL;AACA,IAAA,OAAO,IAAA,CAAK,SAAS,OAAA,EAAQ;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKO,IAAA,GAAe;AACpB,IAAA,OAAO,KAAK,QAAA,CAAS,IAAA;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKO,QAAiB,UAAA,EAA0E;AAChG,IAAA,IAAA,CAAK,QAAA,CAAS,QAAQ,UAAiB,CAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,MAAA,GAA8B;AACnC,IAAA,OAAO,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA;AAAA,EACzC;AACF","file":"chunk-UVHSM2GU.cjs","sourcesContent":["type RecordToTuple<T> = {\n [K in keyof T]: [K, T[K]];\n}[keyof T][];\n\n/**\n * Reserved key for setting resourceId from middleware.\n * When set in RequestContext, this takes precedence over client-provided values\n * for security (prevents attackers from hijacking another user's memory).\n *\n * @example\n * ```typescript\n * // In your auth middleware:\n * const requestContext = c.get('requestContext');\n * requestContext.set(MASTRA_RESOURCE_ID_KEY, authenticatedUser.id);\n * ```\n */\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\n/**\n * Reserved key for setting threadId from middleware.\n * When set in RequestContext, this takes precedence over client-provided values\n * for security (prevents attackers from hijacking another user's memory).\n *\n * @example\n * ```typescript\n * // In your auth middleware:\n * const requestContext = c.get('requestContext');\n * requestContext.set(MASTRA_THREAD_ID_KEY, threadId);\n * ```\n */\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\nexport class RequestContext<Values extends Record<string, any> | unknown = unknown> {\n private registry = new Map<string, unknown>();\n\n constructor(\n iterable?: Values extends Record<string, any>\n ? RecordToTuple<Partial<Values>>\n : Iterable<readonly [string, unknown]>,\n ) {\n this.registry = new Map(iterable);\n }\n\n /**\n * set a value with strict typing if `Values` is a Record and the key exists in it.\n */\n public set<K extends Values extends Record<string, any> ? keyof Values : string>(\n key: K,\n value: Values extends Record<string, any> ? (K extends keyof Values ? Values[K] : never) : unknown,\n ): void {\n // The type assertion `key as string` is safe because K always extends string ultimately.\n this.registry.set(key as string, value);\n }\n\n /**\n * Get a value with its type\n */\n public get<\n K extends Values extends Record<string, any> ? keyof Values : string,\n R = Values extends Record<string, any> ? (K extends keyof Values ? Values[K] : never) : unknown,\n >(key: K): R {\n return this.registry.get(key as string) as R;\n }\n\n /**\n * Check if a key exists in the container\n */\n public has<K extends Values extends Record<string, any> ? keyof Values : string>(key: K): boolean {\n return this.registry.has(key);\n }\n\n /**\n * Delete a value by key\n */\n public delete<K extends Values extends Record<string, any> ? keyof Values : string>(key: K): boolean {\n return this.registry.delete(key);\n }\n\n /**\n * Clear all values from the container\n */\n public clear(): void {\n this.registry.clear();\n }\n\n /**\n * Get all keys in the container\n */\n public keys<R = Values extends Record<string, any> ? keyof Values : string>(): IterableIterator<R> {\n return this.registry.keys() as IterableIterator<R>;\n }\n\n /**\n * Get all values in the container\n */\n public values<R = Values extends Record<string, any> ? Values[keyof Values] : unknown>(): IterableIterator<R> {\n return this.registry.values() as IterableIterator<R>;\n }\n\n /**\n * Get all entries in the container\n */\n public entries<R = Values extends Record<string, any> ? Values[keyof Values] : unknown>(): IterableIterator<\n [string, R]\n > {\n return this.registry.entries() as IterableIterator<[string, R]>;\n }\n\n /**\n * Get the size of the container\n */\n public size(): number {\n return this.registry.size;\n }\n\n /**\n * Execute a function for each entry in the container\n */\n public forEach<T = any>(callbackfn: (value: T, key: string, map: Map<string, any>) => void): void {\n this.registry.forEach(callbackfn as any);\n }\n\n /**\n * Custom JSON serialization method\n * Converts the internal Map to a plain object for proper JSON serialization\n */\n public toJSON(): Record<string, any> {\n return Object.fromEntries(this.registry);\n }\n}\n"]}
|