@agentuity/core 1.0.29 → 1.0.30
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/dist/services/email.d.ts +507 -8
- package/dist/services/email.d.ts.map +1 -1
- package/dist/services/email.js +325 -1
- package/dist/services/email.js.map +1 -1
- package/dist/services/keyvalue.d.ts +5 -2
- package/dist/services/keyvalue.d.ts.map +1 -1
- package/dist/services/keyvalue.js +44 -1
- package/dist/services/keyvalue.js.map +1 -1
- package/dist/services/schedule.d.ts +413 -0
- package/dist/services/schedule.d.ts.map +1 -1
- package/dist/services/schedule.js +221 -0
- package/dist/services/schedule.js.map +1 -1
- package/dist/services/task.d.ts +1005 -1
- package/dist/services/task.d.ts.map +1 -1
- package/dist/services/task.js +518 -1
- package/dist/services/task.js.map +1 -1
- package/dist/services/webhook.d.ts +352 -0
- package/dist/services/webhook.d.ts.map +1 -1
- package/dist/services/webhook.js +254 -0
- package/dist/services/webhook.js.map +1 -1
- package/package.json +2 -2
- package/src/services/email.ts +560 -9
- package/src/services/keyvalue.ts +51 -3
- package/src/services/schedule.ts +442 -0
- package/src/services/task.ts +1158 -13
- package/src/services/webhook.ts +412 -0
|
@@ -1,11 +1,71 @@
|
|
|
1
1
|
import { buildUrl, toServiceException } from "./_util.js";
|
|
2
|
+
/**
|
|
3
|
+
* Client for the Agentuity Schedule service.
|
|
4
|
+
*
|
|
5
|
+
* Provides methods for creating, managing, and monitoring cron-based scheduled jobs.
|
|
6
|
+
* Schedules fire at intervals defined by cron expressions and deliver HTTP requests
|
|
7
|
+
* to configured destinations (URLs or sandboxes).
|
|
8
|
+
*
|
|
9
|
+
* The service supports:
|
|
10
|
+
* - CRUD operations on schedules and their destinations
|
|
11
|
+
* - Cron expression validation
|
|
12
|
+
* - Delivery history and monitoring
|
|
13
|
+
* - Automatic due date computation from cron expressions
|
|
14
|
+
*
|
|
15
|
+
* All methods are instrumented with OpenTelemetry spans for observability.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const schedules = new ScheduleService(baseUrl, adapter);
|
|
20
|
+
*
|
|
21
|
+
* // Create a schedule that fires every hour
|
|
22
|
+
* const result = await schedules.create({
|
|
23
|
+
* name: 'Hourly Sync',
|
|
24
|
+
* expression: '0 * * * *',
|
|
25
|
+
* destinations: [{ type: 'url', config: { url: 'https://example.com/sync' } }],
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // List all schedules
|
|
29
|
+
* const { schedules: list, total } = await schedules.list();
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
2
32
|
export class ScheduleService {
|
|
3
33
|
#adapter;
|
|
4
34
|
#baseUrl;
|
|
35
|
+
/**
|
|
36
|
+
* Create a new ScheduleService instance.
|
|
37
|
+
*
|
|
38
|
+
* @param baseUrl - The base URL for the Agentuity Schedule API (e.g., `https://api.agentuity.com`)
|
|
39
|
+
* @param adapter - The HTTP fetch adapter used for making API requests
|
|
40
|
+
*/
|
|
5
41
|
constructor(baseUrl, adapter) {
|
|
6
42
|
this.#adapter = adapter;
|
|
7
43
|
this.#baseUrl = baseUrl;
|
|
8
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Create a new schedule with optional destinations.
|
|
47
|
+
*
|
|
48
|
+
* The schedule and its destinations are created atomically — if any validation
|
|
49
|
+
* fails, the entire operation is rolled back.
|
|
50
|
+
*
|
|
51
|
+
* @param params - The schedule creation parameters including name, cron expression, and optional destinations
|
|
52
|
+
* @returns The created schedule and its destinations
|
|
53
|
+
* @throws ServiceException on API errors (e.g., invalid cron expression, invalid destination URL)
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const result = await schedules.create({
|
|
58
|
+
* name: 'Daily Report',
|
|
59
|
+
* description: 'Generate and send daily reports',
|
|
60
|
+
* expression: '0 9 * * *',
|
|
61
|
+
* destinations: [
|
|
62
|
+
* { type: 'url', config: { url: 'https://example.com/reports' } },
|
|
63
|
+
* ],
|
|
64
|
+
* });
|
|
65
|
+
* console.log('Created schedule:', result.schedule.id);
|
|
66
|
+
* console.log('Next run:', result.schedule.due_date);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
9
69
|
async create(params) {
|
|
10
70
|
const url = buildUrl(this.#baseUrl, '/schedule/create/2026-02-24');
|
|
11
71
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -27,6 +87,25 @@ export class ScheduleService {
|
|
|
27
87
|
}
|
|
28
88
|
throw await toServiceException('POST', url, res.response);
|
|
29
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* List all schedules with optional pagination.
|
|
92
|
+
*
|
|
93
|
+
* @param params - Optional pagination parameters
|
|
94
|
+
* @param params.limit - Maximum number of schedules to return (max 500)
|
|
95
|
+
* @param params.offset - Number of schedules to skip for pagination
|
|
96
|
+
* @returns A paginated list of schedules with the total count
|
|
97
|
+
* @throws ServiceException on API errors
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* // List first page
|
|
102
|
+
* const { schedules, total } = await service.list({ limit: 20 });
|
|
103
|
+
* console.log(`Showing ${schedules.length} of ${total} schedules`);
|
|
104
|
+
*
|
|
105
|
+
* // Paginate through all schedules
|
|
106
|
+
* const page2 = await service.list({ limit: 20, offset: 20 });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
30
109
|
async list(params) {
|
|
31
110
|
const qs = new URLSearchParams();
|
|
32
111
|
if (params?.limit !== undefined) {
|
|
@@ -56,6 +135,21 @@ export class ScheduleService {
|
|
|
56
135
|
}
|
|
57
136
|
throw await toServiceException('GET', url, res.response);
|
|
58
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Get a schedule by its ID, including all configured destinations.
|
|
140
|
+
*
|
|
141
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
142
|
+
* @returns The schedule record and its array of destinations
|
|
143
|
+
* @throws ServiceException on API errors (including 404 if not found)
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* const { schedule, destinations } = await service.get('sch_abc123');
|
|
148
|
+
* console.log('Schedule:', schedule.name);
|
|
149
|
+
* console.log('Next run:', schedule.due_date);
|
|
150
|
+
* console.log('Destinations:', destinations.length);
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
59
153
|
async get(scheduleId) {
|
|
60
154
|
const url = buildUrl(this.#baseUrl, `/schedule/get/2026-02-24/${encodeURIComponent(scheduleId)}`);
|
|
61
155
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -77,6 +171,27 @@ export class ScheduleService {
|
|
|
77
171
|
}
|
|
78
172
|
throw await toServiceException('GET', url, res.response);
|
|
79
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Update an existing schedule. Only the provided fields are modified.
|
|
176
|
+
*
|
|
177
|
+
* @remarks If the `expression` field is changed, the `due_date` is automatically
|
|
178
|
+
* recomputed based on the new cron expression.
|
|
179
|
+
*
|
|
180
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
181
|
+
* @param params - The fields to update (all optional)
|
|
182
|
+
* @returns The updated schedule record
|
|
183
|
+
* @throws ServiceException on API errors (e.g., invalid cron expression, schedule not found)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Update the name and expression
|
|
188
|
+
* const { schedule } = await service.update('sch_abc123', {
|
|
189
|
+
* name: 'Daily Midnight Sync',
|
|
190
|
+
* expression: '0 0 * * *',
|
|
191
|
+
* });
|
|
192
|
+
* console.log('Updated. Next run:', schedule.due_date);
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
80
195
|
async update(scheduleId, params) {
|
|
81
196
|
const url = buildUrl(this.#baseUrl, `/schedule/update/2026-02-24/${encodeURIComponent(scheduleId)}`);
|
|
82
197
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -97,6 +212,18 @@ export class ScheduleService {
|
|
|
97
212
|
}
|
|
98
213
|
throw await toServiceException('PUT', url, res.response);
|
|
99
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Delete a schedule and all of its destinations and delivery history.
|
|
217
|
+
*
|
|
218
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
219
|
+
* @throws ServiceException on API errors (e.g., schedule not found)
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```typescript
|
|
223
|
+
* await service.delete('sch_abc123');
|
|
224
|
+
* console.log('Schedule deleted');
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
100
227
|
async delete(scheduleId) {
|
|
101
228
|
const url = buildUrl(this.#baseUrl, `/schedule/delete/2026-02-24/${encodeURIComponent(scheduleId)}`);
|
|
102
229
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -115,6 +242,26 @@ export class ScheduleService {
|
|
|
115
242
|
}
|
|
116
243
|
throw await toServiceException('DELETE', url, res.response);
|
|
117
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Create a new destination on an existing schedule.
|
|
247
|
+
*
|
|
248
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
249
|
+
* @param params - The destination configuration including type and type-specific config
|
|
250
|
+
* @returns The newly created destination record
|
|
251
|
+
* @throws ServiceException on API errors (e.g., invalid URL, schedule not found)
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* const { destination } = await service.createDestination('sch_abc123', {
|
|
256
|
+
* type: 'url',
|
|
257
|
+
* config: {
|
|
258
|
+
* url: 'https://example.com/webhook',
|
|
259
|
+
* headers: { 'Authorization': 'Bearer token' },
|
|
260
|
+
* },
|
|
261
|
+
* });
|
|
262
|
+
* console.log('Destination created:', destination.id);
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
118
265
|
async createDestination(scheduleId, params) {
|
|
119
266
|
const url = buildUrl(this.#baseUrl, `/schedule/destinations/create/2026-02-24/${encodeURIComponent(scheduleId)}`);
|
|
120
267
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -136,6 +283,18 @@ export class ScheduleService {
|
|
|
136
283
|
}
|
|
137
284
|
throw await toServiceException('POST', url, res.response);
|
|
138
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* Delete a destination from a schedule.
|
|
288
|
+
*
|
|
289
|
+
* @param destinationId - The destination ID (prefixed with `sdst_`)
|
|
290
|
+
* @throws ServiceException on API errors (e.g., destination not found)
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* await service.deleteDestination('sdst_xyz789');
|
|
295
|
+
* console.log('Destination removed');
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
139
298
|
async deleteDestination(destinationId) {
|
|
140
299
|
const url = buildUrl(this.#baseUrl, `/schedule/destinations/delete/2026-02-24/${encodeURIComponent(destinationId)}`);
|
|
141
300
|
const signal = AbortSignal.timeout(30_000);
|
|
@@ -154,6 +313,27 @@ export class ScheduleService {
|
|
|
154
313
|
}
|
|
155
314
|
throw await toServiceException('DELETE', url, res.response);
|
|
156
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* List delivery attempts for a schedule with optional pagination.
|
|
318
|
+
*
|
|
319
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
320
|
+
* @param params - Optional pagination parameters
|
|
321
|
+
* @param params.limit - Maximum number of deliveries to return
|
|
322
|
+
* @param params.offset - Number of deliveries to skip for pagination
|
|
323
|
+
* @returns A list of delivery attempt records
|
|
324
|
+
* @throws ServiceException on API errors (including 404 if schedule not found)
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* ```typescript
|
|
328
|
+
* const { deliveries } = await service.listDeliveries('sch_abc123');
|
|
329
|
+
* for (const d of deliveries) {
|
|
330
|
+
* console.log(`${d.date}: ${d.status} (retries: ${d.retries})`);
|
|
331
|
+
* if (d.error) {
|
|
332
|
+
* console.error(' Error:', d.error);
|
|
333
|
+
* }
|
|
334
|
+
* }
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
157
337
|
async listDeliveries(scheduleId, params) {
|
|
158
338
|
const qs = new URLSearchParams();
|
|
159
339
|
if (params?.limit !== undefined) {
|
|
@@ -186,6 +366,26 @@ export class ScheduleService {
|
|
|
186
366
|
}
|
|
187
367
|
throw await toServiceException('GET', url, res.response);
|
|
188
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Get a specific destination for a schedule by its ID.
|
|
371
|
+
*
|
|
372
|
+
* @remarks This is a convenience method that fetches the schedule and filters
|
|
373
|
+
* its destinations client-side. For large destination lists, prefer using
|
|
374
|
+
* {@link get} directly.
|
|
375
|
+
*
|
|
376
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
377
|
+
* @param destinationId - The destination ID (prefixed with `sdst_`)
|
|
378
|
+
* @returns The matching destination record
|
|
379
|
+
* @throws Error if the destination is not found within the schedule
|
|
380
|
+
* @throws ServiceException on API errors when fetching the schedule
|
|
381
|
+
*
|
|
382
|
+
* @example
|
|
383
|
+
* ```typescript
|
|
384
|
+
* const dest = await service.getDestination('sch_abc123', 'sdst_xyz789');
|
|
385
|
+
* console.log('Destination type:', dest.type);
|
|
386
|
+
* console.log('Config:', dest.config);
|
|
387
|
+
* ```
|
|
388
|
+
*/
|
|
189
389
|
async getDestination(scheduleId, destinationId) {
|
|
190
390
|
const result = await this.get(scheduleId);
|
|
191
391
|
const destination = result.destinations.find((d) => d.id === destinationId);
|
|
@@ -194,6 +394,27 @@ export class ScheduleService {
|
|
|
194
394
|
}
|
|
195
395
|
return destination;
|
|
196
396
|
}
|
|
397
|
+
/**
|
|
398
|
+
* Get a specific delivery record by its ID.
|
|
399
|
+
*
|
|
400
|
+
* @remarks This is a convenience method that lists deliveries and filters
|
|
401
|
+
* client-side. Use the optional `params` to control the search window if
|
|
402
|
+
* the delivery may not be in the first page of results.
|
|
403
|
+
*
|
|
404
|
+
* @param scheduleId - The schedule ID (prefixed with `sch_`)
|
|
405
|
+
* @param deliveryId - The delivery ID to find
|
|
406
|
+
* @param params - Optional pagination parameters to control the search window
|
|
407
|
+
* @returns The matching delivery record
|
|
408
|
+
* @throws Error if the delivery is not found in the result set
|
|
409
|
+
* @throws ServiceException on API errors when listing deliveries
|
|
410
|
+
*
|
|
411
|
+
* @example
|
|
412
|
+
* ```typescript
|
|
413
|
+
* const delivery = await service.getDelivery('sch_abc123', 'del_xyz789');
|
|
414
|
+
* console.log('Status:', delivery.status);
|
|
415
|
+
* console.log('Retries:', delivery.retries);
|
|
416
|
+
* ```
|
|
417
|
+
*/
|
|
197
418
|
async getDelivery(scheduleId, deliveryId, params) {
|
|
198
419
|
const result = await this.listDeliveries(scheduleId, params);
|
|
199
420
|
const delivery = result.deliveries.find((d) => d.id === deliveryId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/services/schedule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/services/schedule.ts"],"names":[],"mappings":"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"}
|