@mastra/cloudflare 0.10.2-alpha.2 → 0.10.2

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.
@@ -1,9 +1,11 @@
1
1
  import type { EvalRow } from '@mastra/core/storage';
2
2
  import type { KVNamespace as KVNamespace_2 } from '@cloudflare/workers-types';
3
3
  import { KVNamespaceListKey as KVNamespaceListKey_2 } from '@cloudflare/workers-types';
4
+ import type { MastraMessageV1 } from '@mastra/core/memory';
5
+ import type { MastraMessageV2 } from '@mastra/core/agent';
6
+ import type { MastraMessageV2 as MastraMessageV2_2 } from '@mastra/core/memory';
7
+ import type { MastraMessageV2 as MastraMessageV2_3 } from '@mastra/core';
4
8
  import { MastraStorage } from '@mastra/core/storage';
5
- import type { MessageType } from '@mastra/core/memory';
6
- import type { MessageType as MessageType_2 } from '@mastra/core';
7
9
  import type { StorageColumn } from '@mastra/core/storage';
8
10
  import type { StorageGetMessagesArg } from '@mastra/core/storage';
9
11
  import type { StorageThreadType } from '@mastra/core/memory';
@@ -144,10 +146,20 @@ declare class CloudflareStore extends MastraStorage {
144
146
  }): Promise<void>;
145
147
  private getMessageKey;
146
148
  private getThreadMessagesKey;
147
- saveMessages({ messages }: {
148
- messages: MessageType[];
149
- }): Promise<MessageType[]>;
150
- getMessages<T extends MessageType = MessageType>({ threadId, selectBy }: StorageGetMessagesArg): Promise<T[]>;
149
+ saveMessages(args: {
150
+ messages: MastraMessageV1[];
151
+ format?: undefined | 'v1';
152
+ }): Promise<MastraMessageV1[]>;
153
+ saveMessages(args: {
154
+ messages: MastraMessageV2[];
155
+ format: 'v2';
156
+ }): Promise<MastraMessageV2[]>;
157
+ getMessages(args: StorageGetMessagesArg & {
158
+ format?: 'v1';
159
+ }): Promise<MastraMessageV1[]>;
160
+ getMessages(args: StorageGetMessagesArg & {
161
+ format: 'v2';
162
+ }): Promise<MastraMessageV2[]>;
151
163
  private validateWorkflowParams;
152
164
  private validateWorkflowState;
153
165
  private normalizeSteps;
@@ -216,7 +228,7 @@ export declare interface CloudflareWorkersConfig {
216
228
  keyPrefix?: string;
217
229
  }
218
230
 
219
- export declare const createSampleMessage: (threadId: string) => MessageType_2;
231
+ export declare const createSampleMessage: (threadId: string, parts?: MastraMessageV2_3["content"]["parts"]) => MastraMessageV2_3;
220
232
 
