@mastra/server 1.78.0-alpha.5 → 1.78.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.
Files changed (103) hide show
  1. package/dist/{agents-CKSEPpk1.cjs → agents-D9vpLghy.cjs} +8 -1
  2. package/dist/{agents-CKSEPpk1.cjs.map → agents-D9vpLghy.cjs.map} +1 -1
  3. package/dist/{agents-CW_JJZOf.js → agents-DNWDET4U.js} +3 -2
  4. package/dist/{agents-CW_JJZOf.js.map → agents-DNWDET4U.js.map} +1 -1
  5. package/dist/{api-schema-manifest-7Mkcahcz.cjs → api-schema-manifest-CmnpeFqd.cjs} +2 -2
  6. package/dist/{api-schema-manifest-7Mkcahcz.cjs.map → api-schema-manifest-CmnpeFqd.cjs.map} +1 -1
  7. package/dist/{api-schema-manifest-BSc3N7kx.js → api-schema-manifest-D8dn-tBo.js} +2 -2
  8. package/dist/{api-schema-manifest-BSc3N7kx.js.map → api-schema-manifest-D8dn-tBo.js.map} +1 -1
  9. package/dist/{background-tasks-Cu89GYC6.cjs → background-tasks-CP6TSFhc.cjs} +2 -2
  10. package/dist/{background-tasks-Cu89GYC6.cjs.map → background-tasks-CP6TSFhc.cjs.map} +1 -1
  11. package/dist/{background-tasks-_e2S8LLH.js → background-tasks-Clbud7G4.js} +2 -2
  12. package/dist/{background-tasks-_e2S8LLH.js.map → background-tasks-Clbud7G4.js.map} +1 -1
  13. package/dist/docs/SKILL.md +1 -1
  14. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  15. package/dist/docs/references/reference-server-routes.md +3 -0
  16. package/dist/{editor-builder-CmUsqdZq.cjs → editor-builder-BOmAPurW.cjs} +2 -2
  17. package/dist/{editor-builder-CmUsqdZq.cjs.map → editor-builder-BOmAPurW.cjs.map} +1 -1
  18. package/dist/{editor-builder-DHXbVwxu.js → editor-builder-CeLVu_FT.js} +2 -2
  19. package/dist/{editor-builder-DHXbVwxu.js.map → editor-builder-CeLVu_FT.js.map} +1 -1
  20. package/dist/{editor-builder-CYkaYf6-.js → editor-builder-DHqCWGd2.js} +2 -2
  21. package/dist/{editor-builder-CYkaYf6-.js.map → editor-builder-DHqCWGd2.js.map} +1 -1
  22. package/dist/{editor-builder-BtcTQbAC.cjs → editor-builder-DqHKoEDx.cjs} +2 -2
  23. package/dist/{editor-builder-BtcTQbAC.cjs.map → editor-builder-DqHKoEDx.cjs.map} +1 -1
  24. package/dist/{routes-BOpfBZw5.cjs → routes-BwzE4nnm.cjs} +6 -5
  25. package/dist/routes-BwzE4nnm.cjs.map +1 -0
  26. package/dist/{routes-CccVLchZ.js → routes-DlbTsFpA.js} +7 -6
  27. package/dist/routes-DlbTsFpA.js.map +1 -0
  28. package/dist/{schedules-6XpznRPz.js → schedules-BRdVmFYi.js} +2 -2
  29. package/dist/{schedules-6XpznRPz.js.map → schedules-BRdVmFYi.js.map} +1 -1
  30. package/dist/{schedules-BiqVrJH7.cjs → schedules-DvLXX2nW.cjs} +2 -2
  31. package/dist/{schedules-BiqVrJH7.cjs.map → schedules-DvLXX2nW.cjs.map} +1 -1
  32. package/dist/server/handlers/agent-builder.cjs +1 -1
  33. package/dist/server/handlers/agent-builder.js +1 -1
  34. package/dist/server/handlers/agent-controller.cjs +1 -1
  35. package/dist/server/handlers/agent-controller.js +1 -1
  36. package/dist/server/handlers/agents.cjs +39 -10
  37. package/dist/server/handlers/agents.cjs.map +1 -1
  38. package/dist/server/handlers/agents.d.ts +2113 -0
  39. package/dist/server/handlers/agents.d.ts.map +1 -1
  40. package/dist/server/handlers/agents.js +39 -11
  41. package/dist/server/handlers/agents.js.map +1 -1
  42. package/dist/server/handlers/background-tasks.cjs +1 -1
  43. package/dist/server/handlers/background-tasks.js +1 -1
  44. package/dist/server/handlers/conversations.cjs +1 -1
  45. package/dist/server/handlers/conversations.js +1 -1
  46. package/dist/server/handlers/editor-builder.cjs +1 -1
  47. package/dist/server/handlers/editor-builder.js +1 -1
  48. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  49. package/dist/server/handlers/favorites-enrichment.js +1 -1
  50. package/dist/server/handlers/logs.cjs +1 -1
  51. package/dist/server/handlers/logs.js +1 -1
  52. package/dist/server/handlers/memory.cjs +1 -1
  53. package/dist/server/handlers/memory.js +1 -1
  54. package/dist/server/handlers/plans.cjs +2 -2
  55. package/dist/server/handlers/plans.js +2 -2
  56. package/dist/server/handlers/responses.cjs +1 -1
  57. package/dist/server/handlers/responses.js +1 -1
  58. package/dist/server/handlers/responses.storage.cjs +1 -1
  59. package/dist/server/handlers/responses.storage.js +1 -1
  60. package/dist/server/handlers/schedules.cjs +1 -1
  61. package/dist/server/handlers/schedules.js +1 -1
  62. package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
  63. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  64. package/dist/server/handlers/stored-agents.cjs +1 -1
  65. package/dist/server/handlers/stored-agents.js +1 -1
  66. package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
  67. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  68. package/dist/server/handlers/stored-skills.cjs +1 -1
  69. package/dist/server/handlers/stored-skills.js +1 -1
  70. package/dist/server/handlers/system.cjs +1 -1
  71. package/dist/server/handlers/system.js +1 -1
  72. package/dist/server/handlers/tools.cjs +2 -2
  73. package/dist/server/handlers/tools.js +2 -2
  74. package/dist/server/handlers/utils.cjs +1 -1
  75. package/dist/server/handlers/utils.d.ts +14 -3
  76. package/dist/server/handlers/utils.d.ts.map +1 -1
  77. package/dist/server/handlers/utils.js +1 -1
  78. package/dist/server/handlers/workflow-builder.cjs +1 -1
  79. package/dist/server/handlers/workflow-builder.js +1 -1
  80. package/dist/server/handlers/workflows.cjs +37 -20
  81. package/dist/server/handlers/workflows.cjs.map +1 -1
  82. package/dist/server/handlers/workflows.d.ts.map +1 -1
  83. package/dist/server/handlers/workflows.js +37 -20
  84. package/dist/server/handlers/workflows.js.map +1 -1
  85. package/dist/server/schemas/agents.d.ts +199 -0
  86. package/dist/server/schemas/agents.d.ts.map +1 -1
  87. package/dist/server/schemas/index.cjs +3 -2
  88. package/dist/server/schemas/index.js +3 -3
  89. package/dist/server/server-adapter/index.cjs +1 -1
  90. package/dist/server/server-adapter/index.js +1 -1
  91. package/dist/server/server-adapter/routes/agents.d.ts +2 -1
  92. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
  93. package/dist/{utils-BF2Kbju4.cjs → utils-DdGLbkOl.cjs} +21 -5
  94. package/dist/{utils-BF2Kbju4.cjs.map → utils-DdGLbkOl.cjs.map} +1 -1
  95. package/dist/{utils-GVYTDbr2.js → utils-mIFmRM_j.js} +21 -5
  96. package/dist/{utils-GVYTDbr2.js.map → utils-mIFmRM_j.js.map} +1 -1
  97. package/dist/{workflow-builder-UVflLOfv.cjs → workflow-builder-BM6Nen0q.cjs} +4 -4
  98. package/dist/{workflow-builder-UVflLOfv.cjs.map → workflow-builder-BM6Nen0q.cjs.map} +1 -1
  99. package/dist/{workflow-builder-U2jFH8o7.js → workflow-builder-BnKKH8iT.js} +4 -4
  100. package/dist/{workflow-builder-U2jFH8o7.js.map → workflow-builder-BnKKH8iT.js.map} +1 -1
  101. package/package.json +6 -6
  102. package/dist/routes-BOpfBZw5.cjs.map +0 -1
  103. package/dist/routes-CccVLchZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schedules-6XpznRPz.js","names":["z"],"sources":["../src/server/schemas/schedules.ts","../src/server/handlers/schedules.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const scheduleStatusSchema = z.enum(['active', 'paused', 'completed']);\n\n/** Statuses a caller may set directly; `completed` is only reached by the scheduler. */\nconst settableScheduleStatusSchema = z.enum(['active', 'paused']);\n\n/** Mirrors the core `AgentSignalType` union. */\nconst signalTypeSchema = z.enum(['user', 'state', 'reactive', 'notification', 'user-message', 'system-reminder']);\n\n/** Attributes rendered onto the signal's XML tag. */\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n);\n\n/** Behavior + attributes applied when the thread is already streaming. */\nconst ifActiveSchema = z.object({\n behavior: z.enum(['deliver', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\n/**\n * Behavior + attributes applied when the thread is idle, plus a serializable\n * subset of stream options forwarded to the woken run.\n */\nconst ifIdleSchema = z.object({\n behavior: z.enum(['wake', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n streamOptions: z\n .object({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n});\n\nexport const workflowRunStatusSchema = z.enum([\n 'running',\n 'success',\n 'failed',\n 'tripwire',\n 'suspended',\n 'waiting',\n 'pending',\n 'canceled',\n 'bailed',\n 'paused',\n 'skipped',\n]);\n\nexport const scheduleRunSummarySchema = z.object({\n status: workflowRunStatusSchema,\n startedAt: z.number().optional(),\n completedAt: z.number().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n});\n\n/**\n * Flat agent-schedule view. Persisted as a `Schedule` row with a\n * `target.type === 'agent'` variant; the HTTP surface flattens that\n * representation to the fields a user cares about (cron, prompt, threading,\n * status, lifecycle) without exposing the schedule plumbing. Discriminate\n * from workflow schedules by the presence of `agentId`.\n */\nexport const agentScheduleSchema = z.object({\n id: z.string(),\n agentId: z.string(),\n /** Mirror of the workflow-schedule discriminator — always absent on agent schedules. */\n workflowId: z.undefined().optional(),\n /** Workflow-run summary — never hydrated for agent schedules. */\n lastRun: z.undefined().optional(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n prompt: z.string(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/**\n * Flat workflow-schedule view. Discriminate from agent schedules by the\n * presence of `workflowId`.\n */\nexport const workflowScheduleSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n /** Mirror of the agent-schedule discriminator — always absent on workflow schedules. */\n agentId: z.undefined().optional(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n lastRun: scheduleRunSummarySchema.optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/** Union of the flat views returned by the unified `/schedules` surface. */\nexport const scheduleSchema = z.union([agentScheduleSchema, workflowScheduleSchema]);\n\nexport const scheduleTriggerOutcomeSchema = z.enum([\n 'published',\n 'succeeded',\n 'delivered',\n 'persisted',\n 'discarded',\n 'skipped',\n 'aborted',\n 'failed',\n // Legacy queue/notification outcomes — no longer written, but trigger rows\n // persisted by older builds may still carry them. Kept readable so the\n // response validator does not reject historical rows. Mirrors the core\n // ScheduleTriggerOutcome union.\n 'acked',\n 'alerted',\n 'deferred',\n 'appended-from-queue',\n 'dropped-stale',\n 'dropped-superseded',\n 'dropped-busy',\n]);\n\nexport const scheduleTriggerKindSchema = z.enum(['schedule-fire', 'queue-drain', 'manual']);\n\nexport const scheduleTriggerResponseSchema = z.object({\n id: z.string().optional(),\n scheduleId: z.string(),\n runId: z.string().nullable(),\n scheduledFireAt: z.number(),\n actualFireAt: z.number(),\n outcome: scheduleTriggerOutcomeSchema,\n error: z.string().optional(),\n triggerKind: scheduleTriggerKindSchema.optional(),\n parentTriggerId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n run: scheduleRunSummarySchema.optional(),\n});\n\nexport const listSchedulesQuerySchema = z.object({\n agentId: z.string().optional(),\n workflowId: z.string().optional(),\n status: scheduleStatusSchema.optional(),\n /** Agent-schedule only: match the target threadId. */\n threadId: z.string().optional(),\n /** Match the schedule's resourceId (agent thread identity or workflow run attribution). */\n resourceId: z.string().optional(),\n /** Agent-schedule only: match the free-form target name. */\n name: z.string().optional(),\n});\n\nexport const listSchedulesResponseSchema = z.object({\n schedules: z.array(scheduleSchema),\n});\n\nexport const scheduleIdPathParams = z.object({\n scheduleId: z.string(),\n});\n\n/**\n * Agent variant of the create body — targets an agent by `agentId`. Strict so\n * a body carrying both `agentId` and `workflowId` is rejected as ambiguous\n * instead of silently matching the agent branch of the union.\n */\nconst createAgentScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `agent_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n agentId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n prompt: z.string(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Workflow variant of the create body — targets a workflow by `workflowId`.\n * Strict so ambiguous bodies (both ids) are rejected by the union.\n */\nconst createWorkflowScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `schedule_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n workflowId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body for POST /schedules. Discriminated by which target id is present:\n * `agentId` creates an agent schedule, `workflowId` a workflow schedule.\n * Both variants are strict, so a body carrying both ids (or unknown keys)\n * fails validation instead of silently dropping fields.\n */\nexport const createScheduleBodySchema = z.union([createAgentScheduleBodySchema, createWorkflowScheduleBodySchema]);\n\n/**\n * Body for PATCH /schedules/:scheduleId — partial update. Fields apply to\n * the matching target type; agent-only fields on a workflow schedule are\n * rejected by the service. An agent schedule's `threadId` / `resourceId` are\n * intentionally not editable; they are part of its identity — to re-target,\n * delete and recreate. A workflow schedule's `resourceId` is only run-attribution\n * metadata (not identity) and may be updated.\n */\nexport const updateScheduleBodySchema = z.object({\n cron: z.string().optional(),\n timezone: z.string().optional(),\n status: settableScheduleStatusSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Agent-schedule fields\n prompt: z.string().optional(),\n name: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n // Workflow-schedule fields\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\nexport const deleteScheduleResponseSchema = z.object({\n message: z.string(),\n});\n\n/** Response for POST /schedules/:scheduleId/run. */\nexport const runScheduleResponseSchema = z.object({\n scheduleId: z.string(),\n claimId: z.string(),\n scheduledFireAt: z.number(),\n});\n\nexport const listScheduleTriggersQuerySchema = z.object({\n limit: z.coerce.number().int().positive().optional(),\n fromActualFireAt: z.coerce.number().int().nonnegative().optional(),\n toActualFireAt: z.coerce.number().int().nonnegative().optional(),\n});\n\nexport const listScheduleTriggersResponseSchema = z.object({\n triggers: z.array(scheduleTriggerResponseSchema),\n});\n\nexport type AgentScheduleResponse = z.infer<typeof agentScheduleSchema>;\nexport type WorkflowScheduleResponse = z.infer<typeof workflowScheduleSchema>;\nexport type ScheduleResponse = z.infer<typeof scheduleSchema>;\n","import type { Mastra } from '@mastra/core';\nimport type { AgentSchedule, AnySchedule, WorkflowSchedule } from '@mastra/core/schedules';\nimport type { WorkflowRunState } from '@mastra/core/workflows';\nimport { HTTPException } from '../http-exception';\nimport {\n createScheduleBodySchema,\n deleteScheduleResponseSchema,\n listSchedulesQuerySchema,\n listSchedulesResponseSchema,\n listScheduleTriggersQuerySchema,\n listScheduleTriggersResponseSchema,\n runScheduleResponseSchema,\n scheduleIdPathParams,\n scheduleSchema,\n updateScheduleBodySchema,\n} from '../schemas/schedules';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getPublicWorkflowById } from './utils';\n\ntype RunSummary = {\n status: WorkflowRunState['status'];\n startedAt?: number;\n completedAt?: number;\n durationMs?: number;\n error?: string;\n};\n\nfunction snapshotToRunSummary(run: {\n snapshot: WorkflowRunState | string;\n createdAt: Date;\n updatedAt: Date;\n}): RunSummary | undefined {\n const snapshot = typeof run.snapshot === 'string' ? null : run.snapshot;\n if (!snapshot) return undefined;\n const startedAt = run.createdAt instanceof Date ? run.createdAt.getTime() : undefined;\n const isTerminal =\n snapshot.status === 'success' ||\n snapshot.status === 'failed' ||\n snapshot.status === 'canceled' ||\n snapshot.status === 'bailed' ||\n snapshot.status === 'tripwire';\n const completedAt = isTerminal ? (run.updatedAt instanceof Date ? run.updatedAt.getTime() : undefined) : undefined;\n const durationMs = startedAt !== undefined && completedAt !== undefined ? completedAt - startedAt : undefined;\n return {\n status: snapshot.status,\n startedAt,\n completedAt,\n durationMs,\n error: snapshot.error?.message,\n };\n}\n\nasync function fetchRunSummary(mastra: Mastra, workflowName: string, runId: string): Promise<RunSummary | undefined> {\n try {\n const workflowsStore = await mastra.getStorage()?.getStore('workflows');\n const run = await workflowsStore?.getWorkflowRunById({ runId, workflowName });\n if (!run) return undefined;\n return snapshotToRunSummary(run);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Attach a `lastRun` summary to workflow schedules. Agent schedules pass\n * through unchanged — their `lastRunId` is an agent run, not a workflow run.\n */\nasync function hydrateScheduleResponse(\n mastra: Mastra,\n schedule: AnySchedule,\n): Promise<AgentSchedule | (WorkflowSchedule & { lastRun?: RunSummary })> {\n if (!schedule.workflowId || !schedule.lastRunId) {\n return schedule;\n }\n const lastRun = await fetchRunSummary(mastra, schedule.workflowId, schedule.lastRunId);\n return lastRun ? { ...schedule, lastRun } : schedule;\n}\n\n/**\n * Resolve a schedule by id via `mastra.schedules`. Returns 404 for missing\n * rows so handlers surface a clean HTTP error instead of a service error.\n */\nasync function loadSchedule(mastra: Mastra, scheduleId: string): Promise<AnySchedule> {\n const schedule = await mastra.schedules.get(scheduleId);\n if (!schedule) {\n throw new HTTPException(404, { message: 'Schedule not found' });\n }\n return schedule;\n}\n\nexport const LIST_SCHEDULES_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules',\n responseType: 'json' as const,\n queryParamSchema: listSchedulesQuerySchema,\n responseSchema: listSchedulesResponseSchema,\n summary: 'List schedules',\n description:\n 'Returns all schedules — agent schedules and workflow schedules — optionally filtered by agentId, workflowId, or status. Completed schedules are excluded unless requested with a status filter. Agent schedules can additionally be filtered by threadId, resourceId, or name.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, workflowId, status, threadId, resourceId, name }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n // Schedules domain not configured — there are no schedules to return.\n return { schedules: [] };\n }\n const schedules = await mastra.schedules.list({ agentId, workflowId, status, threadId, resourceId, name });\n const hydrated = await Promise.all(schedules.map(schedule => hydrateScheduleResponse(mastra, schedule)));\n return { schedules: hydrated };\n },\n});\n\nexport const GET_SCHEDULE_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Get a schedule by ID',\n description: 'Returns a single schedule by its id.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n const schedule = await loadSchedule(mastra, scheduleId);\n return hydrateScheduleResponse(mastra, schedule);\n },\n});\n\nexport const CREATE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules',\n responseType: 'json' as const,\n bodySchema: createScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Create a schedule',\n description:\n 'Creates a new schedule. Pass `agentId` (plus `prompt`) to schedule an agent, or `workflowId` (plus optional `inputData`) to schedule a workflow. Agent schedules get a random `agent_<uuid>` id, workflow schedules a random `schedule_<uuid>` id; pass `id` for a stable slug instead.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, ...body }) => {\n // getAgentById throws a MastraError (status 404) when the target is\n // unknown; translate that into a clean HTTP 404 instead of letting it\n // surface as 500. Hidden internal workflows are treated as unknown.\n if ('workflowId' in body && body.workflowId) {\n // The scheduler later resolves the stored id through core, which also\n // sees hidden workflows. Reject ids where that lookup would pick a\n // different workflow than the public one validated here.\n const workflow = getPublicWorkflowById(mastra, body.workflowId);\n let resolved: unknown;\n try {\n resolved = mastra.getWorkflowById(body.workflowId);\n } catch {\n resolved = undefined;\n }\n if (!workflow || resolved !== workflow) {\n throw new HTTPException(404, { message: `Workflow \"${body.workflowId}\" not found` });\n }\n return await mastra.schedules.create({\n workflowId: body.workflowId,\n cron: body.cron,\n ...(body.id ? { id: body.id } : {}),\n ...(body.timezone ? { timezone: body.timezone } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId ? { resourceId: body.resourceId } : {}),\n ...(body.metadata ? { metadata: body.metadata } : {}),\n });\n }\n const agentBody = body as Extract<typeof body, { agentId: string }>;\n try {\n mastra.getAgentById(agentBody.agentId);\n } catch {\n throw new HTTPException(404, { message: `Agent \"${agentBody.agentId}\" not found` });\n }\n return await mastra.schedules.create({\n agentId: agentBody.agentId,\n cron: agentBody.cron,\n prompt: agentBody.prompt,\n ...(agentBody.id ? { id: agentBody.id } : {}),\n ...(agentBody.name ? { name: agentBody.name } : {}),\n ...(agentBody.timezone ? { timezone: agentBody.timezone } : {}),\n ...(agentBody.threadId ? { threadId: agentBody.threadId } : {}),\n ...(agentBody.resourceId ? { resourceId: agentBody.resourceId } : {}),\n ...(agentBody.signalType ? { signalType: agentBody.signalType } : {}),\n ...(agentBody.tagName ? { tagName: agentBody.tagName } : {}),\n ...(agentBody.attributes ? { attributes: agentBody.attributes } : {}),\n ...(agentBody.ifActive ? { ifActive: agentBody.ifActive } : {}),\n ...(agentBody.ifIdle ? { ifIdle: agentBody.ifIdle } : {}),\n ...(agentBody.providerOptions ? { providerOptions: agentBody.providerOptions } : {}),\n ...(agentBody.metadata ? { metadata: agentBody.metadata } : {}),\n });\n },\n});\n\nexport const UPDATE_SCHEDULE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n bodySchema: updateScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Update a schedule',\n description:\n \"Partial update of a schedule. Fields apply to the matching target type; agent-only fields on a workflow schedule are rejected. An agent schedule's `threadId` and `resourceId` are part of its identity and cannot be changed — to re-target, delete and recreate. A workflow schedule's `resourceId` is run-attribution metadata and may be updated. Editing `cron` (or `timezone`) recomputes `nextFireAt`. A recomputed cadence that can still fire reactivates a `completed` schedule, while a cadence with no future occurrence leaves the schedule `completed`.\",\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, ...body }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.update(scheduleId, {\n ...(body.cron !== undefined ? { cron: body.cron } : {}),\n ...(body.timezone !== undefined ? { timezone: body.timezone } : {}),\n ...(body.status !== undefined ? { status: body.status } : {}),\n ...(body.metadata !== undefined ? { metadata: body.metadata } : {}),\n ...(body.prompt !== undefined ? { prompt: body.prompt } : {}),\n ...(body.name !== undefined ? { name: body.name } : {}),\n ...(body.signalType !== undefined ? { signalType: body.signalType } : {}),\n ...(body.tagName !== undefined ? { tagName: body.tagName } : {}),\n ...(body.attributes !== undefined ? { attributes: body.attributes } : {}),\n ...(body.ifActive !== undefined ? { ifActive: body.ifActive } : {}),\n ...(body.ifIdle !== undefined ? { ifIdle: body.ifIdle } : {}),\n ...(body.providerOptions !== undefined ? { providerOptions: body.providerOptions } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext !== undefined ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId !== undefined ? { resourceId: body.resourceId } : {}),\n });\n },\n});\n\nexport const DELETE_SCHEDULE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: deleteScheduleResponseSchema,\n summary: 'Delete a schedule',\n description: 'Permanently deletes the schedule. 404 when the schedule does not exist.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n await mastra.schedules.delete(scheduleId);\n return { message: 'Schedule deleted' };\n },\n});\n\nexport const PAUSE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/pause',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Pause a schedule',\n description:\n 'Marks the schedule as paused. The scheduler tick loop will skip paused schedules. Idempotent — pausing an already-paused schedule returns the current state unchanged. Pause status survives redeploys.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.pause(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RESUME_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/resume',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Resume a paused schedule',\n description:\n 'Marks the schedule as active and recomputes nextFireAt from \"now\" so a long-paused schedule does not fire a backlog. Idempotent — resuming an already-active schedule returns the current state unchanged.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.resume(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RUN_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/run',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: runScheduleResponseSchema,\n summary: 'Fire a schedule now',\n description:\n 'Manually triggers a single schedule fire out-of-band from the cron schedule. Records a trigger row with `triggerKind: \"manual\"`. Does not advance `nextFireAt`.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.run(scheduleId);\n },\n});\n\nexport const LIST_SCHEDULE_TRIGGERS_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId/triggers',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n queryParamSchema: listScheduleTriggersQuerySchema,\n responseSchema: listScheduleTriggersResponseSchema,\n summary: 'List trigger history for a schedule',\n description: 'Returns the audit trail of trigger attempts for a schedule, ordered by actualFireAt descending.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, limit, fromActualFireAt, toActualFireAt }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n return { triggers: [] };\n }\n const schedule = await mastra.schedules.get(scheduleId);\n const triggers = await schedulesStore.listTriggers(schedule?.id ?? scheduleId, {\n limit,\n fromActualFireAt,\n toActualFireAt,\n });\n if (!schedule?.workflowId) {\n return { triggers };\n }\n const workflowName = schedule.workflowId;\n const hydrated = await Promise.all(\n triggers.map(async trigger => {\n if (trigger.outcome !== 'published' || !trigger.runId) return trigger;\n const run = await fetchRunSummary(mastra, workflowName, trigger.runId);\n return run ? { ...trigger, run } : trigger;\n }),\n );\n return { triggers: hydrated };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"schedules-BRdVmFYi.js","names":["z"],"sources":["../src/server/schemas/schedules.ts","../src/server/handlers/schedules.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const scheduleStatusSchema = z.enum(['active', 'paused', 'completed']);\n\n/** Statuses a caller may set directly; `completed` is only reached by the scheduler. */\nconst settableScheduleStatusSchema = z.enum(['active', 'paused']);\n\n/** Mirrors the core `AgentSignalType` union. */\nconst signalTypeSchema = z.enum(['user', 'state', 'reactive', 'notification', 'user-message', 'system-reminder']);\n\n/** Attributes rendered onto the signal's XML tag. */\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n);\n\n/** Behavior + attributes applied when the thread is already streaming. */\nconst ifActiveSchema = z.object({\n behavior: z.enum(['deliver', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\n/**\n * Behavior + attributes applied when the thread is idle, plus a serializable\n * subset of stream options forwarded to the woken run.\n */\nconst ifIdleSchema = z.object({\n behavior: z.enum(['wake', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n streamOptions: z\n .object({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n});\n\nexport const workflowRunStatusSchema = z.enum([\n 'running',\n 'success',\n 'failed',\n 'tripwire',\n 'suspended',\n 'waiting',\n 'pending',\n 'canceled',\n 'bailed',\n 'paused',\n 'skipped',\n]);\n\nexport const scheduleRunSummarySchema = z.object({\n status: workflowRunStatusSchema,\n startedAt: z.number().optional(),\n completedAt: z.number().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n});\n\n/**\n * Flat agent-schedule view. Persisted as a `Schedule` row with a\n * `target.type === 'agent'` variant; the HTTP surface flattens that\n * representation to the fields a user cares about (cron, prompt, threading,\n * status, lifecycle) without exposing the schedule plumbing. Discriminate\n * from workflow schedules by the presence of `agentId`.\n */\nexport const agentScheduleSchema = z.object({\n id: z.string(),\n agentId: z.string(),\n /** Mirror of the workflow-schedule discriminator — always absent on agent schedules. */\n workflowId: z.undefined().optional(),\n /** Workflow-run summary — never hydrated for agent schedules. */\n lastRun: z.undefined().optional(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n prompt: z.string(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/**\n * Flat workflow-schedule view. Discriminate from agent schedules by the\n * presence of `workflowId`.\n */\nexport const workflowScheduleSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n /** Mirror of the agent-schedule discriminator — always absent on workflow schedules. */\n agentId: z.undefined().optional(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n lastRun: scheduleRunSummarySchema.optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/** Union of the flat views returned by the unified `/schedules` surface. */\nexport const scheduleSchema = z.union([agentScheduleSchema, workflowScheduleSchema]);\n\nexport const scheduleTriggerOutcomeSchema = z.enum([\n 'published',\n 'succeeded',\n 'delivered',\n 'persisted',\n 'discarded',\n 'skipped',\n 'aborted',\n 'failed',\n // Legacy queue/notification outcomes — no longer written, but trigger rows\n // persisted by older builds may still carry them. Kept readable so the\n // response validator does not reject historical rows. Mirrors the core\n // ScheduleTriggerOutcome union.\n 'acked',\n 'alerted',\n 'deferred',\n 'appended-from-queue',\n 'dropped-stale',\n 'dropped-superseded',\n 'dropped-busy',\n]);\n\nexport const scheduleTriggerKindSchema = z.enum(['schedule-fire', 'queue-drain', 'manual']);\n\nexport const scheduleTriggerResponseSchema = z.object({\n id: z.string().optional(),\n scheduleId: z.string(),\n runId: z.string().nullable(),\n scheduledFireAt: z.number(),\n actualFireAt: z.number(),\n outcome: scheduleTriggerOutcomeSchema,\n error: z.string().optional(),\n triggerKind: scheduleTriggerKindSchema.optional(),\n parentTriggerId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n run: scheduleRunSummarySchema.optional(),\n});\n\nexport const listSchedulesQuerySchema = z.object({\n agentId: z.string().optional(),\n workflowId: z.string().optional(),\n status: scheduleStatusSchema.optional(),\n /** Agent-schedule only: match the target threadId. */\n threadId: z.string().optional(),\n /** Match the schedule's resourceId (agent thread identity or workflow run attribution). */\n resourceId: z.string().optional(),\n /** Agent-schedule only: match the free-form target name. */\n name: z.string().optional(),\n});\n\nexport const listSchedulesResponseSchema = z.object({\n schedules: z.array(scheduleSchema),\n});\n\nexport const scheduleIdPathParams = z.object({\n scheduleId: z.string(),\n});\n\n/**\n * Agent variant of the create body — targets an agent by `agentId`. Strict so\n * a body carrying both `agentId` and `workflowId` is rejected as ambiguous\n * instead of silently matching the agent branch of the union.\n */\nconst createAgentScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `agent_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n agentId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n prompt: z.string(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Workflow variant of the create body — targets a workflow by `workflowId`.\n * Strict so ambiguous bodies (both ids) are rejected by the union.\n */\nconst createWorkflowScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `schedule_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n workflowId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body for POST /schedules. Discriminated by which target id is present:\n * `agentId` creates an agent schedule, `workflowId` a workflow schedule.\n * Both variants are strict, so a body carrying both ids (or unknown keys)\n * fails validation instead of silently dropping fields.\n */\nexport const createScheduleBodySchema = z.union([createAgentScheduleBodySchema, createWorkflowScheduleBodySchema]);\n\n/**\n * Body for PATCH /schedules/:scheduleId — partial update. Fields apply to\n * the matching target type; agent-only fields on a workflow schedule are\n * rejected by the service. An agent schedule's `threadId` / `resourceId` are\n * intentionally not editable; they are part of its identity — to re-target,\n * delete and recreate. A workflow schedule's `resourceId` is only run-attribution\n * metadata (not identity) and may be updated.\n */\nexport const updateScheduleBodySchema = z.object({\n cron: z.string().optional(),\n timezone: z.string().optional(),\n status: settableScheduleStatusSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Agent-schedule fields\n prompt: z.string().optional(),\n name: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n // Workflow-schedule fields\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\nexport const deleteScheduleResponseSchema = z.object({\n message: z.string(),\n});\n\n/** Response for POST /schedules/:scheduleId/run. */\nexport const runScheduleResponseSchema = z.object({\n scheduleId: z.string(),\n claimId: z.string(),\n scheduledFireAt: z.number(),\n});\n\nexport const listScheduleTriggersQuerySchema = z.object({\n limit: z.coerce.number().int().positive().optional(),\n fromActualFireAt: z.coerce.number().int().nonnegative().optional(),\n toActualFireAt: z.coerce.number().int().nonnegative().optional(),\n});\n\nexport const listScheduleTriggersResponseSchema = z.object({\n triggers: z.array(scheduleTriggerResponseSchema),\n});\n\nexport type AgentScheduleResponse = z.infer<typeof agentScheduleSchema>;\nexport type WorkflowScheduleResponse = z.infer<typeof workflowScheduleSchema>;\nexport type ScheduleResponse = z.infer<typeof scheduleSchema>;\n","import type { Mastra } from '@mastra/core';\nimport type { AgentSchedule, AnySchedule, WorkflowSchedule } from '@mastra/core/schedules';\nimport type { WorkflowRunState } from '@mastra/core/workflows';\nimport { HTTPException } from '../http-exception';\nimport {\n createScheduleBodySchema,\n deleteScheduleResponseSchema,\n listSchedulesQuerySchema,\n listSchedulesResponseSchema,\n listScheduleTriggersQuerySchema,\n listScheduleTriggersResponseSchema,\n runScheduleResponseSchema,\n scheduleIdPathParams,\n scheduleSchema,\n updateScheduleBodySchema,\n} from '../schemas/schedules';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getPublicWorkflowById } from './utils';\n\ntype RunSummary = {\n status: WorkflowRunState['status'];\n startedAt?: number;\n completedAt?: number;\n durationMs?: number;\n error?: string;\n};\n\nfunction snapshotToRunSummary(run: {\n snapshot: WorkflowRunState | string;\n createdAt: Date;\n updatedAt: Date;\n}): RunSummary | undefined {\n const snapshot = typeof run.snapshot === 'string' ? null : run.snapshot;\n if (!snapshot) return undefined;\n const startedAt = run.createdAt instanceof Date ? run.createdAt.getTime() : undefined;\n const isTerminal =\n snapshot.status === 'success' ||\n snapshot.status === 'failed' ||\n snapshot.status === 'canceled' ||\n snapshot.status === 'bailed' ||\n snapshot.status === 'tripwire';\n const completedAt = isTerminal ? (run.updatedAt instanceof Date ? run.updatedAt.getTime() : undefined) : undefined;\n const durationMs = startedAt !== undefined && completedAt !== undefined ? completedAt - startedAt : undefined;\n return {\n status: snapshot.status,\n startedAt,\n completedAt,\n durationMs,\n error: snapshot.error?.message,\n };\n}\n\nasync function fetchRunSummary(mastra: Mastra, workflowName: string, runId: string): Promise<RunSummary | undefined> {\n try {\n const workflowsStore = await mastra.getStorage()?.getStore('workflows');\n const run = await workflowsStore?.getWorkflowRunById({ runId, workflowName });\n if (!run) return undefined;\n return snapshotToRunSummary(run);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Attach a `lastRun` summary to workflow schedules. Agent schedules pass\n * through unchanged — their `lastRunId` is an agent run, not a workflow run.\n */\nasync function hydrateScheduleResponse(\n mastra: Mastra,\n schedule: AnySchedule,\n): Promise<AgentSchedule | (WorkflowSchedule & { lastRun?: RunSummary })> {\n if (!schedule.workflowId || !schedule.lastRunId) {\n return schedule;\n }\n const lastRun = await fetchRunSummary(mastra, schedule.workflowId, schedule.lastRunId);\n return lastRun ? { ...schedule, lastRun } : schedule;\n}\n\n/**\n * Resolve a schedule by id via `mastra.schedules`. Returns 404 for missing\n * rows so handlers surface a clean HTTP error instead of a service error.\n */\nasync function loadSchedule(mastra: Mastra, scheduleId: string): Promise<AnySchedule> {\n const schedule = await mastra.schedules.get(scheduleId);\n if (!schedule) {\n throw new HTTPException(404, { message: 'Schedule not found' });\n }\n return schedule;\n}\n\nexport const LIST_SCHEDULES_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules',\n responseType: 'json' as const,\n queryParamSchema: listSchedulesQuerySchema,\n responseSchema: listSchedulesResponseSchema,\n summary: 'List schedules',\n description:\n 'Returns all schedules — agent schedules and workflow schedules — optionally filtered by agentId, workflowId, or status. Completed schedules are excluded unless requested with a status filter. Agent schedules can additionally be filtered by threadId, resourceId, or name.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, workflowId, status, threadId, resourceId, name }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n // Schedules domain not configured — there are no schedules to return.\n return { schedules: [] };\n }\n const schedules = await mastra.schedules.list({ agentId, workflowId, status, threadId, resourceId, name });\n const hydrated = await Promise.all(schedules.map(schedule => hydrateScheduleResponse(mastra, schedule)));\n return { schedules: hydrated };\n },\n});\n\nexport const GET_SCHEDULE_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Get a schedule by ID',\n description: 'Returns a single schedule by its id.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n const schedule = await loadSchedule(mastra, scheduleId);\n return hydrateScheduleResponse(mastra, schedule);\n },\n});\n\nexport const CREATE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules',\n responseType: 'json' as const,\n bodySchema: createScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Create a schedule',\n description:\n 'Creates a new schedule. Pass `agentId` (plus `prompt`) to schedule an agent, or `workflowId` (plus optional `inputData`) to schedule a workflow. Agent schedules get a random `agent_<uuid>` id, workflow schedules a random `schedule_<uuid>` id; pass `id` for a stable slug instead.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, ...body }) => {\n // getAgentById throws a MastraError (status 404) when the target is\n // unknown; translate that into a clean HTTP 404 instead of letting it\n // surface as 500. Hidden internal workflows are treated as unknown.\n if ('workflowId' in body && body.workflowId) {\n // The scheduler later resolves the stored id through core, which also\n // sees hidden workflows. Reject ids where that lookup would pick a\n // different workflow than the public one validated here.\n const workflow = getPublicWorkflowById(mastra, body.workflowId);\n let resolved: unknown;\n try {\n resolved = mastra.getWorkflowById(body.workflowId);\n } catch {\n resolved = undefined;\n }\n if (!workflow || resolved !== workflow) {\n throw new HTTPException(404, { message: `Workflow \"${body.workflowId}\" not found` });\n }\n return await mastra.schedules.create({\n workflowId: body.workflowId,\n cron: body.cron,\n ...(body.id ? { id: body.id } : {}),\n ...(body.timezone ? { timezone: body.timezone } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId ? { resourceId: body.resourceId } : {}),\n ...(body.metadata ? { metadata: body.metadata } : {}),\n });\n }\n const agentBody = body as Extract<typeof body, { agentId: string }>;\n try {\n mastra.getAgentById(agentBody.agentId);\n } catch {\n throw new HTTPException(404, { message: `Agent \"${agentBody.agentId}\" not found` });\n }\n return await mastra.schedules.create({\n agentId: agentBody.agentId,\n cron: agentBody.cron,\n prompt: agentBody.prompt,\n ...(agentBody.id ? { id: agentBody.id } : {}),\n ...(agentBody.name ? { name: agentBody.name } : {}),\n ...(agentBody.timezone ? { timezone: agentBody.timezone } : {}),\n ...(agentBody.threadId ? { threadId: agentBody.threadId } : {}),\n ...(agentBody.resourceId ? { resourceId: agentBody.resourceId } : {}),\n ...(agentBody.signalType ? { signalType: agentBody.signalType } : {}),\n ...(agentBody.tagName ? { tagName: agentBody.tagName } : {}),\n ...(agentBody.attributes ? { attributes: agentBody.attributes } : {}),\n ...(agentBody.ifActive ? { ifActive: agentBody.ifActive } : {}),\n ...(agentBody.ifIdle ? { ifIdle: agentBody.ifIdle } : {}),\n ...(agentBody.providerOptions ? { providerOptions: agentBody.providerOptions } : {}),\n ...(agentBody.metadata ? { metadata: agentBody.metadata } : {}),\n });\n },\n});\n\nexport const UPDATE_SCHEDULE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n bodySchema: updateScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Update a schedule',\n description:\n \"Partial update of a schedule. Fields apply to the matching target type; agent-only fields on a workflow schedule are rejected. An agent schedule's `threadId` and `resourceId` are part of its identity and cannot be changed — to re-target, delete and recreate. A workflow schedule's `resourceId` is run-attribution metadata and may be updated. Editing `cron` (or `timezone`) recomputes `nextFireAt`. A recomputed cadence that can still fire reactivates a `completed` schedule, while a cadence with no future occurrence leaves the schedule `completed`.\",\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, ...body }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.update(scheduleId, {\n ...(body.cron !== undefined ? { cron: body.cron } : {}),\n ...(body.timezone !== undefined ? { timezone: body.timezone } : {}),\n ...(body.status !== undefined ? { status: body.status } : {}),\n ...(body.metadata !== undefined ? { metadata: body.metadata } : {}),\n ...(body.prompt !== undefined ? { prompt: body.prompt } : {}),\n ...(body.name !== undefined ? { name: body.name } : {}),\n ...(body.signalType !== undefined ? { signalType: body.signalType } : {}),\n ...(body.tagName !== undefined ? { tagName: body.tagName } : {}),\n ...(body.attributes !== undefined ? { attributes: body.attributes } : {}),\n ...(body.ifActive !== undefined ? { ifActive: body.ifActive } : {}),\n ...(body.ifIdle !== undefined ? { ifIdle: body.ifIdle } : {}),\n ...(body.providerOptions !== undefined ? { providerOptions: body.providerOptions } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext !== undefined ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId !== undefined ? { resourceId: body.resourceId } : {}),\n });\n },\n});\n\nexport const DELETE_SCHEDULE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: deleteScheduleResponseSchema,\n summary: 'Delete a schedule',\n description: 'Permanently deletes the schedule. 404 when the schedule does not exist.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n await mastra.schedules.delete(scheduleId);\n return { message: 'Schedule deleted' };\n },\n});\n\nexport const PAUSE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/pause',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Pause a schedule',\n description:\n 'Marks the schedule as paused. The scheduler tick loop will skip paused schedules. Idempotent — pausing an already-paused schedule returns the current state unchanged. Pause status survives redeploys.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.pause(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RESUME_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/resume',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Resume a paused schedule',\n description:\n 'Marks the schedule as active and recomputes nextFireAt from \"now\" so a long-paused schedule does not fire a backlog. Idempotent — resuming an already-active schedule returns the current state unchanged.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.resume(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RUN_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/run',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: runScheduleResponseSchema,\n summary: 'Fire a schedule now',\n description:\n 'Manually triggers a single schedule fire out-of-band from the cron schedule. Records a trigger row with `triggerKind: \"manual\"`. Does not advance `nextFireAt`.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.run(scheduleId);\n },\n});\n\nexport const LIST_SCHEDULE_TRIGGERS_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId/triggers',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n queryParamSchema: listScheduleTriggersQuerySchema,\n responseSchema: listScheduleTriggersResponseSchema,\n summary: 'List trigger history for a schedule',\n description: 'Returns the audit trail of trigger attempts for a schedule, ordered by actualFireAt descending.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, limit, fromActualFireAt, toActualFireAt }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n return { triggers: [] };\n }\n const schedule = await mastra.schedules.get(scheduleId);\n const triggers = await schedulesStore.listTriggers(schedule?.id ?? scheduleId, {\n limit,\n fromActualFireAt,\n toActualFireAt,\n });\n if (!schedule?.workflowId) {\n return { triggers };\n }\n const workflowName = schedule.workflowId;\n const hydrated = await Promise.all(\n triggers.map(async trigger => {\n if (trigger.outcome !== 'published' || !trigger.runId) return trigger;\n const run = await fetchRunSummary(mastra, workflowName, trigger.runId);\n return run ? { ...trigger, run } : trigger;\n }),\n );\n return { triggers: hydrated };\n },\n});\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  const require_http_exception = require("./http-exception-CKDHupKw.cjs");
2
2
  const require_route_builder = require("./route-builder-2yrD15TL.cjs");
3
- const require_utils = require("./utils-BF2Kbju4.cjs");
3
+ const require_utils = require("./utils-DdGLbkOl.cjs");
4
4
  let zod = require("zod");
5
5
  //#region src/server/schemas/schedules.ts
6
6
  const scheduleStatusSchema = zod.z.enum([
@@ -586,4 +586,4 @@ Object.defineProperty(exports, "UPDATE_SCHEDULE_ROUTE", {
586
586
  }
587
587
  });
588
588
 
589
- //# sourceMappingURL=schedules-BiqVrJH7.cjs.map
589
+ //# sourceMappingURL=schedules-DvLXX2nW.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedules-BiqVrJH7.cjs","names":["z","HTTPException","createRoute","getPublicWorkflowById"],"sources":["../src/server/schemas/schedules.ts","../src/server/handlers/schedules.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const scheduleStatusSchema = z.enum(['active', 'paused', 'completed']);\n\n/** Statuses a caller may set directly; `completed` is only reached by the scheduler. */\nconst settableScheduleStatusSchema = z.enum(['active', 'paused']);\n\n/** Mirrors the core `AgentSignalType` union. */\nconst signalTypeSchema = z.enum(['user', 'state', 'reactive', 'notification', 'user-message', 'system-reminder']);\n\n/** Attributes rendered onto the signal's XML tag. */\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n);\n\n/** Behavior + attributes applied when the thread is already streaming. */\nconst ifActiveSchema = z.object({\n behavior: z.enum(['deliver', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\n/**\n * Behavior + attributes applied when the thread is idle, plus a serializable\n * subset of stream options forwarded to the woken run.\n */\nconst ifIdleSchema = z.object({\n behavior: z.enum(['wake', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n streamOptions: z\n .object({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n});\n\nexport const workflowRunStatusSchema = z.enum([\n 'running',\n 'success',\n 'failed',\n 'tripwire',\n 'suspended',\n 'waiting',\n 'pending',\n 'canceled',\n 'bailed',\n 'paused',\n 'skipped',\n]);\n\nexport const scheduleRunSummarySchema = z.object({\n status: workflowRunStatusSchema,\n startedAt: z.number().optional(),\n completedAt: z.number().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n});\n\n/**\n * Flat agent-schedule view. Persisted as a `Schedule` row with a\n * `target.type === 'agent'` variant; the HTTP surface flattens that\n * representation to the fields a user cares about (cron, prompt, threading,\n * status, lifecycle) without exposing the schedule plumbing. Discriminate\n * from workflow schedules by the presence of `agentId`.\n */\nexport const agentScheduleSchema = z.object({\n id: z.string(),\n agentId: z.string(),\n /** Mirror of the workflow-schedule discriminator — always absent on agent schedules. */\n workflowId: z.undefined().optional(),\n /** Workflow-run summary — never hydrated for agent schedules. */\n lastRun: z.undefined().optional(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n prompt: z.string(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/**\n * Flat workflow-schedule view. Discriminate from agent schedules by the\n * presence of `workflowId`.\n */\nexport const workflowScheduleSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n /** Mirror of the agent-schedule discriminator — always absent on workflow schedules. */\n agentId: z.undefined().optional(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n lastRun: scheduleRunSummarySchema.optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/** Union of the flat views returned by the unified `/schedules` surface. */\nexport const scheduleSchema = z.union([agentScheduleSchema, workflowScheduleSchema]);\n\nexport const scheduleTriggerOutcomeSchema = z.enum([\n 'published',\n 'succeeded',\n 'delivered',\n 'persisted',\n 'discarded',\n 'skipped',\n 'aborted',\n 'failed',\n // Legacy queue/notification outcomes — no longer written, but trigger rows\n // persisted by older builds may still carry them. Kept readable so the\n // response validator does not reject historical rows. Mirrors the core\n // ScheduleTriggerOutcome union.\n 'acked',\n 'alerted',\n 'deferred',\n 'appended-from-queue',\n 'dropped-stale',\n 'dropped-superseded',\n 'dropped-busy',\n]);\n\nexport const scheduleTriggerKindSchema = z.enum(['schedule-fire', 'queue-drain', 'manual']);\n\nexport const scheduleTriggerResponseSchema = z.object({\n id: z.string().optional(),\n scheduleId: z.string(),\n runId: z.string().nullable(),\n scheduledFireAt: z.number(),\n actualFireAt: z.number(),\n outcome: scheduleTriggerOutcomeSchema,\n error: z.string().optional(),\n triggerKind: scheduleTriggerKindSchema.optional(),\n parentTriggerId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n run: scheduleRunSummarySchema.optional(),\n});\n\nexport const listSchedulesQuerySchema = z.object({\n agentId: z.string().optional(),\n workflowId: z.string().optional(),\n status: scheduleStatusSchema.optional(),\n /** Agent-schedule only: match the target threadId. */\n threadId: z.string().optional(),\n /** Match the schedule's resourceId (agent thread identity or workflow run attribution). */\n resourceId: z.string().optional(),\n /** Agent-schedule only: match the free-form target name. */\n name: z.string().optional(),\n});\n\nexport const listSchedulesResponseSchema = z.object({\n schedules: z.array(scheduleSchema),\n});\n\nexport const scheduleIdPathParams = z.object({\n scheduleId: z.string(),\n});\n\n/**\n * Agent variant of the create body — targets an agent by `agentId`. Strict so\n * a body carrying both `agentId` and `workflowId` is rejected as ambiguous\n * instead of silently matching the agent branch of the union.\n */\nconst createAgentScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `agent_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n agentId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n prompt: z.string(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Workflow variant of the create body — targets a workflow by `workflowId`.\n * Strict so ambiguous bodies (both ids) are rejected by the union.\n */\nconst createWorkflowScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `schedule_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n workflowId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body for POST /schedules. Discriminated by which target id is present:\n * `agentId` creates an agent schedule, `workflowId` a workflow schedule.\n * Both variants are strict, so a body carrying both ids (or unknown keys)\n * fails validation instead of silently dropping fields.\n */\nexport const createScheduleBodySchema = z.union([createAgentScheduleBodySchema, createWorkflowScheduleBodySchema]);\n\n/**\n * Body for PATCH /schedules/:scheduleId — partial update. Fields apply to\n * the matching target type; agent-only fields on a workflow schedule are\n * rejected by the service. An agent schedule's `threadId` / `resourceId` are\n * intentionally not editable; they are part of its identity — to re-target,\n * delete and recreate. A workflow schedule's `resourceId` is only run-attribution\n * metadata (not identity) and may be updated.\n */\nexport const updateScheduleBodySchema = z.object({\n cron: z.string().optional(),\n timezone: z.string().optional(),\n status: settableScheduleStatusSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Agent-schedule fields\n prompt: z.string().optional(),\n name: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n // Workflow-schedule fields\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\nexport const deleteScheduleResponseSchema = z.object({\n message: z.string(),\n});\n\n/** Response for POST /schedules/:scheduleId/run. */\nexport const runScheduleResponseSchema = z.object({\n scheduleId: z.string(),\n claimId: z.string(),\n scheduledFireAt: z.number(),\n});\n\nexport const listScheduleTriggersQuerySchema = z.object({\n limit: z.coerce.number().int().positive().optional(),\n fromActualFireAt: z.coerce.number().int().nonnegative().optional(),\n toActualFireAt: z.coerce.number().int().nonnegative().optional(),\n});\n\nexport const listScheduleTriggersResponseSchema = z.object({\n triggers: z.array(scheduleTriggerResponseSchema),\n});\n\nexport type AgentScheduleResponse = z.infer<typeof agentScheduleSchema>;\nexport type WorkflowScheduleResponse = z.infer<typeof workflowScheduleSchema>;\nexport type ScheduleResponse = z.infer<typeof scheduleSchema>;\n","import type { Mastra } from '@mastra/core';\nimport type { AgentSchedule, AnySchedule, WorkflowSchedule } from '@mastra/core/schedules';\nimport type { WorkflowRunState } from '@mastra/core/workflows';\nimport { HTTPException } from '../http-exception';\nimport {\n createScheduleBodySchema,\n deleteScheduleResponseSchema,\n listSchedulesQuerySchema,\n listSchedulesResponseSchema,\n listScheduleTriggersQuerySchema,\n listScheduleTriggersResponseSchema,\n runScheduleResponseSchema,\n scheduleIdPathParams,\n scheduleSchema,\n updateScheduleBodySchema,\n} from '../schemas/schedules';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getPublicWorkflowById } from './utils';\n\ntype RunSummary = {\n status: WorkflowRunState['status'];\n startedAt?: number;\n completedAt?: number;\n durationMs?: number;\n error?: string;\n};\n\nfunction snapshotToRunSummary(run: {\n snapshot: WorkflowRunState | string;\n createdAt: Date;\n updatedAt: Date;\n}): RunSummary | undefined {\n const snapshot = typeof run.snapshot === 'string' ? null : run.snapshot;\n if (!snapshot) return undefined;\n const startedAt = run.createdAt instanceof Date ? run.createdAt.getTime() : undefined;\n const isTerminal =\n snapshot.status === 'success' ||\n snapshot.status === 'failed' ||\n snapshot.status === 'canceled' ||\n snapshot.status === 'bailed' ||\n snapshot.status === 'tripwire';\n const completedAt = isTerminal ? (run.updatedAt instanceof Date ? run.updatedAt.getTime() : undefined) : undefined;\n const durationMs = startedAt !== undefined && completedAt !== undefined ? completedAt - startedAt : undefined;\n return {\n status: snapshot.status,\n startedAt,\n completedAt,\n durationMs,\n error: snapshot.error?.message,\n };\n}\n\nasync function fetchRunSummary(mastra: Mastra, workflowName: string, runId: string): Promise<RunSummary | undefined> {\n try {\n const workflowsStore = await mastra.getStorage()?.getStore('workflows');\n const run = await workflowsStore?.getWorkflowRunById({ runId, workflowName });\n if (!run) return undefined;\n return snapshotToRunSummary(run);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Attach a `lastRun` summary to workflow schedules. Agent schedules pass\n * through unchanged — their `lastRunId` is an agent run, not a workflow run.\n */\nasync function hydrateScheduleResponse(\n mastra: Mastra,\n schedule: AnySchedule,\n): Promise<AgentSchedule | (WorkflowSchedule & { lastRun?: RunSummary })> {\n if (!schedule.workflowId || !schedule.lastRunId) {\n return schedule;\n }\n const lastRun = await fetchRunSummary(mastra, schedule.workflowId, schedule.lastRunId);\n return lastRun ? { ...schedule, lastRun } : schedule;\n}\n\n/**\n * Resolve a schedule by id via `mastra.schedules`. Returns 404 for missing\n * rows so handlers surface a clean HTTP error instead of a service error.\n */\nasync function loadSchedule(mastra: Mastra, scheduleId: string): Promise<AnySchedule> {\n const schedule = await mastra.schedules.get(scheduleId);\n if (!schedule) {\n throw new HTTPException(404, { message: 'Schedule not found' });\n }\n return schedule;\n}\n\nexport const LIST_SCHEDULES_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules',\n responseType: 'json' as const,\n queryParamSchema: listSchedulesQuerySchema,\n responseSchema: listSchedulesResponseSchema,\n summary: 'List schedules',\n description:\n 'Returns all schedules — agent schedules and workflow schedules — optionally filtered by agentId, workflowId, or status. Completed schedules are excluded unless requested with a status filter. Agent schedules can additionally be filtered by threadId, resourceId, or name.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, workflowId, status, threadId, resourceId, name }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n // Schedules domain not configured — there are no schedules to return.\n return { schedules: [] };\n }\n const schedules = await mastra.schedules.list({ agentId, workflowId, status, threadId, resourceId, name });\n const hydrated = await Promise.all(schedules.map(schedule => hydrateScheduleResponse(mastra, schedule)));\n return { schedules: hydrated };\n },\n});\n\nexport const GET_SCHEDULE_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Get a schedule by ID',\n description: 'Returns a single schedule by its id.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n const schedule = await loadSchedule(mastra, scheduleId);\n return hydrateScheduleResponse(mastra, schedule);\n },\n});\n\nexport const CREATE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules',\n responseType: 'json' as const,\n bodySchema: createScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Create a schedule',\n description:\n 'Creates a new schedule. Pass `agentId` (plus `prompt`) to schedule an agent, or `workflowId` (plus optional `inputData`) to schedule a workflow. Agent schedules get a random `agent_<uuid>` id, workflow schedules a random `schedule_<uuid>` id; pass `id` for a stable slug instead.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, ...body }) => {\n // getAgentById throws a MastraError (status 404) when the target is\n // unknown; translate that into a clean HTTP 404 instead of letting it\n // surface as 500. Hidden internal workflows are treated as unknown.\n if ('workflowId' in body && body.workflowId) {\n // The scheduler later resolves the stored id through core, which also\n // sees hidden workflows. Reject ids where that lookup would pick a\n // different workflow than the public one validated here.\n const workflow = getPublicWorkflowById(mastra, body.workflowId);\n let resolved: unknown;\n try {\n resolved = mastra.getWorkflowById(body.workflowId);\n } catch {\n resolved = undefined;\n }\n if (!workflow || resolved !== workflow) {\n throw new HTTPException(404, { message: `Workflow \"${body.workflowId}\" not found` });\n }\n return await mastra.schedules.create({\n workflowId: body.workflowId,\n cron: body.cron,\n ...(body.id ? { id: body.id } : {}),\n ...(body.timezone ? { timezone: body.timezone } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId ? { resourceId: body.resourceId } : {}),\n ...(body.metadata ? { metadata: body.metadata } : {}),\n });\n }\n const agentBody = body as Extract<typeof body, { agentId: string }>;\n try {\n mastra.getAgentById(agentBody.agentId);\n } catch {\n throw new HTTPException(404, { message: `Agent \"${agentBody.agentId}\" not found` });\n }\n return await mastra.schedules.create({\n agentId: agentBody.agentId,\n cron: agentBody.cron,\n prompt: agentBody.prompt,\n ...(agentBody.id ? { id: agentBody.id } : {}),\n ...(agentBody.name ? { name: agentBody.name } : {}),\n ...(agentBody.timezone ? { timezone: agentBody.timezone } : {}),\n ...(agentBody.threadId ? { threadId: agentBody.threadId } : {}),\n ...(agentBody.resourceId ? { resourceId: agentBody.resourceId } : {}),\n ...(agentBody.signalType ? { signalType: agentBody.signalType } : {}),\n ...(agentBody.tagName ? { tagName: agentBody.tagName } : {}),\n ...(agentBody.attributes ? { attributes: agentBody.attributes } : {}),\n ...(agentBody.ifActive ? { ifActive: agentBody.ifActive } : {}),\n ...(agentBody.ifIdle ? { ifIdle: agentBody.ifIdle } : {}),\n ...(agentBody.providerOptions ? { providerOptions: agentBody.providerOptions } : {}),\n ...(agentBody.metadata ? { metadata: agentBody.metadata } : {}),\n });\n },\n});\n\nexport const UPDATE_SCHEDULE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n bodySchema: updateScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Update a schedule',\n description:\n \"Partial update of a schedule. Fields apply to the matching target type; agent-only fields on a workflow schedule are rejected. An agent schedule's `threadId` and `resourceId` are part of its identity and cannot be changed — to re-target, delete and recreate. A workflow schedule's `resourceId` is run-attribution metadata and may be updated. Editing `cron` (or `timezone`) recomputes `nextFireAt`. A recomputed cadence that can still fire reactivates a `completed` schedule, while a cadence with no future occurrence leaves the schedule `completed`.\",\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, ...body }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.update(scheduleId, {\n ...(body.cron !== undefined ? { cron: body.cron } : {}),\n ...(body.timezone !== undefined ? { timezone: body.timezone } : {}),\n ...(body.status !== undefined ? { status: body.status } : {}),\n ...(body.metadata !== undefined ? { metadata: body.metadata } : {}),\n ...(body.prompt !== undefined ? { prompt: body.prompt } : {}),\n ...(body.name !== undefined ? { name: body.name } : {}),\n ...(body.signalType !== undefined ? { signalType: body.signalType } : {}),\n ...(body.tagName !== undefined ? { tagName: body.tagName } : {}),\n ...(body.attributes !== undefined ? { attributes: body.attributes } : {}),\n ...(body.ifActive !== undefined ? { ifActive: body.ifActive } : {}),\n ...(body.ifIdle !== undefined ? { ifIdle: body.ifIdle } : {}),\n ...(body.providerOptions !== undefined ? { providerOptions: body.providerOptions } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext !== undefined ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId !== undefined ? { resourceId: body.resourceId } : {}),\n });\n },\n});\n\nexport const DELETE_SCHEDULE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: deleteScheduleResponseSchema,\n summary: 'Delete a schedule',\n description: 'Permanently deletes the schedule. 404 when the schedule does not exist.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n await mastra.schedules.delete(scheduleId);\n return { message: 'Schedule deleted' };\n },\n});\n\nexport const PAUSE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/pause',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Pause a schedule',\n description:\n 'Marks the schedule as paused. The scheduler tick loop will skip paused schedules. Idempotent — pausing an already-paused schedule returns the current state unchanged. Pause status survives redeploys.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.pause(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RESUME_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/resume',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Resume a paused schedule',\n description:\n 'Marks the schedule as active and recomputes nextFireAt from \"now\" so a long-paused schedule does not fire a backlog. Idempotent — resuming an already-active schedule returns the current state unchanged.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.resume(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RUN_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/run',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: runScheduleResponseSchema,\n summary: 'Fire a schedule now',\n description:\n 'Manually triggers a single schedule fire out-of-band from the cron schedule. Records a trigger row with `triggerKind: \"manual\"`. Does not advance `nextFireAt`.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.run(scheduleId);\n },\n});\n\nexport const LIST_SCHEDULE_TRIGGERS_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId/triggers',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n queryParamSchema: listScheduleTriggersQuerySchema,\n responseSchema: listScheduleTriggersResponseSchema,\n summary: 'List trigger history for a schedule',\n description: 'Returns the audit trail of trigger attempts for a schedule, ordered by actualFireAt descending.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, limit, fromActualFireAt, toActualFireAt }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n return { triggers: [] };\n }\n const schedule = await mastra.schedules.get(scheduleId);\n const triggers = await schedulesStore.listTriggers(schedule?.id ?? scheduleId, {\n limit,\n fromActualFireAt,\n toActualFireAt,\n });\n if (!schedule?.workflowId) {\n return { triggers };\n }\n const workflowName = schedule.workflowId;\n const hydrated = await Promise.all(\n triggers.map(async trigger => {\n if (trigger.outcome !== 'published' || !trigger.runId) return trigger;\n const run = await fetchRunSummary(mastra, workflowName, trigger.runId);\n return run ? { ...trigger, run } : trigger;\n }),\n );\n return { triggers: hydrated };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"schedules-DvLXX2nW.cjs","names":["z","HTTPException","createRoute","getPublicWorkflowById"],"sources":["../src/server/schemas/schedules.ts","../src/server/handlers/schedules.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const scheduleStatusSchema = z.enum(['active', 'paused', 'completed']);\n\n/** Statuses a caller may set directly; `completed` is only reached by the scheduler. */\nconst settableScheduleStatusSchema = z.enum(['active', 'paused']);\n\n/** Mirrors the core `AgentSignalType` union. */\nconst signalTypeSchema = z.enum(['user', 'state', 'reactive', 'notification', 'user-message', 'system-reminder']);\n\n/** Attributes rendered onto the signal's XML tag. */\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null()]).optional(),\n);\n\n/** Behavior + attributes applied when the thread is already streaming. */\nconst ifActiveSchema = z.object({\n behavior: z.enum(['deliver', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\n/**\n * Behavior + attributes applied when the thread is idle, plus a serializable\n * subset of stream options forwarded to the woken run.\n */\nconst ifIdleSchema = z.object({\n behavior: z.enum(['wake', 'persist', 'discard']).optional(),\n attributes: signalAttributesSchema.optional(),\n streamOptions: z\n .object({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n })\n .optional(),\n});\n\nexport const workflowRunStatusSchema = z.enum([\n 'running',\n 'success',\n 'failed',\n 'tripwire',\n 'suspended',\n 'waiting',\n 'pending',\n 'canceled',\n 'bailed',\n 'paused',\n 'skipped',\n]);\n\nexport const scheduleRunSummarySchema = z.object({\n status: workflowRunStatusSchema,\n startedAt: z.number().optional(),\n completedAt: z.number().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n});\n\n/**\n * Flat agent-schedule view. Persisted as a `Schedule` row with a\n * `target.type === 'agent'` variant; the HTTP surface flattens that\n * representation to the fields a user cares about (cron, prompt, threading,\n * status, lifecycle) without exposing the schedule plumbing. Discriminate\n * from workflow schedules by the presence of `agentId`.\n */\nexport const agentScheduleSchema = z.object({\n id: z.string(),\n agentId: z.string(),\n /** Mirror of the workflow-schedule discriminator — always absent on agent schedules. */\n workflowId: z.undefined().optional(),\n /** Workflow-run summary — never hydrated for agent schedules. */\n lastRun: z.undefined().optional(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n prompt: z.string(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/**\n * Flat workflow-schedule view. Discriminate from agent schedules by the\n * presence of `workflowId`.\n */\nexport const workflowScheduleSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n /** Mirror of the agent-schedule discriminator — always absent on workflow schedules. */\n agentId: z.undefined().optional(),\n cron: z.string(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema,\n nextFireAt: z.number(),\n lastFireAt: z.number().optional(),\n lastRunId: z.string().optional(),\n lastRun: scheduleRunSummarySchema.optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n updatedAt: z.number(),\n});\n\n/** Union of the flat views returned by the unified `/schedules` surface. */\nexport const scheduleSchema = z.union([agentScheduleSchema, workflowScheduleSchema]);\n\nexport const scheduleTriggerOutcomeSchema = z.enum([\n 'published',\n 'succeeded',\n 'delivered',\n 'persisted',\n 'discarded',\n 'skipped',\n 'aborted',\n 'failed',\n // Legacy queue/notification outcomes — no longer written, but trigger rows\n // persisted by older builds may still carry them. Kept readable so the\n // response validator does not reject historical rows. Mirrors the core\n // ScheduleTriggerOutcome union.\n 'acked',\n 'alerted',\n 'deferred',\n 'appended-from-queue',\n 'dropped-stale',\n 'dropped-superseded',\n 'dropped-busy',\n]);\n\nexport const scheduleTriggerKindSchema = z.enum(['schedule-fire', 'queue-drain', 'manual']);\n\nexport const scheduleTriggerResponseSchema = z.object({\n id: z.string().optional(),\n scheduleId: z.string(),\n runId: z.string().nullable(),\n scheduledFireAt: z.number(),\n actualFireAt: z.number(),\n outcome: scheduleTriggerOutcomeSchema,\n error: z.string().optional(),\n triggerKind: scheduleTriggerKindSchema.optional(),\n parentTriggerId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n run: scheduleRunSummarySchema.optional(),\n});\n\nexport const listSchedulesQuerySchema = z.object({\n agentId: z.string().optional(),\n workflowId: z.string().optional(),\n status: scheduleStatusSchema.optional(),\n /** Agent-schedule only: match the target threadId. */\n threadId: z.string().optional(),\n /** Match the schedule's resourceId (agent thread identity or workflow run attribution). */\n resourceId: z.string().optional(),\n /** Agent-schedule only: match the free-form target name. */\n name: z.string().optional(),\n});\n\nexport const listSchedulesResponseSchema = z.object({\n schedules: z.array(scheduleSchema),\n});\n\nexport const scheduleIdPathParams = z.object({\n scheduleId: z.string(),\n});\n\n/**\n * Agent variant of the create body — targets an agent by `agentId`. Strict so\n * a body carrying both `agentId` and `workflowId` is rejected as ambiguous\n * instead of silently matching the agent branch of the union.\n */\nconst createAgentScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `agent_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n agentId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n prompt: z.string(),\n name: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Workflow variant of the create body — targets a workflow by `workflowId`.\n * Strict so ambiguous bodies (both ids) are rejected by the union.\n */\nconst createWorkflowScheduleBodySchema = z.strictObject({\n /** Optional stable id; normalized to `schedule_<slug>`. A random id is generated when omitted. */\n id: z.string().optional(),\n workflowId: z.string().min(1),\n cron: z.string(),\n timezone: z.string().optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Body for POST /schedules. Discriminated by which target id is present:\n * `agentId` creates an agent schedule, `workflowId` a workflow schedule.\n * Both variants are strict, so a body carrying both ids (or unknown keys)\n * fails validation instead of silently dropping fields.\n */\nexport const createScheduleBodySchema = z.union([createAgentScheduleBodySchema, createWorkflowScheduleBodySchema]);\n\n/**\n * Body for PATCH /schedules/:scheduleId — partial update. Fields apply to\n * the matching target type; agent-only fields on a workflow schedule are\n * rejected by the service. An agent schedule's `threadId` / `resourceId` are\n * intentionally not editable; they are part of its identity — to re-target,\n * delete and recreate. A workflow schedule's `resourceId` is only run-attribution\n * metadata (not identity) and may be updated.\n */\nexport const updateScheduleBodySchema = z.object({\n cron: z.string().optional(),\n timezone: z.string().optional(),\n status: settableScheduleStatusSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Agent-schedule fields\n prompt: z.string().optional(),\n name: z.string().optional(),\n signalType: signalTypeSchema.optional(),\n tagName: z.string().optional(),\n attributes: signalAttributesSchema.optional(),\n ifActive: ifActiveSchema.optional(),\n ifIdle: ifIdleSchema.optional(),\n providerOptions: z.record(z.string(), z.unknown()).optional(),\n // Workflow-schedule fields\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n resourceId: z.string().optional(),\n});\n\nexport const deleteScheduleResponseSchema = z.object({\n message: z.string(),\n});\n\n/** Response for POST /schedules/:scheduleId/run. */\nexport const runScheduleResponseSchema = z.object({\n scheduleId: z.string(),\n claimId: z.string(),\n scheduledFireAt: z.number(),\n});\n\nexport const listScheduleTriggersQuerySchema = z.object({\n limit: z.coerce.number().int().positive().optional(),\n fromActualFireAt: z.coerce.number().int().nonnegative().optional(),\n toActualFireAt: z.coerce.number().int().nonnegative().optional(),\n});\n\nexport const listScheduleTriggersResponseSchema = z.object({\n triggers: z.array(scheduleTriggerResponseSchema),\n});\n\nexport type AgentScheduleResponse = z.infer<typeof agentScheduleSchema>;\nexport type WorkflowScheduleResponse = z.infer<typeof workflowScheduleSchema>;\nexport type ScheduleResponse = z.infer<typeof scheduleSchema>;\n","import type { Mastra } from '@mastra/core';\nimport type { AgentSchedule, AnySchedule, WorkflowSchedule } from '@mastra/core/schedules';\nimport type { WorkflowRunState } from '@mastra/core/workflows';\nimport { HTTPException } from '../http-exception';\nimport {\n createScheduleBodySchema,\n deleteScheduleResponseSchema,\n listSchedulesQuerySchema,\n listSchedulesResponseSchema,\n listScheduleTriggersQuerySchema,\n listScheduleTriggersResponseSchema,\n runScheduleResponseSchema,\n scheduleIdPathParams,\n scheduleSchema,\n updateScheduleBodySchema,\n} from '../schemas/schedules';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getPublicWorkflowById } from './utils';\n\ntype RunSummary = {\n status: WorkflowRunState['status'];\n startedAt?: number;\n completedAt?: number;\n durationMs?: number;\n error?: string;\n};\n\nfunction snapshotToRunSummary(run: {\n snapshot: WorkflowRunState | string;\n createdAt: Date;\n updatedAt: Date;\n}): RunSummary | undefined {\n const snapshot = typeof run.snapshot === 'string' ? null : run.snapshot;\n if (!snapshot) return undefined;\n const startedAt = run.createdAt instanceof Date ? run.createdAt.getTime() : undefined;\n const isTerminal =\n snapshot.status === 'success' ||\n snapshot.status === 'failed' ||\n snapshot.status === 'canceled' ||\n snapshot.status === 'bailed' ||\n snapshot.status === 'tripwire';\n const completedAt = isTerminal ? (run.updatedAt instanceof Date ? run.updatedAt.getTime() : undefined) : undefined;\n const durationMs = startedAt !== undefined && completedAt !== undefined ? completedAt - startedAt : undefined;\n return {\n status: snapshot.status,\n startedAt,\n completedAt,\n durationMs,\n error: snapshot.error?.message,\n };\n}\n\nasync function fetchRunSummary(mastra: Mastra, workflowName: string, runId: string): Promise<RunSummary | undefined> {\n try {\n const workflowsStore = await mastra.getStorage()?.getStore('workflows');\n const run = await workflowsStore?.getWorkflowRunById({ runId, workflowName });\n if (!run) return undefined;\n return snapshotToRunSummary(run);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Attach a `lastRun` summary to workflow schedules. Agent schedules pass\n * through unchanged — their `lastRunId` is an agent run, not a workflow run.\n */\nasync function hydrateScheduleResponse(\n mastra: Mastra,\n schedule: AnySchedule,\n): Promise<AgentSchedule | (WorkflowSchedule & { lastRun?: RunSummary })> {\n if (!schedule.workflowId || !schedule.lastRunId) {\n return schedule;\n }\n const lastRun = await fetchRunSummary(mastra, schedule.workflowId, schedule.lastRunId);\n return lastRun ? { ...schedule, lastRun } : schedule;\n}\n\n/**\n * Resolve a schedule by id via `mastra.schedules`. Returns 404 for missing\n * rows so handlers surface a clean HTTP error instead of a service error.\n */\nasync function loadSchedule(mastra: Mastra, scheduleId: string): Promise<AnySchedule> {\n const schedule = await mastra.schedules.get(scheduleId);\n if (!schedule) {\n throw new HTTPException(404, { message: 'Schedule not found' });\n }\n return schedule;\n}\n\nexport const LIST_SCHEDULES_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules',\n responseType: 'json' as const,\n queryParamSchema: listSchedulesQuerySchema,\n responseSchema: listSchedulesResponseSchema,\n summary: 'List schedules',\n description:\n 'Returns all schedules — agent schedules and workflow schedules — optionally filtered by agentId, workflowId, or status. Completed schedules are excluded unless requested with a status filter. Agent schedules can additionally be filtered by threadId, resourceId, or name.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, workflowId, status, threadId, resourceId, name }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n // Schedules domain not configured — there are no schedules to return.\n return { schedules: [] };\n }\n const schedules = await mastra.schedules.list({ agentId, workflowId, status, threadId, resourceId, name });\n const hydrated = await Promise.all(schedules.map(schedule => hydrateScheduleResponse(mastra, schedule)));\n return { schedules: hydrated };\n },\n});\n\nexport const GET_SCHEDULE_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Get a schedule by ID',\n description: 'Returns a single schedule by its id.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n const schedule = await loadSchedule(mastra, scheduleId);\n return hydrateScheduleResponse(mastra, schedule);\n },\n});\n\nexport const CREATE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules',\n responseType: 'json' as const,\n bodySchema: createScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Create a schedule',\n description:\n 'Creates a new schedule. Pass `agentId` (plus `prompt`) to schedule an agent, or `workflowId` (plus optional `inputData`) to schedule a workflow. Agent schedules get a random `agent_<uuid>` id, workflow schedules a random `schedule_<uuid>` id; pass `id` for a stable slug instead.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, ...body }) => {\n // getAgentById throws a MastraError (status 404) when the target is\n // unknown; translate that into a clean HTTP 404 instead of letting it\n // surface as 500. Hidden internal workflows are treated as unknown.\n if ('workflowId' in body && body.workflowId) {\n // The scheduler later resolves the stored id through core, which also\n // sees hidden workflows. Reject ids where that lookup would pick a\n // different workflow than the public one validated here.\n const workflow = getPublicWorkflowById(mastra, body.workflowId);\n let resolved: unknown;\n try {\n resolved = mastra.getWorkflowById(body.workflowId);\n } catch {\n resolved = undefined;\n }\n if (!workflow || resolved !== workflow) {\n throw new HTTPException(404, { message: `Workflow \"${body.workflowId}\" not found` });\n }\n return await mastra.schedules.create({\n workflowId: body.workflowId,\n cron: body.cron,\n ...(body.id ? { id: body.id } : {}),\n ...(body.timezone ? { timezone: body.timezone } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId ? { resourceId: body.resourceId } : {}),\n ...(body.metadata ? { metadata: body.metadata } : {}),\n });\n }\n const agentBody = body as Extract<typeof body, { agentId: string }>;\n try {\n mastra.getAgentById(agentBody.agentId);\n } catch {\n throw new HTTPException(404, { message: `Agent \"${agentBody.agentId}\" not found` });\n }\n return await mastra.schedules.create({\n agentId: agentBody.agentId,\n cron: agentBody.cron,\n prompt: agentBody.prompt,\n ...(agentBody.id ? { id: agentBody.id } : {}),\n ...(agentBody.name ? { name: agentBody.name } : {}),\n ...(agentBody.timezone ? { timezone: agentBody.timezone } : {}),\n ...(agentBody.threadId ? { threadId: agentBody.threadId } : {}),\n ...(agentBody.resourceId ? { resourceId: agentBody.resourceId } : {}),\n ...(agentBody.signalType ? { signalType: agentBody.signalType } : {}),\n ...(agentBody.tagName ? { tagName: agentBody.tagName } : {}),\n ...(agentBody.attributes ? { attributes: agentBody.attributes } : {}),\n ...(agentBody.ifActive ? { ifActive: agentBody.ifActive } : {}),\n ...(agentBody.ifIdle ? { ifIdle: agentBody.ifIdle } : {}),\n ...(agentBody.providerOptions ? { providerOptions: agentBody.providerOptions } : {}),\n ...(agentBody.metadata ? { metadata: agentBody.metadata } : {}),\n });\n },\n});\n\nexport const UPDATE_SCHEDULE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n bodySchema: updateScheduleBodySchema,\n responseSchema: scheduleSchema,\n summary: 'Update a schedule',\n description:\n \"Partial update of a schedule. Fields apply to the matching target type; agent-only fields on a workflow schedule are rejected. An agent schedule's `threadId` and `resourceId` are part of its identity and cannot be changed — to re-target, delete and recreate. A workflow schedule's `resourceId` is run-attribution metadata and may be updated. Editing `cron` (or `timezone`) recomputes `nextFireAt`. A recomputed cadence that can still fire reactivates a `completed` schedule, while a cadence with no future occurrence leaves the schedule `completed`.\",\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, ...body }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.update(scheduleId, {\n ...(body.cron !== undefined ? { cron: body.cron } : {}),\n ...(body.timezone !== undefined ? { timezone: body.timezone } : {}),\n ...(body.status !== undefined ? { status: body.status } : {}),\n ...(body.metadata !== undefined ? { metadata: body.metadata } : {}),\n ...(body.prompt !== undefined ? { prompt: body.prompt } : {}),\n ...(body.name !== undefined ? { name: body.name } : {}),\n ...(body.signalType !== undefined ? { signalType: body.signalType } : {}),\n ...(body.tagName !== undefined ? { tagName: body.tagName } : {}),\n ...(body.attributes !== undefined ? { attributes: body.attributes } : {}),\n ...(body.ifActive !== undefined ? { ifActive: body.ifActive } : {}),\n ...(body.ifIdle !== undefined ? { ifIdle: body.ifIdle } : {}),\n ...(body.providerOptions !== undefined ? { providerOptions: body.providerOptions } : {}),\n ...(body.inputData !== undefined ? { inputData: body.inputData } : {}),\n ...(body.initialState !== undefined ? { initialState: body.initialState } : {}),\n ...(body.requestContext !== undefined ? { requestContext: body.requestContext } : {}),\n ...(body.resourceId !== undefined ? { resourceId: body.resourceId } : {}),\n });\n },\n});\n\nexport const DELETE_SCHEDULE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/schedules/:scheduleId',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: deleteScheduleResponseSchema,\n summary: 'Delete a schedule',\n description: 'Permanently deletes the schedule. 404 when the schedule does not exist.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n await mastra.schedules.delete(scheduleId);\n return { message: 'Schedule deleted' };\n },\n});\n\nexport const PAUSE_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/pause',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Pause a schedule',\n description:\n 'Marks the schedule as paused. The scheduler tick loop will skip paused schedules. Idempotent — pausing an already-paused schedule returns the current state unchanged. Pause status survives redeploys.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.pause(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RESUME_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/resume',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: scheduleSchema,\n summary: 'Resume a paused schedule',\n description:\n 'Marks the schedule as active and recomputes nextFireAt from \"now\" so a long-paused schedule does not fire a backlog. Idempotent — resuming an already-active schedule returns the current state unchanged.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n const updated = await mastra.schedules.resume(scheduleId);\n return hydrateScheduleResponse(mastra, updated);\n },\n});\n\nexport const RUN_SCHEDULE_ROUTE = createRoute({\n method: 'POST',\n path: '/schedules/:scheduleId/run',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n responseSchema: runScheduleResponseSchema,\n summary: 'Fire a schedule now',\n description:\n 'Manually triggers a single schedule fire out-of-band from the cron schedule. Records a trigger row with `triggerKind: \"manual\"`. Does not advance `nextFireAt`.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId }) => {\n await loadSchedule(mastra, scheduleId);\n return await mastra.schedules.run(scheduleId);\n },\n});\n\nexport const LIST_SCHEDULE_TRIGGERS_ROUTE = createRoute({\n method: 'GET',\n path: '/schedules/:scheduleId/triggers',\n responseType: 'json' as const,\n pathParamSchema: scheduleIdPathParams,\n queryParamSchema: listScheduleTriggersQuerySchema,\n responseSchema: listScheduleTriggersResponseSchema,\n summary: 'List trigger history for a schedule',\n description: 'Returns the audit trail of trigger attempts for a schedule, ordered by actualFireAt descending.',\n tags: ['Schedules'],\n requiresAuth: true,\n handler: async ({ mastra, scheduleId, limit, fromActualFireAt, toActualFireAt }) => {\n const schedulesStore = await mastra.getStorage()?.getStore('schedules');\n if (!schedulesStore) {\n return { triggers: [] };\n }\n const schedule = await mastra.schedules.get(scheduleId);\n const triggers = await schedulesStore.listTriggers(schedule?.id ?? scheduleId, {\n limit,\n fromActualFireAt,\n toActualFireAt,\n });\n if (!schedule?.workflowId) {\n return { triggers };\n }\n const workflowName = schedule.workflowId;\n const hydrated = await Promise.all(\n triggers.map(async trigger => {\n if (trigger.outcome !== 'published' || !trigger.runId) return trigger;\n const run = await fetchRunSummary(mastra, workflowName, trigger.runId);\n return run ? { ...trigger, run } : trigger;\n }),\n );\n return { triggers: hydrated };\n },\n});\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
4
  const require_common = require("../../common-DhKNoXGp.cjs");
5
5
  const require_workflows = require("../../workflows-C8rDpHyY.cjs");
6
6
  const require_agent_builder = require("../../agent-builder-DDYdQvlQ.cjs");
7
- const require_agents = require("../../agents-CKSEPpk1.cjs");
7
+ const require_agents = require("../../agents-D9vpLghy.cjs");
8
8
  const require_route_builder = require("../../route-builder-2yrD15TL.cjs");
9
9
  const require_utils = require("../../utils-CJxnYdr3.cjs");
10
10
  const require_server_handlers_error = require("./error.cjs");
@@ -3,7 +3,7 @@ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
3
3
  import { o as optionalRunIdSchema, u as runIdSchema } from "../../common-Y30XtCyr.js";
4
4
  import { b as workflowRunResultSchema, g as workflowInfoSchema, i as listWorkflowsResponseSchema, m as workflowExecutionResultSchema, n as createWorkflowRunResponseSchema, p as workflowControlResponseSchema, r as listWorkflowRunsQuerySchema, x as workflowRunsResponseSchema, y as workflowRunResultQuerySchema } from "../../workflows-Dcx4Ib0t.js";
5
5
  import { a as streamAgentBuilderBodySchema, i as startAsyncAgentBuilderBodySchema, n as actionRunPathParams, o as streamLegacyAgentBuilderBodySchema, r as resumeAgentBuilderBodySchema, t as actionIdPathParams } from "../../agent-builder-B8kc4OBs.js";
6
- import { J as streamResponseSchema } from "../../agents-CW_JJZOf.js";
6
+ import { Y as streamResponseSchema } from "../../agents-DNWDET4U.js";
7
7
  import { n as createRoute } from "../../route-builder-lBil8Cvo.js";
8
8
  import { t as WorkflowRegistry } from "../../utils-BpQY-tBr.js";
9
9
  import { handleError } from "./error.js";
@@ -4,7 +4,7 @@ const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
4
  const require_route_builder = require("../../route-builder-2yrD15TL.cjs");
5
5
  const require_constants = require("../../constants-epIL4td4.cjs");
6
6
  const require_server_handlers_error = require("./error.cjs");
7
- const require_utils = require("../../utils-BF2Kbju4.cjs");
7
+ const require_utils = require("../../utils-DdGLbkOl.cjs");
8
8
  const require_memory = require("../../memory-CizEIbl1.cjs");
9
9
  let zod_v4 = require("zod/v4");
10
10
  //#region src/server/handlers/agent-controller.ts
@@ -2,7 +2,7 @@ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
2
2
  import { n as createRoute } from "../../route-builder-lBil8Cvo.js";
3
3
  import { l as MASTRA_USER_KEY } from "../../constants-C631oS02.js";
4
4
  import { handleError } from "./error.js";
5
- import { t as enforceThreadAccess } from "../../utils-GVYTDbr2.js";
5
+ import { t as enforceThreadAccess } from "../../utils-mIFmRM_j.js";
6
6
  import { E as includeSchema, F as messageOrderBySchema, h as filterSchema } from "../../memory-B58Q2LgU.js";
7
7
  import { z } from "zod/v4";
8
8
  //#region src/server/handlers/agent-controller.ts
@@ -1,14 +1,14 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_agents = require("../../agents-CKSEPpk1.cjs");
4
+ const require_agents = require("../../agents-D9vpLghy.cjs");
5
5
  const require_schema_e0VHpMt0 = require("../../schema-e0VHpMt0-BS9KHnuT.cjs");
6
6
  const require_route_builder = require("../../route-builder-2yrD15TL.cjs");
7
7
  require("../../schema-BVcoNfni.cjs");
8
8
  const require_utils = require("../../utils-CJxnYdr3.cjs");
9
9
  const require_constants = require("../../constants-epIL4td4.cjs");
10
10
  const require_server_handlers_error = require("./error.cjs");
11
- const require_utils$1 = require("../../utils-BF2Kbju4.cjs");
11
+ const require_utils$1 = require("../../utils-DdGLbkOl.cjs");
12
12
  const require_stored_agents = require("../../stored-agents-BTL-o6aM.cjs");
13
13
  const require_workspace = require("../../workspace-BJYV2lkt.cjs");
14
14
  const require_server_handlers_tool_schema_overrides = require("./tool-schema-overrides.cjs");
@@ -41,6 +41,7 @@ var agents_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
41
41
  LIST_SUSPENDED_RUNS_ROUTE: () => LIST_SUSPENDED_RUNS_ROUTE,
42
42
  OBSERVE_AGENT_STREAM_ROUTE: () => OBSERVE_AGENT_STREAM_ROUTE,
43
43
  QUEUE_AGENT_MESSAGE_ROUTE: () => QUEUE_AGENT_MESSAGE_ROUTE,
44
+ QUEUE_AGENT_SIGNAL_ROUTE: () => QUEUE_AGENT_SIGNAL_ROUTE,
44
45
  RECOVER_ROUTE: () => RECOVER_ROUTE,
45
46
  REORDER_AGENT_MODEL_LIST_ROUTE: () => REORDER_AGENT_MODEL_LIST_ROUTE,
46
47
  RESET_AGENT_MODEL_ROUTE: () => RESET_AGENT_MODEL_ROUTE,
@@ -164,6 +165,7 @@ async function validateDurableToolCallAccess({ mastra, agent, runId, toolCallId,
164
165
  const persistedThreadId = input?.state?.threadId ?? input?.messageListState?.memoryInfo?.threadId;
165
166
  if (threadId && persistedThreadId !== threadId) throw new require_http_exception.HTTPException(403, { message: "Access denied: durable run belongs to a different thread" });
166
167
  if (!ready || input?.agentId !== agent.id) throw new require_http_exception.HTTPException(403, { message: "Access denied: tool call is not suspended on this durable run" });
168
+ await require_utils$1.validateRunOwnership({ resourceId: persistedResourceId }, contextResourceId, mastra);
167
169
  return;
168
170
  }
169
171
  await new Promise((resolve) => setTimeout(resolve, DURABLE_SNAPSHOT_WAIT_INTERVAL_MS));
@@ -1393,7 +1395,7 @@ const SEND_AGENT_SIGNAL_ROUTE = require_route_builder.createRoute({
1393
1395
  }
1394
1396
  }
1395
1397
  });
1396
- async function handleAgentMessageRoute({ mastra, agentId, requestContext: serverRequestContext, message, runId, resourceId, threadId, ifActive, ifIdle, methodName }) {
1398
+ async function handleAgentMessageRoute({ mastra, agentId, requestContext: serverRequestContext, runId, resourceId, threadId, ifActive, ifIdle, methodName, invoke }) {
1397
1399
  const idleStreamOptions = ifIdle?.streamOptions;
1398
1400
  const bodyRequestContext = idleStreamOptions?.requestContext;
1399
1401
  const normalizedIdleStreamOptions = normalizePublicExecutionOptions(idleStreamOptions, serverRequestContext);
@@ -1421,7 +1423,7 @@ async function handleAgentMessageRoute({ mastra, agentId, requestContext: server
1421
1423
  }
1422
1424
  if (typeof agent[methodName] !== "function") throw new require_http_exception.HTTPException(501, { message: `agent ${methodName} is not supported by this Mastra core version` });
1423
1425
  if (runId) {
1424
- const result = await agent[methodName](message, {
1426
+ const result = await invoke(agent, {
1425
1427
  runId,
1426
1428
  ...effectiveResourceId ? { resourceId: effectiveResourceId } : {},
1427
1429
  ...effectiveThreadId ? { threadId: effectiveThreadId } : {},
@@ -1439,7 +1441,7 @@ async function handleAgentMessageRoute({ mastra, agentId, requestContext: server
1439
1441
  };
1440
1442
  }
1441
1443
  if (!effectiveResourceId || !effectiveThreadId) throw new require_http_exception.HTTPException(400, { message: "resourceId and threadId are required when runId is not provided" });
1442
- const result = await agent[methodName](message, {
1444
+ const result = await invoke(agent, {
1443
1445
  resourceId: effectiveResourceId,
1444
1446
  threadId: effectiveThreadId,
1445
1447
  ...ifActive ? { ifActive } : {},
@@ -1472,7 +1474,8 @@ const SEND_AGENT_MESSAGE_ROUTE = require_route_builder.createRoute({
1472
1474
  try {
1473
1475
  return await handleAgentMessageRoute({
1474
1476
  ...params,
1475
- methodName: "sendMessage"
1477
+ methodName: "sendMessage",
1478
+ invoke: (agent, target) => agent.sendMessage(params.message, target)
1476
1479
  });
1477
1480
  } catch (error) {
1478
1481
  return handleSignalRoutingError(error, "error sending agent message");
@@ -1495,13 +1498,38 @@ const QUEUE_AGENT_MESSAGE_ROUTE = require_route_builder.createRoute({
1495
1498
  try {
1496
1499
  return await handleAgentMessageRoute({
1497
1500
  ...params,
1498
- methodName: "queueMessage"
1501
+ methodName: "queueMessage",
1502
+ invoke: (agent, target) => agent.queueMessage(params.message, target)
1499
1503
  });
1500
1504
  } catch (error) {
1501
1505
  return handleSignalRoutingError(error, "error queueing agent message");
1502
1506
  }
1503
1507
  }
1504
1508
  });
1509
+ const QUEUE_AGENT_SIGNAL_ROUTE = require_route_builder.createRoute({
1510
+ method: "POST",
1511
+ path: "/agents/:agentId/queue-signal",
1512
+ responseType: "json",
1513
+ pathParamSchema: require_agents.agentIdPathParams,
1514
+ bodySchema: require_agents.queueAgentSignalBodySchema,
1515
+ responseSchema: sendAgentSignalResponseSchema,
1516
+ summary: "Queue agent signal",
1517
+ description: "Queues a typed signal to run after the active thread run completes, or starts a memory thread run when idle",
1518
+ tags: ["Agents", "Streaming"],
1519
+ requiresAuth: true,
1520
+ requiresPermission: "agents:execute",
1521
+ handler: async (params) => {
1522
+ try {
1523
+ return await handleAgentMessageRoute({
1524
+ ...params,
1525
+ methodName: "queueSignal",
1526
+ invoke: (agent, target) => agent.queueSignal(params.signal, target)
1527
+ });
1528
+ } catch (error) {
1529
+ return handleSignalRoutingError(error, "error queueing agent signal");
1530
+ }
1531
+ }
1532
+ });
1505
1533
  const ABORT_AGENT_THREAD_ROUTE = require_route_builder.createRoute({
1506
1534
  method: "POST",
1507
1535
  path: "/agents/:agentId/threads/abort",
@@ -2121,7 +2149,7 @@ const RESUME_STREAM_ROUTE = require_route_builder.createRoute({
2121
2149
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2122
2150
  workflowName: "agentic-loop",
2123
2151
  runId
2124
- }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0));
2152
+ }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0), mastra);
2125
2153
  const { structuredOutput, untilIdle, ...restOptions } = rest;
2126
2154
  const options = {
2127
2155
  runId,
@@ -2172,7 +2200,7 @@ const RECOVER_ROUTE = require_route_builder.createRoute({
2172
2200
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2173
2201
  workflowName: getDurableLoopWorkflowName(agent),
2174
2202
  runId
2175
- }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0));
2203
+ }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0), mastra);
2176
2204
  return (await agent.recover(runId, { abortSignal })).fullStream;
2177
2205
  } catch (error) {
2178
2206
  return require_server_handlers_error.handleError(error, "error recovering agent run");
@@ -2247,7 +2275,7 @@ const RESUME_STREAM_UNTIL_IDLE_ROUTE = require_route_builder.createRoute({
2247
2275
  await require_utils$1.validateRunOwnership(await (await mastra.getStorage()?.getStore("workflows"))?.getWorkflowRunById({
2248
2276
  workflowName: "agentic-loop",
2249
2277
  runId
2250
- }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0));
2278
+ }), require_utils$1.getEffectiveResourceId(serverRequestContext, void 0), mastra);
2251
2279
  const { structuredOutput, ...restOptions } = rest;
2252
2280
  const options = {
2253
2281
  runId,
@@ -2774,6 +2802,7 @@ exports.LIST_AGENTS_ROUTE = LIST_AGENTS_ROUTE;
2774
2802
  exports.LIST_SUSPENDED_RUNS_ROUTE = LIST_SUSPENDED_RUNS_ROUTE;
2775
2803
  exports.OBSERVE_AGENT_STREAM_ROUTE = OBSERVE_AGENT_STREAM_ROUTE;
2776
2804
  exports.QUEUE_AGENT_MESSAGE_ROUTE = QUEUE_AGENT_MESSAGE_ROUTE;
2805
+ exports.QUEUE_AGENT_SIGNAL_ROUTE = QUEUE_AGENT_SIGNAL_ROUTE;
2777
2806
  exports.RECOVER_ROUTE = RECOVER_ROUTE;
2778
2807
  exports.REORDER_AGENT_MODEL_LIST_ROUTE = REORDER_AGENT_MODEL_LIST_ROUTE;
2779
2808
  exports.RESET_AGENT_MODEL_ROUTE = RESET_AGENT_MODEL_ROUTE;