@mastra/server 1.18.1-alpha.0 → 1.19.0
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 +25 -0
- package/dist/{chunk-U5XW3WOS.js → chunk-5CDCKTHB.js} +38 -20
- package/dist/chunk-5CDCKTHB.js.map +1 -0
- package/dist/{chunk-POOOTRUM.cjs → chunk-DAEHQAZC.cjs} +38 -20
- package/dist/chunk-DAEHQAZC.cjs.map +1 -0
- package/dist/{chunk-FTGC7KXM.js → chunk-TV5D5RRD.js} +132 -17
- package/dist/chunk-TV5D5RRD.js.map +1 -0
- package/dist/{chunk-MS7GNCN3.cjs → chunk-YSCEBPUJ.cjs} +145 -30
- package/dist/chunk-YSCEBPUJ.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-server-custom-adapters.md +3 -1
- package/dist/{observational-memory-SASGM6OW-3S6D4TAF.js → observational-memory-B25SASRW-L4GYD2ZN.js} +3 -3
- package/dist/{observational-memory-SASGM6OW-3S6D4TAF.js.map → observational-memory-B25SASRW-L4GYD2ZN.js.map} +1 -1
- package/dist/{observational-memory-SASGM6OW-2G3RBRTW.cjs → observational-memory-B25SASRW-T76NSRNU.cjs} +26 -26
- package/dist/{observational-memory-SASGM6OW-2G3RBRTW.cjs.map → observational-memory-B25SASRW-T76NSRNU.cjs.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.cjs +2 -2
- package/dist/server/handlers.js +1 -1
- package/dist/server/server-adapter/index.cjs +24 -16
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +10 -2
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +881 -119
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/chunk-FTGC7KXM.js.map +0 -1
- package/dist/chunk-MS7GNCN3.cjs.map +0 -1
- package/dist/chunk-POOOTRUM.cjs.map +0 -1
- package/dist/chunk-U5XW3WOS.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { openai } from './chunk-PALNMAC6.js';
|
|
2
2
|
import { __commonJS as __commonJS$3, require_token_error as require_token_error$2, __toESM as __toESM$3 } from './chunk-JWVHBH4H.js';
|
|
3
|
+
import { actionIdPathParams, actionRunPathParams, streamAgentBuilderBodySchema, startAsyncAgentBuilderBodySchema, resumeAgentBuilderBodySchema, streamLegacyAgentBuilderBodySchema } from './chunk-S7PYDU5I.js';
|
|
3
4
|
import { __commonJS as __commonJS$1, require_token_error, __toESM } from './chunk-BZZVTO7B.js';
|
|
4
5
|
import { __commonJS as __commonJS$2, require_token_error as require_token_error$1, __toESM as __toESM$1 } from './chunk-PWAXLHKP.js';
|
|
5
|
-
import { e, truncateStringByTokens, estimateTokenCount, resolveToolResultValue, formatToolResultForObserver } from './chunk-
|
|
6
|
+
import { e, truncateStringByTokens, estimateTokenCount, resolveToolResultValue, formatToolResultForObserver } from './chunk-5CDCKTHB.js';
|
|
6
7
|
import { LIST_WORKFLOWS_ROUTE, GET_WORKFLOW_BY_ID_ROUTE, LIST_WORKFLOW_RUNS_ROUTE, GET_WORKFLOW_RUN_BY_ID_ROUTE, CREATE_WORKFLOW_RUN_ROUTE, STREAM_WORKFLOW_ROUTE, START_ASYNC_WORKFLOW_ROUTE, START_WORKFLOW_RUN_ROUTE, OBSERVE_STREAM_WORKFLOW_ROUTE, RESUME_ASYNC_WORKFLOW_ROUTE, RESUME_WORKFLOW_ROUTE, RESUME_STREAM_WORKFLOW_ROUTE, CANCEL_WORKFLOW_RUN_ROUTE, STREAM_LEGACY_WORKFLOW_ROUTE, OBSERVE_STREAM_LEGACY_WORKFLOW_ROUTE } from './chunk-G2ZZKKQI.js';
|
|
7
|
-
import { actionIdPathParams, actionRunPathParams, streamAgentBuilderBodySchema, startAsyncAgentBuilderBodySchema, resumeAgentBuilderBodySchema, streamLegacyAgentBuilderBodySchema } from './chunk-S7PYDU5I.js';
|
|
8
8
|
import { listWorkflowsResponseSchema, workflowInfoSchema, workflowRunsResponseSchema, listWorkflowRunsQuerySchema, workflowRunResultSchema, workflowRunResultQuerySchema, createWorkflowRunResponseSchema, workflowExecutionResultSchema, workflowControlResponseSchema } from './chunk-7X4P2I6L.js';
|
|
9
9
|
import { streamResponseSchema } from './chunk-V7EVEI4C.js';
|
|
10
10
|
import { WorkflowRegistry } from './chunk-RGI5IQDO.js';
|
|
@@ -16157,18 +16157,54 @@ async function resolveCursorMessage(memory, cursor, access) {
|
|
|
16157
16157
|
}
|
|
16158
16158
|
const memoryStore = await memory.getMemoryStore();
|
|
16159
16159
|
const result = await memoryStore.listMessagesById({ messageIds: [normalized] });
|
|
16160
|
-
|
|
16160
|
+
let message = result.messages.find((message2) => message2.id === normalized) ?? null;
|
|
16161
|
+
if (!message) {
|
|
16162
|
+
message = await resolveCursorMessageByRecall(memory, normalized, access);
|
|
16163
|
+
}
|
|
16161
16164
|
if (!message) {
|
|
16162
16165
|
throw new Error(`Could not resolve cursor message: ${cursor}`);
|
|
16163
16166
|
}
|
|
16164
16167
|
if (access?.resourceId && message.resourceId !== access.resourceId) {
|
|
16165
16168
|
throw new Error(`Could not resolve cursor message: ${cursor}`);
|
|
16166
16169
|
}
|
|
16167
|
-
if (access?.threadScope && message.threadId !== access.threadScope) {
|
|
16170
|
+
if (access?.enforceThreadScope && access.threadScope && message.threadId !== access.threadScope) {
|
|
16168
16171
|
throw new Error(`Could not resolve cursor message: ${cursor}`);
|
|
16169
16172
|
}
|
|
16170
16173
|
return message;
|
|
16171
16174
|
}
|
|
16175
|
+
async function resolveCursorMessageByRecall(memory, cursor, access) {
|
|
16176
|
+
if (access?.enforceThreadScope && access.threadScope) {
|
|
16177
|
+
const result = await memory.recall({
|
|
16178
|
+
threadId: access.threadScope,
|
|
16179
|
+
resourceId: access.resourceId,
|
|
16180
|
+
page: 0,
|
|
16181
|
+
perPage: false
|
|
16182
|
+
});
|
|
16183
|
+
return result.messages.find((message) => message.id === cursor) ?? null;
|
|
16184
|
+
}
|
|
16185
|
+
if (!access?.resourceId) {
|
|
16186
|
+
return null;
|
|
16187
|
+
}
|
|
16188
|
+
const threads = await memory.listThreads({
|
|
16189
|
+
page: 0,
|
|
16190
|
+
perPage: 100,
|
|
16191
|
+
orderBy: { field: "updatedAt", direction: "DESC" },
|
|
16192
|
+
filter: { resourceId: access.resourceId }
|
|
16193
|
+
});
|
|
16194
|
+
for (const thread of threads.threads) {
|
|
16195
|
+
const result = await memory.recall({
|
|
16196
|
+
threadId: thread.id,
|
|
16197
|
+
resourceId: access.resourceId,
|
|
16198
|
+
page: 0,
|
|
16199
|
+
perPage: false
|
|
16200
|
+
});
|
|
16201
|
+
const message = result.messages.find((message2) => message2.id === cursor);
|
|
16202
|
+
if (message) {
|
|
16203
|
+
return message;
|
|
16204
|
+
}
|
|
16205
|
+
}
|
|
16206
|
+
return null;
|
|
16207
|
+
}
|
|
16172
16208
|
async function listThreadsForResource({
|
|
16173
16209
|
memory,
|
|
16174
16210
|
resourceId,
|
|
@@ -16420,6 +16456,27 @@ function buildRenderedText(parts, timestamps) {
|
|
|
16420
16456
|
}
|
|
16421
16457
|
return lines.join("\n");
|
|
16422
16458
|
}
|
|
16459
|
+
async function getNextVisibleMessage({
|
|
16460
|
+
memory,
|
|
16461
|
+
threadId,
|
|
16462
|
+
resourceId,
|
|
16463
|
+
after
|
|
16464
|
+
}) {
|
|
16465
|
+
const result = await memory.recall({
|
|
16466
|
+
threadId,
|
|
16467
|
+
resourceId,
|
|
16468
|
+
page: 0,
|
|
16469
|
+
perPage: 50,
|
|
16470
|
+
orderBy: { field: "createdAt", direction: "ASC" },
|
|
16471
|
+
filter: {
|
|
16472
|
+
dateRange: {
|
|
16473
|
+
start: after,
|
|
16474
|
+
startExclusive: true
|
|
16475
|
+
}
|
|
16476
|
+
}
|
|
16477
|
+
});
|
|
16478
|
+
return result.messages.find(hasVisibleParts) ?? null;
|
|
16479
|
+
}
|
|
16423
16480
|
var MAX_EXPAND_USER_TEXT_TOKENS = 200;
|
|
16424
16481
|
var MAX_EXPAND_OTHER_TOKENS = 50;
|
|
16425
16482
|
function expandLimit(part) {
|
|
@@ -16488,7 +16545,11 @@ async function recallPart({
|
|
|
16488
16545
|
if (!threadId) {
|
|
16489
16546
|
throw new Error("Thread ID is required for recall");
|
|
16490
16547
|
}
|
|
16491
|
-
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
16548
|
+
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
16549
|
+
resourceId,
|
|
16550
|
+
threadScope,
|
|
16551
|
+
enforceThreadScope: false
|
|
16552
|
+
});
|
|
16492
16553
|
if ("hint" in resolved) {
|
|
16493
16554
|
throw new Error(resolved.hint);
|
|
16494
16555
|
}
|
|
@@ -16500,9 +16561,37 @@ async function recallPart({
|
|
|
16500
16561
|
}
|
|
16501
16562
|
const target = allParts.find((p) => p.partIndex === partIndex);
|
|
16502
16563
|
if (!target) {
|
|
16503
|
-
|
|
16504
|
-
|
|
16505
|
-
)
|
|
16564
|
+
const availableIndices = allParts.map((p) => p.partIndex).join(", ");
|
|
16565
|
+
const highestVisiblePartIndex = Math.max(...allParts.map((p) => p.partIndex));
|
|
16566
|
+
if (partIndex > highestVisiblePartIndex) {
|
|
16567
|
+
const nextMessage = await getNextVisibleMessage({
|
|
16568
|
+
memory,
|
|
16569
|
+
threadId,
|
|
16570
|
+
resourceId,
|
|
16571
|
+
after: resolved.createdAt
|
|
16572
|
+
});
|
|
16573
|
+
if (nextMessage) {
|
|
16574
|
+
const nextParts = formatMessageParts(nextMessage, "high");
|
|
16575
|
+
const firstNextPart = nextParts[0];
|
|
16576
|
+
if (firstNextPart) {
|
|
16577
|
+
const fallbackNote = `Part index ${partIndex} not found in message ${cursor}; showing partIndex ${firstNextPart.partIndex} from next message ${firstNextPart.messageId}.
|
|
16578
|
+
|
|
16579
|
+
`;
|
|
16580
|
+
const fallbackText = `${fallbackNote}${firstNextPart.text}`;
|
|
16581
|
+
const truncatedText2 = truncateStringByTokens(fallbackText, maxTokens);
|
|
16582
|
+
const wasTruncated2 = truncatedText2 !== fallbackText;
|
|
16583
|
+
return {
|
|
16584
|
+
text: truncatedText2,
|
|
16585
|
+
messageId: firstNextPart.messageId,
|
|
16586
|
+
partIndex: firstNextPart.partIndex,
|
|
16587
|
+
role: firstNextPart.role,
|
|
16588
|
+
type: firstNextPart.type,
|
|
16589
|
+
truncated: wasTruncated2
|
|
16590
|
+
};
|
|
16591
|
+
}
|
|
16592
|
+
}
|
|
16593
|
+
}
|
|
16594
|
+
throw new Error(`Part index ${partIndex} not found in message ${cursor}. Available indices: ${availableIndices}`);
|
|
16506
16595
|
}
|
|
16507
16596
|
const truncatedText = truncateStringByTokens(target.text, maxTokens);
|
|
16508
16597
|
const wasTruncated = truncatedText !== target.text;
|
|
@@ -16540,7 +16629,11 @@ async function recallMessages({
|
|
|
16540
16629
|
const rawPage = page === 0 ? 1 : page;
|
|
16541
16630
|
const normalizedPage = Math.max(Math.min(rawPage, MAX_PAGE), -MAX_PAGE);
|
|
16542
16631
|
const normalizedLimit = Math.min(limit, MAX_LIMIT);
|
|
16543
|
-
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
16632
|
+
const resolved = await resolveCursorMessage(memory, cursor, {
|
|
16633
|
+
resourceId,
|
|
16634
|
+
threadScope,
|
|
16635
|
+
enforceThreadScope: false
|
|
16636
|
+
});
|
|
16544
16637
|
if ("hint" in resolved) {
|
|
16545
16638
|
return {
|
|
16546
16639
|
messages: resolved.hint,
|
|
@@ -16556,9 +16649,10 @@ async function recallMessages({
|
|
|
16556
16649
|
};
|
|
16557
16650
|
}
|
|
16558
16651
|
const anchor = resolved;
|
|
16559
|
-
|
|
16652
|
+
const crossThreadId = anchor.threadId && anchor.threadId !== threadId ? anchor.threadId : void 0;
|
|
16653
|
+
if (crossThreadId && threadScope) {
|
|
16560
16654
|
return {
|
|
16561
|
-
messages: `Cursor does not belong to the active thread. Expected thread "${threadId}" but cursor "${cursor}" belongs to "${anchor.threadId}".`,
|
|
16655
|
+
messages: `Cursor does not belong to the active thread. Expected thread "${threadId}" but cursor "${cursor}" belongs to "${anchor.threadId}". Pass threadId="${anchor.threadId}" to browse that thread, or omit threadId and use this cursor directly in resource scope.`,
|
|
16562
16656
|
count: 0,
|
|
16563
16657
|
cursor,
|
|
16564
16658
|
page: normalizedPage,
|
|
@@ -16570,7 +16664,10 @@ async function recallMessages({
|
|
|
16570
16664
|
tokenOffset: 0
|
|
16571
16665
|
};
|
|
16572
16666
|
}
|
|
16573
|
-
const resolvedThreadId = threadId;
|
|
16667
|
+
const resolvedThreadId = crossThreadId ?? threadId;
|
|
16668
|
+
if (!resolvedThreadId) {
|
|
16669
|
+
throw new Error("Thread ID is required for recall");
|
|
16670
|
+
}
|
|
16574
16671
|
const isForward = normalizedPage > 0;
|
|
16575
16672
|
const pageIndex = Math.max(Math.abs(normalizedPage), 1) - 1;
|
|
16576
16673
|
const skip = pageIndex * normalizedLimit;
|
|
@@ -16852,7 +16949,25 @@ var recallTool = (_memoryConfig, options) => {
|
|
|
16852
16949
|
threadScope = currentThreadId || void 0;
|
|
16853
16950
|
}
|
|
16854
16951
|
if (hasCursor && !hasExplicitThreadId && !currentThreadId) {
|
|
16855
|
-
|
|
16952
|
+
if (!isResourceScope) {
|
|
16953
|
+
throw new Error("Current thread is required when browsing by cursor");
|
|
16954
|
+
}
|
|
16955
|
+
const resolved = await resolveCursorMessage(memory, cursor, { resourceId });
|
|
16956
|
+
if ("hint" in resolved) {
|
|
16957
|
+
return {
|
|
16958
|
+
messages: resolved.hint,
|
|
16959
|
+
count: 0,
|
|
16960
|
+
cursor,
|
|
16961
|
+
page: page ?? 1,
|
|
16962
|
+
limit: Math.min(limit ?? 20, 20),
|
|
16963
|
+
detail: detail ?? "low",
|
|
16964
|
+
hasNextPage: false,
|
|
16965
|
+
hasPrevPage: false,
|
|
16966
|
+
truncated: false,
|
|
16967
|
+
tokenOffset: 0
|
|
16968
|
+
};
|
|
16969
|
+
}
|
|
16970
|
+
targetThreadId = resolved.threadId;
|
|
16856
16971
|
}
|
|
16857
16972
|
if (!targetThreadId) {
|
|
16858
16973
|
throw new Error("Thread ID is required for recall");
|
|
@@ -17919,7 +18034,7 @@ ${workingMemory}`;
|
|
|
17919
18034
|
"Observational memory requires @mastra/core support for request-response-id-rotation. Please bump @mastra/core to a newer version."
|
|
17920
18035
|
);
|
|
17921
18036
|
}
|
|
17922
|
-
const { ObservationalMemory: OMClass } = await import('./observational-memory-
|
|
18037
|
+
const { ObservationalMemory: OMClass } = await import('./observational-memory-B25SASRW-L4GYD2ZN.js');
|
|
17923
18038
|
const onIndexObservations = this.hasRetrievalSearch(omConfig.retrieval) ? async (observation) => {
|
|
17924
18039
|
await this.indexObservation(observation);
|
|
17925
18040
|
} : void 0;
|
|
@@ -18807,7 +18922,7 @@ Notes:
|
|
|
18807
18922
|
if (!effectiveConfig) return null;
|
|
18808
18923
|
const engine = await this.omEngine;
|
|
18809
18924
|
if (!engine) return null;
|
|
18810
|
-
const { ObservationalMemoryProcessor } = await import('./observational-memory-
|
|
18925
|
+
const { ObservationalMemoryProcessor } = await import('./observational-memory-B25SASRW-L4GYD2ZN.js');
|
|
18811
18926
|
return new ObservationalMemoryProcessor(engine, this);
|
|
18812
18927
|
}
|
|
18813
18928
|
};
|
|
@@ -30008,5 +30123,5 @@ var OBSERVE_STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE = createRoute({
|
|
|
30008
30123
|
});
|
|
30009
30124
|
|
|
30010
30125
|
export { CANCEL_AGENT_BUILDER_ACTION_RUN_ROUTE, CREATE_AGENT_BUILDER_ACTION_RUN_ROUTE, GET_AGENT_BUILDER_ACTION_BY_ID_ROUTE, GET_AGENT_BUILDER_ACTION_RUN_BY_ID_ROUTE, LIST_AGENT_BUILDER_ACTIONS_ROUTE, LIST_AGENT_BUILDER_ACTION_RUNS_ROUTE, OBSERVE_STREAM_AGENT_BUILDER_ACTION_ROUTE, OBSERVE_STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE, RESUME_AGENT_BUILDER_ACTION_ROUTE, RESUME_ASYNC_AGENT_BUILDER_ACTION_ROUTE, RESUME_STREAM_AGENT_BUILDER_ACTION_ROUTE, START_AGENT_BUILDER_ACTION_RUN_ROUTE, START_ASYNC_AGENT_BUILDER_ACTION_ROUTE, STREAM_AGENT_BUILDER_ACTION_ROUTE, STREAM_LEGACY_AGENT_BUILDER_ACTION_ROUTE, agent_builder_exports };
|
|
30011
|
-
//# sourceMappingURL=chunk-
|
|
30012
|
-
//# sourceMappingURL=chunk-
|
|
30126
|
+
//# sourceMappingURL=chunk-TV5D5RRD.js.map
|
|
30127
|
+
//# sourceMappingURL=chunk-TV5D5RRD.js.map
|