@herdctl/core 0.0.1 → 0.0.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/config/__tests__/agent.test.js +31 -13
- package/dist/config/__tests__/agent.test.js.map +1 -1
- package/dist/config/__tests__/merge.test.js +9 -2
- package/dist/config/__tests__/merge.test.js.map +1 -1
- package/dist/config/__tests__/schema.test.js +350 -1
- package/dist/config/__tests__/schema.test.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +3 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +828 -24
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +118 -6
- package/dist/config/schema.js.map +1 -1
- package/dist/fleet-manager/__tests__/coverage.test.js +11 -332
- package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/errors.test.js +1 -49
- package/dist/fleet-manager/__tests__/errors.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/integration.test.js +109 -0
- package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/reload.test.js +1 -1
- package/dist/fleet-manager/__tests__/reload.test.js.map +1 -1
- package/dist/fleet-manager/config-reload.d.ts +164 -0
- package/dist/fleet-manager/config-reload.d.ts.map +1 -0
- package/dist/fleet-manager/config-reload.js +445 -0
- package/dist/fleet-manager/config-reload.js.map +1 -0
- package/dist/fleet-manager/context.d.ts +76 -0
- package/dist/fleet-manager/context.d.ts.map +1 -0
- package/dist/fleet-manager/context.js +11 -0
- package/dist/fleet-manager/context.js.map +1 -0
- package/dist/fleet-manager/errors.d.ts +0 -25
- package/dist/fleet-manager/errors.d.ts.map +1 -1
- package/dist/fleet-manager/errors.js +0 -38
- package/dist/fleet-manager/errors.js.map +1 -1
- package/dist/fleet-manager/event-emitters.d.ts +123 -0
- package/dist/fleet-manager/event-emitters.d.ts.map +1 -0
- package/dist/fleet-manager/event-emitters.js +136 -0
- package/dist/fleet-manager/event-emitters.js.map +1 -0
- package/dist/fleet-manager/event-types.d.ts +0 -15
- package/dist/fleet-manager/event-types.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.d.ts +40 -653
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +95 -1720
- package/dist/fleet-manager/fleet-manager.js.map +1 -1
- package/dist/fleet-manager/index.d.ts +13 -2
- package/dist/fleet-manager/index.d.ts.map +1 -1
- package/dist/fleet-manager/index.js +19 -6
- package/dist/fleet-manager/index.js.map +1 -1
- package/dist/fleet-manager/job-control.d.ts +64 -0
- package/dist/fleet-manager/job-control.d.ts.map +1 -0
- package/dist/fleet-manager/job-control.js +296 -0
- package/dist/fleet-manager/job-control.js.map +1 -0
- package/dist/fleet-manager/log-streaming.d.ts +171 -0
- package/dist/fleet-manager/log-streaming.d.ts.map +1 -0
- package/dist/fleet-manager/log-streaming.js +503 -0
- package/dist/fleet-manager/log-streaming.js.map +1 -0
- package/dist/fleet-manager/schedule-executor.d.ts +63 -0
- package/dist/fleet-manager/schedule-executor.d.ts.map +1 -0
- package/dist/fleet-manager/schedule-executor.js +209 -0
- package/dist/fleet-manager/schedule-executor.js.map +1 -0
- package/dist/fleet-manager/schedule-management.d.ts +71 -0
- package/dist/fleet-manager/schedule-management.d.ts.map +1 -0
- package/dist/fleet-manager/schedule-management.js +171 -0
- package/dist/fleet-manager/schedule-management.js.map +1 -0
- package/dist/fleet-manager/status-queries.d.ts +105 -0
- package/dist/fleet-manager/status-queries.d.ts.map +1 -0
- package/dist/fleet-manager/status-queries.js +247 -0
- package/dist/fleet-manager/status-queries.js.map +1 -0
- package/dist/fleet-manager/types.d.ts +0 -39
- package/dist/fleet-manager/types.d.ts.map +1 -1
- package/dist/runner/__tests__/job-executor.test.js +206 -1
- package/dist/runner/__tests__/job-executor.test.js.map +1 -1
- package/dist/runner/job-executor.d.ts +9 -0
- package/dist/runner/job-executor.d.ts.map +1 -1
- package/dist/runner/job-executor.js +78 -4
- package/dist/runner/job-executor.js.map +1 -1
- package/dist/runner/types.d.ts +2 -0
- package/dist/runner/types.d.ts.map +1 -1
- package/dist/scheduler/__tests__/cron.test.d.ts +2 -0
- package/dist/scheduler/__tests__/cron.test.d.ts.map +1 -0
- package/dist/scheduler/__tests__/cron.test.js +867 -0
- package/dist/scheduler/__tests__/cron.test.js.map +1 -0
- package/dist/scheduler/__tests__/scheduler.test.js +164 -5
- package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
- package/dist/scheduler/cron.d.ts +126 -0
- package/dist/scheduler/cron.d.ts.map +1 -0
- package/dist/scheduler/cron.js +390 -0
- package/dist/scheduler/cron.js.map +1 -0
- package/dist/scheduler/errors.d.ts +81 -1
- package/dist/scheduler/errors.d.ts.map +1 -1
- package/dist/scheduler/errors.js +81 -6
- package/dist/scheduler/errors.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +2 -0
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/schedule-runner.d.ts +2 -2
- package/dist/scheduler/schedule-runner.d.ts.map +1 -1
- package/dist/scheduler/schedule-runner.js +20 -8
- package/dist/scheduler/schedule-runner.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +4 -4
- package/dist/scheduler/scheduler.d.ts.map +1 -1
- package/dist/scheduler/scheduler.js +86 -20
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/state/schemas/job-metadata.d.ts +2 -2
- package/package.json +33 -8
- package/.turbo/turbo-build.log +0 -4
- package/.turbo/turbo-test.log +0 -219
- package/.turbo/turbo-typecheck.log +0 -4
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -51
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -251
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/config/index.html +0 -191
- package/coverage/src/config/index.ts.html +0 -442
- package/coverage/src/config/interpolate.ts.html +0 -652
- package/coverage/src/config/loader.ts.html +0 -1501
- package/coverage/src/config/merge.ts.html +0 -823
- package/coverage/src/config/parser.ts.html +0 -1213
- package/coverage/src/config/schema.ts.html +0 -1123
- package/coverage/src/fleet-manager/errors.ts.html +0 -2326
- package/coverage/src/fleet-manager/event-types.ts.html +0 -1219
- package/coverage/src/fleet-manager/fleet-manager.ts.html +0 -7030
- package/coverage/src/fleet-manager/index.html +0 -206
- package/coverage/src/fleet-manager/index.ts.html +0 -469
- package/coverage/src/fleet-manager/job-manager.ts.html +0 -2074
- package/coverage/src/fleet-manager/job-queue.ts.html +0 -2479
- package/coverage/src/fleet-manager/types.ts.html +0 -2602
- package/coverage/src/index.html +0 -116
- package/coverage/src/index.ts.html +0 -181
- package/coverage/src/runner/errors.ts.html +0 -1006
- package/coverage/src/runner/index.html +0 -191
- package/coverage/src/runner/index.ts.html +0 -256
- package/coverage/src/runner/job-executor.ts.html +0 -1429
- package/coverage/src/runner/message-processor.ts.html +0 -1150
- package/coverage/src/runner/sdk-adapter.ts.html +0 -658
- package/coverage/src/runner/types.ts.html +0 -559
- package/coverage/src/scheduler/errors.ts.html +0 -388
- package/coverage/src/scheduler/index.html +0 -206
- package/coverage/src/scheduler/index.ts.html +0 -244
- package/coverage/src/scheduler/interval.ts.html +0 -652
- package/coverage/src/scheduler/schedule-runner.ts.html +0 -1411
- package/coverage/src/scheduler/schedule-state.ts.html +0 -718
- package/coverage/src/scheduler/scheduler.ts.html +0 -1795
- package/coverage/src/scheduler/types.ts.html +0 -733
- package/coverage/src/state/directory.ts.html +0 -736
- package/coverage/src/state/errors.ts.html +0 -376
- package/coverage/src/state/fleet-state.ts.html +0 -937
- package/coverage/src/state/index.html +0 -221
- package/coverage/src/state/index.ts.html +0 -322
- package/coverage/src/state/job-metadata.ts.html +0 -1420
- package/coverage/src/state/job-output.ts.html +0 -1033
- package/coverage/src/state/schemas/fleet-state.ts.html +0 -445
- package/coverage/src/state/schemas/index.html +0 -176
- package/coverage/src/state/schemas/index.ts.html +0 -286
- package/coverage/src/state/schemas/job-metadata.ts.html +0 -628
- package/coverage/src/state/schemas/job-output.ts.html +0 -616
- package/coverage/src/state/schemas/session-info.ts.html +0 -361
- package/coverage/src/state/session.ts.html +0 -844
- package/coverage/src/state/types.ts.html +0 -262
- package/coverage/src/state/utils/atomic.ts.html +0 -748
- package/coverage/src/state/utils/index.html +0 -146
- package/coverage/src/state/utils/index.ts.html +0 -103
- package/coverage/src/state/utils/reads.ts.html +0 -1621
- package/coverage/src/work-sources/adapters/github.ts.html +0 -3583
- package/coverage/src/work-sources/adapters/index.html +0 -131
- package/coverage/src/work-sources/adapters/index.ts.html +0 -277
- package/coverage/src/work-sources/errors.ts.html +0 -298
- package/coverage/src/work-sources/index.html +0 -176
- package/coverage/src/work-sources/index.ts.html +0 -529
- package/coverage/src/work-sources/manager.ts.html +0 -1324
- package/coverage/src/work-sources/registry.ts.html +0 -619
- package/coverage/src/work-sources/types.ts.html +0 -568
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +0 -7
- package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +0 -1
- package/dist/fleet-manager/__tests__/event-helpers.test.js +0 -368
- package/dist/fleet-manager/__tests__/event-helpers.test.js.map +0 -1
- package/src/config/__tests__/agent.test.ts +0 -864
- package/src/config/__tests__/interpolate.test.ts +0 -644
- package/src/config/__tests__/loader.test.ts +0 -784
- package/src/config/__tests__/merge.test.ts +0 -751
- package/src/config/__tests__/parser.test.ts +0 -533
- package/src/config/__tests__/schema.test.ts +0 -873
- package/src/config/index.ts +0 -119
- package/src/config/interpolate.ts +0 -189
- package/src/config/loader.ts +0 -472
- package/src/config/merge.ts +0 -246
- package/src/config/parser.ts +0 -376
- package/src/config/schema.ts +0 -346
- package/src/fleet-manager/__tests__/coverage.test.ts +0 -2869
- package/src/fleet-manager/__tests__/errors.test.ts +0 -660
- package/src/fleet-manager/__tests__/event-helpers.test.ts +0 -448
- package/src/fleet-manager/__tests__/integration.test.ts +0 -1209
- package/src/fleet-manager/__tests__/job-control.test.ts +0 -283
- package/src/fleet-manager/__tests__/job-manager.test.ts +0 -869
- package/src/fleet-manager/__tests__/job-queue.test.ts +0 -401
- package/src/fleet-manager/__tests__/reload.test.ts +0 -751
- package/src/fleet-manager/__tests__/status-queries.test.ts +0 -595
- package/src/fleet-manager/__tests__/trigger.test.ts +0 -601
- package/src/fleet-manager/errors.ts +0 -747
- package/src/fleet-manager/event-types.ts +0 -378
- package/src/fleet-manager/fleet-manager.ts +0 -2315
- package/src/fleet-manager/index.ts +0 -128
- package/src/fleet-manager/job-manager.ts +0 -663
- package/src/fleet-manager/job-queue.ts +0 -798
- package/src/fleet-manager/types.ts +0 -839
- package/src/index.ts +0 -32
- package/src/runner/__tests__/errors.test.ts +0 -382
- package/src/runner/__tests__/job-executor.test.ts +0 -1708
- package/src/runner/__tests__/message-processor.test.ts +0 -960
- package/src/runner/__tests__/sdk-adapter.test.ts +0 -626
- package/src/runner/errors.ts +0 -307
- package/src/runner/index.ts +0 -57
- package/src/runner/job-executor.ts +0 -448
- package/src/runner/message-processor.ts +0 -355
- package/src/runner/sdk-adapter.ts +0 -191
- package/src/runner/types.ts +0 -158
- package/src/scheduler/__tests__/errors.test.ts +0 -159
- package/src/scheduler/__tests__/interval.test.ts +0 -515
- package/src/scheduler/__tests__/schedule-runner.test.ts +0 -798
- package/src/scheduler/__tests__/schedule-state.test.ts +0 -671
- package/src/scheduler/__tests__/scheduler.test.ts +0 -1280
- package/src/scheduler/errors.ts +0 -101
- package/src/scheduler/index.ts +0 -53
- package/src/scheduler/interval.ts +0 -189
- package/src/scheduler/schedule-runner.ts +0 -442
- package/src/scheduler/schedule-state.ts +0 -211
- package/src/scheduler/scheduler.ts +0 -570
- package/src/scheduler/types.ts +0 -216
- package/src/state/__tests__/directory.test.ts +0 -595
- package/src/state/__tests__/fleet-state.test.ts +0 -868
- package/src/state/__tests__/job-metadata-schema.test.ts +0 -414
- package/src/state/__tests__/job-metadata.test.ts +0 -831
- package/src/state/__tests__/job-output.test.ts +0 -856
- package/src/state/__tests__/session-schema.test.ts +0 -378
- package/src/state/__tests__/session.test.ts +0 -604
- package/src/state/directory.ts +0 -217
- package/src/state/errors.ts +0 -97
- package/src/state/fleet-state.ts +0 -284
- package/src/state/index.ts +0 -79
- package/src/state/job-metadata.ts +0 -445
- package/src/state/job-output.ts +0 -316
- package/src/state/schemas/__tests__/job-output.test.ts +0 -338
- package/src/state/schemas/fleet-state.ts +0 -120
- package/src/state/schemas/index.ts +0 -67
- package/src/state/schemas/job-metadata.ts +0 -181
- package/src/state/schemas/job-output.ts +0 -177
- package/src/state/schemas/session-info.ts +0 -92
- package/src/state/session.ts +0 -253
- package/src/state/types.ts +0 -59
- package/src/state/utils/__tests__/atomic.test.ts +0 -723
- package/src/state/utils/__tests__/reads.test.ts +0 -1071
- package/src/state/utils/atomic.ts +0 -221
- package/src/state/utils/index.ts +0 -6
- package/src/state/utils/reads.ts +0 -512
- package/src/work-sources/__tests__/github.test.ts +0 -1800
- package/src/work-sources/__tests__/manager.test.ts +0 -529
- package/src/work-sources/__tests__/registry.test.ts +0 -477
- package/src/work-sources/__tests__/types.test.ts +0 -479
- package/src/work-sources/adapters/github.ts +0 -1166
- package/src/work-sources/adapters/index.ts +0 -64
- package/src/work-sources/errors.ts +0 -71
- package/src/work-sources/index.ts +0 -148
- package/src/work-sources/manager.ts +0 -413
- package/src/work-sources/registry.ts +0 -178
- package/src/work-sources/types.ts +0 -161
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-streaming.js","sourceRoot":"","sources":["../../src/fleet-manager/log-streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Executor Module
|
|
3
|
+
*
|
|
4
|
+
* Handles the execution of scheduled jobs when triggered by the Scheduler.
|
|
5
|
+
* This module is responsible for:
|
|
6
|
+
* - Receiving schedule triggers from the Scheduler
|
|
7
|
+
* - Creating and executing jobs via JobExecutor
|
|
8
|
+
* - Emitting appropriate events during job execution
|
|
9
|
+
* - Handling errors gracefully without crashing the fleet
|
|
10
|
+
*
|
|
11
|
+
* @module schedule-executor
|
|
12
|
+
*/
|
|
13
|
+
import type { TriggerInfo } from "../scheduler/index.js";
|
|
14
|
+
import type { FleetManagerContext } from "./context.js";
|
|
15
|
+
/**
|
|
16
|
+
* ScheduleExecutor handles the execution of scheduled jobs
|
|
17
|
+
*
|
|
18
|
+
* This class encapsulates the logic that was previously in handleScheduleTrigger,
|
|
19
|
+
* providing a cleaner separation of concerns.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ScheduleExecutor {
|
|
22
|
+
private ctx;
|
|
23
|
+
constructor(ctx: FleetManagerContext);
|
|
24
|
+
/**
|
|
25
|
+
* Execute a scheduled trigger
|
|
26
|
+
*
|
|
27
|
+
* This method executes the agent via JobExecutor when a schedule triggers.
|
|
28
|
+
* It:
|
|
29
|
+
* 1. Emits schedule:triggered event
|
|
30
|
+
* 2. Creates and executes a job via JobExecutor
|
|
31
|
+
* 3. Streams job:output events during execution
|
|
32
|
+
* 4. Emits job:completed or job:failed events when done
|
|
33
|
+
* 5. Handles errors gracefully without crashing the fleet
|
|
34
|
+
*
|
|
35
|
+
* @param info - Trigger information from the Scheduler
|
|
36
|
+
*/
|
|
37
|
+
executeSchedule(info: TriggerInfo): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Map SDK message type to job output type
|
|
40
|
+
*/
|
|
41
|
+
private mapMessageTypeToOutputType;
|
|
42
|
+
/**
|
|
43
|
+
* Extract content string from SDK message
|
|
44
|
+
*/
|
|
45
|
+
private extractMessageContent;
|
|
46
|
+
/**
|
|
47
|
+
* Emit a job:created event
|
|
48
|
+
*/
|
|
49
|
+
private emitJobCreated;
|
|
50
|
+
/**
|
|
51
|
+
* Emit a job:output event
|
|
52
|
+
*/
|
|
53
|
+
private emitJobOutput;
|
|
54
|
+
/**
|
|
55
|
+
* Emit a job:completed event
|
|
56
|
+
*/
|
|
57
|
+
private emitJobCompleted;
|
|
58
|
+
/**
|
|
59
|
+
* Emit a job:failed event
|
|
60
|
+
*/
|
|
61
|
+
private emitJobFailed;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=schedule-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-executor.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/schedule-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkBxD;;;;;GAKG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAE5C;;;;;;;;;;;;OAYG;IACG,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAkHvD;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAkBlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Executor Module
|
|
3
|
+
*
|
|
4
|
+
* Handles the execution of scheduled jobs when triggered by the Scheduler.
|
|
5
|
+
* This module is responsible for:
|
|
6
|
+
* - Receiving schedule triggers from the Scheduler
|
|
7
|
+
* - Creating and executing jobs via JobExecutor
|
|
8
|
+
* - Emitting appropriate events during job execution
|
|
9
|
+
* - Handling errors gracefully without crashing the fleet
|
|
10
|
+
*
|
|
11
|
+
* @module schedule-executor
|
|
12
|
+
*/
|
|
13
|
+
import { join } from "node:path";
|
|
14
|
+
import { query as claudeSdkQuery } from "@anthropic-ai/claude-agent-sdk";
|
|
15
|
+
import { JobExecutor } from "../runner/index.js";
|
|
16
|
+
import { getJob } from "../state/index.js";
|
|
17
|
+
// Cast the SDK query function to our internal type
|
|
18
|
+
// The SDK types are slightly different but runtime-compatible
|
|
19
|
+
const sdkQuery = claudeSdkQuery;
|
|
20
|
+
import { emitJobCreated as emitJobCreatedFn, emitJobOutput as emitJobOutputFn, emitJobCompleted as emitJobCompletedFn, emitJobFailed as emitJobFailedFn, } from "./event-emitters.js";
|
|
21
|
+
/**
|
|
22
|
+
* ScheduleExecutor handles the execution of scheduled jobs
|
|
23
|
+
*
|
|
24
|
+
* This class encapsulates the logic that was previously in handleScheduleTrigger,
|
|
25
|
+
* providing a cleaner separation of concerns.
|
|
26
|
+
*/
|
|
27
|
+
export class ScheduleExecutor {
|
|
28
|
+
ctx;
|
|
29
|
+
constructor(ctx) {
|
|
30
|
+
this.ctx = ctx;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Execute a scheduled trigger
|
|
34
|
+
*
|
|
35
|
+
* This method executes the agent via JobExecutor when a schedule triggers.
|
|
36
|
+
* It:
|
|
37
|
+
* 1. Emits schedule:triggered event
|
|
38
|
+
* 2. Creates and executes a job via JobExecutor
|
|
39
|
+
* 3. Streams job:output events during execution
|
|
40
|
+
* 4. Emits job:completed or job:failed events when done
|
|
41
|
+
* 5. Handles errors gracefully without crashing the fleet
|
|
42
|
+
*
|
|
43
|
+
* @param info - Trigger information from the Scheduler
|
|
44
|
+
*/
|
|
45
|
+
async executeSchedule(info) {
|
|
46
|
+
const { agent, scheduleName, schedule } = info;
|
|
47
|
+
const timestamp = new Date().toISOString();
|
|
48
|
+
const logger = this.ctx.getLogger();
|
|
49
|
+
const emitter = this.ctx.getEmitter();
|
|
50
|
+
const stateDir = this.ctx.getStateDir();
|
|
51
|
+
logger.info(`Triggering ${agent.name}/${scheduleName}`);
|
|
52
|
+
// Emit typed event with full payload
|
|
53
|
+
emitter.emit("schedule:triggered", {
|
|
54
|
+
agentName: agent.name,
|
|
55
|
+
scheduleName,
|
|
56
|
+
schedule,
|
|
57
|
+
timestamp,
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
// Determine the prompt to use (schedule.prompt is the primary source,
|
|
61
|
+
// agent.system_prompt provides agent context but isn't the task prompt)
|
|
62
|
+
const prompt = schedule.prompt ?? "Execute your configured task";
|
|
63
|
+
logger.debug(`Schedule ${scheduleName} triggered for agent ${agent.name} ` +
|
|
64
|
+
`(type: ${schedule.type}, prompt: ${prompt.slice(0, 50)}...)`);
|
|
65
|
+
// Create the JobExecutor with the Claude SDK query function
|
|
66
|
+
const executor = new JobExecutor(sdkQuery, {
|
|
67
|
+
logger,
|
|
68
|
+
});
|
|
69
|
+
// Track whether we've emitted the job:created event
|
|
70
|
+
let jobId;
|
|
71
|
+
// Execute the job with streaming output
|
|
72
|
+
const result = await executor.execute({
|
|
73
|
+
agent,
|
|
74
|
+
prompt,
|
|
75
|
+
stateDir,
|
|
76
|
+
triggerType: "schedule",
|
|
77
|
+
schedule: scheduleName,
|
|
78
|
+
outputToFile: schedule.outputToFile ?? false,
|
|
79
|
+
onMessage: async (message) => {
|
|
80
|
+
// Emit job:output events for real-time streaming
|
|
81
|
+
if (jobId) {
|
|
82
|
+
const outputType = this.mapMessageTypeToOutputType(message.type);
|
|
83
|
+
const outputContent = this.extractMessageContent(message);
|
|
84
|
+
if (outputContent) {
|
|
85
|
+
this.emitJobOutput({
|
|
86
|
+
jobId,
|
|
87
|
+
agentName: agent.name,
|
|
88
|
+
output: outputContent,
|
|
89
|
+
outputType,
|
|
90
|
+
timestamp: new Date().toISOString(),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
// Store the jobId for reference
|
|
97
|
+
jobId = result.jobId;
|
|
98
|
+
// Emit job:created event now that we have the job info
|
|
99
|
+
const jobsDir = join(stateDir, "jobs");
|
|
100
|
+
const jobMetadata = await getJob(jobsDir, result.jobId, { logger });
|
|
101
|
+
if (jobMetadata) {
|
|
102
|
+
this.emitJobCreated({
|
|
103
|
+
job: jobMetadata,
|
|
104
|
+
agentName: agent.name,
|
|
105
|
+
scheduleName,
|
|
106
|
+
timestamp: new Date().toISOString(),
|
|
107
|
+
});
|
|
108
|
+
// Emit completion or failure event based on result
|
|
109
|
+
if (result.success) {
|
|
110
|
+
this.emitJobCompleted({
|
|
111
|
+
job: jobMetadata,
|
|
112
|
+
agentName: agent.name,
|
|
113
|
+
exitReason: "success",
|
|
114
|
+
durationSeconds: result.durationSeconds ?? 0,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
});
|
|
117
|
+
logger.info(`Job ${result.jobId} completed successfully for ${agent.name}/${scheduleName} ` +
|
|
118
|
+
`(${result.durationSeconds}s)`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const error = result.error ?? new Error("Job failed without error details");
|
|
122
|
+
this.emitJobFailed({
|
|
123
|
+
job: jobMetadata,
|
|
124
|
+
agentName: agent.name,
|
|
125
|
+
error,
|
|
126
|
+
exitReason: "error",
|
|
127
|
+
durationSeconds: result.durationSeconds,
|
|
128
|
+
timestamp: new Date().toISOString(),
|
|
129
|
+
});
|
|
130
|
+
logger.warn(`Job ${result.jobId} failed for ${agent.name}/${scheduleName}: ${error.message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
136
|
+
logger.error(`Error in ${agent.name}/${scheduleName}: ${err.message}`);
|
|
137
|
+
// Don't re-throw - we want to continue running the fleet even if a job fails
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Map SDK message type to job output type
|
|
142
|
+
*/
|
|
143
|
+
mapMessageTypeToOutputType(messageType) {
|
|
144
|
+
switch (messageType) {
|
|
145
|
+
case "assistant":
|
|
146
|
+
return "assistant";
|
|
147
|
+
case "tool_use":
|
|
148
|
+
case "tool_result":
|
|
149
|
+
return "tool";
|
|
150
|
+
case "system":
|
|
151
|
+
return "system";
|
|
152
|
+
case "error":
|
|
153
|
+
return "stderr";
|
|
154
|
+
default:
|
|
155
|
+
return "stdout";
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Extract content string from SDK message
|
|
160
|
+
*/
|
|
161
|
+
extractMessageContent(message) {
|
|
162
|
+
// Handle different message types
|
|
163
|
+
if (message.content && typeof message.content === "string") {
|
|
164
|
+
return message.content;
|
|
165
|
+
}
|
|
166
|
+
if (message.message && typeof message.message === "string") {
|
|
167
|
+
return message.message;
|
|
168
|
+
}
|
|
169
|
+
// For tool_use messages, stringify the input
|
|
170
|
+
if (message.type === "tool_use" && message.name && message.input) {
|
|
171
|
+
return `Tool: ${message.name}\n${JSON.stringify(message.input, null, 2)}`;
|
|
172
|
+
}
|
|
173
|
+
// For tool_result messages
|
|
174
|
+
if (message.type === "tool_result" && message.content) {
|
|
175
|
+
return typeof message.content === "string"
|
|
176
|
+
? message.content
|
|
177
|
+
: JSON.stringify(message.content);
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
// ===========================================================================
|
|
182
|
+
// Event Emission Helpers
|
|
183
|
+
// ===========================================================================
|
|
184
|
+
/**
|
|
185
|
+
* Emit a job:created event
|
|
186
|
+
*/
|
|
187
|
+
emitJobCreated(payload) {
|
|
188
|
+
emitJobCreatedFn(this.ctx.getEmitter(), payload);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Emit a job:output event
|
|
192
|
+
*/
|
|
193
|
+
emitJobOutput(payload) {
|
|
194
|
+
emitJobOutputFn(this.ctx.getEmitter(), payload);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Emit a job:completed event
|
|
198
|
+
*/
|
|
199
|
+
emitJobCompleted(payload) {
|
|
200
|
+
emitJobCompletedFn(this.ctx.getEmitter(), payload);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Emit a job:failed event
|
|
204
|
+
*/
|
|
205
|
+
emitJobFailed(payload) {
|
|
206
|
+
emitJobFailedFn(this.ctx.getEmitter(), payload);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=schedule-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-executor.js","sourceRoot":"","sources":["../../src/fleet-manager/schedule-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Management Module
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all schedule management logic for FleetManager.
|
|
5
|
+
* Provides methods to query, enable, and disable schedules.
|
|
6
|
+
*
|
|
7
|
+
* @module schedule-management
|
|
8
|
+
*/
|
|
9
|
+
import type { ScheduleInfo } from "./types.js";
|
|
10
|
+
import type { FleetManagerContext } from "./context.js";
|
|
11
|
+
import { type FleetStateSnapshot } from "./status-queries.js";
|
|
12
|
+
/**
|
|
13
|
+
* ScheduleManagement provides all schedule management operations for the FleetManager.
|
|
14
|
+
*
|
|
15
|
+
* This class encapsulates the logic for querying, enabling, and disabling schedules
|
|
16
|
+
* using the FleetManagerContext pattern.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ScheduleManagement {
|
|
19
|
+
private ctx;
|
|
20
|
+
private readFleetStateSnapshotFn;
|
|
21
|
+
constructor(ctx: FleetManagerContext, readFleetStateSnapshotFn: () => Promise<FleetStateSnapshot>);
|
|
22
|
+
/**
|
|
23
|
+
* Get all schedules across all agents
|
|
24
|
+
*
|
|
25
|
+
* Returns a list of all configured schedules with their current state,
|
|
26
|
+
* including next trigger times.
|
|
27
|
+
*
|
|
28
|
+
* @returns Array of ScheduleInfo objects with current state
|
|
29
|
+
*/
|
|
30
|
+
getSchedules(): Promise<ScheduleInfo[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Get a specific schedule by agent name and schedule name
|
|
33
|
+
*
|
|
34
|
+
* @param agentName - The name of the agent
|
|
35
|
+
* @param scheduleName - The name of the schedule
|
|
36
|
+
* @returns The schedule info with current state
|
|
37
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
38
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
39
|
+
*/
|
|
40
|
+
getSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
41
|
+
/**
|
|
42
|
+
* Enable a disabled schedule
|
|
43
|
+
*
|
|
44
|
+
* Enables a schedule that was previously disabled, allowing it to trigger
|
|
45
|
+
* again on its configured interval. The enabled state is persisted to the
|
|
46
|
+
* state directory and survives restarts.
|
|
47
|
+
*
|
|
48
|
+
* @param agentName - The name of the agent
|
|
49
|
+
* @param scheduleName - The name of the schedule
|
|
50
|
+
* @returns The updated schedule info
|
|
51
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
52
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
53
|
+
*/
|
|
54
|
+
enableSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
55
|
+
/**
|
|
56
|
+
* Disable a schedule
|
|
57
|
+
*
|
|
58
|
+
* Disables a schedule, preventing it from triggering on its configured
|
|
59
|
+
* interval. The schedule remains in the configuration but won't run until
|
|
60
|
+
* re-enabled. The disabled state is persisted to the state directory and
|
|
61
|
+
* survives restarts.
|
|
62
|
+
*
|
|
63
|
+
* @param agentName - The name of the agent
|
|
64
|
+
* @param scheduleName - The name of the schedule
|
|
65
|
+
* @returns The updated schedule info
|
|
66
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
67
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
68
|
+
*/
|
|
69
|
+
disableSchedule(agentName: string, scheduleName: string): Promise<ScheduleInfo>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=schedule-management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-management.d.ts","sourceRoot":"","sources":["../../src/fleet-manager/schedule-management.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMrF;;;;;GAKG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,wBAAwB;gBADxB,GAAG,EAAE,mBAAmB,EACxB,wBAAwB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC;IAGrE;;;;;;;OAOG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAgB7C;;;;;;;;OAQG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsCjF;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwCpF;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAuCtF"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schedule Management Module
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all schedule management logic for FleetManager.
|
|
5
|
+
* Provides methods to query, enable, and disable schedules.
|
|
6
|
+
*
|
|
7
|
+
* @module schedule-management
|
|
8
|
+
*/
|
|
9
|
+
import { AgentNotFoundError, ScheduleNotFoundError } from "./errors.js";
|
|
10
|
+
import { buildScheduleInfoList } from "./status-queries.js";
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// ScheduleManagement Class
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* ScheduleManagement provides all schedule management operations for the FleetManager.
|
|
16
|
+
*
|
|
17
|
+
* This class encapsulates the logic for querying, enabling, and disabling schedules
|
|
18
|
+
* using the FleetManagerContext pattern.
|
|
19
|
+
*/
|
|
20
|
+
export class ScheduleManagement {
|
|
21
|
+
ctx;
|
|
22
|
+
readFleetStateSnapshotFn;
|
|
23
|
+
constructor(ctx, readFleetStateSnapshotFn) {
|
|
24
|
+
this.ctx = ctx;
|
|
25
|
+
this.readFleetStateSnapshotFn = readFleetStateSnapshotFn;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all schedules across all agents
|
|
29
|
+
*
|
|
30
|
+
* Returns a list of all configured schedules with their current state,
|
|
31
|
+
* including next trigger times.
|
|
32
|
+
*
|
|
33
|
+
* @returns Array of ScheduleInfo objects with current state
|
|
34
|
+
*/
|
|
35
|
+
async getSchedules() {
|
|
36
|
+
const config = this.ctx.getConfig();
|
|
37
|
+
const agents = config?.agents ?? [];
|
|
38
|
+
const fleetState = await this.readFleetStateSnapshotFn();
|
|
39
|
+
const allSchedules = [];
|
|
40
|
+
for (const agent of agents) {
|
|
41
|
+
const agentState = fleetState.agents[agent.name];
|
|
42
|
+
const schedules = buildScheduleInfoList(agent, agentState);
|
|
43
|
+
allSchedules.push(...schedules);
|
|
44
|
+
}
|
|
45
|
+
return allSchedules;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get a specific schedule by agent name and schedule name
|
|
49
|
+
*
|
|
50
|
+
* @param agentName - The name of the agent
|
|
51
|
+
* @param scheduleName - The name of the schedule
|
|
52
|
+
* @returns The schedule info with current state
|
|
53
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
54
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
55
|
+
*/
|
|
56
|
+
async getSchedule(agentName, scheduleName) {
|
|
57
|
+
const config = this.ctx.getConfig();
|
|
58
|
+
const agents = config?.agents ?? [];
|
|
59
|
+
const agent = agents.find((a) => a.name === agentName);
|
|
60
|
+
if (!agent) {
|
|
61
|
+
throw new AgentNotFoundError(agentName, {
|
|
62
|
+
availableAgents: agents.map((a) => a.name),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (!agent.schedules || !(scheduleName in agent.schedules)) {
|
|
66
|
+
const availableSchedules = agent.schedules
|
|
67
|
+
? Object.keys(agent.schedules)
|
|
68
|
+
: [];
|
|
69
|
+
throw new ScheduleNotFoundError(agentName, scheduleName, {
|
|
70
|
+
availableSchedules,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
const fleetState = await this.readFleetStateSnapshotFn();
|
|
74
|
+
const agentState = fleetState.agents[agentName];
|
|
75
|
+
const schedule = agent.schedules[scheduleName];
|
|
76
|
+
const scheduleState = agentState?.schedules?.[scheduleName];
|
|
77
|
+
return {
|
|
78
|
+
name: scheduleName,
|
|
79
|
+
agentName,
|
|
80
|
+
type: schedule.type,
|
|
81
|
+
interval: schedule.interval,
|
|
82
|
+
expression: schedule.expression,
|
|
83
|
+
status: scheduleState?.status ?? "idle",
|
|
84
|
+
lastRunAt: scheduleState?.last_run_at ?? null,
|
|
85
|
+
nextRunAt: scheduleState?.next_run_at ?? null,
|
|
86
|
+
lastError: scheduleState?.last_error ?? null,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Enable a disabled schedule
|
|
91
|
+
*
|
|
92
|
+
* Enables a schedule that was previously disabled, allowing it to trigger
|
|
93
|
+
* again on its configured interval. The enabled state is persisted to the
|
|
94
|
+
* state directory and survives restarts.
|
|
95
|
+
*
|
|
96
|
+
* @param agentName - The name of the agent
|
|
97
|
+
* @param scheduleName - The name of the schedule
|
|
98
|
+
* @returns The updated schedule info
|
|
99
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
100
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
101
|
+
*/
|
|
102
|
+
async enableSchedule(agentName, scheduleName) {
|
|
103
|
+
const config = this.ctx.getConfig();
|
|
104
|
+
const logger = this.ctx.getLogger();
|
|
105
|
+
const stateDir = this.ctx.getStateDir();
|
|
106
|
+
// Validate the agent and schedule exist
|
|
107
|
+
const agents = config?.agents ?? [];
|
|
108
|
+
const agent = agents.find((a) => a.name === agentName);
|
|
109
|
+
if (!agent) {
|
|
110
|
+
throw new AgentNotFoundError(agentName, {
|
|
111
|
+
availableAgents: agents.map((a) => a.name),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (!agent.schedules || !(scheduleName in agent.schedules)) {
|
|
115
|
+
const availableSchedules = agent.schedules
|
|
116
|
+
? Object.keys(agent.schedules)
|
|
117
|
+
: [];
|
|
118
|
+
throw new ScheduleNotFoundError(agentName, scheduleName, {
|
|
119
|
+
availableSchedules,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
// Update schedule state to enabled (idle)
|
|
123
|
+
const { updateScheduleState } = await import("../scheduler/schedule-state.js");
|
|
124
|
+
await updateScheduleState(stateDir, agentName, scheduleName, { status: "idle" }, { logger: { warn: logger.warn } });
|
|
125
|
+
logger.info(`Enabled schedule ${agentName}/${scheduleName}`);
|
|
126
|
+
// Return the updated schedule info
|
|
127
|
+
return this.getSchedule(agentName, scheduleName);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Disable a schedule
|
|
131
|
+
*
|
|
132
|
+
* Disables a schedule, preventing it from triggering on its configured
|
|
133
|
+
* interval. The schedule remains in the configuration but won't run until
|
|
134
|
+
* re-enabled. The disabled state is persisted to the state directory and
|
|
135
|
+
* survives restarts.
|
|
136
|
+
*
|
|
137
|
+
* @param agentName - The name of the agent
|
|
138
|
+
* @param scheduleName - The name of the schedule
|
|
139
|
+
* @returns The updated schedule info
|
|
140
|
+
* @throws {AgentNotFoundError} If the agent doesn't exist
|
|
141
|
+
* @throws {ScheduleNotFoundError} If the schedule doesn't exist
|
|
142
|
+
*/
|
|
143
|
+
async disableSchedule(agentName, scheduleName) {
|
|
144
|
+
const config = this.ctx.getConfig();
|
|
145
|
+
const logger = this.ctx.getLogger();
|
|
146
|
+
const stateDir = this.ctx.getStateDir();
|
|
147
|
+
// Validate the agent and schedule exist
|
|
148
|
+
const agents = config?.agents ?? [];
|
|
149
|
+
const agent = agents.find((a) => a.name === agentName);
|
|
150
|
+
if (!agent) {
|
|
151
|
+
throw new AgentNotFoundError(agentName, {
|
|
152
|
+
availableAgents: agents.map((a) => a.name),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
if (!agent.schedules || !(scheduleName in agent.schedules)) {
|
|
156
|
+
const availableSchedules = agent.schedules
|
|
157
|
+
? Object.keys(agent.schedules)
|
|
158
|
+
: [];
|
|
159
|
+
throw new ScheduleNotFoundError(agentName, scheduleName, {
|
|
160
|
+
availableSchedules,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// Update schedule state to disabled
|
|
164
|
+
const { updateScheduleState } = await import("../scheduler/schedule-state.js");
|
|
165
|
+
await updateScheduleState(stateDir, agentName, scheduleName, { status: "disabled" }, { logger: { warn: logger.warn } });
|
|
166
|
+
logger.info(`Disabled schedule ${agentName}/${scheduleName}`);
|
|
167
|
+
// Return the updated schedule info
|
|
168
|
+
return this.getSchedule(agentName, scheduleName);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=schedule-management.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-management.js","sourceRoot":"","sources":["../../src/fleet-manager/schedule-management.ts"],"names":[],"mappings":"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"}
|