@dexto/server 1.6.20 → 1.6.22

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 (133) hide show
  1. package/dist/a2a/jsonrpc/methods.cjs +1 -1
  2. package/dist/a2a/jsonrpc/methods.d.ts +14 -4
  3. package/dist/a2a/jsonrpc/methods.d.ts.map +1 -1
  4. package/dist/a2a/jsonrpc/methods.js +1 -1
  5. package/dist/approval/wire-approval-events.cjs +44 -0
  6. package/dist/approval/wire-approval-events.d.ts +4 -0
  7. package/dist/approval/wire-approval-events.d.ts.map +1 -0
  8. package/dist/approval/wire-approval-events.js +20 -0
  9. package/dist/events/session-sse-subscriber.cjs +167 -0
  10. package/dist/events/session-sse-subscriber.d.ts +13 -0
  11. package/dist/events/session-sse-subscriber.d.ts.map +1 -0
  12. package/dist/events/session-sse-subscriber.js +143 -0
  13. package/dist/hono/__tests__/test-fixtures.cjs +8 -0
  14. package/dist/hono/__tests__/test-fixtures.d.ts +1 -0
  15. package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
  16. package/dist/hono/__tests__/test-fixtures.js +8 -0
  17. package/dist/hono/index.cjs +40 -8
  18. package/dist/hono/index.d.ts +45 -4531
  19. package/dist/hono/index.d.ts.map +1 -1
  20. package/dist/hono/index.js +43 -9
  21. package/dist/hono/node/index.cjs +51 -6
  22. package/dist/hono/node/index.d.ts.map +1 -1
  23. package/dist/hono/node/index.js +51 -6
  24. package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
  25. package/dist/hono/routes/a2a-tasks.cjs +158 -32
  26. package/dist/hono/routes/a2a-tasks.d.ts +1 -502
  27. package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
  28. package/dist/hono/routes/a2a-tasks.js +162 -32
  29. package/dist/hono/routes/a2a.d.ts.map +1 -1
  30. package/dist/hono/routes/agents.cjs +410 -329
  31. package/dist/hono/routes/agents.d.ts +16043 -68
  32. package/dist/hono/routes/agents.d.ts.map +1 -1
  33. package/dist/hono/routes/agents.js +418 -330
  34. package/dist/hono/routes/approvals.cjs +102 -88
  35. package/dist/hono/routes/approvals.d.ts +2089 -142
  36. package/dist/hono/routes/approvals.d.ts.map +1 -1
  37. package/dist/hono/routes/approvals.js +108 -89
  38. package/dist/hono/routes/dexto-auth.cjs +40 -33
  39. package/dist/hono/routes/dexto-auth.d.ts +401 -2
  40. package/dist/hono/routes/dexto-auth.d.ts.map +1 -1
  41. package/dist/hono/routes/dexto-auth.js +40 -33
  42. package/dist/hono/routes/discovery.cjs +16 -14
  43. package/dist/hono/routes/discovery.d.ts +586 -1
  44. package/dist/hono/routes/discovery.d.ts.map +1 -1
  45. package/dist/hono/routes/discovery.js +16 -14
  46. package/dist/hono/routes/greeting.cjs +26 -22
  47. package/dist/hono/routes/greeting.d.ts +787 -3
  48. package/dist/hono/routes/greeting.d.ts.map +1 -1
  49. package/dist/hono/routes/greeting.js +26 -22
  50. package/dist/hono/routes/health.d.ts +1 -1
  51. package/dist/hono/routes/key.cjs +60 -52
  52. package/dist/hono/routes/key.d.ts +1597 -1
  53. package/dist/hono/routes/key.d.ts.map +1 -1
  54. package/dist/hono/routes/key.js +60 -52
  55. package/dist/hono/routes/llm.cjs +382 -349
  56. package/dist/hono/routes/llm.d.ts +12148 -98
  57. package/dist/hono/routes/llm.d.ts.map +1 -1
  58. package/dist/hono/routes/llm.js +386 -349
  59. package/dist/hono/routes/mcp.cjs +257 -226
  60. package/dist/hono/routes/mcp.d.ts +6605 -309
  61. package/dist/hono/routes/mcp.d.ts.map +1 -1
  62. package/dist/hono/routes/mcp.js +263 -225
  63. package/dist/hono/routes/memory.cjs +102 -89
  64. package/dist/hono/routes/memory.d.ts +5368 -4
  65. package/dist/hono/routes/memory.d.ts.map +1 -1
  66. package/dist/hono/routes/memory.js +108 -90
  67. package/dist/hono/routes/messages.cjs +189 -191
  68. package/dist/hono/routes/messages.d.ts +3900 -12
  69. package/dist/hono/routes/messages.d.ts.map +1 -1
  70. package/dist/hono/routes/messages.js +192 -191
  71. package/dist/hono/routes/models.cjs +106 -64
  72. package/dist/hono/routes/models.d.ts +2875 -2
  73. package/dist/hono/routes/models.d.ts.map +1 -1
  74. package/dist/hono/routes/models.js +108 -64
  75. package/dist/hono/routes/openrouter.cjs +79 -65
  76. package/dist/hono/routes/openrouter.d.ts +854 -1
  77. package/dist/hono/routes/openrouter.d.ts.map +1 -1
  78. package/dist/hono/routes/openrouter.js +79 -65
  79. package/dist/hono/routes/prompts.cjs +136 -109
  80. package/dist/hono/routes/prompts.d.ts +2818 -10
  81. package/dist/hono/routes/prompts.d.ts.map +1 -1
  82. package/dist/hono/routes/prompts.js +138 -109
  83. package/dist/hono/routes/queue.cjs +133 -120
  84. package/dist/hono/routes/queue.d.ts +5240 -11
  85. package/dist/hono/routes/queue.d.ts.map +1 -1
  86. package/dist/hono/routes/queue.js +136 -120
  87. package/dist/hono/routes/resources.cjs +65 -46
  88. package/dist/hono/routes/resources.d.ts +1983 -5
  89. package/dist/hono/routes/resources.d.ts.map +1 -1
  90. package/dist/hono/routes/resources.js +72 -47
  91. package/dist/hono/routes/schedules.cjs +233 -226
  92. package/dist/hono/routes/schedules.d.ts +4198 -22
  93. package/dist/hono/routes/schedules.d.ts.map +1 -1
  94. package/dist/hono/routes/schedules.js +233 -226
  95. package/dist/hono/routes/search.cjs +34 -30
  96. package/dist/hono/routes/search.d.ts +3094 -17
  97. package/dist/hono/routes/search.d.ts.map +1 -1
  98. package/dist/hono/routes/search.js +40 -31
  99. package/dist/hono/routes/sessions.cjs +491 -393
  100. package/dist/hono/routes/sessions.d.ts +18263 -65
  101. package/dist/hono/routes/sessions.d.ts.map +1 -1
  102. package/dist/hono/routes/sessions.js +497 -395
  103. package/dist/hono/routes/static.d.ts.map +1 -1
  104. package/dist/hono/routes/system-prompt.cjs +57 -61
  105. package/dist/hono/routes/system-prompt.d.ts +1228 -2
  106. package/dist/hono/routes/system-prompt.d.ts.map +1 -1
  107. package/dist/hono/routes/system-prompt.js +58 -62
  108. package/dist/hono/routes/tools.cjs +29 -34
  109. package/dist/hono/routes/tools.d.ts +1755 -6
  110. package/dist/hono/routes/tools.d.ts.map +1 -1
  111. package/dist/hono/routes/tools.js +33 -33
  112. package/dist/hono/routes/webhooks.cjs +115 -123
  113. package/dist/hono/routes/webhooks.d.ts +2501 -11
  114. package/dist/hono/routes/webhooks.d.ts.map +1 -1
  115. package/dist/hono/routes/webhooks.js +120 -124
  116. package/dist/hono/routes/workspaces.cjs +84 -79
  117. package/dist/hono/routes/workspaces.d.ts +2093 -2
  118. package/dist/hono/routes/workspaces.d.ts.map +1 -1
  119. package/dist/hono/routes/workspaces.js +89 -80
  120. package/dist/hono/schemas/responses.cjs +463 -260
  121. package/dist/hono/schemas/responses.d.ts +1893 -209
  122. package/dist/hono/schemas/responses.d.ts.map +1 -1
  123. package/dist/hono/schemas/responses.js +203 -14
  124. package/dist/hono/start-server.cjs +9 -0
  125. package/dist/hono/start-server.d.ts.map +1 -1
  126. package/dist/hono/start-server.js +9 -0
  127. package/dist/hono/types.d.ts +11 -0
  128. package/dist/hono/types.d.ts.map +1 -1
  129. package/dist/index.cjs +5 -1
  130. package/dist/index.d.ts +2 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +2 -0
  133. package/package.json +7 -7
