'use strict'; // src/server/handlers/gateway-memory-client.ts var GatewayMemoryClient = class { baseUrl; apiKey; constructor(baseUrl, apiKey) { this.baseUrl = baseUrl.replace(/\/+$/, "").replace(/\/v1$/, "") + "/v1/memory"; this.apiKey = apiKey; } threadPath(threadId) { return `/threads/${encodeURIComponent(threadId)}`; } async request(path, options = {}) { const url = `${this.baseUrl}${path}`; const controller = new AbortController(); const timeout = setTimeout(() => controller.abort(), 1e4); try { const res = await fetch(url, { ...options, signal: options.signal ?? controller.signal, headers: { "Content-Type": "application/json", Authorization: `Bearer ${this.apiKey}`, ...options.headers || {} } }); if (!res.ok) { const body = await res.text().catch(() => ""); throw new Error(`Gateway API error ${res.status}: ${body}`); } return res.json(); } finally { clearTimeout(timeout); } } // ── Threads ────────────────────────────────────────────────── async listThreads(params) { const query = new URLSearchParams(); if (params.resourceId) query.set("resourceId", params.resourceId); if (params.limit != null) query.set("limit", String(params.limit)); if (params.offset != null) query.set("offset", String(params.offset)); const qs = query.toString(); return this.request(`/threads${qs ? "?" + qs : ""}`); } async getThread(threadId) { try { return await this.request(this.threadPath(threadId)); } catch (e) { if (e instanceof Error && e.message.includes("404")) return null; throw e; } } async createThread(params) { return this.request("/threads", { method: "POST", body: JSON.stringify(params) }); } async updateThread(threadId, params) { try { return await this.request(this.threadPath(threadId), { method: "PATCH", body: JSON.stringify(params) }); } catch (e) { if (e instanceof Error && e.message.includes("404")) return null; throw e; } } async deleteThread(threadId) { try { return await this.request(this.threadPath(threadId), { method: "DELETE" }); } catch (e) { if (e instanceof Error && e.message.includes("404")) return { ok: false }; throw e; } } // ── Messages ───────────────────────────────────────────────── async listMessages(threadId, params) { const query = new URLSearchParams(); if (params.limit != null) query.set("limit", String(params.limit)); if (params.offset != null) query.set("offset", String(params.offset)); if (params.order) query.set("order", params.order); const qs = query.toString(); try { return await this.request(`${this.threadPath(threadId)}/messages${qs ? "?" + qs : ""}`); } catch (e) { if (e instanceof Error && e.message.includes("404")) return null; throw e; } } // ── Observational Memory ───────────────────────────────────── async getObservations(threadId, resourceId) { const query = new URLSearchParams(); if (resourceId) query.set("resourceId", resourceId); const qs = query.toString(); return this.request(`${this.threadPath(threadId)}/observations${qs ? "?" + qs : ""}`); } async getObservationRecord(threadId, resourceId) { const query = new URLSearchParams(); if (resourceId) query.set("resourceId", resourceId); const qs = query.toString(); try { return await this.request(`${this.threadPath(threadId)}/observations/record${qs ? "?" + qs : ""}`); } catch (e) { if (e instanceof Error && e.message.includes("404")) return { record: null }; throw e; } } async getObservationHistory(threadId, params) { const query = new URLSearchParams(); if (params.resourceId) query.set("resourceId", params.resourceId); if (params.limit != null) query.set("limit", String(params.limit)); if (params.from) query.set("from", params.from.toISOString()); if (params.to) query.set("to", params.to.toISOString()); if (params.offset != null) query.set("offset", String(params.offset)); const qs = query.toString(); try { return await this.request(`${this.threadPath(threadId)}/observations/history${qs ? "?" + qs : ""}`); } catch (e) { if (e instanceof Error && e.message.includes("404")) return { records: [] }; throw e; } } }; function toLocalThread(gt) { return { id: gt.id, resourceId: gt.resourceId, title: gt.title ?? "", metadata: gt.metadata ?? {}, createdAt: new Date(gt.createdAt), updatedAt: new Date(gt.updatedAt) }; } function toLocalMessage(gm) { return { id: gm.id, threadId: gm.threadId, role: gm.role, content: gm.content, type: gm.type, createdAt: new Date(gm.createdAt) }; } function toLocalOMRecord(gr) { return { id: gr.id, scope: gr.scope, threadId: gr.threadId, resourceId: gr.resourceId, createdAt: new Date(gr.createdAt), updatedAt: new Date(gr.updatedAt), lastObservedAt: gr.lastObservedAt ? new Date(gr.lastObservedAt) : void 0, originType: gr.originType, generationCount: gr.generationCount, activeObservations: gr.activeObservations ?? "", totalTokensObserved: gr.totalTokensObserved, observationTokenCount: gr.observationTokenCount, pendingMessageTokens: gr.pendingMessageTokens, isReflecting: gr.isReflecting, isObserving: gr.isObserving, isBufferingObservation: gr.isBufferingObservation, isBufferingReflection: gr.isBufferingReflection, config: gr.config ?? {}, bufferedObservationChunks: gr.bufferedObservationChunks ?? [], bufferedReflection: gr.bufferedReflection ?? void 0, bufferedReflectionTokens: gr.bufferedReflectionTokens ?? void 0, bufferedReflectionInputTokens: gr.bufferedReflectionInputTokens ?? void 0 }; } var _gatewayClient; function getGatewayClient() { if (_gatewayClient !== void 0) return _gatewayClient; const url = process.env.MASTRA_GATEWAY_URL || "https://gateway-api.mastra.ai"; const key = process.env.MASTRA_GATEWAY_API_KEY; if (!key) { _gatewayClient = null; return null; } _gatewayClient = new GatewayMemoryClient(url, key); return _gatewayClient; } function isGatewayAgent(agent) { if (!agent) return false; try { const agentAny = agent; if (typeof agentAny.model === "string" && agentAny.model.startsWith("mastra/")) { return true; } } catch { } return false; } async function isGatewayAgentAsync(agent) { if (!agent) return false; try { const agentAny = agent; if (typeof agentAny.model === "string" && agentAny.model.startsWith("mastra/")) { return true; } if (typeof agent.getLLM === "function") { const llm = await Promise.resolve(agent.getLLM({})); if (llm) { const llmAny = llm; if (typeof llmAny.getModel === "function") { const underlyingModel = llmAny.getModel(); const modelAny = underlyingModel; if (modelAny?.config && typeof modelAny.config === "object") { const routerId = modelAny.config.routerId; if (typeof routerId === "string" && routerId.startsWith("mastra/")) { return true; } } } } } } catch { } return false; } exports.GatewayMemoryClient = GatewayMemoryClient; exports.getGatewayClient = getGatewayClient; exports.isGatewayAgent = isGatewayAgent; exports.isGatewayAgentAsync = isGatewayAgentAsync; exports.toLocalMessage = toLocalMessage; exports.toLocalOMRecord = toLocalOMRecord; exports.toLocalThread = toLocalThread; //# sourceMappingURL=chunk-LFZO2LHV.cjs.map //# sourceMappingURL=chunk-LFZO2LHV.cjs.map