@mastra/server 0.0.0-fix-ai-sdk-dependency-20251124104209 → 0.0.0-fix-backport-setserver-20251201151948
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 +105 -656
- package/README.md +1 -1
- package/dist/chunk-2S4IMB6E.cjs +130 -0
- package/dist/chunk-2S4IMB6E.cjs.map +1 -0
- package/dist/chunk-3SNGNFUJ.cjs +128 -0
- package/dist/chunk-3SNGNFUJ.cjs.map +1 -0
- package/dist/{chunk-6BISSAIF.js → chunk-4ML6U6RF.js} +1165 -5130
- package/dist/chunk-4ML6U6RF.js.map +1 -0
- package/dist/chunk-4QCXUEAT.js +25 -0
- package/dist/chunk-4QCXUEAT.js.map +1 -0
- package/dist/chunk-67GYDFSB.js +160 -0
- package/dist/chunk-67GYDFSB.js.map +1 -0
- package/dist/chunk-6N3HC6O4.js +705 -0
- package/dist/chunk-6N3HC6O4.js.map +1 -0
- package/dist/chunk-6ZR275MD.cjs +165 -0
- package/dist/chunk-6ZR275MD.cjs.map +1 -0
- package/dist/{chunk-64ITUOXI.cjs → chunk-7NADHFD2.cjs} +2 -2
- package/dist/{chunk-6QWQZI4Q.js.map → chunk-7NADHFD2.cjs.map} +1 -1
- package/dist/{chunk-4ECGVOJZ.cjs → chunk-7RGKOGE4.cjs} +33 -226
- package/dist/chunk-7RGKOGE4.cjs.map +1 -0
- package/dist/chunk-ABRFV4XP.js +83 -0
- package/dist/chunk-ABRFV4XP.js.map +1 -0
- package/dist/chunk-AHB4JCIQ.js +160 -0
- package/dist/chunk-AHB4JCIQ.js.map +1 -0
- package/dist/chunk-AW5BU3RQ.js +192 -0
- package/dist/chunk-AW5BU3RQ.js.map +1 -0
- package/dist/chunk-BATEJLED.js +124 -0
- package/dist/chunk-BATEJLED.js.map +1 -0
- package/dist/{chunk-UXGQZUYZ.js → chunk-CY4TP3FK.js} +3 -3
- package/dist/{chunk-UXGQZUYZ.js.map → chunk-CY4TP3FK.js.map} +1 -1
- package/dist/chunk-CY6R3HLM.cjs +727 -0
- package/dist/chunk-CY6R3HLM.cjs.map +1 -0
- package/dist/chunk-EP3JQDPD.cjs +131 -0
- package/dist/chunk-EP3JQDPD.cjs.map +1 -0
- package/dist/chunk-G4PUALCE.cjs +28 -0
- package/dist/chunk-G4PUALCE.cjs.map +1 -0
- package/dist/chunk-H33KYEMY.cjs +720 -0
- package/dist/chunk-H33KYEMY.cjs.map +1 -0
- package/dist/chunk-I3C4ODGV.cjs +335 -0
- package/dist/chunk-I3C4ODGV.cjs.map +1 -0
- package/dist/{chunk-3R5EV3HV.js → chunk-IAE7SFBS.js} +33 -220
- package/dist/chunk-IAE7SFBS.js.map +1 -0
- package/dist/chunk-LLUOPR3J.js +323 -0
- package/dist/chunk-LLUOPR3J.js.map +1 -0
- package/dist/{chunk-6QWQZI4Q.js → chunk-MMROOK5J.js} +2 -2
- package/dist/chunk-MMROOK5J.js.map +1 -0
- package/dist/chunk-MYR4PVGN.js +123 -0
- package/dist/chunk-MYR4PVGN.js.map +1 -0
- package/dist/chunk-NT5XW5PI.cjs +596 -0
- package/dist/chunk-NT5XW5PI.cjs.map +1 -0
- package/dist/chunk-PBXWFGEH.js +579 -0
- package/dist/chunk-PBXWFGEH.js.map +1 -0
- package/dist/chunk-PY2K7VNW.js +698 -0
- package/dist/chunk-PY2K7VNW.js.map +1 -0
- package/dist/chunk-QQXMIP6C.js +122 -0
- package/dist/chunk-QQXMIP6C.js.map +1 -0
- package/dist/{chunk-V5WWQN7P.cjs → chunk-RE4RPXT2.cjs} +4 -4
- package/dist/{chunk-V5WWQN7P.cjs.map → chunk-RE4RPXT2.cjs.map} +1 -1
- package/dist/chunk-SPRRK3P7.cjs +200 -0
- package/dist/chunk-SPRRK3P7.cjs.map +1 -0
- package/dist/chunk-TRGAMKHX.cjs +167 -0
- package/dist/chunk-TRGAMKHX.cjs.map +1 -0
- package/dist/{chunk-TBVUN4XN.cjs → chunk-USGGDGWL.cjs} +1998 -5969
- package/dist/chunk-USGGDGWL.cjs.map +1 -0
- package/dist/{chunk-UZ6CYAOG.cjs → chunk-VY4ENABS.cjs} +7 -6
- package/dist/chunk-VY4ENABS.cjs.map +1 -0
- package/dist/chunk-XN74I6VW.cjs +88 -0
- package/dist/chunk-XN74I6VW.cjs.map +1 -0
- package/dist/{chunk-G7BPNX2V.js → chunk-YWOK4F5A.js} +7 -6
- package/dist/chunk-YWOK4F5A.js.map +1 -0
- package/dist/server/handlers/a2a.cjs +7 -15
- package/dist/server/handlers/a2a.d.ts +10 -492
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +31 -43
- package/dist/server/handlers/agent-builder.d.ts +84 -592
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agents.cjs +41 -49
- package/dist/server/handlers/agents.d.ts +148 -3275
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/error.cjs +2 -2
- package/dist/server/handlers/error.js +1 -1
- package/dist/server/handlers/legacyWorkflows.cjs +48 -0
- package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
- package/dist/server/handlers/legacyWorkflows.d.ts +59 -0
- package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
- package/dist/server/handlers/legacyWorkflows.js +3 -0
- package/dist/server/handlers/legacyWorkflows.js.map +1 -0
- package/dist/server/handlers/logs.cjs +7 -7
- package/dist/server/handlers/logs.d.ts +27 -135
- package/dist/server/handlers/logs.d.ts.map +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/memory.cjs +31 -63
- package/dist/server/handlers/memory.d.ts +103 -934
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability.cjs +8 -24
- package/dist/server/handlers/observability.d.ts +21 -128
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +1 -1
- package/dist/server/handlers/scores.cjs +13 -13
- package/dist/server/handlers/scores.d.ts +141 -110
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/telemetry.cjs +20 -0
- package/dist/server/handlers/telemetry.cjs.map +1 -0
- package/dist/server/handlers/telemetry.d.ts +33 -0
- package/dist/server/handlers/telemetry.d.ts.map +1 -0
- package/dist/server/handlers/telemetry.js +3 -0
- package/dist/server/handlers/telemetry.js.map +1 -0
- package/dist/server/handlers/tools.cjs +11 -11
- package/dist/server/handlers/tools.d.ts +23 -69
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +3 -11
- package/dist/server/handlers/utils.d.ts +0 -5
- package/dist/server/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/vector.cjs +7 -31
- package/dist/server/handlers/vector.d.ts +9 -93
- package/dist/server/handlers/vector.d.ts.map +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +9 -21
- package/dist/server/handlers/voice.d.ts +40 -81
- package/dist/server/handlers/voice.d.ts.map +1 -1
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +45 -37
- package/dist/server/handlers/workflows.d.ts +83 -597
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +36 -26
- package/dist/server/handlers.d.ts +2 -0
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +13 -11
- package/dist/server/http-exception.d.ts +5 -0
- package/dist/server/http-exception.d.ts.map +1 -1
- package/dist/server/utils.d.ts +2 -3
- package/dist/server/utils.d.ts.map +1 -1
- package/package.json +15 -26
- package/dist/chunk-2NW6POYK.cjs +0 -89
- package/dist/chunk-2NW6POYK.cjs.map +0 -1
- package/dist/chunk-35NT4TMQ.cjs +0 -201
- package/dist/chunk-35NT4TMQ.cjs.map +0 -1
- package/dist/chunk-3R5EV3HV.js.map +0 -1
- package/dist/chunk-4ECGVOJZ.cjs.map +0 -1
- package/dist/chunk-5PONYNYP.cjs +0 -125
- package/dist/chunk-5PONYNYP.cjs.map +0 -1
- package/dist/chunk-5W4RPVTK.cjs +0 -49
- package/dist/chunk-5W4RPVTK.cjs.map +0 -1
- package/dist/chunk-64ITUOXI.cjs.map +0 -1
- package/dist/chunk-6BISSAIF.js.map +0 -1
- package/dist/chunk-6DTV6NEW.js +0 -116
- package/dist/chunk-6DTV6NEW.js.map +0 -1
- package/dist/chunk-AEO6IHLK.cjs +0 -368
- package/dist/chunk-AEO6IHLK.cjs.map +0 -1
- package/dist/chunk-ASZUOBKV.js +0 -310
- package/dist/chunk-ASZUOBKV.js.map +0 -1
- package/dist/chunk-ECIVTQ4E.js +0 -354
- package/dist/chunk-ECIVTQ4E.js.map +0 -1
- package/dist/chunk-FAQICBMH.js +0 -164
- package/dist/chunk-FAQICBMH.js.map +0 -1
- package/dist/chunk-FXDZLX2Y.js +0 -192
- package/dist/chunk-FXDZLX2Y.js.map +0 -1
- package/dist/chunk-G7BPNX2V.js.map +0 -1
- package/dist/chunk-I5VZ5SKG.js +0 -328
- package/dist/chunk-I5VZ5SKG.js.map +0 -1
- package/dist/chunk-ICANWSEW.js +0 -204
- package/dist/chunk-ICANWSEW.js.map +0 -1
- package/dist/chunk-KB5NSROG.cjs +0 -211
- package/dist/chunk-KB5NSROG.cjs.map +0 -1
- package/dist/chunk-MWQQRVQC.cjs +0 -259
- package/dist/chunk-MWQQRVQC.cjs.map +0 -1
- package/dist/chunk-NDFAQBQD.cjs +0 -792
- package/dist/chunk-NDFAQBQD.cjs.map +0 -1
- package/dist/chunk-PKRHEXX7.js +0 -74
- package/dist/chunk-PKRHEXX7.js.map +0 -1
- package/dist/chunk-QGWCNTG6.cjs +0 -797
- package/dist/chunk-QGWCNTG6.cjs.map +0 -1
- package/dist/chunk-R4M3BSUG.js +0 -226
- package/dist/chunk-R4M3BSUG.js.map +0 -1
- package/dist/chunk-TBVUN4XN.cjs.map +0 -1
- package/dist/chunk-UJNHKFBR.cjs +0 -167
- package/dist/chunk-UJNHKFBR.cjs.map +0 -1
- package/dist/chunk-UOFV2ZCI.js +0 -878
- package/dist/chunk-UOFV2ZCI.js.map +0 -1
- package/dist/chunk-UZ6CYAOG.cjs.map +0 -1
- package/dist/chunk-VQAT5HX6.js +0 -756
- package/dist/chunk-VQAT5HX6.js.map +0 -1
- package/dist/chunk-XWGAT2DA.js +0 -44
- package/dist/chunk-XWGAT2DA.js.map +0 -1
- package/dist/chunk-YJ3VDL3Z.cjs +0 -346
- package/dist/chunk-YJ3VDL3Z.cjs.map +0 -1
- package/dist/chunk-Z36N2OQA.cjs +0 -907
- package/dist/chunk-Z36N2OQA.cjs.map +0 -1
- package/dist/chunk-ZLRTFRL4.js +0 -773
- package/dist/chunk-ZLRTFRL4.js.map +0 -1
- package/dist/chunk-ZODCSH2W.cjs +0 -322
- package/dist/chunk-ZODCSH2W.cjs.map +0 -1
- package/dist/server/handlers/test-utils.cjs +0 -15
- package/dist/server/handlers/test-utils.cjs.map +0 -1
- package/dist/server/handlers/test-utils.d.ts +0 -6
- package/dist/server/handlers/test-utils.d.ts.map +0 -1
- package/dist/server/handlers/test-utils.js +0 -13
- package/dist/server/handlers/test-utils.js.map +0 -1
- package/dist/server/schemas/a2a.d.ts +0 -786
- package/dist/server/schemas/a2a.d.ts.map +0 -1
- package/dist/server/schemas/agent-builder.d.ts +0 -195
- package/dist/server/schemas/agent-builder.d.ts.map +0 -1
- package/dist/server/schemas/agents.d.ts +0 -1375
- package/dist/server/schemas/agents.d.ts.map +0 -1
- package/dist/server/schemas/common.d.ts +0 -165
- package/dist/server/schemas/common.d.ts.map +0 -1
- package/dist/server/schemas/logs.d.ts +0 -124
- package/dist/server/schemas/logs.d.ts.map +0 -1
- package/dist/server/schemas/memory.d.ts +0 -998
- package/dist/server/schemas/memory.d.ts.map +0 -1
- package/dist/server/schemas/observability.d.ts +0 -402
- package/dist/server/schemas/observability.d.ts.map +0 -1
- package/dist/server/schemas/scores.d.ts +0 -259
- package/dist/server/schemas/scores.d.ts.map +0 -1
- package/dist/server/schemas/vectors.d.ts +0 -107
- package/dist/server/schemas/vectors.d.ts.map +0 -1
- package/dist/server/schemas/workflows.d.ts +0 -505
- package/dist/server/schemas/workflows.d.ts.map +0 -1
- package/dist/server/server-adapter/index.cjs +0 -323
- package/dist/server/server-adapter/index.cjs.map +0 -1
- package/dist/server/server-adapter/index.d.ts +0 -52
- package/dist/server/server-adapter/index.d.ts.map +0 -1
- package/dist/server/server-adapter/index.js +0 -309
- package/dist/server/server-adapter/index.js.map +0 -1
- package/dist/server/server-adapter/openapi-utils.d.ts +0 -59
- package/dist/server/server-adapter/openapi-utils.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/a2a.d.ts +0 -3
- package/dist/server/server-adapter/routes/a2a.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/agent-builder.d.ts +0 -3
- package/dist/server/server-adapter/routes/agent-builder.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/agents.d.ts +0 -3
- package/dist/server/server-adapter/routes/agents.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/index.d.ts +0 -41
- package/dist/server/server-adapter/routes/index.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/legacy.d.ts +0 -7
- package/dist/server/server-adapter/routes/legacy.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/logs.d.ts +0 -3
- package/dist/server/server-adapter/routes/logs.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/memory.d.ts +0 -3
- package/dist/server/server-adapter/routes/memory.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/observability.d.ts +0 -3
- package/dist/server/server-adapter/routes/observability.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts +0 -52
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/scorers.d.ts +0 -3
- package/dist/server/server-adapter/routes/scorers.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/stream-types.d.ts +0 -10
- package/dist/server/server-adapter/routes/stream-types.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/tools.d.ts +0 -3
- package/dist/server/server-adapter/routes/tools.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/vectors.d.ts +0 -3
- package/dist/server/server-adapter/routes/vectors.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/workflows.d.ts +0 -3
- package/dist/server/server-adapter/routes/workflows.d.ts.map +0 -1
package/dist/chunk-FXDZLX2Y.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { voiceSpeakersResponseSchema, agentIdPathParams, speakResponseSchema, generateSpeechBodySchema, transcribeSpeechResponseSchema, transcribeSpeechBodySchema, getListenerResponseSchema } from './chunk-R4M3BSUG.js';
|
|
2
|
-
import { validateBody } from './chunk-XWGAT2DA.js';
|
|
3
|
-
import { createRoute } from './chunk-FAQICBMH.js';
|
|
4
|
-
import { handleError } from './chunk-UXGQZUYZ.js';
|
|
5
|
-
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
6
|
-
import { __export } from './chunk-PR4QN5HX.js';
|
|
7
|
-
import { Readable } from 'stream';
|
|
8
|
-
import { MastraError } from '@mastra/core/error';
|
|
9
|
-
|
|
10
|
-
// src/server/handlers/voice.ts
|
|
11
|
-
var voice_exports = {};
|
|
12
|
-
__export(voice_exports, {
|
|
13
|
-
GENERATE_SPEECH_DEPRECATED_ROUTE: () => GENERATE_SPEECH_DEPRECATED_ROUTE,
|
|
14
|
-
GENERATE_SPEECH_ROUTE: () => GENERATE_SPEECH_ROUTE,
|
|
15
|
-
GET_LISTENER_ROUTE: () => GET_LISTENER_ROUTE,
|
|
16
|
-
GET_SPEAKERS_DEPRECATED_ROUTE: () => GET_SPEAKERS_DEPRECATED_ROUTE,
|
|
17
|
-
GET_SPEAKERS_ROUTE: () => GET_SPEAKERS_ROUTE,
|
|
18
|
-
TRANSCRIBE_SPEECH_DEPRECATED_ROUTE: () => TRANSCRIBE_SPEECH_DEPRECATED_ROUTE,
|
|
19
|
-
TRANSCRIBE_SPEECH_ROUTE: () => TRANSCRIBE_SPEECH_ROUTE
|
|
20
|
-
});
|
|
21
|
-
var GET_SPEAKERS_ROUTE = createRoute({
|
|
22
|
-
method: "GET",
|
|
23
|
-
path: "/api/agents/:agentId/voice/speakers",
|
|
24
|
-
responseType: "json",
|
|
25
|
-
pathParamSchema: agentIdPathParams,
|
|
26
|
-
responseSchema: voiceSpeakersResponseSchema,
|
|
27
|
-
summary: "Get voice speakers",
|
|
28
|
-
description: "Returns available voice speakers for the specified agent",
|
|
29
|
-
tags: ["Agents", "Voice"],
|
|
30
|
-
handler: async ({ mastra, agentId, requestContext }) => {
|
|
31
|
-
try {
|
|
32
|
-
if (!agentId) {
|
|
33
|
-
throw new HTTPException(400, { message: "Agent ID is required" });
|
|
34
|
-
}
|
|
35
|
-
const agent = mastra.getAgentById(agentId);
|
|
36
|
-
if (!agent) {
|
|
37
|
-
throw new HTTPException(404, { message: "Agent not found" });
|
|
38
|
-
}
|
|
39
|
-
const voice = await agent.getVoice({ requestContext });
|
|
40
|
-
if (!voice) {
|
|
41
|
-
throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
42
|
-
}
|
|
43
|
-
const speakers = await voice.getSpeakers();
|
|
44
|
-
return speakers;
|
|
45
|
-
} catch (error) {
|
|
46
|
-
return handleError(error, "Error getting speakers");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
var GET_SPEAKERS_DEPRECATED_ROUTE = createRoute({
|
|
51
|
-
method: "GET",
|
|
52
|
-
path: "/api/agents/:agentId/speakers",
|
|
53
|
-
responseType: "json",
|
|
54
|
-
pathParamSchema: agentIdPathParams,
|
|
55
|
-
responseSchema: voiceSpeakersResponseSchema,
|
|
56
|
-
summary: "Get available speakers for an agent",
|
|
57
|
-
description: "[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent",
|
|
58
|
-
tags: ["Agents", "Voice"],
|
|
59
|
-
handler: GET_SPEAKERS_ROUTE.handler
|
|
60
|
-
});
|
|
61
|
-
var GENERATE_SPEECH_ROUTE = createRoute({
|
|
62
|
-
method: "POST",
|
|
63
|
-
path: "/api/agents/:agentId/voice/speak",
|
|
64
|
-
responseType: "stream",
|
|
65
|
-
pathParamSchema: agentIdPathParams,
|
|
66
|
-
bodySchema: generateSpeechBodySchema,
|
|
67
|
-
responseSchema: speakResponseSchema,
|
|
68
|
-
summary: "Generate speech",
|
|
69
|
-
description: "Generates speech audio from text using the agent voice configuration",
|
|
70
|
-
tags: ["Agents", "Voice"],
|
|
71
|
-
handler: async ({ mastra, agentId, text, speakerId, requestContext }) => {
|
|
72
|
-
try {
|
|
73
|
-
if (!agentId) {
|
|
74
|
-
throw new HTTPException(400, { message: "Agent ID is required" });
|
|
75
|
-
}
|
|
76
|
-
validateBody({ text });
|
|
77
|
-
const agent = mastra.getAgentById(agentId);
|
|
78
|
-
if (!agent) {
|
|
79
|
-
throw new HTTPException(404, { message: "Agent not found" });
|
|
80
|
-
}
|
|
81
|
-
const voice = await agent.getVoice({ requestContext });
|
|
82
|
-
if (!voice) {
|
|
83
|
-
throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
84
|
-
}
|
|
85
|
-
const audioStream = await Promise.resolve().then(() => voice.speak(text, { speaker: speakerId })).catch((err) => {
|
|
86
|
-
if (err instanceof MastraError) {
|
|
87
|
-
throw new HTTPException(400, { message: err.message });
|
|
88
|
-
}
|
|
89
|
-
throw err;
|
|
90
|
-
});
|
|
91
|
-
if (!audioStream) {
|
|
92
|
-
throw new HTTPException(500, { message: "Failed to generate speech" });
|
|
93
|
-
}
|
|
94
|
-
return audioStream;
|
|
95
|
-
} catch (error) {
|
|
96
|
-
return handleError(error, "Error generating speech");
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
var GENERATE_SPEECH_DEPRECATED_ROUTE = createRoute({
|
|
101
|
-
method: "POST",
|
|
102
|
-
path: "/api/agents/:agentId/speak",
|
|
103
|
-
responseType: "stream",
|
|
104
|
-
pathParamSchema: agentIdPathParams,
|
|
105
|
-
bodySchema: generateSpeechBodySchema,
|
|
106
|
-
responseSchema: speakResponseSchema,
|
|
107
|
-
summary: "Convert text to speech",
|
|
108
|
-
description: "[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider",
|
|
109
|
-
tags: ["Agents", "Voice"],
|
|
110
|
-
handler: GENERATE_SPEECH_ROUTE.handler
|
|
111
|
-
});
|
|
112
|
-
var TRANSCRIBE_SPEECH_ROUTE = createRoute({
|
|
113
|
-
method: "POST",
|
|
114
|
-
path: "/api/agents/:agentId/voice/listen",
|
|
115
|
-
responseType: "json",
|
|
116
|
-
pathParamSchema: agentIdPathParams,
|
|
117
|
-
bodySchema: transcribeSpeechBodySchema,
|
|
118
|
-
responseSchema: transcribeSpeechResponseSchema,
|
|
119
|
-
summary: "Transcribe speech",
|
|
120
|
-
description: "Transcribes speech audio to text using the agent voice configuration",
|
|
121
|
-
tags: ["Agents", "Voice"],
|
|
122
|
-
handler: async ({ mastra, agentId, audioData, options, requestContext }) => {
|
|
123
|
-
try {
|
|
124
|
-
if (!agentId) {
|
|
125
|
-
throw new HTTPException(400, { message: "Agent ID is required" });
|
|
126
|
-
}
|
|
127
|
-
if (!audioData) {
|
|
128
|
-
throw new HTTPException(400, { message: "Audio data is required" });
|
|
129
|
-
}
|
|
130
|
-
const agent = mastra.getAgentById(agentId);
|
|
131
|
-
if (!agent) {
|
|
132
|
-
throw new HTTPException(404, { message: "Agent not found" });
|
|
133
|
-
}
|
|
134
|
-
const voice = await agent.getVoice({ requestContext });
|
|
135
|
-
if (!voice) {
|
|
136
|
-
throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
137
|
-
}
|
|
138
|
-
const audioStream = new Readable();
|
|
139
|
-
audioStream.push(audioData);
|
|
140
|
-
audioStream.push(null);
|
|
141
|
-
const text = await voice.listen(audioStream, options);
|
|
142
|
-
return { text };
|
|
143
|
-
} catch (error) {
|
|
144
|
-
return handleError(error, "Error transcribing speech");
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
var TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = createRoute({
|
|
149
|
-
method: "POST",
|
|
150
|
-
path: "/api/agents/:agentId/listen",
|
|
151
|
-
responseType: "json",
|
|
152
|
-
pathParamSchema: agentIdPathParams,
|
|
153
|
-
bodySchema: transcribeSpeechBodySchema,
|
|
154
|
-
responseSchema: transcribeSpeechResponseSchema,
|
|
155
|
-
summary: "Convert speech to text",
|
|
156
|
-
description: "[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.",
|
|
157
|
-
tags: ["Agents", "Voice"],
|
|
158
|
-
handler: TRANSCRIBE_SPEECH_ROUTE.handler
|
|
159
|
-
});
|
|
160
|
-
var GET_LISTENER_ROUTE = createRoute({
|
|
161
|
-
method: "GET",
|
|
162
|
-
path: "/api/agents/:agentId/voice/listener",
|
|
163
|
-
responseType: "json",
|
|
164
|
-
pathParamSchema: agentIdPathParams,
|
|
165
|
-
responseSchema: getListenerResponseSchema,
|
|
166
|
-
summary: "Get voice listener",
|
|
167
|
-
description: "Returns the voice listener configuration for the agent",
|
|
168
|
-
tags: ["Agents", "Voice"],
|
|
169
|
-
handler: async ({ mastra, agentId, requestContext }) => {
|
|
170
|
-
try {
|
|
171
|
-
if (!agentId) {
|
|
172
|
-
throw new HTTPException(400, { message: "Agent ID is required" });
|
|
173
|
-
}
|
|
174
|
-
const agent = mastra.getAgentById(agentId);
|
|
175
|
-
if (!agent) {
|
|
176
|
-
throw new HTTPException(404, { message: "Agent not found" });
|
|
177
|
-
}
|
|
178
|
-
const voice = await agent.getVoice({ requestContext });
|
|
179
|
-
if (!voice) {
|
|
180
|
-
throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
|
|
181
|
-
}
|
|
182
|
-
const listeners = await voice.getListener();
|
|
183
|
-
return listeners;
|
|
184
|
-
} catch (error) {
|
|
185
|
-
return handleError(error, "Error getting listeners");
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
export { GENERATE_SPEECH_DEPRECATED_ROUTE, GENERATE_SPEECH_ROUTE, GET_LISTENER_ROUTE, GET_SPEAKERS_DEPRECATED_ROUTE, GET_SPEAKERS_ROUTE, TRANSCRIBE_SPEECH_DEPRECATED_ROUTE, TRANSCRIBE_SPEECH_ROUTE, voice_exports };
|
|
191
|
-
//# sourceMappingURL=chunk-FXDZLX2Y.js.map
|
|
192
|
-
//# sourceMappingURL=chunk-FXDZLX2Y.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/voice.ts"],"names":[],"mappings":"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","file":"chunk-FXDZLX2Y.js","sourcesContent":["import { Readable } from 'stream';\nimport { MastraError } from '@mastra/core/error';\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n voiceSpeakersResponseSchema,\n generateSpeechBodySchema,\n speakResponseSchema,\n transcribeSpeechBodySchema,\n transcribeSpeechResponseSchema,\n getListenerResponseSchema,\n} from '../schemas/agents';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n// ============================================================================\n// Route Objects\n// ============================================================================\n\nexport const GET_SPEAKERS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get voice speakers',\n description: 'Returns available voice speakers for the specified agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const speakers = await voice.getSpeakers();\n return speakers;\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n },\n});\n\nexport const GET_SPEAKERS_DEPRECATED_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get available speakers for an agent',\n description: '[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['Agents', 'Voice'],\n handler: GET_SPEAKERS_ROUTE.handler,\n});\n\nexport const GENERATE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Generate speech',\n description: 'Generates speech audio from text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, text, speakerId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n validateBody({ text });\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = await Promise.resolve()\n .then(() => voice.speak(text!, { speaker: speakerId! }))\n .catch(err => {\n if (err instanceof MastraError) {\n throw new HTTPException(400, { message: err.message });\n }\n\n throw err;\n });\n\n if (!audioStream) {\n throw new HTTPException(500, { message: 'Failed to generate speech' });\n }\n\n return audioStream as unknown as ReadableStream<any>;\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n },\n});\n\nexport const GENERATE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Convert text to speech',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['Agents', 'Voice'],\n handler: GENERATE_SPEECH_ROUTE.handler,\n});\n\nexport const TRANSCRIBE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Transcribe speech',\n description: 'Transcribes speech audio to text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, audioData, options, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n if (!audioData) {\n throw new HTTPException(400, { message: 'Audio data is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = new Readable();\n audioStream.push(audioData);\n audioStream.push(null);\n\n const text = await voice.listen(audioStream, options);\n return { text: text as string };\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n },\n});\n\nexport const TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Convert speech to text',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['Agents', 'Voice'],\n handler: TRANSCRIBE_SPEECH_ROUTE.handler,\n});\n\nexport const GET_LISTENER_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/listener',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: getListenerResponseSchema,\n summary: 'Get voice listener',\n description: 'Returns the voice listener configuration for the agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const listeners = await voice.getListener();\n return listeners;\n } catch (error) {\n return handleError(error, 'Error getting listeners');\n }\n },\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/utils.ts"],"names":[],"mappings":"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","file":"chunk-G7BPNX2V.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { SystemMessage } from '@mastra/core/llm';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport type { StepWithComponent, Workflow, WorkflowInfo } from '@mastra/core/workflows';\nimport { stringify } from 'superjson';\n\nfunction getSteps(steps: Record<string, StepWithComponent>, path?: string) {\n return Object.entries(steps).reduce<any>((acc, [key, step]) => {\n const fullKey = path ? `${path}.${key}` : key;\n acc[fullKey] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(zodToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(zodToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(zodToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(zodToJsonSchema(step.suspendSchema)) : undefined,\n isWorkflow: step.component === 'WORKFLOW',\n component: step.component,\n };\n\n if (step.component === 'WORKFLOW' && step.steps) {\n const nestedSteps = getSteps(step.steps, fullKey) || {};\n acc = { ...acc, ...nestedSteps };\n }\n\n return acc;\n }, {});\n}\n\nexport function getWorkflowInfo(workflow: Workflow): WorkflowInfo {\n return {\n name: workflow.name,\n description: workflow.description,\n steps: Object.entries(workflow.steps).reduce<any>((acc, [key, step]) => {\n acc[key] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(zodToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(zodToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(zodToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(zodToJsonSchema(step.suspendSchema)) : undefined,\n component: step.component,\n };\n return acc;\n }, {}),\n allSteps: getSteps(workflow.steps) || {},\n stepGraph: workflow.serializedStepGraph,\n inputSchema: workflow.inputSchema ? stringify(zodToJsonSchema(workflow.inputSchema)) : undefined,\n outputSchema: workflow.outputSchema ? stringify(zodToJsonSchema(workflow.outputSchema)) : undefined,\n options: workflow.options,\n };\n}\n\n/**\n * Workflow Registry for temporarily registering additional workflows\n * that are not part of the user's Mastra instance (e.g., internal template workflows)\n */\nexport class WorkflowRegistry {\n private static additionalWorkflows: Record<string, Workflow> = {};\n\n /**\n * Register a workflow temporarily\n */\n static registerTemporaryWorkflow(id: string, workflow: Workflow): void {\n this.additionalWorkflows[id] = workflow;\n }\n\n /**\n * Register all workflows from map\n */\n static registerTemporaryWorkflows(\n workflows: Record<string, Workflow>,\n mastra?: Mastra<any, any, any, any, any, any, any, any, any>,\n ): void {\n for (const [id, workflow] of Object.entries(workflows)) {\n // Register Mastra instance with the workflow if provided\n if (mastra) {\n workflow.__registerMastra(mastra);\n workflow.__registerPrimitives({\n logger: mastra.getLogger(),\n storage: mastra.getStorage(),\n agents: mastra.listAgents(),\n tts: mastra.getTTS(),\n vectors: mastra.listVectors(),\n });\n }\n this.additionalWorkflows[id] = workflow;\n }\n }\n\n /**\n * Get a workflow by ID from the registry (returns undefined if not found)\n */\n static getWorkflow(workflowId: string): Workflow | undefined {\n return this.additionalWorkflows[workflowId];\n }\n\n /**\n * Get all workflows from the registry\n */\n static getAllWorkflows(): Record<string, Workflow> {\n return { ...this.additionalWorkflows };\n }\n\n /**\n * Clean up a temporary workflow\n */\n static cleanupTemporaryWorkflow(workflowId: string): void {\n delete this.additionalWorkflows[workflowId];\n }\n /**\n * Clean up all registered workflows\n */\n static cleanup(): void {\n // Clear all workflows (since we register all agent-builder workflows each time)\n this.additionalWorkflows = {};\n }\n\n /**\n * Check if a workflow ID is a valid agent-builder workflow\n */\n static isAgentBuilderWorkflow(workflowId: string): boolean {\n return workflowId in this.additionalWorkflows;\n }\n\n /**\n * Get all registered temporary workflow IDs (for debugging)\n */\n static getRegisteredWorkflowIds(): string[] {\n return Object.keys(this.additionalWorkflows);\n }\n}\n\nexport function convertInstructionsToString(message: SystemMessage): string {\n if (!message) {\n return '';\n }\n\n if (typeof message === 'string') {\n return message;\n }\n\n if (Array.isArray(message)) {\n return message\n .map(m => {\n if (typeof m === 'string') {\n return m;\n }\n // Safely extract content from message objects\n return typeof m.content === 'string' ? m.content : '';\n })\n .filter(content => content) // Remove empty strings\n .join('\\n');\n }\n\n // Handle single message object - safely extract content\n return typeof message.content === 'string' ? message.content : '';\n}\n"]}
|
package/dist/chunk-I5VZ5SKG.js
DELETED
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
import { successResponseSchema } from './chunk-PKRHEXX7.js';
|
|
2
|
-
import { createRoute } from './chunk-FAQICBMH.js';
|
|
3
|
-
import { handleError } from './chunk-UXGQZUYZ.js';
|
|
4
|
-
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
5
|
-
import { __export } from './chunk-PR4QN5HX.js';
|
|
6
|
-
import z from 'zod';
|
|
7
|
-
|
|
8
|
-
// src/server/handlers/vector.ts
|
|
9
|
-
var vector_exports = {};
|
|
10
|
-
__export(vector_exports, {
|
|
11
|
-
CREATE_INDEX_ROUTE: () => CREATE_INDEX_ROUTE,
|
|
12
|
-
DELETE_INDEX_ROUTE: () => DELETE_INDEX_ROUTE,
|
|
13
|
-
DESCRIBE_INDEX_ROUTE: () => DESCRIBE_INDEX_ROUTE,
|
|
14
|
-
LIST_INDEXES_ROUTE: () => LIST_INDEXES_ROUTE,
|
|
15
|
-
QUERY_VECTORS_ROUTE: () => QUERY_VECTORS_ROUTE,
|
|
16
|
-
UPSERT_VECTORS_ROUTE: () => UPSERT_VECTORS_ROUTE,
|
|
17
|
-
createIndex: () => createIndex,
|
|
18
|
-
deleteIndex: () => deleteIndex,
|
|
19
|
-
describeIndex: () => describeIndex,
|
|
20
|
-
listIndexes: () => listIndexes,
|
|
21
|
-
queryVectors: () => queryVectors,
|
|
22
|
-
upsertVectors: () => upsertVectors
|
|
23
|
-
});
|
|
24
|
-
var vectorNamePathParams = z.object({
|
|
25
|
-
vectorName: z.string().describe("Name of the vector store")
|
|
26
|
-
});
|
|
27
|
-
var vectorIndexPathParams = vectorNamePathParams.extend({
|
|
28
|
-
indexName: z.string().describe("Name of the index")
|
|
29
|
-
});
|
|
30
|
-
var indexBodyBaseSchema = z.object({
|
|
31
|
-
indexName: z.string()
|
|
32
|
-
});
|
|
33
|
-
var upsertVectorsBodySchema = indexBodyBaseSchema.extend({
|
|
34
|
-
vectors: z.array(z.array(z.number())),
|
|
35
|
-
metadata: z.array(z.record(z.string(), z.any())).optional(),
|
|
36
|
-
ids: z.array(z.string()).optional()
|
|
37
|
-
});
|
|
38
|
-
var createIndexBodySchema = indexBodyBaseSchema.extend({
|
|
39
|
-
dimension: z.number(),
|
|
40
|
-
metric: z.enum(["cosine", "euclidean", "dotproduct"]).optional()
|
|
41
|
-
});
|
|
42
|
-
var queryVectorsBodySchema = indexBodyBaseSchema.extend({
|
|
43
|
-
queryVector: z.array(z.number()),
|
|
44
|
-
topK: z.number().optional(),
|
|
45
|
-
filter: z.record(z.string(), z.any()).optional(),
|
|
46
|
-
includeVector: z.boolean().optional()
|
|
47
|
-
});
|
|
48
|
-
var upsertVectorsResponseSchema = z.object({
|
|
49
|
-
ids: z.array(z.string())
|
|
50
|
-
});
|
|
51
|
-
var createIndexResponseSchema = successResponseSchema;
|
|
52
|
-
var queryVectorsResponseSchema = z.array(z.unknown());
|
|
53
|
-
var listIndexesResponseSchema = z.array(z.string());
|
|
54
|
-
var describeIndexResponseSchema = z.object({
|
|
55
|
-
dimension: z.number(),
|
|
56
|
-
count: z.number(),
|
|
57
|
-
metric: z.string().optional()
|
|
58
|
-
});
|
|
59
|
-
var deleteIndexResponseSchema = successResponseSchema;
|
|
60
|
-
|
|
61
|
-
// src/server/handlers/vector.ts
|
|
62
|
-
function getVector(mastra, vectorName) {
|
|
63
|
-
if (!vectorName) {
|
|
64
|
-
throw new HTTPException(400, { message: "Vector name is required" });
|
|
65
|
-
}
|
|
66
|
-
const vector = mastra.getVector(vectorName);
|
|
67
|
-
if (!vector) {
|
|
68
|
-
throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });
|
|
69
|
-
}
|
|
70
|
-
return vector;
|
|
71
|
-
}
|
|
72
|
-
async function upsertVectors({
|
|
73
|
-
mastra,
|
|
74
|
-
vectorName,
|
|
75
|
-
indexName,
|
|
76
|
-
vectors,
|
|
77
|
-
metadata,
|
|
78
|
-
ids
|
|
79
|
-
}) {
|
|
80
|
-
try {
|
|
81
|
-
if (!indexName || !vectors || !Array.isArray(vectors)) {
|
|
82
|
-
throw new HTTPException(400, { message: "Invalid request index. indexName and vectors array are required." });
|
|
83
|
-
}
|
|
84
|
-
const vector = getVector(mastra, vectorName);
|
|
85
|
-
const result = await vector.upsert({ indexName, vectors, metadata, ids });
|
|
86
|
-
return { ids: result };
|
|
87
|
-
} catch (error) {
|
|
88
|
-
return handleError(error, "Error upserting vectors");
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
async function createIndex({
|
|
92
|
-
mastra,
|
|
93
|
-
vectorName,
|
|
94
|
-
indexName,
|
|
95
|
-
dimension,
|
|
96
|
-
metric
|
|
97
|
-
}) {
|
|
98
|
-
try {
|
|
99
|
-
if (!indexName || typeof dimension !== "number" || dimension <= 0) {
|
|
100
|
-
throw new HTTPException(400, {
|
|
101
|
-
message: "Invalid request index, indexName and positive dimension number are required."
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
if (metric && !["cosine", "euclidean", "dotproduct"].includes(metric)) {
|
|
105
|
-
throw new HTTPException(400, { message: "Invalid metric. Must be one of: cosine, euclidean, dotproduct" });
|
|
106
|
-
}
|
|
107
|
-
const vector = getVector(mastra, vectorName);
|
|
108
|
-
await vector.createIndex({ indexName, dimension, metric });
|
|
109
|
-
return { success: true };
|
|
110
|
-
} catch (error) {
|
|
111
|
-
return handleError(error, "Error creating index");
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
async function queryVectors({
|
|
115
|
-
mastra,
|
|
116
|
-
vectorName,
|
|
117
|
-
indexName,
|
|
118
|
-
queryVector,
|
|
119
|
-
topK,
|
|
120
|
-
filter,
|
|
121
|
-
includeVector
|
|
122
|
-
}) {
|
|
123
|
-
try {
|
|
124
|
-
if (!indexName || !queryVector || !Array.isArray(queryVector)) {
|
|
125
|
-
throw new HTTPException(400, { message: "Invalid request query. indexName and queryVector array are required." });
|
|
126
|
-
}
|
|
127
|
-
const vector = getVector(mastra, vectorName);
|
|
128
|
-
const results = await vector.query({ indexName, queryVector, topK, filter, includeVector });
|
|
129
|
-
return results;
|
|
130
|
-
} catch (error) {
|
|
131
|
-
return handleError(error, "Error querying vectors");
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async function listIndexes({ mastra, vectorName }) {
|
|
135
|
-
try {
|
|
136
|
-
const vector = getVector(mastra, vectorName);
|
|
137
|
-
const indexes = await vector.listIndexes();
|
|
138
|
-
return indexes.filter(Boolean);
|
|
139
|
-
} catch (error) {
|
|
140
|
-
return handleError(error, "Error listing indexes");
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
async function describeIndex({
|
|
144
|
-
mastra,
|
|
145
|
-
vectorName,
|
|
146
|
-
indexName
|
|
147
|
-
}) {
|
|
148
|
-
try {
|
|
149
|
-
if (!indexName) {
|
|
150
|
-
throw new HTTPException(400, { message: "Index name is required" });
|
|
151
|
-
}
|
|
152
|
-
const vector = getVector(mastra, vectorName);
|
|
153
|
-
const stats = await vector.describeIndex({ indexName });
|
|
154
|
-
return {
|
|
155
|
-
dimension: stats.dimension,
|
|
156
|
-
count: stats.count,
|
|
157
|
-
metric: stats.metric?.toLowerCase()
|
|
158
|
-
};
|
|
159
|
-
} catch (error) {
|
|
160
|
-
return handleError(error, "Error describing index");
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async function deleteIndex({
|
|
164
|
-
mastra,
|
|
165
|
-
vectorName,
|
|
166
|
-
indexName
|
|
167
|
-
}) {
|
|
168
|
-
try {
|
|
169
|
-
if (!indexName) {
|
|
170
|
-
throw new HTTPException(400, { message: "Index name is required" });
|
|
171
|
-
}
|
|
172
|
-
const vector = getVector(mastra, vectorName);
|
|
173
|
-
await vector.deleteIndex({ indexName });
|
|
174
|
-
return { success: true };
|
|
175
|
-
} catch (error) {
|
|
176
|
-
return handleError(error, "Error deleting index");
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
var UPSERT_VECTORS_ROUTE = createRoute({
|
|
180
|
-
method: "POST",
|
|
181
|
-
path: "/api/vector/:vectorName/upsert",
|
|
182
|
-
responseType: "json",
|
|
183
|
-
pathParamSchema: vectorNamePathParams,
|
|
184
|
-
bodySchema: upsertVectorsBodySchema,
|
|
185
|
-
responseSchema: upsertVectorsResponseSchema,
|
|
186
|
-
summary: "Upsert vectors",
|
|
187
|
-
description: "Inserts or updates vectors in the specified index",
|
|
188
|
-
tags: ["Vectors"],
|
|
189
|
-
handler: async ({ mastra, vectorName, ...params }) => {
|
|
190
|
-
try {
|
|
191
|
-
const { indexName, vectors, metadata, ids } = params;
|
|
192
|
-
if (!indexName || !vectors || !Array.isArray(vectors)) {
|
|
193
|
-
throw new HTTPException(400, { message: "Invalid request index. indexName and vectors array are required." });
|
|
194
|
-
}
|
|
195
|
-
const vector = getVector(mastra, vectorName);
|
|
196
|
-
const result = await vector.upsert({ indexName, vectors, metadata, ids });
|
|
197
|
-
return { ids: result };
|
|
198
|
-
} catch (error) {
|
|
199
|
-
return handleError(error, "Error upserting vectors");
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
var CREATE_INDEX_ROUTE = createRoute({
|
|
204
|
-
method: "POST",
|
|
205
|
-
path: "/api/vector/:vectorName/create-index",
|
|
206
|
-
responseType: "json",
|
|
207
|
-
pathParamSchema: vectorNamePathParams,
|
|
208
|
-
bodySchema: createIndexBodySchema,
|
|
209
|
-
responseSchema: createIndexResponseSchema,
|
|
210
|
-
summary: "Create index",
|
|
211
|
-
description: "Creates a new vector index with the specified dimension and metric",
|
|
212
|
-
tags: ["Vectors"],
|
|
213
|
-
handler: async ({ mastra, vectorName, ...params }) => {
|
|
214
|
-
try {
|
|
215
|
-
const { indexName, dimension, metric } = params;
|
|
216
|
-
if (!indexName || typeof dimension !== "number" || dimension <= 0) {
|
|
217
|
-
throw new HTTPException(400, {
|
|
218
|
-
message: "Invalid request index, indexName and positive dimension number are required."
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
if (metric && !["cosine", "euclidean", "dotproduct"].includes(metric)) {
|
|
222
|
-
throw new HTTPException(400, { message: "Invalid metric. Must be one of: cosine, euclidean, dotproduct" });
|
|
223
|
-
}
|
|
224
|
-
const vector = getVector(mastra, vectorName);
|
|
225
|
-
await vector.createIndex({ indexName, dimension, metric });
|
|
226
|
-
return { success: true };
|
|
227
|
-
} catch (error) {
|
|
228
|
-
return handleError(error, "Error creating index");
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
});
|
|
232
|
-
var QUERY_VECTORS_ROUTE = createRoute({
|
|
233
|
-
method: "POST",
|
|
234
|
-
path: "/api/vector/:vectorName/query",
|
|
235
|
-
responseType: "json",
|
|
236
|
-
pathParamSchema: vectorNamePathParams,
|
|
237
|
-
bodySchema: queryVectorsBodySchema,
|
|
238
|
-
responseSchema: queryVectorsResponseSchema,
|
|
239
|
-
summary: "Query vectors",
|
|
240
|
-
description: "Performs a similarity search on the vector index",
|
|
241
|
-
tags: ["Vectors"],
|
|
242
|
-
handler: async ({ mastra, vectorName, ...params }) => {
|
|
243
|
-
try {
|
|
244
|
-
const { indexName, queryVector, topK, filter, includeVector } = params;
|
|
245
|
-
if (!indexName || !queryVector || !Array.isArray(queryVector)) {
|
|
246
|
-
throw new HTTPException(400, {
|
|
247
|
-
message: "Invalid request query. indexName and queryVector array are required."
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
const vector = getVector(mastra, vectorName);
|
|
251
|
-
const results = await vector.query({ indexName, queryVector, topK, filter, includeVector });
|
|
252
|
-
return results;
|
|
253
|
-
} catch (error) {
|
|
254
|
-
return handleError(error, "Error querying vectors");
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
var LIST_INDEXES_ROUTE = createRoute({
|
|
259
|
-
method: "GET",
|
|
260
|
-
path: "/api/vector/:vectorName/indexes",
|
|
261
|
-
responseType: "json",
|
|
262
|
-
pathParamSchema: vectorNamePathParams,
|
|
263
|
-
responseSchema: listIndexesResponseSchema,
|
|
264
|
-
summary: "List indexes",
|
|
265
|
-
description: "Returns a list of all indexes in the vector store",
|
|
266
|
-
tags: ["Vectors"],
|
|
267
|
-
handler: async ({ mastra, vectorName }) => {
|
|
268
|
-
try {
|
|
269
|
-
const vector = getVector(mastra, vectorName);
|
|
270
|
-
const indexes = await vector.listIndexes();
|
|
271
|
-
return indexes.filter(Boolean);
|
|
272
|
-
} catch (error) {
|
|
273
|
-
return handleError(error, "Error listing indexes");
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
var DESCRIBE_INDEX_ROUTE = createRoute({
|
|
278
|
-
method: "GET",
|
|
279
|
-
path: "/api/vector/:vectorName/indexes/:indexName",
|
|
280
|
-
responseType: "json",
|
|
281
|
-
pathParamSchema: vectorIndexPathParams,
|
|
282
|
-
responseSchema: describeIndexResponseSchema,
|
|
283
|
-
summary: "Describe index",
|
|
284
|
-
description: "Returns statistics and metadata for a specific index",
|
|
285
|
-
tags: ["Vectors"],
|
|
286
|
-
handler: async ({ mastra, vectorName, indexName }) => {
|
|
287
|
-
try {
|
|
288
|
-
if (!indexName) {
|
|
289
|
-
throw new HTTPException(400, { message: "Index name is required" });
|
|
290
|
-
}
|
|
291
|
-
const vector = getVector(mastra, vectorName);
|
|
292
|
-
const stats = await vector.describeIndex({ indexName });
|
|
293
|
-
return {
|
|
294
|
-
dimension: stats.dimension,
|
|
295
|
-
count: stats.count,
|
|
296
|
-
metric: stats.metric?.toLowerCase()
|
|
297
|
-
};
|
|
298
|
-
} catch (error) {
|
|
299
|
-
return handleError(error, "Error describing index");
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
var DELETE_INDEX_ROUTE = createRoute({
|
|
304
|
-
method: "DELETE",
|
|
305
|
-
path: "/api/vector/:vectorName/indexes/:indexName",
|
|
306
|
-
responseType: "json",
|
|
307
|
-
pathParamSchema: vectorIndexPathParams,
|
|
308
|
-
responseSchema: deleteIndexResponseSchema,
|
|
309
|
-
summary: "Delete index",
|
|
310
|
-
description: "Deletes a vector index and all its data",
|
|
311
|
-
tags: ["Vectors"],
|
|
312
|
-
handler: async ({ mastra, vectorName, indexName }) => {
|
|
313
|
-
try {
|
|
314
|
-
if (!indexName) {
|
|
315
|
-
throw new HTTPException(400, { message: "Index name is required" });
|
|
316
|
-
}
|
|
317
|
-
const vector = getVector(mastra, vectorName);
|
|
318
|
-
await vector.deleteIndex({ indexName });
|
|
319
|
-
return { success: true };
|
|
320
|
-
} catch (error) {
|
|
321
|
-
return handleError(error, "Error deleting index");
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
export { CREATE_INDEX_ROUTE, DELETE_INDEX_ROUTE, DESCRIBE_INDEX_ROUTE, LIST_INDEXES_ROUTE, QUERY_VECTORS_ROUTE, UPSERT_VECTORS_ROUTE, createIndex, deleteIndex, describeIndex, listIndexes, queryVectors, upsertVectors, vector_exports };
|
|
327
|
-
//# sourceMappingURL=chunk-I5VZ5SKG.js.map
|
|
328
|
-
//# sourceMappingURL=chunk-I5VZ5SKG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/vector.ts","../src/server/schemas/vectors.ts"],"names":[],"mappings":"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","file":"chunk-I5VZ5SKG.js","sourcesContent":["import type { MastraVector, QueryResult, IndexStats } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/api/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/api/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/api/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/api/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n","import z from 'zod';\nimport { successResponseSchema } from './common';\n\n// Path parameter schemas\nexport const vectorNamePathParams = z.object({\n vectorName: z.string().describe('Name of the vector store'),\n});\n\nexport const vectorIndexPathParams = vectorNamePathParams.extend({\n indexName: z.string().describe('Name of the index'),\n});\n\n// Body schemas\n// Base schema for operations that require an index name\nconst indexBodyBaseSchema = z.object({\n indexName: z.string(),\n});\n\nexport const upsertVectorsBodySchema = indexBodyBaseSchema.extend({\n vectors: z.array(z.array(z.number())),\n metadata: z.array(z.record(z.string(), z.any())).optional(),\n ids: z.array(z.string()).optional(),\n});\n\nexport const createIndexBodySchema = indexBodyBaseSchema.extend({\n dimension: z.number(),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional(),\n});\n\nexport const queryVectorsBodySchema = indexBodyBaseSchema.extend({\n queryVector: z.array(z.number()),\n topK: z.number().optional(),\n filter: z.record(z.string(), z.any()).optional(),\n includeVector: z.boolean().optional(),\n});\n\n// Response schemas\nexport const upsertVectorsResponseSchema = z.object({\n ids: z.array(z.string()),\n});\n\nexport const createIndexResponseSchema = successResponseSchema;\n\nexport const queryVectorsResponseSchema = z.array(z.unknown()); // QueryResult[]\n\nexport const listIndexesResponseSchema = z.array(z.string());\n\nexport const describeIndexResponseSchema = z.object({\n dimension: z.number(),\n count: z.number(),\n metric: z.string().optional(),\n});\n\nexport const deleteIndexResponseSchema = successResponseSchema;\n"]}
|