@mastra/cloudflare 1.3.1 → 1.3.2-alpha.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.
Files changed (33) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/{chunk-ZBYNKKG6.cjs → chunk-3SMRLX2Z.cjs} +141 -6
  3. package/dist/chunk-3SMRLX2Z.cjs.map +1 -0
  4. package/dist/{chunk-NSFHQATX.js → chunk-7THHWTAZ.js} +276 -7
  5. package/dist/chunk-7THHWTAZ.js.map +1 -0
  6. package/dist/{chunk-O57GFJSB.js → chunk-HJZCD37D.js} +142 -8
  7. package/dist/chunk-HJZCD37D.js.map +1 -0
  8. package/dist/{chunk-E4MARS3A.cjs → chunk-T2WSIEXQ.cjs} +275 -5
  9. package/dist/chunk-T2WSIEXQ.cjs.map +1 -0
  10. package/dist/do/index.cjs +11 -7
  11. package/dist/do/index.d.ts +2 -1
  12. package/dist/do/index.d.ts.map +1 -1
  13. package/dist/do/index.js +1 -1
  14. package/dist/do/storage/domains/background-tasks/index.d.ts +18 -0
  15. package/dist/do/storage/domains/background-tasks/index.d.ts.map +1 -0
  16. package/dist/docs/SKILL.md +1 -1
  17. package/dist/docs/assets/SOURCE_MAP.json +20 -20
  18. package/dist/docs/references/reference-storage-cloudflare.md +3 -3
  19. package/dist/index.cjs +13 -13
  20. package/dist/index.js +2 -2
  21. package/dist/kv/index.cjs +10 -6
  22. package/dist/kv/index.d.ts +2 -1
  23. package/dist/kv/index.d.ts.map +1 -1
  24. package/dist/kv/index.js +1 -1
  25. package/dist/kv/storage/domains/background-tasks/index.d.ts +17 -0
  26. package/dist/kv/storage/domains/background-tasks/index.d.ts.map +1 -0
  27. package/dist/kv/storage/types.d.ts +1 -0
  28. package/dist/kv/storage/types.d.ts.map +1 -1
  29. package/package.json +7 -7
  30. package/dist/chunk-E4MARS3A.cjs.map +0 -1
  31. package/dist/chunk-NSFHQATX.js.map +0 -1
  32. package/dist/chunk-O57GFJSB.js.map +0 -1
  33. package/dist/chunk-ZBYNKKG6.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
2
- import { createStorageErrorId, getSqlType, getDefaultValue, MemoryStorage, TABLE_SCHEMAS, TABLE_THREADS, TABLE_MESSAGES, TABLE_RESOURCES, ensureDate, normalizePerPage, calculatePagination, serializeDate, ScoresStorage, TABLE_SCORERS, WorkflowsStorage, TABLE_WORKFLOW_SNAPSHOT, MastraCompositeStore, transformScoreRow as transformScoreRow$1 } from '@mastra/core/storage';
3
- import { MessageList } from '@mastra/core/agent';
2
+ import { createStorageErrorId, getSqlType, getDefaultValue, BackgroundTasksStorage, TABLE_SCHEMAS, TABLE_BACKGROUND_TASKS, MemoryStorage, TABLE_THREADS, TABLE_MESSAGES, TABLE_RESOURCES, ensureDate, normalizePerPage, calculatePagination, serializeDate, ScoresStorage, TABLE_SCORERS, WorkflowsStorage, TABLE_WORKFLOW_SNAPSHOT, MastraCompositeStore, transformScoreRow as transformScoreRow$1 } from '@mastra/core/storage';
4
3
  import { MastraBase } from '@mastra/core/base';
5
4
  import { parseSqlIdentifier } from '@mastra/core/utils';
5
+ import { MessageList } from '@mastra/core/agent';
6
6
  import { saveScorePayloadSchema } from '@mastra/core/evals';
7
7
 
8
8
  // src/do/index.ts
@@ -657,7 +657,275 @@ var DODB = class extends MastraBase {
657
657
  }
658
658
  };
659
659
 
