@herdctl/core 0.0.1

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 (520) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-test.log +219 -0
  3. package/.turbo/turbo-typecheck.log +4 -0
  4. package/coverage/base.css +224 -0
  5. package/coverage/block-navigation.js +87 -0
  6. package/coverage/coverage-final.json +51 -0
  7. package/coverage/favicon.png +0 -0
  8. package/coverage/index.html +251 -0
  9. package/coverage/prettify.css +1 -0
  10. package/coverage/prettify.js +2 -0
  11. package/coverage/sort-arrow-sprite.png +0 -0
  12. package/coverage/sorter.js +210 -0
  13. package/coverage/src/config/index.html +191 -0
  14. package/coverage/src/config/index.ts.html +442 -0
  15. package/coverage/src/config/interpolate.ts.html +652 -0
  16. package/coverage/src/config/loader.ts.html +1501 -0
  17. package/coverage/src/config/merge.ts.html +823 -0
  18. package/coverage/src/config/parser.ts.html +1213 -0
  19. package/coverage/src/config/schema.ts.html +1123 -0
  20. package/coverage/src/fleet-manager/errors.ts.html +2326 -0
  21. package/coverage/src/fleet-manager/event-types.ts.html +1219 -0
  22. package/coverage/src/fleet-manager/fleet-manager.ts.html +7030 -0
  23. package/coverage/src/fleet-manager/index.html +206 -0
  24. package/coverage/src/fleet-manager/index.ts.html +469 -0
  25. package/coverage/src/fleet-manager/job-manager.ts.html +2074 -0
  26. package/coverage/src/fleet-manager/job-queue.ts.html +2479 -0
  27. package/coverage/src/fleet-manager/types.ts.html +2602 -0
  28. package/coverage/src/index.html +116 -0
  29. package/coverage/src/index.ts.html +181 -0
  30. package/coverage/src/runner/errors.ts.html +1006 -0
  31. package/coverage/src/runner/index.html +191 -0
  32. package/coverage/src/runner/index.ts.html +256 -0
  33. package/coverage/src/runner/job-executor.ts.html +1429 -0
  34. package/coverage/src/runner/message-processor.ts.html +1150 -0
  35. package/coverage/src/runner/sdk-adapter.ts.html +658 -0
  36. package/coverage/src/runner/types.ts.html +559 -0
  37. package/coverage/src/scheduler/errors.ts.html +388 -0
  38. package/coverage/src/scheduler/index.html +206 -0
  39. package/coverage/src/scheduler/index.ts.html +244 -0
  40. package/coverage/src/scheduler/interval.ts.html +652 -0
  41. package/coverage/src/scheduler/schedule-runner.ts.html +1411 -0
  42. package/coverage/src/scheduler/schedule-state.ts.html +718 -0
  43. package/coverage/src/scheduler/scheduler.ts.html +1795 -0
  44. package/coverage/src/scheduler/types.ts.html +733 -0
  45. package/coverage/src/state/directory.ts.html +736 -0
  46. package/coverage/src/state/errors.ts.html +376 -0
  47. package/coverage/src/state/fleet-state.ts.html +937 -0
  48. package/coverage/src/state/index.html +221 -0
  49. package/coverage/src/state/index.ts.html +322 -0
  50. package/coverage/src/state/job-metadata.ts.html +1420 -0
  51. package/coverage/src/state/job-output.ts.html +1033 -0
  52. package/coverage/src/state/schemas/fleet-state.ts.html +445 -0
  53. package/coverage/src/state/schemas/index.html +176 -0
  54. package/coverage/src/state/schemas/index.ts.html +286 -0
  55. package/coverage/src/state/schemas/job-metadata.ts.html +628 -0
  56. package/coverage/src/state/schemas/job-output.ts.html +616 -0
  57. package/coverage/src/state/schemas/session-info.ts.html +361 -0
  58. package/coverage/src/state/session.ts.html +844 -0
  59. package/coverage/src/state/types.ts.html +262 -0
  60. package/coverage/src/state/utils/atomic.ts.html +748 -0
  61. package/coverage/src/state/utils/index.html +146 -0
  62. package/coverage/src/state/utils/index.ts.html +103 -0
  63. package/coverage/src/state/utils/reads.ts.html +1621 -0
  64. package/coverage/src/work-sources/adapters/github.ts.html +3583 -0
  65. package/coverage/src/work-sources/adapters/index.html +131 -0
  66. package/coverage/src/work-sources/adapters/index.ts.html +277 -0
  67. package/coverage/src/work-sources/errors.ts.html +298 -0
  68. package/coverage/src/work-sources/index.html +176 -0
  69. package/coverage/src/work-sources/index.ts.html +529 -0
  70. package/coverage/src/work-sources/manager.ts.html +1324 -0
  71. package/coverage/src/work-sources/registry.ts.html +619 -0
  72. package/coverage/src/work-sources/types.ts.html +568 -0
  73. package/dist/config/__tests__/agent.test.d.ts +2 -0
  74. package/dist/config/__tests__/agent.test.d.ts.map +1 -0
  75. package/dist/config/__tests__/agent.test.js +752 -0
  76. package/dist/config/__tests__/agent.test.js.map +1 -0
  77. package/dist/config/__tests__/interpolate.test.d.ts +2 -0
  78. package/dist/config/__tests__/interpolate.test.d.ts.map +1 -0
  79. package/dist/config/__tests__/interpolate.test.js +509 -0
  80. package/dist/config/__tests__/interpolate.test.js.map +1 -0
  81. package/dist/config/__tests__/loader.test.d.ts +2 -0
  82. package/dist/config/__tests__/loader.test.d.ts.map +1 -0
  83. package/dist/config/__tests__/loader.test.js +631 -0
  84. package/dist/config/__tests__/loader.test.js.map +1 -0
  85. package/dist/config/__tests__/merge.test.d.ts +2 -0
  86. package/dist/config/__tests__/merge.test.d.ts.map +1 -0
  87. package/dist/config/__tests__/merge.test.js +672 -0
  88. package/dist/config/__tests__/merge.test.js.map +1 -0
  89. package/dist/config/__tests__/parser.test.d.ts +2 -0
  90. package/dist/config/__tests__/parser.test.d.ts.map +1 -0
  91. package/dist/config/__tests__/parser.test.js +476 -0
  92. package/dist/config/__tests__/parser.test.js.map +1 -0
  93. package/dist/config/__tests__/schema.test.d.ts +2 -0
  94. package/dist/config/__tests__/schema.test.d.ts.map +1 -0
  95. package/dist/config/__tests__/schema.test.js +776 -0
  96. package/dist/config/__tests__/schema.test.js.map +1 -0
  97. package/dist/config/index.d.ts +11 -0
  98. package/dist/config/index.d.ts.map +1 -0
  99. package/dist/config/index.js +26 -0
  100. package/dist/config/index.js.map +1 -0
  101. package/dist/config/interpolate.d.ts +76 -0
  102. package/dist/config/interpolate.d.ts.map +1 -0
  103. package/dist/config/interpolate.js +143 -0
  104. package/dist/config/interpolate.js.map +1 -0
  105. package/dist/config/loader.d.ts +147 -0
  106. package/dist/config/loader.d.ts.map +1 -0
  107. package/dist/config/loader.js +336 -0
  108. package/dist/config/loader.js.map +1 -0
  109. package/dist/config/merge.d.ts +84 -0
  110. package/dist/config/merge.d.ts.map +1 -0
  111. package/dist/config/merge.js +138 -0
  112. package/dist/config/merge.js.map +1 -0
  113. package/dist/config/parser.d.ts +143 -0
  114. package/dist/config/parser.d.ts.map +1 -0
  115. package/dist/config/parser.js +316 -0
  116. package/dist/config/parser.js.map +1 -0
  117. package/dist/config/schema.d.ts +1906 -0
  118. package/dist/config/schema.d.ts.map +1 -0
  119. package/dist/config/schema.js +268 -0
  120. package/dist/config/schema.js.map +1 -0
  121. package/dist/fleet-manager/__tests__/coverage.test.d.ts +13 -0
  122. package/dist/fleet-manager/__tests__/coverage.test.d.ts.map +1 -0
  123. package/dist/fleet-manager/__tests__/coverage.test.js +2282 -0
  124. package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -0
  125. package/dist/fleet-manager/__tests__/errors.test.d.ts +7 -0
  126. package/dist/fleet-manager/__tests__/errors.test.d.ts.map +1 -0
  127. package/dist/fleet-manager/__tests__/errors.test.js +557 -0
  128. package/dist/fleet-manager/__tests__/errors.test.js.map +1 -0
  129. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts +7 -0
  130. package/dist/fleet-manager/__tests__/event-helpers.test.d.ts.map +1 -0
  131. package/dist/fleet-manager/__tests__/event-helpers.test.js +368 -0
  132. package/dist/fleet-manager/__tests__/event-helpers.test.js.map +1 -0
  133. package/dist/fleet-manager/__tests__/integration.test.d.ts +11 -0
  134. package/dist/fleet-manager/__tests__/integration.test.d.ts.map +1 -0
  135. package/dist/fleet-manager/__tests__/integration.test.js +949 -0
  136. package/dist/fleet-manager/__tests__/integration.test.js.map +1 -0
  137. package/dist/fleet-manager/__tests__/job-control.test.d.ts +7 -0
  138. package/dist/fleet-manager/__tests__/job-control.test.d.ts.map +1 -0
  139. package/dist/fleet-manager/__tests__/job-control.test.js +215 -0
  140. package/dist/fleet-manager/__tests__/job-control.test.js.map +1 -0
  141. package/dist/fleet-manager/__tests__/job-manager.test.d.ts +7 -0
  142. package/dist/fleet-manager/__tests__/job-manager.test.d.ts.map +1 -0
  143. package/dist/fleet-manager/__tests__/job-manager.test.js +659 -0
  144. package/dist/fleet-manager/__tests__/job-manager.test.js.map +1 -0
  145. package/dist/fleet-manager/__tests__/job-queue.test.d.ts +5 -0
  146. package/dist/fleet-manager/__tests__/job-queue.test.d.ts.map +1 -0
  147. package/dist/fleet-manager/__tests__/job-queue.test.js +315 -0
  148. package/dist/fleet-manager/__tests__/job-queue.test.js.map +1 -0
  149. package/dist/fleet-manager/__tests__/reload.test.d.ts +7 -0
  150. package/dist/fleet-manager/__tests__/reload.test.d.ts.map +1 -0
  151. package/dist/fleet-manager/__tests__/reload.test.js +609 -0
  152. package/dist/fleet-manager/__tests__/reload.test.js.map +1 -0
  153. package/dist/fleet-manager/__tests__/status-queries.test.d.ts +7 -0
  154. package/dist/fleet-manager/__tests__/status-queries.test.d.ts.map +1 -0
  155. package/dist/fleet-manager/__tests__/status-queries.test.js +488 -0
  156. package/dist/fleet-manager/__tests__/status-queries.test.js.map +1 -0
  157. package/dist/fleet-manager/__tests__/trigger.test.d.ts +7 -0
  158. package/dist/fleet-manager/__tests__/trigger.test.d.ts.map +1 -0
  159. package/dist/fleet-manager/__tests__/trigger.test.js +471 -0
  160. package/dist/fleet-manager/__tests__/trigger.test.js.map +1 -0
  161. package/dist/fleet-manager/errors.d.ts +407 -0
  162. package/dist/fleet-manager/errors.d.ts.map +1 -0
  163. package/dist/fleet-manager/errors.js +569 -0
  164. package/dist/fleet-manager/errors.js.map +1 -0
  165. package/dist/fleet-manager/event-types.d.ts +302 -0
  166. package/dist/fleet-manager/event-types.d.ts.map +1 -0
  167. package/dist/fleet-manager/event-types.js +9 -0
  168. package/dist/fleet-manager/event-types.js.map +1 -0
  169. package/dist/fleet-manager/fleet-manager.d.ts +699 -0
  170. package/dist/fleet-manager/fleet-manager.d.ts.map +1 -0
  171. package/dist/fleet-manager/fleet-manager.js +1906 -0
  172. package/dist/fleet-manager/fleet-manager.js.map +1 -0
  173. package/dist/fleet-manager/index.d.ts +17 -0
  174. package/dist/fleet-manager/index.d.ts.map +1 -0
  175. package/dist/fleet-manager/index.js +29 -0
  176. package/dist/fleet-manager/index.js.map +1 -0
  177. package/dist/fleet-manager/job-manager.d.ts +271 -0
  178. package/dist/fleet-manager/job-manager.d.ts.map +1 -0
  179. package/dist/fleet-manager/job-manager.js +443 -0
  180. package/dist/fleet-manager/job-manager.js.map +1 -0
  181. package/dist/fleet-manager/job-queue.d.ts +422 -0
  182. package/dist/fleet-manager/job-queue.d.ts.map +1 -0
  183. package/dist/fleet-manager/job-queue.js +448 -0
  184. package/dist/fleet-manager/job-queue.js.map +1 -0
  185. package/dist/fleet-manager/types.d.ts +680 -0
  186. package/dist/fleet-manager/types.d.ts.map +1 -0
  187. package/dist/fleet-manager/types.js +8 -0
  188. package/dist/fleet-manager/types.js.map +1 -0
  189. package/dist/index.d.ts +20 -0
  190. package/dist/index.d.ts.map +1 -0
  191. package/dist/index.js +26 -0
  192. package/dist/index.js.map +1 -0
  193. package/dist/runner/__tests__/errors.test.d.ts +2 -0
  194. package/dist/runner/__tests__/errors.test.d.ts.map +1 -0
  195. package/dist/runner/__tests__/errors.test.js +264 -0
  196. package/dist/runner/__tests__/errors.test.js.map +1 -0
  197. package/dist/runner/__tests__/job-executor.test.d.ts +2 -0
  198. package/dist/runner/__tests__/job-executor.test.d.ts.map +1 -0
  199. package/dist/runner/__tests__/job-executor.test.js +1345 -0
  200. package/dist/runner/__tests__/job-executor.test.js.map +1 -0
  201. package/dist/runner/__tests__/message-processor.test.d.ts +2 -0
  202. package/dist/runner/__tests__/message-processor.test.d.ts.map +1 -0
  203. package/dist/runner/__tests__/message-processor.test.js +768 -0
  204. package/dist/runner/__tests__/message-processor.test.js.map +1 -0
  205. package/dist/runner/__tests__/sdk-adapter.test.d.ts +2 -0
  206. package/dist/runner/__tests__/sdk-adapter.test.d.ts.map +1 -0
  207. package/dist/runner/__tests__/sdk-adapter.test.js +554 -0
  208. package/dist/runner/__tests__/sdk-adapter.test.js.map +1 -0
  209. package/dist/runner/errors.d.ts +121 -0
  210. package/dist/runner/errors.d.ts.map +1 -0
  211. package/dist/runner/errors.js +212 -0
  212. package/dist/runner/errors.js.map +1 -0
  213. package/dist/runner/index.d.ts +12 -0
  214. package/dist/runner/index.d.ts.map +1 -0
  215. package/dist/runner/index.js +15 -0
  216. package/dist/runner/index.js.map +1 -0
  217. package/dist/runner/job-executor.d.ts +98 -0
  218. package/dist/runner/job-executor.d.ts.map +1 -0
  219. package/dist/runner/job-executor.js +333 -0
  220. package/dist/runner/job-executor.js.map +1 -0
  221. package/dist/runner/message-processor.d.ts +45 -0
  222. package/dist/runner/message-processor.d.ts.map +1 -0
  223. package/dist/runner/message-processor.js +294 -0
  224. package/dist/runner/message-processor.js.map +1 -0
  225. package/dist/runner/sdk-adapter.d.ts +60 -0
  226. package/dist/runner/sdk-adapter.d.ts.map +1 -0
  227. package/dist/runner/sdk-adapter.js +138 -0
  228. package/dist/runner/sdk-adapter.js.map +1 -0
  229. package/dist/runner/types.d.ts +135 -0
  230. package/dist/runner/types.d.ts.map +1 -0
  231. package/dist/runner/types.js +7 -0
  232. package/dist/runner/types.js.map +1 -0
  233. package/dist/scheduler/__tests__/errors.test.d.ts +2 -0
  234. package/dist/scheduler/__tests__/errors.test.d.ts.map +1 -0
  235. package/dist/scheduler/__tests__/errors.test.js +101 -0
  236. package/dist/scheduler/__tests__/errors.test.js.map +1 -0
  237. package/dist/scheduler/__tests__/interval.test.d.ts +2 -0
  238. package/dist/scheduler/__tests__/interval.test.d.ts.map +1 -0
  239. package/dist/scheduler/__tests__/interval.test.js +419 -0
  240. package/dist/scheduler/__tests__/interval.test.js.map +1 -0
  241. package/dist/scheduler/__tests__/schedule-runner.test.d.ts +2 -0
  242. package/dist/scheduler/__tests__/schedule-runner.test.d.ts.map +1 -0
  243. package/dist/scheduler/__tests__/schedule-runner.test.js +634 -0
  244. package/dist/scheduler/__tests__/schedule-runner.test.js.map +1 -0
  245. package/dist/scheduler/__tests__/schedule-state.test.d.ts +2 -0
  246. package/dist/scheduler/__tests__/schedule-state.test.d.ts.map +1 -0
  247. package/dist/scheduler/__tests__/schedule-state.test.js +572 -0
  248. package/dist/scheduler/__tests__/schedule-state.test.js.map +1 -0
  249. package/dist/scheduler/__tests__/scheduler.test.d.ts +2 -0
  250. package/dist/scheduler/__tests__/scheduler.test.d.ts.map +1 -0
  251. package/dist/scheduler/__tests__/scheduler.test.js +987 -0
  252. package/dist/scheduler/__tests__/scheduler.test.js.map +1 -0
  253. package/dist/scheduler/errors.d.ts +61 -0
  254. package/dist/scheduler/errors.d.ts.map +1 -0
  255. package/dist/scheduler/errors.js +81 -0
  256. package/dist/scheduler/errors.js.map +1 -0
  257. package/dist/scheduler/index.d.ts +13 -0
  258. package/dist/scheduler/index.d.ts.map +1 -0
  259. package/dist/scheduler/index.js +17 -0
  260. package/dist/scheduler/index.js.map +1 -0
  261. package/dist/scheduler/interval.d.ts +64 -0
  262. package/dist/scheduler/interval.d.ts.map +1 -0
  263. package/dist/scheduler/interval.js +139 -0
  264. package/dist/scheduler/interval.js.map +1 -0
  265. package/dist/scheduler/schedule-runner.d.ts +149 -0
  266. package/dist/scheduler/schedule-runner.d.ts.map +1 -0
  267. package/dist/scheduler/schedule-runner.js +277 -0
  268. package/dist/scheduler/schedule-runner.js.map +1 -0
  269. package/dist/scheduler/schedule-state.d.ts +105 -0
  270. package/dist/scheduler/schedule-state.d.ts.map +1 -0
  271. package/dist/scheduler/schedule-state.js +151 -0
  272. package/dist/scheduler/schedule-state.js.map +1 -0
  273. package/dist/scheduler/scheduler.d.ts +138 -0
  274. package/dist/scheduler/scheduler.d.ts.map +1 -0
  275. package/dist/scheduler/scheduler.js +423 -0
  276. package/dist/scheduler/scheduler.js.map +1 -0
  277. package/dist/scheduler/types.d.ts +160 -0
  278. package/dist/scheduler/types.d.ts.map +1 -0
  279. package/dist/scheduler/types.js +8 -0
  280. package/dist/scheduler/types.js.map +1 -0
  281. package/dist/state/__tests__/directory.test.d.ts +2 -0
  282. package/dist/state/__tests__/directory.test.d.ts.map +1 -0
  283. package/dist/state/__tests__/directory.test.js +414 -0
  284. package/dist/state/__tests__/directory.test.js.map +1 -0
  285. package/dist/state/__tests__/fleet-state.test.d.ts +2 -0
  286. package/dist/state/__tests__/fleet-state.test.d.ts.map +1 -0
  287. package/dist/state/__tests__/fleet-state.test.js +696 -0
  288. package/dist/state/__tests__/fleet-state.test.js.map +1 -0
  289. package/dist/state/__tests__/job-metadata-schema.test.d.ts +2 -0
  290. package/dist/state/__tests__/job-metadata-schema.test.d.ts.map +1 -0
  291. package/dist/state/__tests__/job-metadata-schema.test.js +329 -0
  292. package/dist/state/__tests__/job-metadata-schema.test.js.map +1 -0
  293. package/dist/state/__tests__/job-metadata.test.d.ts +2 -0
  294. package/dist/state/__tests__/job-metadata.test.d.ts.map +1 -0
  295. package/dist/state/__tests__/job-metadata.test.js +667 -0
  296. package/dist/state/__tests__/job-metadata.test.js.map +1 -0
  297. package/dist/state/__tests__/job-output.test.d.ts +2 -0
  298. package/dist/state/__tests__/job-output.test.d.ts.map +1 -0
  299. package/dist/state/__tests__/job-output.test.js +672 -0
  300. package/dist/state/__tests__/job-output.test.js.map +1 -0
  301. package/dist/state/__tests__/session-schema.test.d.ts +2 -0
  302. package/dist/state/__tests__/session-schema.test.d.ts.map +1 -0
  303. package/dist/state/__tests__/session-schema.test.js +323 -0
  304. package/dist/state/__tests__/session-schema.test.js.map +1 -0
  305. package/dist/state/__tests__/session.test.d.ts +2 -0
  306. package/dist/state/__tests__/session.test.d.ts.map +1 -0
  307. package/dist/state/__tests__/session.test.js +468 -0
  308. package/dist/state/__tests__/session.test.js.map +1 -0
  309. package/dist/state/directory.d.ts +42 -0
  310. package/dist/state/directory.d.ts.map +1 -0
  311. package/dist/state/directory.js +170 -0
  312. package/dist/state/directory.js.map +1 -0
  313. package/dist/state/errors.d.ts +44 -0
  314. package/dist/state/errors.d.ts.map +1 -0
  315. package/dist/state/errors.js +82 -0
  316. package/dist/state/errors.js.map +1 -0
  317. package/dist/state/fleet-state.d.ts +126 -0
  318. package/dist/state/fleet-state.d.ts.map +1 -0
  319. package/dist/state/fleet-state.js +196 -0
  320. package/dist/state/fleet-state.js.map +1 -0
  321. package/dist/state/index.d.ts +21 -0
  322. package/dist/state/index.d.ts.map +1 -0
  323. package/dist/state/index.js +30 -0
  324. package/dist/state/index.js.map +1 -0
  325. package/dist/state/job-metadata.d.ts +151 -0
  326. package/dist/state/job-metadata.d.ts.map +1 -0
  327. package/dist/state/job-metadata.js +287 -0
  328. package/dist/state/job-metadata.js.map +1 -0
  329. package/dist/state/job-output.d.ts +116 -0
  330. package/dist/state/job-output.d.ts.map +1 -0
  331. package/dist/state/job-output.js +218 -0
  332. package/dist/state/job-output.js.map +1 -0
  333. package/dist/state/schemas/__tests__/job-output.test.d.ts +2 -0
  334. package/dist/state/schemas/__tests__/job-output.test.d.ts.map +1 -0
  335. package/dist/state/schemas/__tests__/job-output.test.js +279 -0
  336. package/dist/state/schemas/__tests__/job-output.test.js.map +1 -0
  337. package/dist/state/schemas/fleet-state.d.ts +249 -0
  338. package/dist/state/schemas/fleet-state.d.ts.map +1 -0
  339. package/dist/state/schemas/fleet-state.js +97 -0
  340. package/dist/state/schemas/fleet-state.js.map +1 -0
  341. package/dist/state/schemas/index.d.ts +10 -0
  342. package/dist/state/schemas/index.d.ts.map +1 -0
  343. package/dist/state/schemas/index.js +10 -0
  344. package/dist/state/schemas/index.js.map +1 -0
  345. package/dist/state/schemas/job-metadata.d.ts +118 -0
  346. package/dist/state/schemas/job-metadata.d.ts.map +1 -0
  347. package/dist/state/schemas/job-metadata.js +123 -0
  348. package/dist/state/schemas/job-metadata.js.map +1 -0
  349. package/dist/state/schemas/job-output.d.ts +291 -0
  350. package/dist/state/schemas/job-output.d.ts.map +1 -0
  351. package/dist/state/schemas/job-output.js +132 -0
  352. package/dist/state/schemas/job-output.js.map +1 -0
  353. package/dist/state/schemas/session-info.d.ts +65 -0
  354. package/dist/state/schemas/session-info.d.ts.map +1 -0
  355. package/dist/state/schemas/session-info.js +58 -0
  356. package/dist/state/schemas/session-info.js.map +1 -0
  357. package/dist/state/session.d.ts +92 -0
  358. package/dist/state/session.d.ts.map +1 -0
  359. package/dist/state/session.js +173 -0
  360. package/dist/state/session.js.map +1 -0
  361. package/dist/state/types.d.ts +54 -0
  362. package/dist/state/types.d.ts.map +1 -0
  363. package/dist/state/types.js +18 -0
  364. package/dist/state/types.js.map +1 -0
  365. package/dist/state/utils/__tests__/atomic.test.d.ts +2 -0
  366. package/dist/state/utils/__tests__/atomic.test.d.ts.map +1 -0
  367. package/dist/state/utils/__tests__/atomic.test.js +537 -0
  368. package/dist/state/utils/__tests__/atomic.test.js.map +1 -0
  369. package/dist/state/utils/__tests__/reads.test.d.ts +2 -0
  370. package/dist/state/utils/__tests__/reads.test.d.ts.map +1 -0
  371. package/dist/state/utils/__tests__/reads.test.js +792 -0
  372. package/dist/state/utils/__tests__/reads.test.js.map +1 -0
  373. package/dist/state/utils/atomic.d.ts +89 -0
  374. package/dist/state/utils/atomic.d.ts.map +1 -0
  375. package/dist/state/utils/atomic.js +157 -0
  376. package/dist/state/utils/atomic.js.map +1 -0
  377. package/dist/state/utils/index.d.ts +6 -0
  378. package/dist/state/utils/index.d.ts.map +1 -0
  379. package/dist/state/utils/index.js +6 -0
  380. package/dist/state/utils/index.js.map +1 -0
  381. package/dist/state/utils/reads.d.ts +196 -0
  382. package/dist/state/utils/reads.d.ts.map +1 -0
  383. package/dist/state/utils/reads.js +346 -0
  384. package/dist/state/utils/reads.js.map +1 -0
  385. package/dist/work-sources/__tests__/github.test.d.ts +2 -0
  386. package/dist/work-sources/__tests__/github.test.d.ts.map +1 -0
  387. package/dist/work-sources/__tests__/github.test.js +1334 -0
  388. package/dist/work-sources/__tests__/github.test.js.map +1 -0
  389. package/dist/work-sources/__tests__/manager.test.d.ts +2 -0
  390. package/dist/work-sources/__tests__/manager.test.d.ts.map +1 -0
  391. package/dist/work-sources/__tests__/manager.test.js +424 -0
  392. package/dist/work-sources/__tests__/manager.test.js.map +1 -0
  393. package/dist/work-sources/__tests__/registry.test.d.ts +2 -0
  394. package/dist/work-sources/__tests__/registry.test.d.ts.map +1 -0
  395. package/dist/work-sources/__tests__/registry.test.js +381 -0
  396. package/dist/work-sources/__tests__/registry.test.js.map +1 -0
  397. package/dist/work-sources/__tests__/types.test.d.ts +2 -0
  398. package/dist/work-sources/__tests__/types.test.d.ts.map +1 -0
  399. package/dist/work-sources/__tests__/types.test.js +406 -0
  400. package/dist/work-sources/__tests__/types.test.js.map +1 -0
  401. package/dist/work-sources/adapters/github.d.ts +290 -0
  402. package/dist/work-sources/adapters/github.d.ts.map +1 -0
  403. package/dist/work-sources/adapters/github.js +803 -0
  404. package/dist/work-sources/adapters/github.js.map +1 -0
  405. package/dist/work-sources/adapters/index.d.ts +10 -0
  406. package/dist/work-sources/adapters/index.d.ts.map +1 -0
  407. package/dist/work-sources/adapters/index.js +31 -0
  408. package/dist/work-sources/adapters/index.js.map +1 -0
  409. package/dist/work-sources/errors.d.ts +40 -0
  410. package/dist/work-sources/errors.d.ts.map +1 -0
  411. package/dist/work-sources/errors.js +54 -0
  412. package/dist/work-sources/errors.js.map +1 -0
  413. package/dist/work-sources/index.d.ts +105 -0
  414. package/dist/work-sources/index.d.ts.map +1 -0
  415. package/dist/work-sources/index.js +24 -0
  416. package/dist/work-sources/index.js.map +1 -0
  417. package/dist/work-sources/manager.d.ts +370 -0
  418. package/dist/work-sources/manager.d.ts.map +1 -0
  419. package/dist/work-sources/manager.js +61 -0
  420. package/dist/work-sources/manager.js.map +1 -0
  421. package/dist/work-sources/registry.d.ts +128 -0
  422. package/dist/work-sources/registry.d.ts.map +1 -0
  423. package/dist/work-sources/registry.js +132 -0
  424. package/dist/work-sources/registry.js.map +1 -0
  425. package/dist/work-sources/types.d.ts +127 -0
  426. package/dist/work-sources/types.d.ts.map +1 -0
  427. package/dist/work-sources/types.js +8 -0
  428. package/dist/work-sources/types.js.map +1 -0
  429. package/package.json +23 -0
  430. package/src/config/__tests__/agent.test.ts +864 -0
  431. package/src/config/__tests__/interpolate.test.ts +644 -0
  432. package/src/config/__tests__/loader.test.ts +784 -0
  433. package/src/config/__tests__/merge.test.ts +751 -0
  434. package/src/config/__tests__/parser.test.ts +533 -0
  435. package/src/config/__tests__/schema.test.ts +873 -0
  436. package/src/config/index.ts +119 -0
  437. package/src/config/interpolate.ts +189 -0
  438. package/src/config/loader.ts +472 -0
  439. package/src/config/merge.ts +246 -0
  440. package/src/config/parser.ts +376 -0
  441. package/src/config/schema.ts +346 -0
  442. package/src/fleet-manager/__tests__/coverage.test.ts +2869 -0
  443. package/src/fleet-manager/__tests__/errors.test.ts +660 -0
  444. package/src/fleet-manager/__tests__/event-helpers.test.ts +448 -0
  445. package/src/fleet-manager/__tests__/integration.test.ts +1209 -0
  446. package/src/fleet-manager/__tests__/job-control.test.ts +283 -0
  447. package/src/fleet-manager/__tests__/job-manager.test.ts +869 -0
  448. package/src/fleet-manager/__tests__/job-queue.test.ts +401 -0
  449. package/src/fleet-manager/__tests__/reload.test.ts +751 -0
  450. package/src/fleet-manager/__tests__/status-queries.test.ts +595 -0
  451. package/src/fleet-manager/__tests__/trigger.test.ts +601 -0
  452. package/src/fleet-manager/errors.ts +747 -0
  453. package/src/fleet-manager/event-types.ts +378 -0
  454. package/src/fleet-manager/fleet-manager.ts +2315 -0
  455. package/src/fleet-manager/index.ts +128 -0
  456. package/src/fleet-manager/job-manager.ts +663 -0
  457. package/src/fleet-manager/job-queue.ts +798 -0
  458. package/src/fleet-manager/types.ts +839 -0
  459. package/src/index.ts +32 -0
  460. package/src/runner/__tests__/errors.test.ts +382 -0
  461. package/src/runner/__tests__/job-executor.test.ts +1708 -0
  462. package/src/runner/__tests__/message-processor.test.ts +960 -0
  463. package/src/runner/__tests__/sdk-adapter.test.ts +626 -0
  464. package/src/runner/errors.ts +307 -0
  465. package/src/runner/index.ts +57 -0
  466. package/src/runner/job-executor.ts +448 -0
  467. package/src/runner/message-processor.ts +355 -0
  468. package/src/runner/sdk-adapter.ts +191 -0
  469. package/src/runner/types.ts +158 -0
  470. package/src/scheduler/__tests__/errors.test.ts +159 -0
  471. package/src/scheduler/__tests__/interval.test.ts +515 -0
  472. package/src/scheduler/__tests__/schedule-runner.test.ts +798 -0
  473. package/src/scheduler/__tests__/schedule-state.test.ts +671 -0
  474. package/src/scheduler/__tests__/scheduler.test.ts +1280 -0
  475. package/src/scheduler/errors.ts +101 -0
  476. package/src/scheduler/index.ts +53 -0
  477. package/src/scheduler/interval.ts +189 -0
  478. package/src/scheduler/schedule-runner.ts +442 -0
  479. package/src/scheduler/schedule-state.ts +211 -0
  480. package/src/scheduler/scheduler.ts +570 -0
  481. package/src/scheduler/types.ts +216 -0
  482. package/src/state/__tests__/directory.test.ts +595 -0
  483. package/src/state/__tests__/fleet-state.test.ts +868 -0
  484. package/src/state/__tests__/job-metadata-schema.test.ts +414 -0
  485. package/src/state/__tests__/job-metadata.test.ts +831 -0
  486. package/src/state/__tests__/job-output.test.ts +856 -0
  487. package/src/state/__tests__/session-schema.test.ts +378 -0
  488. package/src/state/__tests__/session.test.ts +604 -0
  489. package/src/state/directory.ts +217 -0
  490. package/src/state/errors.ts +97 -0
  491. package/src/state/fleet-state.ts +284 -0
  492. package/src/state/index.ts +79 -0
  493. package/src/state/job-metadata.ts +445 -0
  494. package/src/state/job-output.ts +316 -0
  495. package/src/state/schemas/__tests__/job-output.test.ts +338 -0
  496. package/src/state/schemas/fleet-state.ts +120 -0
  497. package/src/state/schemas/index.ts +67 -0
  498. package/src/state/schemas/job-metadata.ts +181 -0
  499. package/src/state/schemas/job-output.ts +177 -0
  500. package/src/state/schemas/session-info.ts +92 -0
  501. package/src/state/session.ts +253 -0
  502. package/src/state/types.ts +59 -0
  503. package/src/state/utils/__tests__/atomic.test.ts +723 -0
  504. package/src/state/utils/__tests__/reads.test.ts +1071 -0
  505. package/src/state/utils/atomic.ts +221 -0
  506. package/src/state/utils/index.ts +6 -0
  507. package/src/state/utils/reads.ts +512 -0
  508. package/src/work-sources/__tests__/github.test.ts +1800 -0
  509. package/src/work-sources/__tests__/manager.test.ts +529 -0
  510. package/src/work-sources/__tests__/registry.test.ts +477 -0
  511. package/src/work-sources/__tests__/types.test.ts +479 -0
  512. package/src/work-sources/adapters/github.ts +1166 -0
  513. package/src/work-sources/adapters/index.ts +64 -0
  514. package/src/work-sources/errors.ts +71 -0
  515. package/src/work-sources/index.ts +148 -0
  516. package/src/work-sources/manager.ts +413 -0
  517. package/src/work-sources/registry.ts +178 -0
  518. package/src/work-sources/types.ts +161 -0
  519. package/tsconfig.json +9 -0
  520. package/vitest.config.ts +19 -0
