@dexto/tools-scheduler 1.6.0 → 1.6.2
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/error-codes.d.ts +2 -3
- package/dist/error-codes.d.ts.map +1 -0
- package/dist/errors.d.ts +4 -7
- package/dist/errors.d.ts.map +1 -0
- package/dist/executor.d.ts +4 -9
- package/dist/executor.d.ts.map +1 -0
- package/dist/index.cjs +0 -36
- package/dist/index.d.cts +2 -12
- package/dist/index.d.ts +10 -17
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -29
- package/dist/manager.cjs +9 -4
- package/dist/manager.d.cts +3 -1
- package/dist/manager.d.ts +9 -10
- package/dist/manager.d.ts.map +1 -0
- package/dist/manager.js +8 -3
- package/dist/schemas.d.ts +21 -24
- package/dist/schemas.d.ts.map +1 -0
- package/dist/service/index.cjs +46 -0
- package/dist/service/index.d.cts +11 -0
- package/dist/service/index.d.ts +7 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +20 -0
- package/dist/service.cjs +51 -0
- package/dist/service.d.cts +37 -0
- package/dist/service.d.ts +34 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +27 -0
- package/dist/storage.cjs +21 -16
- package/dist/storage.d.cts +4 -1
- package/dist/storage.d.ts +8 -10
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +21 -16
- package/dist/tool-provider.cjs +17 -2
- package/dist/tool-provider.d.cts +9 -1
- package/dist/tool-provider.d.ts +17 -14
- package/dist/tool-provider.d.ts.map +1 -0
- package/dist/tool-provider.js +14 -1
- package/dist/tool-types.d.ts +4 -9
- package/dist/tool-types.d.ts.map +1 -0
- package/dist/tools/create-schedule.d.ts +4 -11
- package/dist/tools/create-schedule.d.ts.map +1 -0
- package/dist/tools/delete-schedule.d.ts +4 -11
- package/dist/tools/delete-schedule.d.ts.map +1 -0
- package/dist/tools/get-history.d.ts +4 -11
- package/dist/tools/get-history.d.ts.map +1 -0
- package/dist/tools/get-schedule.d.ts +4 -11
- package/dist/tools/get-schedule.d.ts.map +1 -0
- package/dist/tools/index.cjs +49 -0
- package/dist/tools/index.d.cts +15 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +18 -0
- package/dist/tools/list-schedules.d.ts +4 -11
- package/dist/tools/list-schedules.d.ts.map +1 -0
- package/dist/tools/trigger-schedule.d.ts +4 -11
- package/dist/tools/trigger-schedule.d.ts.map +1 -0
- package/dist/tools/update-schedule.d.ts +4 -11
- package/dist/tools/update-schedule.d.ts.map +1 -0
- package/dist/types.d.ts +6 -10
- package/dist/types.d.ts.map +1 -0
- package/package.json +12 -4
package/dist/service.cjs
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var service_exports = {};
|
|
20
|
+
__export(service_exports, {
|
|
21
|
+
createSchedulerService: () => createSchedulerService
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(service_exports);
|
|
24
|
+
var import_schemas = require("./schemas.js");
|
|
25
|
+
var import_manager = require("./manager.js");
|
|
26
|
+
async function createSchedulerService(options) {
|
|
27
|
+
const resolvedConfig = options.config ?? import_schemas.SchedulerToolsConfigSchema.parse({ type: "scheduler-tools" });
|
|
28
|
+
const manager = new import_manager.SchedulerManager(
|
|
29
|
+
options.storageManager,
|
|
30
|
+
resolvedConfig,
|
|
31
|
+
options.logger,
|
|
32
|
+
options.storageNamespace ? { storageNamespace: options.storageNamespace } : void 0
|
|
33
|
+
);
|
|
34
|
+
if (options.executor) {
|
|
35
|
+
manager.setExecutor(options.executor);
|
|
36
|
+
}
|
|
37
|
+
await manager.init();
|
|
38
|
+
if (options.autoStart !== false) {
|
|
39
|
+
try {
|
|
40
|
+
await manager.start();
|
|
41
|
+
} catch (error) {
|
|
42
|
+
await manager.stop().catch(() => void 0);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return manager;
|
|
47
|
+
}
|
|
48
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
+
0 && (module.exports = {
|
|
50
|
+
createSchedulerService
|
|
51
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { StorageManager, Logger } from '@dexto/core';
|
|
2
|
+
import { SchedulerToolsConfig } from './schemas.cjs';
|
|
3
|
+
import { ScheduleExecutorFn } from './types.cjs';
|
|
4
|
+
import { SchedulerManager } from './manager.cjs';
|
|
5
|
+
import 'zod';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Options for constructing a scheduler service.
|
|
9
|
+
*
|
|
10
|
+
* @property storageManager Storage manager used for persistence.
|
|
11
|
+
* @property logger Logger used by the scheduler manager.
|
|
12
|
+
* @property config Optional scheduler config. Defaults to `SchedulerToolsConfigSchema` when omitted.
|
|
13
|
+
* @property storageNamespace Optional namespace for scheduler storage.
|
|
14
|
+
* @property executor Optional executor override for schedule runs.
|
|
15
|
+
* @property autoStart When false, initializes without starting the scheduler.
|
|
16
|
+
*/
|
|
17
|
+
type SchedulerServiceOptions = {
|
|
18
|
+
storageManager: StorageManager;
|
|
19
|
+
logger: Logger;
|
|
20
|
+
config?: SchedulerToolsConfig;
|
|
21
|
+
storageNamespace?: string;
|
|
22
|
+
executor?: ScheduleExecutorFn;
|
|
23
|
+
autoStart?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Create and initialize a SchedulerManager with optional overrides.
|
|
27
|
+
*
|
|
28
|
+
* If `config` is omitted, this uses `SchedulerToolsConfigSchema` to provide defaults.
|
|
29
|
+
* Use `executor` to override how scheduled tasks are executed without changing storage or config.
|
|
30
|
+
*
|
|
31
|
+
* @param options Service construction options.
|
|
32
|
+
*
|
|
33
|
+
* @returns A ready-to-use SchedulerManager instance.
|
|
34
|
+
*/
|
|
35
|
+
declare function createSchedulerService(options: SchedulerServiceOptions): Promise<SchedulerManager>;
|
|
36
|
+
|
|
37
|
+
export { type SchedulerServiceOptions, createSchedulerService };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Logger, StorageManager } from '@dexto/core';
|
|
2
|
+
import { type SchedulerToolsConfig } from './schemas.js';
|
|
3
|
+
import type { ScheduleExecutorFn } from './types.js';
|
|
4
|
+
import { SchedulerManager } from './manager.js';
|
|
5
|
+
/**
|
|
6
|
+
* Options for constructing a scheduler service.
|
|
7
|
+
*
|
|
8
|
+
* @property storageManager Storage manager used for persistence.
|
|
9
|
+
* @property logger Logger used by the scheduler manager.
|
|
10
|
+
* @property config Optional scheduler config. Defaults to `SchedulerToolsConfigSchema` when omitted.
|
|
11
|
+
* @property storageNamespace Optional namespace for scheduler storage.
|
|
12
|
+
* @property executor Optional executor override for schedule runs.
|
|
13
|
+
* @property autoStart When false, initializes without starting the scheduler.
|
|
14
|
+
*/
|
|
15
|
+
export type SchedulerServiceOptions = {
|
|
16
|
+
storageManager: StorageManager;
|
|
17
|
+
logger: Logger;
|
|
18
|
+
config?: SchedulerToolsConfig;
|
|
19
|
+
storageNamespace?: string;
|
|
20
|
+
executor?: ScheduleExecutorFn;
|
|
21
|
+
autoStart?: boolean;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Create and initialize a SchedulerManager with optional overrides.
|
|
25
|
+
*
|
|
26
|
+
* If `config` is omitted, this uses `SchedulerToolsConfigSchema` to provide defaults.
|
|
27
|
+
* Use `executor` to override how scheduled tasks are executed without changing storage or config.
|
|
28
|
+
*
|
|
29
|
+
* @param options Service construction options.
|
|
30
|
+
*
|
|
31
|
+
* @returns A ready-to-use SchedulerManager instance.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createSchedulerService(options: SchedulerServiceOptions): Promise<SchedulerManager>;
|
|
34
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CACxC,OAAO,EAAE,uBAAuB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAyB3B"}
|
package/dist/service.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SchedulerToolsConfigSchema } from "./schemas.js";
|
|
2
|
+
import { SchedulerManager } from "./manager.js";
|
|
3
|
+
async function createSchedulerService(options) {
|
|
4
|
+
const resolvedConfig = options.config ?? SchedulerToolsConfigSchema.parse({ type: "scheduler-tools" });
|
|
5
|
+
const manager = new SchedulerManager(
|
|
6
|
+
options.storageManager,
|
|
7
|
+
resolvedConfig,
|
|
8
|
+
options.logger,
|
|
9
|
+
options.storageNamespace ? { storageNamespace: options.storageNamespace } : void 0
|
|
10
|
+
);
|
|
11
|
+
if (options.executor) {
|
|
12
|
+
manager.setExecutor(options.executor);
|
|
13
|
+
}
|
|
14
|
+
await manager.init();
|
|
15
|
+
if (options.autoStart !== false) {
|
|
16
|
+
try {
|
|
17
|
+
await manager.start();
|
|
18
|
+
} catch (error) {
|
|
19
|
+
await manager.stop().catch(() => void 0);
|
|
20
|
+
throw error;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return manager;
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
createSchedulerService
|
|
27
|
+
};
|
package/dist/storage.cjs
CHANGED
|
@@ -22,21 +22,26 @@ __export(storage_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(storage_exports);
|
|
24
24
|
var import_errors = require("./errors.js");
|
|
25
|
-
const
|
|
26
|
-
const EXECUTION_LOG_PREFIX = "execution:";
|
|
27
|
-
const SCHEDULE_LIST_KEY = "scheduler:schedules";
|
|
25
|
+
const DEFAULT_SCHEDULER_NAMESPACE = "default";
|
|
28
26
|
class ScheduleStorage {
|
|
29
|
-
constructor(storageManager, maxExecutionHistory, logger) {
|
|
27
|
+
constructor(storageManager, maxExecutionHistory, logger, namespace) {
|
|
30
28
|
this.storageManager = storageManager;
|
|
31
29
|
this.maxExecutionHistory = maxExecutionHistory;
|
|
32
30
|
this.logger = logger;
|
|
31
|
+
const ns = namespace && namespace.trim().length > 0 ? namespace.trim() : DEFAULT_SCHEDULER_NAMESPACE;
|
|
32
|
+
this.schedulePrefix = `scheduler:${ns}:schedule:`;
|
|
33
|
+
this.executionLogPrefix = `scheduler:${ns}:execution:`;
|
|
34
|
+
this.scheduleListKey = `scheduler:${ns}:schedules`;
|
|
33
35
|
}
|
|
34
36
|
listLock = Promise.resolve();
|
|
37
|
+
schedulePrefix;
|
|
38
|
+
executionLogPrefix;
|
|
39
|
+
scheduleListKey;
|
|
35
40
|
/**
|
|
36
41
|
* Save a schedule to persistent storage
|
|
37
42
|
*/
|
|
38
43
|
async saveSchedule(schedule) {
|
|
39
|
-
const key = `${
|
|
44
|
+
const key = `${this.schedulePrefix}${schedule.id}`;
|
|
40
45
|
let persisted = false;
|
|
41
46
|
try {
|
|
42
47
|
await this.storageManager.getDatabase().set(key, schedule);
|
|
@@ -64,7 +69,7 @@ class ScheduleStorage {
|
|
|
64
69
|
*/
|
|
65
70
|
async loadSchedule(scheduleId) {
|
|
66
71
|
try {
|
|
67
|
-
const key = `${
|
|
72
|
+
const key = `${this.schedulePrefix}${scheduleId}`;
|
|
68
73
|
const schedule = await this.storageManager.getDatabase().get(key);
|
|
69
74
|
return schedule || null;
|
|
70
75
|
} catch (error) {
|
|
@@ -79,7 +84,7 @@ class ScheduleStorage {
|
|
|
79
84
|
*/
|
|
80
85
|
async listSchedules() {
|
|
81
86
|
try {
|
|
82
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
87
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
83
88
|
const schedules = [];
|
|
84
89
|
for (const scheduleId of scheduleIds) {
|
|
85
90
|
const schedule = await this.loadSchedule(scheduleId);
|
|
@@ -102,7 +107,7 @@ class ScheduleStorage {
|
|
|
102
107
|
let removedFromList = false;
|
|
103
108
|
let deletedSchedule = false;
|
|
104
109
|
try {
|
|
105
|
-
const key = `${
|
|
110
|
+
const key = `${this.schedulePrefix}${scheduleId}`;
|
|
106
111
|
await this.removeScheduleFromList(scheduleId);
|
|
107
112
|
removedFromList = true;
|
|
108
113
|
await this.storageManager.getDatabase().delete(key);
|
|
@@ -130,7 +135,7 @@ class ScheduleStorage {
|
|
|
130
135
|
*/
|
|
131
136
|
async saveExecutionLog(log) {
|
|
132
137
|
try {
|
|
133
|
-
const key = `${
|
|
138
|
+
const key = `${this.executionLogPrefix}${log.scheduleId}:${log.id}`;
|
|
134
139
|
await this.storageManager.getDatabase().set(key, log);
|
|
135
140
|
await this.pruneExecutionHistory(log.scheduleId);
|
|
136
141
|
this.logger.debug(`Execution log ${log.id} saved for schedule ${log.scheduleId}`, {
|
|
@@ -148,7 +153,7 @@ class ScheduleStorage {
|
|
|
148
153
|
*/
|
|
149
154
|
async getExecutionLogs(scheduleId, limit) {
|
|
150
155
|
try {
|
|
151
|
-
const prefix = `${
|
|
156
|
+
const prefix = `${this.executionLogPrefix}${scheduleId}:`;
|
|
152
157
|
const keys = await this.storageManager.getDatabase().list(prefix);
|
|
153
158
|
const logs = [];
|
|
154
159
|
for (const key of keys) {
|
|
@@ -171,7 +176,7 @@ class ScheduleStorage {
|
|
|
171
176
|
*/
|
|
172
177
|
async deleteExecutionLogs(scheduleId) {
|
|
173
178
|
try {
|
|
174
|
-
const prefix = `${
|
|
179
|
+
const prefix = `${this.executionLogPrefix}${scheduleId}:`;
|
|
175
180
|
const keys = await this.storageManager.getDatabase().list(prefix);
|
|
176
181
|
for (const key of keys) {
|
|
177
182
|
await this.storageManager.getDatabase().delete(key);
|
|
@@ -192,7 +197,7 @@ class ScheduleStorage {
|
|
|
192
197
|
if (logs.length > this.maxExecutionHistory) {
|
|
193
198
|
const logsToDelete = logs.slice(this.maxExecutionHistory);
|
|
194
199
|
for (const log of logsToDelete) {
|
|
195
|
-
const key = `${
|
|
200
|
+
const key = `${this.executionLogPrefix}${scheduleId}:${log.id}`;
|
|
196
201
|
await this.storageManager.getDatabase().delete(key);
|
|
197
202
|
}
|
|
198
203
|
this.logger.debug(
|
|
@@ -210,10 +215,10 @@ class ScheduleStorage {
|
|
|
210
215
|
*/
|
|
211
216
|
async addScheduleToList(scheduleId) {
|
|
212
217
|
await this.withListLock(async () => {
|
|
213
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
218
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
214
219
|
if (!scheduleIds.includes(scheduleId)) {
|
|
215
220
|
scheduleIds.push(scheduleId);
|
|
216
|
-
await this.storageManager.getDatabase().set(
|
|
221
|
+
await this.storageManager.getDatabase().set(this.scheduleListKey, scheduleIds);
|
|
217
222
|
}
|
|
218
223
|
});
|
|
219
224
|
}
|
|
@@ -222,9 +227,9 @@ class ScheduleStorage {
|
|
|
222
227
|
*/
|
|
223
228
|
async removeScheduleFromList(scheduleId) {
|
|
224
229
|
await this.withListLock(async () => {
|
|
225
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
230
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
226
231
|
const filtered = scheduleIds.filter((id) => id !== scheduleId);
|
|
227
|
-
await this.storageManager.getDatabase().set(
|
|
232
|
+
await this.storageManager.getDatabase().set(this.scheduleListKey, filtered);
|
|
228
233
|
});
|
|
229
234
|
}
|
|
230
235
|
async withListLock(handler) {
|
package/dist/storage.d.cts
CHANGED
|
@@ -15,7 +15,10 @@ declare class ScheduleStorage {
|
|
|
15
15
|
private maxExecutionHistory;
|
|
16
16
|
private logger;
|
|
17
17
|
private listLock;
|
|
18
|
-
|
|
18
|
+
private schedulePrefix;
|
|
19
|
+
private executionLogPrefix;
|
|
20
|
+
private scheduleListKey;
|
|
21
|
+
constructor(storageManager: StorageManager, maxExecutionHistory: number, logger: Logger, namespace?: string);
|
|
19
22
|
/**
|
|
20
23
|
* Save a schedule to persistent storage
|
|
21
24
|
*/
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
import { StorageManager, Logger } from '@dexto/core';
|
|
2
|
-
import { Schedule, ExecutionLog } from './types.js';
|
|
3
|
-
import './schemas.js';
|
|
4
|
-
import 'zod';
|
|
5
|
-
|
|
6
1
|
/**
|
|
7
2
|
* Storage layer for schedules and execution logs
|
|
8
3
|
*/
|
|
9
|
-
|
|
4
|
+
import type { StorageManager, Logger } from '@dexto/core';
|
|
5
|
+
import type { Schedule, ExecutionLog } from './types.js';
|
|
10
6
|
/**
|
|
11
7
|
* Storage layer for scheduler persistence
|
|
12
8
|
*/
|
|
13
|
-
declare class ScheduleStorage {
|
|
9
|
+
export declare class ScheduleStorage {
|
|
14
10
|
private storageManager;
|
|
15
11
|
private maxExecutionHistory;
|
|
16
12
|
private logger;
|
|
17
13
|
private listLock;
|
|
18
|
-
|
|
14
|
+
private schedulePrefix;
|
|
15
|
+
private executionLogPrefix;
|
|
16
|
+
private scheduleListKey;
|
|
17
|
+
constructor(storageManager: StorageManager, maxExecutionHistory: number, logger: Logger, namespace?: string);
|
|
19
18
|
/**
|
|
20
19
|
* Save a schedule to persistent storage
|
|
21
20
|
*/
|
|
@@ -58,5 +57,4 @@ declare class ScheduleStorage {
|
|
|
58
57
|
private removeScheduleFromList;
|
|
59
58
|
private withListLock;
|
|
60
59
|
}
|
|
61
|
-
|
|
62
|
-
export { ScheduleStorage };
|
|
60
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKzD;;GAEG;AACH,qBAAa,eAAe;IAOpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,MAAM;IARlB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAS;gBAGpB,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM;IAWtB;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAahE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAwB1C;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvD;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD;;OAEG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA2BnF;;OAEG;YACW,mBAAmB;IAkBjC;;OAEG;YACW,qBAAqB;IAyBnC;;OAEG;YACW,iBAAiB;IAY/B;;OAEG;YACW,sBAAsB;YAWtB,YAAY;CAiB7B"}
|
package/dist/storage.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { SchedulerError } from "./errors.js";
|
|
2
|
-
const
|
|
3
|
-
const EXECUTION_LOG_PREFIX = "execution:";
|
|
4
|
-
const SCHEDULE_LIST_KEY = "scheduler:schedules";
|
|
2
|
+
const DEFAULT_SCHEDULER_NAMESPACE = "default";
|
|
5
3
|
class ScheduleStorage {
|
|
6
|
-
constructor(storageManager, maxExecutionHistory, logger) {
|
|
4
|
+
constructor(storageManager, maxExecutionHistory, logger, namespace) {
|
|
7
5
|
this.storageManager = storageManager;
|
|
8
6
|
this.maxExecutionHistory = maxExecutionHistory;
|
|
9
7
|
this.logger = logger;
|
|
8
|
+
const ns = namespace && namespace.trim().length > 0 ? namespace.trim() : DEFAULT_SCHEDULER_NAMESPACE;
|
|
9
|
+
this.schedulePrefix = `scheduler:${ns}:schedule:`;
|
|
10
|
+
this.executionLogPrefix = `scheduler:${ns}:execution:`;
|
|
11
|
+
this.scheduleListKey = `scheduler:${ns}:schedules`;
|
|
10
12
|
}
|
|
11
13
|
listLock = Promise.resolve();
|
|
14
|
+
schedulePrefix;
|
|
15
|
+
executionLogPrefix;
|
|
16
|
+
scheduleListKey;
|
|
12
17
|
/**
|
|
13
18
|
* Save a schedule to persistent storage
|
|
14
19
|
*/
|
|
15
20
|
async saveSchedule(schedule) {
|
|
16
|
-
const key = `${
|
|
21
|
+
const key = `${this.schedulePrefix}${schedule.id}`;
|
|
17
22
|
let persisted = false;
|
|
18
23
|
try {
|
|
19
24
|
await this.storageManager.getDatabase().set(key, schedule);
|
|
@@ -41,7 +46,7 @@ class ScheduleStorage {
|
|
|
41
46
|
*/
|
|
42
47
|
async loadSchedule(scheduleId) {
|
|
43
48
|
try {
|
|
44
|
-
const key = `${
|
|
49
|
+
const key = `${this.schedulePrefix}${scheduleId}`;
|
|
45
50
|
const schedule = await this.storageManager.getDatabase().get(key);
|
|
46
51
|
return schedule || null;
|
|
47
52
|
} catch (error) {
|
|
@@ -56,7 +61,7 @@ class ScheduleStorage {
|
|
|
56
61
|
*/
|
|
57
62
|
async listSchedules() {
|
|
58
63
|
try {
|
|
59
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
64
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
60
65
|
const schedules = [];
|
|
61
66
|
for (const scheduleId of scheduleIds) {
|
|
62
67
|
const schedule = await this.loadSchedule(scheduleId);
|
|
@@ -79,7 +84,7 @@ class ScheduleStorage {
|
|
|
79
84
|
let removedFromList = false;
|
|
80
85
|
let deletedSchedule = false;
|
|
81
86
|
try {
|
|
82
|
-
const key = `${
|
|
87
|
+
const key = `${this.schedulePrefix}${scheduleId}`;
|
|
83
88
|
await this.removeScheduleFromList(scheduleId);
|
|
84
89
|
removedFromList = true;
|
|
85
90
|
await this.storageManager.getDatabase().delete(key);
|
|
@@ -107,7 +112,7 @@ class ScheduleStorage {
|
|
|
107
112
|
*/
|
|
108
113
|
async saveExecutionLog(log) {
|
|
109
114
|
try {
|
|
110
|
-
const key = `${
|
|
115
|
+
const key = `${this.executionLogPrefix}${log.scheduleId}:${log.id}`;
|
|
111
116
|
await this.storageManager.getDatabase().set(key, log);
|
|
112
117
|
await this.pruneExecutionHistory(log.scheduleId);
|
|
113
118
|
this.logger.debug(`Execution log ${log.id} saved for schedule ${log.scheduleId}`, {
|
|
@@ -125,7 +130,7 @@ class ScheduleStorage {
|
|
|
125
130
|
*/
|
|
126
131
|
async getExecutionLogs(scheduleId, limit) {
|
|
127
132
|
try {
|
|
128
|
-
const prefix = `${
|
|
133
|
+
const prefix = `${this.executionLogPrefix}${scheduleId}:`;
|
|
129
134
|
const keys = await this.storageManager.getDatabase().list(prefix);
|
|
130
135
|
const logs = [];
|
|
131
136
|
for (const key of keys) {
|
|
@@ -148,7 +153,7 @@ class ScheduleStorage {
|
|
|
148
153
|
*/
|
|
149
154
|
async deleteExecutionLogs(scheduleId) {
|
|
150
155
|
try {
|
|
151
|
-
const prefix = `${
|
|
156
|
+
const prefix = `${this.executionLogPrefix}${scheduleId}:`;
|
|
152
157
|
const keys = await this.storageManager.getDatabase().list(prefix);
|
|
153
158
|
for (const key of keys) {
|
|
154
159
|
await this.storageManager.getDatabase().delete(key);
|
|
@@ -169,7 +174,7 @@ class ScheduleStorage {
|
|
|
169
174
|
if (logs.length > this.maxExecutionHistory) {
|
|
170
175
|
const logsToDelete = logs.slice(this.maxExecutionHistory);
|
|
171
176
|
for (const log of logsToDelete) {
|
|
172
|
-
const key = `${
|
|
177
|
+
const key = `${this.executionLogPrefix}${scheduleId}:${log.id}`;
|
|
173
178
|
await this.storageManager.getDatabase().delete(key);
|
|
174
179
|
}
|
|
175
180
|
this.logger.debug(
|
|
@@ -187,10 +192,10 @@ class ScheduleStorage {
|
|
|
187
192
|
*/
|
|
188
193
|
async addScheduleToList(scheduleId) {
|
|
189
194
|
await this.withListLock(async () => {
|
|
190
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
195
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
191
196
|
if (!scheduleIds.includes(scheduleId)) {
|
|
192
197
|
scheduleIds.push(scheduleId);
|
|
193
|
-
await this.storageManager.getDatabase().set(
|
|
198
|
+
await this.storageManager.getDatabase().set(this.scheduleListKey, scheduleIds);
|
|
194
199
|
}
|
|
195
200
|
});
|
|
196
201
|
}
|
|
@@ -199,9 +204,9 @@ class ScheduleStorage {
|
|
|
199
204
|
*/
|
|
200
205
|
async removeScheduleFromList(scheduleId) {
|
|
201
206
|
await this.withListLock(async () => {
|
|
202
|
-
const scheduleIds = await this.storageManager.getDatabase().get(
|
|
207
|
+
const scheduleIds = await this.storageManager.getDatabase().get(this.scheduleListKey) || [];
|
|
203
208
|
const filtered = scheduleIds.filter((id) => id !== scheduleId);
|
|
204
|
-
await this.storageManager.getDatabase().set(
|
|
209
|
+
await this.storageManager.getDatabase().set(this.scheduleListKey, filtered);
|
|
205
210
|
});
|
|
206
211
|
}
|
|
207
212
|
async withListLock(handler) {
|
package/dist/tool-provider.cjs
CHANGED
|
@@ -21,7 +21,9 @@ __export(tool_provider_exports, {
|
|
|
21
21
|
createSchedulerTools: () => createSchedulerTools,
|
|
22
22
|
ensureSchedulerManagerForAgent: () => ensureSchedulerManagerForAgent,
|
|
23
23
|
getSchedulerManager: () => getSchedulerManager,
|
|
24
|
-
|
|
24
|
+
registerSchedulerManager: () => registerSchedulerManager,
|
|
25
|
+
schedulerToolsFactory: () => schedulerToolsFactory,
|
|
26
|
+
unregisterSchedulerManager: () => unregisterSchedulerManager
|
|
25
27
|
});
|
|
26
28
|
module.exports = __toCommonJS(tool_provider_exports);
|
|
27
29
|
var import_core = require("@dexto/core");
|
|
@@ -39,6 +41,17 @@ const schedulerManagerRegistry = /* @__PURE__ */ new Map();
|
|
|
39
41
|
const schedulerConfigRegistry = /* @__PURE__ */ new Map();
|
|
40
42
|
const schedulerManagerInitPromises = /* @__PURE__ */ new Map();
|
|
41
43
|
let defaultSchedulerConfig;
|
|
44
|
+
function registerSchedulerManager(agentId, manager, config) {
|
|
45
|
+
schedulerManagerRegistry.set(agentId, manager);
|
|
46
|
+
if (config) {
|
|
47
|
+
schedulerConfigRegistry.set(agentId, config);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function unregisterSchedulerManager(agentId) {
|
|
51
|
+
schedulerManagerRegistry.delete(agentId);
|
|
52
|
+
schedulerConfigRegistry.delete(agentId);
|
|
53
|
+
schedulerManagerInitPromises.delete(agentId);
|
|
54
|
+
}
|
|
42
55
|
function getSchedulerManager(agentId) {
|
|
43
56
|
return schedulerManagerRegistry.get(agentId);
|
|
44
57
|
}
|
|
@@ -235,5 +248,7 @@ const schedulerToolsFactory = {
|
|
|
235
248
|
createSchedulerTools,
|
|
236
249
|
ensureSchedulerManagerForAgent,
|
|
237
250
|
getSchedulerManager,
|
|
238
|
-
|
|
251
|
+
registerSchedulerManager,
|
|
252
|
+
schedulerToolsFactory,
|
|
253
|
+
unregisterSchedulerManager
|
|
239
254
|
});
|
package/dist/tool-provider.d.cts
CHANGED
|
@@ -12,6 +12,14 @@ import './types.cjs';
|
|
|
12
12
|
* When a scheduled task triggers, it invokes the agent with the task instruction.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Register an externally managed scheduler manager (e.g., runtime-owned service).
|
|
17
|
+
*/
|
|
18
|
+
declare function registerSchedulerManager(agentId: string, manager: SchedulerManager, config?: SchedulerToolsConfig): void;
|
|
19
|
+
/**
|
|
20
|
+
* Unregister a scheduler manager and associated config.
|
|
21
|
+
*/
|
|
22
|
+
declare function unregisterSchedulerManager(agentId: string): void;
|
|
15
23
|
/**
|
|
16
24
|
* Get a scheduler manager instance by agent ID.
|
|
17
25
|
* Returns undefined if no scheduler is registered for the agent.
|
|
@@ -31,4 +39,4 @@ declare function createSchedulerTools(manager: SchedulerManager): Tool[];
|
|
|
31
39
|
*/
|
|
32
40
|
declare const schedulerToolsFactory: ToolFactory<SchedulerToolsConfig>;
|
|
33
41
|
|
|
34
|
-
export { createSchedulerTools, ensureSchedulerManagerForAgent, getSchedulerManager, schedulerToolsFactory };
|
|
42
|
+
export { createSchedulerTools, ensureSchedulerManagerForAgent, getSchedulerManager, registerSchedulerManager, schedulerToolsFactory, unregisterSchedulerManager };
|
package/dist/tool-provider.d.ts
CHANGED
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
import { ToolFactory } from '@dexto/agent-config';
|
|
2
|
-
import { ToolExecutionContext, Logger, Tool } from '@dexto/core';
|
|
3
|
-
import { SchedulerToolsConfig } from './schemas.js';
|
|
4
|
-
import { SchedulerManager } from './manager.js';
|
|
5
|
-
import 'zod';
|
|
6
|
-
import './types.js';
|
|
7
|
-
|
|
8
1
|
/**
|
|
9
2
|
* Scheduler Tools Factory
|
|
10
3
|
*
|
|
11
4
|
* Provides cron-based scheduling capabilities for proactive agent behavior.
|
|
12
5
|
* When a scheduled task triggers, it invokes the agent with the task instruction.
|
|
13
6
|
*/
|
|
14
|
-
|
|
7
|
+
import type { ToolFactory } from '@dexto/agent-config';
|
|
8
|
+
import type { Tool, ToolExecutionContext, Logger } from '@dexto/core';
|
|
9
|
+
import { type SchedulerToolsConfig } from './schemas.js';
|
|
10
|
+
import { SchedulerManager } from './manager.js';
|
|
11
|
+
/**
|
|
12
|
+
* Register an externally managed scheduler manager (e.g., runtime-owned service).
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerSchedulerManager(agentId: string, manager: SchedulerManager, config?: SchedulerToolsConfig): void;
|
|
15
|
+
/**
|
|
16
|
+
* Unregister a scheduler manager and associated config.
|
|
17
|
+
*/
|
|
18
|
+
export declare function unregisterSchedulerManager(agentId: string): void;
|
|
15
19
|
/**
|
|
16
20
|
* Get a scheduler manager instance by agent ID.
|
|
17
21
|
* Returns undefined if no scheduler is registered for the agent.
|
|
18
22
|
*/
|
|
19
|
-
declare function getSchedulerManager(agentId: string): SchedulerManager | undefined;
|
|
23
|
+
export declare function getSchedulerManager(agentId: string): SchedulerManager | undefined;
|
|
20
24
|
/**
|
|
21
25
|
* Ensure a scheduler manager is available for the given agent.
|
|
22
26
|
* Returns null if scheduler tools are not enabled in this process.
|
|
23
27
|
*/
|
|
24
|
-
declare function ensureSchedulerManagerForAgent(agent: ToolExecutionContext['agent'], config?: SchedulerToolsConfig, loggerOverride?: Logger): Promise<SchedulerManager | null>;
|
|
28
|
+
export declare function ensureSchedulerManagerForAgent(agent: ToolExecutionContext['agent'], config?: SchedulerToolsConfig, loggerOverride?: Logger): Promise<SchedulerManager | null>;
|
|
25
29
|
/**
|
|
26
30
|
* Create scheduler tools from an existing manager instance.
|
|
27
31
|
*/
|
|
28
|
-
declare function createSchedulerTools(manager: SchedulerManager): Tool[];
|
|
32
|
+
export declare function createSchedulerTools(manager: SchedulerManager): Tool[];
|
|
29
33
|
/**
|
|
30
34
|
* Scheduler tools factory for Dexto agents.
|
|
31
35
|
*/
|
|
32
|
-
declare const schedulerToolsFactory: ToolFactory<SchedulerToolsConfig>;
|
|
33
|
-
|
|
34
|
-
export { createSchedulerTools, ensureSchedulerManagerForAgent, getSchedulerManager, schedulerToolsFactory };
|
|
36
|
+
export declare const schedulerToolsFactory: ToolFactory<SchedulerToolsConfig>;
|
|
37
|
+
//# sourceMappingURL=tool-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-provider.d.ts","sourceRoot":"","sources":["../src/tool-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAqBhD;;GAEG;AACH,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,oBAAoB,GAC9B,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEjF;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CAChD,KAAK,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACpC,MAAM,CAAC,EAAE,oBAAoB,EAC7B,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAwKlC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAAE,CAUtE;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,oBAAoB,CAwCnE,CAAC"}
|
package/dist/tool-provider.js
CHANGED
|
@@ -13,6 +13,17 @@ const schedulerManagerRegistry = /* @__PURE__ */ new Map();
|
|
|
13
13
|
const schedulerConfigRegistry = /* @__PURE__ */ new Map();
|
|
14
14
|
const schedulerManagerInitPromises = /* @__PURE__ */ new Map();
|
|
15
15
|
let defaultSchedulerConfig;
|
|
16
|
+
function registerSchedulerManager(agentId, manager, config) {
|
|
17
|
+
schedulerManagerRegistry.set(agentId, manager);
|
|
18
|
+
if (config) {
|
|
19
|
+
schedulerConfigRegistry.set(agentId, config);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function unregisterSchedulerManager(agentId) {
|
|
23
|
+
schedulerManagerRegistry.delete(agentId);
|
|
24
|
+
schedulerConfigRegistry.delete(agentId);
|
|
25
|
+
schedulerManagerInitPromises.delete(agentId);
|
|
26
|
+
}
|
|
16
27
|
function getSchedulerManager(agentId) {
|
|
17
28
|
return schedulerManagerRegistry.get(agentId);
|
|
18
29
|
}
|
|
@@ -208,5 +219,7 @@ export {
|
|
|
208
219
|
createSchedulerTools,
|
|
209
220
|
ensureSchedulerManagerForAgent,
|
|
210
221
|
getSchedulerManager,
|
|
211
|
-
|
|
222
|
+
registerSchedulerManager,
|
|
223
|
+
schedulerToolsFactory,
|
|
224
|
+
unregisterSchedulerManager
|
|
212
225
|
};
|
package/dist/tool-types.d.ts
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import { ToolExecutionContext } from '@dexto/core';
|
|
2
|
-
import { SchedulerManager } from './manager.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import './types.js';
|
|
6
|
-
|
|
7
|
-
type SchedulerManagerGetter = (context: ToolExecutionContext) => Promise<SchedulerManager>;
|
|
8
|
-
|
|
9
|
-
export type { SchedulerManagerGetter };
|
|
1
|
+
import type { ToolExecutionContext } from '@dexto/core';
|
|
2
|
+
import type { SchedulerManager } from './manager.js';
|
|
3
|
+
export type SchedulerManagerGetter = (context: ToolExecutionContext) => Promise<SchedulerManager>;
|
|
4
|
+
//# sourceMappingURL=tool-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-types.d.ts","sourceRoot":"","sources":["../src/tool-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import { Tool } from '@dexto/core';
|
|
2
|
-
import { SchedulerManagerGetter } from '../tool-types.js';
|
|
3
|
-
import '../manager.js';
|
|
4
|
-
import '../schemas.js';
|
|
5
|
-
import 'zod';
|
|
6
|
-
import '../types.js';
|
|
7
|
-
|
|
8
1
|
/**
|
|
9
2
|
* Tool for creating schedules
|
|
10
3
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
import type { Tool } from '@dexto/core';
|
|
5
|
+
import type { SchedulerManagerGetter } from '../tool-types.js';
|
|
6
|
+
export declare function createCreateScheduleTool(getManager: SchedulerManagerGetter): Tool;
|
|
7
|
+
//# sourceMappingURL=create-schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-schedule.d.ts","sourceRoot":"","sources":["../../src/tools/create-schedule.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CA6DjF"}
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import { Tool } from '@dexto/core';
|
|
2
|
-
import { SchedulerManagerGetter } from '../tool-types.js';
|
|
3
|
-
import '../manager.js';
|
|
4
|
-
import '../schemas.js';
|
|
5
|
-
import 'zod';
|
|
6
|
-
import '../types.js';
|
|
7
|
-
|
|
8
1
|
/**
|
|
9
2
|
* Tool for deleting schedules
|
|
10
3
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
import type { Tool } from '@dexto/core';
|
|
5
|
+
import type { SchedulerManagerGetter } from '../tool-types.js';
|
|
6
|
+
export declare function createDeleteScheduleTool(getManager: SchedulerManagerGetter): Tool;
|
|
7
|
+
//# sourceMappingURL=delete-schedule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-schedule.d.ts","sourceRoot":"","sources":["../../src/tools/delete-schedule.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,aAAa,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAkBjF"}
|