221
233
  export declare const createSampleThread: () => {
222
234
  id: string;
@@ -278,7 +290,7 @@ export declare type ListOptions = {
278
290
 
279
291
  export declare type RecordTypes = {
280
292
  [TABLE_THREADS]: StorageThreadType;
281
- [TABLE_MESSAGES]: MessageType;
293
+ [TABLE_MESSAGES]: MastraMessageV2_2;
282
294
  [TABLE_WORKFLOW_SNAPSHOT]: WorkflowRunState;
283
295
  [TABLE_EVALS]: EvalRow;
284
296
  [TABLE_TRACES]: any;
@@ -1,9 +1,11 @@
1
1
  import type { EvalRow } from '@mastra/core/storage';
2
2
  import type { KVNamespace as KVNamespace_2 } from '@cloudflare/workers-types';
3
3
  import { KVNamespaceListKey as KVNamespaceListKey_2 } from '@cloudflare/workers-types';
4
+ import type { MastraMessageV1 } from '@mastra/core/memory';
5
+ import type { MastraMessageV2 } from '@mastra/core/agent';
6
+ import type { MastraMessageV2 as MastraMessageV2_2 } from '@mastra/core/memory';
7
+ import type { MastraMessageV2 as MastraMessageV2_3 } from '@mastra/core';
4
8
  import { MastraStorage } from '@mastra/core/storage';
5
- import type { MessageType } from '@mastra/core/memory';
6
- import type { MessageType as MessageType_2 } from '@mastra/core';
7
9
  import type { StorageColumn } from '@mastra/core/storage';
8
10
  import type { StorageGetMessagesArg } from '@mastra/core/storage';
9
11
  import type { StorageThreadType } from '@mastra/core/memory';
@@ -144,10 +146,20 @@ declare class CloudflareStore extends MastraStorage {
144
146
  }): Promise<void>;
145
147
  private getMessageKey;
146
148
  private getThreadMessagesKey;
147
- saveMessages({ messages }: {
148
- messages: MessageType[];
149
- }): Promise<MessageType[]>;
150
- getMessages<T extends MessageType = MessageType>({ threadId, selectBy }: StorageGetMessagesArg): Promise<T[]>;
149
+ saveMessages(args: {
150
+ messages: MastraMessageV1[];
151
+ format?: undefined | 'v1';
152
+ }): Promise<MastraMessageV1[]>;
153
+ saveMessages(args: {
154
+ messages: MastraMessageV2[];
155
+ format: 'v2';
156
+ }): Promise<MastraMessageV2[]>;
157
+ getMessages(args: StorageGetMessagesArg & {
158
+ format?: 'v1';
159
+ }): Promise<MastraMessageV1[]>;
160
+ getMessages(args: StorageGetMessagesArg & {
161
+ format: 'v2';
162
+ }): Promise<MastraMessageV2[]>;
151
163
  private validateWorkflowParams;
152
164
  private validateWorkflowState;
153
165
  private normalizeSteps;
@@ -216,7 +228,7 @@ export declare interface CloudflareWorkersConfig {
216
228
  keyPrefix?: string;
217
229
  }
218
230
 
219
- export declare const createSampleMessage: (threadId: string) => MessageType_2;
231
+ export declare const createSampleMessage: (threadId: string, parts?: MastraMessageV2_3["content"]["parts"]) => MastraMessageV2_3;
220
232
 
221
233
  export declare const createSampleThread: () => {
222
234
  id: string;
@@ -278,7 +290,7 @@ export declare type ListOptions = {
278
290
 
279
291
  export declare type RecordTypes = {
280
292
  [TABLE_THREADS]: StorageThreadType;
281
- [TABLE_MESSAGES]: MessageType;
293
+ [TABLE_MESSAGES]: MastraMessageV2_2;
282
294
  [TABLE_WORKFLOW_SNAPSHOT]: WorkflowRunState;
283
295
  [TABLE_EVALS]: EvalRow;
284
296
  [TABLE_TRACES]: any;
package/dist/index.cjs CHANGED
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var agent = require('@mastra/core/agent');
3
4
  var storage = require('@mastra/core/storage');
4
5
  var Cloudflare = require('cloudflare');
5
6
 
@@ -812,7 +813,8 @@ var CloudflareStore = class extends storage.MastraStorage {
812
813
  throw error;
813
814
  }
814
815
  }
815
- async saveMessages({ messages }) {
816
+ async saveMessages(args) {
817
+ const { messages, format = "v1" } = args;
816
818
  if (!Array.isArray(messages) || messages.length === 0) return [];
817
819
  try {
818
820
  const validatedMessages = messages.map((message, index) => {
@@ -833,10 +835,12 @@ var CloudflareStore = class extends storage.MastraStorage {
833
835
  };
834
836
  });
835
837
  const messagesByThread = validatedMessages.reduce((acc, message) => {
836
- if (!acc.has(message.threadId)) {
838
+ if (message.threadId && !acc.has(message.threadId)) {
837
839
  acc.set(message.threadId, []);
838
840
  }
839
- acc.get(message.threadId).push(message);
841
+ if (message.threadId) {
842
+ acc.get(message.threadId).push(message);
843
+ }
840
844
  return acc;
841
845
  }, /* @__PURE__ */ new Map());
842
846
  await Promise.all(
@@ -848,7 +852,7 @@ var CloudflareStore = class extends storage.MastraStorage {
848
852
  }
849
853
  await Promise.all(
850
854
  threadMessages.map(async (message) => {
851
- const key = await this.getMessageKey(threadId, message.id);
855
+ const key = this.getMessageKey(threadId, message.id);
852
856
  const { _index, ...cleanMessage } = message;
853
857
  const serializedMessage = {
854
858
  ...cleanMessage,
@@ -867,16 +871,24 @@ var CloudflareStore = class extends storage.MastraStorage {
867
871
  }
868
872
  })
869
873
  );
870
- return validatedMessages.map(
874
+ const prepared = validatedMessages.map(
871
875
  ({ _index, ...message }) => ({ ...message, type: message.type !== "v2" ? message.type : void 0 })
872
876
  );
877
+ const list = new agent.MessageList().add(prepared, "memory");
878
+ if (format === `v2`) return list.get.all.v2();
879
+ return list.get.all.v1();
873
880
  } catch (error) {
874
881
  const errorMessage = error instanceof Error ? error.message : String(error);
875
882
  this.logger.error(`Error saving messages: ${errorMessage}`);
876
883
  throw error;
877
884
  }
878
885
  }
879
- async getMessages({ threadId, selectBy }) {
886
+ async getMessages({
887
+ threadId,
888
+ resourceId,
889
+ selectBy,
890
+ format
891
+ }) {
880
892
  if (!threadId) throw new Error("threadId is required");
881
893
  let limit = 40;
882
894
  if (typeof selectBy?.last === "number") {
@@ -908,11 +920,14 @@ var CloudflareStore = class extends storage.MastraStorage {
908
920
  this.logger.warn(`Error sorting messages, falling back to creation time: ${errorMessage}`);
909
921
  messages.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
910
922
  }
911
- return messages.map(({ _index, ...message }) => ({
923
+ const prepared = messages.map(({ _index, ...message }) => ({
912
924
  ...message,
913
925
  type: message.type === `v2` ? void 0 : message.type,
914
926
  createdAt: this.ensureDate(message.createdAt)
915
927
  }));
928
+ const list = new agent.MessageList({ threadId, resourceId }).add(prepared, "memory");
929
+ if (format === `v1`) return list.get.all.v1();
930
+ return list.get.all.v2();
916
931
  } catch (error) {
917
932
  const errorMessage = error instanceof Error ? error.message : String(error);
918
933
  this.logger.error(`Error retrieving messages for thread ${threadId}: ${errorMessage}`);
@@ -946,6 +961,7 @@ var CloudflareStore = class extends storage.MastraStorage {
946
961
  runId: data.runId,
947
962
  value: data.value,
948
963
  context: data.context,
964
+ serializedStepGraph: data.serializedStepGraph,
949
965
  suspendedPaths: data.suspendedPaths || {},
950
966
  activePaths: data.activePaths || [],
951
967
  timestamp: data.timestamp || Date.now()
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { MessageList } from '@mastra/core/agent';
1
2
  import { MastraStorage, TABLE_THREADS, TABLE_MESSAGES, TABLE_WORKFLOW_SNAPSHOT, TABLE_EVALS, TABLE_TRACES } from '@mastra/core/storage';
2
3
  import Cloudflare from 'cloudflare';
3
4
 
@@ -806,7 +807,8 @@ var CloudflareStore = class extends MastraStorage {
806
807
  throw error;
807
808
  }
808
809
  }
809
- async saveMessages({ messages }) {
810
+ async saveMessages(args) {
811
+ const { messages, format = "v1" } = args;
810
812
  if (!Array.isArray(messages) || messages.length === 0) return [];
811
813
  try {
812
814
  const validatedMessages = messages.map((message, index) => {
@@ -827,10 +829,12 @@ var CloudflareStore = class extends MastraStorage {
827
829
  };
828
830
  });
829
831
  const messagesByThread = validatedMessages.reduce((acc, message) => {
830
- if (!acc.has(message.threadId)) {
832
+ if (message.threadId && !acc.has(message.threadId)) {
831
833
  acc.set(message.threadId, []);
832
834
  }
833
- acc.get(message.threadId).push(message);
835
+ if (message.threadId) {
836
+ acc.get(message.threadId).push(message);
837
+ }
834
838
  return acc;
835
839
  }, /* @__PURE__ */ new Map());
836
840
  await Promise.all(
@@ -842,7 +846,7 @@ var CloudflareStore = class extends MastraStorage {
842
846
  }
843
847
  await Promise.all(
844
848
  threadMessages.map(async (message) => {
845
- const key = await this.getMessageKey(threadId, message.id);
849
+ const key = this.getMessageKey(threadId, message.id);
846
850
  const { _index, ...cleanMessage } = message;
847
851
  const serializedMessage = {
848
852
  ...cleanMessage,
@@ -861,16 +865,24 @@ var CloudflareStore = class extends MastraStorage {
861
865
  }
862
866
  })
863
867
  );
864
- return validatedMessages.map(
868
+ const prepared = validatedMessages.map(
865
869
  ({ _index, ...message }) => ({ ...message, type: message.type !== "v2" ? message.type : void 0 })
866
870
  );
871
+ const list = new MessageList().add(prepared, "memory");
872
+ if (format === `v2`) return list.get.all.v2();
873
+ return list.get.all.v1();
867
874
  } catch (error) {
868
875
  const errorMessage = error instanceof Error ? error.message : String(error);
869
876
  this.logger.error(`Error saving messages: ${errorMessage}`);
870
877
  throw error;
871
878
  }
872
879
  }
873
- async getMessages({ threadId, selectBy }) {
880
+ async getMessages({
881
+ threadId,
882
+ resourceId,
883
+ selectBy,
884
+ format
885
+ }) {
874
886
  if (!threadId) throw new Error("threadId is required");
875
887
  let limit = 40;
876
888
  if (typeof selectBy?.last === "number") {
@@ -902,11 +914,14 @@ var CloudflareStore = class extends MastraStorage {
902
914
  this.logger.warn(`Error sorting messages, falling back to creation time: ${errorMessage}`);
903
915
  messages.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
904
916
  }
905
- return messages.map(({ _index, ...message }) => ({
917
+ const prepared = messages.map(({ _index, ...message }) => ({
906
918
  ...message,
907
919
  type: message.type === `v2` ? void 0 : message.type,
908
920
  createdAt: this.ensureDate(message.createdAt)
909
921
  }));
922
+ const list = new MessageList({ threadId, resourceId }).add(prepared, "memory");
923
+ if (format === `v1`) return list.get.all.v1();
924
+ return list.get.all.v2();
910
925
  } catch (error) {
911
926
  const errorMessage = error instanceof Error ? error.message : String(error);
912
927
  this.logger.error(`Error retrieving messages for thread ${threadId}: ${errorMessage}`);
@@ -940,6 +955,7 @@ var CloudflareStore = class extends MastraStorage {
940
955
  runId: data.runId,
941
956
  value: data.value,
942
957
  context: data.context,
958
+ serializedStepGraph: data.serializedStepGraph,
943
959
  suspendedPaths: data.suspendedPaths || {},
944
960
  activePaths: data.activePaths || [],
945
961
  timestamp: data.timestamp || Date.now()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/cloudflare",
3
- "version": "0.10.2-alpha.2",
3
+ "version": "0.10.2",
4
4
  "description": "Cloudflare provider for Mastra - includes db storage capabilities",
5
5
  "type": "module",
6
6
  "files": [
@@ -35,11 +35,11 @@
35
35
  "tsup": "^8.4.0",
36
36
  "typescript": "^5.8.2",
37
37
  "vitest": "^3.1.2",
38
- "@internal/lint": "0.0.7",
39
- "@mastra/core": "0.10.2-alpha.2"
38
+ "@internal/lint": "0.0.8",
39
+ "@mastra/core": "0.10.2"
40
40
  },
41
41
  "peerDependencies": {
42
- "@mastra/core": "^0.10.0-alpha.0"
42
+ "@mastra/core": "^0.10.2-alpha.0"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsup src/index.ts --format esm,cjs --experimental-dts --clean --treeshake=smallest --splitting",