@mastra/server 1.23.0-alpha.2 → 1.23.0-alpha.4
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 +14 -0
- package/dist/{chunk-MNZBZOWQ.cjs → chunk-B2OFZDJQ.cjs} +11 -11
- package/dist/{chunk-MNZBZOWQ.cjs.map → chunk-B2OFZDJQ.cjs.map} +1 -1
- package/dist/{chunk-MFBT6P7Q.js → chunk-DGS7O6Q7.js} +3 -3
- package/dist/{chunk-MFBT6P7Q.js.map → chunk-DGS7O6Q7.js.map} +1 -1
- package/dist/{chunk-O2RWEEZ3.js → chunk-FLGIOJA5.js} +39 -18
- package/dist/chunk-FLGIOJA5.js.map +1 -0
- package/dist/{chunk-Z5ETZUOK.cjs → chunk-HHGZGERI.cjs} +4 -4
- package/dist/{chunk-Z5ETZUOK.cjs.map → chunk-HHGZGERI.cjs.map} +1 -1
- package/dist/{chunk-UZZDH3J2.cjs → chunk-LFZO2LHV.cjs} +5 -2
- package/dist/chunk-LFZO2LHV.cjs.map +1 -0
- package/dist/{chunk-KBG2XGCA.cjs → chunk-PNCR2M6Y.cjs} +39 -18
- package/dist/chunk-PNCR2M6Y.cjs.map +1 -0
- package/dist/{chunk-WGB6F36S.cjs → chunk-RNC7VEI6.cjs} +7 -3
- package/dist/chunk-RNC7VEI6.cjs.map +1 -0
- package/dist/{chunk-27XB5KOK.js → chunk-SE5M6GC6.js} +3 -3
- package/dist/{chunk-27XB5KOK.js.map → chunk-SE5M6GC6.js.map} +1 -1
- package/dist/{chunk-UUDXDJ7K.js → chunk-SZ2FSVP5.js} +5 -5
- package/dist/{chunk-UUDXDJ7K.js.map → chunk-SZ2FSVP5.js.map} +1 -1
- package/dist/{chunk-QJMOCS54.js → chunk-UTRP4B2Q.js} +5 -2
- package/dist/chunk-UTRP4B2Q.js.map +1 -0
- package/dist/{chunk-2HTJTFFI.cjs → chunk-UVK6YXEL.cjs} +119 -112
- package/dist/chunk-UVK6YXEL.cjs.map +1 -0
- package/dist/{chunk-4HARW5AZ.cjs → chunk-VMA5TY4H.cjs} +19 -19
- package/dist/{chunk-4HARW5AZ.cjs.map → chunk-VMA5TY4H.cjs.map} +1 -1
- package/dist/{chunk-H77IQ6X3.js → chunk-VXBTV6LH.js} +7 -3
- package/dist/chunk-VXBTV6LH.js.map +1 -0
- package/dist/{chunk-CUULQ4L3.js → chunk-XUIA3SIB.js} +14 -7
- package/dist/chunk-XUIA3SIB.js.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-B7AUSTEY-TJ76ZPT6.cjs → observational-memory-JQ34KLFS-CNLSTXO3.cjs} +26 -26
- package/dist/{observational-memory-B7AUSTEY-TJ76ZPT6.cjs.map → observational-memory-JQ34KLFS-CNLSTXO3.cjs.map} +1 -1
- package/dist/{observational-memory-B7AUSTEY-4KDTDMCO.js → observational-memory-JQ34KLFS-KLWGOGP4.js} +3 -3
- package/dist/{observational-memory-B7AUSTEY-4KDTDMCO.js.map → observational-memory-JQ34KLFS-KLWGOGP4.js.map} +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/gateway-memory-client.cjs +8 -8
- package/dist/server/handlers/gateway-memory-client.d.ts +3 -0
- package/dist/server/handlers/gateway-memory-client.d.ts.map +1 -1
- package/dist/server/handlers/gateway-memory-client.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts +8 -0
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers.cjs +6 -6
- package/dist/server/handlers.js +3 -3
- package/dist/server/schemas/index.cjs +50 -50
- package/dist/server/schemas/index.js +2 -2
- package/dist/server/schemas/memory.d.ts +4 -0
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +47 -47
- package/dist/server/server-adapter/index.js +3 -3
- package/dist/server/server-adapter/routes/memory.d.ts +8 -0
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-2HTJTFFI.cjs.map +0 -1
- package/dist/chunk-CUULQ4L3.js.map +0 -1
- package/dist/chunk-H77IQ6X3.js.map +0 -1
- package/dist/chunk-KBG2XGCA.cjs.map +0 -1
- package/dist/chunk-O2RWEEZ3.js.map +0 -1
- package/dist/chunk-QJMOCS54.js.map +0 -1
- package/dist/chunk-UZZDH3J2.cjs.map +0 -1
- package/dist/chunk-WGB6F36S.cjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkGNVZDFY5_cjs = require('./chunk-GNVZDFY5.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkRNC7VEI6_cjs = require('./chunk-RNC7VEI6.cjs');
|
|
5
5
|
var z = require('zod');
|
|
6
6
|
|
|
7
7
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -21,7 +21,7 @@ var createConversationBodySchema = z__default.default.object({
|
|
|
21
21
|
var conversationObjectSchema = z__default.default.object({
|
|
22
22
|
id: z__default.default.string(),
|
|
23
23
|
object: z__default.default.literal("conversation"),
|
|
24
|
-
thread:
|
|
24
|
+
thread: chunkRNC7VEI6_cjs.getThreadByIdResponseSchema
|
|
25
25
|
});
|
|
26
26
|
var conversationDeletedSchema = z__default.default.object({
|
|
27
27
|
id: z__default.default.string(),
|
|
@@ -41,5 +41,5 @@ exports.conversationIdPathParams = conversationIdPathParams;
|
|
|
41
41
|
exports.conversationItemsListSchema = conversationItemsListSchema;
|
|
42
42
|
exports.conversationObjectSchema = conversationObjectSchema;
|
|
43
43
|
exports.createConversationBodySchema = createConversationBodySchema;
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-HHGZGERI.cjs.map
|
|
45
|
+
//# sourceMappingURL=chunk-HHGZGERI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/schemas/conversations.ts"],"names":["z","getThreadByIdResponseSchema","conversationItemSchema"],"mappings":";;;;;;;;;;AAIO,IAAM,wBAAA,GAA2BA,mBAAE,MAAA,CAAO;AAAA,EAC/C,cAAA,EAAgBA,kBAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AACrF,CAAC;AAEM,IAAM,4BAAA,GAA+BA,mBAAE,MAAA,CAAO;AAAA,EACnD,QAAA,EAAUA,kBAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACtF,iBAAiBA,kBAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACrG,aAAaA,kBAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACrG,KAAA,EAAOA,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAUA,kBAAA,CAAE,MAAA,CAAOA,kBAAA,CAAE,MAAA,IAAUA,kBAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAIM,IAAM,wBAAA,GAA2BA,mBAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAIA,mBAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAChC,MAAA,EAAQC;AACV,CAAC;AAEM,IAAM,yBAAA,GAA4BD,mBAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAIA,mBAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,sBAAsB,CAAA;AAAA,EACxC,OAAA,EAASA,kBAAA,CAAE,OAAA,CAAQ,IAAI;AACzB,CAAC;AAEM,IAAM,2BAAA,GAA8BA,mBAAE,MAAA,CAAO;AAAA,EAClD,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACxB,IAAA,EAAMA,kBAAA,CAAE,KAAA,CAAME,wCAAsB,CAAA;AAAA,EACpC,QAAA,EAAUF,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAASA,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,QAAA,EAAUA,mBAAE,OAAA;AACd,CAAC","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/server/schemas/conversations.ts"],"names":["z","getThreadByIdResponseSchema","conversationItemSchema"],"mappings":";;;;;;;;;;AAIO,IAAM,wBAAA,GAA2BA,mBAAE,MAAA,CAAO;AAAA,EAC/C,cAAA,EAAgBA,kBAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AACrF,CAAC;AAEM,IAAM,4BAAA,GAA+BA,mBAAE,MAAA,CAAO;AAAA,EACnD,QAAA,EAAUA,kBAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACtF,iBAAiBA,kBAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EACrG,aAAaA,kBAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACrG,KAAA,EAAOA,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAUA,kBAAA,CAAE,MAAA,CAAOA,kBAAA,CAAE,MAAA,IAAUA,kBAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAIM,IAAM,wBAAA,GAA2BA,mBAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAIA,mBAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,EAChC,MAAA,EAAQC;AACV,CAAC;AAEM,IAAM,yBAAA,GAA4BD,mBAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAIA,mBAAE,MAAA,EAAO;AAAA,EACb,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,sBAAsB,CAAA;AAAA,EACxC,OAAA,EAASA,kBAAA,CAAE,OAAA,CAAQ,IAAI;AACzB,CAAC;AAEM,IAAM,2BAAA,GAA8BA,mBAAE,MAAA,CAAO;AAAA,EAClD,MAAA,EAAQA,kBAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACxB,IAAA,EAAMA,kBAAA,CAAE,KAAA,CAAME,wCAAsB,CAAA;AAAA,EACpC,QAAA,EAAUF,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,OAAA,EAASA,kBAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,QAAA,EAAUA,mBAAE,OAAA;AACd,CAAC","file":"chunk-HHGZGERI.cjs","sourcesContent":["import z from 'zod';\nimport { getThreadByIdResponseSchema } from './memory';\nimport { conversationItemSchema } from './responses';\n\nexport const conversationIdPathParams = z.object({\n conversationId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\nexport const createConversationBodySchema = z.object({\n agent_id: z.string().describe('Mastra agent ID used to create the conversation thread'),\n conversation_id: z.string().optional().describe('Optional conversation ID to use as the raw threadId'),\n resource_id: z.string().optional().describe('Optional resource ID to associate with the conversation'),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type CreateConversationBody = z.infer<typeof createConversationBodySchema>;\n\nexport const conversationObjectSchema = z.object({\n id: z.string(),\n object: z.literal('conversation'),\n thread: getThreadByIdResponseSchema,\n});\n\nexport const conversationDeletedSchema = z.object({\n id: z.string(),\n object: z.literal('conversation.deleted'),\n deleted: z.literal(true),\n});\n\nexport const conversationItemsListSchema = z.object({\n object: z.literal('list'),\n data: z.array(conversationItemSchema),\n first_id: z.string().nullable(),\n last_id: z.string().nullable(),\n has_more: z.boolean(),\n});\n\nexport type ConversationObject = z.infer<typeof conversationObjectSchema>;\nexport type ConversationItemsList = z.infer<typeof conversationItemsListSchema>;\nexport type ConversationDeleted = z.infer<typeof conversationDeletedSchema>;\n"]}
|
|
@@ -112,6 +112,9 @@ var GatewayMemoryClient = class {
|
|
|
112
112
|
const query = new URLSearchParams();
|
|
113
113
|
if (params.resourceId) query.set("resourceId", params.resourceId);
|
|
114
114
|
if (params.limit != null) query.set("limit", String(params.limit));
|
|
115
|
+
if (params.from) query.set("from", params.from.toISOString());
|
|
116
|
+
if (params.to) query.set("to", params.to.toISOString());
|
|
117
|
+
if (params.offset != null) query.set("offset", String(params.offset));
|
|
115
118
|
const qs = query.toString();
|
|
116
119
|
try {
|
|
117
120
|
return await this.request(`${this.threadPath(threadId)}/observations/history${qs ? "?" + qs : ""}`);
|
|
@@ -225,5 +228,5 @@ exports.isGatewayAgentAsync = isGatewayAgentAsync;
|
|
|
225
228
|
exports.toLocalMessage = toLocalMessage;
|
|
226
229
|
exports.toLocalOMRecord = toLocalOMRecord;
|
|
227
230
|
exports.toLocalThread = toLocalThread;
|
|
228
|
-
//# sourceMappingURL=chunk-
|
|
229
|
-
//# sourceMappingURL=chunk-
|
|
231
|
+
//# sourceMappingURL=chunk-LFZO2LHV.cjs.map
|
|
232
|
+
//# sourceMappingURL=chunk-LFZO2LHV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/gateway-memory-client.ts"],"names":[],"mappings":";;;AAkDO,IAAM,sBAAN,MAA0B;AAAA,EACvB,OAAA;AAAA,EACA,MAAA;AAAA,EAER,WAAA,CAAY,SAAiB,MAAA,EAAgB;AAE3C,IAAA,IAAA,CAAK,OAAA,GAAU,QAAQ,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,GAAI,YAAA;AAClE,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA,EAEQ,WAAW,QAAA,EAA0B;AAC3C,IAAA,OAAO,CAAA,SAAA,EAAY,kBAAA,CAAmB,QAAQ,CAAC,CAAA,CAAA;AAAA,EACjD;AAAA,EAEA,MAAc,OAAA,CAAW,IAAA,EAAc,OAAA,GAAuB,EAAC,EAAe;AAC5E,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,IAAA,CAAK,OAAO,GAAG,IAAI,CAAA,CAAA;AAClC,IAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,IAAA,MAAM,UAAU,UAAA,CAAW,MAAM,UAAA,CAAW,KAAA,IAAS,GAAM,CAAA;AAC3D,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAC3B,GAAG,OAAA;AAAA,QACH,MAAA,EAAQ,OAAA,CAAQ,MAAA,IAAU,UAAA,CAAW,MAAA;AAAA,QACrC,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,kBAAA;AAAA,UAChB,aAAA,EAAe,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,UACpC,GAAK,OAAA,CAAQ,OAAA,IAAsC;AAAC;AACtD,OACD,CAAA;AAED,MAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,MAAK,CAAE,KAAA,CAAM,MAAM,EAAE,CAAA;AAC5C,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,IAAI,MAAM,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AAAA,MAC5D;AAEA,MAAA,OAAO,IAAI,IAAA,EAAK;AAAA,IAClB,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,OAAO,CAAA;AAAA,IACtB;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,YAAY,MAAA,EAIuC;AACvD,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,IAAI,OAAO,UAAA,EAAY,KAAA,CAAM,GAAA,CAAI,YAAA,EAAc,OAAO,UAAU,CAAA;AAChE,IAAA,IAAI,MAAA,CAAO,SAAS,IAAA,EAAM,KAAA,CAAM,IAAI,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACjE,IAAA,IAAI,MAAA,CAAO,UAAU,IAAA,EAAM,KAAA,CAAM,IAAI,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AACpE,IAAA,MAAM,EAAA,GAAK,MAAM,QAAA,EAAS;AAC1B,IAAA,OAAO,KAAK,OAAA,CAAQ,CAAA,QAAA,EAAW,KAAK,GAAA,GAAM,EAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EACrD;AAAA,EAEA,MAAM,UAAU,QAAA,EAA6D;AAC3E,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,IACrD,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,aAAa,KAAA,IAAS,CAAA,CAAE,QAAQ,QAAA,CAAS,KAAK,GAAG,OAAO,IAAA;AAC5D,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,MAAA,EAKoB;AACrC,IAAA,OAAO,IAAA,CAAK,QAAQ,UAAA,EAAY;AAAA,MAC9B,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM;AAAA,KAC5B,CAAA;AAAA,EACH;AAAA,EAEA,MAAM,YAAA,CACJ,QAAA,EACA,MAAA,EAC2C;AAC3C,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AAAA,QACnD,MAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM;AAAA,OAC5B,CAAA;AAAA,IACH,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,aAAa,KAAA,IAAS,CAAA,CAAE,QAAQ,QAAA,CAAS,KAAK,GAAG,OAAO,IAAA;AAC5D,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,aAAa,QAAA,EAA4C;AAC7D,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG,EAAE,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,IAC3E,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,CAAA,YAAa,KAAA,IAAS,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,EAAE,EAAA,EAAI,KAAA,EAAM;AACxE,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,YAAA,CACJ,QAAA,EACA,MAAA,EAC+D;AAC/D,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,IAAI,MAAA,CAAO,SAAS,IAAA,EAAM,KAAA,CAAM,IAAI,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACjE,IAAA,IAAI,MAAA,CAAO,UAAU,IAAA,EAAM,KAAA,CAAM,IAAI,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AACpE,IAAA,IAAI,OAAO,KAAA,EAAO,KAAA,CAAM,GAAA,CAAI,OAAA,EAAS,OAAO,KAAK,CAAA;AACjD,IAAA,MAAM,EAAA,GAAK,MAAM,QAAA,EAAS;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,SAAA,EAAY,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,IACxF,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,aAAa,KAAA,IAAS,CAAA,CAAE,QAAQ,QAAA,CAAS,KAAK,GAAG,OAAO,IAAA;AAC5D,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,eAAA,CAAgB,QAAA,EAAkB,UAAA,EAAyD;AAC/F,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,IAAI,UAAA,EAAY,KAAA,CAAM,GAAA,CAAI,YAAA,EAAc,UAAU,CAAA;AAClD,IAAA,MAAM,EAAA,GAAK,MAAM,QAAA,EAAS;AAC1B,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,aAAA,EAAgB,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,EACtF;AAAA,EAEA,MAAM,oBAAA,CAAqB,QAAA,EAAkB,UAAA,EAAkE;AAC7G,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,IAAI,UAAA,EAAY,KAAA,CAAM,GAAA,CAAI,YAAA,EAAc,UAAU,CAAA;AAClD,IAAA,MAAM,EAAA,GAAK,MAAM,QAAA,EAAS;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,oBAAA,EAAuB,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,IACnG,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,CAAA,YAAa,KAAA,IAAS,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAK;AAC3E,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,qBAAA,CACJ,QAAA,EACA,MAAA,EACyC;AACzC,IAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,EAAgB;AAClC,IAAA,IAAI,OAAO,UAAA,EAAY,KAAA,CAAM,GAAA,CAAI,YAAA,EAAc,OAAO,UAAU,CAAA;AAChE,IAAA,IAAI,MAAA,CAAO,SAAS,IAAA,EAAM,KAAA,CAAM,IAAI,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAA;AACjE,IAAA,IAAI,MAAA,CAAO,MAAM,KAAA,CAAM,GAAA,CAAI,QAAQ,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA;AAC5D,IAAA,IAAI,MAAA,CAAO,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,MAAA,CAAO,EAAA,CAAG,aAAa,CAAA;AACtD,IAAA,IAAI,MAAA,CAAO,UAAU,IAAA,EAAM,KAAA,CAAM,IAAI,QAAA,EAAU,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AACpE,IAAA,MAAM,EAAA,GAAK,MAAM,QAAA,EAAS;AAC1B,IAAA,IAAI;AACF,MAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAC,CAAA,qBAAA,EAAwB,EAAA,GAAK,GAAA,GAAM,EAAA,GAAK,EAAE,CAAA,CAAE,CAAA;AAAA,IACpG,SAAS,CAAA,EAAY;AACnB,MAAA,IAAI,CAAA,YAAa,KAAA,IAAS,CAAA,CAAE,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,EAAE,OAAA,EAAS,EAAC,EAAE;AAC1E,MAAA,MAAM,CAAA;AAAA,IACR;AAAA,EACF;AACF;AAOO,SAAS,cAAc,EAAA,EAAmB;AAC/C,EAAA,OAAO;AAAA,IACL,IAAI,EAAA,CAAG,EAAA;AAAA,IACP,YAAY,EAAA,CAAG,UAAA;AAAA,IACf,KAAA,EAAO,GAAG,KAAA,IAAS,EAAA;AAAA,IACnB,QAAA,EAAU,EAAA,CAAG,QAAA,IAAY,EAAC;AAAA,IAC1B,SAAA,EAAW,IAAI,IAAA,CAAK,EAAA,CAAG,SAAS,CAAA;AAAA,IAChC,SAAA,EAAW,IAAI,IAAA,CAAK,EAAA,CAAG,SAAS;AAAA,GAClC;AACF;AAKO,SAAS,eAAe,EAAA,EAAoB;AACjD,EAAA,OAAO;AAAA,IACL,IAAI,EAAA,CAAG,EAAA;AAAA,IACP,UAAU,EAAA,CAAG,QAAA;AAAA,IACb,MAAM,EAAA,CAAG,IAAA;AAAA,IACT,SAAS,EAAA,CAAG,OAAA;AAAA,IACZ,MAAM,EAAA,CAAG,IAAA;AAAA,IACT,SAAA,EAAW,IAAI,IAAA,CAAK,EAAA,CAAG,SAAS;AAAA,GAClC;AACF;AAKO,SAAS,gBAAgB,EAAA,EAAqB;AACnD,EAAA,OAAO;AAAA,IACL,IAAI,EAAA,CAAG,EAAA;AAAA,IACP,OAAO,EAAA,CAAG,KAAA;AAAA,IACV,UAAU,EAAA,CAAG,QAAA;AAAA,IACb,YAAY,EAAA,CAAG,UAAA;AAAA,IACf,SAAA,EAAW,IAAI,IAAA,CAAK,EAAA,CAAG,SAAS,CAAA;AAAA,IAChC,SAAA,EAAW,IAAI,IAAA,CAAK,EAAA,CAAG,SAAS,CAAA;AAAA,IAChC,gBAAgB,EAAA,CAAG,cAAA,GAAiB,IAAI,IAAA,CAAK,EAAA,CAAG,cAAc,CAAA,GAAI,MAAA;AAAA,IAClE,YAAY,EAAA,CAAG,UAAA;AAAA,IACf,iBAAiB,EAAA,CAAG,eAAA;AAAA,IACpB,kBAAA,EAAqB,GAAG,kBAAA,IAAsB,EAAA;AAAA,IAC9C,qBAAqB,EAAA,CAAG,mBAAA;AAAA,IACxB,uBAAuB,EAAA,CAAG,qBAAA;AAAA,IAC1B,sBAAsB,EAAA,CAAG,oBAAA;AAAA,IACzB,cAAc,EAAA,CAAG,YAAA;AAAA,IACjB,aAAa,EAAA,CAAG,WAAA;AAAA,IAChB,wBAAwB,EAAA,CAAG,sBAAA;AAAA,IAC3B,uBAAuB,EAAA,CAAG,qBAAA;AAAA,IAC1B,MAAA,EAAQ,EAAA,CAAG,MAAA,IAAU,EAAC;AAAA,IACtB,yBAAA,EAA2B,EAAA,CAAG,yBAAA,IAA6B,EAAC;AAAA,IAC5D,kBAAA,EAAoB,GAAG,kBAAA,IAAsB,MAAA;AAAA,IAC7C,wBAAA,EAA0B,GAAG,wBAAA,IAA4B,MAAA;AAAA,IACzD,6BAAA,EAA+B,GAAG,6BAAA,IAAiC;AAAA,GACrE;AACF;AAGA,IAAI,cAAA;AAKG,SAAS,gBAAA,GAA+C;AAC7D,EAAA,IAAI,cAAA,KAAmB,QAAW,OAAO,cAAA;AACzC,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,kBAAA,IAAsB,+BAAA;AAC9C,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,CAAI,sBAAA;AACxB,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,cAAA,GAAiB,IAAA;AACjB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,cAAA,GAAiB,IAAI,mBAAA,CAAoB,GAAA,EAAK,GAAG,CAAA;AACjD,EAAA,OAAO,cAAA;AACT;AAOO,SAAS,eAAe,KAAA,EAAqB;AAClD,EAAA,IAAI,CAAC,OAAO,OAAO,KAAA;AACnB,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,KAAA;AACjB,IAAA,IAAI,OAAO,SAAS,KAAA,KAAU,QAAA,IAAY,SAAS,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,EAAG;AAC9E,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,KAAA;AACT;AAUA,eAAsB,oBAAoB,KAAA,EAA8B;AACtE,EAAA,IAAI,CAAC,OAAO,OAAO,KAAA;AACnB,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,KAAA;AAGjB,IAAA,IAAI,OAAO,SAAS,KAAA,KAAU,QAAA,IAAY,SAAS,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,EAAG;AAC9E,MAAA,OAAO,IAAA;AAAA,IACT;AAKA,IAAA,IAAI,OAAO,KAAA,CAAM,MAAA,KAAW,UAAA,EAAY;AACtC,MAAA,MAAM,GAAA,GAAM,MAAM,OAAA,CAAQ,OAAA,CAAQ,MAAM,MAAA,CAAO,EAAE,CAAC,CAAA;AAClD,MAAA,IAAI,GAAA,EAAK;AAEP,QAAA,MAAM,MAAA,GAAS,GAAA;AACf,QAAA,IAAI,OAAO,MAAA,CAAO,QAAA,KAAa,UAAA,EAAY;AACzC,UAAA,MAAM,eAAA,GAAmB,OAAuC,QAAA,EAAS;AACzE,UAAA,MAAM,QAAA,GAAW,eAAA;AAEjB,UAAA,IAAI,QAAA,EAAU,MAAA,IAAU,OAAO,QAAA,CAAS,WAAW,QAAA,EAAU;AAC3D,YAAA,MAAM,QAAA,GAAY,SAAS,MAAA,CAAmC,QAAA;AAC9D,YAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,CAAS,UAAA,CAAW,SAAS,CAAA,EAAG;AAClE,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,KAAA;AACT","file":"chunk-LFZO2LHV.cjs","sourcesContent":["/**\n * HTTP client for the Mastra Memory Gateway REST API.\n * Used to proxy memory operations from the local Mastra server to the remote gateway\n * when agents use `mastra/` model strings.\n */\n\ninterface GatewayThread {\n id: string;\n projectId: string;\n resourceId: string;\n title: string | null;\n metadata: Record<string, unknown> | null;\n createdAt: string;\n updatedAt: string;\n}\n\ninterface GatewayMessage {\n id: string;\n threadId: string;\n role: string;\n content: unknown;\n type: string;\n createdAt: string;\n}\n\ninterface GatewayOMRecord {\n id: string;\n scope: string;\n threadId: string | null;\n resourceId: string;\n createdAt: string;\n updatedAt: string;\n lastObservedAt: string | null;\n originType: string;\n generationCount: number;\n activeObservations: unknown;\n totalTokensObserved: number;\n observationTokenCount: number;\n pendingMessageTokens: number;\n isReflecting: boolean;\n isObserving: boolean;\n isBufferingObservation: boolean;\n isBufferingReflection: boolean;\n config?: Record<string, unknown>;\n bufferedObservationChunks?: unknown[];\n bufferedReflection?: string | null;\n bufferedReflectionTokens?: number | null;\n bufferedReflectionInputTokens?: number | null;\n}\n\nexport class GatewayMemoryClient {\n private baseUrl: string;\n private apiKey: string;\n\n constructor(baseUrl: string, apiKey: string) {\n // Strip trailing slashes and /v1 suffix so both URL forms resolve correctly\n this.baseUrl = baseUrl.replace(/\\/+$/, '').replace(/\\/v1$/, '') + '/v1/memory';\n this.apiKey = apiKey;\n }\n\n private threadPath(threadId: string): string {\n return `/threads/${encodeURIComponent(threadId)}`;\n }\n\n private async request<T>(path: string, options: RequestInit = {}): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 10_000);\n try {\n const res = await fetch(url, {\n ...options,\n signal: options.signal ?? controller.signal,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.apiKey}`,\n ...((options.headers as Record<string, string>) || {}),\n },\n });\n\n if (!res.ok) {\n const body = await res.text().catch(() => '');\n throw new Error(`Gateway API error ${res.status}: ${body}`);\n }\n\n return res.json() as Promise<T>;\n } finally {\n clearTimeout(timeout);\n }\n }\n\n // ── Threads ──────────────────────────────────────────────────\n\n async listThreads(params: {\n resourceId?: string;\n limit?: number;\n offset?: number;\n }): Promise<{ threads: GatewayThread[]; total: number }> {\n const query = new URLSearchParams();\n if (params.resourceId) query.set('resourceId', params.resourceId);\n if (params.limit != null) query.set('limit', String(params.limit));\n if (params.offset != null) query.set('offset', String(params.offset));\n const qs = query.toString();\n return this.request(`/threads${qs ? '?' + qs : ''}`);\n }\n\n async getThread(threadId: string): Promise<{ thread: GatewayThread } | null> {\n try {\n return await this.request(this.threadPath(threadId));\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return null;\n throw e;\n }\n }\n\n async createThread(params: {\n id?: string;\n resourceId: string;\n title?: string;\n metadata?: Record<string, unknown>;\n }): Promise<{ thread: GatewayThread }> {\n return this.request('/threads', {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n async updateThread(\n threadId: string,\n params: { title?: string; metadata?: Record<string, unknown> },\n ): Promise<{ thread: GatewayThread } | null> {\n try {\n return await this.request(this.threadPath(threadId), {\n method: 'PATCH',\n body: JSON.stringify(params),\n });\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return null;\n throw e;\n }\n }\n\n async deleteThread(threadId: string): Promise<{ ok: boolean }> {\n try {\n return await this.request(this.threadPath(threadId), { method: 'DELETE' });\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return { ok: false };\n throw e;\n }\n }\n\n // ── Messages ─────────────────────────────────────────────────\n\n async listMessages(\n threadId: string,\n params: { limit?: number; offset?: number; order?: string },\n ): Promise<{ messages: GatewayMessage[]; total: number } | null> {\n const query = new URLSearchParams();\n if (params.limit != null) query.set('limit', String(params.limit));\n if (params.offset != null) query.set('offset', String(params.offset));\n if (params.order) query.set('order', params.order);\n const qs = query.toString();\n try {\n return await this.request(`${this.threadPath(threadId)}/messages${qs ? '?' + qs : ''}`);\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return null;\n throw e;\n }\n }\n\n // ── Observational Memory ─────────────────────────────────────\n\n async getObservations(threadId: string, resourceId?: string): Promise<{ observations: unknown }> {\n const query = new URLSearchParams();\n if (resourceId) query.set('resourceId', resourceId);\n const qs = query.toString();\n return this.request(`${this.threadPath(threadId)}/observations${qs ? '?' + qs : ''}`);\n }\n\n async getObservationRecord(threadId: string, resourceId?: string): Promise<{ record: GatewayOMRecord | null }> {\n const query = new URLSearchParams();\n if (resourceId) query.set('resourceId', resourceId);\n const qs = query.toString();\n try {\n return await this.request(`${this.threadPath(threadId)}/observations/record${qs ? '?' + qs : ''}`);\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return { record: null };\n throw e;\n }\n }\n\n async getObservationHistory(\n threadId: string,\n params: { resourceId?: string; limit?: number; from?: Date; to?: Date; offset?: number },\n ): Promise<{ records: GatewayOMRecord[] }> {\n const query = new URLSearchParams();\n if (params.resourceId) query.set('resourceId', params.resourceId);\n if (params.limit != null) query.set('limit', String(params.limit));\n if (params.from) query.set('from', params.from.toISOString());\n if (params.to) query.set('to', params.to.toISOString());\n if (params.offset != null) query.set('offset', String(params.offset));\n const qs = query.toString();\n try {\n return await this.request(`${this.threadPath(threadId)}/observations/history${qs ? '?' + qs : ''}`);\n } catch (e: unknown) {\n if (e instanceof Error && e.message.includes('404')) return { records: [] };\n throw e;\n }\n }\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\n/**\n * Convert a gateway thread to the local server thread format.\n */\nexport function toLocalThread(gt: GatewayThread) {\n return {\n id: gt.id,\n resourceId: gt.resourceId,\n title: gt.title ?? '',\n metadata: gt.metadata ?? {},\n createdAt: new Date(gt.createdAt),\n updatedAt: new Date(gt.updatedAt),\n };\n}\n\n/**\n * Convert a gateway message to the local server message format.\n */\nexport function toLocalMessage(gm: GatewayMessage) {\n return {\n id: gm.id,\n threadId: gm.threadId,\n role: gm.role,\n content: gm.content,\n type: gm.type,\n createdAt: new Date(gm.createdAt),\n };\n}\n\n/**\n * Convert a gateway OM record to the local server OM record format.\n */\nexport function toLocalOMRecord(gr: GatewayOMRecord) {\n return {\n id: gr.id,\n scope: gr.scope as 'thread' | 'resource',\n threadId: gr.threadId,\n resourceId: gr.resourceId,\n createdAt: new Date(gr.createdAt),\n updatedAt: new Date(gr.updatedAt),\n lastObservedAt: gr.lastObservedAt ? new Date(gr.lastObservedAt) : undefined,\n originType: gr.originType as 'initial' | 'reflection' | 'observation',\n generationCount: gr.generationCount,\n activeObservations: (gr.activeObservations ?? '') as string,\n totalTokensObserved: gr.totalTokensObserved,\n observationTokenCount: gr.observationTokenCount,\n pendingMessageTokens: gr.pendingMessageTokens,\n isReflecting: gr.isReflecting,\n isObserving: gr.isObserving,\n isBufferingObservation: gr.isBufferingObservation,\n isBufferingReflection: gr.isBufferingReflection,\n config: gr.config ?? {},\n bufferedObservationChunks: gr.bufferedObservationChunks ?? [],\n bufferedReflection: gr.bufferedReflection ?? undefined,\n bufferedReflectionTokens: gr.bufferedReflectionTokens ?? undefined,\n bufferedReflectionInputTokens: gr.bufferedReflectionInputTokens ?? undefined,\n };\n}\n\n// Singleton-ish lazy instance\nlet _gatewayClient: GatewayMemoryClient | null | undefined;\n\n/**\n * Get a GatewayMemoryClient instance, or null if gateway is not configured.\n */\nexport function getGatewayClient(): GatewayMemoryClient | null {\n if (_gatewayClient !== undefined) return _gatewayClient;\n const url = process.env.MASTRA_GATEWAY_URL || 'https://gateway-api.mastra.ai';\n const key = process.env.MASTRA_GATEWAY_API_KEY;\n if (!key) {\n _gatewayClient = null;\n return null;\n }\n _gatewayClient = new GatewayMemoryClient(url, key);\n return _gatewayClient;\n}\n\n/**\n * Check if an agent uses a gateway model (mastra/ prefix).\n * Sync version — can only check agent.model string directly.\n */\n\nexport function isGatewayAgent(agent: any): boolean {\n if (!agent) return false;\n try {\n const agentAny = agent as Record<string, unknown>;\n if (typeof agentAny.model === 'string' && agentAny.model.startsWith('mastra/')) {\n return true;\n }\n } catch {\n // Ignore errors during detection\n }\n return false;\n}\n\n/**\n * Async version of isGatewayAgent that can await getLLM().\n * Checks multiple paths to detect if an agent uses a mastra/ gateway model:\n * 1. agent.model as raw string (most reliable for directly configured agents)\n * 2. Resolved LLM's underlying ModelRouterLanguageModel config.routerId\n * 3. Resolved LLM's getModel() to access the router's config\n */\n\nexport async function isGatewayAgentAsync(agent: any): Promise<boolean> {\n if (!agent) return false;\n try {\n const agentAny = agent as Record<string, unknown>;\n\n // Check 1: agent.model is a raw string like 'mastra/openai/gpt-5-mini'\n if (typeof agentAny.model === 'string' && agentAny.model.startsWith('mastra/')) {\n return true;\n }\n\n // Check 2: Resolve the LLM and check the router's config.routerId\n // llm.getModelId() returns stripped ID (e.g., 'gpt-5-mini'), so we need\n // to access the underlying ModelRouterLanguageModel's config.routerId\n if (typeof agent.getLLM === 'function') {\n const llm = await Promise.resolve(agent.getLLM({}));\n if (llm) {\n // Try to access the underlying model's routerId via getModel()\n const llmAny = llm as Record<string, unknown>;\n if (typeof llmAny.getModel === 'function') {\n const underlyingModel = (llmAny as { getModel: () => unknown }).getModel();\n const modelAny = underlyingModel as Record<string, unknown>;\n // ModelRouterLanguageModel stores routerId in private config\n if (modelAny?.config && typeof modelAny.config === 'object') {\n const routerId = (modelAny.config as Record<string, unknown>).routerId;\n if (typeof routerId === 'string' && routerId.startsWith('mastra/')) {\n return true;\n }\n }\n }\n }\n }\n } catch {\n // Detection failed — not a gateway agent\n }\n return false;\n}\n"]}
|
|
@@ -1956,7 +1956,7 @@ var ObservationStrategy = class _ObservationStrategy {
|
|
|
1956
1956
|
static create;
|
|
1957
1957
|
/**
|
|
1958
1958
|
* Run the full observation lifecycle.
|
|
1959
|
-
* @returns `
|
|
1959
|
+
* @returns Result with `observed` flag and optional `usage` from the observer LLM call.
|
|
1960
1960
|
* @throws On sync/resource-scoped observer failure after failed markers (same as pre–Option-A contract).
|
|
1961
1961
|
*/
|
|
1962
1962
|
async run() {
|
|
@@ -1966,7 +1966,7 @@ var ObservationStrategy = class _ObservationStrategy {
|
|
|
1966
1966
|
if (this.needsLock) {
|
|
1967
1967
|
const fresh = await this.storage.getObservationalMemory(record.threadId, record.resourceId);
|
|
1968
1968
|
if (fresh?.lastObservedAt && record.lastObservedAt && fresh.lastObservedAt > record.lastObservedAt) {
|
|
1969
|
-
return false;
|
|
1969
|
+
return { observed: false };
|
|
1970
1970
|
}
|
|
1971
1971
|
}
|
|
1972
1972
|
const { messages, existingObservations } = await this.prepare();
|
|
@@ -1987,7 +1987,7 @@ var ObservationStrategy = class _ObservationStrategy {
|
|
|
1987
1987
|
observabilityContext: this.opts.observabilityContext
|
|
1988
1988
|
});
|
|
1989
1989
|
}
|
|
1990
|
-
return true;
|
|
1990
|
+
return { observed: true, usage: output.usage };
|
|
1991
1991
|
} catch (error) {
|
|
1992
1992
|
await this.emitFailedMarkers(cycleId, error);
|
|
1993
1993
|
if (!this.rethrowOnFailure) {
|
|
@@ -2006,7 +2006,7 @@ var ObservationStrategy = class _ObservationStrategy {
|
|
|
2006
2006
|
});
|
|
2007
2007
|
if (abortSignal?.aborted) throw error;
|
|
2008
2008
|
omError("[OM] Observation failed", error);
|
|
2009
|
-
return false;
|
|
2009
|
+
return { observed: false };
|
|
2010
2010
|
}
|
|
2011
2011
|
omError("[OM] Observation failed", error);
|
|
2012
2012
|
throw error;
|
|
@@ -5190,7 +5190,7 @@ var ReflectorRunner = class {
|
|
|
5190
5190
|
/**
|
|
5191
5191
|
* Start an async buffered reflection in the background.
|
|
5192
5192
|
*/
|
|
5193
|
-
startAsyncBufferedReflection(record, observationTokens, lockKey, writer, requestContext, observabilityContext) {
|
|
5193
|
+
startAsyncBufferedReflection(record, observationTokens, lockKey, writer, requestContext, observabilityContext, reflectionHooks) {
|
|
5194
5194
|
const bufferKey = this.buffering.getReflectionBufferKey(lockKey);
|
|
5195
5195
|
if (this.buffering.isAsyncBufferingInProgress(bufferKey)) {
|
|
5196
5196
|
return;
|
|
@@ -5200,7 +5200,10 @@ var ReflectorRunner = class {
|
|
|
5200
5200
|
this.storage.setBufferingReflectionFlag(record.id, true).catch((err) => {
|
|
5201
5201
|
omError("[OM] Failed to set buffering reflection flag", err);
|
|
5202
5202
|
});
|
|
5203
|
-
|
|
5203
|
+
reflectionHooks?.onReflectionStart?.();
|
|
5204
|
+
const asyncOp = this.doAsyncBufferedReflection(record, bufferKey, writer, requestContext, observabilityContext).then((usage) => {
|
|
5205
|
+
reflectionHooks?.onReflectionEnd?.({ usage });
|
|
5206
|
+
}).catch(async (error) => {
|
|
5204
5207
|
if (writer) {
|
|
5205
5208
|
const failedMarker = createBufferingFailedMarker({
|
|
5206
5209
|
cycleId: `reflect-buf-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`,
|
|
@@ -5216,6 +5219,10 @@ var ReflectorRunner = class {
|
|
|
5216
5219
|
await this.persistMarkerToStorage(failedMarker, record.threadId ?? "", record.resourceId ?? void 0);
|
|
5217
5220
|
}
|
|
5218
5221
|
omError("[OM] Async buffered reflection failed", error);
|
|
5222
|
+
reflectionHooks?.onReflectionEnd?.({
|
|
5223
|
+
usage: void 0,
|
|
5224
|
+
error: error instanceof Error ? error : new Error(String(error))
|
|
5225
|
+
});
|
|
5219
5226
|
BufferingCoordinator.lastBufferedBoundary.delete(bufferKey);
|
|
5220
5227
|
}).finally(() => {
|
|
5221
5228
|
BufferingCoordinator.asyncBufferingOps.delete(bufferKey);
|
|
@@ -5309,6 +5316,7 @@ var ReflectorRunner = class {
|
|
|
5309
5316
|
});
|
|
5310
5317
|
await this.persistMarkerToStorage(endMarker, currentRecord.threadId ?? "", currentRecord.resourceId ?? void 0);
|
|
5311
5318
|
}
|
|
5319
|
+
return reflectResult.usage;
|
|
5312
5320
|
}
|
|
5313
5321
|
/**
|
|
5314
5322
|
* Try to activate buffered reflection when threshold is reached.
|
|
@@ -5429,7 +5437,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
|
|
|
5429
5437
|
lockKey,
|
|
5430
5438
|
writer,
|
|
5431
5439
|
requestContext,
|
|
5432
|
-
observabilityContext
|
|
5440
|
+
observabilityContext,
|
|
5441
|
+
reflectionHooks
|
|
5433
5442
|
);
|
|
5434
5443
|
}
|
|
5435
5444
|
}
|
|
@@ -5463,7 +5472,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
|
|
|
5463
5472
|
lockKey,
|
|
5464
5473
|
writer,
|
|
5465
5474
|
requestContext,
|
|
5466
|
-
observabilityContext
|
|
5475
|
+
observabilityContext,
|
|
5476
|
+
reflectionHooks
|
|
5467
5477
|
);
|
|
5468
5478
|
return;
|
|
5469
5479
|
}
|
|
@@ -5502,6 +5512,8 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
|
|
|
5502
5512
|
recordId: record.id,
|
|
5503
5513
|
threadId
|
|
5504
5514
|
} : void 0;
|
|
5515
|
+
let reflectionUsage;
|
|
5516
|
+
let reflectionError;
|
|
5505
5517
|
try {
|
|
5506
5518
|
const compressionStartLevel = await this.getCompressionStartLevel(requestContext);
|
|
5507
5519
|
const reflectResult = await this.call(
|
|
@@ -5515,6 +5527,7 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
|
|
|
5515
5527
|
requestContext,
|
|
5516
5528
|
observabilityContext
|
|
5517
5529
|
);
|
|
5530
|
+
reflectionUsage = reflectResult.usage;
|
|
5518
5531
|
const reflectionTokenCount = this.tokenCounter.countObservations(reflectResult.observations);
|
|
5519
5532
|
await this.storage.createReflectionGeneration({
|
|
5520
5533
|
currentRecord: record,
|
|
@@ -5559,13 +5572,14 @@ ${unreflectedContent}` : freshRecord.bufferedReflection;
|
|
|
5559
5572
|
await writer.custom(failedMarker).catch(() => {
|
|
5560
5573
|
});
|
|
5561
5574
|
}
|
|
5575
|
+
reflectionError = error instanceof Error ? error : new Error(String(error));
|
|
5562
5576
|
if (abortSignal?.aborted) {
|
|
5563
5577
|
throw error;
|
|
5564
5578
|
}
|
|
5565
5579
|
omError("[OM] Reflection failed", error);
|
|
5566
5580
|
} finally {
|
|
5567
5581
|
await this.storage.setReflectingFlag(record.id, false);
|
|
5568
|
-
reflectionHooks?.onReflectionEnd?.();
|
|
5582
|
+
reflectionHooks?.onReflectionEnd?.({ usage: reflectionUsage, error: reflectionError });
|
|
5569
5583
|
unregisterOp(record.id, "reflecting");
|
|
5570
5584
|
}
|
|
5571
5585
|
}
|
|
@@ -8908,6 +8922,7 @@ ${grouped}` : grouped;
|
|
|
8908
8922
|
const lockKey = this.buffering.getLockKey(threadId, resourceId);
|
|
8909
8923
|
const reflectionHooks = hooks ? { onReflectionStart: hooks.onReflectionStart, onReflectionEnd: hooks.onReflectionEnd } : void 0;
|
|
8910
8924
|
let observed = false;
|
|
8925
|
+
let observationUsage;
|
|
8911
8926
|
let generationBefore = -1;
|
|
8912
8927
|
await this.withLock(lockKey, async () => {
|
|
8913
8928
|
const freshRecord = await this.getOrCreateRecord(threadId, resourceId);
|
|
@@ -8924,8 +8939,9 @@ ${grouped}` : grouped;
|
|
|
8924
8939
|
return;
|
|
8925
8940
|
}
|
|
8926
8941
|
hooks?.onObservationStart?.();
|
|
8942
|
+
let observationError;
|
|
8927
8943
|
try {
|
|
8928
|
-
|
|
8944
|
+
const result = await ObservationStrategy.create(this, {
|
|
8929
8945
|
record: freshRecord,
|
|
8930
8946
|
threadId,
|
|
8931
8947
|
resourceId,
|
|
@@ -8935,8 +8951,13 @@ ${grouped}` : grouped;
|
|
|
8935
8951
|
writer: opts.writer,
|
|
8936
8952
|
observabilityContext: opts.observabilityContext
|
|
8937
8953
|
}).run();
|
|
8954
|
+
observed = result.observed;
|
|
8955
|
+
observationUsage = result.usage;
|
|
8956
|
+
} catch (error) {
|
|
8957
|
+
observationError = error instanceof Error ? error : new Error(String(error));
|
|
8958
|
+
throw error;
|
|
8938
8959
|
} finally {
|
|
8939
|
-
hooks?.onObservationEnd?.();
|
|
8960
|
+
hooks?.onObservationEnd?.({ usage: observationUsage, error: observationError });
|
|
8940
8961
|
}
|
|
8941
8962
|
});
|
|
8942
8963
|
const record = await this.getOrCreateRecord(threadId, resourceId);
|
|
@@ -8957,7 +8978,7 @@ ${grouped}` : grouped;
|
|
|
8957
8978
|
async reflect(threadId, resourceId, prompt, requestContext, observabilityContext) {
|
|
8958
8979
|
const record = await this.getOrCreateRecord(threadId, resourceId);
|
|
8959
8980
|
if (!record.activeObservations) {
|
|
8960
|
-
return { reflected: false, record };
|
|
8981
|
+
return { reflected: false, record, usage: void 0 };
|
|
8961
8982
|
}
|
|
8962
8983
|
await this.storage.setReflectingFlag(record.id, true);
|
|
8963
8984
|
registerOp(record.id, "reflecting");
|
|
@@ -8982,11 +9003,11 @@ ${grouped}` : grouped;
|
|
|
8982
9003
|
tokenCount: reflectionTokenCount
|
|
8983
9004
|
});
|
|
8984
9005
|
const updatedRecord = await this.getOrCreateRecord(threadId, resourceId);
|
|
8985
|
-
return { reflected: true, record: updatedRecord };
|
|
9006
|
+
return { reflected: true, record: updatedRecord, usage: reflectResult.usage };
|
|
8986
9007
|
} catch (error) {
|
|
8987
9008
|
omError("[OM] reflect() failed", error);
|
|
8988
9009
|
const latestRecord = await this.getOrCreateRecord(threadId, resourceId);
|
|
8989
|
-
return { reflected: false, record: latestRecord };
|
|
9010
|
+
return { reflected: false, record: latestRecord, usage: void 0 };
|
|
8990
9011
|
} finally {
|
|
8991
9012
|
await this.storage.setReflectingFlag(record.id, false);
|
|
8992
9013
|
unregisterOp(record.id, "reflecting");
|
|
@@ -9010,9 +9031,9 @@ ${grouped}` : grouped;
|
|
|
9010
9031
|
/**
|
|
9011
9032
|
* Get observation history (previous generations)
|
|
9012
9033
|
*/
|
|
9013
|
-
async getHistory(threadId, resourceId, limit) {
|
|
9034
|
+
async getHistory(threadId, resourceId, limit, options) {
|
|
9014
9035
|
const ids = this.getStorageIds(threadId, resourceId);
|
|
9015
|
-
return this.storage.getObservationalMemoryHistory(ids.threadId, ids.resourceId, limit);
|
|
9036
|
+
return this.storage.getObservationalMemoryHistory(ids.threadId, ids.resourceId, limit, options);
|
|
9016
9037
|
}
|
|
9017
9038
|
/**
|
|
9018
9039
|
* Clear all memory for a specific thread/resource
|
|
@@ -9581,5 +9602,5 @@ exports.stripEphemeralAnchorIds = stripEphemeralAnchorIds;
|
|
|
9581
9602
|
exports.stripObservationGroups = stripObservationGroups;
|
|
9582
9603
|
exports.truncateStringByTokens = truncateStringByTokens;
|
|
9583
9604
|
exports.wrapInObservationGroup = wrapInObservationGroup;
|
|
9584
|
-
//# sourceMappingURL=chunk-
|
|
9585
|
-
//# sourceMappingURL=chunk-
|
|
9605
|
+
//# sourceMappingURL=chunk-PNCR2M6Y.cjs.map
|
|
9606
|
+
//# sourceMappingURL=chunk-PNCR2M6Y.cjs.map
|