@mastra/factory 0.23.0-alpha.5 → 0.23.0-alpha.7

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,5 +1,5 @@
1
- import { Route } from "./route.js";
2
1
  import { FACTORY_ROUTE_CONTRACTS } from "./contracts.js";
2
+ import { Route } from "./route.js";
3
3
  import { auditRequestContext } from "../storage/domains/audit/domain.js";
4
4
  import { registerApiRoute } from "@mastra/core/server";
5
5
  //#region src/routes/automation-runs.ts
@@ -1,8 +1,8 @@
1
1
  import { redactCredentials } from "../environment/build.js";
2
2
  import { ensureSchedule, invalidCronMessage, readSchedule, scheduleIdFor } from "../environment/build-schedule.js";
3
3
  import { ACTIVE_RUN_BINDING_STAGES } from "../storage/domains/work-items/base.js";
4
- import { Route } from "./route.js";
5
4
  import { FACTORY_ROUTE_CONTRACTS } from "./contracts.js";
5
+ import { Route } from "./route.js";
6
6
  import { registerApiRoute } from "@mastra/core/server";
7
7
  import { describeFactorySandbox, normalizeFactorySandboxSettings } from "@mastra/core/workspace";
8
8
  import { MastraError } from "@mastra/core/error";
@@ -3,8 +3,8 @@ import "../boards/index.js";
3
3
  import { effectiveModelScope } from "../storage/domains/projects/base.js";
4
4
  import { FACTORY_PULL_REQUEST_RECONCILIATION_KEY, FACTORY_RULE_MATERIALIZATION_KEY, WorkItemRelationError, WorkItemUpdateConflictError } from "../storage/domains/work-items/base.js";
5
5
  import { EXTERNAL_SOURCE_MISSING_KEY } from "../integrations/issue-reconciler.js";
6
- import { Route } from "./route.js";
7
6
  import { FACTORY_ROUTE_CONTRACTS } from "./contracts.js";
7
+ import { Route } from "./route.js";
8
8
  import { FactoryStartTransitionError, WorkItemRepositoryError } from "../rules/start-coordinator.js";
9
9
  import { auditRequestOrigin } from "../storage/domains/audit/domain.js";
10
10
  import { decisionRetryable, overtakenDecisionIds } from "../rules/decision-applicability.js";