@@ -35,6 +35,27 @@ const CreateScheduleSchema = import_zod_openapi.z.object({
35
35
  workspacePath: import_zod_openapi.z.string().optional().nullable().describe("Optional workspace path for scheduled runs")
36
36
  }).strict().describe("Request body for creating a schedule");
37
37
  const UpdateScheduleSchema = CreateScheduleSchema.partial().strict().describe("Request body for updating a schedule");
38
+ const ListSchedulesResponseSchema = import_zod_openapi.z.object({
39
+ schedules: import_zod_openapi.z.array(import_responses.ScheduleSchema).describe("Schedule list")
40
+ }).strict().describe("List schedules response");
41
+ const CreateScheduleResponseSchema = import_zod_openapi.z.object({
42
+ schedule: import_responses.ScheduleSchema
43
+ }).strict().describe("Create schedule response");
44
+ const UpdateScheduleResponseSchema = import_zod_openapi.z.object({
45
+ schedule: import_responses.ScheduleSchema
46
+ }).strict().describe("Update schedule response");
47
+ const DeleteScheduleResponseSchema = import_zod_openapi.z.object({
48
+ deleted: import_zod_openapi.z.boolean().describe("Whether the schedule was deleted")
49
+ }).strict().describe("Delete schedule response");
50
+ const TriggerScheduleResponseSchema = import_zod_openapi.z.object({
51
+ scheduled: import_zod_openapi.z.boolean().describe("Whether the schedule was queued. Execution is omitted when false."),
52
+ execution: import_responses.ExecutionLogSchema.optional().describe(
53
+ "Execution log (present when scheduled is true)"
54
+ )
55
+ }).strict().describe("Trigger schedule response");
56
+ const ScheduleIdParamSchema = import_zod_openapi.z.object({
57
+ scheduleId: import_zod_openapi.z.string().min(1).describe("Schedule ID")
58
+ }).strict().describe("Schedule identifier params");
38
59
  const isScheduleNotFoundError = (error) => error instanceof import_core.DextoRuntimeError && error.type === import_core.ErrorType.NOT_FOUND && error.code === import_tools_scheduler.SchedulerErrorCode.SCHEDULE_NOT_FOUND;
