@mastra/core 0.16.0 → 0.16.1-alpha.1
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 +40 -0
- package/dist/agent/index.cjs +11 -11
- package/dist/agent/index.d.ts.map +1 -1
- 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/agent/message-list/index.d.ts.map +1 -1
- package/dist/agent/message-list/prompt/image-utils.d.ts +30 -0
- package/dist/agent/message-list/prompt/image-utils.d.ts.map +1 -1
- package/dist/agent/types.d.ts +2 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/ai-tracing/context.d.ts +7 -13
- package/dist/ai-tracing/context.d.ts.map +1 -1
- package/dist/ai-tracing/index.cjs +32 -36
- package/dist/ai-tracing/index.js +1 -1
- package/dist/{chunk-WEPWZHE4.js → chunk-2NKNTPFR.js} +49 -5
- package/dist/chunk-2NKNTPFR.js.map +1 -0
- package/dist/{chunk-DRMT4EQA.cjs → chunk-2PWFUEQA.cjs} +4 -4
- package/dist/{chunk-DRMT4EQA.cjs.map → chunk-2PWFUEQA.cjs.map} +1 -1
- package/dist/{chunk-3CJXUAA2.cjs → chunk-33GDW3SI.cjs} +2 -4
- package/dist/chunk-33GDW3SI.cjs.map +1 -0
- package/dist/{chunk-HGYL2SSF.js → chunk-BQ43NQXK.js} +3 -3
- package/dist/{chunk-HGYL2SSF.js.map → chunk-BQ43NQXK.js.map} +1 -1
- package/dist/{chunk-7GYN2OE3.cjs → chunk-C3R2Q3NN.cjs} +153 -101
- package/dist/chunk-C3R2Q3NN.cjs.map +1 -0
- package/dist/{chunk-JTU7FZ5O.js → chunk-CWK46GAF.js} +2 -4
- package/dist/chunk-CWK46GAF.js.map +1 -0
- package/dist/{chunk-SIKEQ32R.cjs → chunk-D3UG2YLU.cjs} +137 -33
- package/dist/chunk-D3UG2YLU.cjs.map +1 -0
- package/dist/{chunk-EU3ADOKK.js → chunk-DUABZASJ.js} +4 -4
- package/dist/{chunk-EU3ADOKK.js.map → chunk-DUABZASJ.js.map} +1 -1
- package/dist/{chunk-YEZD4ZLX.cjs → chunk-DYLYA6HQ.cjs} +12 -12
- package/dist/{chunk-YEZD4ZLX.cjs.map → chunk-DYLYA6HQ.cjs.map} +1 -1
- package/dist/{chunk-JT2QXHUD.js → chunk-GJKJXY3K.js} +3 -3
- package/dist/{chunk-JT2QXHUD.js.map → chunk-GJKJXY3K.js.map} +1 -1
- package/dist/chunk-GXSERFAG.js +3 -0
- package/dist/{chunk-S43VACTO.js.map → chunk-GXSERFAG.js.map} +1 -1
- package/dist/{chunk-TCYQAAIT.cjs → chunk-IMDDMIVR.cjs} +6 -6
- package/dist/{chunk-TCYQAAIT.cjs.map → chunk-IMDDMIVR.cjs.map} +1 -1
- package/dist/{chunk-LVGGMWSE.cjs → chunk-KB4IEMPV.cjs} +6 -4
- package/dist/chunk-KB4IEMPV.cjs.map +1 -0
- package/dist/{chunk-SLDGELU7.cjs → chunk-LZWM7RVY.cjs} +7 -7
- package/dist/{chunk-SLDGELU7.cjs.map → chunk-LZWM7RVY.cjs.map} +1 -1
- package/dist/{chunk-MMYGYTJK.js → chunk-OF4TXRIV.js} +3 -3
- package/dist/{chunk-MMYGYTJK.js.map → chunk-OF4TXRIV.js.map} +1 -1
- package/dist/{chunk-MNDKBEEQ.cjs → chunk-SJO2HEVU.cjs} +6 -6
- package/dist/{chunk-MNDKBEEQ.cjs.map → chunk-SJO2HEVU.cjs.map} +1 -1
- package/dist/{chunk-WWQ3QRPF.js → chunk-TDLB5JKT.js} +6 -4
- package/dist/chunk-TDLB5JKT.js.map +1 -0
- package/dist/{chunk-D2Y5SXZN.js → chunk-U2RCB3FQ.js} +5 -5
- package/dist/{chunk-D2Y5SXZN.js.map → chunk-U2RCB3FQ.js.map} +1 -1
- package/dist/{chunk-A5VGUE2H.js → chunk-U3OYPZHX.js} +3 -3
- package/dist/{chunk-A5VGUE2H.js.map → chunk-U3OYPZHX.js.map} +1 -1
- package/dist/{chunk-UFCYMOYH.cjs → chunk-UGCG7DI3.cjs} +49 -6
- package/dist/chunk-UGCG7DI3.cjs.map +1 -0
- package/dist/{chunk-YILDTNQM.js → chunk-UM4XJM3Y.js} +118 -66
- package/dist/chunk-UM4XJM3Y.js.map +1 -0
- package/dist/{chunk-2BFCQRWV.cjs → chunk-WGX5V6DE.cjs} +7 -7
- package/dist/{chunk-2BFCQRWV.cjs.map → chunk-WGX5V6DE.cjs.map} +1 -1
- package/dist/chunk-X4RMXTXF.cjs +4 -0
- package/dist/{chunk-IHVB4C5U.cjs.map → chunk-X4RMXTXF.cjs.map} +1 -1
- package/dist/{chunk-HF7HXOCC.js → chunk-YI3AIJJL.js} +136 -32
- package/dist/chunk-YI3AIJJL.js.map +1 -0
- package/dist/index.cjs +43 -43
- package/dist/index.js +9 -9
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/loop/index.cjs +2 -2
- package/dist/loop/index.js +1 -1
- package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/mcp/index.cjs +4 -0
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.d.ts +3 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/memory/index.cjs +4 -4
- package/dist/memory/index.js +1 -1
- package/dist/network/index.cjs +2 -2
- package/dist/network/index.js +1 -1
- package/dist/network/vNext/index.cjs +14 -14
- package/dist/network/vNext/index.js +2 -2
- package/dist/processors/index.cjs +8 -8
- package/dist/processors/index.js +2 -2
- package/dist/processors/processors/structured-output.d.ts +2 -1
- package/dist/processors/processors/structured-output.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/storage/base.d.ts.map +1 -1
- package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
- package/dist/storage/index.cjs +11 -9
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.js +5 -3
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/types.d.ts +2 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
- package/dist/stream/aisdk/v5/model-supports.d.ts +25 -0
- package/dist/stream/aisdk/v5/model-supports.d.ts.map +1 -0
- package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
- package/dist/stream/index.cjs +3 -3
- package/dist/stream/index.js +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 +0 -4
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/types.d.ts.map +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/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/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 +3 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow.d.ts +4 -2
- package/dist/workflows/workflow.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-3CJXUAA2.cjs.map +0 -1
- package/dist/chunk-7GYN2OE3.cjs.map +0 -1
- package/dist/chunk-HF7HXOCC.js.map +0 -1
- package/dist/chunk-IHVB4C5U.cjs +0 -4
- package/dist/chunk-JTU7FZ5O.js.map +0 -1
- package/dist/chunk-LVGGMWSE.cjs.map +0 -1
- package/dist/chunk-S43VACTO.js +0 -3
- package/dist/chunk-SIKEQ32R.cjs.map +0 -1
- package/dist/chunk-UFCYMOYH.cjs.map +0 -1
- package/dist/chunk-WEPWZHE4.js.map +0 -1
- package/dist/chunk-WWQ3QRPF.js.map +0 -1
- package/dist/chunk-YILDTNQM.js.map +0 -1
|
@@ -83,8 +83,6 @@ var MastraStorage = class extends MastraBase {
|
|
|
83
83
|
return "BIGINT";
|
|
84
84
|
case "jsonb":
|
|
85
85
|
return "JSONB";
|
|
86
|
-
case "float":
|
|
87
|
-
return "FLOAT";
|
|
88
86
|
default:
|
|
89
87
|
return "TEXT";
|
|
90
88
|
}
|
|
@@ -338,5 +336,5 @@ var MastraStorage = class extends MastraBase {
|
|
|
338
336
|
};
|
|
339
337
|
|
|
340
338
|
export { MastraStorage, ensureDate, resolveMessageLimit, serializeDate };
|
|
341
|
-
//# sourceMappingURL=chunk-
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-CWK46GAF.js.map
|
|
340
|
+
//# sourceMappingURL=chunk-CWK46GAF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/storage/base.ts"],"names":[],"mappings":"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","file":"chunk-CWK46GAF.js","sourcesContent":["import type { MastraMessageContentV2, MastraMessageV2 } from '../agent';\nimport type { TracingStrategy } from '../ai-tracing';\nimport { MastraBase } from '../base';\nimport { ErrorCategory, ErrorDomain, MastraError } from '../error';\nimport type { MastraMessageV1, StorageThreadType } from '../memory/types';\nimport type { ScoreRowData, ScoringSource, ValidatedSaveScorePayload } from '../scores';\nimport type { Trace } from '../telemetry';\nimport type { StepResult, WorkflowRunState } from '../workflows/types';\n\nimport {\n TABLE_WORKFLOW_SNAPSHOT,\n TABLE_EVALS,\n TABLE_MESSAGES,\n TABLE_THREADS,\n TABLE_TRACES,\n TABLE_RESOURCES,\n TABLE_SCORERS,\n TABLE_SCHEMAS,\n TABLE_AI_SPANS,\n} from './constants';\nimport type { TABLE_NAMES } from './constants';\nimport type {\n ScoresStorage,\n StoreOperations,\n WorkflowsStorage,\n TracesStorage,\n MemoryStorage,\n LegacyEvalsStorage,\n ObservabilityStorage,\n} from './domains';\nimport type {\n EvalRow,\n PaginationInfo,\n StorageColumn,\n StorageGetMessagesArg,\n StorageResourceType,\n StoragePagination,\n ThreadSortOptions,\n WorkflowRun,\n WorkflowRuns,\n StorageGetTracesArg,\n PaginationArgs,\n StorageGetTracesPaginatedArg,\n AISpanRecord,\n AITraceRecord,\n AITracesPaginatedArg,\n} from './types';\n\nexport type StorageDomains = {\n legacyEvals: LegacyEvalsStorage;\n operations: StoreOperations;\n workflows: WorkflowsStorage;\n scores: ScoresStorage;\n traces: TracesStorage;\n memory: MemoryStorage;\n observability?: ObservabilityStorage;\n};\n\nexport function ensureDate(date: Date | string | undefined): Date | undefined {\n if (!date) return undefined;\n return date instanceof Date ? date : new Date(date);\n}\n\nexport function serializeDate(date: Date | string | undefined): string | undefined {\n if (!date) return undefined;\n const dateObj = ensureDate(date);\n return dateObj?.toISOString();\n}\n\nexport function resolveMessageLimit({\n last,\n defaultLimit,\n}: {\n last: number | false | undefined;\n defaultLimit: number;\n}): number {\n // TODO: Figure out consistent default limit for all stores as some stores use 40 and some use no limit (Number.MAX_SAFE_INTEGER)\n if (typeof last === 'number') return Math.max(0, last);\n if (last === false) return 0;\n return defaultLimit;\n}\nexport abstract class MastraStorage extends MastraBase {\n /** @deprecated import from { TABLE_WORKFLOW_SNAPSHOT } '@mastra/core/storage' instead */\n static readonly TABLE_WORKFLOW_SNAPSHOT = TABLE_WORKFLOW_SNAPSHOT;\n /** @deprecated import from { TABLE_EVALS } '@mastra/core/storage' instead */\n static readonly TABLE_EVALS = TABLE_EVALS;\n /** @deprecated import from { TABLE_MESSAGES } '@mastra/core/storage' instead */\n static readonly TABLE_MESSAGES = TABLE_MESSAGES;\n /** @deprecated import from { TABLE_THREADS } '@mastra/core/storage' instead */\n static readonly TABLE_THREADS = TABLE_THREADS;\n /** @deprecated import { TABLE_TRACES } from '@mastra/core/storage' instead */\n static readonly TABLE_TRACES = TABLE_TRACES;\n\n protected hasInitialized: null | Promise<boolean> = null;\n protected shouldCacheInit = true;\n\n stores?: StorageDomains;\n\n constructor({ name }: { name: string }) {\n super({\n component: 'STORAGE',\n name,\n });\n }\n\n public get supports(): {\n selectByIncludeResourceScope: boolean;\n resourceWorkingMemory: boolean;\n hasColumn: boolean;\n createTable: boolean;\n deleteMessages: boolean;\n aiTracing?: boolean;\n } {\n return {\n selectByIncludeResourceScope: false,\n resourceWorkingMemory: false,\n hasColumn: false,\n createTable: false,\n deleteMessages: false,\n aiTracing: false,\n };\n }\n\n protected ensureDate(date: Date | string | undefined): Date | undefined {\n return ensureDate(date);\n }\n\n protected serializeDate(date: Date | string | undefined): string | undefined {\n return serializeDate(date);\n }\n\n /**\n * Resolves limit for how many messages to fetch\n *\n * @param last The number of messages to fetch\n * @param defaultLimit The default limit to use if last is not provided\n * @returns The resolved limit\n */\n protected resolveMessageLimit({\n last,\n defaultLimit,\n }: {\n last: number | false | undefined;\n defaultLimit: number;\n }): number {\n return resolveMessageLimit({ last, defaultLimit });\n }\n\n protected getSqlType(type: StorageColumn['type']): string {\n switch (type) {\n case 'text':\n return 'TEXT';\n case 'timestamp':\n return 'TIMESTAMP';\n case 'float':\n return 'FLOAT';\n case 'integer':\n return 'INTEGER';\n case 'bigint':\n return 'BIGINT';\n case 'jsonb':\n return 'JSONB';\n default:\n return 'TEXT';\n }\n }\n\n protected getDefaultValue(type: StorageColumn['type']): string {\n switch (type) {\n case 'text':\n case 'uuid':\n return \"DEFAULT ''\";\n case 'timestamp':\n return \"DEFAULT '1970-01-01 00:00:00'\";\n case 'integer':\n case 'float':\n case 'bigint':\n return 'DEFAULT 0';\n case 'jsonb':\n return \"DEFAULT '{}'\";\n default:\n return \"DEFAULT ''\";\n }\n }\n\n abstract createTable({ tableName }: { tableName: TABLE_NAMES; schema: Record<string, StorageColumn> }): Promise<void>;\n\n abstract clearTable({ tableName }: { tableName: TABLE_NAMES }): Promise<void>;\n\n abstract dropTable({ tableName }: { tableName: TABLE_NAMES }): Promise<void>;\n\n abstract alterTable(args: {\n tableName: TABLE_NAMES;\n schema: Record<string, StorageColumn>;\n ifNotExists: string[];\n }): Promise<void>;\n\n abstract insert({ tableName, record }: { tableName: TABLE_NAMES; record: Record<string, any> }): Promise<void>;\n\n abstract batchInsert({\n tableName,\n records,\n }: {\n tableName: TABLE_NAMES;\n records: Record<string, any>[];\n }): Promise<void>;\n\n batchTraceInsert({ records }: { records: Record<string, any>[] }): Promise<void> {\n if (this.stores?.traces) {\n return this.stores.traces.batchTraceInsert({ records });\n }\n return this.batchInsert({ tableName: TABLE_TRACES, records });\n }\n\n abstract load<R>({ tableName, keys }: { tableName: TABLE_NAMES; keys: Record<string, any> }): Promise<R | null>;\n\n abstract getThreadById({ threadId }: { threadId: string }): Promise<StorageThreadType | null>;\n\n abstract getThreadsByResourceId({\n resourceId,\n orderBy,\n sortDirection,\n }: { resourceId: string } & ThreadSortOptions): Promise<StorageThreadType[]>;\n\n abstract saveThread({ thread }: { thread: StorageThreadType }): Promise<StorageThreadType>;\n\n abstract updateThread({\n id,\n title,\n metadata,\n }: {\n id: string;\n title: string;\n metadata: Record<string, unknown>;\n }): Promise<StorageThreadType>;\n\n abstract deleteThread({ threadId }: { threadId: string }): Promise<void>;\n\n async getResourceById(_: { resourceId: string }): Promise<StorageResourceType | null> {\n throw new Error(\n `Resource working memory is not supported by this storage adapter (${this.constructor.name}). ` +\n `Supported storage adapters: LibSQL (@mastra/libsql), PostgreSQL (@mastra/pg), Upstash (@mastra/upstash). ` +\n `To use per-resource working memory, switch to one of these supported storage adapters.`,\n );\n }\n\n async saveResource(_: { resource: StorageResourceType }): Promise<StorageResourceType> {\n throw new Error(\n `Resource working memory is not supported by this storage adapter (${this.constructor.name}). ` +\n `Supported storage adapters: LibSQL (@mastra/libsql), PostgreSQL (@mastra/pg), Upstash (@mastra/upstash). ` +\n `To use per-resource working memory, switch to one of these supported storage adapters.`,\n );\n }\n\n async updateResource(_: {\n resourceId: string;\n workingMemory?: string;\n metadata?: Record<string, unknown>;\n }): Promise<StorageResourceType> {\n throw new Error(\n `Resource working memory is not supported by this storage adapter (${this.constructor.name}). ` +\n `Supported storage adapters: LibSQL (@mastra/libsql), PostgreSQL (@mastra/pg), Upstash (@mastra/upstash). ` +\n `To use per-resource working memory, switch to one of these supported storage adapters.`,\n );\n }\n\n abstract getMessages(args: StorageGetMessagesArg & { format?: 'v1' }): Promise<MastraMessageV1[]>;\n abstract getMessages(args: StorageGetMessagesArg & { format: 'v2' }): Promise<MastraMessageV2[]>;\n abstract getMessages({\n threadId,\n resourceId,\n selectBy,\n format,\n }: StorageGetMessagesArg & { format?: 'v1' | 'v2' }): Promise<MastraMessageV1[] | MastraMessageV2[]>;\n abstract getMessagesById({ messageIds }: { messageIds: string[]; format: 'v1' }): Promise<MastraMessageV1[]>;\n abstract getMessagesById({ messageIds }: { messageIds: string[]; format?: 'v2' }): Promise<MastraMessageV2[]>;\n abstract getMessagesById({\n messageIds,\n }: {\n messageIds: string[];\n format?: 'v1' | 'v2';\n }): Promise<MastraMessageV1[] | MastraMessageV2[]>;\n\n abstract saveMessages(args: { messages: MastraMessageV1[]; format?: undefined | 'v1' }): Promise<MastraMessageV1[]>;\n abstract saveMessages(args: { messages: MastraMessageV2[]; format: 'v2' }): Promise<MastraMessageV2[]>;\n abstract saveMessages(\n args: { messages: MastraMessageV1[]; format?: undefined | 'v1' } | { messages: MastraMessageV2[]; format: 'v2' },\n ): Promise<MastraMessageV2[] | MastraMessageV1[]>;\n\n abstract updateMessages(args: {\n messages: Partial<Omit<MastraMessageV2, 'createdAt'>> &\n {\n id: string;\n content?: { metadata?: MastraMessageContentV2['metadata']; content?: MastraMessageContentV2['content'] };\n }[];\n }): Promise<MastraMessageV2[]>;\n\n async deleteMessages(_messageIds: string[]): Promise<void> {\n throw new Error(\n `Message deletion is not supported by this storage adapter (${this.constructor.name}). ` +\n `The deleteMessages method needs to be implemented in the storage adapter.`,\n );\n }\n\n abstract getTraces(args: StorageGetTracesArg): Promise<Trace[]>;\n\n abstract getTracesPaginated(args: StorageGetTracesPaginatedArg): Promise<PaginationInfo & { traces: Trace[] }>;\n\n async init(): Promise<void> {\n // to prevent race conditions, await any current init\n if (this.shouldCacheInit && (await this.hasInitialized)) {\n return;\n }\n\n const tableCreationTasks = [\n this.createTable({\n tableName: TABLE_WORKFLOW_SNAPSHOT,\n schema: TABLE_SCHEMAS[TABLE_WORKFLOW_SNAPSHOT],\n }),\n\n this.createTable({\n tableName: TABLE_EVALS,\n schema: TABLE_SCHEMAS[TABLE_EVALS],\n }),\n\n this.createTable({\n tableName: TABLE_THREADS,\n schema: TABLE_SCHEMAS[TABLE_THREADS],\n }),\n\n this.createTable({\n tableName: TABLE_MESSAGES,\n schema: TABLE_SCHEMAS[TABLE_MESSAGES],\n }),\n\n this.createTable({\n tableName: TABLE_TRACES,\n schema: TABLE_SCHEMAS[TABLE_TRACES],\n }),\n\n this.createTable({\n tableName: TABLE_SCORERS,\n schema: TABLE_SCHEMAS[TABLE_SCORERS],\n }),\n ];\n\n // Only create resources table for storage adapters that support it\n if (this.supports.resourceWorkingMemory) {\n tableCreationTasks.push(\n this.createTable({\n tableName: TABLE_RESOURCES,\n schema: TABLE_SCHEMAS[TABLE_RESOURCES],\n }),\n );\n }\n\n if (this.supports.aiTracing) {\n tableCreationTasks.push(\n this.createTable({\n tableName: TABLE_AI_SPANS,\n schema: TABLE_SCHEMAS[TABLE_AI_SPANS],\n }),\n );\n }\n\n this.hasInitialized = Promise.all(tableCreationTasks).then(() => true);\n\n await this.hasInitialized;\n\n await this?.alterTable?.({\n tableName: TABLE_MESSAGES,\n schema: TABLE_SCHEMAS[TABLE_MESSAGES],\n ifNotExists: ['resourceId'],\n });\n }\n\n async persistWorkflowSnapshot({\n workflowName,\n runId,\n snapshot,\n }: {\n workflowName: string;\n runId: string;\n snapshot: WorkflowRunState;\n }): Promise<void> {\n await this.init();\n\n const data = {\n workflow_name: workflowName,\n run_id: runId,\n snapshot,\n createdAt: new Date(),\n updatedAt: new Date(),\n };\n this.logger.debug('Persisting workflow snapshot', { workflowName, runId, data });\n await this.insert({\n tableName: TABLE_WORKFLOW_SNAPSHOT,\n record: data,\n });\n }\n\n abstract updateWorkflowResults({\n workflowName,\n runId,\n stepId,\n result,\n }: {\n workflowName: string;\n runId: string;\n stepId: string;\n result: StepResult<any, any, any, any>;\n runtimeContext: Record<string, any>;\n }): Promise<Record<string, StepResult<any, any, any, any>>>;\n\n abstract updateWorkflowState({\n workflowName,\n runId,\n opts,\n }: {\n workflowName: string;\n runId: string;\n opts: {\n status: string;\n result?: StepResult<any, any, any, any>;\n error?: string;\n suspendedPaths?: Record<string, number[]>;\n waitingPaths?: Record<string, number[]>;\n };\n }): Promise<WorkflowRunState | undefined>;\n\n async loadWorkflowSnapshot({\n workflowName,\n runId,\n }: {\n workflowName: string;\n runId: string;\n }): Promise<WorkflowRunState | null> {\n if (!this.hasInitialized) {\n await this.init();\n }\n this.logger.debug('Loading workflow snapshot', { workflowName, runId });\n const d = await this.load<{ snapshot: WorkflowRunState }>({\n tableName: TABLE_WORKFLOW_SNAPSHOT,\n keys: { workflow_name: workflowName, run_id: runId },\n });\n\n return d ? d.snapshot : null;\n }\n\n /**\n * SCORERS\n */\n\n abstract getScoreById({ id }: { id: string }): Promise<ScoreRowData | null>;\n\n abstract saveScore(score: ValidatedSaveScorePayload): Promise<{ score: ScoreRowData }>;\n\n abstract getScoresByScorerId({\n scorerId,\n pagination,\n entityId,\n entityType,\n source,\n }: {\n scorerId: string;\n pagination: StoragePagination;\n entityId?: string;\n entityType?: string;\n source?: ScoringSource;\n }): Promise<{ pagination: PaginationInfo; scores: ScoreRowData[] }>;\n\n abstract getScoresByRunId({\n runId,\n pagination,\n }: {\n runId: string;\n pagination: StoragePagination;\n }): Promise<{ pagination: PaginationInfo; scores: ScoreRowData[] }>;\n\n abstract getScoresByEntityId({\n entityId,\n entityType,\n pagination,\n }: {\n pagination: StoragePagination;\n entityId: string;\n entityType: string;\n }): Promise<{ pagination: PaginationInfo; scores: ScoreRowData[] }>;\n\n abstract getEvals(\n options: {\n agentName?: string;\n type?: 'test' | 'live';\n } & PaginationArgs,\n ): Promise<PaginationInfo & { evals: EvalRow[] }>;\n\n abstract getEvalsByAgentName(agentName: string, type?: 'test' | 'live'): Promise<EvalRow[]>;\n\n abstract getWorkflowRuns(args?: {\n workflowName?: string;\n fromDate?: Date;\n toDate?: Date;\n limit?: number;\n offset?: number;\n resourceId?: string;\n }): Promise<WorkflowRuns>;\n\n abstract getWorkflowRunById(args: { runId: string; workflowName?: string }): Promise<WorkflowRun | null>;\n\n abstract getThreadsByResourceIdPaginated(\n args: {\n resourceId: string;\n page: number;\n perPage: number;\n } & ThreadSortOptions,\n ): Promise<PaginationInfo & { threads: StorageThreadType[] }>;\n\n abstract getMessagesPaginated(\n args: StorageGetMessagesArg & { format?: 'v1' | 'v2' },\n ): Promise<PaginationInfo & { messages: MastraMessageV1[] | MastraMessageV2[] }>;\n\n /**\n * OBSERVABILITY\n */\n\n /**\n * Provides hints for AI tracing strategy selection by the DefaultExporter.\n * Storage adapters can override this to specify their preferred and supported strategies.\n */\n public get aiTracingStrategy(): {\n preferred: TracingStrategy;\n supported: TracingStrategy[];\n } {\n if (this.stores?.observability) {\n return this.stores.observability.aiTracingStrategy;\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_TRACING_STRATEGY_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Creates a single AI span record in the storage provider.\n */\n async createAISpan(span: AISpanRecord): Promise<void> {\n if (this.stores?.observability) {\n return this.stores.observability.createAISpan(span);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_CREATE_AI_SPAN_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Updates a single AI span with partial data. Primarily used for realtime trace creation.\n */\n async updateAISpan(params: {\n spanId: string;\n traceId: string;\n updates: Partial<Omit<AISpanRecord, 'spanId' | 'traceId'>>;\n }): Promise<void> {\n if (this.stores?.observability) {\n return this.stores.observability.updateAISpan(params);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_UPDATE_AI_SPAN_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Retrieves a single AI trace with all its associated spans.\n */\n async getAITrace(traceId: string): Promise<AITraceRecord | null> {\n if (this.stores?.observability) {\n return this.stores.observability.getAITrace(traceId);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_GET_AI_TRACE_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Retrieves a paginated list of AI traces with optional filtering.\n */\n async getAITracesPaginated(\n args: AITracesPaginatedArg,\n ): Promise<{ pagination: PaginationInfo; spans: AISpanRecord[] }> {\n if (this.stores?.observability) {\n return this.stores.observability.getAITracesPaginated(args);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_GET_AI_TRACES_PAGINATED_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Creates multiple AI spans in a single batch.\n */\n async batchCreateAISpans(args: { records: AISpanRecord[] }): Promise<void> {\n if (this.stores?.observability) {\n return this.stores.observability.batchCreateAISpans(args);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_BATCH_CREATE_AI_SPANS_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Updates multiple AI spans in a single batch.\n */\n async batchUpdateAISpans(args: {\n records: {\n traceId: string;\n spanId: string;\n updates: Partial<Omit<AISpanRecord, 'spanId' | 'traceId'>>;\n }[];\n }): Promise<void> {\n if (this.stores?.observability) {\n return this.stores.observability.batchUpdateAISpans(args);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_BATCH_UPDATE_AI_SPANS_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n\n /**\n * Deletes multiple AI traces and all their associated spans in a single batch operation.\n */\n async batchDeleteAITraces(args: { traceIds: string[] }): Promise<void> {\n if (this.stores?.observability) {\n return this.stores.observability.batchDeleteAITraces(args);\n }\n throw new MastraError({\n id: 'MASTRA_STORAGE_BATCH_DELETE_AI_TRACES_NOT_SUPPORTED',\n domain: ErrorDomain.STORAGE,\n category: ErrorCategory.SYSTEM,\n text: `AI tracing is not supported by this storage adapter (${this.constructor.name})`,\n });\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkKB4IEMPV_cjs = require('./chunk-KB4IEMPV.cjs');
|
|
4
4
|
var chunkC73WLCY3_cjs = require('./chunk-C73WLCY3.cjs');
|
|
5
5
|
var crypto = require('crypto');
|
|
6
6
|
var AIV4 = require('ai');
|
|
@@ -613,7 +613,7 @@ function convertDataContentToBase64String(content) {
|
|
|
613
613
|
var downloadFromUrl = async ({ url, downloadRetries }) => {
|
|
614
614
|
const urlText = url.toString();
|
|
615
615
|
try {
|
|
616
|
-
const response = await
|
|
616
|
+
const response = await chunkKB4IEMPV_cjs.fetchWithRetry(
|
|
617
617
|
urlText,
|
|
618
618
|
{
|
|
619
619
|
method: "GET"
|
|
@@ -756,6 +756,45 @@ function getImageCacheKey(image) {
|
|
|
756
756
|
}
|
|
757
757
|
return image;
|
|
758
758
|
}
|
|
759
|
+
function isValidUrl(str) {
|
|
760
|
+
try {
|
|
761
|
+
new URL(str);
|
|
762
|
+
return true;
|
|
763
|
+
} catch {
|
|
764
|
+
if (str.startsWith("//")) {
|
|
765
|
+
try {
|
|
766
|
+
new URL(`https:${str}`);
|
|
767
|
+
return true;
|
|
768
|
+
} catch {
|
|
769
|
+
return false;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
return false;
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
function categorizeFileData(data, fallbackMimeType) {
|
|
776
|
+
const parsed = parseDataUri(data);
|
|
777
|
+
const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
|
|
778
|
+
if (parsed.isDataUri) {
|
|
779
|
+
return {
|
|
780
|
+
type: "dataUri",
|
|
781
|
+
mimeType,
|
|
782
|
+
data
|
|
783
|
+
};
|
|
784
|
+
}
|
|
785
|
+
if (isValidUrl(data)) {
|
|
786
|
+
return {
|
|
787
|
+
type: "url",
|
|
788
|
+
mimeType,
|
|
789
|
+
data
|
|
790
|
+
};
|
|
791
|
+
}
|
|
792
|
+
return {
|
|
793
|
+
type: "raw",
|
|
794
|
+
mimeType,
|
|
795
|
+
data
|
|
796
|
+
};
|
|
797
|
+
}
|
|
759
798
|
|
|
760
799
|
// src/agent/message-list/utils/ai-v5/tool.ts
|
|
761
800
|
function getToolName(type) {
|
|
@@ -1737,6 +1776,25 @@ var MessageList = class _MessageList {
|
|
|
1737
1776
|
data: part.data.toString(),
|
|
1738
1777
|
mimeType: part.mimeType
|
|
1739
1778
|
});
|
|
1779
|
+
} else if (typeof part.data === "string") {
|
|
1780
|
+
const categorized = categorizeFileData(part.data, part.mimeType);
|
|
1781
|
+
if (categorized.type === "url" || categorized.type === "dataUri") {
|
|
1782
|
+
parts.push({
|
|
1783
|
+
type: "file",
|
|
1784
|
+
data: part.data,
|
|
1785
|
+
mimeType: categorized.mimeType || "image/png"
|
|
1786
|
+
});
|
|
1787
|
+
} else {
|
|
1788
|
+
try {
|
|
1789
|
+
parts.push({
|
|
1790
|
+
type: "file",
|
|
1791
|
+
mimeType: categorized.mimeType || "image/png",
|
|
1792
|
+
data: convertDataContentToBase64String(part.data)
|
|
1793
|
+
});
|
|
1794
|
+
} catch (error) {
|
|
1795
|
+
console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1740
1798
|
} else {
|
|
1741
1799
|
try {
|
|
1742
1800
|
parts.push({
|
|
@@ -2197,16 +2255,21 @@ var MessageList = class _MessageList {
|
|
|
2197
2255
|
switch (p.type) {
|
|
2198
2256
|
case "text":
|
|
2199
2257
|
return p;
|
|
2200
|
-
case "file":
|
|
2201
|
-
|
|
2258
|
+
case "file": {
|
|
2259
|
+
const fileDataSource = "url" in p && typeof p.url === "string" ? p.url : "data" in p && typeof p.data === "string" ? p.data : void 0;
|
|
2260
|
+
if (!fileDataSource) {
|
|
2261
|
+
return null;
|
|
2262
|
+
}
|
|
2263
|
+
if (attachmentUrls.has(fileDataSource)) {
|
|
2202
2264
|
return null;
|
|
2203
2265
|
}
|
|
2204
2266
|
return {
|
|
2205
2267
|
type: "file",
|
|
2206
2268
|
mimeType: p.mediaType,
|
|
2207
|
-
data:
|
|
2269
|
+
data: fileDataSource,
|
|
2208
2270
|
providerMetadata: p.providerMetadata
|
|
2209
2271
|
};
|
|
2272
|
+
}
|
|
2210
2273
|
case "reasoning":
|
|
2211
2274
|
if (p.text === "") return null;
|
|
2212
2275
|
return {
|
|
@@ -2241,7 +2304,8 @@ var MessageList = class _MessageList {
|
|
|
2241
2304
|
}
|
|
2242
2305
|
const originalContent = v3Msg.content.metadata?.__originalContent;
|
|
2243
2306
|
if (originalContent !== void 0) {
|
|
2244
|
-
|
|
2307
|
+
const hasOnlyTextOrStepStart = v2Msg.content.parts.every((p) => p.type === `step-start` || p.type === `text`);
|
|
2308
|
+
if (typeof originalContent === `string` || hasOnlyTextOrStepStart) {
|
|
2245
2309
|
v2Msg.content.content = originalContent;
|
|
2246
2310
|
}
|
|
2247
2311
|
}
|
|
@@ -2249,6 +2313,27 @@ var MessageList = class _MessageList {
|
|
|
2249
2313
|
if (originalAttachments && Array.isArray(originalAttachments)) {
|
|
2250
2314
|
v2Msg.content.experimental_attachments = originalAttachments || [];
|
|
2251
2315
|
}
|
|
2316
|
+
const originalContentIsV5 = Array.isArray(v3Msg.content.metadata?.__originalContent) && v3Msg.content.metadata?.__originalContent.some((part) => part.type === "file");
|
|
2317
|
+
const urlFileParts = originalContentIsV5 ? [] : v2Msg.content.parts.filter(
|
|
2318
|
+
(p) => p.type === "file" && typeof p.data === "string" && (p.data.startsWith("http://") || p.data.startsWith("https://")) && !p.providerMetadata
|
|
2319
|
+
// Don't move if it has providerMetadata (needed for roundtrip)
|
|
2320
|
+
);
|
|
2321
|
+
if (urlFileParts.length > 0) {
|
|
2322
|
+
if (!v2Msg.content.experimental_attachments) {
|
|
2323
|
+
v2Msg.content.experimental_attachments = [];
|
|
2324
|
+
}
|
|
2325
|
+
for (const urlPart of urlFileParts) {
|
|
2326
|
+
if (urlPart.type === "file") {
|
|
2327
|
+
v2Msg.content.experimental_attachments.push({
|
|
2328
|
+
url: urlPart.data,
|
|
2329
|
+
contentType: urlPart.mimeType
|
|
2330
|
+
});
|
|
2331
|
+
}
|
|
2332
|
+
}
|
|
2333
|
+
v2Msg.content.parts = v2Msg.content.parts.filter(
|
|
2334
|
+
(p) => !(p.type === "file" && typeof p.data === "string" && (p.data.startsWith("http://") || p.data.startsWith("https://")) && !p.providerMetadata)
|
|
2335
|
+
);
|
|
2336
|
+
}
|
|
2252
2337
|
if (toolInvocations && toolInvocations.length > 0) {
|
|
2253
2338
|
const resultToolInvocations = toolInvocations.filter((t) => t.state === "result");
|
|
2254
2339
|
if (resultToolInvocations.length > 0) {
|
|
@@ -2337,27 +2422,38 @@ var MessageList = class _MessageList {
|
|
|
2337
2422
|
}
|
|
2338
2423
|
break;
|
|
2339
2424
|
case "file": {
|
|
2340
|
-
|
|
2425
|
+
const categorized = typeof part.data === "string" ? categorizeFileData(part.data, part.mimeType) : { type: "raw", mimeType: part.mimeType};
|
|
2426
|
+
if (categorized.type === "url" && typeof part.data === "string") {
|
|
2341
2427
|
parts.push({
|
|
2342
2428
|
type: "file",
|
|
2343
2429
|
url: part.data,
|
|
2344
|
-
mediaType:
|
|
2430
|
+
mediaType: categorized.mimeType || "image/png",
|
|
2345
2431
|
providerMetadata: part.providerMetadata
|
|
2346
2432
|
});
|
|
2433
|
+
fileUrls.add(part.data);
|
|
2347
2434
|
} else {
|
|
2348
2435
|
let filePartData;
|
|
2349
2436
|
let extractedMimeType = part.mimeType;
|
|
2350
2437
|
if (typeof part.data === "string") {
|
|
2351
2438
|
const parsed = parseDataUri(part.data);
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2439
|
+
if (parsed.isDataUri) {
|
|
2440
|
+
filePartData = parsed.base64Content;
|
|
2441
|
+
if (parsed.mimeType) {
|
|
2442
|
+
extractedMimeType = extractedMimeType || parsed.mimeType;
|
|
2443
|
+
}
|
|
2444
|
+
} else {
|
|
2445
|
+
filePartData = part.data;
|
|
2355
2446
|
}
|
|
2356
2447
|
} else {
|
|
2357
2448
|
filePartData = part.data;
|
|
2358
2449
|
}
|
|
2359
2450
|
const finalMimeType = extractedMimeType || "image/png";
|
|
2360
|
-
|
|
2451
|
+
let dataUri;
|
|
2452
|
+
if (typeof filePartData === "string" && filePartData.startsWith("data:")) {
|
|
2453
|
+
dataUri = filePartData;
|
|
2454
|
+
} else {
|
|
2455
|
+
dataUri = createDataUri(filePartData, finalMimeType);
|
|
2456
|
+
}
|
|
2361
2457
|
parts.push({
|
|
2362
2458
|
type: "file",
|
|
2363
2459
|
url: dataUri,
|
|
@@ -2604,31 +2700,39 @@ var MessageList = class _MessageList {
|
|
|
2604
2700
|
providerMetadata: part.providerOptions
|
|
2605
2701
|
});
|
|
2606
2702
|
}
|
|
2607
|
-
} else {
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
mediaType: extractedMimeType || "image/png",
|
|
2621
|
-
providerMetadata: part.providerOptions
|
|
2622
|
-
});
|
|
2623
|
-
} else {
|
|
2624
|
-
const dataUri = createDataUri(base64Data, part.mediaType || "image/png");
|
|
2703
|
+
} else if (typeof part.data === "string") {
|
|
2704
|
+
const categorized = categorizeFileData(part.data, part.mediaType);
|
|
2705
|
+
if (categorized.type === "url" || categorized.type === "dataUri") {
|
|
2706
|
+
parts.push({
|
|
2707
|
+
type: "file",
|
|
2708
|
+
url: part.data,
|
|
2709
|
+
mediaType: categorized.mimeType || "application/octet-stream",
|
|
2710
|
+
providerMetadata: part.providerOptions
|
|
2711
|
+
});
|
|
2712
|
+
} else {
|
|
2713
|
+
try {
|
|
2714
|
+
const base64Data = convertDataContentToBase64String(part.data);
|
|
2715
|
+
const dataUri = createDataUri(base64Data, categorized.mimeType || "image/png");
|
|
2625
2716
|
parts.push({
|
|
2626
2717
|
type: "file",
|
|
2627
2718
|
url: dataUri,
|
|
2628
|
-
mediaType:
|
|
2719
|
+
mediaType: categorized.mimeType || "image/png",
|
|
2629
2720
|
providerMetadata: part.providerOptions
|
|
2630
2721
|
});
|
|
2722
|
+
} catch (error) {
|
|
2723
|
+
console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
|
|
2631
2724
|
}
|
|
2725
|
+
}
|
|
2726
|
+
} else {
|
|
2727
|
+
try {
|
|
2728
|
+
const base64Data = convertDataContentToBase64String(part.data);
|
|
2729
|
+
const dataUri = createDataUri(base64Data, part.mediaType || "image/png");
|
|
2730
|
+
parts.push({
|
|
2731
|
+
type: "file",
|
|
2732
|
+
url: dataUri,
|
|
2733
|
+
mediaType: part.mediaType || "image/png",
|
|
2734
|
+
providerMetadata: part.providerOptions
|
|
2735
|
+
});
|
|
2632
2736
|
} catch (error) {
|
|
2633
2737
|
console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
|
|
2634
2738
|
}
|
|
@@ -2780,5 +2884,5 @@ exports.DefaultGeneratedFile = DefaultGeneratedFile;
|
|
|
2780
2884
|
exports.DefaultGeneratedFileWithType = DefaultGeneratedFileWithType;
|
|
2781
2885
|
exports.MessageList = MessageList;
|
|
2782
2886
|
exports.convertMessages = convertMessages;
|
|
2783
|
-
//# sourceMappingURL=chunk-
|
|
2784
|
-
//# sourceMappingURL=chunk-
|
|
2887
|
+
//# sourceMappingURL=chunk-D3UG2YLU.cjs.map
|
|
2888
|
+
//# sourceMappingURL=chunk-D3UG2YLU.cjs.map
|