@@ -1 +1 @@
1
- {"version":3,"file":"credential-policy.d.ts","sourceRoot":"","sources":["../../src/session/credential-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,UAAU,8BAA8B;IACtC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAClD,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;IAClE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;CAC7D;AAED,uGAAuG;AACvG,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAEvC;AAED,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAC7C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,CA0DrH"}
1
+ {"version":3,"file":"credential-policy.d.ts","sourceRoot":"","sources":["../../src/session/credential-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAIvE,UAAU,8BAA8B;IACtC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAClD,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;IAClE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;CAC7D;AAED,uGAAuG;AACvG,wBAAsB,8BAA8B,CAClD,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAEvC;AAED,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAC7C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,SAAS,CAAC,CAsErH"}
@@ -1,7 +1,9 @@
1
1
  import { effectiveModelScope } from "../storage/domains/projects/base.js";
2
2
  import { parseSupervisorResourceId } from "../supervisor/session.js";
3
+ import { UUID_PATTERN } from "../routes/contracts.js";
3
4
  import { resolveAuthenticatedCredentialTenant } from "@mastra/code-sdk/agents/credential-resolver";
4
5
  //#region src/session/credential-policy.ts
6
+ const FACTORY_PROJECT_ID = new RegExp(UUID_PATTERN);
5
7
  /** Resolve billing authority from authenticated identity and durable bindings, never session state. */
6
8
  async function resolveFactoryCredentialTenant(requestContext, deps) {
7
9
  return (await resolveFactoryModelPolicy(requestContext, deps))?.tenant;
@@ -36,6 +38,15 @@ async function resolveFactoryModelPolicy(requestContext, deps) {
36
38
  }) : null;
37
39
  if (!sourceSession) {
38
40
  if (!binding && (controller.resourceId === principal.userId || controller.resourceId.startsWith("channel:"))) return { tenant: principal };
41
+ const factoryProject = !binding && FACTORY_PROJECT_ID.test(controller.resourceId) ? await deps.projects.getById({ id: controller.resourceId }) : null;
42
+ if (factoryProject && factoryProject.orgId === principal.orgId) return {
43
+ factoryProjectId: factoryProject.id,
44
+ factoryDefaultModelId: factoryProject.defaultModelId,
45
+ tenant: {
46
+ ...principal,
47
+ credentialScope: effectiveModelScope(factoryProject.modelScope, "session")
48
+ }
49
+ };
39
50
  throw new Error("Factory session ownership is unavailable.");
40
51
  }
41
52
  if (sourceSession.orgId !== principal.orgId || sourceSession.visibility === "private" && sourceSession.userId !== principal.userId) throw new Error("Factory session is not available to the current user.");
@@ -1 +1 @@
1
- {"version":3,"file":"credential-policy.js","names":[],"sources":["../../src/session/credential-policy.ts"],"sourcesContent":["import {\n resolveAuthenticatedCredentialTenant,\n type CredentialTenant,\n} from '@mastra/code-sdk/agents/credential-resolver';\nimport type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport type { RequestContext } from '@mastra/core/request-context';\n\nimport { effectiveModelScope } from '../storage/domains/projects/base.js';\nimport type { FactoryProjectsStorage } from '../storage/domains/projects/base.js';\nimport type { WorkItemsStorage } from '../storage/domains/work-items/base.js';\nimport { parseSupervisorResourceId } from '../supervisor/session.js';\nimport type { SourceControlSessionLookup } from './factory-session.js';\n\ninterface FactoryModelPolicyDependencies {\n projects: Pick<FactoryProjectsStorage, 'getById'>;\n sourceControl: Pick<SourceControlSessionLookup, 'getBySessionId'>;\n workItems: Pick<WorkItemsStorage, 'findRunBindingByThread'>;\n}\n\n/** Resolve billing authority from authenticated identity and durable bindings, never session state. */\nexport async function resolveFactoryCredentialTenant(\n requestContext: RequestContext,\n deps: FactoryModelPolicyDependencies,\n): Promise<CredentialTenant | undefined> {\n return (await resolveFactoryModelPolicy(requestContext, deps))?.tenant;\n}\n\n/** Shared invocation and model-picker policy; no client-supplied owner or scope is trusted. */\nexport async function resolveFactoryModelPolicy(\n requestContext: RequestContext,\n deps: FactoryModelPolicyDependencies,\n): Promise<{ tenant: CredentialTenant; factoryProjectId?: string; factoryDefaultModelId?: string | null } | undefined> {\n const principal = resolveAuthenticatedCredentialTenant(requestContext);\n if (!principal) return undefined;\n const controller = requestContext.get('controller') as AgentControllerRequestContext | undefined;\n if (!controller?.resourceId) return { tenant: principal };\n\n const supervisorProjectId = parseSupervisorResourceId(controller.resourceId);\n if (supervisorProjectId) {\n const project = await deps.projects.getById({ id: supervisorProjectId });\n if (!project || project.orgId !== principal.orgId) throw new Error('Factory model policy is unavailable.');\n // Supervisor turns are Factory-owned automation, so a hybrid Factory bills them as runs.\n return {\n factoryProjectId: project.id,\n factoryDefaultModelId: project.defaultModelId,\n tenant: {\n orgId: project.orgId,\n userId: project.createdBy,\n credentialScope: effectiveModelScope(project.modelScope, 'run'),\n },\n };\n }\n\n const sourceSession = await deps.sourceControl.getBySessionId(controller.resourceId);\n const binding =\n principal.orgId && controller.threadId\n ? await deps.workItems.findRunBindingByThread({\n orgId: principal.orgId,\n resourceId: controller.resourceId,\n sessionId: controller.resourceId,\n threadId: controller.threadId,\n rejectAmbiguous: true,\n })\n : null;\n if (!sourceSession) {\n if (!binding && (controller.resourceId === principal.userId || controller.resourceId.startsWith('channel:')))\n return { tenant: principal };\n throw new Error('Factory session ownership is unavailable.');\n }\n if (\n sourceSession.orgId !== principal.orgId ||\n (sourceSession.visibility === 'private' && sourceSession.userId !== principal.userId)\n ) {\n throw new Error('Factory session is not available to the current user.');\n }\n if (!sourceSession.factoryProjectId) throw new Error('Factory session ownership is unavailable.');\n const projectId = binding?.factoryProjectId ?? sourceSession.factoryProjectId;\n const project = await deps.projects.getById({ id: projectId });\n if (!project || project.orgId !== sourceSession.orgId) throw new Error('Factory model policy is unavailable.');\n // Work-item threads keep their billing scope after revocation; history never restores run authority.\n return {\n factoryProjectId: project.id,\n factoryDefaultModelId: project.defaultModelId,\n tenant: {\n orgId: project.orgId,\n userId: sourceSession.userId,\n credentialScope: effectiveModelScope(project.modelScope, binding ? 'run' : 'session'),\n },\n };\n}\n"],"mappings":";;;;;AAoBA,eAAsB,+BACpB,gBACA,MACuC;CACvC,QAAQ,MAAM,0BAA0B,gBAAgB,IAAI,EAAA,EAAI;AAClE;;AAGA,eAAsB,0BACpB,gBACA,MACqH;CACrH,MAAM,YAAY,qCAAqC,cAAc;CACrE,IAAI,CAAC,WAAW,OAAO,KAAA;CACvB,MAAM,aAAa,eAAe,IAAI,YAAY;CAClD,IAAI,CAAC,YAAY,YAAY,OAAO,EAAE,QAAQ,UAAU;CAExD,MAAM,sBAAsB,0BAA0B,WAAW,UAAU;CAC3E,IAAI,qBAAqB;EACvB,MAAM,UAAU,MAAM,KAAK,SAAS,QAAQ,EAAE,IAAI,oBAAoB,CAAC;EACvE,IAAI,CAAC,WAAW,QAAQ,UAAU,UAAU,OAAO,MAAM,IAAI,MAAM,sCAAsC;EAEzG,OAAO;GACL,kBAAkB,QAAQ;GAC1B,uBAAuB,QAAQ;GAC/B,QAAQ;IACN,OAAO,QAAQ;IACf,QAAQ,QAAQ;IAChB,iBAAiB,oBAAoB,QAAQ,YAAY,KAAK;GAChE;EACF;CACF;CAEA,MAAM,gBAAgB,MAAM,KAAK,cAAc,eAAe,WAAW,UAAU;CACnF,MAAM,UACJ,UAAU,SAAS,WAAW,WAC1B,MAAM,KAAK,UAAU,uBAAuB;EAC1C,OAAO,UAAU;EACjB,YAAY,WAAW;EACvB,WAAW,WAAW;EACtB,UAAU,WAAW;EACrB,iBAAiB;CACnB,CAAC,IACD;CACN,IAAI,CAAC,eAAe;EAClB,IAAI,CAAC,YAAY,WAAW,eAAe,UAAU,UAAU,WAAW,WAAW,WAAW,UAAU,IACxG,OAAO,EAAE,QAAQ,UAAU;EAC7B,MAAM,IAAI,MAAM,2CAA2C;CAC7D;CACA,IACE,cAAc,UAAU,UAAU,SACjC,cAAc,eAAe,aAAa,cAAc,WAAW,UAAU,QAE9E,MAAM,IAAI,MAAM,uDAAuD;CAEzE,IAAI,CAAC,cAAc,kBAAkB,MAAM,IAAI,MAAM,2CAA2C;CAChG,MAAM,YAAY,SAAS,oBAAoB,cAAc;CAC7D,MAAM,UAAU,MAAM,KAAK,SAAS,QAAQ,EAAE,IAAI,UAAU,CAAC;CAC7D,IAAI,CAAC,WAAW,QAAQ,UAAU,cAAc,OAAO,MAAM,IAAI,MAAM,sCAAsC;CAE7G,OAAO;EACL,kBAAkB,QAAQ;EAC1B,uBAAuB,QAAQ;EAC/B,QAAQ;GACN,OAAO,QAAQ;GACf,QAAQ,cAAc;GACtB,iBAAiB,oBAAoB,QAAQ,YAAY,UAAU,QAAQ,SAAS;EACtF;CACF;AACF"}
1
+ {"version":3,"file":"credential-policy.js","names":[],"sources":["../../src/session/credential-policy.ts"],"sourcesContent":["import {\n resolveAuthenticatedCredentialTenant,\n type CredentialTenant,\n} from '@mastra/code-sdk/agents/credential-resolver';\nimport type { AgentControllerRequestContext } from '@mastra/core/agent-controller';\nimport type { RequestContext } from '@mastra/core/request-context';\n\nimport { UUID_PATTERN } from '../routes/contracts.js';\nimport { effectiveModelScope } from '../storage/domains/projects/base.js';\nimport type { FactoryProjectsStorage } from '../storage/domains/projects/base.js';\nimport type { WorkItemsStorage } from '../storage/domains/work-items/base.js';\nimport { parseSupervisorResourceId } from '../supervisor/session.js';\nimport type { SourceControlSessionLookup } from './factory-session.js';\n\nconst FACTORY_PROJECT_ID = new RegExp(UUID_PATTERN);\n\ninterface FactoryModelPolicyDependencies {\n projects: Pick<FactoryProjectsStorage, 'getById'>;\n sourceControl: Pick<SourceControlSessionLookup, 'getBySessionId'>;\n workItems: Pick<WorkItemsStorage, 'findRunBindingByThread'>;\n}\n\n/** Resolve billing authority from authenticated identity and durable bindings, never session state. */\nexport async function resolveFactoryCredentialTenant(\n requestContext: RequestContext,\n deps: FactoryModelPolicyDependencies,\n): Promise<CredentialTenant | undefined> {\n return (await resolveFactoryModelPolicy(requestContext, deps))?.tenant;\n}\n\n/** Shared invocation and model-picker policy; no client-supplied owner or scope is trusted. */\nexport async function resolveFactoryModelPolicy(\n requestContext: RequestContext,\n deps: FactoryModelPolicyDependencies,\n): Promise<{ tenant: CredentialTenant; factoryProjectId?: string; factoryDefaultModelId?: string | null } | undefined> {\n const principal = resolveAuthenticatedCredentialTenant(requestContext);\n if (!principal) return undefined;\n const controller = requestContext.get('controller') as AgentControllerRequestContext | undefined;\n if (!controller?.resourceId) return { tenant: principal };\n\n const supervisorProjectId = parseSupervisorResourceId(controller.resourceId);\n if (supervisorProjectId) {\n const project = await deps.projects.getById({ id: supervisorProjectId });\n if (!project || project.orgId !== principal.orgId) throw new Error('Factory model policy is unavailable.');\n // Supervisor turns are Factory-owned automation, so a hybrid Factory bills them as runs.\n return {\n factoryProjectId: project.id,\n factoryDefaultModelId: project.defaultModelId,\n tenant: {\n orgId: project.orgId,\n userId: project.createdBy,\n credentialScope: effectiveModelScope(project.modelScope, 'run'),\n },\n };\n }\n\n const sourceSession = await deps.sourceControl.getBySessionId(controller.resourceId);\n const binding =\n principal.orgId && controller.threadId\n ? await deps.workItems.findRunBindingByThread({\n orgId: principal.orgId,\n resourceId: controller.resourceId,\n sessionId: controller.resourceId,\n threadId: controller.threadId,\n rejectAmbiguous: true,\n })\n : null;\n if (!sourceSession) {\n if (!binding && (controller.resourceId === principal.userId || controller.resourceId.startsWith('channel:')))\n return { tenant: principal };\n // Session-less Factory pages address the Factory itself: the resourceId is the project id.\n const factoryProject =\n !binding && FACTORY_PROJECT_ID.test(controller.resourceId)\n ? await deps.projects.getById({ id: controller.resourceId })\n : null;\n if (factoryProject && factoryProject.orgId === principal.orgId) {\n return {\n factoryProjectId: factoryProject.id,\n factoryDefaultModelId: factoryProject.defaultModelId,\n tenant: { ...principal, credentialScope: effectiveModelScope(factoryProject.modelScope, 'session') },\n };\n }\n throw new Error('Factory session ownership is unavailable.');\n }\n if (\n sourceSession.orgId !== principal.orgId ||\n (sourceSession.visibility === 'private' && sourceSession.userId !== principal.userId)\n ) {\n throw new Error('Factory session is not available to the current user.');\n }\n if (!sourceSession.factoryProjectId) throw new Error('Factory session ownership is unavailable.');\n const projectId = binding?.factoryProjectId ?? sourceSession.factoryProjectId;\n const project = await deps.projects.getById({ id: projectId });\n if (!project || project.orgId !== sourceSession.orgId) throw new Error('Factory model policy is unavailable.');\n // Work-item threads keep their billing scope after revocation; history never restores run authority.\n return {\n factoryProjectId: project.id,\n factoryDefaultModelId: project.defaultModelId,\n tenant: {\n orgId: project.orgId,\n userId: sourceSession.userId,\n credentialScope: effectiveModelScope(project.modelScope, binding ? 'run' : 'session'),\n },\n };\n}\n"],"mappings":";;;;;AAcA,MAAM,qBAAqB,IAAI,OAAO,YAAY;;AASlD,eAAsB,+BACpB,gBACA,MACuC;CACvC,QAAQ,MAAM,0BAA0B,gBAAgB,IAAI,EAAA,EAAI;AAClE;;AAGA,eAAsB,0BACpB,gBACA,MACqH;CACrH,MAAM,YAAY,qCAAqC,cAAc;CACrE,IAAI,CAAC,WAAW,OAAO,KAAA;CACvB,MAAM,aAAa,eAAe,IAAI,YAAY;CAClD,IAAI,CAAC,YAAY,YAAY,OAAO,EAAE,QAAQ,UAAU;CAExD,MAAM,sBAAsB,0BAA0B,WAAW,UAAU;CAC3E,IAAI,qBAAqB;EACvB,MAAM,UAAU,MAAM,KAAK,SAAS,QAAQ,EAAE,IAAI,oBAAoB,CAAC;EACvE,IAAI,CAAC,WAAW,QAAQ,UAAU,UAAU,OAAO,MAAM,IAAI,MAAM,sCAAsC;EAEzG,OAAO;GACL,kBAAkB,QAAQ;GAC1B,uBAAuB,QAAQ;GAC/B,QAAQ;IACN,OAAO,QAAQ;IACf,QAAQ,QAAQ;IAChB,iBAAiB,oBAAoB,QAAQ,YAAY,KAAK;GAChE;EACF;CACF;CAEA,MAAM,gBAAgB,MAAM,KAAK,cAAc,eAAe,WAAW,UAAU;CACnF,MAAM,UACJ,UAAU,SAAS,WAAW,WAC1B,MAAM,KAAK,UAAU,uBAAuB;EAC1C,OAAO,UAAU;EACjB,YAAY,WAAW;EACvB,WAAW,WAAW;EACtB,UAAU,WAAW;EACrB,iBAAiB;CACnB,CAAC,IACD;CACN,IAAI,CAAC,eAAe;EAClB,IAAI,CAAC,YAAY,WAAW,eAAe,UAAU,UAAU,WAAW,WAAW,WAAW,UAAU,IACxG,OAAO,EAAE,QAAQ,UAAU;EAE7B,MAAM,iBACJ,CAAC,WAAW,mBAAmB,KAAK,WAAW,UAAU,IACrD,MAAM,KAAK,SAAS,QAAQ,EAAE,IAAI,WAAW,WAAW,CAAC,IACzD;EACN,IAAI,kBAAkB,eAAe,UAAU,UAAU,OACvD,OAAO;GACL,kBAAkB,eAAe;GACjC,uBAAuB,eAAe;GACtC,QAAQ;IAAE,GAAG;IAAW,iBAAiB,oBAAoB,eAAe,YAAY,SAAS;GAAE;EACrG;EAEF,MAAM,IAAI,MAAM,2CAA2C;CAC7D;CACA,IACE,cAAc,UAAU,UAAU,SACjC,cAAc,eAAe,aAAa,cAAc,WAAW,UAAU,QAE9E,MAAM,IAAI,MAAM,uDAAuD;CAEzE,IAAI,CAAC,cAAc,kBAAkB,MAAM,IAAI,MAAM,2CAA2C;CAChG,MAAM,YAAY,SAAS,oBAAoB,cAAc;CAC7D,MAAM,UAAU,MAAM,KAAK,SAAS,QAAQ,EAAE,IAAI,UAAU,CAAC;CAC7D,IAAI,CAAC,WAAW,QAAQ,UAAU,cAAc,OAAO,MAAM,IAAI,MAAM,sCAAsC;CAE7G,OAAO;EACL,kBAAkB,QAAQ;EAC1B,uBAAuB,QAAQ;EAC/B,QAAQ;GACN,OAAO,QAAQ;GACf,QAAQ,cAAc;GACtB,iBAAiB,oBAAoB,QAAQ,YAAY,UAAU,QAAQ,SAAS;EACtF;CACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/factory",
3
- "version": "0.23.0-alpha.5",
3
+ "version": "0.23.0-alpha.7",
4
4
  "description": "Mastra Software Factory module: the server core behind the Mastra Software Factory — storage domains, integrations, and surfaces for agent-powered software delivery",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -57,11 +57,11 @@
57
57
  "hono": "^4.13.7",
58
58
  "posthog-node": "^5.46.1",
59
59
  "zod": "^4.6.4",
60
- "@mastra/auth-studio": "1.3.9",
61
60
  "@mastra/auth-workos": "1.6.6",
62
- "@mastra/code-sdk": "1.14.0-alpha.5",
61
+ "@mastra/code-sdk": "1.14.0-alpha.7",
62
+ "@mastra/core": "1.78.0-alpha.7",
63
63
  "@mastra/slack": "1.7.2",
64
- "@mastra/core": "1.78.0-alpha.5"
64
+ "@mastra/auth-studio": "1.3.9"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/node": "22.20.1",
@@ -71,11 +71,11 @@
71
71
  "typescript-eslint": "^8.57.0",
72
72
  "vitest": "4.1.11",
73
73
  "@internal/lint": "0.0.143",
74
- "@mastra/libsql": "1.26.2-alpha.0",
75
74
  "@mastra/pg": "1.31.2-alpha.1",
76
- "@mastra/server": "1.78.0-alpha.5",
77
- "@internal/workspace": "0.0.15",
78
- "@internal/types-builder": "0.0.118"
75
+ "@mastra/server": "1.78.0-alpha.7",
76
+ "@mastra/libsql": "1.26.2-alpha.0",
77
+ "@internal/types-builder": "0.0.118",
78
+ "@internal/workspace": "0.0.15"
79
79
  },
80
80
  "engines": {
81
81
  "node": ">=22.19.0"