@mastra/factory 0.19.2-alpha.7 → 0.20.0-alpha.10

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 (57) hide show
  1. package/dist/factory.js +7 -7
  2. package/dist/factory.js.map +1 -1
  3. package/dist/integrations/base.d.ts +5 -5
  4. package/dist/integrations/base.d.ts.map +1 -1
  5. package/dist/integrations/github/default-rules.d.ts +4 -4
  6. package/dist/integrations/github/default-rules.d.ts.map +1 -1
  7. package/dist/integrations/github/default-rules.js +13 -2
  8. package/dist/integrations/github/default-rules.js.map +1 -1
  9. package/dist/integrations/github/integration.js +1 -1
  10. package/dist/integrations/github/provenance.d.ts.map +1 -1
  11. package/dist/integrations/github/provenance.js +2 -1
  12. package/dist/integrations/github/provenance.js.map +1 -1
  13. package/dist/integrations/github/routes.d.ts.map +1 -1
  14. package/dist/integrations/github/routes.js +3 -1
  15. package/dist/integrations/github/routes.js.map +1 -1
  16. package/dist/integrations/github/rules.d.ts +8 -0
  17. package/dist/integrations/github/rules.d.ts.map +1 -1
  18. package/dist/integrations/github/rules.js +2 -2
  19. package/dist/integrations/github/rules.js.map +1 -1
  20. package/dist/integrations/github/session-subscriptions.js +1 -1
  21. package/dist/integrations/platform/github/integration.js +1 -1
  22. package/dist/integrations/slack/integration.js +1 -1
  23. package/dist/integrations/slack/integration.js.map +1 -1
  24. package/dist/integrations/slack/slack.d.ts +10 -11
  25. package/dist/integrations/slack/slack.d.ts.map +1 -1
  26. package/dist/integrations/slack/slack.js +36 -37
  27. package/dist/integrations/slack/slack.js.map +1 -1
  28. package/dist/routes/config.d.ts +15 -61
  29. package/dist/routes/config.d.ts.map +1 -1
  30. package/dist/routes/config.js +40 -217
  31. package/dist/routes/config.js.map +1 -1
  32. package/dist/routes/projects.d.ts.map +1 -1
  33. package/dist/routes/projects.js +2 -17
  34. package/dist/routes/projects.js.map +1 -1
  35. package/dist/routes/surface.d.ts +4 -4
  36. package/dist/routes/surface.d.ts.map +1 -1
  37. package/dist/routes/surface.js +3 -3
  38. package/dist/routes/surface.js.map +1 -1
  39. package/dist/session/default-model-hydration.d.ts +40 -0
  40. package/dist/session/default-model-hydration.d.ts.map +1 -0
  41. package/dist/session/default-model-hydration.js +45 -0
  42. package/dist/session/default-model-hydration.js.map +1 -0
  43. package/dist/session/factory-session.js +1 -1
  44. package/dist/session/factory-session.js.map +1 -1
  45. package/dist/storage/domains/model-defaults/base.d.ts +29 -0
  46. package/dist/storage/domains/model-defaults/base.d.ts.map +1 -0
  47. package/dist/storage/domains/model-defaults/base.js +79 -0
  48. package/dist/storage/domains/model-defaults/base.js.map +1 -0
  49. package/package.json +8 -8
  50. package/dist/session/model-pack-hydration.d.ts +0 -55
  51. package/dist/session/model-pack-hydration.d.ts.map +0 -1
  52. package/dist/session/model-pack-hydration.js +0 -56
  53. package/dist/session/model-pack-hydration.js.map +0 -1
  54. package/dist/storage/domains/model-packs/base.d.ts +0 -75
  55. package/dist/storage/domains/model-packs/base.d.ts.map +0 -1
  56. package/dist/storage/domains/model-packs/base.js +0 -185
  57. package/dist/storage/domains/model-packs/base.js.map +0 -1