@@ -0,0 +1,839 @@
1
+ /**
2
+ * Type definitions for the FleetManager module
3
+ *
4
+ * Provides interfaces for fleet manager configuration, state tracking,
5
+ * and event definitions.
6
+ */
7
+
8
+ import type { SchedulerLogger, SchedulerState } from "../scheduler/types.js";
9
+ import type { Schedule } from "../config/index.js";
10
+ import type { AgentState, ScheduleState } from "../state/schemas/fleet-state.js";
11
+ import type { WorkItem } from "../work-sources/types.js";
12
+
13
+ // Re-export event types from dedicated event-types module
14
+ export type {
15
+ FleetManagerEventMap,
16
+ FleetManagerEventName,
17
+ FleetManagerEventPayload,
18
+ FleetManagerEventListener,
19
+ ConfigChange,
20
+ ConfigReloadedPayload,
21
+ AgentStartedPayload,
22
+ AgentStoppedPayload,
23
+ ScheduleTriggeredPayload,
24
+ ScheduleSkippedPayload,
25
+ JobCreatedPayload,
26
+ JobOutputPayload,
27
+ JobCompletedPayload,
28
+ JobFailedPayload,
29
+ // Job control events (US-6)
30
+ JobCancelledPayload,
31
+ JobForkedPayload,
32
+ } from "./event-types.js";
33
+
34
+ // =============================================================================
35
+ // Fleet Manager Options
36
+ // =============================================================================
37
+
38
+ /**
39
+ * Logger interface for fleet manager operations
40
+ * Reuses the same interface as the scheduler for consistency
41
+ */
42
+ export type FleetManagerLogger = SchedulerLogger;
43
+
44
+ /**
45
+ * Options for configuring the FleetManager
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const options: FleetManagerOptions = {
50
+ * configPath: './herdctl.yaml',
51
+ * stateDir: './.herdctl',
52
+ * };
53
+ * ```
54
+ */
55
+ export interface FleetManagerOptions {
56
+ /**
57
+ * Path to the herdctl.yaml configuration file
58
+ *
59
+ * Can be:
60
+ * - An absolute path to the config file
61
+ * - A relative path to the config file
62
+ * - A directory path (will search for herdctl.yaml/herdctl.yml)
63
+ *
64
+ * If not provided, will auto-discover by searching up from cwd.
65
+ */
66
+ configPath?: string;
67
+
68
+ /**
69
+ * Path to the state directory (e.g., .herdctl)
70
+ *
71
+ * This directory stores:
72
+ * - Job artifacts and outputs
73
+ * - Session state
74
+ * - Schedule state
75
+ * - Logs
76
+ *
77
+ * Will be created if it doesn't exist.
78
+ */
79
+ stateDir: string;
80
+
81
+ /**
82
+ * Logger for fleet manager operations
83
+ *
84
+ * Default: console-based logger with [fleet-manager] prefix
85
+ */
86
+ logger?: FleetManagerLogger;
87
+
88
+ /**
89
+ * Interval in milliseconds between scheduler checks
90
+ *
91
+ * Default: 1000 (1 second)
92
+ */
93
+ checkInterval?: number;
94
+ }
95
+
96
+ // =============================================================================
97
+ // Fleet Manager State
98
+ // =============================================================================
99
+
100
+ /**
101
+ * Current status of the fleet manager
102
+ */
103
+ export type FleetManagerStatus =
104
+ | "uninitialized" // Initial state, before initialize() is called
105
+ | "initialized" // After initialize(), ready to start
106
+ | "starting" // During start(), transitioning to running
107
+ | "running" // Scheduler is active, processing schedules
108
+ | "stopping" // During stop(), shutting down gracefully
109
+ | "stopped" // After stop(), fully shut down
110
+ | "error"; // An error occurred during operation
111
+
112
+ /**
113
+ * Detailed fleet manager state for monitoring
114
+ */
115
+ export interface FleetManagerState {
116
+ /**
117
+ * Current fleet manager status
118
+ */
119
+ status: FleetManagerStatus;
120
+
121
+ /**
122
+ * ISO timestamp of when the fleet manager was initialized
123
+ */
124
+ initializedAt: string | null;
125
+
126
+ /**
127
+ * ISO timestamp of when the fleet manager was started
128
+ */
129
+ startedAt: string | null;
130
+
131
+ /**
132
+ * ISO timestamp of when the fleet manager was stopped
133
+ */
134
+ stoppedAt: string | null;
135
+
136
+ /**
137
+ * Number of agents loaded from configuration
138
+ */
139
+ agentCount: number;
140
+
141
+ /**
142
+ * Last error message if status is 'error'
143
+ */
144
+ lastError: string | null;
145
+ }
146
+
147
+ // =============================================================================
148
+ // Fleet Manager Events (Legacy - for backwards compatibility)
149
+ // =============================================================================
150
+
151
+ /**
152
+ * Events emitted by the FleetManager
153
+ *
154
+ * @deprecated Use FleetManagerEventMap from ./event-types.js for strongly-typed events.
155
+ * This interface is kept for backwards compatibility but may be removed in a future version.
156
+ */
157
+ export interface FleetManagerEvents {
158
+ /**
159
+ * Emitted when initialization completes successfully
160
+ */
161
+ initialized: [];
162
+
163
+ /**
164
+ * Emitted when the fleet manager starts running
165
+ */
166
+ started: [];
167
+
168
+ /**
169
+ * Emitted when the fleet manager stops
170
+ */
171
+ stopped: [];
172
+
173
+ /**
174
+ * Emitted when an error occurs
175
+ */
176
+ error: [error: Error];
177
+
178
+ /**
179
+ * Emitted when a schedule triggers an agent run
180
+ * @deprecated Use 'schedule:triggered' event instead
181
+ */
182
+ "schedule:trigger": [agentName: string, scheduleName: string];
183
+
184
+ /**
185
+ * Emitted when an agent run completes successfully
186
+ * @deprecated Use 'job:completed' event instead
187
+ */
188
+ "schedule:complete": [agentName: string, scheduleName: string];
189
+
190
+ /**
191
+ * Emitted when an agent run fails
192
+ * @deprecated Use 'job:failed' event instead
193
+ */
194
+ "schedule:error": [agentName: string, scheduleName: string, error: Error];
195
+ }
196
+
197
+ // =============================================================================
198
+ // Fleet Status Query Types (US-3)
199
+ // =============================================================================
200
+
201
+ /**
202
+ * Schedule information within an AgentInfo
203
+ *
204
+ * Combines static schedule configuration with runtime state.
205
+ */
206
+ export interface ScheduleInfo {
207
+ /**
208
+ * Name of the schedule
209
+ */
210
+ name: string;
211
+
212
+ /**
213
+ * Name of the agent this schedule belongs to
214
+ */
215
+ agentName: string;
216
+
217
+ /**
218
+ * Schedule type (interval, cron, webhook, chat)
219
+ */
220
+ type: string;
221
+
222
+ /**
223
+ * Interval expression (e.g., "5m", "1h") for interval schedules
224
+ */
225
+ interval?: string;
226
+
227
+ /**
228
+ * Cron expression for cron schedules
229
+ */
230
+ expression?: string;
231
+
232
+ /**
233
+ * Current schedule status (idle, running, disabled)
234
+ */
235
+ status: "idle" | "running" | "disabled";
236
+
237
+ /**
238
+ * ISO timestamp of when this schedule last ran
239
+ */
240
+ lastRunAt: string | null;
241
+
242
+ /**
243
+ * ISO timestamp of when this schedule will next run
244
+ */
245
+ nextRunAt: string | null;
246
+
247
+ /**
248
+ * Last error message if the schedule encountered an error
249
+ */
250
+ lastError: string | null;
251
+ }
252
+
253
+ /**
254
+ * Information about a single agent for status queries
255
+ *
256
+ * Combines static configuration with runtime state.
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * const agent = manager.getAgent('my-agent');
261
+ * console.log(`Agent: ${agent.name}`);
262
+ * console.log(`Status: ${agent.status}`);
263
+ * console.log(`Schedules: ${agent.scheduleCount}`);
264
+ * ```
265
+ */
266
+ export interface AgentInfo {
267
+ /**
268
+ * Agent name (unique identifier)
269
+ */
270
+ name: string;
271
+
272
+ /**
273
+ * Agent description from configuration
274
+ */
275
+ description?: string;
276
+
277
+ /**
278
+ * Current agent status
279
+ */
280
+ status: "idle" | "running" | "error";
281
+
282
+ /**
283
+ * ID of the currently running job, if any
284
+ */
285
+ currentJobId: string | null;
286
+
287
+ /**
288
+ * ID of the last completed job
289
+ */
290
+ lastJobId: string | null;
291
+
292
+ /**
293
+ * Maximum concurrent instances allowed for this agent
294
+ */
295
+ maxConcurrent: number;
296
+
297
+ /**
298
+ * Number of currently running instances
299
+ */
300
+ runningCount: number;
301
+
302
+ /**
303
+ * Error message if status is 'error'
304
+ */
305
+ errorMessage: string | null;
306
+
307
+ /**
308
+ * Number of schedules configured for this agent
309
+ */
310
+ scheduleCount: number;
311
+
312
+ /**
313
+ * Detailed information about each schedule
314
+ */
315
+ schedules: ScheduleInfo[];
316
+
317
+ /**
318
+ * Model configured for this agent (if any)
319
+ */
320
+ model?: string;
321
+
322
+ /**
323
+ * Workspace path for this agent
324
+ */
325
+ workspace?: string;
326
+ }
327
+
328
+ /**
329
+ * Summary counts for quick fleet overview
330
+ */
331
+ export interface FleetCounts {
332
+ /**
333
+ * Total number of configured agents
334
+ */
335
+ totalAgents: number;
336
+
337
+ /**
338
+ * Number of agents currently idle
339
+ */
340
+ idleAgents: number;
341
+
342
+ /**
343
+ * Number of agents currently running jobs
344
+ */
345
+ runningAgents: number;
346
+
347
+ /**
348
+ * Number of agents in error state
349
+ */
350
+ errorAgents: number;
351
+
352
+ /**
353
+ * Total number of schedules across all agents
354
+ */
355
+ totalSchedules: number;
356
+
357
+ /**
358
+ * Number of schedules currently running
359
+ */
360
+ runningSchedules: number;
361
+
362
+ /**
363
+ * Total number of jobs currently running
364
+ */
365
+ runningJobs: number;
366
+ }
367
+
368
+ /**
369
+ * Overall fleet status information
370
+ *
371
+ * Provides a comprehensive snapshot of the fleet state for CLI `herdctl status`.
372
+ *
373
+ * @example
374
+ * ```typescript
375
+ * const status = manager.getStatus();
376
+ * console.log(`Fleet: ${status.state}`);
377
+ * console.log(`Uptime: ${status.uptimeSeconds}s`);
378
+ * console.log(`Agents: ${status.counts.totalAgents}`);
379
+ * console.log(`Running jobs: ${status.counts.runningJobs}`);
380
+ * ```
381
+ */
382
+ export interface FleetStatus {
383
+ /**
384
+ * Current fleet manager state
385
+ */
386
+ state: FleetManagerStatus;
387
+
388
+ /**
389
+ * Fleet uptime in seconds (time since started)
390
+ * Null if fleet has never been started
391
+ */
392
+ uptimeSeconds: number | null;
393
+
394
+ /**
395
+ * ISO timestamp of when the fleet was initialized
396
+ */
397
+ initializedAt: string | null;
398
+
399
+ /**
400
+ * ISO timestamp of when the fleet was started
401
+ */
402
+ startedAt: string | null;
403
+
404
+ /**
405
+ * ISO timestamp of when the fleet was stopped
406
+ */
407
+ stoppedAt: string | null;
408
+
409
+ /**
410
+ * Summary counts for agents and jobs
411
+ */
412
+ counts: FleetCounts;
413
+
414
+ /**
415
+ * Scheduler state information
416
+ */
417
+ scheduler: {
418
+ /**
419
+ * Scheduler status (stopped, running, stopping)
420
+ */
421
+ status: "stopped" | "running" | "stopping";
422
+
423
+ /**
424
+ * Total number of schedule checks performed
425
+ */
426
+ checkCount: number;
427
+
428
+ /**
429
+ * Total number of triggers fired
430
+ */
431
+ triggerCount: number;
432
+
433
+ /**
434
+ * ISO timestamp of last schedule check
435
+ */
436
+ lastCheckAt: string | null;
437
+
438
+ /**
439
+ * Check interval in milliseconds
440
+ */
441
+ checkIntervalMs: number;
442
+ };
443
+
444
+ /**
445
+ * Last error message if state is 'error'
446
+ */
447
+ lastError: string | null;
448
+ }
449
+
450
+ // =============================================================================
451
+ // Trigger Options (US-5)
452
+ // =============================================================================
453
+
454
+ /**
455
+ * Options for manually triggering an agent
456
+ *
457
+ * These options allow overriding agent defaults and passing runtime
458
+ * configuration when triggering an agent outside its normal schedule.
459
+ *
460
+ * @example
461
+ * ```typescript
462
+ * // Trigger with default schedule settings
463
+ * const job = await manager.trigger('my-agent');
464
+ *
465
+ * // Trigger a specific schedule
466
+ * const job = await manager.trigger('my-agent', 'hourly');
467
+ *
468
+ * // Trigger with runtime options
469
+ * const job = await manager.trigger('my-agent', 'hourly', {
470
+ * prompt: 'Review the latest PR',
471
+ * workItems: [{ id: '123', title: 'Bug fix PR' }],
472
+ * });
473
+ * ```
474
+ */
475
+ export interface TriggerOptions {
476
+ /**
477
+ * Override the prompt for this trigger
478
+ *
479
+ * This prompt will be used instead of the schedule's configured prompt
480
+ * or the agent's default prompt.
481
+ */
482
+ prompt?: string;
483
+
484
+ /**
485
+ * Work items to process during this trigger
486
+ *
487
+ * These work items will be passed to the agent instead of fetching
488
+ * from the configured work source.
489
+ */
490
+ workItems?: WorkItem[];
491
+
492
+ /**
493
+ * Whether to bypass concurrency limits for this trigger
494
+ *
495
+ * When true, the agent will be triggered even if it's at max_concurrent.
496
+ * Use with caution - this can lead to resource contention.
497
+ *
498
+ * Default: false
499
+ */
500
+ bypassConcurrencyLimit?: boolean;
501
+ }
502
+
503
+ /**
504
+ * Result of a manual trigger operation
505
+ *
506
+ * Contains information about the job that was created.
507
+ */
508
+ export interface TriggerResult {
509
+ /**
510
+ * Unique identifier for the created job
511
+ */
512
+ jobId: string;
513
+
514
+ /**
515
+ * Name of the agent that was triggered
516
+ */
517
+ agentName: string;
518
+
519
+ /**
520
+ * Name of the schedule used (if any)
521
+ */
522
+ scheduleName: string | null;
523
+
524
+ /**
525
+ * ISO timestamp when the job was created
526
+ */
527
+ startedAt: string;
528
+
529
+ /**
530
+ * The prompt that was used for the trigger
531
+ */
532
+ prompt?: string;
533
+ }
534
+
535
+ // =============================================================================
536
+ // Stop Options (US-8)
537
+ // =============================================================================
538
+
539
+ /**
540
+ * Options for stopping the FleetManager gracefully
541
+ *
542
+ * These options control how the fleet manager handles running jobs
543
+ * during shutdown.
544
+ *
545
+ * @example
546
+ * ```typescript
547
+ * // Stop with default options (wait for jobs, 30s timeout)
548
+ * await manager.stop();
549
+ *
550
+ * // Stop with custom timeout
551
+ * await manager.stop({ timeout: 60000 });
552
+ *
553
+ * // Stop immediately without waiting for jobs
554
+ * await manager.stop({ waitForJobs: false });
555
+ *
556
+ * // Force cancel jobs after timeout
557
+ * await manager.stop({
558
+ * timeout: 30000,
559
+ * cancelOnTimeout: true,
560
+ * });
561
+ * ```
562
+ */
563
+ export interface FleetManagerStopOptions {
564
+ /**
565
+ * Whether to wait for running jobs to complete before stopping
566
+ *
567
+ * When true, the stop operation will wait for all currently running
568
+ * jobs to complete before finishing the shutdown. When false, the
569
+ * fleet manager will stop immediately, leaving jobs running in the
570
+ * background (not recommended).
571
+ *
572
+ * Default: true
573
+ */
574
+ waitForJobs?: boolean;
575
+
576
+ /**
577
+ * Maximum time in milliseconds to wait for running jobs to complete
578
+ *
579
+ * Only applies when waitForJobs is true. After this timeout:
580
+ * - If cancelOnTimeout is true, running jobs will be cancelled
581
+ * - If cancelOnTimeout is false (default), a FleetManagerShutdownError is thrown
582
+ *
583
+ * Default: 30000 (30 seconds)
584
+ */
585
+ timeout?: number;
586
+
587
+ /**
588
+ * Whether to cancel jobs that are still running after the timeout
589
+ *
590
+ * When true, jobs that don't complete within the timeout will be
591
+ * cancelled via the cancelJob method. The fleet manager will wait
592
+ * for the cancellation to complete before emitting 'stopped'.
593
+ *
594
+ * When false, a FleetManagerShutdownError is thrown if jobs are
595
+ * still running after timeout.
596
+ *
597
+ * Default: false
598
+ */
599
+ cancelOnTimeout?: boolean;
600
+
601
+ /**
602
+ * Timeout in milliseconds for cancelling individual jobs
603
+ *
604
+ * Only applies when cancelOnTimeout is true. This is the time
605
+ * given to each job to respond to SIGTERM before being forcefully
606
+ * killed with SIGKILL.
607
+ *
608
+ * Default: 10000 (10 seconds)
609
+ */
610
+ cancelTimeout?: number;
611
+ }
612
+
613
+ // =============================================================================
614
+ // Job Control Types (US-6)
615
+ // =============================================================================
616
+
617
+ // =============================================================================
618
+ // Log Streaming Types (US-11)
619
+ // =============================================================================
620
+
621
+ /**
622
+ * Log levels for filtering log entries
623
+ */
624
+ export type LogLevel = "debug" | "info" | "warn" | "error";
625
+
626
+ /**
627
+ * Source type for log entries
628
+ */
629
+ export type LogSource = "fleet" | "agent" | "job" | "scheduler";
630
+
631
+ /**
632
+ * A single log entry from the fleet
633
+ *
634
+ * @example
635
+ * ```typescript
636
+ * const entry: LogEntry = {
637
+ * timestamp: '2024-01-15T10:30:00.000Z',
638
+ * level: 'info',
639
+ * source: 'agent',
640
+ * agentName: 'my-agent',
641
+ * jobId: 'job-2024-01-15-abc123',
642
+ * message: 'Processing work item',
643
+ * data: { itemId: '456' },
644
+ * };
645
+ * ```
646
+ */
647
+ export interface LogEntry {
648
+ /**
649
+ * ISO timestamp when the log was generated
650
+ */
651
+ timestamp: string;
652
+
653
+ /**
654
+ * Log level
655
+ */
656
+ level: LogLevel;
657
+
658
+ /**
659
+ * Source of the log entry
660
+ */
661
+ source: LogSource;
662
+
663
+ /**
664
+ * Agent name (if applicable)
665
+ */
666
+ agentName?: string;
667
+
668
+ /**
669
+ * Job ID (if applicable)
670
+ */
671
+ jobId?: string;
672
+
673
+ /**
674
+ * Schedule name (if applicable)
675
+ */
676
+ scheduleName?: string;
677
+
678
+ /**
679
+ * Log message
680
+ */
681
+ message: string;
682
+
683
+ /**
684
+ * Additional structured data
685
+ */
686
+ data?: Record<string, unknown>;
687
+ }
688
+
689
+ /**
690
+ * Options for streaming logs
691
+ *
692
+ * @example
693
+ * ```typescript
694
+ * // Stream all logs at info level and above
695
+ * const stream = manager.streamLogs({ level: 'info' });
696
+ *
697
+ * // Stream only error logs for a specific agent
698
+ * const stream = manager.streamLogs({
699
+ * level: 'error',
700
+ * agentName: 'my-agent',
701
+ * });
702
+ * ```
703
+ */
704
+ export interface LogStreamOptions {
705
+ /**
706
+ * Minimum log level to include
707
+ *
708
+ * Filters logs to only include entries at this level or higher severity.
709
+ * Severity order: debug < info < warn < error
710
+ *
711
+ * Default: 'info'
712
+ */
713
+ level?: LogLevel;
714
+
715
+ /**
716
+ * Filter logs to a specific agent
717
+ */
718
+ agentName?: string;
719
+
720
+ /**
721
+ * Filter logs to a specific job
722
+ */
723
+ jobId?: string;
724
+
725
+ /**
726
+ * Whether to include historical logs before streaming new ones
727
+ *
728
+ * When true, completed jobs will replay their history before
729
+ * streaming ends. When false, only new logs are streamed.
730
+ *
731
+ * Default: true
732
+ */
733
+ includeHistory?: boolean;
734
+
735
+ /**
736
+ * Maximum number of historical entries to include
737
+ *
738
+ * Only applies when includeHistory is true.
739
+ *
740
+ * Default: 1000
741
+ */
742
+ historyLimit?: number;
743
+ }
744
+
745
+ /**
746
+ * Modifications to apply when forking a job
747
+ *
748
+ * Allows overriding specific configuration when creating a new job
749
+ * based on an existing one. Any field not specified will be copied
750
+ * from the original job.
751
+ *
752
+ * @example
753
+ * ```typescript
754
+ * // Fork with a modified prompt
755
+ * const newJob = await manager.forkJob('job-2024-01-15-abc123', {
756
+ * prompt: 'Retry the previous task with more detailed logging',
757
+ * });
758
+ *
759
+ * // Fork to a different schedule
760
+ * const newJob = await manager.forkJob('job-2024-01-15-abc123', {
761
+ * schedule: 'daily',
762
+ * });
763
+ * ```
764
+ */
765
+ export interface JobModifications {
766
+ /**
767
+ * Override the prompt for the forked job
768
+ */
769
+ prompt?: string;
770
+
771
+ /**
772
+ * Override the schedule name for the forked job
773
+ */
774
+ schedule?: string;
775
+
776
+ /**
777
+ * Work items to process in the forked job
778
+ * (replaces work items from the original job)
779
+ */
780
+ workItems?: WorkItem[];
781
+ }
782
+
783
+ /**
784
+ * Result of canceling a job
785
+ */
786
+ export interface CancelJobResult {
787
+ /**
788
+ * ID of the job that was canceled
789
+ */
790
+ jobId: string;
791
+
792
+ /**
793
+ * Whether the cancellation was successful
794
+ */
795
+ success: boolean;
796
+
797
+ /**
798
+ * How the job was terminated
799
+ * - 'graceful': Job responded to SIGTERM and exited cleanly
800
+ * - 'forced': Job was killed with SIGKILL after timeout
801
+ * - 'already_stopped': Job was not running when cancel was called
802
+ */
803
+ terminationType: 'graceful' | 'forced' | 'already_stopped';
804
+
805
+ /**
806
+ * ISO timestamp when the job was canceled
807
+ */
808
+ canceledAt: string;
809
+ }
810
+
811
+ /**
812
+ * Result of forking a job
813
+ */
814
+ export interface ForkJobResult {
815
+ /**
816
+ * ID of the newly created job
817
+ */
818
+ jobId: string;
819
+
820
+ /**
821
+ * ID of the job that was forked
822
+ */
823
+ forkedFromJobId: string;
824
+
825
+ /**
826
+ * Name of the agent executing the new job
827
+ */
828
+ agentName: string;
829
+
830
+ /**
831
+ * ISO timestamp when the forked job was created
832
+ */
833
+ startedAt: string;
834
+
835
+ /**
836
+ * The prompt that was used for the forked job
837
+ */
838
+ prompt?: string;
839
+ }