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