@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,370 @@
1
+ /**
2
+ * Work Source Manager Interface
3
+ *
4
+ * Defines the contract between work sources and the scheduler/runner.
5
+ * The scheduler uses this interface to fetch work, report outcomes,
6
+ * and manage work source instances per agent.
7
+ *
8
+ * This module defines ONLY the interface - no scheduler logic is implemented here.
9
+ * The scheduler implementation will import and use this interface.
10
+ *
11
+ * @example Scheduler Usage Pattern
12
+ * ```typescript
13
+ * // The scheduler will use the manager like this:
14
+ * const manager: WorkSourceManager = getWorkSourceManager();
15
+ *
16
+ * // 1. Get next available work for an agent
17
+ * const workItem = await manager.getNextWorkItem(agent);
18
+ * if (!workItem) {
19
+ * // No work available, scheduler may check other agents or wait
20
+ * return;
21
+ * }
22
+ *
23
+ * // 2. Work item is already claimed by getNextWorkItem()
24
+ * // Build prompt from work item and execute job
25
+ * const prompt = buildPromptFromWorkItem(workItem);
26
+ * const result = await executeJob({ agent, prompt, ... });
27
+ *
28
+ * // 3. Report outcome to update external system
29
+ * await manager.reportOutcome(workItem.id, {
30
+ * outcome: result.success ? 'success' : 'failure',
31
+ * summary: result.summary ?? 'Job completed',
32
+ * error: result.error?.message,
33
+ * });
34
+ * ```
35
+ *
36
+ * @example Error Handling Pattern
37
+ * ```typescript
38
+ * try {
39
+ * const workItem = await manager.getNextWorkItem(agent);
40
+ * // ... execute work ...
41
+ * await manager.reportOutcome(workItem.id, { outcome: 'success', summary: '...' });
42
+ * } catch (error) {
43
+ * // On unexpected error, release the work item back to available pool
44
+ * if (workItem) {
45
+ * await manager.releaseWorkItem(workItem.id, `Unexpected error: ${error.message}`);
46
+ * }
47
+ * }
48
+ * ```
49
+ *
50
+ * @example Multiple Agents Pattern
51
+ * ```typescript
52
+ * // Manager caches adapters per agent to avoid repeated instantiation
53
+ * for (const agent of agents) {
54
+ * // Each call uses cached adapter for the agent's work source
55
+ * const workItem = await manager.getNextWorkItem(agent);
56
+ * // ...
57
+ * }
58
+ * ```
59
+ */
60
+ import type { ResolvedAgent } from "../config/loader.js";
61
+ import type { WorkItem, WorkResult, ClaimResult, ReleaseResult, ReleaseOptions, FetchOptions } from "./types.js";
62
+ import type { WorkSourceAdapter } from "./index.js";
63
+ /**
64
+ * Options for fetching the next work item
65
+ *
66
+ * Allows the scheduler to customize work item selection beyond
67
+ * what's configured in the agent's work source.
68
+ */
69
+ export interface GetNextWorkItemOptions {
70
+ /**
71
+ * Additional labels to filter by (combined with agent's configured labels)
72
+ */
73
+ labels?: string[];
74
+ /**
75
+ * Whether to automatically claim the work item
76
+ * Defaults to true - the scheduler typically wants to claim immediately
77
+ */
78
+ autoClaim?: boolean;
79
+ /**
80
+ * Custom fetch options to pass to the adapter
81
+ * These override the default options for this specific fetch
82
+ */
83
+ fetchOptions?: Partial<FetchOptions>;
84
+ }
85
+ /**
86
+ * Result of getting the next work item
87
+ *
88
+ * Includes both the work item (if found) and claim status (if autoClaim was true).
89
+ * This allows the scheduler to handle various scenarios:
90
+ * - No work available (item is null)
91
+ * - Work found and claimed successfully
92
+ * - Work found but claim failed (race condition with another agent)
93
+ */
94
+ export interface GetNextWorkItemResult {
95
+ /**
96
+ * The work item, or null if no work is available
97
+ */
98
+ item: WorkItem | null;
99
+ /**
100
+ * Whether the work item was claimed
101
+ * Only relevant when autoClaim is true and item is not null
102
+ */
103
+ claimed: boolean;
104
+ /**
105
+ * Claim result details if claiming was attempted
106
+ * Contains failure reason if claimed is false
107
+ */
108
+ claimResult?: ClaimResult;
109
+ }
110
+ /**
111
+ * Options for releasing a work item
112
+ */
113
+ export interface ReleaseWorkItemOptions extends ReleaseOptions {
114
+ /**
115
+ * The agent that claimed the work item
116
+ * Used to resolve the correct adapter for the release operation
117
+ */
118
+ agent: ResolvedAgent;
119
+ }
120
+ /**
121
+ * Options for reporting work outcome
122
+ */
123
+ export interface ReportOutcomeOptions {
124
+ /**
125
+ * The agent that processed the work item
126
+ * Used to resolve the correct adapter for the completion operation
127
+ */
128
+ agent: ResolvedAgent;
129
+ }
130
+ /**
131
+ * Interface for managing work sources and coordinating with the scheduler
132
+ *
133
+ * The WorkSourceManager provides a high-level interface for the scheduler to:
134
+ * 1. Fetch available work items for agents
135
+ * 2. Claim work items to prevent race conditions
136
+ * 3. Report outcomes after job completion
137
+ * 4. Release work items on error/timeout
138
+ *
139
+ * The manager handles:
140
+ * - Work source adapter instantiation and caching per agent
141
+ * - Resolving work source configuration from agent configs
142
+ * - Coordinating claim/release lifecycle
143
+ *
144
+ * Implementation Notes for Scheduler Authors:
145
+ * - Call getNextWorkItem() with autoClaim=true (default) for atomic fetch+claim
146
+ * - Always call reportOutcome() or releaseWorkItem() after processing
147
+ * - The manager caches adapters, so repeated calls are efficient
148
+ * - If an agent has no work_source configured, getNextWorkItem returns { item: null }
149
+ *
150
+ * @example Basic Scheduler Loop
151
+ * ```typescript
152
+ * async function processAgent(manager: WorkSourceManager, agent: ResolvedAgent) {
153
+ * // Check if we can run more instances
154
+ * if (activeJobs[agent.name] >= (agent.instances?.max_concurrent ?? 1)) {
155
+ * return; // Already at capacity
156
+ * }
157
+ *
158
+ * // Try to get work
159
+ * const { item, claimed, claimResult } = await manager.getNextWorkItem(agent);
160
+ *
161
+ * if (!item) {
162
+ * return; // No work available
163
+ * }
164
+ *
165
+ * if (!claimed) {
166
+ * // Someone else claimed it first (race condition)
167
+ * console.log(`Work ${item.id} claimed by another agent: ${claimResult?.reason}`);
168
+ * return;
169
+ * }
170
+ *
171
+ * // Execute the job
172
+ * try {
173
+ * const result = await executeJob(agent, item);
174
+ * await manager.reportOutcome(item.id, result, { agent });
175
+ * } catch (error) {
176
+ * await manager.releaseWorkItem(item.id, {
177
+ * agent,
178
+ * reason: error.message,
179
+ * addComment: true,
180
+ * });
181
+ * }
182
+ * }
183
+ * ```
184
+ */
185
+ export interface WorkSourceManager {
186
+ /**
187
+ * Get the next available work item for an agent
188
+ *
189
+ * Fetches the highest priority available work item from the agent's
190
+ * configured work source. By default, also claims the item atomically
191
+ * to prevent race conditions with other agents.
192
+ *
193
+ * @param agent - The resolved agent configuration
194
+ * @param options - Options for fetching and claiming
195
+ * @returns Result containing the work item (if any) and claim status
196
+ *
197
+ * @remarks
198
+ * - Returns { item: null, claimed: false } if agent has no work_source
199
+ * - Returns { item: null, claimed: false } if no work is available
200
+ * - With autoClaim=true, claimed=false means another agent claimed it first
201
+ * - The scheduler should handle claim failures by retrying or moving on
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * const result = await manager.getNextWorkItem(agent);
206
+ *
207
+ * if (!result.item) {
208
+ * console.log('No work available for agent:', agent.name);
209
+ * return;
210
+ * }
211
+ *
212
+ * if (!result.claimed) {
213
+ * console.log('Work was claimed by another agent');
214
+ * return;
215
+ * }
216
+ *
217
+ * // Safe to process the work item
218
+ * console.log('Processing:', result.item.title);
219
+ * ```
220
+ */
221
+ getNextWorkItem(agent: ResolvedAgent, options?: GetNextWorkItemOptions): Promise<GetNextWorkItemResult>;
222
+ /**
223
+ * Report the outcome of processing a work item
224
+ *
225
+ * Updates the external system (GitHub, Linear, etc.) with the job result.
226
+ * This typically involves:
227
+ * - Adding a comment with the summary
228
+ * - Closing the issue/task if successful
229
+ * - Removing in-progress labels
230
+ * - Adding completion labels
231
+ *
232
+ * @param taskId - The work item ID (from WorkItem.id)
233
+ * @param result - The outcome of the work
234
+ * @param options - Options including the agent that processed the item
235
+ *
236
+ * @remarks
237
+ * - Must be called after job completion (success or failure)
238
+ * - For failures, use result.outcome='failure' and include result.error
239
+ * - The external system behavior depends on the adapter implementation
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * // Success case
244
+ * await manager.reportOutcome(
245
+ * workItem.id,
246
+ * {
247
+ * outcome: 'success',
248
+ * summary: 'Fixed the authentication bug',
249
+ * details: 'Updated the JWT validation logic...',
250
+ * artifacts: ['https://github.com/org/repo/pull/123'],
251
+ * },
252
+ * { agent }
253
+ * );
254
+ *
255
+ * // Failure case
256
+ * await manager.reportOutcome(
257
+ * workItem.id,
258
+ * {
259
+ * outcome: 'failure',
260
+ * summary: 'Unable to reproduce the issue',
261
+ * error: 'Tests pass on all environments',
262
+ * },
263
+ * { agent }
264
+ * );
265
+ * ```
266
+ */
267
+ reportOutcome(taskId: string, result: WorkResult, options: ReportOutcomeOptions): Promise<void>;
268
+ /**
269
+ * Release a claimed work item without completing it
270
+ *
271
+ * Returns the work item to the available pool so other agents can claim it.
272
+ * Use this when:
273
+ * - Job times out
274
+ * - Unexpected error prevents completion
275
+ * - Agent is shutting down mid-task
276
+ * - Manual intervention is needed
277
+ *
278
+ * @param taskId - The work item ID (from WorkItem.id)
279
+ * @param options - Release options including reason and agent
280
+ * @returns Result indicating if the release was successful
281
+ *
282
+ * @remarks
283
+ * - Always call this or reportOutcome after claiming work
284
+ * - If addComment is true, posts a comment explaining the release
285
+ * - The work item becomes available for other agents to claim
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * // On timeout
290
+ * await manager.releaseWorkItem(workItem.id, {
291
+ * agent,
292
+ * reason: 'Job timed out after 30 minutes',
293
+ * addComment: true,
294
+ * });
295
+ *
296
+ * // On error
297
+ * await manager.releaseWorkItem(workItem.id, {
298
+ * agent,
299
+ * reason: `Unexpected error: ${error.message}`,
300
+ * addComment: true,
301
+ * });
302
+ * ```
303
+ */
304
+ releaseWorkItem(taskId: string, options: ReleaseWorkItemOptions): Promise<ReleaseResult>;
305
+ /**
306
+ * Get the work source adapter for an agent
307
+ *
308
+ * Returns the cached adapter instance for the agent's work source,
309
+ * or null if the agent has no work source configured.
310
+ *
311
+ * This is useful for:
312
+ * - Direct adapter operations not covered by the manager
313
+ * - Inspecting adapter state or configuration
314
+ * - Testing and debugging
315
+ *
316
+ * @param agent - The resolved agent configuration
317
+ * @returns The adapter instance or null
318
+ *
319
+ * @remarks
320
+ * - Adapters are cached per agent (by agent name + work source type)
321
+ * - Creating new adapters is cheap but caching improves consistency
322
+ * - The adapter is created lazily on first access
323
+ *
324
+ * @example
325
+ * ```typescript
326
+ * const adapter = await manager.getAdapter(agent);
327
+ *
328
+ * if (!adapter) {
329
+ * console.log('Agent has no work source configured');
330
+ * return;
331
+ * }
332
+ *
333
+ * // Direct adapter operations
334
+ * const workItem = await adapter.getWork('github:12345');
335
+ * ```
336
+ */
337
+ getAdapter(agent: ResolvedAgent): Promise<WorkSourceAdapter | null>;
338
+ /**
339
+ * Clear the adapter cache
340
+ *
341
+ * Removes all cached adapter instances. Use this when:
342
+ * - Configuration has changed and adapters need to be recreated
343
+ * - Testing requires fresh adapter instances
344
+ * - Memory cleanup is needed
345
+ *
346
+ * @remarks
347
+ * - Subsequent getAdapter/getNextWorkItem calls will create new adapters
348
+ * - In-flight operations on old adapters are not affected
349
+ * - Does not affect external system state
350
+ */
351
+ clearCache(): void;
352
+ }
353
+ /**
354
+ * Factory function for creating WorkSourceManager instances
355
+ *
356
+ * The scheduler will use this to get a manager instance. The default
357
+ * implementation is provided by the work-sources module, but this can
358
+ * be customized for testing or advanced use cases.
359
+ *
360
+ * @example
361
+ * ```typescript
362
+ * // Default usage
363
+ * const manager = createWorkSourceManager();
364
+ *
365
+ * // With custom options (future extension point)
366
+ * const manager = createWorkSourceManager({ cache: customCache });
367
+ * ```
368
+ */
369
+ export type WorkSourceManagerFactory = () => WorkSourceManager;
370
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/work-sources/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMpD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEtB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D;;;OAGG;IACH,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,KAAK,EAAE,aAAa,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,eAAe,CACb,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAEpE;;;;;;;;;;;;OAYG;IACH,UAAU,IAAI,IAAI,CAAC;CACpB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Work Source Manager Interface
3
+ *
4
+ * Defines the contract between work sources and the scheduler/runner.
5
+ * The scheduler uses this interface to fetch work, report outcomes,
6
+ * and manage work source instances per agent.
7
+ *
8
+ * This module defines ONLY the interface - no scheduler logic is implemented here.
9
+ * The scheduler implementation will import and use this interface.
10
+ *
11
+ * @example Scheduler Usage Pattern
12
+ * ```typescript
13
+ * // The scheduler will use the manager like this:
14
+ * const manager: WorkSourceManager = getWorkSourceManager();
15
+ *
16
+ * // 1. Get next available work for an agent
17
+ * const workItem = await manager.getNextWorkItem(agent);
18
+ * if (!workItem) {
19
+ * // No work available, scheduler may check other agents or wait
20
+ * return;
21
+ * }
22
+ *
23
+ * // 2. Work item is already claimed by getNextWorkItem()
24
+ * // Build prompt from work item and execute job
25
+ * const prompt = buildPromptFromWorkItem(workItem);
26
+ * const result = await executeJob({ agent, prompt, ... });
27
+ *
28
+ * // 3. Report outcome to update external system
29
+ * await manager.reportOutcome(workItem.id, {
30
+ * outcome: result.success ? 'success' : 'failure',
31
+ * summary: result.summary ?? 'Job completed',
32
+ * error: result.error?.message,
33
+ * });
34
+ * ```
35
+ *
36
+ * @example Error Handling Pattern
37
+ * ```typescript
38
+ * try {
39
+ * const workItem = await manager.getNextWorkItem(agent);
40
+ * // ... execute work ...
41
+ * await manager.reportOutcome(workItem.id, { outcome: 'success', summary: '...' });
42
+ * } catch (error) {
43
+ * // On unexpected error, release the work item back to available pool
44
+ * if (workItem) {
45
+ * await manager.releaseWorkItem(workItem.id, `Unexpected error: ${error.message}`);
46
+ * }
47
+ * }
48
+ * ```
49
+ *
50
+ * @example Multiple Agents Pattern
51
+ * ```typescript
52
+ * // Manager caches adapters per agent to avoid repeated instantiation
53
+ * for (const agent of agents) {
54
+ * // Each call uses cached adapter for the agent's work source
55
+ * const workItem = await manager.getNextWorkItem(agent);
56
+ * // ...
57
+ * }
58
+ * ```
59
+ */
60
+ export {};
61
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/work-sources/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Work Source Registry
3
+ *
4
+ * Provides a singleton registry for work source adapters.
5
+ * Allows registration of factory functions that create adapter instances
6
+ * based on configuration.
7
+ */
8
+ import type { WorkSourceAdapter } from "./index.js";
9
+ import type { WorkSourceLabels } from "../config/schema.js";
10
+ /**
11
+ * Configuration for a work source adapter
12
+ *
13
+ * This is a flexible configuration type that allows any work source type
14
+ * to be registered. For type-safe configuration of known types, use the
15
+ * specific config types (e.g., GitHubWorkSourceConfig).
16
+ */
17
+ export interface WorkSourceConfig {
18
+ /** The type identifier for this work source (e.g., 'github', 'linear') */
19
+ type: string;
20
+ /** Label configuration for work item states */
21
+ labels?: WorkSourceLabels;
22
+ /** Whether to clean up in-progress labels on startup */
23
+ cleanup_in_progress?: boolean;
24
+ /** Additional adapter-specific configuration */
25
+ [key: string]: unknown;
26
+ }
27
+ /**
28
+ * Factory function that creates a work source adapter instance
29
+ *
30
+ * @param config - The configuration for the work source
31
+ * @returns A configured WorkSourceAdapter instance
32
+ */
33
+ export type WorkSourceFactory = (config: WorkSourceConfig) => WorkSourceAdapter;
34
+ /**
35
+ * Register a work source adapter factory
36
+ *
37
+ * Registers a factory function that will be used to create adapter instances
38
+ * for the specified type. The factory is called when `getWorkSource()` is
39
+ * invoked with a matching type.
40
+ *
41
+ * @param type - The unique type identifier (e.g., 'github', 'linear')
42
+ * @param factory - Factory function that creates adapter instances
43
+ * @throws {DuplicateWorkSourceError} If the type is already registered
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * registerWorkSource('github', (config) => new GitHubAdapter(config));
48
+ * registerWorkSource('linear', (config) => new LinearAdapter(config));
49
+ * ```
50
+ */
51
+ export declare function registerWorkSource(type: string, factory: WorkSourceFactory): void;
52
+ /**
53
+ * Get a configured work source adapter instance
54
+ *
55
+ * Looks up the factory for the specified type and calls it with the
56
+ * provided configuration to create an adapter instance.
57
+ *
58
+ * @param config - The work source configuration (must include `type`)
59
+ * @returns A configured WorkSourceAdapter instance
60
+ * @throws {UnknownWorkSourceError} If no factory is registered for the type
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const adapter = getWorkSource({
65
+ * type: 'github',
66
+ * labels: { ready: 'agent-ready', in_progress: 'agent-working' }
67
+ * });
68
+ *
69
+ * const { items } = await adapter.fetchAvailableWork();
70
+ * ```
71
+ */
72
+ export declare function getWorkSource(config: WorkSourceConfig): WorkSourceAdapter;
73
+ /**
74
+ * Get a list of all registered work source types
75
+ *
76
+ * @returns Array of registered type identifiers
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const types = getRegisteredTypes();
81
+ * // ['github', 'linear', 'jira']
82
+ * ```
83
+ */
84
+ export declare function getRegisteredTypes(): string[];
85
+ /**
86
+ * Check if a work source type is registered
87
+ *
88
+ * @param type - The type identifier to check
89
+ * @returns True if the type is registered
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * if (isWorkSourceRegistered('github')) {
94
+ * const adapter = getWorkSource({ type: 'github' });
95
+ * }
96
+ * ```
97
+ */
98
+ export declare function isWorkSourceRegistered(type: string): boolean;
99
+ /**
100
+ * Unregister a work source adapter factory
101
+ *
102
+ * Removes the factory for the specified type. Primarily useful for testing.
103
+ *
104
+ * @param type - The type identifier to unregister
105
+ * @returns True if the type was registered and removed, false otherwise
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * // In tests
110
+ * unregisterWorkSource('github');
111
+ * registerWorkSource('github', mockFactory);
112
+ * ```
113
+ */
114
+ export declare function unregisterWorkSource(type: string): boolean;
115
+ /**
116
+ * Clear all registered work source factories
117
+ *
118
+ * Removes all registered factories. Primarily useful for testing.
119
+ * Note: This will also clear built-in adapters.
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // In test setup/teardown
124
+ * clearWorkSourceRegistry();
125
+ * ```
126
+ */
127
+ export declare function clearWorkSourceRegistry(): void;
128
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/work-sources/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAO5D;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;AAehF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAKN;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAQzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}