@herdctl/core 0.0.1 → 0.1.0

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 (284) hide show
  1. package/dist/config/__tests__/agent.test.js +61 -13
  2. package/dist/config/__tests__/agent.test.js.map +1 -1
  3. package/dist/config/__tests__/merge.test.js +10 -3
  4. package/dist/config/__tests__/merge.test.js.map +1 -1
  5. package/dist/config/__tests__/schema.test.js +350 -1
  6. package/dist/config/__tests__/schema.test.js.map +1 -1
  7. package/dist/config/index.d.ts +1 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +3 -1
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/config/schema.d.ts +841 -27
  12. package/dist/config/schema.d.ts.map +1 -1
  13. package/dist/config/schema.js +129 -10
  14. package/dist/config/schema.js.map +1 -1
  15. package/dist/fleet-manager/__tests__/coverage.test.js +14 -331
  16. package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -1
  17. package/dist/fleet-manager/__tests__/errors.test.js +1 -49
  18. package/dist/fleet-manager/__tests__/errors.test.js.map +1 -1
  19. package/dist/fleet-manager/__tests__/integration.test.js +114 -0
  20. package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
  21. package/dist/fleet-manager/__tests__/job-control.test.js +13 -14
  22. package/dist/fleet-manager/__tests__/job-control.test.js.map +1 -1
  23. package/dist/fleet-manager/__tests__/reload.test.js +12 -2
  24. package/dist/fleet-manager/__tests__/reload.test.js.map +1 -1
  25. package/dist/fleet-manager/__tests__/status-queries.test.js +6 -0
  26. package/dist/fleet-manager/__tests__/status-queries.test.js.map +1 -1
  27. package/dist/fleet-manager/__tests__/trigger.test.js +10 -2
  28. package/dist/fleet-manager/__tests__/trigger.test.js.map +1 -1
  29. package/dist/fleet-manager/config-reload.d.ts +164 -0
  30. package/dist/fleet-manager/config-reload.d.ts.map +1 -0
  31. package/dist/fleet-manager/config-reload.js +445 -0
  32. package/dist/fleet-manager/config-reload.js.map +1 -0
  33. package/dist/fleet-manager/context.d.ts +76 -0
  34. package/dist/fleet-manager/context.d.ts.map +1 -0
  35. package/dist/fleet-manager/context.js +11 -0
  36. package/dist/fleet-manager/context.js.map +1 -0
  37. package/dist/fleet-manager/errors.d.ts +0 -25
  38. package/dist/fleet-manager/errors.d.ts.map +1 -1
  39. package/dist/fleet-manager/errors.js +0 -38
  40. package/dist/fleet-manager/errors.js.map +1 -1
  41. package/dist/fleet-manager/event-emitters.d.ts +123 -0
  42. package/dist/fleet-manager/event-emitters.d.ts.map +1 -0
  43. package/dist/fleet-manager/event-emitters.js +136 -0
  44. package/dist/fleet-manager/event-emitters.js.map +1 -0
  45. package/dist/fleet-manager/event-types.d.ts +0 -15
  46. package/dist/fleet-manager/event-types.d.ts.map +1 -1
  47. package/dist/fleet-manager/fleet-manager.d.ts +40 -653
  48. package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
  49. package/dist/fleet-manager/fleet-manager.js +95 -1720
  50. package/dist/fleet-manager/fleet-manager.js.map +1 -1
  51. package/dist/fleet-manager/index.d.ts +13 -2
  52. package/dist/fleet-manager/index.d.ts.map +1 -1
  53. package/dist/fleet-manager/index.js +19 -6
  54. package/dist/fleet-manager/index.js.map +1 -1
  55. package/dist/fleet-manager/job-control.d.ts +67 -0
  56. package/dist/fleet-manager/job-control.d.ts.map +1 -0
  57. package/dist/fleet-manager/job-control.js +333 -0
  58. package/dist/fleet-manager/job-control.js.map +1 -0
  59. package/dist/fleet-manager/log-streaming.d.ts +171 -0
  60. package/dist/fleet-manager/log-streaming.d.ts.map +1 -0
  61. package/dist/fleet-manager/log-streaming.js +503 -0
  62. package/dist/fleet-manager/log-streaming.js.map +1 -0
  63. package/dist/fleet-manager/schedule-executor.d.ts +63 -0
  64. package/dist/fleet-manager/schedule-executor.d.ts.map +1 -0
  65. package/dist/fleet-manager/schedule-executor.js +209 -0
  66. package/dist/fleet-manager/schedule-executor.js.map +1 -0
  67. package/dist/fleet-manager/schedule-management.d.ts +71 -0
  68. package/dist/fleet-manager/schedule-management.d.ts.map +1 -0
  69. package/dist/fleet-manager/schedule-management.js +171 -0
  70. package/dist/fleet-manager/schedule-management.js.map +1 -0
  71. package/dist/fleet-manager/status-queries.d.ts +105 -0
  72. package/dist/fleet-manager/status-queries.d.ts.map +1 -0
  73. package/dist/fleet-manager/status-queries.js +247 -0
  74. package/dist/fleet-manager/status-queries.js.map +1 -0
  75. package/dist/fleet-manager/types.d.ts +0 -39
  76. package/dist/fleet-manager/types.d.ts.map +1 -1
  77. package/dist/runner/__tests__/job-executor.test.js +206 -1
  78. package/dist/runner/__tests__/job-executor.test.js.map +1 -1
  79. package/dist/runner/job-executor.d.ts +9 -0
  80. package/dist/runner/job-executor.d.ts.map +1 -1
  81. package/dist/runner/job-executor.js +78 -4
  82. package/dist/runner/job-executor.js.map +1 -1
  83. package/dist/runner/message-processor.d.ts.map +1 -1
  84. package/dist/runner/message-processor.js +53 -0
  85. package/dist/runner/message-processor.js.map +1 -1
  86. package/dist/runner/types.d.ts +3 -1
  87. package/dist/runner/types.d.ts.map +1 -1
  88. package/dist/scheduler/__tests__/cron.test.d.ts +2 -0
  89. package/dist/scheduler/__tests__/cron.test.d.ts.map +1 -0
  90. package/dist/scheduler/__tests__/cron.test.js +867 -0
  91. package/dist/scheduler/__tests__/cron.test.js.map +1 -0
  92. package/dist/scheduler/__tests__/scheduler.test.js +164 -5
  93. package/dist/scheduler/__tests__/scheduler.test.js.map +1 -1
  94. package/dist/scheduler/cron.d.ts +126 -0
  95. package/dist/scheduler/cron.d.ts.map +1 -0
  96. package/dist/scheduler/cron.js +390 -0
  97. package/dist/scheduler/cron.js.map +1 -0
  98. package/dist/scheduler/errors.d.ts +81 -1
  99. package/dist/scheduler/errors.d.ts.map +1 -1
  100. package/dist/scheduler/errors.js +81 -6
  101. package/dist/scheduler/errors.js.map +1 -1
  102. package/dist/scheduler/index.d.ts +1 -0
  103. package/dist/scheduler/index.d.ts.map +1 -1
  104. package/dist/scheduler/index.js +2 -0
  105. package/dist/scheduler/index.js.map +1 -1
  106. package/dist/scheduler/schedule-runner.d.ts +2 -2
  107. package/dist/scheduler/schedule-runner.d.ts.map +1 -1
  108. package/dist/scheduler/schedule-runner.js +20 -8
  109. package/dist/scheduler/schedule-runner.js.map +1 -1
  110. package/dist/scheduler/scheduler.d.ts +4 -4
  111. package/dist/scheduler/scheduler.d.ts.map +1 -1
  112. package/dist/scheduler/scheduler.js +95 -20
  113. package/dist/scheduler/scheduler.js.map +1 -1
  114. package/dist/scheduler/types.d.ts +1 -1
  115. package/dist/scheduler/types.d.ts.map +1 -1
  116. package/dist/state/schemas/job-metadata.d.ts +2 -2
  117. package/package.json +33 -8
  118. package/.turbo/turbo-build.log +0 -4
  119. package/.turbo/turbo-test.log +0 -219
  120. package/.turbo/turbo-typecheck.log +0 -4
  121. package/coverage/base.css +0 -224
  122. package/coverage/block-navigation.js +0 -87
  123. package/coverage/coverage-final.json +0 -51
  124. package/coverage/favicon.png +0 -0
  125. package/coverage/index.html +0 -251
  126. package/coverage/prettify.css +0 -1
  127. package/coverage/prettify.js +0 -2
  128. package/coverage/sort-arrow-sprite.png +0 -0
  129. package/coverage/sorter.js +0 -210
  130. package/coverage/src/config/index.html +0 -191
  131. package/coverage/src/config/index.ts.html +0 -442
  132. package/coverage/src/config/interpolate.ts.html +0 -652
  133. package/coverage/src/config/loader.ts.html +0 -1501
  134. package/coverage/src/config/merge.ts.html +0 -823
  135. package/coverage/src/config/parser.ts.html +0 -1213
  136. package/coverage/src/config/schema.ts.html +0 -1123
  137. package/coverage/src/fleet-manager/errors.ts.html +0 -2326
  138. package/coverage/src/fleet-manager/event-types.ts.html +0 -1219
  139. package/coverage/src/fleet-manager/fleet-manager.ts.html +0 -7030
  140. package/coverage/src/fleet-manager/index.html +0 -206
  141. package/coverage/src/fleet-manager/index.ts.html +0 -469
  142. package/coverage/src/fleet-manager/job-manager.ts.html +0 -2074
  143. package/coverage/src/fleet-manager/job-queue.ts.html +0 -2479
  144. package/coverage/src/fleet-manager/types.ts.html +0 -2602
  145. package/coverage/src/index.html +0 -116
  146. package/coverage/src/index.ts.html +0 -181
  147. package/coverage/src/runner/errors.ts.html +0 -1006
  148. package/coverage/src/runner/index.html +0 -191
  149. package/coverage/src/runner/index.ts.html +0 -256
  150. package/coverage/src/runner/job-executor.ts.html +0 -1429
  151. package/coverage/src/runner/message-processor.ts.html +0 -1150
  152. package/coverage/src/runner/sdk-adapter.ts.html +0 -658
  153. package/coverage/src/runner/types.ts.html +0 -559
  154. package/coverage/src/scheduler/errors.ts.html +0 -388
  155. package/coverage/src/scheduler/index.html +0 -206
  156. package/coverage/src/scheduler/index.ts.html +0 -244
  157. package/coverage/src/scheduler/interval.ts.html +0 -652
  158. package/coverage/src/scheduler/schedule-runner.ts.html +0 -1411
  159. package/coverage/src/scheduler/schedule-state.ts.html +0 -718
  160. package/coverage/src/scheduler/scheduler.ts.html +0 -1795
  161. package/coverage/src/scheduler/types.ts.html +0 -733
  162. package/coverage/src/state/directory.ts.html +0 -736
  163. package/coverage/src/state/errors.ts.html +0 -376
  164. package/coverage/src/state/fleet-state.ts.html +0 -937
  165. package/coverage/src/state/index.html +0 -221
  166. package/coverage/src/state/index.ts.html +0 -322
  167. package/coverage/src/state/job-metadata.ts.html +0 -1420
  168. package/coverage/src/state/job-output.ts.html +0 -1033
  169. package/coverage/src/state/schemas/fleet-state.ts.html +0 -445
  170. package/coverage/src/state/schemas/index.html +0 -176
  171. package/coverage/src/state/schemas/index.ts.html +0 -286
  172. package/coverage/src/state/schemas/job-metadata.ts.html +0 -628
  173. package/coverage/src/state/schemas/job-output.ts.html +0 -616
  174. package/coverage/src/state/schemas/session-info.ts.html +0 -361
  175. package/coverage/src/state/session.ts.html +0 -844
  176. package/coverage/src/state/types.ts.html +0 -262
  177. package/coverage/src/state/utils/atomic.ts.html +0 -748
  178. package/coverage/src/state/utils/index.html +0 -146
  179. package/coverage/src/state/utils/index.ts.html +0 -103
  180. package/coverage/src/state/utils/reads.ts.html +0 -1621
  181. package/coverage/src/work-sources/adapters/github.ts.html +0 -3583
  182. package/coverage/src/work-sources/adapters/index.html +0 -131
  183. package/coverage/src/work-sources/adapters/index.ts.html +0 -277
  184. package/coverage/src/work-sources/errors.ts.html +0 -298
  185. package/coverage/src/work-sources/index.html +0 -176
  186. package/coverage/src/work-sources/index.ts.html +0 -529
  187. package/coverage/src/work-sources/manager.ts.html +0 -1324
  188. package/coverage/src/work-sources/registry.ts.html +0 -619
  189. package/coverage/src/work-sources/types.ts.html +0 -568
  190. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +0 -7
  191. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +0 -1
  192. package/dist/fleet-manager/__tests__/event-helpers.test.js +0 -368
  193. package/dist/fleet-manager/__tests__/event-helpers.test.js.map +0 -1
  194. package/src/config/__tests__/agent.test.ts +0 -864
  195. package/src/config/__tests__/interpolate.test.ts +0 -644
  196. package/src/config/__tests__/loader.test.ts +0 -784
  197. package/src/config/__tests__/merge.test.ts +0 -751
  198. package/src/config/__tests__/parser.test.ts +0 -533
  199. package/src/config/__tests__/schema.test.ts +0 -873
  200. package/src/config/index.ts +0 -119
  201. package/src/config/interpolate.ts +0 -189
  202. package/src/config/loader.ts +0 -472
  203. package/src/config/merge.ts +0 -246
  204. package/src/config/parser.ts +0 -376
  205. package/src/config/schema.ts +0 -346
  206. package/src/fleet-manager/__tests__/coverage.test.ts +0 -2869
  207. package/src/fleet-manager/__tests__/errors.test.ts +0 -660
  208. package/src/fleet-manager/__tests__/event-helpers.test.ts +0 -448
  209. package/src/fleet-manager/__tests__/integration.test.ts +0 -1209
  210. package/src/fleet-manager/__tests__/job-control.test.ts +0 -283
  211. package/src/fleet-manager/__tests__/job-manager.test.ts +0 -869
  212. package/src/fleet-manager/__tests__/job-queue.test.ts +0 -401
  213. package/src/fleet-manager/__tests__/reload.test.ts +0 -751
  214. package/src/fleet-manager/__tests__/status-queries.test.ts +0 -595
  215. package/src/fleet-manager/__tests__/trigger.test.ts +0 -601
  216. package/src/fleet-manager/errors.ts +0 -747
  217. package/src/fleet-manager/event-types.ts +0 -378
  218. package/src/fleet-manager/fleet-manager.ts +0 -2315
  219. package/src/fleet-manager/index.ts +0 -128
  220. package/src/fleet-manager/job-manager.ts +0 -663
  221. package/src/fleet-manager/job-queue.ts +0 -798
  222. package/src/fleet-manager/types.ts +0 -839
  223. package/src/index.ts +0 -32
  224. package/src/runner/__tests__/errors.test.ts +0 -382
  225. package/src/runner/__tests__/job-executor.test.ts +0 -1708
  226. package/src/runner/__tests__/message-processor.test.ts +0 -960
  227. package/src/runner/__tests__/sdk-adapter.test.ts +0 -626
  228. package/src/runner/errors.ts +0 -307
  229. package/src/runner/index.ts +0 -57
  230. package/src/runner/job-executor.ts +0 -448
  231. package/src/runner/message-processor.ts +0 -355
  232. package/src/runner/sdk-adapter.ts +0 -191
  233. package/src/runner/types.ts +0 -158
  234. package/src/scheduler/__tests__/errors.test.ts +0 -159
  235. package/src/scheduler/__tests__/interval.test.ts +0 -515
  236. package/src/scheduler/__tests__/schedule-runner.test.ts +0 -798
  237. package/src/scheduler/__tests__/schedule-state.test.ts +0 -671
  238. package/src/scheduler/__tests__/scheduler.test.ts +0 -1280
  239. package/src/scheduler/errors.ts +0 -101
  240. package/src/scheduler/index.ts +0 -53
  241. package/src/scheduler/interval.ts +0 -189
  242. package/src/scheduler/schedule-runner.ts +0 -442
  243. package/src/scheduler/schedule-state.ts +0 -211
  244. package/src/scheduler/scheduler.ts +0 -570
  245. package/src/scheduler/types.ts +0 -216
  246. package/src/state/__tests__/directory.test.ts +0 -595
  247. package/src/state/__tests__/fleet-state.test.ts +0 -868
  248. package/src/state/__tests__/job-metadata-schema.test.ts +0 -414
  249. package/src/state/__tests__/job-metadata.test.ts +0 -831
  250. package/src/state/__tests__/job-output.test.ts +0 -856
  251. package/src/state/__tests__/session-schema.test.ts +0 -378
  252. package/src/state/__tests__/session.test.ts +0 -604
  253. package/src/state/directory.ts +0 -217
  254. package/src/state/errors.ts +0 -97
  255. package/src/state/fleet-state.ts +0 -284
  256. package/src/state/index.ts +0 -79
  257. package/src/state/job-metadata.ts +0 -445
  258. package/src/state/job-output.ts +0 -316
  259. package/src/state/schemas/__tests__/job-output.test.ts +0 -338
  260. package/src/state/schemas/fleet-state.ts +0 -120
  261. package/src/state/schemas/index.ts +0 -67
  262. package/src/state/schemas/job-metadata.ts +0 -181
  263. package/src/state/schemas/job-output.ts +0 -177
  264. package/src/state/schemas/session-info.ts +0 -92
  265. package/src/state/session.ts +0 -253
  266. package/src/state/types.ts +0 -59
  267. package/src/state/utils/__tests__/atomic.test.ts +0 -723
  268. package/src/state/utils/__tests__/reads.test.ts +0 -1071
  269. package/src/state/utils/atomic.ts +0 -221
  270. package/src/state/utils/index.ts +0 -6
  271. package/src/state/utils/reads.ts +0 -512
  272. package/src/work-sources/__tests__/github.test.ts +0 -1800
  273. package/src/work-sources/__tests__/manager.test.ts +0 -529
  274. package/src/work-sources/__tests__/registry.test.ts +0 -477
  275. package/src/work-sources/__tests__/types.test.ts +0 -479
  276. package/src/work-sources/adapters/github.ts +0 -1166
  277. package/src/work-sources/adapters/index.ts +0 -64
  278. package/src/work-sources/errors.ts +0 -71
  279. package/src/work-sources/index.ts +0 -148
  280. package/src/work-sources/manager.ts +0 -413
  281. package/src/work-sources/registry.ts +0 -178
  282. package/src/work-sources/types.ts +0 -161
  283. package/tsconfig.json +0 -9
  284. 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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"}