@@ -1,185 +0,0 @@
1
- import { FactoryStorageDomain, UniqueViolationError } from "@mastra/core/storage";
2
- //#region src/storage/domains/model-packs/base.ts
3
- const MODEL_PACKS_SCHEMA = {
4
- name: "model_packs",
5
- columns: {
6
- id: { type: "uuid-pk" },
7
- org_id: { type: "text" },
8
- created_by: { type: "text" },
9
- name: { type: "text" },
10
- build_model_id: { type: "text" },
11
- plan_model_id: { type: "text" },
12
- fast_model_id: { type: "text" },
13
- created_at: { type: "timestamp" },
14
- updated_at: { type: "timestamp" }
15
- },
16
- indexes: [{
17
- name: "model_packs_org_name_idx",
18
- columns: ["org_id", "name"]
19
- }]
20
- };
21
- const ACTIVE_MODEL_PACKS_SCHEMA = {
22
- name: "active_model_packs",
23
- columns: {
24
- id: { type: "uuid-pk" },
25
- org_id: { type: "text" },
26
- user_id: { type: "text" },
27
- pack_id: { type: "text" },
28
- build_model_id: { type: "text" },
29
- plan_model_id: { type: "text" },
30
- fast_model_id: { type: "text" },
31
- updated_at: { type: "timestamp" }
32
- },
33
- uniqueIndexes: [{
34
- name: "active_model_packs_org_user_key",
35
- columns: ["org_id", "user_id"]
36
- }]
37
- };
38
- function toModelPack(row) {
39
- return {
40
- id: row.id,
41
- orgId: row.org_id,
42
- createdBy: row.created_by,
43
- name: row.name,
44
- models: {
45
- build: row.build_model_id,
46
- plan: row.plan_model_id,
47
- fast: row.fast_model_id
48
- },
49
- createdAt: row.created_at,
50
- updatedAt: row.updated_at
51
- };
52
- }
53
- function toActiveModelPack(row) {
54
- return {
55
- orgId: row.org_id,
56
- userId: row.user_id,
57
- packId: row.pack_id,
58
- models: {
59
- build: row.build_model_id,
60
- plan: row.plan_model_id,
61
- fast: row.fast_model_id
62
- },
63
- updatedAt: row.updated_at
64
- };
65
- }
66
- var ModelPacksStorage = class extends FactoryStorageDomain {
67
- constructor() {
68
- super("model-packs");
69
- }
70
- async init() {
71
- await this.ensureCollections([MODEL_PACKS_SCHEMA, ACTIVE_MODEL_PACKS_SCHEMA]);
72
- }
73
- async dangerouslyClearAll() {
74
- await this.ops.deleteMany("active_model_packs", {});
75
- await this.ops.deleteMany("model_packs", {});
76
- }
77
- get #db() {
78
- return this.ops;
79
- }
80
- /** Create or replace a pack by `(orgId, name)` — mirrors the settings.json upsert semantics. */
81
- async upsert({ orgId, userId, input }) {
82
- const now = /* @__PURE__ */ new Date();
83
- const existing = await this.#db.findOne("model_packs", {
84
- org_id: orgId,
85
- name: input.name
86
- });
87
- if (existing) {
88
- const row = await this.#db.updateAtomic("model_packs", {
89
- org_id: orgId,
90
- id: existing.id
91
- }, () => ({
92
- build_model_id: input.models.build,
93
- plan_model_id: input.models.plan,
94
- fast_model_id: input.models.fast,
95
- updated_at: now
96
- }));
97
- await this.#db.updateMany("active_model_packs", {
98
- org_id: orgId,
99
- pack_id: `custom:${existing.id}`
100
- }, {
101
- build_model_id: input.models.build,
102
- plan_model_id: input.models.plan,
103
- fast_model_id: input.models.fast,
104
- updated_at: now
105
- });
106
- return toModelPack(row ?? existing);
107
- }
108
- return toModelPack(await this.#db.insertOne("model_packs", {
109
- org_id: orgId,
110
- created_by: userId,
111
- name: input.name,
112
- build_model_id: input.models.build,
113
- plan_model_id: input.models.plan,
114
- fast_model_id: input.models.fast,
115
- created_at: now,
116
- updated_at: now
117
- }));
118
- }
119
- async list({ orgId }) {
120
- return (await this.#db.findMany("model_packs", { org_id: orgId }, { orderBy: [["name", "asc"]] })).map(toModelPack);
121
- }
122
- async get({ orgId, id }) {
123
- const row = await this.#db.findOne("model_packs", {
124
- org_id: orgId,
125
- id
126
- });
127
- return row ? toModelPack(row) : null;
128
- }
129
- async setActive({ orgId, userId, packId, models }) {
130
- const now = /* @__PURE__ */ new Date();
131
- const values = {
132
- pack_id: packId,
133
- build_model_id: models.build,
134
- plan_model_id: models.plan,
135
- fast_model_id: models.fast,
136
- updated_at: now
137
- };
138
- const updateExisting = () => this.#db.updateAtomic("active_model_packs", {
139
- org_id: orgId,
140
- user_id: userId
141
- }, () => values);
142
- const updated = await updateExisting();
143
- if (updated) return toActiveModelPack(updated);
144
- try {
145
- return toActiveModelPack(await this.#db.insertOne("active_model_packs", {
146
- org_id: orgId,
147
- user_id: userId,
148
- ...values
149
- }));
150
- } catch (error) {
151
- if (!(error instanceof UniqueViolationError)) throw error;
152
- const row = await updateExisting();
153
- if (!row) throw error;
154
- return toActiveModelPack(row);
155
- }
156
- }
157
- async getActive({ orgId, userId }) {
158
- const row = await this.#db.findOne("active_model_packs", {
159
- org_id: orgId,
160
- user_id: userId
161
- });
162
- return row ? toActiveModelPack(row) : null;
163
- }
164
- async clearActive({ orgId, userId }) {
165
- return await this.#db.deleteMany("active_model_packs", {
166
- org_id: orgId,
167
- user_id: userId
168
- }) > 0;
169
- }
170
- async delete({ orgId, id }) {
171
- const deleted = await this.#db.deleteMany("model_packs", {
172
- org_id: orgId,
173
- id
174
- }) > 0;
175
- if (deleted) await this.#db.deleteMany("active_model_packs", {
176
- org_id: orgId,
177
- pack_id: `custom:${id}`
178
- });
179
- return deleted;
180
- }
181
- };
182
- //#endregion
183
- export { ACTIVE_MODEL_PACKS_SCHEMA, MODEL_PACKS_SCHEMA, ModelPacksStorage };
184
-
185
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","names":["#db"],"sources":["../../../../src/storage/domains/model-packs/base.ts"],"sourcesContent":["import { FactoryStorageDomain, UniqueViolationError } from '@mastra/core/storage';\nimport type { CollectionSchema, FactoryStorageOps } from '@mastra/core/storage';\n\n/** A saved custom model pack: one model per mode (build / plan / fast). */\nexport interface ModelPackRecord {\n id: string;\n orgId: string;\n createdBy: string;\n name: string;\n models: { build: string; plan: string; fast: string };\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface UpsertModelPackInput {\n name: string;\n models: { build: string; plan: string; fast: string };\n}\n\nexport interface ActiveModelPackRecord {\n orgId: string;\n userId: string;\n packId: string;\n models: { build: string; plan: string; fast: string };\n updatedAt: Date;\n}\n\nexport const MODEL_PACKS_SCHEMA: CollectionSchema = {\n name: 'model_packs',\n columns: {\n id: { type: 'uuid-pk' },\n org_id: { type: 'text' },\n created_by: { type: 'text' },\n name: { type: 'text' },\n build_model_id: { type: 'text' },\n plan_model_id: { type: 'text' },\n fast_model_id: { type: 'text' },\n created_at: { type: 'timestamp' },\n updated_at: { type: 'timestamp' },\n },\n indexes: [{ name: 'model_packs_org_name_idx', columns: ['org_id', 'name'] }],\n};\n\nexport const ACTIVE_MODEL_PACKS_SCHEMA: CollectionSchema = {\n name: 'active_model_packs',\n columns: {\n id: { type: 'uuid-pk' },\n org_id: { type: 'text' },\n user_id: { type: 'text' },\n pack_id: { type: 'text' },\n build_model_id: { type: 'text' },\n plan_model_id: { type: 'text' },\n fast_model_id: { type: 'text' },\n updated_at: { type: 'timestamp' },\n },\n uniqueIndexes: [{ name: 'active_model_packs_org_user_key', columns: ['org_id', 'user_id'] }],\n};\n\ninterface ModelPackDbRow extends Record<string, unknown> {\n id: string;\n org_id: string;\n created_by: string;\n name: string;\n build_model_id: string;\n plan_model_id: string;\n fast_model_id: string;\n created_at: Date;\n updated_at: Date;\n}\n\ninterface ActiveModelPackDbRow extends Record<string, unknown> {\n id: string;\n org_id: string;\n user_id: string;\n pack_id: string;\n build_model_id: string;\n plan_model_id: string;\n fast_model_id: string;\n updated_at: Date;\n}\n\nfunction toModelPack(row: ModelPackDbRow): ModelPackRecord {\n return {\n id: row.id,\n orgId: row.org_id,\n createdBy: row.created_by,\n name: row.name,\n models: { build: row.build_model_id, plan: row.plan_model_id, fast: row.fast_model_id },\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction toActiveModelPack(row: ActiveModelPackDbRow): ActiveModelPackRecord {\n return {\n orgId: row.org_id,\n userId: row.user_id,\n packId: row.pack_id,\n models: { build: row.build_model_id, plan: row.plan_model_id, fast: row.fast_model_id },\n updatedAt: row.updated_at,\n };\n}\n\nexport class ModelPacksStorage extends FactoryStorageDomain {\n constructor() {\n super('model-packs');\n }\n\n async init(): Promise<void> {\n await this.ensureCollections([MODEL_PACKS_SCHEMA, ACTIVE_MODEL_PACKS_SCHEMA]);\n }\n\n async dangerouslyClearAll(): Promise<void> {\n await this.ops.deleteMany('active_model_packs', {});\n await this.ops.deleteMany('model_packs', {});\n }\n\n get #db(): FactoryStorageOps {\n return this.ops;\n }\n\n /** Create or replace a pack by `(orgId, name)` — mirrors the settings.json upsert semantics. */\n async upsert({\n orgId,\n userId,\n input,\n }: {\n orgId: string;\n userId: string;\n input: UpsertModelPackInput;\n }): Promise<ModelPackRecord> {\n const now = new Date();\n const existing = await this.#db.findOne<ModelPackDbRow>('model_packs', { org_id: orgId, name: input.name });\n if (existing) {\n const row = await this.#db.updateAtomic<ModelPackDbRow>(\n 'model_packs',\n { org_id: orgId, id: existing.id },\n () => ({\n build_model_id: input.models.build,\n plan_model_id: input.models.plan,\n fast_model_id: input.models.fast,\n updated_at: now,\n }),\n );\n await this.#db.updateMany(\n 'active_model_packs',\n { org_id: orgId, pack_id: `custom:${existing.id}` },\n {\n build_model_id: input.models.build,\n plan_model_id: input.models.plan,\n fast_model_id: input.models.fast,\n updated_at: now,\n },\n );\n return toModelPack(row ?? existing);\n }\n const row = await this.#db.insertOne<ModelPackDbRow>('model_packs', {\n org_id: orgId,\n created_by: userId,\n name: input.name,\n build_model_id: input.models.build,\n plan_model_id: input.models.plan,\n fast_model_id: input.models.fast,\n created_at: now,\n updated_at: now,\n });\n return toModelPack(row);\n }\n\n async list({ orgId }: { orgId: string }): Promise<ModelPackRecord[]> {\n const rows = await this.#db.findMany<ModelPackDbRow>(\n 'model_packs',\n { org_id: orgId },\n { orderBy: [['name', 'asc']] },\n );\n return rows.map(toModelPack);\n }\n\n async get({ orgId, id }: { orgId: string; id: string }): Promise<ModelPackRecord | null> {\n const row = await this.#db.findOne<ModelPackDbRow>('model_packs', { org_id: orgId, id });\n return row ? toModelPack(row) : null;\n }\n\n async setActive({\n orgId,\n userId,\n packId,\n models,\n }: {\n orgId: string;\n userId: string;\n packId: string;\n models: ActiveModelPackRecord['models'];\n }): Promise<ActiveModelPackRecord> {\n const now = new Date();\n const values = {\n pack_id: packId,\n build_model_id: models.build,\n plan_model_id: models.plan,\n fast_model_id: models.fast,\n updated_at: now,\n };\n const updateExisting = () =>\n this.#db.updateAtomic<ActiveModelPackDbRow>(\n 'active_model_packs',\n { org_id: orgId, user_id: userId },\n () => values,\n );\n\n const updated = await updateExisting();\n if (updated) return toActiveModelPack(updated);\n\n try {\n return toActiveModelPack(\n await this.#db.insertOne<ActiveModelPackDbRow>('active_model_packs', {\n org_id: orgId,\n user_id: userId,\n ...values,\n }),\n );\n } catch (error) {\n if (!(error instanceof UniqueViolationError)) throw error;\n const row = await updateExisting();\n if (!row) throw error;\n return toActiveModelPack(row);\n }\n }\n\n async getActive({ orgId, userId }: { orgId: string; userId: string }): Promise<ActiveModelPackRecord | null> {\n const row = await this.#db.findOne<ActiveModelPackDbRow>('active_model_packs', {\n org_id: orgId,\n user_id: userId,\n });\n return row ? toActiveModelPack(row) : null;\n }\n\n async clearActive({ orgId, userId }: { orgId: string; userId: string }): Promise<boolean> {\n return (await this.#db.deleteMany('active_model_packs', { org_id: orgId, user_id: userId })) > 0;\n }\n\n async delete({ orgId, id }: { orgId: string; id: string }): Promise<boolean> {\n const deleted = (await this.#db.deleteMany('model_packs', { org_id: orgId, id })) > 0;\n if (deleted) {\n await this.#db.deleteMany('active_model_packs', { org_id: orgId, pack_id: `custom:${id}` });\n }\n return deleted;\n }\n}\n"],"mappings":"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"}