@mastra/core 1.0.0-beta.5 → 1.0.0-beta.6
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 +273 -0
- package/dist/agent/agent-legacy.d.ts +17 -20
- 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 +4 -4
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.types.d.ts +1 -1
- 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 +49 -0
- package/dist/agent/message-list/index.d.ts.map +1 -1
- package/dist/agent/message-list/index.js +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 +18 -3
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/utils.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/index.d.ts +10 -10
- package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +1 -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 +4 -4
- 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 +4 -4
- package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/schema.d.ts +12 -13
- package/dist/agent/workflows/prepare-stream/schema.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-OJNJA5ZI.js → chunk-3CKZSDTQ.js} +3 -3
- package/dist/{chunk-OJNJA5ZI.js.map → chunk-3CKZSDTQ.js.map} +1 -1
- package/dist/{chunk-TQTAMPSC.js → chunk-3N3QE4ZK.js} +3 -3
- package/dist/chunk-3N3QE4ZK.js.map +1 -0
- package/dist/{chunk-XJQX54QP.cjs → chunk-3TKNXJES.cjs} +56 -15
- package/dist/chunk-3TKNXJES.cjs.map +1 -0
- package/dist/{chunk-XBO6W7LZ.js → chunk-45NA5ZD3.js} +6114 -4146
- package/dist/chunk-45NA5ZD3.js.map +1 -0
- package/dist/{chunk-XIDKHXNR.js → chunk-4F6RAJFU.js} +33 -6
- package/dist/chunk-4F6RAJFU.js.map +1 -0
- package/dist/{chunk-ISMGVGUM.cjs → chunk-4JKEUSCC.cjs} +4 -4
- package/dist/{chunk-ISMGVGUM.cjs.map → chunk-4JKEUSCC.cjs.map} +1 -1
- package/dist/{chunk-U3VE2EVB.cjs → chunk-4KUOSXJ7.cjs} +30 -16
- package/dist/chunk-4KUOSXJ7.cjs.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-3B2OPLGG.js → chunk-6GOLI2EY.js} +13 -7
- package/dist/chunk-6GOLI2EY.js.map +1 -0
- package/dist/{chunk-VYJXTHII.cjs → chunk-6J4NRNT2.cjs} +183 -12
- package/dist/chunk-6J4NRNT2.cjs.map +1 -0
- package/dist/{chunk-J7O6WENZ.cjs → chunk-6TBWJV35.js} +5 -5
- package/dist/chunk-6TBWJV35.js.map +1 -0
- package/dist/{chunk-DSNPWVIG.cjs → chunk-AF74UXR5.cjs} +4 -3
- package/dist/chunk-AF74UXR5.cjs.map +1 -0
- package/dist/{chunk-YDFX3JR2.js → chunk-APMPOYPI.js} +173 -11
- package/dist/chunk-APMPOYPI.js.map +1 -0
- package/dist/{chunk-X7F4CSGR.cjs → chunk-AQAIS7FH.cjs} +2 -2
- package/dist/chunk-AQAIS7FH.cjs.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-5SA2EZ33.js → chunk-DXMSVGJ6.js} +182 -11
- package/dist/chunk-DXMSVGJ6.js.map +1 -0
- package/dist/{chunk-Y63IFHEZ.cjs → chunk-EOPEDKLG.cjs} +4 -4
- package/dist/chunk-EOPEDKLG.cjs.map +1 -0
- package/dist/{chunk-NZAXAFI3.js → chunk-F2GAJSBI.js} +3 -3
- package/dist/{chunk-NZAXAFI3.js.map → chunk-F2GAJSBI.js.map} +1 -1
- package/dist/{chunk-KIZIOFZC.js → chunk-FYP3AT6W.js} +17 -3
- package/dist/chunk-FYP3AT6W.js.map +1 -0
- package/dist/{chunk-BMAFVZ2D.cjs → chunk-IWTMMUQY.cjs} +4 -4
- package/dist/{chunk-BMAFVZ2D.cjs.map → chunk-IWTMMUQY.cjs.map} +1 -1
- package/dist/{chunk-PC6EKOWK.js → chunk-KZLP6TPJ.js} +19 -31
- package/dist/chunk-KZLP6TPJ.js.map +1 -0
- package/dist/{chunk-556MJ7CL.cjs → chunk-LDWBLENZ.cjs} +43 -37
- package/dist/chunk-LDWBLENZ.cjs.map +1 -0
- package/dist/{chunk-5O52O25J.js → chunk-LEZIKVRQ.js} +2 -2
- package/dist/chunk-LEZIKVRQ.js.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-E7K4FTLN.cjs → chunk-NHNXIYDG.cjs} +18 -2
- package/dist/chunk-NHNXIYDG.cjs.map +1 -0
- package/dist/{chunk-T2CJRA6E.js → chunk-NIUEWICQ.js} +145 -19
- package/dist/chunk-NIUEWICQ.js.map +1 -0
- package/dist/{chunk-KP42JLXE.cjs → chunk-NN3NOFRU.cjs} +6121 -4141
- package/dist/chunk-NN3NOFRU.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-KWWD3U7G.cjs → chunk-OIMB2SNZ.cjs} +155 -29
- package/dist/chunk-OIMB2SNZ.cjs.map +1 -0
- package/dist/{chunk-ZTTMSCLU.js → chunk-OPALPWAM.js} +47 -8
- package/dist/chunk-OPALPWAM.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-IITXXVYI.cjs → chunk-RHTV5C5D.cjs} +4 -4
- package/dist/{chunk-IITXXVYI.cjs.map → chunk-RHTV5C5D.cjs.map} +1 -1
- package/dist/{chunk-RROQ46B6.cjs → chunk-RTROJFEU.cjs} +31 -47
- package/dist/chunk-RTROJFEU.cjs.map +1 -0
- package/dist/{chunk-NHP6ZIDG.cjs → chunk-S5FPOCQF.cjs} +17 -163
- package/dist/chunk-S5FPOCQF.cjs.map +1 -0
- package/dist/{chunk-OUUPUAGA.cjs → chunk-SQAX4OW6.cjs} +163 -10
- package/dist/chunk-SQAX4OW6.cjs.map +1 -0
- package/dist/{chunk-D7CJ4HIQ.js → chunk-TARWUQG6.js} +8 -154
- package/dist/chunk-TARWUQG6.js.map +1 -0
- package/dist/{chunk-76K3IYWM.js → chunk-TS7B26US.js} +3 -3
- package/dist/{chunk-76K3IYWM.js.map → chunk-TS7B26US.js.map} +1 -1
- 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-DQIZ5FFX.cjs → chunk-VRFSEZBA.cjs} +173 -11
- package/dist/chunk-VRFSEZBA.cjs.map +1 -0
- package/dist/{chunk-B5J5HYDN.js → chunk-WDRA4WKG.js} +159 -7
- package/dist/chunk-WDRA4WKG.js.map +1 -0
- package/dist/{chunk-3ZQ7LX73.js → chunk-WMAMOYRR.js} +3 -3
- package/dist/{chunk-3ZQ7LX73.js.map → chunk-WMAMOYRR.js.map} +1 -1
- package/dist/{chunk-KJIQGPQR.js → chunk-XY337TTF.js} +24 -10
- package/dist/chunk-XY337TTF.js.map +1 -0
- package/dist/{chunk-V537VSV4.cjs → chunk-Y24HI6ND.cjs} +37 -10
- package/dist/chunk-Y24HI6ND.cjs.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 +9 -1
- package/dist/evals/base.d.ts.map +1 -1
- package/dist/evals/index.cjs +9 -9
- package/dist/evals/index.js +2 -2
- package/dist/evals/scoreTraces/index.cjs +5 -5
- package/dist/evals/scoreTraces/index.js +2 -2
- package/dist/evals/types.d.ts +8 -8
- 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 +11 -11
- package/dist/llm/index.js +3 -3
- package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
- package/dist/llm/model/model.d.ts.map +1 -1
- package/dist/llm/model/model.loop.d.ts +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/llm/model/provider-registry.d.ts.map +1 -1
- package/dist/llm/model/provider-types.generated.d.ts +53 -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 +2 -2
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
- package/dist/loop/types.d.ts +5 -2
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts +96 -96
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +65 -65
- 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 +32 -32
- package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts +97 -97
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/loop/workflows/schema.d.ts +32 -32
- 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 +55 -0
- 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.js +2 -2
- package/dist/memory/index.cjs +21 -382
- package/dist/memory/index.cjs.map +1 -1
- package/dist/memory/index.js +1 -382
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/memory.d.ts +22 -18
- package/dist/memory/memory.d.ts.map +1 -1
- package/dist/memory/mock.d.ts +6 -1
- 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/netlify-C2YBIK7A.js +3 -0
- package/dist/{netlify-RX3JXCFQ.js.map → netlify-C2YBIK7A.js.map} +1 -1
- package/dist/netlify-XWROOTP4.cjs +12 -0
- package/dist/{netlify-MXBOGAJR.cjs.map → netlify-XWROOTP4.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 +165 -3
- 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 +99 -21
- 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/index.d.ts +2 -1
- package/dist/processors/processors/index.d.ts.map +1 -1
- package/dist/processors/processors/language-detector.d.ts +14 -0
- package/dist/processors/processors/language-detector.d.ts.map +1 -1
- package/dist/processors/processors/moderation.d.ts +14 -0
- package/dist/processors/processors/moderation.d.ts.map +1 -1
- package/dist/processors/processors/pii-detector.d.ts +14 -0
- package/dist/processors/processors/pii-detector.d.ts.map +1 -1
- package/dist/processors/processors/prompt-injection-detector.d.ts +14 -0
- package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
- package/dist/processors/processors/structured-output.d.ts +2 -1
- package/dist/processors/processors/structured-output.d.ts.map +1 -1
- package/dist/processors/processors/token-limiter.d.ts +21 -11
- 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/runner.d.ts +35 -4
- package/dist/processors/runner.d.ts.map +1 -1
- package/dist/provider-registry-BXX7CA3H.cjs +40 -0
- package/dist/{provider-registry-NBRXBOQT.cjs.map → provider-registry-BXX7CA3H.cjs.map} +1 -1
- package/dist/provider-registry-GRYJWVEM.js +3 -0
- package/dist/{provider-registry-3LUCE7FT.js.map → provider-registry-GRYJWVEM.js.map} +1 -1
- package/dist/provider-registry.json +147 -3
- package/dist/{registry-generator-DEPPRYYJ.cjs → registry-generator-34SC4TAU.cjs} +2 -2
- package/dist/registry-generator-34SC4TAU.cjs.map +1 -0
- package/dist/{registry-generator-FLW6NV42.js → registry-generator-UMTNPBJX.js} +2 -2
- 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/base.d.ts +51 -0
- package/dist/server/base.d.ts.map +1 -0
- package/dist/server/index.cjs +81 -2
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +79 -2
- 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/domains/memory/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +37 -29
- package/dist/storage/index.js +1 -1
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/utils.d.ts +44 -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/v5/output.d.ts +1 -1
- 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/output-format-handlers.d.ts +1 -1
- package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
- package/dist/stream/base/output.d.ts +1 -1
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +11 -11
- package/dist/stream/index.js +2 -2
- package/dist/stream/types.d.ts +2 -0
- package/dist/stream/types.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.cjs +36 -2
- package/dist/test-utils/llm-mock.cjs.map +1 -1
- package/dist/test-utils/llm-mock.d.ts +3 -0
- package/dist/test-utils/llm-mock.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.js +32 -2
- 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 +1 -1
- package/dist/tools/stream.d.ts.map +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/tool.d.ts +13 -0
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/types.d.ts +22 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/validation.d.ts +1 -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/utils.cjs +22 -22
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +2 -2
- package/dist/vector/index.js +1 -1
- package/dist/voice/index.cjs +6 -6
- package/dist/voice/index.js +1 -1
- package/dist/workflows/default.d.ts +176 -281
- package/dist/workflows/default.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/execution-engine.d.ts +4 -2
- package/dist/workflows/execution-engine.d.ts.map +1 -1
- package/dist/workflows/handlers/control-flow.d.ts +135 -0
- package/dist/workflows/handlers/control-flow.d.ts.map +1 -0
- package/dist/workflows/handlers/entry.d.ts +45 -0
- package/dist/workflows/handlers/entry.d.ts.map +1 -0
- package/dist/workflows/handlers/sleep.d.ts +62 -0
- package/dist/workflows/handlers/sleep.d.ts.map +1 -0
- package/dist/workflows/handlers/step.d.ts +60 -0
- package/dist/workflows/handlers/step.d.ts.map +1 -0
- package/dist/workflows/index.cjs +20 -20
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/step.d.ts +1 -0
- package/dist/workflows/step.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +157 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +8 -6
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/llm/model/provider-types.generated.d.ts +53 -1
- package/dist/chunk-3B2OPLGG.js.map +0 -1
- package/dist/chunk-3PSWNGBF.js +0 -3
- package/dist/chunk-3PSWNGBF.js.map +0 -1
- package/dist/chunk-436FFEF6.js +0 -34
- package/dist/chunk-436FFEF6.js.map +0 -1
- package/dist/chunk-556MJ7CL.cjs.map +0 -1
- package/dist/chunk-5O52O25J.js.map +0 -1
- package/dist/chunk-5SA2EZ33.js.map +0 -1
- package/dist/chunk-B5J5HYDN.js.map +0 -1
- package/dist/chunk-D7CJ4HIQ.js.map +0 -1
- package/dist/chunk-DQIZ5FFX.cjs.map +0 -1
- package/dist/chunk-DSNPWVIG.cjs.map +0 -1
- package/dist/chunk-E7K4FTLN.cjs.map +0 -1
- package/dist/chunk-GRBGQ2GE.js.map +0 -1
- package/dist/chunk-J7O6WENZ.cjs.map +0 -1
- package/dist/chunk-KIZIOFZC.js.map +0 -1
- package/dist/chunk-KJ2SW6VA.js.map +0 -1
- package/dist/chunk-KJIQGPQR.js.map +0 -1
- package/dist/chunk-KP42JLXE.cjs.map +0 -1
- package/dist/chunk-KWWD3U7G.cjs.map +0 -1
- package/dist/chunk-NHP6ZIDG.cjs.map +0 -1
- package/dist/chunk-OUUPUAGA.cjs.map +0 -1
- package/dist/chunk-PC6EKOWK.js.map +0 -1
- package/dist/chunk-PE3V7GUL.cjs +0 -4
- package/dist/chunk-PE3V7GUL.cjs.map +0 -1
- package/dist/chunk-RROQ46B6.cjs.map +0 -1
- package/dist/chunk-T2CJRA6E.js.map +0 -1
- package/dist/chunk-TQTAMPSC.js.map +0 -1
- package/dist/chunk-U3VE2EVB.cjs.map +0 -1
- package/dist/chunk-V3VLOOSW.cjs +0 -36
- package/dist/chunk-V3VLOOSW.cjs.map +0 -1
- package/dist/chunk-V537VSV4.cjs.map +0 -1
- package/dist/chunk-VYJXTHII.cjs.map +0 -1
- package/dist/chunk-X7F4CSGR.cjs.map +0 -1
- package/dist/chunk-XBO6W7LZ.js.map +0 -1
- package/dist/chunk-XIDKHXNR.js.map +0 -1
- package/dist/chunk-XJQX54QP.cjs.map +0 -1
- package/dist/chunk-Y63IFHEZ.cjs.map +0 -1
- package/dist/chunk-YDFX3JR2.js.map +0 -1
- package/dist/chunk-ZTTMSCLU.js.map +0 -1
- package/dist/netlify-MXBOGAJR.cjs +0 -12
- package/dist/netlify-RX3JXCFQ.js +0 -3
- package/dist/provider-registry-3LUCE7FT.js +0 -3
- package/dist/provider-registry-NBRXBOQT.cjs +0 -40
- package/dist/registry-generator-DEPPRYYJ.cjs.map +0 -1
- package/dist/registry-generator-FLW6NV42.js.map +0 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ModelsDevGateway, parseModelRouterId } from './chunk-T2UNO766.js';
|
|
2
|
-
import { NetlifyGateway } from './chunk-
|
|
2
|
+
import { NetlifyGateway } from './chunk-WMAMOYRR.js';
|
|
3
3
|
import { MastraModelGateway, createOpenAICompatible, createOpenAI, createGoogleGenerativeAI } from './chunk-7ZADRRDW.js';
|
|
4
|
-
import { PROVIDER_REGISTRY, GatewayRegistry } from './chunk-
|
|
4
|
+
import { PROVIDER_REGISTRY, GatewayRegistry } from './chunk-DXMSVGJ6.js';
|
|
5
|
+
import { AISDKV5LanguageModel } from './chunk-WDRA4WKG.js';
|
|
6
|
+
import { InMemoryServerCache } from './chunk-3CKZSDTQ.js';
|
|
5
7
|
import { MastraError } from './chunk-JJ5O45LH.js';
|
|
6
|
-
import { RequestContext } from './chunk-
|
|
7
|
-
import {
|
|
8
|
+
import { RequestContext } from './chunk-6TBWJV35.js';
|
|
9
|
+
import { createHash } from 'crypto';
|
|
8
10
|
import { createAzure } from '@ai-sdk/azure';
|
|
9
|
-
import { createHash, randomUUID } from 'crypto';
|
|
10
11
|
|
|
11
12
|
var AzureOpenAIGateway = class extends MastraModelGateway {
|
|
12
13
|
constructor(config) {
|
|
@@ -238,153 +239,6 @@ function findGatewayForModel(gatewayId, gateways) {
|
|
|
238
239
|
text: `No Mastra model router gateway found for model id ${gatewayId}`
|
|
239
240
|
});
|
|
240
241
|
}
|
|
241
|
-
var AISDKV5LanguageModel = class {
|
|
242
|
-
/**
|
|
243
|
-
* The language model must specify which language model interface version it implements.
|
|
244
|
-
*/
|
|
245
|
-
specificationVersion = "v2";
|
|
246
|
-
/**
|
|
247
|
-
* Name of the provider for logging purposes.
|
|
248
|
-
*/
|
|
249
|
-
provider;
|
|
250
|
-
/**
|
|
251
|
-
* Provider-specific model ID for logging purposes.
|
|
252
|
-
*/
|
|
253
|
-
modelId;
|
|
254
|
-
/**
|
|
255
|
-
* Supported URL patterns by media type for the provider.
|
|
256
|
-
*
|
|
257
|
-
* The keys are media type patterns or full media types (e.g. `*\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).
|
|
258
|
-
* and the values are arrays of regular expressions that match the URL paths.
|
|
259
|
-
* The matching should be against lower-case URLs.
|
|
260
|
-
* Matched URLs are supported natively by the model and are not downloaded.
|
|
261
|
-
* @returns A map of supported URL patterns by media type (as a promise or a plain object).
|
|
262
|
-
*/
|
|
263
|
-
supportedUrls;
|
|
264
|
-
#model;
|
|
265
|
-
constructor(config) {
|
|
266
|
-
this.#model = config;
|
|
267
|
-
this.provider = this.#model.provider;
|
|
268
|
-
this.modelId = this.#model.modelId;
|
|
269
|
-
this.supportedUrls = this.#model.supportedUrls;
|
|
270
|
-
}
|
|
271
|
-
async doGenerate(options) {
|
|
272
|
-
const result = await this.#model.doGenerate(options);
|
|
273
|
-
return {
|
|
274
|
-
request: result.request,
|
|
275
|
-
response: result.response,
|
|
276
|
-
stream: new ReadableStream({
|
|
277
|
-
start(controller) {
|
|
278
|
-
controller.enqueue({ type: "stream-start", warnings: result.warnings });
|
|
279
|
-
controller.enqueue({
|
|
280
|
-
type: "response-metadata",
|
|
281
|
-
id: result.response?.id,
|
|
282
|
-
modelId: result.response?.modelId,
|
|
283
|
-
timestamp: result.response?.timestamp
|
|
284
|
-
});
|
|
285
|
-
for (const message of result.content) {
|
|
286
|
-
if (message.type === "tool-call") {
|
|
287
|
-
const toolCall = message;
|
|
288
|
-
controller.enqueue({
|
|
289
|
-
type: "tool-input-start",
|
|
290
|
-
id: toolCall.toolCallId,
|
|
291
|
-
toolName: toolCall.toolName
|
|
292
|
-
});
|
|
293
|
-
controller.enqueue({
|
|
294
|
-
type: "tool-input-delta",
|
|
295
|
-
id: toolCall.toolCallId,
|
|
296
|
-
delta: toolCall.input
|
|
297
|
-
});
|
|
298
|
-
controller.enqueue({
|
|
299
|
-
type: "tool-input-end",
|
|
300
|
-
id: toolCall.toolCallId
|
|
301
|
-
});
|
|
302
|
-
controller.enqueue(toolCall);
|
|
303
|
-
} else if (message.type === "tool-result") {
|
|
304
|
-
const toolResult = message;
|
|
305
|
-
controller.enqueue(toolResult);
|
|
306
|
-
} else if (message.type === "text") {
|
|
307
|
-
const text = message;
|
|
308
|
-
const id = `msg_${randomUUID()}`;
|
|
309
|
-
controller.enqueue({
|
|
310
|
-
type: "text-start",
|
|
311
|
-
id,
|
|
312
|
-
providerMetadata: text.providerMetadata
|
|
313
|
-
});
|
|
314
|
-
controller.enqueue({
|
|
315
|
-
type: "text-delta",
|
|
316
|
-
id,
|
|
317
|
-
delta: text.text
|
|
318
|
-
});
|
|
319
|
-
controller.enqueue({
|
|
320
|
-
type: "text-end",
|
|
321
|
-
id
|
|
322
|
-
});
|
|
323
|
-
} else if (message.type === "reasoning") {
|
|
324
|
-
const id = `reasoning_${randomUUID()}`;
|
|
325
|
-
const reasoning = message;
|
|
326
|
-
controller.enqueue({
|
|
327
|
-
type: "reasoning-start",
|
|
328
|
-
id,
|
|
329
|
-
providerMetadata: reasoning.providerMetadata
|
|
330
|
-
});
|
|
331
|
-
controller.enqueue({
|
|
332
|
-
type: "reasoning-delta",
|
|
333
|
-
id,
|
|
334
|
-
delta: reasoning.text,
|
|
335
|
-
providerMetadata: reasoning.providerMetadata
|
|
336
|
-
});
|
|
337
|
-
controller.enqueue({
|
|
338
|
-
type: "reasoning-end",
|
|
339
|
-
id,
|
|
340
|
-
providerMetadata: reasoning.providerMetadata
|
|
341
|
-
});
|
|
342
|
-
} else if (message.type === "file") {
|
|
343
|
-
const file = message;
|
|
344
|
-
controller.enqueue({
|
|
345
|
-
type: "file",
|
|
346
|
-
mediaType: file.mediaType,
|
|
347
|
-
data: file.data
|
|
348
|
-
});
|
|
349
|
-
} else if (message.type === "source") {
|
|
350
|
-
const source = message;
|
|
351
|
-
if (source.sourceType === "url") {
|
|
352
|
-
controller.enqueue({
|
|
353
|
-
type: "source",
|
|
354
|
-
id: source.id,
|
|
355
|
-
sourceType: "url",
|
|
356
|
-
url: source.url,
|
|
357
|
-
title: source.title,
|
|
358
|
-
providerMetadata: source.providerMetadata
|
|
359
|
-
});
|
|
360
|
-
} else {
|
|
361
|
-
controller.enqueue({
|
|
362
|
-
type: "source",
|
|
363
|
-
id: source.id,
|
|
364
|
-
sourceType: "document",
|
|
365
|
-
mediaType: source.mediaType,
|
|
366
|
-
filename: source.filename,
|
|
367
|
-
title: source.title,
|
|
368
|
-
providerMetadata: source.providerMetadata
|
|
369
|
-
});
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
controller.enqueue({
|
|
374
|
-
type: "finish",
|
|
375
|
-
finishReason: result.finishReason,
|
|
376
|
-
usage: result.usage,
|
|
377
|
-
providerMetadata: result.providerMetadata
|
|
378
|
-
});
|
|
379
|
-
controller.close();
|
|
380
|
-
}
|
|
381
|
-
})
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
async doStream(options) {
|
|
385
|
-
return await this.#model.doStream(options);
|
|
386
|
-
}
|
|
387
|
-
};
|
|
388
242
|
|
|
389
243
|
// src/llm/model/router.ts
|
|
390
244
|
function getStaticProvidersByGateway(name) {
|
|
@@ -655,5 +509,5 @@ var ModelRouterEmbeddingModel = class {
|
|
|
655
509
|
};
|
|
656
510
|
|
|
657
511
|
export { AzureOpenAIGateway, ModelRouterEmbeddingModel, ModelRouterLanguageModel, resolveModelConfig };
|
|
658
|
-
//# sourceMappingURL=chunk-
|
|
659
|
-
//# sourceMappingURL=chunk-
|
|
512
|
+
//# sourceMappingURL=chunk-TARWUQG6.js.map
|
|
513
|
+
//# sourceMappingURL=chunk-TARWUQG6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/index.ts","../src/llm/model/router.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["modelInstance"],"mappings":"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","file":"chunk-TARWUQG6.js","sourcesContent":["import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey: string;\n apiVersion?: string;\n deployments?: string[];\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey is required for Azure OpenAI gateway',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise<string> {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise<AzureDeployment[]> {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise<string> {\n return this.config.apiKey;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n }): Promise<LanguageModelV2> {\n const apiVersion = this.config.apiVersion || '2024-04-01-preview';\n\n return createAzure({\n resourceName: this.config.resourceName,\n apiKey,\n apiVersion,\n useDeploymentBasedUrls: true,\n })(modelId);\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig } from './base.js';\nexport { AzureOpenAIGateway, type AzureOpenAIGatewayConfig } from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { NetlifyGateway } from './netlify.js';\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(gatewayId: string, gateways: MastraModelGateway[]): MastraModelGateway {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(\n (g: MastraModelGateway) => g.id !== 'models.dev' && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`)),\n );\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find((g: MastraModelGateway) => g.id === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { parseModelRouterId } from './gateway-resolver.js';\nimport type { MastraModelGateway } from './gateways/base.js';\nimport { findGatewayForModel } from './gateways/index.js';\n\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * @deprecated Use defaultGateways instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n readonly supportedUrls = {} as Record<string, RegExp[]>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig & { routerId: string };\n private gateway: MastraModelGateway;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGateway[]) {\n // Normalize config to always have an 'id' field for routing\n let normalizedConfig: {\n id: `${string}/${string}`;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n normalizedConfig = { id: config as `${string}/${string}` };\n } else if ('providerId' in config && 'modelId' in config) {\n // Convert providerId/modelId to id format\n normalizedConfig = {\n id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n normalizedConfig = {\n id: config.id,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n const parsedConfig: {\n id: `${string}/${string}`;\n routerId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n } = {\n ...normalizedConfig,\n routerId: normalizedConfig.id,\n };\n\n // Resolve gateway once using the normalized ID\n this.gateway = findGatewayForModel(normalizedConfig.id, [...(customGateways || []), ...defaultGateways]);\n // Extract provider from id if present\n // Gateway ID is used as prefix (except for models.dev which is a provider registry)\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);\n\n this.provider = parsed.providerId || 'openai-compatible';\n\n if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {\n parsedConfig.id = parsed.modelId as `${string}/${string}`;\n }\n\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doGenerate(options);\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n // Validate API key and return error stream if validation fails\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doStream(options);\n }\n\n private async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<LanguageModelV2> {\n const key = createHash('sha256')\n .update(\n this.gateway.id +\n modelId +\n providerId +\n apiKey +\n (this.config.url || '') +\n (headers ? JSON.stringify(headers) : ''),\n )\n .digest('hex');\n if (ModelRouterLanguageModel.modelInstances.has(key)) return ModelRouterLanguageModel.modelInstances.get(key)!;\n\n // If custom URL is provided, use it directly with openai-compatible\n if (this.config.url) {\n const modelInstance = createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL: this.config.url,\n headers: this.config.headers,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n\n const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n private static modelInstances = new Map<string, LanguageModelV2>();\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type { MastraModelConfig, OpenAICompatibleConfig, MastraLanguageModel } from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n // Check for OpenAICompatibleConfig - it should have either:\n // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n // 2. Both 'providerId' and 'modelId' fields\n if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n if ('id' in modelConfig) return true;\n if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n }\n return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n * id: \"openai/gpt-4o\",\n * apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n * ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n requestContext: RequestContext = new RequestContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ requestContext, mastra });\n }\n\n // Filter out custom language model instances\n // TODO need a better trick, maybme symbol\n if (modelConfig instanceof ModelRouterLanguageModel || modelConfig instanceof AISDKV5LanguageModel) {\n return modelConfig;\n }\n\n // If it's already a LanguageModel, return it\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n if (modelConfig.specificationVersion === 'v2') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n\n return modelConfig;\n }\n\n const gatewayRecord = mastra?.listGateways();\n const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n return new ModelRouterLanguageModel(modelConfig, customGateways);\n }\n\n throw new Error('Invalid model configuration provided');\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\n\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n id: string;\n provider: string;\n dimensions: number;\n maxInputTokens: number;\n description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n // OpenAI\n {\n id: 'text-embedding-3-small',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-small model',\n },\n {\n id: 'text-embedding-3-large',\n provider: 'openai',\n dimensions: 3072,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-large model',\n },\n {\n id: 'text-embedding-ada-002',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-ada-002 model',\n },\n // Google\n {\n id: 'gemini-embedding-001',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 2048,\n description: 'Google gemini-embedding-001 model',\n },\n {\n id: 'text-embedding-004',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 3072,\n description: 'Google text-embedding-004 model',\n },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n | 'openai/text-embedding-3-small'\n | 'openai/text-embedding-3-large'\n | 'openai/text-embedding-ada-002'\n | 'google/gemini-embedding-001'\n | 'google/text-embedding-004';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2' as const;\n readonly modelId: string;\n readonly provider: string;\n maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n private providerModel: EmbeddingModelV2<VALUE>;\n\n constructor(config: string | OpenAICompatibleConfig) {\n // Normalize config to always have provider and model IDs\n let normalizedConfig: {\n providerId: string;\n modelId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n // Parse provider/model from string (e.g., \"openai/text-embedding-3-small\")\n const parts = config.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = { providerId, modelId };\n } else if ('providerId' in config && 'modelId' in config) {\n normalizedConfig = {\n providerId: config.providerId,\n modelId: config.modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n const parts = config.id.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = {\n providerId,\n modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n this.provider = normalizedConfig.providerId;\n this.modelId = normalizedConfig.modelId;\n\n // If custom URL is provided, skip provider registry validation\n // and use the provided API key (or empty string if not provided)\n if (normalizedConfig.url) {\n const apiKey = normalizedConfig.apiKey || '';\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: normalizedConfig.url,\n headers: normalizedConfig.headers,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n } else {\n // Get provider config from registry\n const registry = GatewayRegistry.getInstance();\n const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n }\n\n // Get API key from config or environment\n let apiKey = normalizedConfig.apiKey;\n if (!apiKey) {\n const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n if (Array.isArray(apiKeyEnvVar)) {\n // Try each possible environment variable\n for (const envVar of apiKeyEnvVar) {\n apiKey = process.env[envVar];\n if (apiKey) break;\n }\n } else {\n apiKey = process.env[apiKeyEnvVar];\n }\n }\n\n if (!apiKey) {\n const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n ? providerConfig.apiKeyEnvVar.join(' or ')\n : providerConfig.apiKeyEnvVar;\n throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n }\n\n // Initialize the provider model directly in constructor\n if (normalizedConfig.providerId === 'openai') {\n this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else if (normalizedConfig.providerId === 'google') {\n this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else {\n // Use OpenAI-compatible provider for other providers\n if (!providerConfig.url) {\n throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n }\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: providerConfig.url,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n }\n }\n\n // Copy properties from the provider model if available\n if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n }\n if (this.providerModel.supportsParallelCalls !== undefined) {\n this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n }\n }\n\n async doEmbed(\n args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n return this.providerModel.doEmbed(args);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SpanType } from './chunk-
|
|
1
|
+
import { SpanType } from './chunk-FYP3AT6W.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
var scoringExtractStepResultSchema = z.record(z.string(), z.any()).optional();
|
|
@@ -38,5 +38,5 @@ var saveScorePayloadSchema = z.object({
|
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
export { saveScorePayloadSchema, scoreResultSchema, scoringExtractStepResultSchema, scoringValueSchema };
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-TS7B26US.js.map
|
|
42
|
+
//# sourceMappingURL=chunk-TS7B26US.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/evals/types.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/evals/types.ts"],"names":[],"mappings":"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","file":"chunk-TS7B26US.js","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 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"]}
|
|
@@ -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"]}
|