660
- // src/do/storage/domains/memory/index.ts
660
+ // src/do/storage/domains/background-tasks/index.ts
661
+ function serializeJson(v) {
662
+ if (typeof v === "object" && v != null) return JSON.stringify(v);
663
+ return v ?? void 0;
664
+ }
665
+ function rowToTask(row) {
666
+ const parseJson = (v) => {
667
+ if (v == null) return void 0;
668
+ if (typeof v === "string") {
669
+ try {
670
+ return JSON.parse(v);
671
+ } catch {
672
+ return v;
673
+ }
674
+ }
675
+ return v;
676
+ };
677
+ const asDate = (v) => v ? new Date(String(v)) : void 0;
678
+ return {
679
+ id: String(row.id),
680
+ status: String(row.status),
681
+ toolName: String(row.tool_name),
682
+ toolCallId: String(row.tool_call_id),
683
+ args: parseJson(row.args) ?? {},
684
+ agentId: String(row.agent_id),
685
+ threadId: row.thread_id != null ? String(row.thread_id) : void 0,
686
+ resourceId: row.resource_id != null ? String(row.resource_id) : void 0,
687
+ runId: String(row.run_id),
688
+ result: parseJson(row.result),
689
+ error: parseJson(row.error),
690
+ retryCount: Number(row.retry_count ?? 0),
691
+ maxRetries: Number(row.max_retries ?? 0),
692
+ timeoutMs: Number(row.timeout_ms ?? 3e5),
693
+ createdAt: asDate(row.createdAt) ?? /* @__PURE__ */ new Date(),
694
+ startedAt: asDate(row.startedAt),
695
+ completedAt: asDate(row.completedAt)
696
+ };
697
+ }
698
+ function dateColumnName(col) {
699
+ return col;
700
+ }
701
+ var BackgroundTasksStorageDO = class extends BackgroundTasksStorage {
702
+ #db;
703
+ constructor(config) {
704
+ super();
705
+ this.#db = new DODB(config);
706
+ }
707
+ async init() {
708
+ await this.#db.createTable({
709
+ tableName: TABLE_BACKGROUND_TASKS,
710
+ schema: TABLE_SCHEMAS[TABLE_BACKGROUND_TASKS]
711
+ });
712
+ }
713
+ async dangerouslyClearAll() {
714
+ await this.#db.clearTable({ tableName: TABLE_BACKGROUND_TASKS });
715
+ }
716
+ async createTask(task) {
717
+ try {
718
+ await this.#db.insert({
719
+ tableName: TABLE_BACKGROUND_TASKS,
720
+ record: {
721
+ id: task.id,
722
+ tool_call_id: task.toolCallId,
723
+ tool_name: task.toolName,
724
+ agent_id: task.agentId,
725
+ thread_id: task.threadId ?? null,
726
+ resource_id: task.resourceId ?? null,
727
+ run_id: task.runId,
728
+ status: task.status,
729
+ args: serializeJson(task.args),
730
+ result: serializeJson(task.result),
731
+ error: serializeJson(task.error),
732
+ retry_count: task.retryCount,
733
+ max_retries: task.maxRetries,
734
+ timeout_ms: task.timeoutMs,
735
+ createdAt: task.createdAt.toISOString(),
736
+ startedAt: task.startedAt?.toISOString() ?? null,
737
+ completedAt: task.completedAt?.toISOString() ?? null
738
+ }
739
+ });
740
+ } catch (error) {
741
+ throw new MastraError(
742
+ {
743
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_CREATE", "FAILED"),
744
+ domain: ErrorDomain.STORAGE,
745
+ category: ErrorCategory.THIRD_PARTY
746
+ },
747
+ error
748
+ );
749
+ }
750
+ }
751
+ async updateTask(taskId, update) {
752
+ const columns = [];
753
+ const values = [];
754
+ if ("status" in update) {
755
+ columns.push("status");
756
+ values.push(update.status);
757
+ }
758
+ if ("result" in update) {
759
+ columns.push("result");
760
+ values.push(serializeJson(update.result));
761
+ }
762
+ if ("error" in update) {
763
+ columns.push("error");
764
+ values.push(serializeJson(update.error));
765
+ }
766
+ if ("retryCount" in update) {
767
+ columns.push("retry_count");
768
+ values.push(update.retryCount);
769
+ }
770
+ if ("startedAt" in update) {
771
+ columns.push("startedAt");
772
+ values.push(update.startedAt?.toISOString() ?? null);
773
+ }
774
+ if ("completedAt" in update) {
775
+ columns.push("completedAt");
776
+ values.push(update.completedAt?.toISOString() ?? null);
777
+ }
778
+ if (columns.length === 0) return;
779
+ try {
780
+ const fullTableName = this.#db.getTableName(TABLE_BACKGROUND_TASKS);
781
+ const query = createSqlBuilder().update(fullTableName, columns, values).where("id = ?", taskId);
782
+ const { sql, params } = query.build();
783
+ await this.#db.executeQuery({ sql, params });
784
+ } catch (error) {
785
+ throw new MastraError(
786
+ {
787
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_UPDATE", "FAILED"),
788
+ domain: ErrorDomain.STORAGE,
789
+ category: ErrorCategory.THIRD_PARTY
790
+ },
791
+ error
792
+ );
793
+ }
794
+ }
795
+ async getTask(taskId) {
796
+ try {
797
+ const fullTableName = this.#db.getTableName(TABLE_BACKGROUND_TASKS);
798
+ const query = createSqlBuilder().select("*").from(fullTableName).where("id = ?", taskId);
799
+ const { sql, params } = query.build();
800
+ const result = await this.#db.executeQuery({ sql, params, first: true });
801
+ if (!result) return null;
802
+ const deserialized = {};
803
+ for (const [k, v] of Object.entries(result)) {
804
+ deserialized[k] = deserializeValue(v);
805
+ }
806
+ return rowToTask(deserialized);
807
+ } catch (error) {
808
+ throw new MastraError(
809
+ {
810
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_GET", "FAILED"),
811
+ domain: ErrorDomain.STORAGE,
812
+ category: ErrorCategory.THIRD_PARTY
813
+ },
814
+ error
815
+ );
816
+ }
817
+ }
818
+ async listTasks(filter) {
819
+ try {
820
+ const fullTableName = this.#db.getTableName(TABLE_BACKGROUND_TASKS);
821
+ const applyConditions = (builder) => {
822
+ if (filter.status) {
823
+ const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
824
+ const placeholders = statuses.map(() => "?").join(", ");
825
+ builder.whereAnd(`status IN (${placeholders})`, ...statuses);
826
+ }
827
+ if (filter.agentId) builder.whereAnd("agent_id = ?", filter.agentId);
828
+ if (filter.threadId) builder.whereAnd("thread_id = ?", filter.threadId);
829
+ if (filter.resourceId) builder.whereAnd("resource_id = ?", filter.resourceId);
830
+ if (filter.toolName) builder.whereAnd("tool_name = ?", filter.toolName);
831
+ if (filter.runId) builder.whereAnd("run_id = ?", filter.runId);
832
+ const dateCol = dateColumnName(filter.dateFilterBy ?? "createdAt");
833
+ if (filter.fromDate) builder.whereAnd(`${dateCol} >= ?`, filter.fromDate.toISOString());
834
+ if (filter.toDate) builder.whereAnd(`${dateCol} < ?`, filter.toDate.toISOString());
835
+ };
836
+ const countQuery = createSqlBuilder().count().from(fullTableName);
837
+ applyConditions(countQuery);
838
+ const { sql: countSql, params: countParams } = countQuery.build();
839
+ const countResult = await this.#db.executeQuery({ sql: countSql, params: countParams, first: true });
840
+ const total = Number(countResult?.count ?? 0);
841
+ const dataQuery = createSqlBuilder().select("*").from(fullTableName);
842
+ applyConditions(dataQuery);
843
+ const orderBy = dateColumnName(filter.orderBy ?? "createdAt");
844
+ const direction = filter.orderDirection === "desc" ? "DESC" : "ASC";
845
+ dataQuery.orderBy(orderBy, direction);
846
+ if (filter.perPage != null) {
847
+ dataQuery.limit(filter.perPage);
848
+ if (filter.page != null) {
849
+ dataQuery.offset(filter.page * filter.perPage);
850
+ }
851
+ }
852
+ const { sql, params } = dataQuery.build();
853
+ const rows = await this.#db.executeQuery({ sql, params });
854
+ const tasks = (rows ?? []).map((row) => {
855
+ const deserialized = {};
856
+ for (const [k, v] of Object.entries(row)) {
857
+ deserialized[k] = deserializeValue(v);
858
+ }
859
+ return rowToTask(deserialized);
860
+ });
861
+ return { tasks, total };
862
+ } catch (error) {
863
+ throw new MastraError(
864
+ {
865
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_LIST", "FAILED"),
866
+ domain: ErrorDomain.STORAGE,
867
+ category: ErrorCategory.THIRD_PARTY
868
+ },
869
+ error
870
+ );
871
+ }
872
+ }
873
+ async deleteTask(taskId) {
874
+ try {
875
+ const fullTableName = this.#db.getTableName(TABLE_BACKGROUND_TASKS);
876
+ const query = createSqlBuilder().delete(fullTableName).where("id = ?", taskId);
877
+ const { sql, params } = query.build();
878
+ await this.#db.executeQuery({ sql, params });
879
+ } catch (error) {
880
+ throw new MastraError(
881
+ {
882
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_DELETE", "FAILED"),
883
+ domain: ErrorDomain.STORAGE,
884
+ category: ErrorCategory.THIRD_PARTY
885
+ },
886
+ error
887
+ );
888
+ }
889
+ }
890
+ async deleteTasks(filter) {
891
+ try {
892
+ const fullTableName = this.#db.getTableName(TABLE_BACKGROUND_TASKS);
893
+ const query = createSqlBuilder().delete(fullTableName);
894
+ if (filter.status) {
895
+ const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
896
+ const placeholders = statuses.map(() => "?").join(", ");
897
+ query.whereAnd(`status IN (${placeholders})`, ...statuses);
898
+ }
899
+ if (filter.agentId) query.whereAnd("agent_id = ?", filter.agentId);
900
+ if (filter.threadId) query.whereAnd("thread_id = ?", filter.threadId);
901
+ if (filter.resourceId) query.whereAnd("resource_id = ?", filter.resourceId);
902
+ if (filter.toolName) query.whereAnd("tool_name = ?", filter.toolName);
903
+ if (filter.runId) query.whereAnd("run_id = ?", filter.runId);
904
+ const dateCol = dateColumnName(filter.dateFilterBy ?? "createdAt");
905
+ if (filter.fromDate) query.whereAnd(`${dateCol} >= ?`, filter.fromDate.toISOString());
906
+ if (filter.toDate) query.whereAnd(`${dateCol} < ?`, filter.toDate.toISOString());
907
+ const { sql, params } = query.build();
908
+ await this.#db.executeQuery({ sql, params });
909
+ } catch (error) {
910
+ throw new MastraError(
911
+ {
912
+ id: createStorageErrorId("CLOUDFLARE_DO", "BACKGROUND_TASKS_DELETE_MANY", "FAILED"),
913
+ domain: ErrorDomain.STORAGE,
914
+ category: ErrorCategory.THIRD_PARTY
915
+ },
916
+ error
917
+ );
918
+ }
919
+ }
920
+ async getRunningCount() {
921
+ const { total } = await this.listTasks({ status: "running" });
922
+ return total;
923
+ }
924
+ async getRunningCountByAgent(agentId) {
925
+ const { total } = await this.listTasks({ status: "running", agentId });
926
+ return total;
927
+ }
928
+ };
661
929
  var MemoryStorageDO = class extends MemoryStorage {
662
930
  #db;
663
931
  constructor(config) {
@@ -2098,7 +2366,8 @@ var CloudflareDOStorage = class extends MastraCompositeStore {
2098
2366
  this.stores = {
2099
2367
  memory: new MemoryStorageDO(domainConfig),
2100
2368
  workflows: new WorkflowsStorageDO(domainConfig),
2101
- scores: new ScoresStorageDO(domainConfig)
2369
+ scores: new ScoresStorageDO(domainConfig),
2370
+ backgroundTasks: new BackgroundTasksStorageDO(domainConfig)
2102
2371
  };
2103
2372
  this.logger.info("Using Durable Objects SqlStorage");
2104
2373
  } catch (error) {
@@ -2123,6 +2392,6 @@ var CloudflareDOStorage = class extends MastraCompositeStore {
2123
2392
  };
2124
2393
  var DOStore = CloudflareDOStorage;
2125
2394
 
2126
- export { CloudflareDOStorage, DODB, DOStore, MemoryStorageDO, ScoresStorageDO, WorkflowsStorageDO };
2127
- //# sourceMappingURL=chunk-NSFHQATX.js.map
2128
- //# sourceMappingURL=chunk-NSFHQATX.js.map
2395
+ export { BackgroundTasksStorageDO, CloudflareDOStorage, DODB, DOStore, MemoryStorageDO, ScoresStorageDO, WorkflowsStorageDO };
2396
+ //# sourceMappingURL=chunk-7THHWTAZ.js.map
2397
+ //# sourceMappingURL=chunk-7THHWTAZ.js.map