@mastra/core 0.24.5 → 0.24.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 +612 -0
- package/dist/agent/agent.d.ts +8 -6
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.types.d.ts +2 -0
- package/dist/agent/agent.types.d.ts.map +1 -1
- package/dist/agent/index.cjs +13 -13
- package/dist/agent/index.js +2 -2
- package/dist/agent/input-processor/index.cjs +6 -6
- package/dist/agent/input-processor/index.js +1 -1
- package/dist/agent/message-list/index.d.ts.map +1 -1
- package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
- package/dist/agent/test-utils.d.ts +4 -3
- package/dist/agent/test-utils.d.ts.map +1 -1
- package/dist/agent/utils.d.ts.map +1 -1
- package/dist/agent/workflows/prepare-stream/index.d.ts +4 -4
- package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
- 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/schema.d.ts +4 -4
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts +8 -1
- package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
- package/dist/ai-tracing/index.cjs +36 -36
- package/dist/ai-tracing/index.js +1 -1
- package/dist/chunk-3PSWNGBF.js +3 -0
- package/dist/{chunk-ZV5CC35D.js.map → chunk-3PSWNGBF.js.map} +1 -1
- package/dist/{chunk-XHKMGOON.cjs → chunk-42RUESSD.cjs} +204 -150
- package/dist/chunk-42RUESSD.cjs.map +1 -0
- package/dist/{chunk-UD7DS7OY.cjs → chunk-46XGIEXM.cjs} +4 -4
- package/dist/{chunk-UD7DS7OY.cjs.map → chunk-46XGIEXM.cjs.map} +1 -1
- package/dist/{chunk-HGNRQ3OG.js → chunk-5O52O25J.js} +15 -8
- package/dist/chunk-5O52O25J.js.map +1 -0
- package/dist/{chunk-OLERJ2OU.js → chunk-6D2K2CAA.js} +7 -5
- package/dist/chunk-6D2K2CAA.js.map +1 -0
- package/dist/chunk-6XCINXZ7.cjs +194 -0
- package/dist/chunk-6XCINXZ7.cjs.map +1 -0
- package/dist/chunk-BJ6XIEC6.js +13 -0
- package/dist/chunk-BJ6XIEC6.js.map +1 -0
- package/dist/chunk-BWYU7D33.js +192 -0
- package/dist/chunk-BWYU7D33.js.map +1 -0
- package/dist/{chunk-R7UDZZA5.cjs → chunk-CT2DMHGC.cjs} +8 -8
- package/dist/{chunk-R7UDZZA5.cjs.map → chunk-CT2DMHGC.cjs.map} +1 -1
- package/dist/{chunk-YSQE5IHK.cjs → chunk-CYEQK4PM.cjs} +10 -8
- package/dist/chunk-CYEQK4PM.cjs.map +1 -0
- package/dist/{chunk-FCJ5INK7.js → chunk-DHLW4AP7.js} +3 -3
- package/dist/{chunk-FCJ5INK7.js.map → chunk-DHLW4AP7.js.map} +1 -1
- package/dist/{chunk-4UOIJRD6.cjs → chunk-GZDIHQDK.cjs} +4 -4
- package/dist/{chunk-4UOIJRD6.cjs.map → chunk-GZDIHQDK.cjs.map} +1 -1
- package/dist/{chunk-WCHE6FJ7.js → chunk-HCCXJ5YJ.js} +111 -6
- package/dist/chunk-HCCXJ5YJ.js.map +1 -0
- package/dist/{chunk-34ZCWSUA.js → chunk-HSX2K7HB.js} +15 -14
- package/dist/chunk-HSX2K7HB.js.map +1 -0
- package/dist/{chunk-LZFCR2SE.cjs → chunk-IAJHRFO4.cjs} +4 -4
- package/dist/{chunk-LZFCR2SE.cjs.map → chunk-IAJHRFO4.cjs.map} +1 -1
- package/dist/{chunk-4HQPVSGA.cjs → chunk-ICF3MCIN.cjs} +64 -12
- package/dist/chunk-ICF3MCIN.cjs.map +1 -0
- package/dist/{chunk-N2DOZAFH.js → chunk-INOOZ2A2.js} +760 -508
- package/dist/chunk-INOOZ2A2.js.map +1 -0
- package/dist/{chunk-3JX2Y3WH.cjs → chunk-IWU4YSYT.cjs} +16 -15
- package/dist/chunk-IWU4YSYT.cjs.map +1 -0
- package/dist/{chunk-3KVI2HLS.cjs → chunk-KWF3J2Q4.cjs} +11 -11
- package/dist/{chunk-3KVI2HLS.cjs.map → chunk-KWF3J2Q4.cjs.map} +1 -1
- package/dist/{chunk-TEW3ODXX.js → chunk-LAQQETGP.js} +36 -34
- package/dist/chunk-LAQQETGP.js.map +1 -0
- package/dist/{chunk-EUNOQ7HN.js → chunk-MRSBLBQ5.js} +4 -4
- package/dist/{chunk-EUNOQ7HN.js.map → chunk-MRSBLBQ5.js.map} +1 -1
- package/dist/{chunk-LLSLFDO6.js → chunk-NRQC7DQW.js} +57 -5
- package/dist/chunk-NRQC7DQW.js.map +1 -0
- package/dist/{chunk-WBAXXG34.cjs → chunk-PAOBGBU7.cjs} +112 -5
- package/dist/chunk-PAOBGBU7.cjs.map +1 -0
- package/dist/chunk-PE3V7GUL.cjs +4 -0
- package/dist/{chunk-LJFJTTZQ.cjs.map → chunk-PE3V7GUL.cjs.map} +1 -1
- package/dist/{chunk-DOLSYVNJ.cjs → chunk-PIH5FBNQ.cjs} +12 -12
- package/dist/{chunk-DOLSYVNJ.cjs.map → chunk-PIH5FBNQ.cjs.map} +1 -1
- package/dist/{chunk-4SXWN3RR.js → chunk-Q6LWNLAJ.js} +203 -149
- package/dist/chunk-Q6LWNLAJ.js.map +1 -0
- package/dist/{chunk-SL7VKAQ3.js → chunk-R6XC4DV5.js} +7 -7
- package/dist/chunk-R6XC4DV5.js.map +1 -0
- package/dist/{chunk-WNFLWMEP.cjs → chunk-RJOVFHWN.cjs} +765 -511
- package/dist/chunk-RJOVFHWN.cjs.map +1 -0
- package/dist/chunk-UCPGYU55.cjs +15 -0
- package/dist/chunk-UCPGYU55.cjs.map +1 -0
- package/dist/{chunk-K7MEUZ3O.js → chunk-UWTYVVVZ.js} +3 -3
- package/dist/{chunk-K7MEUZ3O.js.map → chunk-UWTYVVVZ.js.map} +1 -1
- package/dist/{chunk-ZISECZZO.js → chunk-VHEA3YXS.js} +2 -2
- package/dist/chunk-VHEA3YXS.js.map +1 -0
- package/dist/chunk-VXHOOZSK.js +446 -0
- package/dist/chunk-VXHOOZSK.js.map +1 -0
- package/dist/{chunk-NUAURT4I.cjs → chunk-W4UVO3HL.cjs} +2 -2
- package/dist/chunk-W4UVO3HL.cjs.map +1 -0
- package/dist/{chunk-ZIHEKHUB.js → chunk-WIMFJ2BA.js} +3 -3
- package/dist/{chunk-ZIHEKHUB.js.map → chunk-WIMFJ2BA.js.map} +1 -1
- package/dist/{chunk-LRSB62Z6.cjs → chunk-X7F4CSGR.cjs} +15 -8
- package/dist/chunk-X7F4CSGR.cjs.map +1 -0
- package/dist/{chunk-WUFFST2N.cjs → chunk-XDMQQZNX.cjs} +70 -68
- package/dist/chunk-XDMQQZNX.cjs.map +1 -0
- package/dist/chunk-XWGHD4C7.cjs +450 -0
- package/dist/chunk-XWGHD4C7.cjs.map +1 -0
- package/dist/{chunk-FZXAPBVV.js → chunk-Z6QCWTTO.js} +3 -3
- package/dist/{chunk-FZXAPBVV.js.map → chunk-Z6QCWTTO.js.map} +1 -1
- package/dist/{chunk-GWACPQ56.js → chunk-ZIWN73GQ.js} +5 -5
- package/dist/{chunk-GWACPQ56.js.map → chunk-ZIWN73GQ.js.map} +1 -1
- package/dist/{chunk-IJRERAWQ.cjs → chunk-ZOYE65RA.cjs} +8 -8
- package/dist/chunk-ZOYE65RA.cjs.map +1 -0
- package/dist/index.cjs +75 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -10
- package/dist/index.js.map +1 -1
- package/dist/llm/index.cjs +24 -8
- package/dist/llm/index.d.ts +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +5 -1
- 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/index.d.ts +3 -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/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 +11 -1
- package/dist/llm/model/provider-registry.d.ts.map +1 -1
- package/dist/llm/model/provider-types.generated.d.ts +324 -29
- 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.map +1 -1
- package/dist/llm/model/router.d.ts +6 -1
- package/dist/llm/model/router.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 +6 -6
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/test-utils/generateText.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/types.d.ts +8 -0
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/index.d.ts +36 -36
- package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +24 -24
- 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 +12 -12
- 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 +36 -36
- package/dist/loop/workflows/schema.d.ts +16 -16
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +23 -0
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/memory/types.d.ts +3 -2
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/models-dev-LJ4O6FNF.js +3 -0
- package/dist/{models-dev-BL5TAKE6.js.map → models-dev-LJ4O6FNF.js.map} +1 -1
- package/dist/models-dev-T2CXOEDH.cjs +12 -0
- package/dist/{models-dev-HZ3LZHPX.cjs.map → models-dev-T2CXOEDH.cjs.map} +1 -1
- package/dist/netlify-BAEMIQNH.cjs +12 -0
- package/dist/{netlify-TX6V7SJJ.cjs.map → netlify-BAEMIQNH.cjs.map} +1 -1
- package/dist/netlify-L7AZ74PV.js +3 -0
- package/dist/{netlify-VJXBII33.js.map → netlify-L7AZ74PV.js.map} +1 -1
- package/dist/processors/index.cjs +11 -11
- package/dist/processors/index.js +1 -1
- package/dist/provider-registry-RUDYHG7J.cjs +40 -0
- package/dist/provider-registry-RUDYHG7J.cjs.map +1 -0
- package/dist/provider-registry-THITZUJ7.js +3 -0
- package/dist/provider-registry-THITZUJ7.js.map +1 -0
- package/dist/provider-registry.json +705 -68
- package/dist/{registry-generator-6WVOHM2L.cjs → registry-generator-DL42NMBM.cjs} +23 -6
- package/dist/registry-generator-DL42NMBM.cjs.map +1 -0
- package/dist/{registry-generator-DXRSYYYT.js → registry-generator-I6S4ARS6.js} +23 -7
- package/dist/registry-generator-I6S4ARS6.js.map +1 -0
- package/dist/relevance/index.cjs +4 -4
- package/dist/relevance/index.js +1 -1
- package/dist/scores/index.cjs +9 -9
- package/dist/scores/index.js +2 -2
- package/dist/scores/scoreTraces/index.cjs +8 -8
- package/dist/scores/scoreTraces/index.js +3 -3
- package/dist/server/composite-auth.d.ts +9 -0
- package/dist/server/composite-auth.d.ts.map +1 -0
- package/dist/server/index.cjs +83 -1
- 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 +82 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/simple-auth.d.ts +32 -0
- package/dist/server/simple-auth.d.ts.map +1 -0
- package/dist/storage/index.cjs +3 -3
- package/dist/storage/index.js +1 -1
- package/dist/stream/aisdk/v5/output.d.ts.map +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 +7 -2
- package/dist/stream/types.d.ts.map +1 -1
- package/dist/test-utils/llm-mock.cjs +2 -2
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tools/index.cjs +2 -2
- package/dist/tools/index.js +1 -1
- package/dist/tools/stream.d.ts +1 -0
- package/dist/tools/stream.d.ts.map +1 -1
- package/dist/utils.cjs +17 -17
- 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 +9 -4
- 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/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 +3 -2
- 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/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +14 -14
- package/dist/workflows/index.js +1 -1
- package/dist/workflows/legacy/index.cjs +22 -22
- package/dist/workflows/legacy/index.js +1 -1
- package/dist/workflows/legacy/machine.d.ts +1 -1
- package/dist/workflows/legacy/workflow-instance.d.ts +2 -2
- package/dist/workflows/utils.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +2 -0
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/llm/model/provider-types.generated.d.ts +324 -29
- package/dist/chunk-34ZCWSUA.js.map +0 -1
- package/dist/chunk-3JX2Y3WH.cjs.map +0 -1
- package/dist/chunk-4HQPVSGA.cjs.map +0 -1
- package/dist/chunk-4SXWN3RR.js.map +0 -1
- package/dist/chunk-HF3GZRFP.cjs +0 -9
- package/dist/chunk-HF3GZRFP.cjs.map +0 -1
- package/dist/chunk-HGNRQ3OG.js.map +0 -1
- package/dist/chunk-IJRERAWQ.cjs.map +0 -1
- package/dist/chunk-LJFJTTZQ.cjs +0 -4
- package/dist/chunk-LLSLFDO6.js.map +0 -1
- package/dist/chunk-LRSB62Z6.cjs.map +0 -1
- package/dist/chunk-N2DOZAFH.js.map +0 -1
- package/dist/chunk-NUAURT4I.cjs.map +0 -1
- package/dist/chunk-OLERJ2OU.js.map +0 -1
- package/dist/chunk-RKXWLG33.js +0 -7
- package/dist/chunk-RKXWLG33.js.map +0 -1
- package/dist/chunk-SL7VKAQ3.js.map +0 -1
- package/dist/chunk-TEW3ODXX.js.map +0 -1
- package/dist/chunk-WBAXXG34.cjs.map +0 -1
- package/dist/chunk-WCHE6FJ7.js.map +0 -1
- package/dist/chunk-WNFLWMEP.cjs.map +0 -1
- package/dist/chunk-WUFFST2N.cjs.map +0 -1
- package/dist/chunk-XHKMGOON.cjs.map +0 -1
- package/dist/chunk-YSQE5IHK.cjs.map +0 -1
- package/dist/chunk-ZISECZZO.js.map +0 -1
- package/dist/chunk-ZV5CC35D.js +0 -3
- package/dist/models-dev-BL5TAKE6.js +0 -3
- package/dist/models-dev-HZ3LZHPX.cjs +0 -12
- package/dist/netlify-TX6V7SJJ.cjs +0 -12
- package/dist/netlify-VJXBII33.js +0 -3
- package/dist/registry-generator-6WVOHM2L.cjs.map +0 -1
- package/dist/registry-generator-DXRSYYYT.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector/vector.ts"],"names":[],"mappings":";;;;;;AAmBO,IAAe,YAAA,GAAf,cAA2D,UAAA,CAAW;AAAA,EAC3E,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,UAAU,CAAA;AAAA,EACrD;AAAA,EAEA,IAAI,cAAA,GAAyB;AAC3B,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAwDA,MAAgB,qBAAA,CAAsB,SAAA,EAAmB,SAAA,EAAmB,MAAA,EAAgB;AAC1F,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,MAAM,IAAA,CAAK,aAAA,CAAc,EAAE,WAAW,CAAA;AAAA,IAC/C,SAAS,SAAA,EAAW;AAClB,MAAA,MAAM,cAAc,IAAI,WAAA;AAAA,QACtB;AAAA,UACE,EAAA,EAAI,oCAAA;AAAA,UACJ,IAAA,EAAM,UAAU,SAAS,CAAA,qEAAA,CAAA;AAAA,UACzB,MAAA,EAAA,eAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,UACA,OAAA,EAAS,EAAE,SAAA;AAAU,SACvB;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR;AACA,IAAA,MAAM,cAAc,IAAA,EAAM,SAAA;AAC1B,IAAA,MAAM,iBAAiB,IAAA,EAAM,MAAA;AAC7B,IAAA,IAAI,gBAAgB,SAAA,EAAW;AAC7B,MAAA,IAAA,CAAK,MAAA,EAAQ,IAAA;AAAA,QACX,CAAA,OAAA,EAAU,SAAS,CAAA,sBAAA,EAAyB,WAAW,0BAA0B,cAAc,CAAA,oBAAA;AAAA,OACjG;AACA,MAAA,IAAI,mBAAmB,MAAA,EAAQ;AAC7B,QAAA,IAAA,CAAK,MAAA,EAAQ,IAAA;AAAA,UACX,CAAA,uCAAA,EAA0C,MAAM,CAAA,yCAAA,EAA4C,cAAc,CAAA,4DAAA;AAAA,SAC5G;AAAA,MACF;AAAA,IACF,WAAW,IAAA,EAAM;AACf,MAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY;AAAA,QAClC,EAAA,EAAI,0CAAA;AAAA,QACJ,MAAM,CAAA,OAAA,EAAU,SAAS,CAAA,sBAAA,EAAyB,WAAW,oBAAoB,SAAS,CAAA,0BAAA,CAAA;AAAA,QAC1F,MAAA,EAAA,eAAA;AAAA,QACA,QAAA,EAAA,MAAA;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,WAAA,EAAa,cAAc,SAAA;AAAU,OAC5D,CAAA;AACD,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR,CAAA,MAAO;AACL,MAAA,MAAM,WAAA,GAAc,IAAI,WAAA,CAAY;AAAA,QAClC,EAAA,EAAI,oCAAA;AAAA,QACJ,IAAA,EAAM,UAAU,SAAS,CAAA,uEAAA,CAAA;AAAA,QACzB,MAAA,EAAA,eAAA;AAAA,QACA,QAAA,EAAA,QAAA;AAAA,QACA,OAAA,EAAS,EAAE,SAAA;AAAU,OACtB,CAAA;AACD,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR;AAAA,EACF;AACF","file":"chunk-VHEA3YXS.js","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { EmbeddingModel as EmbeddingModelV1 } from 'ai';\nimport { MastraBase } from '../base';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport type { VectorFilter } from './filter';\nimport type {\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n IndexStats,\n QueryResult,\n UpdateVectorParams,\n DeleteVectorParams,\n DeleteVectorsParams,\n DescribeIndexParams,\n DeleteIndexParams,\n} from './types';\n\nexport type MastraEmbeddingModel<T> = EmbeddingModelV1<T> | EmbeddingModelV2<T>;\nexport abstract class MastraVector<Filter = VectorFilter> extends MastraBase {\n constructor() {\n super({ name: 'MastraVector', component: 'VECTOR' });\n }\n\n get indexSeparator(): string {\n return '_';\n }\n\n abstract query(params: QueryVectorParams<Filter>): Promise<QueryResult[]>;\n // Adds type checks for positional arguments if used\n abstract upsert(params: UpsertVectorParams): Promise<string[]>;\n // Adds type checks for positional arguments if used\n abstract createIndex(params: CreateIndexParams): Promise<void>;\n\n abstract listIndexes(): Promise<string[]>;\n\n abstract describeIndex(params: DescribeIndexParams): Promise<IndexStats>;\n\n abstract deleteIndex(params: DeleteIndexParams): Promise<void>;\n\n abstract updateVector(params: UpdateVectorParams<Filter>): Promise<void>;\n\n abstract deleteVector(params: DeleteVectorParams): Promise<void>;\n\n /**\n * Delete multiple vectors by IDs or metadata filter.\n *\n * This enables bulk deletion and source-based vector management.\n * Implementations should throw MastraError with appropriate error code\n * if the operation is not supported.\n *\n * @param params - Parameters including indexName and either ids or filter (mutually exclusive)\n * @throws {MastraError} If operation is not supported or parameters are invalid\n *\n * @example\n * ```ts\n * // Delete all chunks from a document\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * filter: { source_id: 'manual.pdf' }\n * });\n *\n * // Delete multiple vectors by ID\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * ids: ['vec_1', 'vec_2', 'vec_3']\n * });\n *\n * // Delete old temporary documents\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * filter: {\n * $and: [\n * { bucket: 'temp' },\n * { indexed_at: { $lt: '2025-01-01' } }\n * ]\n * }\n * });\n * ```\n */\n abstract deleteVectors(params: DeleteVectorsParams<Filter>): Promise<void>;\n\n protected async validateExistingIndex(indexName: string, dimension: number, metric: string) {\n let info: IndexStats;\n try {\n info = await this.describeIndex({ indexName });\n } catch (infoError) {\n const mastraError = new MastraError(\n {\n id: 'VECTOR_VALIDATE_INDEX_FETCH_FAILED',\n text: `Index \"${indexName}\" already exists, but failed to fetch index info for dimension check.`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.SYSTEM,\n details: { indexName },\n },\n infoError,\n );\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n }\n const existingDim = info?.dimension;\n const existingMetric = info?.metric;\n if (existingDim === dimension) {\n this.logger?.info(\n `Index \"${indexName}\" already exists with ${existingDim} dimensions and metric ${existingMetric}, skipping creation.`,\n );\n if (existingMetric !== metric) {\n this.logger?.warn(\n `Attempted to create index with metric \"${metric}\", but index already exists with metric \"${existingMetric}\". To use a different metric, delete and recreate the index.`,\n );\n }\n } else if (info) {\n const mastraError = new MastraError({\n id: 'VECTOR_VALIDATE_INDEX_DIMENSION_MISMATCH',\n text: `Index \"${indexName}\" already exists with ${existingDim} dimensions, but ${dimension} dimensions were requested`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.USER,\n details: { indexName, existingDim, requestedDim: dimension },\n });\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n } else {\n const mastraError = new MastraError({\n id: 'VECTOR_VALIDATE_INDEX_NO_DIMENSION',\n text: `Index \"${indexName}\" already exists, but could not retrieve its dimensions for validation.`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.SYSTEM,\n details: { indexName },\n });\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { PROVIDER_REGISTRY, GatewayRegistry } from './chunk-INOOZ2A2.js';
|
|
2
|
+
import { ModelsDevGateway, parseModelRouterId } from './chunk-R6XC4DV5.js';
|
|
3
|
+
import { NetlifyGateway } from './chunk-HSX2K7HB.js';
|
|
4
|
+
import { RuntimeContext } from './chunk-HLRWYUFN.js';
|
|
5
|
+
import { MastraError } from './chunk-PZUZNPFM.js';
|
|
6
|
+
import { createHash, randomUUID } from 'crypto';
|
|
7
|
+
import { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';
|
|
8
|
+
import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';
|
|
9
|
+
import { createOpenAI } from '@ai-sdk/openai-v5';
|
|
10
|
+
|
|
11
|
+
// src/llm/model/gateways/index.ts
|
|
12
|
+
function findGatewayForModel(gatewayId, gateways) {
|
|
13
|
+
const prefixedGateway = gateways.find(
|
|
14
|
+
(g) => g.id !== "models.dev" && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`))
|
|
15
|
+
);
|
|
16
|
+
if (prefixedGateway) {
|
|
17
|
+
return prefixedGateway;
|
|
18
|
+
}
|
|
19
|
+
const modelsDevGateway = gateways.find((g) => g.id === "models.dev");
|
|
20
|
+
if (modelsDevGateway) {
|
|
21
|
+
return modelsDevGateway;
|
|
22
|
+
}
|
|
23
|
+
throw new MastraError({
|
|
24
|
+
id: "MODEL_ROUTER_NO_GATEWAY_FOUND",
|
|
25
|
+
category: "USER",
|
|
26
|
+
domain: "MODEL_ROUTER",
|
|
27
|
+
text: `No Mastra model router gateway found for model id ${gatewayId}`
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
var AISDKV5LanguageModel = class {
|
|
31
|
+
/**
|
|
32
|
+
* The language model must specify which language model interface version it implements.
|
|
33
|
+
*/
|
|
34
|
+
specificationVersion = "v2";
|
|
35
|
+
/**
|
|
36
|
+
* Name of the provider for logging purposes.
|
|
37
|
+
*/
|
|
38
|
+
provider;
|
|
39
|
+
/**
|
|
40
|
+
* Provider-specific model ID for logging purposes.
|
|
41
|
+
*/
|
|
42
|
+
modelId;
|
|
43
|
+
/**
|
|
44
|
+
* Supported URL patterns by media type for the provider.
|
|
45
|
+
*
|
|
46
|
+
* The keys are media type patterns or full media types (e.g. `*\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).
|
|
47
|
+
* and the values are arrays of regular expressions that match the URL paths.
|
|
48
|
+
* The matching should be against lower-case URLs.
|
|
49
|
+
* Matched URLs are supported natively by the model and are not downloaded.
|
|
50
|
+
* @returns A map of supported URL patterns by media type (as a promise or a plain object).
|
|
51
|
+
*/
|
|
52
|
+
supportedUrls;
|
|
53
|
+
#model;
|
|
54
|
+
constructor(config) {
|
|
55
|
+
this.#model = config;
|
|
56
|
+
this.provider = this.#model.provider;
|
|
57
|
+
this.modelId = this.#model.modelId;
|
|
58
|
+
this.supportedUrls = this.#model.supportedUrls;
|
|
59
|
+
}
|
|
60
|
+
async doGenerate(options) {
|
|
61
|
+
const result = await this.#model.doGenerate(options);
|
|
62
|
+
return {
|
|
63
|
+
request: result.request,
|
|
64
|
+
response: result.response,
|
|
65
|
+
stream: new ReadableStream({
|
|
66
|
+
start(controller) {
|
|
67
|
+
controller.enqueue({ type: "stream-start", warnings: result.warnings });
|
|
68
|
+
controller.enqueue({
|
|
69
|
+
type: "response-metadata",
|
|
70
|
+
id: result.response?.id,
|
|
71
|
+
modelId: result.response?.modelId,
|
|
72
|
+
timestamp: result.response?.timestamp
|
|
73
|
+
});
|
|
74
|
+
for (const message of result.content) {
|
|
75
|
+
if (message.type === "tool-call") {
|
|
76
|
+
const toolCall = message;
|
|
77
|
+
controller.enqueue({
|
|
78
|
+
type: "tool-input-start",
|
|
79
|
+
id: toolCall.toolCallId,
|
|
80
|
+
toolName: toolCall.toolName
|
|
81
|
+
});
|
|
82
|
+
controller.enqueue({
|
|
83
|
+
type: "tool-input-delta",
|
|
84
|
+
id: toolCall.toolCallId,
|
|
85
|
+
delta: toolCall.input
|
|
86
|
+
});
|
|
87
|
+
controller.enqueue({
|
|
88
|
+
type: "tool-input-end",
|
|
89
|
+
id: toolCall.toolCallId
|
|
90
|
+
});
|
|
91
|
+
controller.enqueue(toolCall);
|
|
92
|
+
} else if (message.type === "tool-result") {
|
|
93
|
+
const toolResult = message;
|
|
94
|
+
controller.enqueue(toolResult);
|
|
95
|
+
} else if (message.type === "text") {
|
|
96
|
+
const text = message;
|
|
97
|
+
const id = `msg_${randomUUID()}`;
|
|
98
|
+
controller.enqueue({
|
|
99
|
+
type: "text-start",
|
|
100
|
+
id,
|
|
101
|
+
providerMetadata: text.providerMetadata
|
|
102
|
+
});
|
|
103
|
+
controller.enqueue({
|
|
104
|
+
type: "text-delta",
|
|
105
|
+
id,
|
|
106
|
+
delta: text.text
|
|
107
|
+
});
|
|
108
|
+
controller.enqueue({
|
|
109
|
+
type: "text-end",
|
|
110
|
+
id
|
|
111
|
+
});
|
|
112
|
+
} else if (message.type === "reasoning") {
|
|
113
|
+
const id = `reasoning_${randomUUID()}`;
|
|
114
|
+
const reasoning = message;
|
|
115
|
+
controller.enqueue({
|
|
116
|
+
type: "reasoning-start",
|
|
117
|
+
id,
|
|
118
|
+
providerMetadata: reasoning.providerMetadata
|
|
119
|
+
});
|
|
120
|
+
controller.enqueue({
|
|
121
|
+
type: "reasoning-delta",
|
|
122
|
+
id,
|
|
123
|
+
delta: reasoning.text,
|
|
124
|
+
providerMetadata: reasoning.providerMetadata
|
|
125
|
+
});
|
|
126
|
+
controller.enqueue({
|
|
127
|
+
type: "reasoning-end",
|
|
128
|
+
id,
|
|
129
|
+
providerMetadata: reasoning.providerMetadata
|
|
130
|
+
});
|
|
131
|
+
} else if (message.type === "file") {
|
|
132
|
+
const file = message;
|
|
133
|
+
controller.enqueue({
|
|
134
|
+
type: "file",
|
|
135
|
+
mediaType: file.mediaType,
|
|
136
|
+
data: file.data
|
|
137
|
+
});
|
|
138
|
+
} else if (message.type === "source") {
|
|
139
|
+
const source = message;
|
|
140
|
+
if (source.sourceType === "url") {
|
|
141
|
+
controller.enqueue({
|
|
142
|
+
type: "source",
|
|
143
|
+
id: source.id,
|
|
144
|
+
sourceType: "url",
|
|
145
|
+
url: source.url,
|
|
146
|
+
title: source.title,
|
|
147
|
+
providerMetadata: source.providerMetadata
|
|
148
|
+
});
|
|
149
|
+
} else {
|
|
150
|
+
controller.enqueue({
|
|
151
|
+
type: "source",
|
|
152
|
+
id: source.id,
|
|
153
|
+
sourceType: "document",
|
|
154
|
+
mediaType: source.mediaType,
|
|
155
|
+
filename: source.filename,
|
|
156
|
+
title: source.title,
|
|
157
|
+
providerMetadata: source.providerMetadata
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
controller.enqueue({
|
|
163
|
+
type: "finish",
|
|
164
|
+
finishReason: result.finishReason,
|
|
165
|
+
usage: result.usage,
|
|
166
|
+
providerMetadata: result.providerMetadata
|
|
167
|
+
});
|
|
168
|
+
controller.close();
|
|
169
|
+
}
|
|
170
|
+
})
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async doStream(options) {
|
|
174
|
+
return await this.#model.doStream(options);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// src/llm/model/router.ts
|
|
179
|
+
function getStaticProvidersByGateway(name) {
|
|
180
|
+
return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));
|
|
181
|
+
}
|
|
182
|
+
var defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];
|
|
183
|
+
var ModelRouterLanguageModel = class _ModelRouterLanguageModel {
|
|
184
|
+
specificationVersion = "v2";
|
|
185
|
+
defaultObjectGenerationMode = "json";
|
|
186
|
+
supportsStructuredOutputs = true;
|
|
187
|
+
supportsImageUrls = true;
|
|
188
|
+
supportedUrls = {};
|
|
189
|
+
modelId;
|
|
190
|
+
provider;
|
|
191
|
+
config;
|
|
192
|
+
gateway;
|
|
193
|
+
constructor(config, customGateways) {
|
|
194
|
+
let normalizedConfig;
|
|
195
|
+
if (typeof config === "string") {
|
|
196
|
+
normalizedConfig = { id: config };
|
|
197
|
+
} else if ("providerId" in config && "modelId" in config) {
|
|
198
|
+
normalizedConfig = {
|
|
199
|
+
id: `${config.providerId}/${config.modelId}`,
|
|
200
|
+
url: config.url,
|
|
201
|
+
apiKey: config.apiKey,
|
|
202
|
+
headers: config.headers
|
|
203
|
+
};
|
|
204
|
+
} else {
|
|
205
|
+
normalizedConfig = {
|
|
206
|
+
id: config.id,
|
|
207
|
+
url: config.url,
|
|
208
|
+
apiKey: config.apiKey,
|
|
209
|
+
headers: config.headers
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const parsedConfig = {
|
|
213
|
+
...normalizedConfig,
|
|
214
|
+
routerId: normalizedConfig.id
|
|
215
|
+
};
|
|
216
|
+
this.gateway = findGatewayForModel(normalizedConfig.id, [...customGateways || [], ...defaultGateways]);
|
|
217
|
+
const gatewayPrefix = this.gateway.id === "models.dev" ? void 0 : this.gateway.id;
|
|
218
|
+
const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);
|
|
219
|
+
this.provider = parsed.providerId || "openai-compatible";
|
|
220
|
+
if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {
|
|
221
|
+
parsedConfig.id = parsed.modelId;
|
|
222
|
+
}
|
|
223
|
+
this.modelId = parsedConfig.id;
|
|
224
|
+
this.config = parsedConfig;
|
|
225
|
+
}
|
|
226
|
+
async doGenerate(options) {
|
|
227
|
+
let apiKey;
|
|
228
|
+
try {
|
|
229
|
+
if (this.config.url) {
|
|
230
|
+
apiKey = this.config.apiKey || "";
|
|
231
|
+
} else {
|
|
232
|
+
apiKey = this.config.apiKey || await this.gateway.getApiKey(this.config.routerId);
|
|
233
|
+
}
|
|
234
|
+
} catch (error) {
|
|
235
|
+
return {
|
|
236
|
+
stream: new ReadableStream({
|
|
237
|
+
start(controller) {
|
|
238
|
+
controller.enqueue({
|
|
239
|
+
type: "error",
|
|
240
|
+
error
|
|
241
|
+
});
|
|
242
|
+
controller.close();
|
|
243
|
+
}
|
|
244
|
+
})
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
const gatewayPrefix = this.gateway.id === "models.dev" ? void 0 : this.gateway.id;
|
|
248
|
+
const model = await this.resolveLanguageModel({
|
|
249
|
+
apiKey,
|
|
250
|
+
headers: this.config.headers,
|
|
251
|
+
...parseModelRouterId(this.config.routerId, gatewayPrefix)
|
|
252
|
+
});
|
|
253
|
+
const aiSDKV5Model = new AISDKV5LanguageModel(model);
|
|
254
|
+
return aiSDKV5Model.doGenerate(options);
|
|
255
|
+
}
|
|
256
|
+
async doStream(options) {
|
|
257
|
+
let apiKey;
|
|
258
|
+
try {
|
|
259
|
+
if (this.config.url) {
|
|
260
|
+
apiKey = this.config.apiKey || "";
|
|
261
|
+
} else {
|
|
262
|
+
apiKey = this.config.apiKey || await this.gateway.getApiKey(this.config.routerId);
|
|
263
|
+
}
|
|
264
|
+
} catch (error) {
|
|
265
|
+
return {
|
|
266
|
+
stream: new ReadableStream({
|
|
267
|
+
start(controller) {
|
|
268
|
+
controller.enqueue({
|
|
269
|
+
type: "error",
|
|
270
|
+
error
|
|
271
|
+
});
|
|
272
|
+
controller.close();
|
|
273
|
+
}
|
|
274
|
+
})
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
const gatewayPrefix = this.gateway.id === "models.dev" ? void 0 : this.gateway.id;
|
|
278
|
+
const model = await this.resolveLanguageModel({
|
|
279
|
+
apiKey,
|
|
280
|
+
headers: this.config.headers,
|
|
281
|
+
...parseModelRouterId(this.config.routerId, gatewayPrefix)
|
|
282
|
+
});
|
|
283
|
+
const aiSDKV5Model = new AISDKV5LanguageModel(model);
|
|
284
|
+
return aiSDKV5Model.doStream(options);
|
|
285
|
+
}
|
|
286
|
+
async resolveLanguageModel({
|
|
287
|
+
modelId,
|
|
288
|
+
providerId,
|
|
289
|
+
apiKey,
|
|
290
|
+
headers
|
|
291
|
+
}) {
|
|
292
|
+
const key = createHash("sha256").update(
|
|
293
|
+
this.gateway.id + modelId + providerId + apiKey + (this.config.url || "") + (headers ? JSON.stringify(headers) : "")
|
|
294
|
+
).digest("hex");
|
|
295
|
+
if (_ModelRouterLanguageModel.modelInstances.has(key)) return _ModelRouterLanguageModel.modelInstances.get(key);
|
|
296
|
+
if (this.config.url) {
|
|
297
|
+
const modelInstance2 = createOpenAICompatible({
|
|
298
|
+
name: providerId,
|
|
299
|
+
apiKey,
|
|
300
|
+
baseURL: this.config.url,
|
|
301
|
+
headers: this.config.headers,
|
|
302
|
+
supportsStructuredOutputs: true
|
|
303
|
+
}).chatModel(modelId);
|
|
304
|
+
_ModelRouterLanguageModel.modelInstances.set(key, modelInstance2);
|
|
305
|
+
return modelInstance2;
|
|
306
|
+
}
|
|
307
|
+
const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });
|
|
308
|
+
_ModelRouterLanguageModel.modelInstances.set(key, modelInstance);
|
|
309
|
+
return modelInstance;
|
|
310
|
+
}
|
|
311
|
+
static modelInstances = /* @__PURE__ */ new Map();
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
// src/llm/model/resolve-model.ts
|
|
315
|
+
function isOpenAICompatibleObjectConfig(modelConfig) {
|
|
316
|
+
if (typeof modelConfig === "object" && "specificationVersion" in modelConfig) return false;
|
|
317
|
+
if (typeof modelConfig === "object" && !("model" in modelConfig)) {
|
|
318
|
+
if ("id" in modelConfig) return true;
|
|
319
|
+
if ("providerId" in modelConfig && "modelId" in modelConfig) return true;
|
|
320
|
+
}
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
async function resolveModelConfig(modelConfig, runtimeContext = new RuntimeContext(), mastra) {
|
|
324
|
+
if (typeof modelConfig === "function") {
|
|
325
|
+
modelConfig = await modelConfig({ runtimeContext, mastra });
|
|
326
|
+
}
|
|
327
|
+
if (modelConfig instanceof ModelRouterLanguageModel || modelConfig instanceof AISDKV5LanguageModel) {
|
|
328
|
+
return modelConfig;
|
|
329
|
+
}
|
|
330
|
+
if (typeof modelConfig === "object" && "specificationVersion" in modelConfig) {
|
|
331
|
+
if (modelConfig.specificationVersion === "v2") {
|
|
332
|
+
return new AISDKV5LanguageModel(modelConfig);
|
|
333
|
+
}
|
|
334
|
+
return modelConfig;
|
|
335
|
+
}
|
|
336
|
+
const gatewayRecord = mastra?.listGateways();
|
|
337
|
+
const customGateways = gatewayRecord ? Object.values(gatewayRecord) : void 0;
|
|
338
|
+
if (typeof modelConfig === "string" || isOpenAICompatibleObjectConfig(modelConfig)) {
|
|
339
|
+
return new ModelRouterLanguageModel(modelConfig, customGateways);
|
|
340
|
+
}
|
|
341
|
+
throw new Error("Invalid model configuration provided");
|
|
342
|
+
}
|
|
343
|
+
var ModelRouterEmbeddingModel = class {
|
|
344
|
+
specificationVersion = "v2";
|
|
345
|
+
modelId;
|
|
346
|
+
provider;
|
|
347
|
+
maxEmbeddingsPerCall = 2048;
|
|
348
|
+
supportsParallelCalls = true;
|
|
349
|
+
providerModel;
|
|
350
|
+
constructor(config) {
|
|
351
|
+
let normalizedConfig;
|
|
352
|
+
if (typeof config === "string") {
|
|
353
|
+
const parts = config.split("/");
|
|
354
|
+
if (parts.length !== 2) {
|
|
355
|
+
throw new Error(`Invalid model string format: "${config}". Expected format: "provider/model"`);
|
|
356
|
+
}
|
|
357
|
+
const [providerId, modelId] = parts;
|
|
358
|
+
normalizedConfig = { providerId, modelId };
|
|
359
|
+
} else if ("providerId" in config && "modelId" in config) {
|
|
360
|
+
normalizedConfig = {
|
|
361
|
+
providerId: config.providerId,
|
|
362
|
+
modelId: config.modelId,
|
|
363
|
+
url: config.url,
|
|
364
|
+
apiKey: config.apiKey,
|
|
365
|
+
headers: config.headers
|
|
366
|
+
};
|
|
367
|
+
} else {
|
|
368
|
+
const parts = config.id.split("/");
|
|
369
|
+
if (parts.length !== 2) {
|
|
370
|
+
throw new Error(`Invalid model string format: "${config.id}". Expected format: "provider/model"`);
|
|
371
|
+
}
|
|
372
|
+
const [providerId, modelId] = parts;
|
|
373
|
+
normalizedConfig = {
|
|
374
|
+
providerId,
|
|
375
|
+
modelId,
|
|
376
|
+
url: config.url,
|
|
377
|
+
apiKey: config.apiKey,
|
|
378
|
+
headers: config.headers
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
this.provider = normalizedConfig.providerId;
|
|
382
|
+
this.modelId = normalizedConfig.modelId;
|
|
383
|
+
if (normalizedConfig.url) {
|
|
384
|
+
const apiKey = normalizedConfig.apiKey || "";
|
|
385
|
+
this.providerModel = createOpenAICompatible({
|
|
386
|
+
name: normalizedConfig.providerId,
|
|
387
|
+
apiKey,
|
|
388
|
+
baseURL: normalizedConfig.url,
|
|
389
|
+
headers: normalizedConfig.headers
|
|
390
|
+
}).textEmbeddingModel(normalizedConfig.modelId);
|
|
391
|
+
} else {
|
|
392
|
+
const registry = GatewayRegistry.getInstance();
|
|
393
|
+
const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);
|
|
394
|
+
if (!providerConfig) {
|
|
395
|
+
throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);
|
|
396
|
+
}
|
|
397
|
+
let apiKey = normalizedConfig.apiKey;
|
|
398
|
+
if (!apiKey) {
|
|
399
|
+
const apiKeyEnvVar = providerConfig.apiKeyEnvVar;
|
|
400
|
+
if (Array.isArray(apiKeyEnvVar)) {
|
|
401
|
+
for (const envVar of apiKeyEnvVar) {
|
|
402
|
+
apiKey = process.env[envVar];
|
|
403
|
+
if (apiKey) break;
|
|
404
|
+
}
|
|
405
|
+
} else {
|
|
406
|
+
apiKey = process.env[apiKeyEnvVar];
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (!apiKey) {
|
|
410
|
+
const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar) ? providerConfig.apiKeyEnvVar.join(" or ") : providerConfig.apiKeyEnvVar;
|
|
411
|
+
throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);
|
|
412
|
+
}
|
|
413
|
+
if (normalizedConfig.providerId === "openai") {
|
|
414
|
+
this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(
|
|
415
|
+
normalizedConfig.modelId
|
|
416
|
+
);
|
|
417
|
+
} else if (normalizedConfig.providerId === "google") {
|
|
418
|
+
this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(
|
|
419
|
+
normalizedConfig.modelId
|
|
420
|
+
);
|
|
421
|
+
} else {
|
|
422
|
+
if (!providerConfig.url) {
|
|
423
|
+
throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);
|
|
424
|
+
}
|
|
425
|
+
this.providerModel = createOpenAICompatible({
|
|
426
|
+
name: normalizedConfig.providerId,
|
|
427
|
+
apiKey,
|
|
428
|
+
baseURL: providerConfig.url
|
|
429
|
+
}).textEmbeddingModel(normalizedConfig.modelId);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (this.providerModel.maxEmbeddingsPerCall !== void 0) {
|
|
433
|
+
this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;
|
|
434
|
+
}
|
|
435
|
+
if (this.providerModel.supportsParallelCalls !== void 0) {
|
|
436
|
+
this.supportsParallelCalls = this.providerModel.supportsParallelCalls;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
async doEmbed(args) {
|
|
440
|
+
return this.providerModel.doEmbed(args);
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
export { ModelRouterEmbeddingModel, ModelRouterLanguageModel, resolveModelConfig };
|
|
445
|
+
//# sourceMappingURL=chunk-VXHOOZSK.js.map
|
|
446
|
+
//# sourceMappingURL=chunk-VXHOOZSK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llm/model/gateways/index.ts","../src/llm/model/aisdk/v5/model.ts","../src/llm/model/router.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["modelInstance","createOpenAICompatible"],"mappings":"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","file":"chunk-VXHOOZSK.js","sourcesContent":["import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig } from './base.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 { randomUUID } from 'crypto';\nimport type { LanguageModelV2, LanguageModelV2CallOptions } from '@ai-sdk/provider-v5';\nimport type { MastraLanguageModelV2 } from '../../shared.types';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nexport class AISDKV5LanguageModel implements MastraLanguageModelV2 {\n /**\n * The language model must specify which language model interface version it implements.\n */\n readonly specificationVersion: 'v2' = 'v2';\n /**\n * Name of the provider for logging purposes.\n */\n readonly provider: string;\n /**\n * Provider-specific model ID for logging purposes.\n */\n readonly modelId: string;\n /**\n * Supported URL patterns by media type for the provider.\n *\n * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n * and the values are arrays of regular expressions that match the URL paths.\n * The matching should be against lower-case URLs.\n * Matched URLs are supported natively by the model and are not downloaded.\n * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n */\n supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n #model: LanguageModelV2;\n\n constructor(config: LanguageModelV2) {\n this.#model = config;\n this.provider = this.#model.provider;\n this.modelId = this.#model.modelId;\n this.supportedUrls = this.#model.supportedUrls;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions) {\n const result = await this.#model.doGenerate(options);\n\n return {\n request: result.request!,\n response: result.response as unknown as StreamResult['response'],\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings: result.warnings });\n controller.enqueue({\n type: 'response-metadata',\n id: result.response?.id,\n modelId: result.response?.modelId,\n timestamp: result.response?.timestamp,\n });\n\n for (const message of result.content) {\n if (message.type === 'tool-call') {\n const toolCall = message;\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.toolCallId,\n toolName: toolCall.toolName,\n });\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: toolCall.input,\n });\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n controller.enqueue(toolCall);\n } else if (message.type === 'tool-result') {\n const toolResult = message;\n controller.enqueue(toolResult);\n } else if (message.type === 'text') {\n const text = message;\n const id = `msg_${randomUUID()}`;\n controller.enqueue({\n type: 'text-start',\n id,\n providerMetadata: text.providerMetadata,\n });\n controller.enqueue({\n type: 'text-delta',\n id,\n delta: text.text,\n });\n controller.enqueue({\n type: 'text-end',\n id,\n });\n } else if (message.type === 'reasoning') {\n const id = `reasoning_${randomUUID()}`;\n\n const reasoning = message;\n controller.enqueue({\n type: 'reasoning-start',\n id,\n providerMetadata: reasoning.providerMetadata,\n });\n controller.enqueue({\n type: 'reasoning-delta',\n id,\n delta: reasoning.text,\n providerMetadata: reasoning.providerMetadata,\n });\n controller.enqueue({\n type: 'reasoning-end',\n id,\n providerMetadata: reasoning.providerMetadata,\n });\n } else if (message.type === 'file') {\n const file = message;\n controller.enqueue({\n type: 'file',\n mediaType: file.mediaType,\n data: file.data,\n });\n } else if (message.type === 'source') {\n const source = message;\n if (source.sourceType === 'url') {\n controller.enqueue({\n type: 'source',\n id: source.id,\n sourceType: 'url',\n url: source.url,\n title: source.title,\n providerMetadata: source.providerMetadata,\n });\n } else {\n controller.enqueue({\n type: 'source',\n id: source.id,\n sourceType: 'document',\n mediaType: source.mediaType,\n filename: source.filename,\n title: source.title,\n providerMetadata: source.providerMetadata,\n });\n }\n }\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason: result.finishReason,\n usage: result.usage,\n providerMetadata: result.providerMetadata,\n });\n\n controller.close();\n },\n }),\n };\n }\n\n async doStream(options: LanguageModelV2CallOptions) {\n return await this.#model.doStream(options);\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 { RuntimeContext } from '../../runtime-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 runtimeContext,\n mastra,\n }: {\n runtimeContext: RuntimeContext;\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 runtimeContext Optional runtime 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 * ({ runtimeContext }) => runtimeContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n runtimeContext,\n mastra,\n }: {\n runtimeContext: RuntimeContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n runtimeContext: RuntimeContext = new RuntimeContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ runtimeContext, 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"]}
|
|
@@ -78,5 +78,5 @@ Object.defineProperty(exports, "embed2", {
|
|
|
78
78
|
get: function () { return aiV5.embed; }
|
|
79
79
|
});
|
|
80
80
|
exports.MastraVector = MastraVector;
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-W4UVO3HL.cjs.map
|
|
82
|
+
//# sourceMappingURL=chunk-W4UVO3HL.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vector/vector.ts"],"names":["MastraBase","MastraError"],"mappings":";;;;;;;;AAmBO,IAAe,YAAA,GAAf,cAA2DA,4BAAA,CAAW;AAAA,EAC3E,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAA,EAAW,UAAU,CAAA;AAAA,EACrD;AAAA,EAEA,IAAI,cAAA,GAAyB;AAC3B,IAAA,OAAO,GAAA;AAAA,EACT;AAAA,EAwDA,MAAgB,qBAAA,CAAsB,SAAA,EAAmB,SAAA,EAAmB,MAAA,EAAgB;AAC1F,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI;AACF,MAAA,IAAA,GAAO,MAAM,IAAA,CAAK,aAAA,CAAc,EAAE,WAAW,CAAA;AAAA,IAC/C,SAAS,SAAA,EAAW;AAClB,MAAA,MAAM,cAAc,IAAIC,6BAAA;AAAA,QACtB;AAAA,UACE,EAAA,EAAI,oCAAA;AAAA,UACJ,IAAA,EAAM,UAAU,SAAS,CAAA,qEAAA,CAAA;AAAA,UACzB,MAAA,EAAA,eAAA;AAAA,UACA,QAAA,EAAA,QAAA;AAAA,UACA,OAAA,EAAS,EAAE,SAAA;AAAU,SACvB;AAAA,QACA;AAAA,OACF;AACA,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR;AACA,IAAA,MAAM,cAAc,IAAA,EAAM,SAAA;AAC1B,IAAA,MAAM,iBAAiB,IAAA,EAAM,MAAA;AAC7B,IAAA,IAAI,gBAAgB,SAAA,EAAW;AAC7B,MAAA,IAAA,CAAK,MAAA,EAAQ,IAAA;AAAA,QACX,CAAA,OAAA,EAAU,SAAS,CAAA,sBAAA,EAAyB,WAAW,0BAA0B,cAAc,CAAA,oBAAA;AAAA,OACjG;AACA,MAAA,IAAI,mBAAmB,MAAA,EAAQ;AAC7B,QAAA,IAAA,CAAK,MAAA,EAAQ,IAAA;AAAA,UACX,CAAA,uCAAA,EAA0C,MAAM,CAAA,yCAAA,EAA4C,cAAc,CAAA,4DAAA;AAAA,SAC5G;AAAA,MACF;AAAA,IACF,WAAW,IAAA,EAAM;AACf,MAAA,MAAM,WAAA,GAAc,IAAIA,6BAAA,CAAY;AAAA,QAClC,EAAA,EAAI,0CAAA;AAAA,QACJ,MAAM,CAAA,OAAA,EAAU,SAAS,CAAA,sBAAA,EAAyB,WAAW,oBAAoB,SAAS,CAAA,0BAAA,CAAA;AAAA,QAC1F,MAAA,EAAA,eAAA;AAAA,QACA,QAAA,EAAA,MAAA;AAAA,QACA,OAAA,EAAS,EAAE,SAAA,EAAW,WAAA,EAAa,cAAc,SAAA;AAAU,OAC5D,CAAA;AACD,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR,CAAA,MAAO;AACL,MAAA,MAAM,WAAA,GAAc,IAAIA,6BAAA,CAAY;AAAA,QAClC,EAAA,EAAI,oCAAA;AAAA,QACJ,IAAA,EAAM,UAAU,SAAS,CAAA,uEAAA,CAAA;AAAA,QACzB,MAAA,EAAA,eAAA;AAAA,QACA,QAAA,EAAA,QAAA;AAAA,QACA,OAAA,EAAS,EAAE,SAAA;AAAU,OACtB,CAAA;AACD,MAAA,IAAA,CAAK,MAAA,EAAQ,eAAe,WAAW,CAAA;AACvC,MAAA,IAAA,CAAK,MAAA,EAAQ,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,CAAA;AACzC,MAAA,MAAM,WAAA;AAAA,IACR;AAAA,EACF;AACF","file":"chunk-W4UVO3HL.cjs","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { EmbeddingModel as EmbeddingModelV1 } from 'ai';\nimport { MastraBase } from '../base';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport type { VectorFilter } from './filter';\nimport type {\n CreateIndexParams,\n UpsertVectorParams,\n QueryVectorParams,\n IndexStats,\n QueryResult,\n UpdateVectorParams,\n DeleteVectorParams,\n DeleteVectorsParams,\n DescribeIndexParams,\n DeleteIndexParams,\n} from './types';\n\nexport type MastraEmbeddingModel<T> = EmbeddingModelV1<T> | EmbeddingModelV2<T>;\nexport abstract class MastraVector<Filter = VectorFilter> extends MastraBase {\n constructor() {\n super({ name: 'MastraVector', component: 'VECTOR' });\n }\n\n get indexSeparator(): string {\n return '_';\n }\n\n abstract query(params: QueryVectorParams<Filter>): Promise<QueryResult[]>;\n // Adds type checks for positional arguments if used\n abstract upsert(params: UpsertVectorParams): Promise<string[]>;\n // Adds type checks for positional arguments if used\n abstract createIndex(params: CreateIndexParams): Promise<void>;\n\n abstract listIndexes(): Promise<string[]>;\n\n abstract describeIndex(params: DescribeIndexParams): Promise<IndexStats>;\n\n abstract deleteIndex(params: DeleteIndexParams): Promise<void>;\n\n abstract updateVector(params: UpdateVectorParams<Filter>): Promise<void>;\n\n abstract deleteVector(params: DeleteVectorParams): Promise<void>;\n\n /**\n * Delete multiple vectors by IDs or metadata filter.\n *\n * This enables bulk deletion and source-based vector management.\n * Implementations should throw MastraError with appropriate error code\n * if the operation is not supported.\n *\n * @param params - Parameters including indexName and either ids or filter (mutually exclusive)\n * @throws {MastraError} If operation is not supported or parameters are invalid\n *\n * @example\n * ```ts\n * // Delete all chunks from a document\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * filter: { source_id: 'manual.pdf' }\n * });\n *\n * // Delete multiple vectors by ID\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * ids: ['vec_1', 'vec_2', 'vec_3']\n * });\n *\n * // Delete old temporary documents\n * await vectorStore.deleteVectors({\n * indexName: 'docs',\n * filter: {\n * $and: [\n * { bucket: 'temp' },\n * { indexed_at: { $lt: '2025-01-01' } }\n * ]\n * }\n * });\n * ```\n */\n abstract deleteVectors(params: DeleteVectorsParams<Filter>): Promise<void>;\n\n protected async validateExistingIndex(indexName: string, dimension: number, metric: string) {\n let info: IndexStats;\n try {\n info = await this.describeIndex({ indexName });\n } catch (infoError) {\n const mastraError = new MastraError(\n {\n id: 'VECTOR_VALIDATE_INDEX_FETCH_FAILED',\n text: `Index \"${indexName}\" already exists, but failed to fetch index info for dimension check.`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.SYSTEM,\n details: { indexName },\n },\n infoError,\n );\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n }\n const existingDim = info?.dimension;\n const existingMetric = info?.metric;\n if (existingDim === dimension) {\n this.logger?.info(\n `Index \"${indexName}\" already exists with ${existingDim} dimensions and metric ${existingMetric}, skipping creation.`,\n );\n if (existingMetric !== metric) {\n this.logger?.warn(\n `Attempted to create index with metric \"${metric}\", but index already exists with metric \"${existingMetric}\". To use a different metric, delete and recreate the index.`,\n );\n }\n } else if (info) {\n const mastraError = new MastraError({\n id: 'VECTOR_VALIDATE_INDEX_DIMENSION_MISMATCH',\n text: `Index \"${indexName}\" already exists with ${existingDim} dimensions, but ${dimension} dimensions were requested`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.USER,\n details: { indexName, existingDim, requestedDim: dimension },\n });\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n } else {\n const mastraError = new MastraError({\n id: 'VECTOR_VALIDATE_INDEX_NO_DIMENSION',\n text: `Index \"${indexName}\" already exists, but could not retrieve its dimensions for validation.`,\n domain: ErrorDomain.MASTRA_VECTOR,\n category: ErrorCategory.SYSTEM,\n details: { indexName },\n });\n this.logger?.trackException(mastraError);\n this.logger?.error(mastraError.toString());\n throw mastraError;\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RuntimeContext } from './chunk-HLRWYUFN.js';
|
|
2
2
|
import { MastraError } from './chunk-PZUZNPFM.js';
|
|
3
|
-
import { ToolStream } from './chunk-
|
|
3
|
+
import { ToolStream } from './chunk-5O52O25J.js';
|
|
4
4
|
import { isVercelTool, validateToolInput } from './chunk-WM4RO23J.js';
|
|
5
5
|
import { MastraBase } from './chunk-VQASQG5D.js';
|
|
6
6
|
import { ConsoleLogger, LogLevel, RegisteredLogger } from './chunk-UXG7PYML.js';
|
|
@@ -2876,5 +2876,5 @@ var ModelSpanTracker = class {
|
|
|
2876
2876
|
};
|
|
2877
2877
|
|
|
2878
2878
|
export { AISpanType, AITracingEventType, BaseAISpan, BaseAITracing, BaseExporter, CloudExporter, ConsoleExporter, DefaultAISpan, DefaultAITracing, DefaultExporter, InternalSpans, ModelSpanTracker, NoOpAISpan, SamplingStrategyType, SensitiveDataFilter, checkEvalStorageFields, clearAITracingRegistry, createMastraProxy, deepClean, deepMerge, delay, ensureToolProperties, fetchWithRetry, generateEmptyFromSchema, getAITracing, getAllAITracing, getDefaultAITracing, getNestedValue, getOrCreateSpan, getSelectedAITracing, getValidTraceId, hasAITracing, isCoreMessage, isMastra, isUiMessage, isZodType, makeCoreTool, makeCoreToolV5, maskStreamTags, omitKeys, parseFieldKey, parseSqlIdentifier, registerAITracing, resolveSerializedZodOutput, selectFields, setNestedValue, setSelector, setupAITracing, shutdownAITracingRegistry, unregisterAITracing, wrapMastra };
|
|
2879
|
-
//# sourceMappingURL=chunk-
|
|
2880
|
-
//# sourceMappingURL=chunk-
|
|
2879
|
+
//# sourceMappingURL=chunk-WIMFJ2BA.js.map
|
|
2880
|
+
//# sourceMappingURL=chunk-WIMFJ2BA.js.map
|