39
60
  const logSchedulerError = (agent, message, error) => {
40
61
  if (!agent?.logger) {
@@ -53,258 +74,241 @@ const toErrorResponse = (message, code) => ({
53
74
  ...code ? { code } : {}
54
75
  }
55
76
  });
56
- function createSchedulesRouter(getAgent) {
57
- const app = new import_zod_openapi.OpenAPIHono();
58
- const resolveScheduler = async (ctx) => {
59
- const agent = await getAgent(ctx);
60
- const agentId = agent.config?.agentId ?? "default";
61
- let scheduler = (0, import_service.getSchedulerManager)(agentId) ?? null;
62
- if (!scheduler) {
63
- scheduler = await (0, import_service.ensureSchedulerManagerForAgent)(agent);
64
- }
65
- return { scheduler, agent };
66
- };
67
- const listRoute = (0, import_zod_openapi.createRoute)({
68
- method: "get",
69
- path: "/schedules",
70
- summary: "List Schedules",
71
- description: "Retrieves all automation schedules",
72
- tags: ["schedules"],
73
- responses: {
74
- 200: {
75
- description: "List of schedules",
76
- content: {
77
- "application/json": {
78
- schema: import_zod_openapi.z.object({
79
- schedules: import_zod_openapi.z.array(import_responses.ScheduleSchema).describe("Schedule list")
80
- }).strict()
81
- }
77
+ const listRoute = (0, import_zod_openapi.createRoute)({
78
+ method: "get",
79
+ path: "/schedules",
80
+ summary: "List Schedules",
81
+ description: "Retrieves all automation schedules",
82
+ tags: ["schedules"],
83
+ responses: {
84
+ 200: {
85
+ description: "List of schedules",
86
+ content: {
87
+ "application/json": {
88
+ schema: ListSchedulesResponseSchema
82
89
  }
83
- },
84
- 500: {
85
- description: "Failed to list schedules",
86
- content: {
87
- "application/json": {
88
- schema: import_responses.ErrorResponseSchema
89
- }
90
+ }
91
+ },
92
+ 500: {
93
+ description: "Failed to list schedules",
94
+ content: {
95
+ "application/json": {
96
+ schema: import_responses.ErrorResponseSchema
90
97
  }
91
- },
92
- 503: {
93
- description: "Scheduler tools are not enabled",
94
- content: {
95
- "application/json": {
96
- schema: import_responses.ErrorResponseSchema
97
- }
98
+ }
99
+ },
100
+ 503: {
101
+ description: "Scheduler tools are not enabled",
102
+ content: {
103
+ "application/json": {
104
+ schema: import_responses.ErrorResponseSchema
98
105
  }
99
106
  }
100
107
  }
101
- });
102
- const createRouteDef = (0, import_zod_openapi.createRoute)({
103
- method: "post",
104
- path: "/schedules",
105
- summary: "Create Schedule",
106
- description: "Creates a new automation schedule",
107
- tags: ["schedules"],
108
- request: { body: { content: { "application/json": { schema: CreateScheduleSchema } } } },
109
- responses: {
110
- 201: {
111
- description: "Created schedule",
112
- content: {
113
- "application/json": {
114
- schema: import_zod_openapi.z.object({ schedule: import_responses.ScheduleSchema }).strict()
115
- }
108
+ }
109
+ });
110
+ const createRouteDef = (0, import_zod_openapi.createRoute)({
111
+ method: "post",
112
+ path: "/schedules",
113
+ summary: "Create Schedule",
114
+ description: "Creates a new automation schedule",
115
+ tags: ["schedules"],
116
+ request: { body: { content: { "application/json": { schema: CreateScheduleSchema } } } },
117
+ responses: {
118
+ 201: {
119
+ description: "Created schedule",
120
+ content: {
121
+ "application/json": {
122
+ schema: CreateScheduleResponseSchema
116
123
  }
117
- },
118
- 400: {
119
- description: "Validation error",
120
- content: {
121
- "application/json": {
122
- schema: import_responses.ErrorResponseSchema
123
- }
124
+ }
125
+ },
126
+ 400: {
127
+ description: "Validation error",
128
+ content: {
129
+ "application/json": {
130
+ schema: import_responses.ErrorResponseSchema
124
131
  }
125
- },
126
- 429: {
127
- description: "Schedule limit reached",
128
- content: {
129
- "application/json": {
130
- schema: import_responses.ErrorResponseSchema
131
- }
132
+ }
133
+ },
134
+ 429: {
135
+ description: "Schedule limit reached",
136
+ content: {
137
+ "application/json": {
138
+ schema: import_responses.ErrorResponseSchema
132
139
  }
133
- },
134
- 500: {
135
- description: "Failed to create schedule",
136
- content: {
137
- "application/json": {
138
- schema: import_responses.ErrorResponseSchema
139
- }
140
+ }
141
+ },
142
+ 500: {
143
+ description: "Failed to create schedule",
144
+ content: {
145
+ "application/json": {
146
+ schema: import_responses.ErrorResponseSchema
140
147
  }
141
- },
142
- 503: {
143
- description: "Scheduler tools are not enabled",
144
- content: {
145
- "application/json": {
146
- schema: import_responses.ErrorResponseSchema
147
- }
148
+ }
149
+ },
150
+ 503: {
151
+ description: "Scheduler tools are not enabled",
152
+ content: {
153
+ "application/json": {
154
+ schema: import_responses.ErrorResponseSchema
148
155
  }
149
156
  }
150
157
  }
151
- });
152
- const updateRoute = (0, import_zod_openapi.createRoute)({
153
- method: "patch",
154
- path: "/schedules/{scheduleId}",
155
- summary: "Update Schedule",
156
- description: "Updates an existing schedule",
157
- tags: ["schedules"],
158
- request: {
159
- params: import_zod_openapi.z.object({
160
- scheduleId: import_zod_openapi.z.string().min(1).describe("Schedule ID")
161
- }).strict().describe("Schedule identifier params"),
162
- body: { content: { "application/json": { schema: UpdateScheduleSchema } } }
163
- },
164
- responses: {
165
- 200: {
166
- description: "Updated schedule",
167
- content: {
168
- "application/json": {
169
- schema: import_zod_openapi.z.object({ schedule: import_responses.ScheduleSchema }).strict()
170
- }
158
+ }
159
+ });
160
+ const updateRoute = (0, import_zod_openapi.createRoute)({
161
+ method: "patch",
162
+ path: "/schedules/{scheduleId}",
163
+ summary: "Update Schedule",
164
+ description: "Updates an existing schedule",
165
+ tags: ["schedules"],
166
+ request: {
167
+ params: ScheduleIdParamSchema,
168
+ body: { content: { "application/json": { schema: UpdateScheduleSchema } } }
169
+ },
170
+ responses: {
171
+ 200: {
172
+ description: "Updated schedule",
173
+ content: {
174
+ "application/json": {
175
+ schema: UpdateScheduleResponseSchema
171
176
  }
172
- },
173
- 400: {
174
- description: "Validation error",
175
- content: {
176
- "application/json": {
177
- schema: import_responses.ErrorResponseSchema
178
- }
177
+ }
178
+ },
179
+ 400: {
180
+ description: "Validation error",
181
+ content: {
182
+ "application/json": {
183
+ schema: import_responses.ErrorResponseSchema
179
184
  }
180
- },
181
- 404: {
182
- description: "Schedule not found",
183
- content: {
184
- "application/json": {
185
- schema: import_responses.ErrorResponseSchema
186
- }
185
+ }
186
+ },
187
+ 404: {
188
+ description: "Schedule not found",
189
+ content: {
190
+ "application/json": {
191
+ schema: import_responses.ErrorResponseSchema
187
192
  }
188
- },
189
- 500: {
190
- description: "Failed to update schedule",
191
- content: {
192
- "application/json": {
193
- schema: import_responses.ErrorResponseSchema
194
- }
193
+ }
194
+ },
195
+ 500: {
196
+ description: "Failed to update schedule",
197
+ content: {
198
+ "application/json": {
199
+ schema: import_responses.ErrorResponseSchema
195
200
  }
196
- },
197
- 503: {
198
- description: "Scheduler tools are not enabled",
199
- content: {
200
- "application/json": {
201
- schema: import_responses.ErrorResponseSchema
202
- }
201
+ }
202
+ },
203
+ 503: {
204
+ description: "Scheduler tools are not enabled",
205
+ content: {
206
+ "application/json": {
207
+ schema: import_responses.ErrorResponseSchema
203
208
  }
204
209
  }
205
210
  }
206
- });
207
- const deleteRoute = (0, import_zod_openapi.createRoute)({
208
- method: "delete",
209
- path: "/schedules/{scheduleId}",
210
- summary: "Delete Schedule",
211
- description: "Deletes an automation schedule",
212
- tags: ["schedules"],
213
- request: {
214
- params: import_zod_openapi.z.object({
215
- scheduleId: import_zod_openapi.z.string().min(1).describe("Schedule ID")
216
- }).strict().describe("Schedule identifier params")
217
- },
218
- responses: {
219
- 200: {
220
- description: "Schedule deleted",
221
- content: {
222
- "application/json": {
223
- schema: import_zod_openapi.z.object({
224
- deleted: import_zod_openapi.z.boolean().describe("Whether the schedule was deleted")
225
- }).strict().describe("Delete schedule response")
226
- }
211
+ }
212
+ });
213
+ const deleteRoute = (0, import_zod_openapi.createRoute)({
214
+ method: "delete",
215
+ path: "/schedules/{scheduleId}",
216
+ summary: "Delete Schedule",
217
+ description: "Deletes an automation schedule",
218
+ tags: ["schedules"],
219
+ request: {
220
+ params: ScheduleIdParamSchema
221
+ },
222
+ responses: {
223
+ 200: {
224
+ description: "Schedule deleted",
225
+ content: {
226
+ "application/json": {
227
+ schema: DeleteScheduleResponseSchema
227
228
  }
228
- },
229
- 404: {
230
- description: "Schedule not found",
231
- content: {
232
- "application/json": {
233
- schema: import_responses.ErrorResponseSchema
234
- }
229
+ }
230
+ },
231
+ 404: {
232
+ description: "Schedule not found",
233
+ content: {
234
+ "application/json": {
235
+ schema: import_responses.ErrorResponseSchema
235
236
  }
236
- },
237
- 500: {
238
- description: "Failed to delete schedule",
239
- content: {
240
- "application/json": {
241
- schema: import_responses.ErrorResponseSchema
242
- }
237
+ }
238
+ },
239
+ 500: {
240
+ description: "Failed to delete schedule",
241
+ content: {
242
+ "application/json": {
243
+ schema: import_responses.ErrorResponseSchema
243
244
  }
244
- },
245
- 503: {
246
- description: "Scheduler tools are not enabled",
247
- content: {
248
- "application/json": {
249
- schema: import_responses.ErrorResponseSchema
250
- }
245
+ }
246
+ },
247
+ 503: {
248
+ description: "Scheduler tools are not enabled",
249
+ content: {
250
+ "application/json": {
251
+ schema: import_responses.ErrorResponseSchema
251
252
  }
252
253
  }
253
254
  }
254
- });
255
- const triggerRoute = (0, import_zod_openapi.createRoute)({
256
- method: "post",
257
- path: "/schedules/{scheduleId}/trigger",
258
- summary: "Trigger Schedule",
259
- description: "Runs a schedule immediately and waits for execution to complete (bounded by executionTimeout, default 5 minutes). Clients should set timeouts accordingly.",
260
- tags: ["schedules"],
261
- request: {
262
- params: import_zod_openapi.z.object({
263
- scheduleId: import_zod_openapi.z.string().min(1).describe("Schedule ID")
264
- }).strict().describe("Schedule identifier params")
265
- },
266
- responses: {
267
- 200: {
268
- description: "Schedule triggered",
269
- content: {
270
- "application/json": {
271
- schema: import_zod_openapi.z.object({
272
- scheduled: import_zod_openapi.z.boolean().describe(
273
- "Whether the schedule was queued. Execution is omitted when false."
274
- ),
275
- execution: import_responses.ExecutionLogSchema.optional().describe(
276
- "Execution log (present when scheduled is true)"
277
- )
278
- }).strict().describe("Trigger schedule response")
279
- }
255
+ }
256
+ });
257
+ const triggerRoute = (0, import_zod_openapi.createRoute)({
258
+ method: "post",
259
+ path: "/schedules/{scheduleId}/trigger",
260
+ summary: "Trigger Schedule",
261
+ description: "Runs a schedule immediately and waits for execution to complete (bounded by executionTimeout, default 5 minutes). Clients should set timeouts accordingly.",
262
+ tags: ["schedules"],
263
+ request: {
264
+ params: ScheduleIdParamSchema
265
+ },
266
+ responses: {
267
+ 200: {
268
+ description: "Schedule triggered",
269
+ content: {
270
+ "application/json": {
271
+ schema: TriggerScheduleResponseSchema
280
272
  }
281
- },
282
- 404: {
283
- description: "Schedule not found",
284
- content: {
285
- "application/json": {
286
- schema: import_responses.ErrorResponseSchema
287
- }
273
+ }
274
+ },
275
+ 404: {
276
+ description: "Schedule not found",
277
+ content: {
278
+ "application/json": {
279
+ schema: import_responses.ErrorResponseSchema
288
280
  }
289
- },
290
- 500: {
291
- description: "Failed to trigger schedule",
292
- content: {
293
- "application/json": {
294
- schema: import_responses.ErrorResponseSchema
295
- }
281
+ }
282
+ },
283
+ 500: {
284
+ description: "Failed to trigger schedule",
285
+ content: {
286
+ "application/json": {
287
+ schema: import_responses.ErrorResponseSchema
296
288
  }
297
- },
298
- 503: {
299
- description: "Scheduler tools are not enabled",
300
- content: {
301
- "application/json": {
302
- schema: import_responses.ErrorResponseSchema
303
- }
289
+ }
290
+ },
291
+ 503: {
292
+ description: "Scheduler tools are not enabled",
293
+ content: {
294
+ "application/json": {
295
+ schema: import_responses.ErrorResponseSchema
304
296
  }
305
297
  }
306
298
  }
307
- });
299
+ }
300
+ });
301
+ function createSchedulesRouter(getAgent) {
302
+ const app = new import_zod_openapi.OpenAPIHono();
303
+ const resolveScheduler = async (ctx) => {
304
+ const agent = await getAgent(ctx);
305
+ const agentId = agent.config?.agentId ?? "default";
306
+ let scheduler = (0, import_service.getSchedulerManager)(agentId) ?? null;
307
+ if (!scheduler) {
308
+ scheduler = await (0, import_service.ensureSchedulerManagerForAgent)(agent);
309
+ }
310
+ return { scheduler, agent };
311
+ };
308
312
  return app.openapi(listRoute, async (ctx) => {
309
313
  const { scheduler, agent } = await resolveScheduler(ctx);
310
314
  if (!scheduler) {
@@ -315,7 +319,7 @@ function createSchedulesRouter(getAgent) {
315
319
  }
316
320
  try {
317
321
  const schedules = await scheduler.listSchedules();
318
- return ctx.json({ schedules }, 200);
322
+ return ctx.json(ListSchedulesResponseSchema.parse({ schedules }), 200);
319
323
  } catch (error) {
320
324
  const message = error instanceof Error ? error.message : String(error ?? "Unknown error");
321
325
  logSchedulerError(agent, "Failed to list schedules", error);
@@ -344,7 +348,7 @@ function createSchedulesRouter(getAgent) {
344
348
  };
345
349
  try {
346
350
  const schedule = await scheduler.createSchedule(createPayload);
347
- return ctx.json({ schedule }, 201);
351
+ return ctx.json(CreateScheduleResponseSchema.parse({ schedule }), 201);
348
352
  } catch (error) {
349
353
  if (error instanceof import_core.DextoRuntimeError && error.code === import_tools_scheduler.SchedulerErrorCode.SCHEDULE_INVALID_CRON) {
350
354
  return ctx.json(toErrorResponse(error.message, String(error.code)), 400);
@@ -378,7 +382,7 @@ function createSchedulesRouter(getAgent) {
378
382
  };
379
383
  try {
380
384
  const schedule = await scheduler.updateSchedule(scheduleId, updatePayload);
381
- return ctx.json({ schedule }, 200);
385
+ return ctx.json(UpdateScheduleResponseSchema.parse({ schedule }), 200);
382
386
  } catch (error) {
383
387
  if (isScheduleNotFoundError(error)) {
384
388
  return ctx.json(
@@ -409,7 +413,7 @@ function createSchedulesRouter(getAgent) {
409
413
  const { scheduleId } = ctx.req.valid("param");
410
414
  try {
411
415
  await scheduler.deleteSchedule(scheduleId);
412
- return ctx.json({ deleted: true }, 200);
416
+ return ctx.json(DeleteScheduleResponseSchema.parse({ deleted: true }), 200);
413
417
  } catch (error) {
414
418
  if (isScheduleNotFoundError(error)) {
415
419
  return ctx.json(
@@ -434,7 +438,10 @@ function createSchedulesRouter(getAgent) {
434
438
  const { scheduleId } = ctx.req.valid("param");
435
439
  try {
436
440
  const execution = await scheduler.triggerScheduleNow(scheduleId);
437
- return ctx.json({ scheduled: true, execution }, 200);
441
+ return ctx.json(
442
+ TriggerScheduleResponseSchema.parse({ scheduled: true, execution }),
443
+ 200
444
+ );
438
445
  } catch (error) {
439
446
  if (isScheduleNotFoundError(error)) {
440
447
  return ctx.json(