@mastra/core 0.17.0-alpha.5 → 0.17.0-alpha.7
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 +35 -0
- package/cache.d.ts +1 -0
- package/dist/agent/agent.d.ts +1 -1
- package/dist/agent/index.cjs +11 -11
- 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/ai-tracing/index.cjs +32 -32
- package/dist/ai-tracing/index.js +1 -1
- package/dist/base.cjs +2 -2
- package/dist/base.js +1 -1
- package/dist/bundler/index.cjs +2 -2
- package/dist/bundler/index.js +1 -1
- package/dist/cache/base.d.ts +14 -0
- package/dist/cache/base.d.ts.map +1 -0
- package/dist/cache/index.cjs +16 -0
- package/dist/cache/index.cjs.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +3 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/inmemory.d.ts +13 -0
- package/dist/cache/inmemory.d.ts.map +1 -0
- package/dist/{chunk-XRJDA7BI.js → chunk-2B5DS7ML.js} +3 -3
- package/dist/{chunk-XRJDA7BI.js.map → chunk-2B5DS7ML.js.map} +1 -1
- package/dist/{chunk-IYN65QCO.js → chunk-36QJI2HU.js} +18 -33
- package/dist/chunk-36QJI2HU.js.map +1 -0
- package/dist/chunk-3PQNUWJM.js +62 -0
- package/dist/chunk-3PQNUWJM.js.map +1 -0
- package/dist/{chunk-QHDT3QQC.cjs → chunk-4HWB6PCC.cjs} +4 -4
- package/dist/{chunk-QHDT3QQC.cjs.map → chunk-4HWB6PCC.cjs.map} +1 -1
- package/dist/{chunk-KXCUCBEI.cjs → chunk-4L3P3PCP.cjs} +8 -8
- package/dist/{chunk-KXCUCBEI.cjs.map → chunk-4L3P3PCP.cjs.map} +1 -1
- package/dist/{chunk-VXJFKEON.js → chunk-4LANQQSH.js} +5 -5
- package/dist/{chunk-VXJFKEON.js.map → chunk-4LANQQSH.js.map} +1 -1
- package/dist/{chunk-TLJPVRO5.js → chunk-5QXPHYHO.js} +2 -3
- package/dist/chunk-5QXPHYHO.js.map +1 -0
- package/dist/{chunk-VBBMXF7Z.cjs → chunk-64ONYYLY.cjs} +30 -45
- package/dist/chunk-64ONYYLY.cjs.map +1 -0
- package/dist/{chunk-EXG53YAJ.cjs → chunk-6WEZASFM.cjs} +72 -60
- package/dist/chunk-6WEZASFM.cjs.map +1 -0
- package/dist/{chunk-7NKIBBCV.cjs → chunk-725O36VY.cjs} +6 -6
- package/dist/{chunk-7NKIBBCV.cjs.map → chunk-725O36VY.cjs.map} +1 -1
- package/dist/{chunk-6GF5M4GX.js → chunk-BMVFEBPE.js} +3 -3
- package/dist/{chunk-6GF5M4GX.js.map → chunk-BMVFEBPE.js.map} +1 -1
- package/dist/{chunk-X3GXU6TZ.js → chunk-BN2M4UK5.js} +5 -4
- package/dist/chunk-BN2M4UK5.js.map +1 -0
- package/dist/{chunk-IODUKRQP.js → chunk-C7EN3GVU.js} +3 -3
- package/dist/{chunk-IODUKRQP.js.map → chunk-C7EN3GVU.js.map} +1 -1
- package/dist/{chunk-3DHX2SDR.cjs → chunk-CWTKL7YK.cjs} +7 -7
- package/dist/{chunk-3DHX2SDR.cjs.map → chunk-CWTKL7YK.cjs.map} +1 -1
- package/dist/{chunk-YFAHGS45.js → chunk-DH34KXOJ.js} +4 -4
- package/dist/{chunk-YFAHGS45.js.map → chunk-DH34KXOJ.js.map} +1 -1
- package/dist/{chunk-MRZHPP3G.cjs → chunk-FJWPEAJE.cjs} +4 -4
- package/dist/{chunk-MRZHPP3G.cjs.map → chunk-FJWPEAJE.cjs.map} +1 -1
- package/dist/{chunk-2PQSZI63.js → chunk-GBW5ZDLZ.js} +3 -3
- package/dist/{chunk-2PQSZI63.js.map → chunk-GBW5ZDLZ.js.map} +1 -1
- package/dist/{chunk-CP4TZ4HO.cjs → chunk-GKSWFKHA.cjs} +16 -16
- package/dist/{chunk-CP4TZ4HO.cjs.map → chunk-GKSWFKHA.cjs.map} +1 -1
- package/dist/{chunk-K3JIDVC4.js → chunk-ITD7IHN5.js} +3 -3
- package/dist/{chunk-K3JIDVC4.js.map → chunk-ITD7IHN5.js.map} +1 -1
- package/dist/{chunk-HBQSSMAD.cjs → chunk-K72D7BXB.cjs} +8 -8
- package/dist/{chunk-HBQSSMAD.cjs.map → chunk-K72D7BXB.cjs.map} +1 -1
- package/dist/chunk-KTCBGNCZ.cjs +69 -0
- package/dist/chunk-KTCBGNCZ.cjs.map +1 -0
- package/dist/{chunk-NRGXWM6C.js → chunk-L3EC4ERG.js} +6 -6
- package/dist/{chunk-NRGXWM6C.js.map → chunk-L3EC4ERG.js.map} +1 -1
- package/dist/{chunk-RNJ4GD7U.cjs → chunk-MVBGQHNV.cjs} +9 -9
- package/dist/{chunk-RNJ4GD7U.cjs.map → chunk-MVBGQHNV.cjs.map} +1 -1
- package/dist/{chunk-QQIBOVFQ.js → chunk-NRJQMZLW.js} +4 -4
- package/dist/{chunk-QQIBOVFQ.js.map → chunk-NRJQMZLW.js.map} +1 -1
- package/dist/{chunk-Z73WO76N.js → chunk-NTXNE4YR.js} +3 -3
- package/dist/{chunk-Z73WO76N.js.map → chunk-NTXNE4YR.js.map} +1 -1
- package/dist/{chunk-S5QJEY5X.cjs → chunk-O6PQYYT6.cjs} +4 -4
- package/dist/{chunk-S5QJEY5X.cjs.map → chunk-O6PQYYT6.cjs.map} +1 -1
- package/dist/{chunk-4VHC2F5H.js → chunk-OCKXNBKT.js} +4 -4
- package/dist/{chunk-4VHC2F5H.js.map → chunk-OCKXNBKT.js.map} +1 -1
- package/dist/{chunk-AHJY7RHO.cjs → chunk-OT25QTJ2.cjs} +6 -6
- package/dist/{chunk-AHJY7RHO.cjs.map → chunk-OT25QTJ2.cjs.map} +1 -1
- package/dist/{chunk-666JQVO5.js → chunk-OWYPTFXD.js} +37 -26
- package/dist/chunk-OWYPTFXD.js.map +1 -0
- package/dist/{chunk-ABRPHTOG.cjs → chunk-PRVMPHNQ.cjs} +2 -2
- package/dist/{chunk-ABRPHTOG.cjs.map → chunk-PRVMPHNQ.cjs.map} +1 -1
- package/dist/{chunk-G366B5BY.js → chunk-PYVA36ZV.js} +3 -3
- package/dist/{chunk-G366B5BY.js.map → chunk-PYVA36ZV.js.map} +1 -1
- package/dist/{chunk-PL3B3FZM.js → chunk-QBRFMSMN.js} +6 -6
- package/dist/{chunk-PL3B3FZM.js.map → chunk-QBRFMSMN.js.map} +1 -1
- package/dist/chunk-QLYANYE2.cjs +14 -0
- package/dist/{chunk-QPOJZU26.cjs.map → chunk-QLYANYE2.cjs.map} +1 -1
- package/dist/{chunk-BJGHUKKM.js → chunk-RAQ4VAQ4.js} +2 -2
- package/dist/{chunk-BJGHUKKM.js.map → chunk-RAQ4VAQ4.js.map} +1 -1
- package/dist/{chunk-KYFRWMTX.js → chunk-SW656AYX.js} +3 -3
- package/dist/{chunk-KYFRWMTX.js.map → chunk-SW656AYX.js.map} +1 -1
- package/dist/{chunk-F6XWBVVG.cjs → chunk-WOC5SCZF.cjs} +4 -4
- package/dist/{chunk-F6XWBVVG.cjs.map → chunk-WOC5SCZF.cjs.map} +1 -1
- package/dist/{chunk-V5WKCX3G.cjs → chunk-WVCEJBDR.cjs} +5 -4
- package/dist/chunk-WVCEJBDR.cjs.map +1 -0
- package/dist/{chunk-SZZPFXZ7.cjs → chunk-XNZBDAEX.cjs} +13 -13
- package/dist/{chunk-SZZPFXZ7.cjs.map → chunk-XNZBDAEX.cjs.map} +1 -1
- package/dist/{chunk-7UO6UWCO.cjs → chunk-YISIO2V3.cjs} +4 -4
- package/dist/{chunk-7UO6UWCO.cjs.map → chunk-YISIO2V3.cjs.map} +1 -1
- package/dist/{chunk-GEPX327P.cjs → chunk-YWXSGDDO.cjs} +4 -4
- package/dist/{chunk-GEPX327P.cjs.map → chunk-YWXSGDDO.cjs.map} +1 -1
- package/dist/{chunk-BHB4PDNV.cjs → chunk-ZBINIUJL.cjs} +2 -3
- package/dist/chunk-ZBINIUJL.cjs.map +1 -0
- package/dist/{chunk-D43ZGJR3.js → chunk-ZFD7BUUD.js} +3 -3
- package/dist/{chunk-D43ZGJR3.js.map → chunk-ZFD7BUUD.js.map} +1 -1
- package/dist/deployer/index.cjs +2 -2
- package/dist/deployer/index.js +1 -1
- package/dist/index.cjs +66 -66
- package/dist/index.js +18 -18
- package/dist/integration/index.cjs +3 -3
- package/dist/integration/index.js +1 -1
- package/dist/logger/constants.d.ts +1 -0
- package/dist/logger/constants.d.ts.map +1 -1
- package/dist/logger/index.cjs +6 -6
- package/dist/logger/index.js +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/network/index.d.ts.map +1 -1
- package/dist/loop/test-utils/generateText.d.ts.map +1 -1
- package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.d.ts +6 -12
- package/dist/mastra/index.d.ts.map +1 -1
- package/dist/mastra/index.js +1 -1
- package/dist/mcp/index.cjs +4 -4
- package/dist/mcp/index.js +2 -2
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/vNext/index.cjs +34 -34
- package/dist/network/vNext/index.cjs.map +1 -1
- package/dist/network/vNext/index.d.ts +67 -0
- package/dist/network/vNext/index.d.ts.map +1 -1
- package/dist/network/vNext/index.js +5 -5
- package/dist/network/vNext/index.js.map +1 -1
- package/dist/processors/index.cjs +8 -8
- package/dist/processors/index.js +2 -2
- package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
- package/dist/relevance/index.cjs +4 -4
- package/dist/relevance/index.js +1 -1
- package/dist/scores/index.cjs +8 -8
- package/dist/scores/index.js +1 -1
- package/dist/scores/run-experiment/index.d.ts +2 -2
- package/dist/scores/run-experiment/index.d.ts.map +1 -1
- package/dist/server/index.cjs +4 -4
- package/dist/server/index.js +2 -2
- package/dist/storage/index.cjs +17 -17
- package/dist/storage/index.js +4 -4
- package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
- package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts +5 -4
- package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
- package/dist/stream/base/output.d.ts.map +1 -1
- package/dist/stream/index.cjs +7 -3
- package/dist/stream/index.d.ts +1 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +1 -1
- package/dist/telemetry/index.cjs +7 -7
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/telemetry.decorators.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 +4 -4
- package/dist/tools/index.js +1 -1
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/tool.d.ts +2 -4
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/types.d.ts +5 -4
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tts/index.cjs +2 -2
- package/dist/tts/index.js +1 -1
- package/dist/utils.cjs +17 -17
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +4 -4
- package/dist/vector/index.js +1 -1
- package/dist/voice/index.cjs +4 -4
- package/dist/voice/index.js +1 -1
- package/dist/workflows/default.d.ts.map +1 -1
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/evented/workflow.d.ts +2 -2
- package/dist/workflows/evented/workflow.d.ts.map +1 -1
- package/dist/workflows/index.cjs +10 -10
- 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/types.d.ts +4 -1
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +51 -11
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +7 -6
- package/dist/chunk-666JQVO5.js.map +0 -1
- package/dist/chunk-BHB4PDNV.cjs.map +0 -1
- package/dist/chunk-EXG53YAJ.cjs.map +0 -1
- package/dist/chunk-IYN65QCO.js.map +0 -1
- package/dist/chunk-QPOJZU26.cjs +0 -14
- package/dist/chunk-TLJPVRO5.js.map +0 -1
- package/dist/chunk-V5WKCX3G.cjs.map +0 -1
- package/dist/chunk-VBBMXF7Z.cjs.map +0 -1
- package/dist/chunk-X3GXU6TZ.js.map +0 -1
- package/dist/network/index.cjs +0 -316
- package/dist/network/index.cjs.map +0 -1
- package/dist/network/index.d.ts +0 -3
- package/dist/network/index.d.ts.map +0 -1
- package/dist/network/index.js +0 -314
- package/dist/network/index.js.map +0 -1
- package/dist/network/network.d.ts +0 -124
- package/dist/network/network.d.ts.map +0 -1
- package/dist/network/types.d.ts +0 -9
- package/dist/network/types.d.ts.map +0 -1
- package/network.d.ts +0 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { WorkflowEventProcessor } from './chunk-
|
|
2
|
-
import { saveScorePayloadSchema } from './chunk-
|
|
1
|
+
import { WorkflowEventProcessor } from './chunk-L3EC4ERG.js';
|
|
2
|
+
import { saveScorePayloadSchema } from './chunk-ZFD7BUUD.js';
|
|
3
3
|
import { augmentWithInit } from './chunk-436FFEF6.js';
|
|
4
|
+
import { InMemoryServerCache } from './chunk-3PQNUWJM.js';
|
|
4
5
|
import { PubSub } from './chunk-BVUMKER5.js';
|
|
5
|
-
import { InstrumentClass, Telemetry } from './chunk-
|
|
6
|
+
import { InstrumentClass, Telemetry } from './chunk-5QXPHYHO.js';
|
|
6
7
|
import { registerHook } from './chunk-TTELJD4F.js';
|
|
7
|
-
import { setupAITracing, getAllAITracing, shutdownAITracingRegistry } from './chunk-
|
|
8
|
+
import { setupAITracing, getAllAITracing, shutdownAITracingRegistry } from './chunk-QBRFMSMN.js';
|
|
8
9
|
import { noopLogger } from './chunk-PFXXH2RP.js';
|
|
9
10
|
import { MastraError } from './chunk-MCOVMKIS.js';
|
|
10
|
-
import { ConsoleLogger, LogLevel } from './chunk-
|
|
11
|
+
import { ConsoleLogger, LogLevel } from './chunk-BN2M4UK5.js';
|
|
11
12
|
import { __decoratorStart, __decorateElement, __runInitializers } from './chunk-3HXBPDKN.js';
|
|
12
13
|
import EventEmitter from 'events';
|
|
13
14
|
|
|
@@ -138,7 +139,6 @@ var Mastra = class {
|
|
|
138
139
|
#telemetry;
|
|
139
140
|
#storage;
|
|
140
141
|
#memory;
|
|
141
|
-
#networks;
|
|
142
142
|
#vnext_networks;
|
|
143
143
|
#scorers;
|
|
144
144
|
#server;
|
|
@@ -147,6 +147,8 @@ var Mastra = class {
|
|
|
147
147
|
#idGenerator;
|
|
148
148
|
#pubsub;
|
|
149
149
|
#events = {};
|
|
150
|
+
// This is only used internally for server handlers that require temporary persistence
|
|
151
|
+
#serverCache;
|
|
150
152
|
/**
|
|
151
153
|
* @deprecated use getTelemetry() instead
|
|
152
154
|
*/
|
|
@@ -202,6 +204,7 @@ var Mastra = class {
|
|
|
202
204
|
path: m.path || "/api/*"
|
|
203
205
|
}));
|
|
204
206
|
}
|
|
207
|
+
this.#serverCache = new InMemoryServerCache();
|
|
205
208
|
if (config?.pubsub) {
|
|
206
209
|
this.#pubsub = config.pubsub;
|
|
207
210
|
} else {
|
|
@@ -279,9 +282,6 @@ var Mastra = class {
|
|
|
279
282
|
});
|
|
280
283
|
this.#vectors = vectors;
|
|
281
284
|
}
|
|
282
|
-
if (config?.networks) {
|
|
283
|
-
this.#networks = config.networks;
|
|
284
|
-
}
|
|
285
285
|
if (config?.vnext_networks) {
|
|
286
286
|
this.#vnext_networks = config.vnext_networks;
|
|
287
287
|
}
|
|
@@ -357,14 +357,7 @@ do:
|
|
|
357
357
|
});
|
|
358
358
|
}
|
|
359
359
|
this.#agents = agents;
|
|
360
|
-
this.#networks = {};
|
|
361
360
|
this.#vnext_networks = {};
|
|
362
|
-
if (config?.networks) {
|
|
363
|
-
Object.entries(config.networks).forEach(([key, network]) => {
|
|
364
|
-
network.__registerMastra(this);
|
|
365
|
-
this.#networks[key] = network;
|
|
366
|
-
});
|
|
367
|
-
}
|
|
368
361
|
if (config?.vnext_networks) {
|
|
369
362
|
Object.entries(config.vnext_networks).forEach(([key, network]) => {
|
|
370
363
|
network.__registerMastra(this);
|
|
@@ -779,6 +772,9 @@ do:
|
|
|
779
772
|
getServerMiddleware() {
|
|
780
773
|
return this.#serverMiddleware;
|
|
781
774
|
}
|
|
775
|
+
getServerCache() {
|
|
776
|
+
return this.#serverCache;
|
|
777
|
+
}
|
|
782
778
|
setServerMiddleware(serverMiddleware) {
|
|
783
779
|
if (typeof serverMiddleware === "function") {
|
|
784
780
|
this.#serverMiddleware = [{
|
|
@@ -810,9 +806,6 @@ do:
|
|
|
810
806
|
};
|
|
811
807
|
});
|
|
812
808
|
}
|
|
813
|
-
getNetworks() {
|
|
814
|
-
return Object.values(this.#networks || {});
|
|
815
|
-
}
|
|
816
809
|
vnext_getNetworks() {
|
|
817
810
|
return Object.values(this.#vnext_networks || {});
|
|
818
811
|
}
|
|
@@ -822,18 +815,6 @@ do:
|
|
|
822
815
|
getBundlerConfig() {
|
|
823
816
|
return this.#bundler;
|
|
824
817
|
}
|
|
825
|
-
/**
|
|
826
|
-
* Get a specific network by ID
|
|
827
|
-
* @param networkId - The ID of the network to retrieve
|
|
828
|
-
* @returns The network with the specified ID, or undefined if not found
|
|
829
|
-
*/
|
|
830
|
-
getNetwork(networkId) {
|
|
831
|
-
const networks = this.getNetworks();
|
|
832
|
-
return networks.find(network => {
|
|
833
|
-
const routingAgent = network.getRoutingAgent();
|
|
834
|
-
return network.formatAgentId(routingAgent.name) === networkId;
|
|
835
|
-
});
|
|
836
|
-
}
|
|
837
818
|
vnext_getNetwork(networkId) {
|
|
838
819
|
const networks = this.vnext_getNetworks();
|
|
839
820
|
return networks.find(network => network.id === networkId);
|
|
@@ -1006,6 +987,10 @@ do:
|
|
|
1006
987
|
await this.stopEventEngine();
|
|
1007
988
|
this.#logger?.info("Mastra shutdown completed");
|
|
1008
989
|
}
|
|
990
|
+
// This method is only used internally for server hnadlers that require temporary persistence
|
|
991
|
+
get serverCache() {
|
|
992
|
+
return this.#serverCache;
|
|
993
|
+
}
|
|
1009
994
|
};
|
|
1010
995
|
Mastra = /*@__PURE__*/(_ => {
|
|
1011
996
|
_init = __decoratorStart(null);
|
|
@@ -1015,5 +1000,5 @@ Mastra = /*@__PURE__*/(_ => {
|
|
|
1015
1000
|
})();
|
|
1016
1001
|
|
|
1017
1002
|
export { Mastra };
|
|
1018
|
-
//# sourceMappingURL=chunk-
|
|
1019
|
-
//# sourceMappingURL=chunk-
|
|
1003
|
+
//# sourceMappingURL=chunk-36QJI2HU.js.map
|
|
1004
|
+
//# sourceMappingURL=chunk-36QJI2HU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/events/event-emitter.ts","../src/mastra/hooks.ts","../src/mastra/index.ts"],"names":[],"mappings":"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","file":"chunk-36QJI2HU.js","sourcesContent":["import EventEmitter from 'events';\nimport { PubSub } from './pubsub';\nimport type { Event } from './types';\n\nexport class EventEmitterPubSub extends PubSub {\n private emitter: EventEmitter;\n\n constructor() {\n super();\n this.emitter = new EventEmitter();\n }\n\n async publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void> {\n const id = crypto.randomUUID();\n const createdAt = new Date();\n this.emitter.emit(topic, {\n ...event,\n id,\n createdAt,\n });\n }\n\n async subscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.on(topic, cb);\n }\n\n async unsubscribe(topic: string, cb: (event: Event, ack?: () => Promise<void>) => void): Promise<void> {\n this.emitter.off(topic, cb);\n }\n\n async flush(): Promise<void> {\n // no-op\n }\n}\n","import type { Mastra } from '..';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport { saveScorePayloadSchema } from '../scores';\nimport type { ScoringHookInput } from '../scores/types';\nimport type { MastraStorage } from '../storage';\n\nexport function createOnScorerHook(mastra: Mastra) {\n return async (hookData: ScoringHookInput) => {\n const storage = mastra.getStorage();\n\n if (!storage) {\n mastra.getLogger()?.warn('Storage not found, skipping score validation and saving');\n return;\n }\n\n const entityId = hookData.entity.id;\n const entityType = hookData.entityType;\n const scorer = hookData.scorer;\n try {\n const scorerToUse = await findScorer(mastra, entityId, entityType, scorer.id);\n\n if (!scorerToUse) {\n throw new MastraError({\n id: 'MASTRA_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ID ${hookData.scorer.id} not found`,\n });\n }\n\n let input = hookData.input;\n let output = hookData.output;\n\n if (entityType !== 'AGENT') {\n output = { object: hookData.output };\n }\n\n const { structuredOutput, ...rest } = hookData;\n\n const runResult = await scorerToUse.scorer.run({\n ...rest,\n input,\n output,\n });\n\n const payload = {\n ...rest,\n ...runResult,\n entityId,\n scorerId: hookData.scorer.id,\n metadata: {\n structuredOutput: !!structuredOutput,\n },\n };\n\n await validateAndSaveScore(storage, payload);\n } catch (error) {\n const mastraError = new MastraError(\n {\n id: 'MASTRA_SCORER_FAILED_TO_RUN_HOOK',\n domain: ErrorDomain.SCORER,\n category: ErrorCategory.USER,\n details: {\n scorerId: scorer.id,\n entityId,\n entityType,\n },\n },\n error,\n );\n\n mastra.getLogger()?.trackException(mastraError);\n mastra.getLogger()?.error(mastraError.toString());\n }\n };\n}\n\nexport async function validateAndSaveScore(storage: MastraStorage, payload: unknown) {\n const payloadToSave = saveScorePayloadSchema.parse(payload);\n await storage?.saveScore(payloadToSave);\n}\n\nasync function findScorer(mastra: Mastra, entityId: string, entityType: string, scorerId: string) {\n let scorerToUse;\n if (entityType === 'AGENT') {\n const scorers = await mastra.getAgentById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n } else if (entityType === 'WORKFLOW') {\n const scorers = await mastra.getWorkflowById(entityId).getScorers();\n scorerToUse = scorers[scorerId];\n }\n\n // Fallback to mastra-registered scorer\n if (!scorerToUse) {\n const mastraRegisteredScorer = mastra.getScorerByName(scorerId);\n scorerToUse = mastraRegisteredScorer ? { scorer: mastraRegisteredScorer } : undefined;\n }\n\n return scorerToUse;\n}\n","import type { Agent } from '../agent';\nimport { getAllAITracing, setupAITracing, shutdownAITracingRegistry } from '../ai-tracing';\nimport type { ObservabilityRegistryConfig } from '../ai-tracing';\nimport type { BundlerConfig } from '../bundler/types';\nimport { InMemoryServerCache } from '../cache';\nimport type { MastraServerCache } from '../cache';\nimport type { MastraDeployer } from '../deployer';\nimport { MastraError, ErrorDomain, ErrorCategory } from '../error';\nimport { EventEmitterPubSub } from '../events/event-emitter';\nimport type { PubSub } from '../events/pubsub';\nimport type { Event } from '../events/types';\nimport { AvailableHooks, registerHook } from '../hooks';\nimport { LogLevel, noopLogger, ConsoleLogger } from '../logger';\nimport type { IMastraLogger } from '../logger';\nimport type { MCPServerBase } from '../mcp';\nimport type { MastraMemory } from '../memory/memory';\nimport type { NewAgentNetwork } from '../network/vNext';\nimport type { MastraScorer } from '../scores';\nimport type { Middleware, ServerConfig } from '../server/types';\nimport type { MastraStorage } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport { InstrumentClass, Telemetry } from '../telemetry';\nimport type { OtelConfig } from '../telemetry';\nimport type { MastraTTS } from '../tts';\nimport type { MastraIdGenerator } from '../types';\nimport type { MastraVector } from '../vector';\nimport type { Workflow } from '../workflows';\nimport { WorkflowEventProcessor } from '../workflows/evented/workflow-event-processor';\nimport type { LegacyWorkflow } from '../workflows/legacy';\nimport { createOnScorerHook } from './hooks';\n\nexport interface Config<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n agents?: TAgents;\n vnext_networks?: TVNextNetworks;\n storage?: MastraStorage;\n vectors?: TVectors;\n logger?: TLogger | false;\n legacy_workflows?: TLegacyWorkflows;\n workflows?: TWorkflows;\n tts?: TTTS;\n telemetry?: OtelConfig;\n observability?: ObservabilityRegistryConfig;\n idGenerator?: MastraIdGenerator;\n deployer?: MastraDeployer;\n server?: ServerConfig;\n mcpServers?: TMCPServers;\n bundler?: BundlerConfig;\n pubsub?: PubSub;\n scorers?: TScorers;\n\n /**\n * Server middleware functions to be applied to API routes\n * Each middleware can specify a path pattern (defaults to '/api/*')\n * @deprecated use server.middleware instead\n */\n serverMiddleware?: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path?: string;\n }>;\n\n // @deprecated add memory to your Agent directly instead\n memory?: never;\n\n events?: {\n [topic: string]: (\n event: Event,\n cb?: () => Promise<void>,\n ) => Promise<void> | ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n };\n}\n\n@InstrumentClass({\n prefix: 'mastra',\n excludeMethods: ['getLogger', 'getTelemetry'],\n})\nexport class Mastra<\n TAgents extends Record<string, Agent<any>> = Record<string, Agent<any>>,\n TLegacyWorkflows extends Record<string, LegacyWorkflow> = Record<string, LegacyWorkflow>,\n TWorkflows extends Record<string, Workflow> = Record<string, Workflow>,\n TVectors extends Record<string, MastraVector> = Record<string, MastraVector>,\n TTTS extends Record<string, MastraTTS> = Record<string, MastraTTS>,\n TLogger extends IMastraLogger = IMastraLogger,\n TVNextNetworks extends Record<string, NewAgentNetwork> = Record<string, NewAgentNetwork>,\n TMCPServers extends Record<string, MCPServerBase> = Record<string, MCPServerBase>,\n TScorers extends Record<string, MastraScorer<any, any, any, any>> = Record<string, MastraScorer<any, any, any, any>>,\n> {\n #vectors?: TVectors;\n #agents: TAgents;\n #logger: TLogger;\n #legacy_workflows: TLegacyWorkflows;\n #workflows: TWorkflows;\n #tts?: TTTS;\n #deployer?: MastraDeployer;\n #serverMiddleware: Array<{\n handler: (c: any, next: () => Promise<void>) => Promise<Response | void>;\n path: string;\n }> = [];\n #telemetry?: Telemetry;\n #storage?: MastraStorage;\n #memory?: MastraMemory;\n #vnext_networks?: TVNextNetworks;\n #scorers?: TScorers;\n #server?: ServerConfig;\n #mcpServers?: TMCPServers;\n #bundler?: BundlerConfig;\n #idGenerator?: MastraIdGenerator;\n #pubsub: PubSub;\n #events: {\n [topic: string]: ((event: Event, cb?: () => Promise<void>) => Promise<void>)[];\n } = {};\n // This is only used internally for server handlers that require temporary persistence\n #serverCache: MastraServerCache;\n\n /**\n * @deprecated use getTelemetry() instead\n */\n get telemetry() {\n return this.#telemetry;\n }\n\n /**\n * @deprecated use getStorage() instead\n */\n get storage() {\n return this.#storage;\n }\n\n /**\n * @deprecated use getMemory() instead\n */\n get memory() {\n return this.#memory;\n }\n\n get pubsub() {\n return this.#pubsub;\n }\n\n public getIdGenerator() {\n return this.#idGenerator;\n }\n\n /**\n * Generate a unique identifier using the configured generator or default to crypto.randomUUID()\n * @returns A unique string ID\n */\n public generateId(): string {\n if (this.#idGenerator) {\n const id = this.#idGenerator();\n if (!id) {\n const error = new MastraError({\n id: 'MASTRA_ID_GENERATOR_RETURNED_EMPTY_STRING',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'ID generator returned an empty string, which is not allowed',\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return id;\n }\n return crypto.randomUUID();\n }\n\n public setIdGenerator(idGenerator: MastraIdGenerator) {\n this.#idGenerator = idGenerator;\n }\n\n constructor(\n config?: Config<\n TAgents,\n TLegacyWorkflows,\n TWorkflows,\n TVectors,\n TTTS,\n TLogger,\n TVNextNetworks,\n TMCPServers,\n TScorers\n >,\n ) {\n // Store server middleware with default path\n if (config?.serverMiddleware) {\n this.#serverMiddleware = config.serverMiddleware.map(m => ({\n handler: m.handler,\n path: m.path || '/api/*',\n }));\n }\n\n /*\n Server Cache\n */\n\n // This is only used internally for server handlers that require temporary persistence\n this.#serverCache = new InMemoryServerCache();\n\n /*\n Events\n */\n if (config?.pubsub) {\n this.#pubsub = config.pubsub;\n } else {\n this.#pubsub = new EventEmitterPubSub();\n }\n\n this.#events = {};\n for (const topic in config?.events ?? {}) {\n if (!Array.isArray(config?.events?.[topic])) {\n this.#events[topic] = [config?.events?.[topic] as any];\n } else {\n this.#events[topic] = config?.events?.[topic] ?? [];\n }\n }\n\n const workflowEventProcessor = new WorkflowEventProcessor({ mastra: this });\n const workflowEventCb = async (event: Event, cb?: () => Promise<void>): Promise<void> => {\n try {\n await workflowEventProcessor.process(event, cb);\n } catch (e) {\n console.error('Error processing event', e);\n }\n };\n if (this.#events.workflows) {\n this.#events.workflows.push(workflowEventCb);\n } else {\n this.#events.workflows = [workflowEventCb];\n }\n\n /*\n Logger\n */\n\n let logger: TLogger;\n if (config?.logger === false) {\n logger = noopLogger as unknown as TLogger;\n } else {\n if (config?.logger) {\n logger = config.logger;\n } else {\n const levelOnEnv =\n process.env.NODE_ENV === 'production' && process.env.MASTRA_DEV !== 'true' ? LogLevel.WARN : LogLevel.INFO;\n logger = new ConsoleLogger({ name: 'Mastra', level: levelOnEnv }) as unknown as TLogger;\n }\n }\n this.#logger = logger;\n\n this.#idGenerator = config?.idGenerator;\n\n let storage = config?.storage;\n\n if (storage) {\n storage = augmentWithInit(storage);\n }\n\n /*\n Telemetry\n */\n\n this.#telemetry = Telemetry.init(config?.telemetry);\n\n // Warn if telemetry is enabled but the instrumentation global is not set\n if (\n config?.telemetry?.enabled !== false &&\n typeof globalThis !== 'undefined' &&\n (globalThis as any).___MASTRA_TELEMETRY___ !== true\n ) {\n this.#logger?.warn(\n `Mastra telemetry is enabled, but the required instrumentation file was not loaded. ` +\n `If you are using Mastra outside of the mastra server environment, see: https://mastra.ai/en/docs/observability/tracing#tracing-outside-mastra-server-environment`,\n `If you are using a custom instrumentation file or want to disable this warning, set the globalThis.___MASTRA_TELEMETRY___ variable to true in your instrumentation file.`,\n );\n }\n\n /*\n AI Tracing\n */\n\n if (config?.observability) {\n setupAITracing(config.observability);\n }\n\n /*\n Storage\n */\n if (this.#telemetry && storage) {\n this.#storage = this.#telemetry.traceClass(storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry', 'batchTraceInsert', 'getTraces', 'getEvalsByAgentName'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n } else {\n this.#storage = storage;\n }\n\n /*\n Vectors\n */\n if (config?.vectors) {\n let vectors: Record<string, MastraVector> = {};\n Object.entries(config.vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n } else {\n vectors[key] = vector;\n }\n });\n\n this.#vectors = vectors as TVectors;\n }\n\n if (config?.vnext_networks) {\n this.#vnext_networks = config.vnext_networks;\n }\n\n if (config?.mcpServers) {\n this.#mcpServers = config.mcpServers;\n\n // Set logger/telemetry/Mastra instance/id for MCP servers\n Object.entries(this.#mcpServers).forEach(([key, server]) => {\n server.setId(key);\n if (this.#telemetry) {\n server.__setTelemetry(this.#telemetry);\n }\n\n server.__registerMastra(this);\n server.__setLogger(this.getLogger());\n });\n }\n\n if (config && `memory` in config) {\n const error = new MastraError({\n id: 'MASTRA_CONSTRUCTOR_INVALID_MEMORY_CONFIG',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `\n Memory should be added to Agents, not to Mastra.\n\nInstead of:\n new Mastra({ memory: new Memory() })\n\ndo:\n new Agent({ memory: new Memory() })\n`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (config?.tts) {\n this.#tts = config.tts;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#tts?.[key]) {\n if (this.#telemetry) {\n // @ts-ignore\n this.#tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#tts[key].__setTelemetry(this.#telemetry);\n }\n }\n });\n }\n\n /*\n Agents\n */\n const agents: Record<string, Agent> = {};\n if (config?.agents) {\n Object.entries(config.agents).forEach(([key, agent]) => {\n if (agents[key]) {\n const error = new MastraError({\n id: 'MASTRA_AGENT_REGISTRATION_DUPLICATE_ID',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ID:${key} already exists`,\n details: {\n agentId: key,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n agent.__registerMastra(this);\n\n agent.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n\n agents[key] = agent;\n });\n }\n\n this.#agents = agents as TAgents;\n\n /*\n Networks\n */\n this.#vnext_networks = {} as TVNextNetworks;\n\n if (config?.vnext_networks) {\n Object.entries(config.vnext_networks).forEach(([key, network]) => {\n network.__registerMastra(this);\n // @ts-ignore\n this.#vnext_networks[key] = network;\n });\n }\n\n /**\n * Scorers\n */\n\n const scorers = {} as Record<string, MastraScorer<any, any, any, any>>;\n if (config?.scorers) {\n Object.entries(config.scorers).forEach(([key, scorer]) => {\n scorers[key] = scorer;\n });\n }\n this.#scorers = scorers as TScorers;\n\n /*\n Legacy Workflows\n */\n this.#legacy_workflows = {} as TLegacyWorkflows;\n\n if (config?.legacy_workflows) {\n Object.entries(config.legacy_workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#legacy_workflows[key] = workflow;\n\n const workflowSteps = Object.values(workflow.steps).filter(step => !!step.workflowId && !!step.workflow);\n if (workflowSteps.length > 0) {\n workflowSteps.forEach(step => {\n // @ts-ignore\n this.#legacy_workflows[step.workflowId] = step.workflow;\n });\n }\n });\n }\n\n this.#workflows = {} as TWorkflows;\n if (config?.workflows) {\n Object.entries(config.workflows).forEach(([key, workflow]) => {\n workflow.__registerMastra(this);\n workflow.__registerPrimitives({\n logger: this.getLogger(),\n telemetry: this.#telemetry,\n storage: this.storage,\n memory: this.memory,\n agents: agents,\n tts: this.#tts,\n vectors: this.#vectors,\n });\n // @ts-ignore\n this.#workflows[key] = workflow;\n });\n }\n\n if (config?.server) {\n this.#server = config.server;\n }\n\n registerHook(AvailableHooks.ON_SCORER_RUN, createOnScorerHook(this));\n\n /*\n Register Mastra instance with AI tracing exporters and initialize them\n */\n if (config?.observability) {\n this.registerAITracingExporters();\n this.initAITracingExporters();\n }\n\n this.setLogger({ logger });\n }\n\n /**\n * Register this Mastra instance with AI tracing exporters that need it\n */\n private registerAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Check if exporter has __registerMastra method\n if ('__registerMastra' in exporter && typeof (exporter as any).__registerMastra === 'function') {\n (exporter as any).__registerMastra(this);\n }\n });\n });\n }\n\n /**\n * Initialize all AI tracing exporters after registration is complete\n */\n private initAITracingExporters(): void {\n const allTracingInstances = getAllAITracing();\n\n allTracingInstances.forEach(tracing => {\n const exporters = tracing.getExporters();\n exporters.forEach(exporter => {\n // Initialize exporter if it has an init method\n if ('init' in exporter && typeof exporter.init === 'function') {\n try {\n exporter.init();\n } catch (error) {\n this.#logger?.warn('Failed to initialize AI tracing exporter', {\n exporterName: exporter.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n });\n });\n }\n\n public getAgent<TAgentName extends keyof TAgents>(name: TAgentName): TAgents[TAgentName] {\n const agent = this.#agents?.[name];\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with name ${String(name)} not found`,\n details: {\n status: 404,\n agentName: String(name),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return this.#agents[name];\n }\n\n public getAgentById(id: string): Agent {\n let agent = Object.values(this.#agents).find(a => a.id === id);\n\n if (!agent) {\n try {\n agent = this.getAgent(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!agent) {\n const error = new MastraError({\n id: 'MASTRA_GET_AGENT_BY_AGENT_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Agent with id ${String(id)} not found`,\n details: {\n status: 404,\n agentId: String(id),\n agents: Object.keys(this.#agents ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return agent;\n }\n\n public getAgents() {\n return this.#agents;\n }\n\n public getVector<TVectorName extends keyof TVectors>(name: TVectorName): TVectors[TVectorName] {\n const vector = this.#vectors?.[name];\n if (!vector) {\n const error = new MastraError({\n id: 'MASTRA_GET_VECTOR_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Vector with name ${String(name)} not found`,\n details: {\n status: 404,\n vectorName: String(name),\n vectors: Object.keys(this.#vectors ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return vector;\n }\n\n public getVectors() {\n return this.#vectors;\n }\n\n public getDeployer() {\n return this.#deployer;\n }\n\n public legacy_getWorkflow<TWorkflowId extends keyof TLegacyWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TLegacyWorkflows[TWorkflowId] {\n const workflow = this.#legacy_workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_LEGACY_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#legacy_workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TLegacyWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflow<TWorkflowId extends keyof TWorkflows>(\n id: TWorkflowId,\n { serialized }: { serialized?: boolean } = {},\n ): TWorkflows[TWorkflowId] {\n const workflow = this.#workflows?.[id];\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with ID ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (serialized) {\n return { name: workflow.name } as TWorkflows[TWorkflowId];\n }\n\n return workflow;\n }\n\n public getWorkflowById(id: string): Workflow {\n let workflow = Object.values(this.#workflows).find(a => a.id === id);\n\n if (!workflow) {\n try {\n workflow = this.getWorkflow(id as any);\n } catch {\n // do nothing\n }\n }\n\n if (!workflow) {\n const error = new MastraError({\n id: 'MASTRA_GET_WORKFLOW_BY_ID_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Workflow with id ${String(id)} not found`,\n details: {\n status: 404,\n workflowId: String(id),\n workflows: Object.keys(this.#workflows ?? {}).join(', '),\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return workflow;\n }\n\n public legacy_getWorkflows(props: { serialized?: boolean } = {}): Record<string, LegacyWorkflow> {\n if (props.serialized) {\n return Object.entries(this.#legacy_workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#legacy_workflows;\n }\n\n public getScorers() {\n return this.#scorers;\n }\n\n public getScorer<TScorerKey extends keyof TScorers>(key: TScorerKey): TScorers[TScorerKey] {\n const scorer = this.#scorers?.[key];\n if (!scorer) {\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with ${String(key)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n return scorer;\n }\n\n public getScorerByName(name: string): MastraScorer<any, any, any, any> {\n for (const [_key, value] of Object.entries(this.#scorers ?? {})) {\n if (value.name === name) {\n return value;\n }\n }\n\n const error = new MastraError({\n id: 'MASTRA_GET_SCORER_BY_NAME_NOT_FOUND',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Scorer with name ${String(name)} not found`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n public getWorkflows(props: { serialized?: boolean } = {}): Record<string, Workflow> {\n if (props.serialized) {\n return Object.entries(this.#workflows).reduce((acc, [k, v]) => {\n return {\n ...acc,\n [k]: { name: v.name },\n };\n }, {});\n }\n return this.#workflows;\n }\n\n public setStorage(storage: MastraStorage) {\n this.#storage = augmentWithInit(storage);\n }\n\n public setLogger({ logger }: { logger: TLogger }) {\n this.#logger = logger;\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n this.#agents?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#memory) {\n this.#memory.__setLogger(this.#logger);\n }\n\n if (this.#deployer) {\n this.#deployer.__setLogger(this.#logger);\n }\n\n if (this.#tts) {\n Object.keys(this.#tts).forEach(key => {\n this.#tts?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#storage) {\n this.#storage.__setLogger(this.#logger);\n }\n\n if (this.#vectors) {\n Object.keys(this.#vectors).forEach(key => {\n this.#vectors?.[key]?.__setLogger(this.#logger);\n });\n }\n\n if (this.#mcpServers) {\n Object.keys(this.#mcpServers).forEach(key => {\n this.#mcpServers?.[key]?.__setLogger(this.#logger);\n });\n }\n\n // Set logger for AI tracing instances\n const allTracingInstances = getAllAITracing();\n allTracingInstances.forEach(instance => {\n instance.__setLogger(this.#logger);\n });\n }\n\n public setTelemetry(telemetry: OtelConfig) {\n this.#telemetry = Telemetry.init(telemetry);\n\n if (this.#agents) {\n Object.keys(this.#agents).forEach(key => {\n if (this.#telemetry) {\n this.#agents?.[key]?.__setTelemetry(this.#telemetry);\n }\n });\n }\n\n if (this.#memory) {\n this.#memory = this.#telemetry.traceClass(this.#memory, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#memory.__setTelemetry(this.#telemetry);\n }\n\n if (this.#deployer) {\n this.#deployer = this.#telemetry.traceClass(this.#deployer, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#deployer.__setTelemetry(this.#telemetry);\n }\n\n if (this.#tts) {\n let tts = {} as Record<string, MastraTTS>;\n Object.entries(this.#tts).forEach(([key, ttsCl]) => {\n if (this.#telemetry) {\n tts[key] = this.#telemetry.traceClass(ttsCl, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n tts[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#tts = tts as TTTS;\n }\n\n if (this.#storage) {\n this.#storage = this.#telemetry.traceClass(this.#storage, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n this.#storage.__setTelemetry(this.#telemetry);\n }\n\n if (this.#vectors) {\n let vectors = {} as Record<string, MastraVector>;\n Object.entries(this.#vectors).forEach(([key, vector]) => {\n if (this.#telemetry) {\n vectors[key] = this.#telemetry.traceClass(vector, {\n excludeMethods: ['__setTelemetry', '__getTelemetry'],\n });\n vectors[key].__setTelemetry(this.#telemetry);\n }\n });\n this.#vectors = vectors as TVectors;\n }\n }\n\n public getTTS() {\n return this.#tts;\n }\n\n public getLogger() {\n return this.#logger;\n }\n\n public getTelemetry() {\n return this.#telemetry;\n }\n\n public getMemory() {\n return this.#memory;\n }\n\n public getStorage() {\n return this.#storage;\n }\n\n public getServerMiddleware() {\n return this.#serverMiddleware;\n }\n\n public getServerCache() {\n return this.#serverCache;\n }\n\n public setServerMiddleware(serverMiddleware: Middleware | Middleware[]) {\n if (typeof serverMiddleware === 'function') {\n this.#serverMiddleware = [\n {\n handler: serverMiddleware,\n path: '/api/*',\n },\n ];\n return;\n }\n\n if (!Array.isArray(serverMiddleware)) {\n const error = new MastraError({\n id: 'MASTRA_SET_SERVER_MIDDLEWARE_INVALID_TYPE',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: `Invalid middleware: expected a function or array, received ${typeof serverMiddleware}`,\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n this.#serverMiddleware = serverMiddleware.map(m => {\n if (typeof m === 'function') {\n return {\n handler: m,\n path: '/api/*',\n };\n }\n return {\n handler: m.handler,\n path: m.path || '/api/*',\n };\n });\n }\n\n public vnext_getNetworks() {\n return Object.values(this.#vnext_networks || {});\n }\n\n public getServer() {\n return this.#server;\n }\n\n public getBundlerConfig() {\n return this.#bundler;\n }\n\n public vnext_getNetwork(networkId: string): NewAgentNetwork | undefined {\n const networks = this.vnext_getNetworks();\n return networks.find(network => network.id === networkId);\n }\n\n public async getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n }: {\n runId: string;\n transportId: string;\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n }) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger?.getLogsByRunId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_BY_RUN_ID_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not configured or does not support getLogsByRunId operation',\n details: {\n runId,\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n return await this.#logger.getLogsByRunId({\n runId,\n transportId,\n fromDate,\n toDate,\n logLevel,\n filters,\n page,\n perPage,\n });\n }\n\n public async getLogs(\n transportId: string,\n params?: {\n fromDate?: Date;\n toDate?: Date;\n logLevel?: LogLevel;\n filters?: Record<string, any>;\n page?: number;\n perPage?: number;\n },\n ) {\n if (!transportId) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_MISSING_TRANSPORT',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.USER,\n text: 'Transport ID is required',\n details: {\n transportId,\n },\n });\n this.#logger?.trackException(error);\n throw error;\n }\n\n if (!this.#logger) {\n const error = new MastraError({\n id: 'MASTRA_GET_LOGS_LOGGER_NOT_CONFIGURED',\n domain: ErrorDomain.MASTRA,\n category: ErrorCategory.SYSTEM,\n text: 'Logger is not set',\n details: {\n transportId,\n },\n });\n throw error;\n }\n\n return await this.#logger.getLogs(transportId, params);\n }\n\n /**\n * Get all registered MCP server instances.\n * @returns A record of MCP server ID to MCPServerBase instance, or undefined if none are registered.\n */\n public getMCPServers(): Record<string, MCPServerBase> | undefined {\n return this.#mcpServers;\n }\n\n /**\n * Get a specific MCP server instance.\n * If a version is provided, it attempts to find the server with that exact logical ID and version.\n * If no version is provided, it returns the server with the specified logical ID that has the most recent releaseDate.\n * The logical ID should match the `id` property of the MCPServer instance (typically set via MCPServerConfig.id).\n * @param serverId - The logical ID of the MCP server to retrieve.\n * @param version - Optional specific version of the MCP server to retrieve.\n * @returns The MCP server instance, or undefined if not found or if the specific version is not found.\n */\n public getMCPServer(serverId: string, version?: string): MCPServerBase | undefined {\n if (!this.#mcpServers) {\n return undefined;\n }\n\n const allRegisteredServers = Object.values(this.#mcpServers || {});\n\n const matchingLogicalIdServers = allRegisteredServers.filter(server => server.id === serverId);\n\n if (matchingLogicalIdServers.length === 0) {\n this.#logger?.debug(`No MCP servers found with logical ID: ${serverId}`);\n return undefined;\n }\n\n if (version) {\n const specificVersionServer = matchingLogicalIdServers.find(server => server.version === version);\n if (!specificVersionServer) {\n this.#logger?.debug(`MCP server with logical ID '${serverId}' found, but not version '${version}'.`);\n }\n return specificVersionServer;\n } else {\n // No version specified, find the one with the most recent releaseDate\n if (matchingLogicalIdServers.length === 1) {\n return matchingLogicalIdServers[0];\n }\n\n matchingLogicalIdServers.sort((a, b) => {\n // Ensure releaseDate exists and is a string before creating a Date object\n const dateAVal = a.releaseDate && typeof a.releaseDate === 'string' ? new Date(a.releaseDate).getTime() : NaN;\n const dateBVal = b.releaseDate && typeof b.releaseDate === 'string' ? new Date(b.releaseDate).getTime() : NaN;\n\n if (isNaN(dateAVal) && isNaN(dateBVal)) return 0;\n if (isNaN(dateAVal)) return 1; // Treat invalid/missing dates as older\n if (isNaN(dateBVal)) return -1; // Treat invalid/missing dates as older\n\n return dateBVal - dateAVal; // Sorts in descending order of time (latest first)\n });\n\n // After sorting, the first element should be the latest if its date is valid\n if (matchingLogicalIdServers.length > 0) {\n const latestServer = matchingLogicalIdServers[0];\n if (\n latestServer &&\n latestServer.releaseDate &&\n typeof latestServer.releaseDate === 'string' &&\n !isNaN(new Date(latestServer.releaseDate).getTime())\n ) {\n return latestServer;\n }\n }\n this.#logger?.warn(\n `Could not determine the latest server for logical ID '${serverId}' due to invalid or missing release dates, or no servers left after filtering.`,\n );\n return undefined;\n }\n }\n\n public async addTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.subscribe(topic, listener);\n }\n\n public async removeTopicListener(topic: string, listener: (event: any) => Promise<void>) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n\n public async startEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.subscribe(topic, listener);\n }\n }\n }\n\n public async stopEventEngine() {\n for (const topic in this.#events) {\n if (!this.#events[topic]) {\n continue;\n }\n\n const listeners = Array.isArray(this.#events[topic]) ? this.#events[topic] : [this.#events[topic]];\n for (const listener of listeners) {\n await this.#pubsub.unsubscribe(topic, listener);\n }\n }\n\n await this.#pubsub.flush();\n }\n\n /**\n * Shutdown Mastra and clean up all resources\n */\n async shutdown(): Promise<void> {\n // Shutdown AI tracing registry and all instances\n await shutdownAITracingRegistry();\n await this.stopEventEngine();\n\n this.#logger?.info('Mastra shutdown completed');\n }\n\n // This method is only used internally for server hnadlers that require temporary persistence\n public get serverCache() {\n return this.#serverCache;\n }\n}\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { MastraBase } from './chunk-BMVFEBPE.js';
|
|
2
|
+
import TTLCache from '@isaacs/ttlcache';
|
|
3
|
+
|
|
4
|
+
// src/cache/base.ts
|
|
5
|
+
var MastraServerCache = class extends MastraBase {
|
|
6
|
+
constructor({ name }) {
|
|
7
|
+
super({
|
|
8
|
+
component: "SERVER_CACHE",
|
|
9
|
+
name
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/cache/inmemory.ts
|
|
15
|
+
var InMemoryServerCache = class extends MastraServerCache {
|
|
16
|
+
cache = new TTLCache({
|
|
17
|
+
max: 1e3,
|
|
18
|
+
ttl: 1e3 * 60 * 5
|
|
19
|
+
});
|
|
20
|
+
constructor() {
|
|
21
|
+
super({ name: "InMemoryServerCache" });
|
|
22
|
+
}
|
|
23
|
+
async get(key) {
|
|
24
|
+
return this.cache.get(key);
|
|
25
|
+
}
|
|
26
|
+
async set(key, value) {
|
|
27
|
+
this.cache.set(key, value);
|
|
28
|
+
}
|
|
29
|
+
async listLength(key) {
|
|
30
|
+
const list = this.cache.get(key);
|
|
31
|
+
if (!Array.isArray(list)) {
|
|
32
|
+
throw new Error(`${key} is not an array`);
|
|
33
|
+
}
|
|
34
|
+
return list.length;
|
|
35
|
+
}
|
|
36
|
+
async listPush(key, value) {
|
|
37
|
+
const list = this.cache.get(key);
|
|
38
|
+
if (Array.isArray(list)) {
|
|
39
|
+
list.push(value);
|
|
40
|
+
} else {
|
|
41
|
+
this.cache.set(key, [value]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async listFromTo(key, from, to = -1) {
|
|
45
|
+
const list = this.cache.get(key);
|
|
46
|
+
if (Array.isArray(list)) {
|
|
47
|
+
const endIndex = to === -1 ? void 0 : to + 1;
|
|
48
|
+
return list.slice(from, endIndex);
|
|
49
|
+
}
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
async delete(key) {
|
|
53
|
+
this.cache.delete(key);
|
|
54
|
+
}
|
|
55
|
+
async clear() {
|
|
56
|
+
this.cache.clear();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { InMemoryServerCache, MastraServerCache };
|
|
61
|
+
//# sourceMappingURL=chunk-3PQNUWJM.js.map
|
|
62
|
+
//# sourceMappingURL=chunk-3PQNUWJM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cache/base.ts","../src/cache/inmemory.ts"],"names":[],"mappings":";;;;AAEO,IAAe,iBAAA,GAAf,cAAyC,UAAA,CAAW;AAAA,EACzD,WAAA,CAAY,EAAE,IAAA,EAAK,EAAqB;AACtC,IAAA,KAAA,CAAM;AAAA,MACJ,SAAA,EAAW,cAAA;AAAA,MACX;AAAA,KACD,CAAA;AAAA,EACH;AAeF;;;ACpBO,IAAM,mBAAA,GAAN,cAAkC,iBAAA,CAAkB;AAAA,EACjD,KAAA,GAAmC,IAAI,QAAA,CAAS;AAAA,IACtD,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,MAAO,EAAA,GAAK;AAAA,GAClB,CAAA;AAAA,EAED,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,EAAE,IAAA,EAAM,qBAAA,EAAuB,CAAA;AAAA,EACvC;AAAA,EAEA,MAAM,IAAI,GAAA,EAA+B;AACvC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,GAAA,CAAI,GAAA,EAAa,KAAA,EAA+B;AACpD,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,GAAA,EAA8B;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACxB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,gBAAA,CAAkB,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EACd;AAAA,EAEA,MAAM,QAAA,CAAS,GAAA,EAAa,KAAA,EAA+B;AACzD,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAA,EAAK,CAAC,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,UAAA,CAAW,GAAA,EAAa,IAAA,EAAc,KAAa,EAAA,EAAwB;AAC/E,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAEvB,MAAA,MAAM,QAAA,GAAW,EAAA,KAAO,EAAA,GAAK,MAAA,GAAY,EAAA,GAAK,CAAA;AAC9C,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AAAA,EAEA,MAAM,OAAO,GAAA,EAA4B;AACvC,IAAA,IAAA,CAAK,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,EACvB;AAAA,EAEA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,MAAM,KAAA,EAAM;AAAA,EACnB;AACF","file":"chunk-3PQNUWJM.js","sourcesContent":["import { MastraBase } from '../base';\n\nexport abstract class MastraServerCache extends MastraBase {\n constructor({ name }: { name: string }) {\n super({\n component: 'SERVER_CACHE',\n name,\n });\n }\n\n abstract get(key: string): Promise<unknown>;\n\n abstract listLength(key: string): Promise<number>;\n\n abstract set(key: string, value: unknown): Promise<void>;\n\n abstract listPush(key: string, value: unknown): Promise<void>;\n\n abstract listFromTo(key: string, from: number, to?: number): Promise<unknown[]>;\n\n abstract delete(key: string): Promise<void>;\n\n abstract clear(): Promise<void>;\n}\n","import TTLCache from '@isaacs/ttlcache';\nimport { MastraServerCache } from './base';\n\nexport class InMemoryServerCache extends MastraServerCache {\n private cache: TTLCache<string, unknown> = new TTLCache({\n max: 1000,\n ttl: 1000 * 60 * 5,\n });\n\n constructor() {\n super({ name: 'InMemoryServerCache' });\n }\n\n async get(key: string): Promise<unknown> {\n return this.cache.get(key);\n }\n\n async set(key: string, value: unknown): Promise<void> {\n this.cache.set(key, value);\n }\n\n async listLength(key: string): Promise<number> {\n const list = this.cache.get(key) as unknown[];\n if (!Array.isArray(list)) {\n throw new Error(`${key} is not an array`);\n }\n return list.length;\n }\n\n async listPush(key: string, value: unknown): Promise<void> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n list.push(value);\n } else {\n this.cache.set(key, [value]);\n }\n }\n\n async listFromTo(key: string, from: number, to: number = -1): Promise<unknown[]> {\n const list = this.cache.get(key) as unknown[];\n if (Array.isArray(list)) {\n // Make 'to' inclusive like Redis LRANGE - add 1 unless it's -1\n const endIndex = to === -1 ? undefined : to + 1;\n return list.slice(from, endIndex);\n }\n return [];\n }\n\n async delete(key: string): Promise<void> {\n this.cache.delete(key);\n }\n\n async clear(): Promise<void> {\n this.cache.clear();\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4L3P3PCP_cjs = require('./chunk-4L3P3PCP.cjs');
|
|
4
4
|
var promises = require('fs/promises');
|
|
5
5
|
var dotenv = require('dotenv');
|
|
6
6
|
|
|
7
|
-
var MastraBundler = class extends
|
|
7
|
+
var MastraBundler = class extends chunk4L3P3PCP_cjs.MastraBase {
|
|
8
8
|
constructor({ name, component = "BUNDLER" }) {
|
|
9
9
|
super({ component, name });
|
|
10
10
|
}
|
|
@@ -22,5 +22,5 @@ var MastraBundler = class extends chunkKXCUCBEI_cjs.MastraBase {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
exports.MastraBundler = MastraBundler;
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-4HWB6PCC.cjs.map
|
|
26
|
+
//# sourceMappingURL=chunk-4HWB6PCC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bundler/index.ts"],"names":["MastraBase","readFile","parse"],"mappings":";;;;;;AAkBO,IAAe,aAAA,GAAf,cAAqCA,4BAAA,CAA+B;AAAA,EACzE,WAAA,CAAY,EAAE,IAAA,EAAM,SAAA,GAAY,WAAU,EAAyD;AACjG,IAAA,KAAA,CAAM,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAA,GAA4C;AAChD,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAI;AAExB,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,IAAA,CAAK,WAAA,EAAY,EAAG;AAC3C,MAAA,MAAM,OAAA,GAAU,MAAMC,iBAAA,CAAS,IAAA,EAAM,OAAO,CAAA;AAC5C,MAAA,MAAM,MAAA,GAASC,aAAM,OAAO,CAAA;AAE5B,MAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,QAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,MACxB,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAYF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/bundler/index.ts"],"names":["MastraBase","readFile","parse"],"mappings":";;;;;;AAkBO,IAAe,aAAA,GAAf,cAAqCA,4BAAA,CAA+B;AAAA,EACzE,WAAA,CAAY,EAAE,IAAA,EAAM,SAAA,GAAY,WAAU,EAAyD;AACjG,IAAA,KAAA,CAAM,EAAE,SAAA,EAAW,IAAA,EAAM,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAA,GAA4C;AAChD,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAI;AAExB,IAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,IAAA,CAAK,WAAA,EAAY,EAAG;AAC3C,MAAA,MAAM,OAAA,GAAU,MAAMC,iBAAA,CAAS,IAAA,EAAM,OAAO,CAAA;AAC5C,MAAA,MAAM,MAAA,GAASC,aAAM,OAAO,CAAA;AAE5B,MAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/C,QAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,MACxB,CAAC,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,OAAA;AAAA,EACT;AAYF","file":"chunk-4HWB6PCC.cjs","sourcesContent":["import { readFile } from 'fs/promises';\nimport { parse } from 'dotenv';\n\nimport { MastraBase } from '../base';\n\nexport interface IBundler {\n loadEnvVars(): Promise<Map<string, string>>;\n getEnvFiles(): Promise<string[]>;\n bundle(\n entryFile: string,\n outputDirectory: string,\n options: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void>;\n prepare(outputDirectory: string): Promise<void>;\n writePackageJson(outputDirectory: string, dependencies: Map<string, string>): Promise<void>;\n lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void>;\n}\n\nexport abstract class MastraBundler extends MastraBase implements IBundler {\n constructor({ name, component = 'BUNDLER' }: { name: string; component?: 'BUNDLER' | 'DEPLOYER' }) {\n super({ component, name });\n }\n\n async loadEnvVars(): Promise<Map<string, string>> {\n const envVars = new Map();\n\n for (const file of await this.getEnvFiles()) {\n const content = await readFile(file, 'utf-8');\n const config = parse(content);\n\n Object.entries(config).forEach(([key, value]) => {\n envVars.set(key, value);\n });\n }\n\n return envVars;\n }\n\n abstract prepare(outputDirectory: string): Promise<void>;\n abstract writePackageJson(outputDirectory: string, dependencies: Map<string, string>): Promise<void>;\n abstract writeInstrumentationFile(outputDirectory: string): Promise<void>;\n abstract getEnvFiles(): Promise<string[]>;\n abstract bundle(\n entryFile: string,\n outputDirectory: string,\n { toolsPaths, projectRoot }: { toolsPaths: (string | string[])[]; projectRoot: string },\n ): Promise<void>;\n abstract lint(entryFile: string, outputDirectory: string, toolsPaths: (string | string[])[]): Promise<void>;\n}\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkWVCEJBDR_cjs = require('./chunk-WVCEJBDR.cjs');
|
|
4
4
|
|
|
5
5
|
// src/base.ts
|
|
6
6
|
var MastraBase = class {
|
|
7
|
-
component =
|
|
7
|
+
component = chunkWVCEJBDR_cjs.RegisteredLogger.LLM;
|
|
8
8
|
logger;
|
|
9
9
|
name;
|
|
10
10
|
telemetry;
|
|
11
11
|
constructor({ component, name }) {
|
|
12
|
-
this.component = component ||
|
|
12
|
+
this.component = component || chunkWVCEJBDR_cjs.RegisteredLogger.LLM;
|
|
13
13
|
this.name = name;
|
|
14
|
-
this.logger = new
|
|
14
|
+
this.logger = new chunkWVCEJBDR_cjs.ConsoleLogger({ name: `${this.component} - ${this.name}` });
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Set the logger for the agent
|
|
@@ -19,7 +19,7 @@ var MastraBase = class {
|
|
|
19
19
|
*/
|
|
20
20
|
__setLogger(logger) {
|
|
21
21
|
this.logger = logger;
|
|
22
|
-
if (this.component !==
|
|
22
|
+
if (this.component !== chunkWVCEJBDR_cjs.RegisteredLogger.LLM) {
|
|
23
23
|
this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -29,7 +29,7 @@ var MastraBase = class {
|
|
|
29
29
|
*/
|
|
30
30
|
__setTelemetry(telemetry) {
|
|
31
31
|
this.telemetry = telemetry;
|
|
32
|
-
if (this.component !==
|
|
32
|
+
if (this.component !== chunkWVCEJBDR_cjs.RegisteredLogger.LLM) {
|
|
33
33
|
this.logger.debug(`Telemetry updated [component=${this.component}] [name=${this.telemetry.name}]`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -53,5 +53,5 @@ var MastraBase = class {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
exports.MastraBase = MastraBase;
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
57
|
-
//# sourceMappingURL=chunk-
|
|
56
|
+
//# sourceMappingURL=chunk-4L3P3PCP.cjs.map
|
|
57
|
+
//# sourceMappingURL=chunk-4L3P3PCP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/base.ts"],"names":["RegisteredLogger","ConsoleLogger"],"mappings":";;;;;AAMO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAA8BA,kCAAA,CAAiB,GAAA;AAAA,EACrC,MAAA;AAAA,EACV,IAAA;AAAA,EACA,SAAA;AAAA,EAEA,WAAA,CAAY,EAAE,SAAA,EAAW,IAAA,EAAK,EAAoD;AAChF,IAAA,IAAA,CAAK,SAAA,GAAY,aAAaA,kCAAA,CAAiB,GAAA;AAC/C,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,IAAIC,+BAAA,CAAc,EAAE,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,GAAA,EAAM,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,CAAA;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,MAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAI,IAAA,CAAK,SAAA,KAAcD,kCAAA,CAAiB,GAAA,EAAK;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,0BAAA,EAA6B,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACtF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,SAAA,EAAsB;AACnC,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAI,IAAA,CAAK,SAAA,KAAcA,kCAAA,CAAiB,GAAA,EAAK;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,6BAAA,EAAgC,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACnG;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAA,GAAiB;AACf,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,sBAAA,GAAyB;AAC3B,IAAA,OAAO,KAAK,SAAA,GACR;AAAA;AAAA,MAEE,MAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,gBAAA,EAAiB;AAAA,MACxC,SAAA,EAAW,CAAC,CAAC,IAAA,CAAK,SAAA,CAAU;AAAA,KAC9B,GACA,MAAA;AAAA,EACN;AACF","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/base.ts"],"names":["RegisteredLogger","ConsoleLogger"],"mappings":";;;;;AAMO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAA8BA,kCAAA,CAAiB,GAAA;AAAA,EACrC,MAAA;AAAA,EACV,IAAA;AAAA,EACA,SAAA;AAAA,EAEA,WAAA,CAAY,EAAE,SAAA,EAAW,IAAA,EAAK,EAAoD;AAChF,IAAA,IAAA,CAAK,SAAA,GAAY,aAAaA,kCAAA,CAAiB,GAAA;AAC/C,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,IAAIC,+BAAA,CAAc,EAAE,IAAA,EAAM,CAAA,EAAG,IAAA,CAAK,SAAS,CAAA,GAAA,EAAM,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,CAAA;AAAA,EAC9E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,MAAA,EAAuB;AACjC,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAI,IAAA,CAAK,SAAA,KAAcD,kCAAA,CAAiB,GAAA,EAAK;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,0BAAA,EAA6B,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACtF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,SAAA,EAAsB;AACnC,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAEjB,IAAA,IAAI,IAAA,CAAK,SAAA,KAAcA,kCAAA,CAAiB,GAAA,EAAK;AAC3C,MAAA,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA,6BAAA,EAAgC,IAAA,CAAK,SAAS,CAAA,QAAA,EAAW,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACnG;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,cAAA,GAAiB;AACf,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,sBAAA,GAAyB;AAC3B,IAAA,OAAO,KAAK,SAAA,GACR;AAAA;AAAA,MAEE,MAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,gBAAA,EAAiB;AAAA,MACxC,SAAA,EAAW,CAAC,CAAC,IAAA,CAAK,SAAA,CAAU;AAAA,KAC9B,GACA,MAAA;AAAA,EACN;AACF","file":"chunk-4L3P3PCP.cjs","sourcesContent":["import type { IMastraLogger } from './logger';\nimport { RegisteredLogger } from './logger/constants';\nimport { ConsoleLogger } from './logger/default-logger';\n\nimport type { Telemetry } from './telemetry';\n\nexport class MastraBase {\n component: RegisteredLogger = RegisteredLogger.LLM;\n protected logger: IMastraLogger;\n name?: string;\n telemetry?: Telemetry;\n\n constructor({ component, name }: { component?: RegisteredLogger; name?: string }) {\n this.component = component || RegisteredLogger.LLM;\n this.name = name;\n this.logger = new ConsoleLogger({ name: `${this.component} - ${this.name}` });\n }\n\n /**\n * Set the logger for the agent\n * @param logger\n */\n __setLogger(logger: IMastraLogger) {\n this.logger = logger;\n\n if (this.component !== RegisteredLogger.LLM) {\n this.logger.debug(`Logger updated [component=${this.component}] [name=${this.name}]`);\n }\n }\n\n /**\n * Set the telemetry for the\n * @param telemetry\n */\n __setTelemetry(telemetry: Telemetry) {\n this.telemetry = telemetry;\n\n if (this.component !== RegisteredLogger.LLM) {\n this.logger.debug(`Telemetry updated [component=${this.component}] [name=${this.telemetry.name}]`);\n }\n }\n\n /**\n * Get the telemetry on the vector\n * @returns telemetry\n */\n __getTelemetry() {\n return this.telemetry;\n }\n\n /* \n get experimental_telemetry config\n */\n get experimental_telemetry() {\n return this.telemetry\n ? {\n // tracer: this.telemetry.tracer,\n tracer: this.telemetry.getBaggageTracer(),\n isEnabled: !!this.telemetry.tracer,\n }\n : undefined;\n }\n}\n\nexport * from './types';\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { augmentWithInit } from './chunk-436FFEF6.js';
|
|
2
|
-
import { MessageList } from './chunk-
|
|
3
|
-
import { deepMerge } from './chunk-
|
|
4
|
-
import { MastraBase } from './chunk-
|
|
2
|
+
import { MessageList } from './chunk-2B5DS7ML.js';
|
|
3
|
+
import { deepMerge } from './chunk-QBRFMSMN.js';
|
|
4
|
+
import { MastraBase } from './chunk-BMVFEBPE.js';
|
|
5
5
|
|
|
6
6
|
// src/memory/memory.ts
|
|
7
7
|
var MemoryProcessor = class extends MastraBase {
|
|
@@ -248,5 +248,5 @@ https://mastra.ai/en/docs/memory/overview`
|
|
|
248
248
|
};
|
|
249
249
|
|
|
250
250
|
export { MastraMemory, MemoryProcessor, memoryDefaultOptions };
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
252
|
-
//# sourceMappingURL=chunk-
|
|
251
|
+
//# sourceMappingURL=chunk-4LANQQSH.js.map
|
|
252
|
+
//# sourceMappingURL=chunk-4LANQQSH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/memory/memory.ts"],"names":[],"mappings":"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","file":"chunk-VXJFKEON.js","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { AssistantContent, UserContent, CoreMessage, EmbeddingModel } from 'ai';\nimport { MessageList } from '../agent/message-list';\nimport type { MastraMessageV2, UIMessageWithMetadata } from '../agent/message-list';\nimport { MastraBase } from '../base';\nimport type { Mastra } from '../mastra';\nimport type { MastraStorage, PaginationInfo, StorageGetMessagesArg, ThreadSortOptions } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport type { ToolAction } from '../tools';\nimport { deepMerge } from '../utils';\nimport type { MastraVector } from '../vector';\n\nimport type {\n SharedMemoryConfig,\n StorageThreadType,\n MemoryConfig,\n MastraMessageV1,\n WorkingMemoryTemplate,\n} from './types';\n\nexport type MemoryProcessorOpts = {\n systemMessage?: string;\n memorySystemMessage?: string;\n newMessages?: CoreMessage[];\n};\n/**\n * Interface for message processors that can filter or transform messages\n * before they're sent to the LLM.\n */\nexport abstract class MemoryProcessor extends MastraBase {\n /**\n * Process a list of messages and return a filtered or transformed list.\n * @param messages The messages to process\n * @returns The processed messages\n */\n process(messages: CoreMessage[], _opts: MemoryProcessorOpts): CoreMessage[] | Promise<CoreMessage[]> {\n return messages;\n }\n}\n\nexport const memoryDefaultOptions = {\n lastMessages: 10,\n semanticRecall: false,\n threads: {\n generateTitle: false,\n },\n workingMemory: {\n enabled: false,\n template: `\n# User Information\n- **First Name**: \n- **Last Name**: \n- **Location**: \n- **Occupation**: \n- **Interests**: \n- **Goals**: \n- **Events**: \n- **Facts**: \n- **Projects**: \n`,\n },\n} satisfies MemoryConfig;\n\n/**\n * Abstract Memory class that defines the interface for storing and retrieving\n * conversation threads and messages.\n */\nexport abstract class MastraMemory extends MastraBase {\n MAX_CONTEXT_TOKENS?: number;\n\n protected _storage?: MastraStorage;\n vector?: MastraVector;\n embedder?: EmbeddingModel<string> | EmbeddingModelV2<string>;\n private processors: MemoryProcessor[] = [];\n protected threadConfig: MemoryConfig = { ...memoryDefaultOptions };\n #mastra?: Mastra;\n\n constructor(config: { name: string } & SharedMemoryConfig) {\n super({ component: 'MEMORY', name: config.name });\n\n if (config.options) this.threadConfig = this.getMergedThreadConfig(config.options);\n if (config.processors) this.processors = config.processors;\n if (config.storage) {\n this._storage = augmentWithInit(config.storage);\n this._hasOwnStorage = true;\n }\n\n if (this.threadConfig.semanticRecall) {\n if (!config.vector) {\n throw new Error(\n `Semantic recall requires a vector store to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.vector = config.vector;\n\n if (!config.embedder) {\n throw new Error(\n `Semantic recall requires an embedder to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.embedder = config.embedder;\n }\n }\n\n /**\n * Internal method used by Mastra to register itself with the memory.\n * @param mastra The Mastra instance.\n * @internal\n */\n __registerMastra(mastra: Mastra): void {\n this.#mastra = mastra;\n }\n\n protected _hasOwnStorage = false;\n get hasOwnStorage() {\n return this._hasOwnStorage;\n }\n\n get storage() {\n if (!this._storage) {\n throw new Error(\n `Memory requires a storage provider to function. Add a storage configuration to Memory or to your Mastra instance.\\n\\nhttps://mastra.ai/en/docs/memory/overview`,\n );\n }\n return this._storage;\n }\n\n public setStorage(storage: MastraStorage) {\n this._storage = augmentWithInit(storage);\n }\n\n public setVector(vector: MastraVector) {\n this.vector = vector;\n }\n\n public setEmbedder(embedder: EmbeddingModel<string>) {\n this.embedder = embedder;\n }\n\n /**\n * Get a system message to inject into the conversation.\n * This will be called before each conversation turn.\n * Implementations can override this to inject custom system messages.\n */\n public async getSystemMessage(_input: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null> {\n return null;\n }\n\n /**\n * Get tools that should be available to the agent.\n * This will be called when converting tools for the agent.\n * Implementations can override this to provide additional tools.\n */\n public getTools(_config?: MemoryConfig): Record<string, ToolAction<any, any, any>> {\n return {};\n }\n\n protected async createEmbeddingIndex(dimensions?: number): Promise<{ indexName: string }> {\n const defaultDimensions = 1536;\n const isDefault = dimensions === defaultDimensions;\n const usedDimensions = dimensions ?? defaultDimensions;\n const separator = this.vector?.indexSeparator ?? '_';\n const indexName = isDefault\n ? `memory${separator}messages`\n : `memory${separator}messages${separator}${usedDimensions}`;\n\n if (typeof this.vector === `undefined`) {\n throw new Error(`Tried to create embedding index but no vector db is attached to this Memory instance.`);\n }\n await this.vector.createIndex({\n indexName,\n dimension: usedDimensions,\n });\n return { indexName };\n }\n\n public getMergedThreadConfig(config?: MemoryConfig): MemoryConfig {\n if (config?.workingMemory && 'use' in config.workingMemory) {\n throw new Error('The workingMemory.use option has been removed. Working memory always uses tool-call mode.');\n }\n const mergedConfig = deepMerge(this.threadConfig, config || {});\n\n if (config?.workingMemory?.schema) {\n if (mergedConfig.workingMemory) {\n mergedConfig.workingMemory.schema = config.workingMemory.schema;\n }\n }\n\n return mergedConfig;\n }\n\n /**\n * Apply all configured message processors to a list of messages.\n * @param messages The messages to process\n * @returns The processed messages\n */\n protected async applyProcessors(\n messages: CoreMessage[],\n opts: {\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts,\n ): Promise<CoreMessage[]> {\n const processors = opts.processors || this.processors;\n if (!processors || processors.length === 0) {\n return messages;\n }\n\n let processedMessages = [...messages];\n\n for (const processor of processors) {\n processedMessages = await processor.process(processedMessages, {\n systemMessage: opts.systemMessage,\n newMessages: opts.newMessages,\n memorySystemMessage: opts.memorySystemMessage,\n });\n }\n\n return processedMessages;\n }\n\n processMessages({\n messages,\n processors,\n ...opts\n }: {\n messages: CoreMessage[];\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts) {\n return this.applyProcessors(messages, { processors: processors || this.processors, ...opts });\n }\n\n abstract rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch,\n config,\n }: {\n threadId: string;\n resourceId?: string;\n vectorMessageSearch?: string;\n config?: MemoryConfig;\n }): Promise<{ messages: MastraMessageV1[]; messagesV2: MastraMessageV2[] }>;\n\n estimateTokens(text: string): number {\n return Math.ceil(text.split(' ').length * 1.3);\n }\n\n /**\n * Retrieves a specific thread by its ID\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to the thread or null if not found\n */\n abstract getThreadById({ threadId }: { threadId: string }): Promise<StorageThreadType | null>;\n\n /**\n * Retrieves all threads that belong to the specified resource.\n * @param resourceId - The unique identifier of the resource\n * @param orderBy - Which timestamp field to sort by (`'createdAt'` or `'updatedAt'`);\n * defaults to `'createdAt'`\n * @param sortDirection - Sort order for the results (`'ASC'` or `'DESC'`);\n * defaults to `'DESC'`\n * @returns Promise resolving to an array of matching threads; resolves to an empty array\n * if the resource has no threads\n */\n abstract getThreadsByResourceId({\n resourceId,\n orderBy,\n sortDirection,\n }: { resourceId: string } & ThreadSortOptions): Promise<StorageThreadType[]>;\n\n abstract getThreadsByResourceIdPaginated(\n args: {\n resourceId: string;\n page: number;\n perPage: number;\n } & ThreadSortOptions,\n ): Promise<PaginationInfo & { threads: StorageThreadType[] }>;\n\n /**\n * Saves or updates a thread\n * @param thread - The thread data to save\n * @returns Promise resolving to the saved thread\n */\n abstract saveThread({\n thread,\n memoryConfig,\n }: {\n thread: StorageThreadType;\n memoryConfig?: MemoryConfig;\n }): Promise<StorageThreadType>;\n\n /**\n * Saves messages to a thread\n * @param messages - Array of messages to save\n * @returns Promise resolving to the saved messages\n */\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1';\n }): Promise<MastraMessageV1[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format: 'v2';\n }): Promise<MastraMessageV2[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1' | 'v2';\n }): Promise<MastraMessageV2[] | MastraMessageV1[]>;\n\n /**\n * Retrieves all messages for a specific thread\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to array of messages and uiMessages\n */\n abstract query({\n threadId,\n resourceId,\n selectBy,\n }: StorageGetMessagesArg): Promise<{ messages: CoreMessage[]; uiMessages: UIMessageWithMetadata[] }>;\n\n /**\n * Helper method to create a new thread\n * @param title - Optional title for the thread\n * @param metadata - Optional metadata for the thread\n * @returns Promise resolving to the created thread\n */\n async createThread({\n threadId,\n resourceId,\n title,\n metadata,\n memoryConfig,\n saveThread = true,\n }: {\n resourceId: string;\n threadId?: string;\n title?: string;\n metadata?: Record<string, unknown>;\n memoryConfig?: MemoryConfig;\n saveThread?: boolean;\n }): Promise<StorageThreadType> {\n const thread: StorageThreadType = {\n id: threadId || this.generateId(),\n title: title || `New Thread ${new Date().toISOString()}`,\n resourceId,\n createdAt: new Date(),\n updatedAt: new Date(),\n metadata,\n };\n\n return saveThread ? this.saveThread({ thread, memoryConfig }) : thread;\n }\n\n /**\n * Helper method to delete a thread\n * @param threadId - the id of the thread to delete\n */\n abstract deleteThread(threadId: string): Promise<void>;\n\n /**\n * Helper method to add a single message to a thread\n * @param threadId - The thread to add the message to\n * @param content - The message content\n * @param role - The role of the message sender\n * @param type - The type of the message\n * @param toolNames - Optional array of tool names that were called\n * @param toolCallArgs - Optional array of tool call arguments\n * @param toolCallIds - Optional array of tool call ids\n * @returns Promise resolving to the saved message\n * @deprecated use saveMessages instead\n */\n async addMessage({\n threadId,\n resourceId,\n config,\n content,\n role,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n }: {\n threadId: string;\n resourceId: string;\n config?: MemoryConfig;\n content: UserContent | AssistantContent;\n role: 'user' | 'assistant';\n type: 'text' | 'tool-call' | 'tool-result';\n toolNames?: string[];\n toolCallArgs?: Record<string, unknown>[];\n toolCallIds?: string[];\n }): Promise<MastraMessageV1> {\n const message: MastraMessageV1 = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n resourceId,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n };\n\n const savedMessages = await this.saveMessages({ messages: [message], memoryConfig: config });\n const list = new MessageList({ threadId, resourceId }).add(savedMessages[0]!, 'memory');\n return list.get.all.v1()[0]!;\n }\n\n /**\n * Generates a unique identifier\n * @returns A unique string ID\n */\n public generateId(): string {\n return this.#mastra?.generateId() || crypto.randomUUID();\n }\n\n /**\n * Retrieves working memory for a specific thread\n * @param threadId - The unique identifier of the thread\n * @param resourceId - The unique identifier of the resource\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory data or null if not found\n */\n abstract getWorkingMemory({\n threadId,\n resourceId,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null>;\n\n /**\n * Retrieves working memory template for a specific thread\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory template or null if not found\n */\n abstract getWorkingMemoryTemplate({\n memoryConfig,\n }?: {\n memoryConfig?: MemoryConfig;\n }): Promise<WorkingMemoryTemplate | null>;\n\n abstract updateWorkingMemory({\n threadId,\n resourceId,\n workingMemory,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n memoryConfig?: MemoryConfig;\n }): Promise<void>;\n\n /**\n * @warning experimental! can be removed or changed at any time\n */\n abstract __experimental_updateWorkingMemoryVNext({\n threadId,\n resourceId,\n workingMemory,\n searchString,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n searchString?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<{ success: boolean; reason: string }>;\n\n /**\n * Deletes multiple messages by their IDs\n * @param messageIds - Array of message IDs to delete\n * @returns Promise that resolves when all messages are deleted\n */\n abstract deleteMessages(messageIds: string[]): Promise<void>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/memory/memory.ts"],"names":[],"mappings":"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","file":"chunk-4LANQQSH.js","sourcesContent":["import type { EmbeddingModelV2 } from '@ai-sdk/provider-v5';\nimport type { AssistantContent, UserContent, CoreMessage, EmbeddingModel } from 'ai';\nimport { MessageList } from '../agent/message-list';\nimport type { MastraMessageV2, UIMessageWithMetadata } from '../agent/message-list';\nimport { MastraBase } from '../base';\nimport type { Mastra } from '../mastra';\nimport type { MastraStorage, PaginationInfo, StorageGetMessagesArg, ThreadSortOptions } from '../storage';\nimport { augmentWithInit } from '../storage/storageWithInit';\nimport type { ToolAction } from '../tools';\nimport { deepMerge } from '../utils';\nimport type { MastraVector } from '../vector';\n\nimport type {\n SharedMemoryConfig,\n StorageThreadType,\n MemoryConfig,\n MastraMessageV1,\n WorkingMemoryTemplate,\n} from './types';\n\nexport type MemoryProcessorOpts = {\n systemMessage?: string;\n memorySystemMessage?: string;\n newMessages?: CoreMessage[];\n};\n/**\n * Interface for message processors that can filter or transform messages\n * before they're sent to the LLM.\n */\nexport abstract class MemoryProcessor extends MastraBase {\n /**\n * Process a list of messages and return a filtered or transformed list.\n * @param messages The messages to process\n * @returns The processed messages\n */\n process(messages: CoreMessage[], _opts: MemoryProcessorOpts): CoreMessage[] | Promise<CoreMessage[]> {\n return messages;\n }\n}\n\nexport const memoryDefaultOptions = {\n lastMessages: 10,\n semanticRecall: false,\n threads: {\n generateTitle: false,\n },\n workingMemory: {\n enabled: false,\n template: `\n# User Information\n- **First Name**: \n- **Last Name**: \n- **Location**: \n- **Occupation**: \n- **Interests**: \n- **Goals**: \n- **Events**: \n- **Facts**: \n- **Projects**: \n`,\n },\n} satisfies MemoryConfig;\n\n/**\n * Abstract Memory class that defines the interface for storing and retrieving\n * conversation threads and messages.\n */\nexport abstract class MastraMemory extends MastraBase {\n MAX_CONTEXT_TOKENS?: number;\n\n protected _storage?: MastraStorage;\n vector?: MastraVector;\n embedder?: EmbeddingModel<string> | EmbeddingModelV2<string>;\n private processors: MemoryProcessor[] = [];\n protected threadConfig: MemoryConfig = { ...memoryDefaultOptions };\n #mastra?: Mastra;\n\n constructor(config: { name: string } & SharedMemoryConfig) {\n super({ component: 'MEMORY', name: config.name });\n\n if (config.options) this.threadConfig = this.getMergedThreadConfig(config.options);\n if (config.processors) this.processors = config.processors;\n if (config.storage) {\n this._storage = augmentWithInit(config.storage);\n this._hasOwnStorage = true;\n }\n\n if (this.threadConfig.semanticRecall) {\n if (!config.vector) {\n throw new Error(\n `Semantic recall requires a vector store to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.vector = config.vector;\n\n if (!config.embedder) {\n throw new Error(\n `Semantic recall requires an embedder to be configured.\\n\\nhttps://mastra.ai/en/docs/memory/semantic-recall`,\n );\n }\n this.embedder = config.embedder;\n }\n }\n\n /**\n * Internal method used by Mastra to register itself with the memory.\n * @param mastra The Mastra instance.\n * @internal\n */\n __registerMastra(mastra: Mastra): void {\n this.#mastra = mastra;\n }\n\n protected _hasOwnStorage = false;\n get hasOwnStorage() {\n return this._hasOwnStorage;\n }\n\n get storage() {\n if (!this._storage) {\n throw new Error(\n `Memory requires a storage provider to function. Add a storage configuration to Memory or to your Mastra instance.\\n\\nhttps://mastra.ai/en/docs/memory/overview`,\n );\n }\n return this._storage;\n }\n\n public setStorage(storage: MastraStorage) {\n this._storage = augmentWithInit(storage);\n }\n\n public setVector(vector: MastraVector) {\n this.vector = vector;\n }\n\n public setEmbedder(embedder: EmbeddingModel<string>) {\n this.embedder = embedder;\n }\n\n /**\n * Get a system message to inject into the conversation.\n * This will be called before each conversation turn.\n * Implementations can override this to inject custom system messages.\n */\n public async getSystemMessage(_input: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null> {\n return null;\n }\n\n /**\n * Get tools that should be available to the agent.\n * This will be called when converting tools for the agent.\n * Implementations can override this to provide additional tools.\n */\n public getTools(_config?: MemoryConfig): Record<string, ToolAction<any, any, any>> {\n return {};\n }\n\n protected async createEmbeddingIndex(dimensions?: number): Promise<{ indexName: string }> {\n const defaultDimensions = 1536;\n const isDefault = dimensions === defaultDimensions;\n const usedDimensions = dimensions ?? defaultDimensions;\n const separator = this.vector?.indexSeparator ?? '_';\n const indexName = isDefault\n ? `memory${separator}messages`\n : `memory${separator}messages${separator}${usedDimensions}`;\n\n if (typeof this.vector === `undefined`) {\n throw new Error(`Tried to create embedding index but no vector db is attached to this Memory instance.`);\n }\n await this.vector.createIndex({\n indexName,\n dimension: usedDimensions,\n });\n return { indexName };\n }\n\n public getMergedThreadConfig(config?: MemoryConfig): MemoryConfig {\n if (config?.workingMemory && 'use' in config.workingMemory) {\n throw new Error('The workingMemory.use option has been removed. Working memory always uses tool-call mode.');\n }\n const mergedConfig = deepMerge(this.threadConfig, config || {});\n\n if (config?.workingMemory?.schema) {\n if (mergedConfig.workingMemory) {\n mergedConfig.workingMemory.schema = config.workingMemory.schema;\n }\n }\n\n return mergedConfig;\n }\n\n /**\n * Apply all configured message processors to a list of messages.\n * @param messages The messages to process\n * @returns The processed messages\n */\n protected async applyProcessors(\n messages: CoreMessage[],\n opts: {\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts,\n ): Promise<CoreMessage[]> {\n const processors = opts.processors || this.processors;\n if (!processors || processors.length === 0) {\n return messages;\n }\n\n let processedMessages = [...messages];\n\n for (const processor of processors) {\n processedMessages = await processor.process(processedMessages, {\n systemMessage: opts.systemMessage,\n newMessages: opts.newMessages,\n memorySystemMessage: opts.memorySystemMessage,\n });\n }\n\n return processedMessages;\n }\n\n processMessages({\n messages,\n processors,\n ...opts\n }: {\n messages: CoreMessage[];\n processors?: MemoryProcessor[];\n } & MemoryProcessorOpts) {\n return this.applyProcessors(messages, { processors: processors || this.processors, ...opts });\n }\n\n abstract rememberMessages({\n threadId,\n resourceId,\n vectorMessageSearch,\n config,\n }: {\n threadId: string;\n resourceId?: string;\n vectorMessageSearch?: string;\n config?: MemoryConfig;\n }): Promise<{ messages: MastraMessageV1[]; messagesV2: MastraMessageV2[] }>;\n\n estimateTokens(text: string): number {\n return Math.ceil(text.split(' ').length * 1.3);\n }\n\n /**\n * Retrieves a specific thread by its ID\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to the thread or null if not found\n */\n abstract getThreadById({ threadId }: { threadId: string }): Promise<StorageThreadType | null>;\n\n /**\n * Retrieves all threads that belong to the specified resource.\n * @param resourceId - The unique identifier of the resource\n * @param orderBy - Which timestamp field to sort by (`'createdAt'` or `'updatedAt'`);\n * defaults to `'createdAt'`\n * @param sortDirection - Sort order for the results (`'ASC'` or `'DESC'`);\n * defaults to `'DESC'`\n * @returns Promise resolving to an array of matching threads; resolves to an empty array\n * if the resource has no threads\n */\n abstract getThreadsByResourceId({\n resourceId,\n orderBy,\n sortDirection,\n }: { resourceId: string } & ThreadSortOptions): Promise<StorageThreadType[]>;\n\n abstract getThreadsByResourceIdPaginated(\n args: {\n resourceId: string;\n page: number;\n perPage: number;\n } & ThreadSortOptions,\n ): Promise<PaginationInfo & { threads: StorageThreadType[] }>;\n\n /**\n * Saves or updates a thread\n * @param thread - The thread data to save\n * @returns Promise resolving to the saved thread\n */\n abstract saveThread({\n thread,\n memoryConfig,\n }: {\n thread: StorageThreadType;\n memoryConfig?: MemoryConfig;\n }): Promise<StorageThreadType>;\n\n /**\n * Saves messages to a thread\n * @param messages - Array of messages to save\n * @returns Promise resolving to the saved messages\n */\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1';\n }): Promise<MastraMessageV1[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format: 'v2';\n }): Promise<MastraMessageV2[]>;\n abstract saveMessages(args: {\n messages: (MastraMessageV1 | MastraMessageV2)[] | MastraMessageV1[] | MastraMessageV2[];\n memoryConfig?: MemoryConfig | undefined;\n format?: 'v1' | 'v2';\n }): Promise<MastraMessageV2[] | MastraMessageV1[]>;\n\n /**\n * Retrieves all messages for a specific thread\n * @param threadId - The unique identifier of the thread\n * @returns Promise resolving to array of messages and uiMessages\n */\n abstract query({\n threadId,\n resourceId,\n selectBy,\n }: StorageGetMessagesArg): Promise<{ messages: CoreMessage[]; uiMessages: UIMessageWithMetadata[] }>;\n\n /**\n * Helper method to create a new thread\n * @param title - Optional title for the thread\n * @param metadata - Optional metadata for the thread\n * @returns Promise resolving to the created thread\n */\n async createThread({\n threadId,\n resourceId,\n title,\n metadata,\n memoryConfig,\n saveThread = true,\n }: {\n resourceId: string;\n threadId?: string;\n title?: string;\n metadata?: Record<string, unknown>;\n memoryConfig?: MemoryConfig;\n saveThread?: boolean;\n }): Promise<StorageThreadType> {\n const thread: StorageThreadType = {\n id: threadId || this.generateId(),\n title: title || `New Thread ${new Date().toISOString()}`,\n resourceId,\n createdAt: new Date(),\n updatedAt: new Date(),\n metadata,\n };\n\n return saveThread ? this.saveThread({ thread, memoryConfig }) : thread;\n }\n\n /**\n * Helper method to delete a thread\n * @param threadId - the id of the thread to delete\n */\n abstract deleteThread(threadId: string): Promise<void>;\n\n /**\n * Helper method to add a single message to a thread\n * @param threadId - The thread to add the message to\n * @param content - The message content\n * @param role - The role of the message sender\n * @param type - The type of the message\n * @param toolNames - Optional array of tool names that were called\n * @param toolCallArgs - Optional array of tool call arguments\n * @param toolCallIds - Optional array of tool call ids\n * @returns Promise resolving to the saved message\n * @deprecated use saveMessages instead\n */\n async addMessage({\n threadId,\n resourceId,\n config,\n content,\n role,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n }: {\n threadId: string;\n resourceId: string;\n config?: MemoryConfig;\n content: UserContent | AssistantContent;\n role: 'user' | 'assistant';\n type: 'text' | 'tool-call' | 'tool-result';\n toolNames?: string[];\n toolCallArgs?: Record<string, unknown>[];\n toolCallIds?: string[];\n }): Promise<MastraMessageV1> {\n const message: MastraMessageV1 = {\n id: this.generateId(),\n content,\n role,\n createdAt: new Date(),\n threadId,\n resourceId,\n type,\n toolNames,\n toolCallArgs,\n toolCallIds,\n };\n\n const savedMessages = await this.saveMessages({ messages: [message], memoryConfig: config });\n const list = new MessageList({ threadId, resourceId }).add(savedMessages[0]!, 'memory');\n return list.get.all.v1()[0]!;\n }\n\n /**\n * Generates a unique identifier\n * @returns A unique string ID\n */\n public generateId(): string {\n return this.#mastra?.generateId() || crypto.randomUUID();\n }\n\n /**\n * Retrieves working memory for a specific thread\n * @param threadId - The unique identifier of the thread\n * @param resourceId - The unique identifier of the resource\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory data or null if not found\n */\n abstract getWorkingMemory({\n threadId,\n resourceId,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<string | null>;\n\n /**\n * Retrieves working memory template for a specific thread\n * @param memoryConfig - Optional memory configuration\n * @returns Promise resolving to working memory template or null if not found\n */\n abstract getWorkingMemoryTemplate({\n memoryConfig,\n }?: {\n memoryConfig?: MemoryConfig;\n }): Promise<WorkingMemoryTemplate | null>;\n\n abstract updateWorkingMemory({\n threadId,\n resourceId,\n workingMemory,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n memoryConfig?: MemoryConfig;\n }): Promise<void>;\n\n /**\n * @warning experimental! can be removed or changed at any time\n */\n abstract __experimental_updateWorkingMemoryVNext({\n threadId,\n resourceId,\n workingMemory,\n searchString,\n memoryConfig,\n }: {\n threadId: string;\n resourceId?: string;\n workingMemory: string;\n searchString?: string;\n memoryConfig?: MemoryConfig;\n }): Promise<{ success: boolean; reason: string }>;\n\n /**\n * Deletes multiple messages by their IDs\n * @param messageIds - Array of message IDs to delete\n * @returns Promise that resolves when all messages are deleted\n */\n abstract deleteMessages(messageIds: string[]): Promise<void>;\n}\n"]}
|
|
@@ -59,7 +59,6 @@ function enhanceStreamingArgumentsWithTelemetry(args, span, spanName, methodName
|
|
|
59
59
|
span.setStatus({ code: SpanStatusCode.OK });
|
|
60
60
|
span.end();
|
|
61
61
|
} catch (error) {
|
|
62
|
-
debugger;
|
|
63
62
|
console.warn("Telemetry capture failed:", error);
|
|
64
63
|
span.setAttribute(`${spanName}.result`, "[Telemetry Capture Error]");
|
|
65
64
|
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
@@ -593,5 +592,5 @@ var BaggageTracer = class {
|
|
|
593
592
|
};
|
|
594
593
|
|
|
595
594
|
export { InstrumentClass, OTLPTraceExporter, Telemetry, getBaggageValues, hasActiveTelemetry, withSpan };
|
|
596
|
-
//# sourceMappingURL=chunk-
|
|
597
|
-
//# sourceMappingURL=chunk-
|
|
595
|
+
//# sourceMappingURL=chunk-5QXPHYHO.js.map
|
|
596
|
+
//# sourceMappingURL=chunk-5QXPHYHO.js.map
|