@mastra/server 1.50.0-alpha.2 → 1.50.0-alpha.3
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.
- package/CHANGELOG.md +25 -0
- package/dist/{api-schema-manifest-EW55OSKH.js → api-schema-manifest-DOPBJPOJ.js} +3 -3
- package/dist/{api-schema-manifest-EW55OSKH.js.map → api-schema-manifest-DOPBJPOJ.js.map} +1 -1
- package/dist/{api-schema-manifest-YT3AMGZD.cjs → api-schema-manifest-QEW2UYFB.cjs} +4 -4
- package/dist/{api-schema-manifest-YT3AMGZD.cjs.map → api-schema-manifest-QEW2UYFB.cjs.map} +1 -1
- package/dist/{chunk-ZAK4IF2O.js → chunk-5HOECS3M.js} +15 -25
- package/dist/chunk-5HOECS3M.js.map +1 -0
- package/dist/{chunk-6QZTZ5F3.cjs → chunk-5RAMEYIX.cjs} +3 -3
- package/dist/{chunk-6QZTZ5F3.cjs.map → chunk-5RAMEYIX.cjs.map} +1 -1
- package/dist/{chunk-57BKC4ZW.cjs → chunk-F32IDQGW.cjs} +12 -12
- package/dist/chunk-F32IDQGW.cjs.map +1 -0
- package/dist/{chunk-4D4HXQZQ.cjs → chunk-F6N7265F.cjs} +3 -3
- package/dist/{chunk-4D4HXQZQ.cjs.map → chunk-F6N7265F.cjs.map} +1 -1
- package/dist/{chunk-WUUYTMMN.js → chunk-FRVPBGNR.js} +3 -3
- package/dist/{chunk-WUUYTMMN.js.map → chunk-FRVPBGNR.js.map} +1 -1
- package/dist/{chunk-3PX4QNTY.js → chunk-L755XTYQ.js} +5 -5
- package/dist/{chunk-3PX4QNTY.js.map → chunk-L755XTYQ.js.map} +1 -1
- package/dist/{chunk-VFTKZ5NN.js → chunk-LXZQ3FLD.js} +3 -3
- package/dist/{chunk-VFTKZ5NN.js.map → chunk-LXZQ3FLD.js.map} +1 -1
- package/dist/chunk-NNZX6L34.cjs +479 -0
- package/dist/chunk-NNZX6L34.cjs.map +1 -0
- package/dist/chunk-TMK7RPZE.js +469 -0
- package/dist/chunk-TMK7RPZE.js.map +1 -0
- package/dist/{chunk-EVRBOCDD.cjs → chunk-TWAGLLIX.cjs} +5 -5
- package/dist/{chunk-EVRBOCDD.cjs.map → chunk-TWAGLLIX.cjs.map} +1 -1
- package/dist/{chunk-HK4SJHYT.js → chunk-UGL754UC.js} +12 -12
- package/dist/chunk-UGL754UC.js.map +1 -0
- package/dist/{chunk-5NLRYTA7.cjs → chunk-YF52OTQK.cjs} +70 -80
- package/dist/chunk-YF52OTQK.cjs.map +1 -0
- package/dist/{dist-GT5SXQBU.cjs → dist-5EULF33F.cjs} +4 -4
- package/dist/{dist-GT5SXQBU.cjs.map → dist-5EULF33F.cjs.map} +1 -1
- package/dist/{dist-OPQ753KD.js → dist-RCCUYXJR.js} +3 -3
- package/dist/{dist-OPQ753KD.js.map → dist-RCCUYXJR.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-BTXNITBN-USQTBIPQ.cjs → observational-memory-QL6BKIQX-KHRHK3MH.cjs} +28 -28
- package/dist/{observational-memory-BTXNITBN-USQTBIPQ.cjs.map → observational-memory-QL6BKIQX-KHRHK3MH.cjs.map} +1 -1
- package/dist/{observational-memory-BTXNITBN-GBTCKQX5.js → observational-memory-QL6BKIQX-XL77IBYW.js} +3 -3
- package/dist/{observational-memory-BTXNITBN-GBTCKQX5.js.map → observational-memory-QL6BKIQX-XL77IBYW.js.map} +1 -1
- package/dist/server/handlers/agent-builder.cjs +17 -17
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-controller.cjs +35 -35
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +1 -1
- package/dist/server/handlers/schedules-workflows-shim.cjs +32 -7
- package/dist/server/handlers/schedules-workflows-shim.cjs.map +1 -1
- package/dist/server/handlers/schedules-workflows-shim.js +16 -1
- package/dist/server/handlers/schedules-workflows-shim.js.map +1 -1
- package/dist/server/handlers/schedules.cjs +22 -6
- package/dist/server/handlers/schedules.d.ts +963 -361
- package/dist/server/handlers/schedules.d.ts.map +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers.cjs +2 -2
- package/dist/server/handlers.js +1 -1
- package/dist/server/schemas/index.cjs +152 -152
- package/dist/server/schemas/index.js +4 -4
- package/dist/server/schemas/schedules.d.ts +337 -116
- package/dist/server/schemas/schedules.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +13 -13
- package/dist/server/server-adapter/index.js +2 -2
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/schedules.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/chunk-4DVFBBKV.js +0 -281
- package/dist/chunk-4DVFBBKV.js.map +0 -1
- package/dist/chunk-4HFIGLPA.js +0 -142
- package/dist/chunk-4HFIGLPA.js.map +0 -1
- package/dist/chunk-4WZMR4IW.cjs +0 -150
- package/dist/chunk-4WZMR4IW.cjs.map +0 -1
- package/dist/chunk-57BKC4ZW.cjs.map +0 -1
- package/dist/chunk-5NLRYTA7.cjs.map +0 -1
- package/dist/chunk-5XRZSGVP.cjs +0 -42
- package/dist/chunk-5XRZSGVP.cjs.map +0 -1
- package/dist/chunk-7XZQUQEO.cjs +0 -187
- package/dist/chunk-7XZQUQEO.cjs.map +0 -1
- package/dist/chunk-HK4SJHYT.js.map +0 -1
- package/dist/chunk-RCXVCPAD.js +0 -181
- package/dist/chunk-RCXVCPAD.js.map +0 -1
- package/dist/chunk-XEXUQSKG.js +0 -19
- package/dist/chunk-XEXUQSKG.js.map +0 -1
- package/dist/chunk-XTB6XXHH.cjs +0 -290
- package/dist/chunk-XTB6XXHH.cjs.map +0 -1
- package/dist/chunk-ZAK4IF2O.js.map +0 -1
- package/dist/server/handlers/heartbeats.cjs +0 -40
- package/dist/server/handlers/heartbeats.cjs.map +0 -1
- package/dist/server/handlers/heartbeats.d.ts +0 -769
- package/dist/server/handlers/heartbeats.d.ts.map +0 -1
- package/dist/server/handlers/heartbeats.js +0 -3
- package/dist/server/handlers/heartbeats.js.map +0 -1
- package/dist/server/schemas/heartbeats.d.ts +0 -227
- package/dist/server/schemas/heartbeats.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/heartbeats.d.ts +0 -3
- package/dist/server/server-adapter/routes/heartbeats.d.ts.map +0 -1
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { createRoute } from './chunk-PIKPS6Q6.js';
|
|
2
|
+
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
|
|
5
|
+
var scheduleStatusSchema = z.enum(["active", "paused"]);
|
|
6
|
+
var signalTypeSchema = z.enum(["user", "state", "reactive", "notification", "user-message", "system-reminder"]);
|
|
7
|
+
var signalAttributesSchema = z.record(
|
|
8
|
+
z.string(),
|
|
9
|
+
z.union([z.string(), z.number(), z.boolean(), z.null()]).optional()
|
|
10
|
+
);
|
|
11
|
+
var ifActiveSchema = z.object({
|
|
12
|
+
behavior: z.enum(["deliver", "persist", "discard"]).optional(),
|
|
13
|
+
attributes: signalAttributesSchema.optional()
|
|
14
|
+
});
|
|
15
|
+
var ifIdleSchema = z.object({
|
|
16
|
+
behavior: z.enum(["wake", "persist", "discard"]).optional(),
|
|
17
|
+
attributes: signalAttributesSchema.optional(),
|
|
18
|
+
streamOptions: z.object({
|
|
19
|
+
requestContext: z.record(z.string(), z.unknown()).optional()
|
|
20
|
+
}).optional()
|
|
21
|
+
});
|
|
22
|
+
var workflowRunStatusSchema = z.enum([
|
|
23
|
+
"running",
|
|
24
|
+
"success",
|
|
25
|
+
"failed",
|
|
26
|
+
"tripwire",
|
|
27
|
+
"suspended",
|
|
28
|
+
"waiting",
|
|
29
|
+
"pending",
|
|
30
|
+
"canceled",
|
|
31
|
+
"bailed",
|
|
32
|
+
"paused",
|
|
33
|
+
"skipped"
|
|
34
|
+
]);
|
|
35
|
+
var scheduleRunSummarySchema = z.object({
|
|
36
|
+
status: workflowRunStatusSchema,
|
|
37
|
+
startedAt: z.number().optional(),
|
|
38
|
+
completedAt: z.number().optional(),
|
|
39
|
+
durationMs: z.number().optional(),
|
|
40
|
+
error: z.string().optional()
|
|
41
|
+
});
|
|
42
|
+
var agentScheduleSchema = z.object({
|
|
43
|
+
id: z.string(),
|
|
44
|
+
agentId: z.string(),
|
|
45
|
+
/** Mirror of the workflow-schedule discriminator — always absent on agent schedules. */
|
|
46
|
+
workflowId: z.undefined().optional(),
|
|
47
|
+
/** Workflow-run summary — never hydrated for agent schedules. */
|
|
48
|
+
lastRun: z.undefined().optional(),
|
|
49
|
+
name: z.string().optional(),
|
|
50
|
+
threadId: z.string().optional(),
|
|
51
|
+
resourceId: z.string().optional(),
|
|
52
|
+
prompt: z.string(),
|
|
53
|
+
cron: z.string(),
|
|
54
|
+
timezone: z.string().optional(),
|
|
55
|
+
status: scheduleStatusSchema,
|
|
56
|
+
nextFireAt: z.number(),
|
|
57
|
+
lastFireAt: z.number().optional(),
|
|
58
|
+
lastRunId: z.string().optional(),
|
|
59
|
+
signalType: signalTypeSchema.optional(),
|
|
60
|
+
tagName: z.string().optional(),
|
|
61
|
+
attributes: signalAttributesSchema.optional(),
|
|
62
|
+
ifActive: ifActiveSchema.optional(),
|
|
63
|
+
ifIdle: ifIdleSchema.optional(),
|
|
64
|
+
providerOptions: z.record(z.string(), z.unknown()).optional(),
|
|
65
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
66
|
+
createdAt: z.number(),
|
|
67
|
+
updatedAt: z.number()
|
|
68
|
+
});
|
|
69
|
+
var workflowScheduleSchema = z.object({
|
|
70
|
+
id: z.string(),
|
|
71
|
+
workflowId: z.string(),
|
|
72
|
+
/** Mirror of the agent-schedule discriminator — always absent on workflow schedules. */
|
|
73
|
+
agentId: z.undefined().optional(),
|
|
74
|
+
cron: z.string(),
|
|
75
|
+
timezone: z.string().optional(),
|
|
76
|
+
status: scheduleStatusSchema,
|
|
77
|
+
nextFireAt: z.number(),
|
|
78
|
+
lastFireAt: z.number().optional(),
|
|
79
|
+
lastRunId: z.string().optional(),
|
|
80
|
+
lastRun: scheduleRunSummarySchema.optional(),
|
|
81
|
+
inputData: z.unknown().optional(),
|
|
82
|
+
initialState: z.unknown().optional(),
|
|
83
|
+
requestContext: z.record(z.string(), z.unknown()).optional(),
|
|
84
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
85
|
+
createdAt: z.number(),
|
|
86
|
+
updatedAt: z.number()
|
|
87
|
+
});
|
|
88
|
+
var scheduleSchema = z.union([agentScheduleSchema, workflowScheduleSchema]);
|
|
89
|
+
var scheduleTriggerOutcomeSchema = z.enum([
|
|
90
|
+
"published",
|
|
91
|
+
"succeeded",
|
|
92
|
+
"delivered",
|
|
93
|
+
"persisted",
|
|
94
|
+
"discarded",
|
|
95
|
+
"skipped",
|
|
96
|
+
"aborted",
|
|
97
|
+
"failed",
|
|
98
|
+
// Legacy queue/notification outcomes — no longer written, but trigger rows
|
|
99
|
+
// persisted by older builds may still carry them. Kept readable so the
|
|
100
|
+
// response validator does not reject historical rows. Mirrors the core
|
|
101
|
+
// ScheduleTriggerOutcome union.
|
|
102
|
+
"acked",
|
|
103
|
+
"alerted",
|
|
104
|
+
"deferred",
|
|
105
|
+
"appended-from-queue",
|
|
106
|
+
"dropped-stale",
|
|
107
|
+
"dropped-superseded",
|
|
108
|
+
"dropped-busy"
|
|
109
|
+
]);
|
|
110
|
+
var scheduleTriggerKindSchema = z.enum(["schedule-fire", "queue-drain", "manual"]);
|
|
111
|
+
var scheduleTriggerResponseSchema = z.object({
|
|
112
|
+
id: z.string().optional(),
|
|
113
|
+
scheduleId: z.string(),
|
|
114
|
+
runId: z.string().nullable(),
|
|
115
|
+
scheduledFireAt: z.number(),
|
|
116
|
+
actualFireAt: z.number(),
|
|
117
|
+
outcome: scheduleTriggerOutcomeSchema,
|
|
118
|
+
error: z.string().optional(),
|
|
119
|
+
triggerKind: scheduleTriggerKindSchema.optional(),
|
|
120
|
+
parentTriggerId: z.string().optional(),
|
|
121
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
122
|
+
run: scheduleRunSummarySchema.optional()
|
|
123
|
+
});
|
|
124
|
+
var listSchedulesQuerySchema = z.object({
|
|
125
|
+
agentId: z.string().optional(),
|
|
126
|
+
workflowId: z.string().optional(),
|
|
127
|
+
status: scheduleStatusSchema.optional(),
|
|
128
|
+
/** Agent-schedule only: match the target threadId. */
|
|
129
|
+
threadId: z.string().optional(),
|
|
130
|
+
/** Agent-schedule only: match the target resourceId. */
|
|
131
|
+
resourceId: z.string().optional(),
|
|
132
|
+
/** Agent-schedule only: match the free-form target name. */
|
|
133
|
+
name: z.string().optional()
|
|
134
|
+
});
|
|
135
|
+
var listSchedulesResponseSchema = z.object({
|
|
136
|
+
schedules: z.array(scheduleSchema)
|
|
137
|
+
});
|
|
138
|
+
var scheduleIdPathParams = z.object({
|
|
139
|
+
scheduleId: z.string()
|
|
140
|
+
});
|
|
141
|
+
var createAgentScheduleBodySchema = z.strictObject({
|
|
142
|
+
/** Optional stable id; normalized to `agent_<slug>`. A random id is generated when omitted. */
|
|
143
|
+
id: z.string().optional(),
|
|
144
|
+
agentId: z.string().min(1),
|
|
145
|
+
cron: z.string(),
|
|
146
|
+
timezone: z.string().optional(),
|
|
147
|
+
prompt: z.string(),
|
|
148
|
+
name: z.string().optional(),
|
|
149
|
+
threadId: z.string().optional(),
|
|
150
|
+
resourceId: z.string().optional(),
|
|
151
|
+
signalType: signalTypeSchema.optional(),
|
|
152
|
+
tagName: z.string().optional(),
|
|
153
|
+
attributes: signalAttributesSchema.optional(),
|
|
154
|
+
ifActive: ifActiveSchema.optional(),
|
|
155
|
+
ifIdle: ifIdleSchema.optional(),
|
|
156
|
+
providerOptions: z.record(z.string(), z.unknown()).optional(),
|
|
157
|
+
metadata: z.record(z.string(), z.unknown()).optional()
|
|
158
|
+
});
|
|
159
|
+
var createWorkflowScheduleBodySchema = z.strictObject({
|
|
160
|
+
/** Optional stable id; normalized to `schedule_<slug>`. A random id is generated when omitted. */
|
|
161
|
+
id: z.string().optional(),
|
|
162
|
+
workflowId: z.string().min(1),
|
|
163
|
+
cron: z.string(),
|
|
164
|
+
timezone: z.string().optional(),
|
|
165
|
+
inputData: z.unknown().optional(),
|
|
166
|
+
initialState: z.unknown().optional(),
|
|
167
|
+
requestContext: z.record(z.string(), z.unknown()).optional(),
|
|
168
|
+
metadata: z.record(z.string(), z.unknown()).optional()
|
|
169
|
+
});
|
|
170
|
+
var createScheduleBodySchema = z.union([createAgentScheduleBodySchema, createWorkflowScheduleBodySchema]);
|
|
171
|
+
var updateScheduleBodySchema = z.object({
|
|
172
|
+
cron: z.string().optional(),
|
|
173
|
+
timezone: z.string().optional(),
|
|
174
|
+
status: scheduleStatusSchema.optional(),
|
|
175
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
176
|
+
// Agent-schedule fields
|
|
177
|
+
prompt: z.string().optional(),
|
|
178
|
+
name: z.string().optional(),
|
|
179
|
+
signalType: signalTypeSchema.optional(),
|
|
180
|
+
tagName: z.string().optional(),
|
|
181
|
+
attributes: signalAttributesSchema.optional(),
|
|
182
|
+
ifActive: ifActiveSchema.optional(),
|
|
183
|
+
ifIdle: ifIdleSchema.optional(),
|
|
184
|
+
providerOptions: z.record(z.string(), z.unknown()).optional(),
|
|
185
|
+
// Workflow-schedule fields
|
|
186
|
+
inputData: z.unknown().optional(),
|
|
187
|
+
initialState: z.unknown().optional(),
|
|
188
|
+
requestContext: z.record(z.string(), z.unknown()).optional()
|
|
189
|
+
});
|
|
190
|
+
var deleteScheduleResponseSchema = z.object({
|
|
191
|
+
message: z.string()
|
|
192
|
+
});
|
|
193
|
+
var runScheduleResponseSchema = z.object({
|
|
194
|
+
scheduleId: z.string(),
|
|
195
|
+
claimId: z.string(),
|
|
196
|
+
scheduledFireAt: z.number()
|
|
197
|
+
});
|
|
198
|
+
var listScheduleTriggersQuerySchema = z.object({
|
|
199
|
+
limit: z.coerce.number().int().positive().optional(),
|
|
200
|
+
fromActualFireAt: z.coerce.number().int().nonnegative().optional(),
|
|
201
|
+
toActualFireAt: z.coerce.number().int().nonnegative().optional()
|
|
202
|
+
});
|
|
203
|
+
var listScheduleTriggersResponseSchema = z.object({
|
|
204
|
+
triggers: z.array(scheduleTriggerResponseSchema)
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// src/server/handlers/schedules.ts
|
|
208
|
+
function snapshotToRunSummary(run) {
|
|
209
|
+
const snapshot = typeof run.snapshot === "string" ? null : run.snapshot;
|
|
210
|
+
if (!snapshot) return void 0;
|
|
211
|
+
const startedAt = run.createdAt instanceof Date ? run.createdAt.getTime() : void 0;
|
|
212
|
+
const isTerminal = snapshot.status === "success" || snapshot.status === "failed" || snapshot.status === "canceled" || snapshot.status === "bailed" || snapshot.status === "tripwire";
|
|
213
|
+
const completedAt = isTerminal ? run.updatedAt instanceof Date ? run.updatedAt.getTime() : void 0 : void 0;
|
|
214
|
+
const durationMs = startedAt !== void 0 && completedAt !== void 0 ? completedAt - startedAt : void 0;
|
|
215
|
+
return {
|
|
216
|
+
status: snapshot.status,
|
|
217
|
+
startedAt,
|
|
218
|
+
completedAt,
|
|
219
|
+
durationMs,
|
|
220
|
+
error: snapshot.error?.message
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
async function fetchRunSummary(mastra, workflowName, runId) {
|
|
224
|
+
try {
|
|
225
|
+
const workflowsStore = await mastra.getStorage()?.getStore("workflows");
|
|
226
|
+
const run = await workflowsStore?.getWorkflowRunById({ runId, workflowName });
|
|
227
|
+
if (!run) return void 0;
|
|
228
|
+
return snapshotToRunSummary(run);
|
|
229
|
+
} catch {
|
|
230
|
+
return void 0;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async function hydrateScheduleResponse(mastra, schedule) {
|
|
234
|
+
if (!schedule.workflowId || !schedule.lastRunId) {
|
|
235
|
+
return schedule;
|
|
236
|
+
}
|
|
237
|
+
const lastRun = await fetchRunSummary(mastra, schedule.workflowId, schedule.lastRunId);
|
|
238
|
+
return lastRun ? { ...schedule, lastRun } : schedule;
|
|
239
|
+
}
|
|
240
|
+
async function loadSchedule(mastra, scheduleId) {
|
|
241
|
+
const schedule = await mastra.schedules.get(scheduleId);
|
|
242
|
+
if (!schedule) {
|
|
243
|
+
throw new HTTPException(404, { message: "Schedule not found" });
|
|
244
|
+
}
|
|
245
|
+
return schedule;
|
|
246
|
+
}
|
|
247
|
+
var LIST_SCHEDULES_ROUTE = createRoute({
|
|
248
|
+
method: "GET",
|
|
249
|
+
path: "/schedules",
|
|
250
|
+
responseType: "json",
|
|
251
|
+
queryParamSchema: listSchedulesQuerySchema,
|
|
252
|
+
responseSchema: listSchedulesResponseSchema,
|
|
253
|
+
summary: "List schedules",
|
|
254
|
+
description: "Returns all schedules \u2014 agent schedules and workflow schedules \u2014 optionally filtered by agentId, workflowId, or status. Agent schedules can additionally be filtered by threadId, resourceId, or name.",
|
|
255
|
+
tags: ["Schedules"],
|
|
256
|
+
requiresAuth: true,
|
|
257
|
+
handler: async ({ mastra, agentId, workflowId, status, threadId, resourceId, name }) => {
|
|
258
|
+
const schedulesStore = await mastra.getStorage()?.getStore("schedules");
|
|
259
|
+
if (!schedulesStore) {
|
|
260
|
+
return { schedules: [] };
|
|
261
|
+
}
|
|
262
|
+
const schedules = await mastra.schedules.list({ agentId, workflowId, status, threadId, resourceId, name });
|
|
263
|
+
const hydrated = await Promise.all(schedules.map((schedule) => hydrateScheduleResponse(mastra, schedule)));
|
|
264
|
+
return { schedules: hydrated };
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
var GET_SCHEDULE_ROUTE = createRoute({
|
|
268
|
+
method: "GET",
|
|
269
|
+
path: "/schedules/:scheduleId",
|
|
270
|
+
responseType: "json",
|
|
271
|
+
pathParamSchema: scheduleIdPathParams,
|
|
272
|
+
responseSchema: scheduleSchema,
|
|
273
|
+
summary: "Get a schedule by ID",
|
|
274
|
+
description: "Returns a single schedule by its id.",
|
|
275
|
+
tags: ["Schedules"],
|
|
276
|
+
requiresAuth: true,
|
|
277
|
+
handler: async ({ mastra, scheduleId }) => {
|
|
278
|
+
const schedule = await loadSchedule(mastra, scheduleId);
|
|
279
|
+
return hydrateScheduleResponse(mastra, schedule);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
var CREATE_SCHEDULE_ROUTE = createRoute({
|
|
283
|
+
method: "POST",
|
|
284
|
+
path: "/schedules",
|
|
285
|
+
responseType: "json",
|
|
286
|
+
bodySchema: createScheduleBodySchema,
|
|
287
|
+
responseSchema: scheduleSchema,
|
|
288
|
+
summary: "Create a schedule",
|
|
289
|
+
description: "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.",
|
|
290
|
+
tags: ["Schedules"],
|
|
291
|
+
requiresAuth: true,
|
|
292
|
+
handler: async ({ mastra, ...body }) => {
|
|
293
|
+
if ("workflowId" in body && body.workflowId) {
|
|
294
|
+
try {
|
|
295
|
+
mastra.getWorkflowById(body.workflowId);
|
|
296
|
+
} catch {
|
|
297
|
+
throw new HTTPException(404, { message: `Workflow "${body.workflowId}" not found` });
|
|
298
|
+
}
|
|
299
|
+
return await mastra.schedules.create({
|
|
300
|
+
workflowId: body.workflowId,
|
|
301
|
+
cron: body.cron,
|
|
302
|
+
...body.id ? { id: body.id } : {},
|
|
303
|
+
...body.timezone ? { timezone: body.timezone } : {},
|
|
304
|
+
...body.inputData !== void 0 ? { inputData: body.inputData } : {},
|
|
305
|
+
...body.initialState !== void 0 ? { initialState: body.initialState } : {},
|
|
306
|
+
...body.requestContext ? { requestContext: body.requestContext } : {},
|
|
307
|
+
...body.metadata ? { metadata: body.metadata } : {}
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
const agentBody = body;
|
|
311
|
+
try {
|
|
312
|
+
mastra.getAgentById(agentBody.agentId);
|
|
313
|
+
} catch {
|
|
314
|
+
throw new HTTPException(404, { message: `Agent "${agentBody.agentId}" not found` });
|
|
315
|
+
}
|
|
316
|
+
return await mastra.schedules.create({
|
|
317
|
+
agentId: agentBody.agentId,
|
|
318
|
+
cron: agentBody.cron,
|
|
319
|
+
prompt: agentBody.prompt,
|
|
320
|
+
...agentBody.id ? { id: agentBody.id } : {},
|
|
321
|
+
...agentBody.name ? { name: agentBody.name } : {},
|
|
322
|
+
...agentBody.timezone ? { timezone: agentBody.timezone } : {},
|
|
323
|
+
...agentBody.threadId ? { threadId: agentBody.threadId } : {},
|
|
324
|
+
...agentBody.resourceId ? { resourceId: agentBody.resourceId } : {},
|
|
325
|
+
...agentBody.signalType ? { signalType: agentBody.signalType } : {},
|
|
326
|
+
...agentBody.tagName ? { tagName: agentBody.tagName } : {},
|
|
327
|
+
...agentBody.attributes ? { attributes: agentBody.attributes } : {},
|
|
328
|
+
...agentBody.ifActive ? { ifActive: agentBody.ifActive } : {},
|
|
329
|
+
...agentBody.ifIdle ? { ifIdle: agentBody.ifIdle } : {},
|
|
330
|
+
...agentBody.providerOptions ? { providerOptions: agentBody.providerOptions } : {},
|
|
331
|
+
...agentBody.metadata ? { metadata: agentBody.metadata } : {}
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
var UPDATE_SCHEDULE_ROUTE = createRoute({
|
|
336
|
+
method: "PATCH",
|
|
337
|
+
path: "/schedules/:scheduleId",
|
|
338
|
+
responseType: "json",
|
|
339
|
+
pathParamSchema: scheduleIdPathParams,
|
|
340
|
+
bodySchema: updateScheduleBodySchema,
|
|
341
|
+
responseSchema: scheduleSchema,
|
|
342
|
+
summary: "Update a schedule",
|
|
343
|
+
description: "Partial update of a schedule. Fields apply to the matching target type; agent-only fields on a workflow schedule are rejected. `threadId` and `resourceId` are part of an agent schedule identity and cannot be changed \u2014 to re-target, delete and recreate. Editing `cron` (or `timezone`) recomputes `nextFireAt`.",
|
|
344
|
+
tags: ["Schedules"],
|
|
345
|
+
requiresAuth: true,
|
|
346
|
+
handler: async ({ mastra, scheduleId, ...body }) => {
|
|
347
|
+
await loadSchedule(mastra, scheduleId);
|
|
348
|
+
return await mastra.schedules.update(scheduleId, {
|
|
349
|
+
...body.cron !== void 0 ? { cron: body.cron } : {},
|
|
350
|
+
...body.timezone !== void 0 ? { timezone: body.timezone } : {},
|
|
351
|
+
...body.status !== void 0 ? { status: body.status } : {},
|
|
352
|
+
...body.metadata !== void 0 ? { metadata: body.metadata } : {},
|
|
353
|
+
...body.prompt !== void 0 ? { prompt: body.prompt } : {},
|
|
354
|
+
...body.name !== void 0 ? { name: body.name } : {},
|
|
355
|
+
...body.signalType !== void 0 ? { signalType: body.signalType } : {},
|
|
356
|
+
...body.tagName !== void 0 ? { tagName: body.tagName } : {},
|
|
357
|
+
...body.attributes !== void 0 ? { attributes: body.attributes } : {},
|
|
358
|
+
...body.ifActive !== void 0 ? { ifActive: body.ifActive } : {},
|
|
359
|
+
...body.ifIdle !== void 0 ? { ifIdle: body.ifIdle } : {},
|
|
360
|
+
...body.providerOptions !== void 0 ? { providerOptions: body.providerOptions } : {},
|
|
361
|
+
...body.inputData !== void 0 ? { inputData: body.inputData } : {},
|
|
362
|
+
...body.initialState !== void 0 ? { initialState: body.initialState } : {},
|
|
363
|
+
...body.requestContext !== void 0 ? { requestContext: body.requestContext } : {}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
var DELETE_SCHEDULE_ROUTE = createRoute({
|
|
368
|
+
method: "DELETE",
|
|
369
|
+
path: "/schedules/:scheduleId",
|
|
370
|
+
responseType: "json",
|
|
371
|
+
pathParamSchema: scheduleIdPathParams,
|
|
372
|
+
responseSchema: deleteScheduleResponseSchema,
|
|
373
|
+
summary: "Delete a schedule",
|
|
374
|
+
description: "Permanently deletes the schedule. 404 when the schedule does not exist.",
|
|
375
|
+
tags: ["Schedules"],
|
|
376
|
+
requiresAuth: true,
|
|
377
|
+
handler: async ({ mastra, scheduleId }) => {
|
|
378
|
+
await loadSchedule(mastra, scheduleId);
|
|
379
|
+
await mastra.schedules.delete(scheduleId);
|
|
380
|
+
return { message: "Schedule deleted" };
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
var PAUSE_SCHEDULE_ROUTE = createRoute({
|
|
384
|
+
method: "POST",
|
|
385
|
+
path: "/schedules/:scheduleId/pause",
|
|
386
|
+
responseType: "json",
|
|
387
|
+
pathParamSchema: scheduleIdPathParams,
|
|
388
|
+
responseSchema: scheduleSchema,
|
|
389
|
+
summary: "Pause a schedule",
|
|
390
|
+
description: "Marks the schedule as paused. The scheduler tick loop will skip paused schedules. Idempotent \u2014 pausing an already-paused schedule returns the current state unchanged. Pause status survives redeploys.",
|
|
391
|
+
tags: ["Schedules"],
|
|
392
|
+
requiresAuth: true,
|
|
393
|
+
handler: async ({ mastra, scheduleId }) => {
|
|
394
|
+
await loadSchedule(mastra, scheduleId);
|
|
395
|
+
const updated = await mastra.schedules.pause(scheduleId);
|
|
396
|
+
return hydrateScheduleResponse(mastra, updated);
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
var RESUME_SCHEDULE_ROUTE = createRoute({
|
|
400
|
+
method: "POST",
|
|
401
|
+
path: "/schedules/:scheduleId/resume",
|
|
402
|
+
responseType: "json",
|
|
403
|
+
pathParamSchema: scheduleIdPathParams,
|
|
404
|
+
responseSchema: scheduleSchema,
|
|
405
|
+
summary: "Resume a paused schedule",
|
|
406
|
+
description: 'Marks the schedule as active and recomputes nextFireAt from "now" so a long-paused schedule does not fire a backlog. Idempotent \u2014 resuming an already-active schedule returns the current state unchanged.',
|
|
407
|
+
tags: ["Schedules"],
|
|
408
|
+
requiresAuth: true,
|
|
409
|
+
handler: async ({ mastra, scheduleId }) => {
|
|
410
|
+
await loadSchedule(mastra, scheduleId);
|
|
411
|
+
const updated = await mastra.schedules.resume(scheduleId);
|
|
412
|
+
return hydrateScheduleResponse(mastra, updated);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
var RUN_SCHEDULE_ROUTE = createRoute({
|
|
416
|
+
method: "POST",
|
|
417
|
+
path: "/schedules/:scheduleId/run",
|
|
418
|
+
responseType: "json",
|
|
419
|
+
pathParamSchema: scheduleIdPathParams,
|
|
420
|
+
responseSchema: runScheduleResponseSchema,
|
|
421
|
+
summary: "Fire a schedule now",
|
|
422
|
+
description: 'Manually triggers a single schedule fire out-of-band from the cron schedule. Records a trigger row with `triggerKind: "manual"`. Does not advance `nextFireAt`.',
|
|
423
|
+
tags: ["Schedules"],
|
|
424
|
+
requiresAuth: true,
|
|
425
|
+
handler: async ({ mastra, scheduleId }) => {
|
|
426
|
+
await loadSchedule(mastra, scheduleId);
|
|
427
|
+
return await mastra.schedules.run(scheduleId);
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
var LIST_SCHEDULE_TRIGGERS_ROUTE = createRoute({
|
|
431
|
+
method: "GET",
|
|
432
|
+
path: "/schedules/:scheduleId/triggers",
|
|
433
|
+
responseType: "json",
|
|
434
|
+
pathParamSchema: scheduleIdPathParams,
|
|
435
|
+
queryParamSchema: listScheduleTriggersQuerySchema,
|
|
436
|
+
responseSchema: listScheduleTriggersResponseSchema,
|
|
437
|
+
summary: "List trigger history for a schedule",
|
|
438
|
+
description: "Returns the audit trail of trigger attempts for a schedule, ordered by actualFireAt descending.",
|
|
439
|
+
tags: ["Schedules"],
|
|
440
|
+
requiresAuth: true,
|
|
441
|
+
handler: async ({ mastra, scheduleId, limit, fromActualFireAt, toActualFireAt }) => {
|
|
442
|
+
const schedulesStore = await mastra.getStorage()?.getStore("schedules");
|
|
443
|
+
if (!schedulesStore) {
|
|
444
|
+
return { triggers: [] };
|
|
445
|
+
}
|
|
446
|
+
const schedule = await mastra.schedules.get(scheduleId);
|
|
447
|
+
const triggers = await schedulesStore.listTriggers(schedule?.id ?? scheduleId, {
|
|
448
|
+
limit,
|
|
449
|
+
fromActualFireAt,
|
|
450
|
+
toActualFireAt
|
|
451
|
+
});
|
|
452
|
+
if (!schedule?.workflowId) {
|
|
453
|
+
return { triggers };
|
|
454
|
+
}
|
|
455
|
+
const workflowName = schedule.workflowId;
|
|
456
|
+
const hydrated = await Promise.all(
|
|
457
|
+
triggers.map(async (trigger) => {
|
|
458
|
+
if (trigger.outcome !== "published" || !trigger.runId) return trigger;
|
|
459
|
+
const run = await fetchRunSummary(mastra, workflowName, trigger.runId);
|
|
460
|
+
return run ? { ...trigger, run } : trigger;
|
|
461
|
+
})
|
|
462
|
+
);
|
|
463
|
+
return { triggers: hydrated };
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
|
|
467
|
+
export { CREATE_SCHEDULE_ROUTE, DELETE_SCHEDULE_ROUTE, GET_SCHEDULE_ROUTE, LIST_SCHEDULES_ROUTE, LIST_SCHEDULE_TRIGGERS_ROUTE, PAUSE_SCHEDULE_ROUTE, RESUME_SCHEDULE_ROUTE, RUN_SCHEDULE_ROUTE, UPDATE_SCHEDULE_ROUTE };
|
|
468
|
+
//# sourceMappingURL=chunk-TMK7RPZE.js.map
|
|
469
|
+
//# sourceMappingURL=chunk-TMK7RPZE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/schemas/schedules.ts","../src/server/handlers/schedules.ts"],"names":[],"mappings":"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","file":"chunk-TMK7RPZE.js","sourcesContent":["import { z } from 'zod';\n\nexport const scheduleStatusSchema = 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 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 /** Agent-schedule only: match the target resourceId. */\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 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. `threadId` / `resourceId` are intentionally not\n * editable; they are part of an agent schedule's identity. To re-target,\n * delete and recreate.\n */\nexport const updateScheduleBodySchema = z.object({\n cron: z.string().optional(),\n timezone: z.string().optional(),\n status: scheduleStatusSchema.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});\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';\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. 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 / getWorkflowById throw a MastraError (status 404) when the\n // target is unknown; translate that into a clean HTTP 404 instead of\n // letting it surface as 500.\n if ('workflowId' in body && body.workflowId) {\n try {\n mastra.getWorkflowById(body.workflowId);\n } catch {\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.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. `threadId` and `resourceId` are part of an agent schedule identity and cannot be changed — to re-target, delete and recreate. Editing `cron` (or `timezone`) recomputes `nextFireAt`.',\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 });\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 as WorkflowSchedule).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"]}
|
|
@@ -2341,7 +2341,7 @@ var M = class u2 {
|
|
|
2341
2341
|
}
|
|
2342
2342
|
};
|
|
2343
2343
|
|
|
2344
|
-
// ../memory/dist/chunk-
|
|
2344
|
+
// ../memory/dist/chunk-2NSPHF6Q.js
|
|
2345
2345
|
var import_image_size = chunkO7I5CWRX_cjs.__toESM(require_dist(), 1);
|
|
2346
2346
|
var MINUTE = 6e4;
|
|
2347
2347
|
var HOUR = 60 * MINUTE;
|
|
@@ -25374,7 +25374,7 @@ ${workingMemory}`;
|
|
|
25374
25374
|
"Observational memory requires @mastra/core support for request-response-id-rotation. Please bump @mastra/core to a newer version."
|
|
25375
25375
|
);
|
|
25376
25376
|
}
|
|
25377
|
-
const { ObservationalMemory: OMClass } = await import('./observational-memory-
|
|
25377
|
+
const { ObservationalMemory: OMClass } = await import('./observational-memory-QL6BKIQX-KHRHK3MH.cjs');
|
|
25378
25378
|
const onIndexObservations = this.hasRetrievalSearch(omConfig.retrieval) ? async (observation) => {
|
|
25379
25379
|
await this.indexObservation(observation);
|
|
25380
25380
|
} : void 0;
|
|
@@ -26330,7 +26330,7 @@ Notes:
|
|
|
26330
26330
|
if (!effectiveConfig) return null;
|
|
26331
26331
|
const engine = await this.omEngine;
|
|
26332
26332
|
if (!engine) return null;
|
|
26333
|
-
const { ObservationalMemoryProcessor: ObservationalMemoryProcessor2 } = await import('./observational-memory-
|
|
26333
|
+
const { ObservationalMemoryProcessor: ObservationalMemoryProcessor2 } = await import('./observational-memory-QL6BKIQX-KHRHK3MH.cjs');
|
|
26334
26334
|
return new ObservationalMemoryProcessor2(engine, this, {
|
|
26335
26335
|
temporalMarkers: effectiveConfig.temporalMarkers
|
|
26336
26336
|
});
|
|
@@ -32679,5 +32679,5 @@ exports.renderObservationGroupsForReflection = renderObservationGroupsForReflect
|
|
|
32679
32679
|
exports.stripEphemeralAnchorIds = stripEphemeralAnchorIds;
|
|
32680
32680
|
exports.stripObservationGroups = stripObservationGroups;
|
|
32681
32681
|
exports.wrapInObservationGroup = wrapInObservationGroup;
|
|
32682
|
-
//# sourceMappingURL=chunk-
|
|
32683
|
-
//# sourceMappingURL=chunk-
|
|
32682
|
+
//# sourceMappingURL=chunk-TWAGLLIX.cjs.map
|
|
32683
|
+
//# sourceMappingURL=chunk-TWAGLLIX.cjs.map
|