@fidelios/server 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 (743) hide show
  1. package/dist/adapters/codex-models.d.ts +4 -0
  2. package/dist/adapters/codex-models.d.ts.map +1 -0
  3. package/dist/adapters/codex-models.js +98 -0
  4. package/dist/adapters/codex-models.js.map +1 -0
  5. package/dist/adapters/cursor-models.d.ts +13 -0
  6. package/dist/adapters/cursor-models.d.ts.map +1 -0
  7. package/dist/adapters/cursor-models.js +148 -0
  8. package/dist/adapters/cursor-models.js.map +1 -0
  9. package/dist/adapters/http/execute.d.ts +3 -0
  10. package/dist/adapters/http/execute.d.ts.map +1 -0
  11. package/dist/adapters/http/execute.js +39 -0
  12. package/dist/adapters/http/execute.js.map +1 -0
  13. package/dist/adapters/http/index.d.ts +3 -0
  14. package/dist/adapters/http/index.d.ts.map +1 -0
  15. package/dist/adapters/http/index.js +20 -0
  16. package/dist/adapters/http/index.js.map +1 -0
  17. package/dist/adapters/http/test.d.ts +3 -0
  18. package/dist/adapters/http/test.d.ts.map +1 -0
  19. package/dist/adapters/http/test.js +106 -0
  20. package/dist/adapters/http/test.js.map +1 -0
  21. package/dist/adapters/index.d.ts +4 -0
  22. package/dist/adapters/index.d.ts.map +1 -0
  23. package/dist/adapters/index.js +3 -0
  24. package/dist/adapters/index.js.map +1 -0
  25. package/dist/adapters/process/execute.d.ts +3 -0
  26. package/dist/adapters/process/execute.d.ts.map +1 -0
  27. package/dist/adapters/process/execute.js +63 -0
  28. package/dist/adapters/process/execute.js.map +1 -0
  29. package/dist/adapters/process/index.d.ts +3 -0
  30. package/dist/adapters/process/index.d.ts.map +1 -0
  31. package/dist/adapters/process/index.js +23 -0
  32. package/dist/adapters/process/index.js.map +1 -0
  33. package/dist/adapters/process/test.d.ts +3 -0
  34. package/dist/adapters/process/test.d.ts.map +1 -0
  35. package/dist/adapters/process/test.js +77 -0
  36. package/dist/adapters/process/test.js.map +1 -0
  37. package/dist/adapters/registry.d.ts +14 -0
  38. package/dist/adapters/registry.d.ts.map +1 -0
  39. package/dist/adapters/registry.js +164 -0
  40. package/dist/adapters/registry.js.map +1 -0
  41. package/dist/adapters/types.d.ts +2 -0
  42. package/dist/adapters/types.d.ts.map +1 -0
  43. package/dist/adapters/types.js +2 -0
  44. package/dist/adapters/types.js.map +1 -0
  45. package/dist/adapters/utils.d.ts +10 -0
  46. package/dist/adapters/utils.d.ts.map +1 -0
  47. package/dist/adapters/utils.js +14 -0
  48. package/dist/adapters/utils.js.map +1 -0
  49. package/dist/agent-auth-jwt.d.ts +14 -0
  50. package/dist/agent-auth-jwt.d.ts.map +1 -0
  51. package/dist/agent-auth-jwt.js +117 -0
  52. package/dist/agent-auth-jwt.js.map +1 -0
  53. package/dist/app.d.ts +25 -0
  54. package/dist/app.d.ts.map +1 -0
  55. package/dist/app.js +265 -0
  56. package/dist/app.js.map +1 -0
  57. package/dist/attachment-types.d.ts +33 -0
  58. package/dist/attachment-types.d.ts.map +1 -0
  59. package/dist/attachment-types.js +67 -0
  60. package/dist/attachment-types.js.map +1 -0
  61. package/dist/auth/better-auth.d.ts +24 -0
  62. package/dist/auth/better-auth.d.ts.map +1 -0
  63. package/dist/auth/better-auth.js +108 -0
  64. package/dist/auth/better-auth.js.map +1 -0
  65. package/dist/board-claim.d.ts +23 -0
  66. package/dist/board-claim.d.ts.map +1 -0
  67. package/dist/board-claim.js +115 -0
  68. package/dist/board-claim.js.map +1 -0
  69. package/dist/config-file.d.ts +3 -0
  70. package/dist/config-file.d.ts.map +1 -0
  71. package/dist/config-file.js +16 -0
  72. package/dist/config-file.js.map +1 -0
  73. package/dist/config.d.ts +45 -0
  74. package/dist/config.d.ts.map +1 -0
  75. package/dist/config.js +171 -0
  76. package/dist/config.js.map +1 -0
  77. package/dist/dev-server-status.d.ts +27 -0
  78. package/dist/dev-server-status.d.ts.map +1 -0
  79. package/dist/dev-server-status.js +70 -0
  80. package/dist/dev-server-status.js.map +1 -0
  81. package/dist/dev-watch-ignore.d.ts +2 -0
  82. package/dist/dev-watch-ignore.d.ts.map +1 -0
  83. package/dist/dev-watch-ignore.js +33 -0
  84. package/dist/dev-watch-ignore.js.map +1 -0
  85. package/dist/errors.d.ts +12 -0
  86. package/dist/errors.d.ts.map +1 -0
  87. package/dist/errors.js +28 -0
  88. package/dist/errors.js.map +1 -0
  89. package/dist/home-paths.d.ts +17 -0
  90. package/dist/home-paths.d.ts.map +1 -0
  91. package/dist/home-paths.js +75 -0
  92. package/dist/home-paths.js.map +1 -0
  93. package/dist/index.d.ts +10 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +642 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/log-redaction.d.ts +11 -0
  98. package/dist/log-redaction.d.ts.map +1 -0
  99. package/dist/log-redaction.js +118 -0
  100. package/dist/log-redaction.js.map +1 -0
  101. package/dist/middleware/auth.d.ts +12 -0
  102. package/dist/middleware/auth.d.ts.map +1 -0
  103. package/dist/middleware/auth.js +144 -0
  104. package/dist/middleware/auth.js.map +1 -0
  105. package/dist/middleware/board-mutation-guard.d.ts +3 -0
  106. package/dist/middleware/board-mutation-guard.d.ts.map +1 -0
  107. package/dist/middleware/board-mutation-guard.js +59 -0
  108. package/dist/middleware/board-mutation-guard.js.map +1 -0
  109. package/dist/middleware/error-handler.d.ts +17 -0
  110. package/dist/middleware/error-handler.d.ts.map +1 -0
  111. package/dist/middleware/error-handler.js +37 -0
  112. package/dist/middleware/error-handler.js.map +1 -0
  113. package/dist/middleware/index.d.ts +4 -0
  114. package/dist/middleware/index.d.ts.map +1 -0
  115. package/dist/middleware/index.js +4 -0
  116. package/dist/middleware/index.js.map +1 -0
  117. package/dist/middleware/logger.d.ts +4 -0
  118. package/dist/middleware/logger.d.ts.map +1 -0
  119. package/dist/middleware/logger.js +87 -0
  120. package/dist/middleware/logger.js.map +1 -0
  121. package/dist/middleware/private-hostname-guard.d.ts +11 -0
  122. package/dist/middleware/private-hostname-guard.d.ts.map +1 -0
  123. package/dist/middleware/private-hostname-guard.js +78 -0
  124. package/dist/middleware/private-hostname-guard.js.map +1 -0
  125. package/dist/middleware/validate.d.ts +4 -0
  126. package/dist/middleware/validate.d.ts.map +1 -0
  127. package/dist/middleware/validate.js +7 -0
  128. package/dist/middleware/validate.js.map +1 -0
  129. package/dist/onboarding-assets/ceo/AGENTS.md +54 -0
  130. package/dist/onboarding-assets/ceo/HEARTBEAT.md +72 -0
  131. package/dist/onboarding-assets/ceo/SOUL.md +33 -0
  132. package/dist/onboarding-assets/ceo/TOOLS.md +3 -0
  133. package/dist/onboarding-assets/default/AGENTS.md +3 -0
  134. package/dist/paths.d.ts +3 -0
  135. package/dist/paths.d.ts.map +1 -0
  136. package/dist/paths.js +31 -0
  137. package/dist/paths.js.map +1 -0
  138. package/dist/realtime/live-events-ws.d.ts +28 -0
  139. package/dist/realtime/live-events-ws.d.ts.map +1 -0
  140. package/dist/realtime/live-events-ws.js +187 -0
  141. package/dist/realtime/live-events-ws.js.map +1 -0
  142. package/dist/redaction.d.ts +4 -0
  143. package/dist/redaction.d.ts.map +1 -0
  144. package/dist/redaction.js +63 -0
  145. package/dist/redaction.js.map +1 -0
  146. package/dist/routes/access.d.ts +61 -0
  147. package/dist/routes/access.d.ts.map +1 -0
  148. package/dist/routes/access.js +2265 -0
  149. package/dist/routes/access.js.map +1 -0
  150. package/dist/routes/activity.d.ts +3 -0
  151. package/dist/routes/activity.d.ts.map +1 -0
  152. package/dist/routes/activity.js +78 -0
  153. package/dist/routes/activity.js.map +1 -0
  154. package/dist/routes/agents.d.ts +3 -0
  155. package/dist/routes/agents.d.ts.map +1 -0
  156. package/dist/routes/agents.js +1828 -0
  157. package/dist/routes/agents.js.map +1 -0
  158. package/dist/routes/approvals.d.ts +3 -0
  159. package/dist/routes/approvals.d.ts.map +1 -0
  160. package/dist/routes/approvals.js +275 -0
  161. package/dist/routes/approvals.js.map +1 -0
  162. package/dist/routes/assets.d.ts +4 -0
  163. package/dist/routes/assets.d.ts.map +1 -0
  164. package/dist/routes/assets.js +309 -0
  165. package/dist/routes/assets.js.map +1 -0
  166. package/dist/routes/authz.d.ts +16 -0
  167. package/dist/routes/authz.d.ts.map +1 -0
  168. package/dist/routes/authz.js +47 -0
  169. package/dist/routes/authz.js.map +1 -0
  170. package/dist/routes/companies.d.ts +4 -0
  171. package/dist/routes/companies.d.ts.map +1 -0
  172. package/dist/routes/companies.js +303 -0
  173. package/dist/routes/companies.js.map +1 -0
  174. package/dist/routes/company-skills.d.ts +3 -0
  175. package/dist/routes/company-skills.d.ts.map +1 -0
  176. package/dist/routes/company-skills.js +228 -0
  177. package/dist/routes/company-skills.js.map +1 -0
  178. package/dist/routes/costs.d.ts +3 -0
  179. package/dist/routes/costs.d.ts.map +1 -0
  180. package/dist/routes/costs.js +268 -0
  181. package/dist/routes/costs.js.map +1 -0
  182. package/dist/routes/dashboard.d.ts +3 -0
  183. package/dist/routes/dashboard.d.ts.map +1 -0
  184. package/dist/routes/dashboard.js +15 -0
  185. package/dist/routes/dashboard.js.map +1 -0
  186. package/dist/routes/execution-workspaces.d.ts +3 -0
  187. package/dist/routes/execution-workspaces.d.ts.map +1 -0
  188. package/dist/routes/execution-workspaces.js +165 -0
  189. package/dist/routes/execution-workspaces.js.map +1 -0
  190. package/dist/routes/goals.d.ts +3 -0
  191. package/dist/routes/goals.d.ts.map +1 -0
  192. package/dist/routes/goals.js +95 -0
  193. package/dist/routes/goals.js.map +1 -0
  194. package/dist/routes/health.d.ts +9 -0
  195. package/dist/routes/health.d.ts.map +1 -0
  196. package/dist/routes/health.js +69 -0
  197. package/dist/routes/health.js.map +1 -0
  198. package/dist/routes/index.d.ts +18 -0
  199. package/dist/routes/index.d.ts.map +1 -0
  200. package/dist/routes/index.js +18 -0
  201. package/dist/routes/index.js.map +1 -0
  202. package/dist/routes/instance-settings.d.ts +3 -0
  203. package/dist/routes/instance-settings.d.ts.map +1 -0
  204. package/dist/routes/instance-settings.js +71 -0
  205. package/dist/routes/instance-settings.js.map +1 -0
  206. package/dist/routes/issues-checkout-wakeup.d.ts +9 -0
  207. package/dist/routes/issues-checkout-wakeup.d.ts.map +1 -0
  208. package/dist/routes/issues-checkout-wakeup.js +12 -0
  209. package/dist/routes/issues-checkout-wakeup.js.map +1 -0
  210. package/dist/routes/issues.d.ts +4 -0
  211. package/dist/routes/issues.d.ts.map +1 -0
  212. package/dist/routes/issues.js +1520 -0
  213. package/dist/routes/issues.js.map +1 -0
  214. package/dist/routes/llms.d.ts +3 -0
  215. package/dist/routes/llms.d.ts.map +1 -0
  216. package/dist/routes/llms.js +78 -0
  217. package/dist/routes/llms.js.map +1 -0
  218. package/dist/routes/org-chart-svg.d.ts +25 -0
  219. package/dist/routes/org-chart-svg.d.ts.map +1 -0
  220. package/dist/routes/org-chart-svg.js +656 -0
  221. package/dist/routes/org-chart-svg.js.map +1 -0
  222. package/dist/routes/plugin-ui-static.d.ts +69 -0
  223. package/dist/routes/plugin-ui-static.d.ts.map +1 -0
  224. package/dist/routes/plugin-ui-static.js +411 -0
  225. package/dist/routes/plugin-ui-static.js.map +1 -0
  226. package/dist/routes/plugins.d.ts +120 -0
  227. package/dist/routes/plugins.d.ts.map +1 -0
  228. package/dist/routes/plugins.js +1784 -0
  229. package/dist/routes/plugins.js.map +1 -0
  230. package/dist/routes/projects.d.ts +3 -0
  231. package/dist/routes/projects.d.ts.map +1 -0
  232. package/dist/routes/projects.js +257 -0
  233. package/dist/routes/projects.js.map +1 -0
  234. package/dist/routes/routines.d.ts +3 -0
  235. package/dist/routes/routines.d.ts.map +1 -0
  236. package/dist/routes/routines.js +277 -0
  237. package/dist/routes/routines.js.map +1 -0
  238. package/dist/routes/secrets.d.ts +3 -0
  239. package/dist/routes/secrets.d.ts.map +1 -0
  240. package/dist/routes/secrets.js +128 -0
  241. package/dist/routes/secrets.js.map +1 -0
  242. package/dist/routes/sidebar-badges.d.ts +3 -0
  243. package/dist/routes/sidebar-badges.d.ts.map +1 -0
  244. package/dist/routes/sidebar-badges.js +45 -0
  245. package/dist/routes/sidebar-badges.js.map +1 -0
  246. package/dist/secrets/external-stub-providers.d.ts +5 -0
  247. package/dist/secrets/external-stub-providers.d.ts.map +1 -0
  248. package/dist/secrets/external-stub-providers.js +21 -0
  249. package/dist/secrets/external-stub-providers.js.map +1 -0
  250. package/dist/secrets/local-encrypted-provider.d.ts +3 -0
  251. package/dist/secrets/local-encrypted-provider.d.ts.map +1 -0
  252. package/dist/secrets/local-encrypted-provider.js +116 -0
  253. package/dist/secrets/local-encrypted-provider.js.map +1 -0
  254. package/dist/secrets/provider-registry.d.ts +5 -0
  255. package/dist/secrets/provider-registry.d.ts.map +1 -0
  256. package/dist/secrets/provider-registry.js +20 -0
  257. package/dist/secrets/provider-registry.js.map +1 -0
  258. package/dist/secrets/types.d.ts +21 -0
  259. package/dist/secrets/types.d.ts.map +1 -0
  260. package/dist/secrets/types.js +2 -0
  261. package/dist/secrets/types.js.map +1 -0
  262. package/dist/services/access.d.ts +113 -0
  263. package/dist/services/access.d.ts.map +1 -0
  264. package/dist/services/access.js +247 -0
  265. package/dist/services/access.js.map +1 -0
  266. package/dist/services/activity-log.d.ts +17 -0
  267. package/dist/services/activity-log.d.ts.map +1 -0
  268. package/dist/services/activity-log.js +74 -0
  269. package/dist/services/activity-log.js.map +1 -0
  270. package/dist/services/activity.d.ts +764 -0
  271. package/dist/services/activity.d.ts.map +1 -0
  272. package/dist/services/activity.js +105 -0
  273. package/dist/services/activity.js.map +1 -0
  274. package/dist/services/agent-instructions.d.ts +91 -0
  275. package/dist/services/agent-instructions.d.ts.map +1 -0
  276. package/dist/services/agent-instructions.js +580 -0
  277. package/dist/services/agent-instructions.js.map +1 -0
  278. package/dist/services/agent-permissions.d.ts +6 -0
  279. package/dist/services/agent-permissions.d.ts.map +1 -0
  280. package/dist/services/agent-permissions.js +18 -0
  281. package/dist/services/agent-permissions.js.map +1 -0
  282. package/dist/services/agents.d.ts +1670 -0
  283. package/dist/services/agents.d.ts.map +1 -0
  284. package/dist/services/agents.js +566 -0
  285. package/dist/services/agents.js.map +1 -0
  286. package/dist/services/approvals.d.ts +546 -0
  287. package/dist/services/approvals.d.ts.map +1 -0
  288. package/dist/services/approvals.js +212 -0
  289. package/dist/services/approvals.js.map +1 -0
  290. package/dist/services/assets.d.ts +33 -0
  291. package/dist/services/assets.d.ts.map +1 -0
  292. package/dist/services/assets.js +17 -0
  293. package/dist/services/assets.js.map +1 -0
  294. package/dist/services/board-auth.d.ts +234 -0
  295. package/dist/services/board-auth.d.ts.map +1 -0
  296. package/dist/services/board-auth.js +295 -0
  297. package/dist/services/board-auth.js.map +1 -0
  298. package/dist/services/budgets.d.ts +38 -0
  299. package/dist/services/budgets.d.ts.map +1 -0
  300. package/dist/services/budgets.js +784 -0
  301. package/dist/services/budgets.js.map +1 -0
  302. package/dist/services/companies.d.ts +124 -0
  303. package/dist/services/companies.d.ts.map +1 -0
  304. package/dist/services/companies.js +256 -0
  305. package/dist/services/companies.js.map +1 -0
  306. package/dist/services/company-export-readme.d.ts +17 -0
  307. package/dist/services/company-export-readme.d.ts.map +1 -0
  308. package/dist/services/company-export-readme.js +148 -0
  309. package/dist/services/company-export-readme.js.map +1 -0
  310. package/dist/services/company-portability.d.ts +23 -0
  311. package/dist/services/company-portability.d.ts.map +1 -0
  312. package/dist/services/company-portability.js +3739 -0
  313. package/dist/services/company-portability.js.map +1 -0
  314. package/dist/services/company-skills.d.ts +77 -0
  315. package/dist/services/company-skills.d.ts.map +1 -0
  316. package/dist/services/company-skills.js +2042 -0
  317. package/dist/services/company-skills.js.map +1 -0
  318. package/dist/services/costs.d.ts +114 -0
  319. package/dist/services/costs.d.ts.map +1 -0
  320. package/dist/services/costs.js +294 -0
  321. package/dist/services/costs.js.map +1 -0
  322. package/dist/services/cron.d.ts +80 -0
  323. package/dist/services/cron.d.ts.map +1 -0
  324. package/dist/services/cron.js +300 -0
  325. package/dist/services/cron.js.map +1 -0
  326. package/dist/services/dashboard.d.ts +26 -0
  327. package/dist/services/dashboard.d.ts.map +1 -0
  328. package/dist/services/dashboard.js +98 -0
  329. package/dist/services/dashboard.js.map +1 -0
  330. package/dist/services/default-agent-instructions.d.ts +9 -0
  331. package/dist/services/default-agent-instructions.d.ts.map +1 -0
  332. package/dist/services/default-agent-instructions.js +20 -0
  333. package/dist/services/default-agent-instructions.js.map +1 -0
  334. package/dist/services/documents.d.ts +164 -0
  335. package/dist/services/documents.d.ts.map +1 -0
  336. package/dist/services/documents.js +382 -0
  337. package/dist/services/documents.js.map +1 -0
  338. package/dist/services/execution-workspace-policy.d.ts +21 -0
  339. package/dist/services/execution-workspace-policy.d.ts.map +1 -0
  340. package/dist/services/execution-workspace-policy.js +177 -0
  341. package/dist/services/execution-workspace-policy.js.map +1 -0
  342. package/dist/services/execution-workspaces.d.ts +19 -0
  343. package/dist/services/execution-workspaces.d.ts.map +1 -0
  344. package/dist/services/execution-workspaces.js +87 -0
  345. package/dist/services/execution-workspaces.js.map +1 -0
  346. package/dist/services/finance.d.ts +93 -0
  347. package/dist/services/finance.d.ts.map +1 -0
  348. package/dist/services/finance.js +120 -0
  349. package/dist/services/finance.js.map +1 -0
  350. package/dist/services/goals.d.ts +433 -0
  351. package/dist/services/goals.d.ts.map +1 -0
  352. package/dist/services/goals.js +54 -0
  353. package/dist/services/goals.js.map +1 -0
  354. package/dist/services/heartbeat-run-summary.d.ts +2 -0
  355. package/dist/services/heartbeat-run-summary.d.ts.map +1 -0
  356. package/dist/services/heartbeat-run-summary.js +30 -0
  357. package/dist/services/heartbeat-run-summary.js.map +1 -0
  358. package/dist/services/heartbeat.d.ts +812 -0
  359. package/dist/services/heartbeat.d.ts.map +1 -0
  360. package/dist/services/heartbeat.js +3156 -0
  361. package/dist/services/heartbeat.js.map +1 -0
  362. package/dist/services/hire-hook.d.ts +14 -0
  363. package/dist/services/hire-hook.d.ts.map +1 -0
  364. package/dist/services/hire-hook.js +85 -0
  365. package/dist/services/hire-hook.js.map +1 -0
  366. package/dist/services/index.d.ts +33 -0
  367. package/dist/services/index.d.ts.map +1 -0
  368. package/dist/services/index.js +33 -0
  369. package/dist/services/index.js.map +1 -0
  370. package/dist/services/instance-settings.d.ts +11 -0
  371. package/dist/services/instance-settings.d.ts.map +1 -0
  372. package/dist/services/instance-settings.js +116 -0
  373. package/dist/services/instance-settings.js.map +1 -0
  374. package/dist/services/issue-approvals.d.ts +56 -0
  375. package/dist/services/issue-approvals.d.ts.map +1 -0
  376. package/dist/services/issue-approvals.js +153 -0
  377. package/dist/services/issue-approvals.js.map +1 -0
  378. package/dist/services/issue-assignment-wakeup.d.ts +29 -0
  379. package/dist/services/issue-assignment-wakeup.d.ts.map +1 -0
  380. package/dist/services/issue-assignment-wakeup.js +22 -0
  381. package/dist/services/issue-assignment-wakeup.js.map +1 -0
  382. package/dist/services/issue-goal-fallback.d.ts +18 -0
  383. package/dist/services/issue-goal-fallback.d.ts.map +1 -0
  384. package/dist/services/issue-goal-fallback.js +33 -0
  385. package/dist/services/issue-goal-fallback.js.map +1 -0
  386. package/dist/services/issues.d.ts +560 -0
  387. package/dist/services/issues.d.ts.map +1 -0
  388. package/dist/services/issues.js +1478 -0
  389. package/dist/services/issues.js.map +1 -0
  390. package/dist/services/live-events.d.ts +17 -0
  391. package/dist/services/live-events.d.ts.map +1 -0
  392. package/dist/services/live-events.js +33 -0
  393. package/dist/services/live-events.js.map +1 -0
  394. package/dist/services/plugin-capability-validator.d.ts +108 -0
  395. package/dist/services/plugin-capability-validator.d.ts.map +1 -0
  396. package/dist/services/plugin-capability-validator.js +268 -0
  397. package/dist/services/plugin-capability-validator.js.map +1 -0
  398. package/dist/services/plugin-config-validator.d.ts +26 -0
  399. package/dist/services/plugin-config-validator.d.ts.map +1 -0
  400. package/dist/services/plugin-config-validator.js +41 -0
  401. package/dist/services/plugin-config-validator.js.map +1 -0
  402. package/dist/services/plugin-dev-watcher.d.ts +30 -0
  403. package/dist/services/plugin-dev-watcher.d.ts.map +1 -0
  404. package/dist/services/plugin-dev-watcher.js +241 -0
  405. package/dist/services/plugin-dev-watcher.js.map +1 -0
  406. package/dist/services/plugin-event-bus.d.ts +149 -0
  407. package/dist/services/plugin-event-bus.d.ts.map +1 -0
  408. package/dist/services/plugin-event-bus.js +258 -0
  409. package/dist/services/plugin-event-bus.js.map +1 -0
  410. package/dist/services/plugin-host-service-cleanup.d.ts +14 -0
  411. package/dist/services/plugin-host-service-cleanup.d.ts.map +1 -0
  412. package/dist/services/plugin-host-service-cleanup.js +37 -0
  413. package/dist/services/plugin-host-service-cleanup.js.map +1 -0
  414. package/dist/services/plugin-host-services.d.ts +13 -0
  415. package/dist/services/plugin-host-services.d.ts.map +1 -0
  416. package/dist/services/plugin-host-services.js +969 -0
  417. package/dist/services/plugin-host-services.js.map +1 -0
  418. package/dist/services/plugin-job-coordinator.d.ts +81 -0
  419. package/dist/services/plugin-job-coordinator.d.ts.map +1 -0
  420. package/dist/services/plugin-job-coordinator.js +172 -0
  421. package/dist/services/plugin-job-coordinator.js.map +1 -0
  422. package/dist/services/plugin-job-scheduler.d.ts +163 -0
  423. package/dist/services/plugin-job-scheduler.d.ts.map +1 -0
  424. package/dist/services/plugin-job-scheduler.js +454 -0
  425. package/dist/services/plugin-job-scheduler.js.map +1 -0
  426. package/dist/services/plugin-job-store.d.ts +208 -0
  427. package/dist/services/plugin-job-store.d.ts.map +1 -0
  428. package/dist/services/plugin-job-store.js +350 -0
  429. package/dist/services/plugin-job-store.js.map +1 -0
  430. package/dist/services/plugin-lifecycle.d.ts +203 -0
  431. package/dist/services/plugin-lifecycle.d.ts.map +1 -0
  432. package/dist/services/plugin-lifecycle.js +476 -0
  433. package/dist/services/plugin-lifecycle.js.map +1 -0
  434. package/dist/services/plugin-loader.d.ts +441 -0
  435. package/dist/services/plugin-loader.d.ts.map +1 -0
  436. package/dist/services/plugin-loader.js +1192 -0
  437. package/dist/services/plugin-loader.js.map +1 -0
  438. package/dist/services/plugin-log-retention.d.ts +20 -0
  439. package/dist/services/plugin-log-retention.d.ts.map +1 -0
  440. package/dist/services/plugin-log-retention.js +63 -0
  441. package/dist/services/plugin-log-retention.js.map +1 -0
  442. package/dist/services/plugin-manifest-validator.d.ts +79 -0
  443. package/dist/services/plugin-manifest-validator.d.ts.map +1 -0
  444. package/dist/services/plugin-manifest-validator.js +84 -0
  445. package/dist/services/plugin-manifest-validator.js.map +1 -0
  446. package/dist/services/plugin-registry.d.ts +2542 -0
  447. package/dist/services/plugin-registry.d.ts.map +1 -0
  448. package/dist/services/plugin-registry.js +539 -0
  449. package/dist/services/plugin-registry.js.map +1 -0
  450. package/dist/services/plugin-runtime-sandbox.d.ts +40 -0
  451. package/dist/services/plugin-runtime-sandbox.d.ts.map +1 -0
  452. package/dist/services/plugin-runtime-sandbox.js +154 -0
  453. package/dist/services/plugin-runtime-sandbox.js.map +1 -0
  454. package/dist/services/plugin-secrets-handler.d.ts +81 -0
  455. package/dist/services/plugin-secrets-handler.d.ts.map +1 -0
  456. package/dist/services/plugin-secrets-handler.js +275 -0
  457. package/dist/services/plugin-secrets-handler.js.map +1 -0
  458. package/dist/services/plugin-state-store.d.ts +92 -0
  459. package/dist/services/plugin-state-store.d.ts.map +1 -0
  460. package/dist/services/plugin-state-store.js +190 -0
  461. package/dist/services/plugin-state-store.js.map +1 -0
  462. package/dist/services/plugin-stream-bus.d.ts +29 -0
  463. package/dist/services/plugin-stream-bus.d.ts.map +1 -0
  464. package/dist/services/plugin-stream-bus.js +48 -0
  465. package/dist/services/plugin-stream-bus.js.map +1 -0
  466. package/dist/services/plugin-tool-dispatcher.d.ts +180 -0
  467. package/dist/services/plugin-tool-dispatcher.d.ts.map +1 -0
  468. package/dist/services/plugin-tool-dispatcher.js +224 -0
  469. package/dist/services/plugin-tool-dispatcher.js.map +1 -0
  470. package/dist/services/plugin-tool-registry.d.ts +192 -0
  471. package/dist/services/plugin-tool-registry.d.ts.map +1 -0
  472. package/dist/services/plugin-tool-registry.js +224 -0
  473. package/dist/services/plugin-tool-registry.js.map +1 -0
  474. package/dist/services/plugin-worker-manager.d.ts +260 -0
  475. package/dist/services/plugin-worker-manager.d.ts.map +1 -0
  476. package/dist/services/plugin-worker-manager.js +835 -0
  477. package/dist/services/plugin-worker-manager.js.map +1 -0
  478. package/dist/services/projects.d.ts +87 -0
  479. package/dist/services/projects.d.ts.map +1 -0
  480. package/dist/services/projects.js +656 -0
  481. package/dist/services/projects.js.map +1 -0
  482. package/dist/services/quota-windows.d.ts +9 -0
  483. package/dist/services/quota-windows.d.ts.map +1 -0
  484. package/dist/services/quota-windows.js +56 -0
  485. package/dist/services/quota-windows.js.map +1 -0
  486. package/dist/services/routines.d.ts +135 -0
  487. package/dist/services/routines.d.ts.map +1 -0
  488. package/dist/services/routines.js +1105 -0
  489. package/dist/services/routines.js.map +1 -0
  490. package/dist/services/run-log-store.d.ts +34 -0
  491. package/dist/services/run-log-store.d.ts.map +1 -0
  492. package/dist/services/run-log-store.js +109 -0
  493. package/dist/services/run-log-store.js.map +1 -0
  494. package/dist/services/secrets.d.ts +511 -0
  495. package/dist/services/secrets.d.ts.map +1 -0
  496. package/dist/services/secrets.js +289 -0
  497. package/dist/services/secrets.js.map +1 -0
  498. package/dist/services/sidebar-badges.d.ts +9 -0
  499. package/dist/services/sidebar-badges.d.ts.map +1 -0
  500. package/dist/services/sidebar-badges.js +33 -0
  501. package/dist/services/sidebar-badges.js.map +1 -0
  502. package/dist/services/work-products.d.ts +14 -0
  503. package/dist/services/work-products.d.ts.map +1 -0
  504. package/dist/services/work-products.js +100 -0
  505. package/dist/services/work-products.js.map +1 -0
  506. package/dist/services/workspace-operation-log-store.d.ts +33 -0
  507. package/dist/services/workspace-operation-log-store.d.ts.map +1 -0
  508. package/dist/services/workspace-operation-log-store.js +110 -0
  509. package/dist/services/workspace-operation-log-store.js.map +1 -0
  510. package/dist/services/workspace-operations.d.ts +44 -0
  511. package/dist/services/workspace-operations.d.ts.map +1 -0
  512. package/dist/services/workspace-operations.js +211 -0
  513. package/dist/services/workspace-operations.js.map +1 -0
  514. package/dist/services/workspace-runtime.d.ts +164 -0
  515. package/dist/services/workspace-runtime.d.ts.map +1 -0
  516. package/dist/services/workspace-runtime.js +1235 -0
  517. package/dist/services/workspace-runtime.js.map +1 -0
  518. package/dist/startup-banner.d.ts +31 -0
  519. package/dist/startup-banner.d.ts.map +1 -0
  520. package/dist/startup-banner.js +117 -0
  521. package/dist/startup-banner.js.map +1 -0
  522. package/dist/storage/index.d.ts +6 -0
  523. package/dist/storage/index.d.ts.map +1 -0
  524. package/dist/storage/index.js +29 -0
  525. package/dist/storage/index.js.map +1 -0
  526. package/dist/storage/local-disk-provider.d.ts +3 -0
  527. package/dist/storage/local-disk-provider.d.ts.map +1 -0
  528. package/dist/storage/local-disk-provider.js +79 -0
  529. package/dist/storage/local-disk-provider.js.map +1 -0
  530. package/dist/storage/provider-registry.d.ts +4 -0
  531. package/dist/storage/provider-registry.d.ts.map +1 -0
  532. package/dist/storage/provider-registry.js +15 -0
  533. package/dist/storage/provider-registry.js.map +1 -0
  534. package/dist/storage/s3-provider.d.ts +11 -0
  535. package/dist/storage/s3-provider.d.ts.map +1 -0
  536. package/dist/storage/s3-provider.js +123 -0
  537. package/dist/storage/s3-provider.js.map +1 -0
  538. package/dist/storage/service.d.ts +3 -0
  539. package/dist/storage/service.d.ts.map +1 -0
  540. package/dist/storage/service.js +120 -0
  541. package/dist/storage/service.js.map +1 -0
  542. package/dist/storage/types.d.ts +55 -0
  543. package/dist/storage/types.d.ts.map +1 -0
  544. package/dist/storage/types.js +2 -0
  545. package/dist/storage/types.js.map +1 -0
  546. package/dist/ui-branding.d.ts +13 -0
  547. package/dist/ui-branding.d.ts.map +1 -0
  548. package/dist/ui-branding.js +187 -0
  549. package/dist/ui-branding.js.map +1 -0
  550. package/dist/version.d.ts +2 -0
  551. package/dist/version.d.ts.map +1 -0
  552. package/dist/version.js +5 -0
  553. package/dist/version.js.map +1 -0
  554. package/dist/worktree-config.d.ts +19 -0
  555. package/dist/worktree-config.d.ts.map +1 -0
  556. package/dist/worktree-config.js +365 -0
  557. package/dist/worktree-config.js.map +1 -0
  558. package/package.json +95 -0
  559. package/ui-dist/android-chrome-192x192.png +0 -0
  560. package/ui-dist/android-chrome-512x512.png +0 -0
  561. package/ui-dist/apple-touch-icon.png +0 -0
  562. package/ui-dist/assets/_basePickBy-BB1S19s0.js +1 -0
  563. package/ui-dist/assets/_baseUniq-BNk0p-bq.js +1 -0
  564. package/ui-dist/assets/apl-B4CMkyY2.js +1 -0
  565. package/ui-dist/assets/arc-Ds13x1NW.js +1 -0
  566. package/ui-dist/assets/architectureDiagram-VXUJARFQ-D8Br-_jt.js +36 -0
  567. package/ui-dist/assets/asciiarmor-Df11BRmG.js +1 -0
  568. package/ui-dist/assets/asn1-EdZsLKOL.js +1 -0
  569. package/ui-dist/assets/asterisk-B-8jnY81.js +1 -0
  570. package/ui-dist/assets/blockDiagram-VD42YOAC-CCYsAhQ5.js +122 -0
  571. package/ui-dist/assets/brainfuck-C4LP7Hcl.js +1 -0
  572. package/ui-dist/assets/c4Diagram-YG6GDRKO-CsrnTJYB.js +10 -0
  573. package/ui-dist/assets/channel-Df4ReTUQ.js +1 -0
  574. package/ui-dist/assets/chunk-4BX2VUAB-s-S3bm2a.js +1 -0
  575. package/ui-dist/assets/chunk-55IACEB6-AlPeSG3C.js +1 -0
  576. package/ui-dist/assets/chunk-B4BG7PRW-Dlv3zmp0.js +165 -0
  577. package/ui-dist/assets/chunk-DI55MBZ5-y3Hfc2F6.js +220 -0
  578. package/ui-dist/assets/chunk-FMBD7UC4-ZbmFZ8uD.js +15 -0
  579. package/ui-dist/assets/chunk-QN33PNHL-g7XrAaL5.js +1 -0
  580. package/ui-dist/assets/chunk-QZHKN3VN-DQz2X_ZR.js +1 -0
  581. package/ui-dist/assets/chunk-TZMSLE5B-NRbDhryd.js +1 -0
  582. package/ui-dist/assets/classDiagram-2ON5EDUG-CdLb01dH.js +1 -0
  583. package/ui-dist/assets/classDiagram-v2-WZHVMYZB-CdLb01dH.js +1 -0
  584. package/ui-dist/assets/clike-B9uivgTg.js +1 -0
  585. package/ui-dist/assets/clojure-BMjYHr_A.js +1 -0
  586. package/ui-dist/assets/clone-ycTwxHSX.js +1 -0
  587. package/ui-dist/assets/cmake-BQqOBYOt.js +1 -0
  588. package/ui-dist/assets/cobol-CWcv1MsR.js +1 -0
  589. package/ui-dist/assets/coffeescript-S37ZYGWr.js +1 -0
  590. package/ui-dist/assets/commonlisp-DBKNyK5s.js +1 -0
  591. package/ui-dist/assets/cose-bilkent-S5V4N54A-CifA3UGC.js +1 -0
  592. package/ui-dist/assets/crystal-SjHAIU92.js +1 -0
  593. package/ui-dist/assets/css-BnMrqG3P.js +1 -0
  594. package/ui-dist/assets/cypher-C_CwsFkJ.js +1 -0
  595. package/ui-dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
  596. package/ui-dist/assets/d-pRatUO7H.js +1 -0
  597. package/ui-dist/assets/dagre-6UL2VRFP-Cy4_402x.js +4 -0
  598. package/ui-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  599. package/ui-dist/assets/diagram-PSM6KHXK-CUA-Vqxe.js +24 -0
  600. package/ui-dist/assets/diagram-QEK2KX5R-D763Ackt.js +43 -0
  601. package/ui-dist/assets/diagram-S2PKOQOG-Cu1xEKHt.js +24 -0
  602. package/ui-dist/assets/diff-DbItnlRl.js +1 -0
  603. package/ui-dist/assets/dockerfile-BKs6k2Af.js +1 -0
  604. package/ui-dist/assets/dtd-DF_7sFjM.js +1 -0
  605. package/ui-dist/assets/dylan-DwRh75JA.js +1 -0
  606. package/ui-dist/assets/ebnf-CDyGwa7X.js +1 -0
  607. package/ui-dist/assets/ecl-Cabwm37j.js +1 -0
  608. package/ui-dist/assets/eiffel-CnydiIhH.js +1 -0
  609. package/ui-dist/assets/elm-vLlmbW-K.js +1 -0
  610. package/ui-dist/assets/erDiagram-Q2GNP2WA-9RlN9oCi.js +60 -0
  611. package/ui-dist/assets/erlang-BNw1qcRV.js +1 -0
  612. package/ui-dist/assets/factor-kuTfRLto.js +1 -0
  613. package/ui-dist/assets/fcl-Kvtd6kyn.js +1 -0
  614. package/ui-dist/assets/flowDiagram-NV44I4VS-Ddv1tq-H.js +162 -0
  615. package/ui-dist/assets/forth-Ffai-XNe.js +1 -0
  616. package/ui-dist/assets/fortran-DYz_wnZ1.js +1 -0
  617. package/ui-dist/assets/ganttDiagram-JELNMOA3-DAw7UfVT.js +267 -0
  618. package/ui-dist/assets/gas-Bneqetm1.js +1 -0
  619. package/ui-dist/assets/gherkin-heZmZLOM.js +1 -0
  620. package/ui-dist/assets/gitGraphDiagram-V2S2FVAM-CLPkzwpF.js +65 -0
  621. package/ui-dist/assets/graph-B1ThnnK5.js +1 -0
  622. package/ui-dist/assets/groovy-D9Dt4D0W.js +1 -0
  623. package/ui-dist/assets/haskell-Cw1EW3IL.js +1 -0
  624. package/ui-dist/assets/haxe-H-WmDvRZ.js +1 -0
  625. package/ui-dist/assets/http-DBlCnlav.js +1 -0
  626. package/ui-dist/assets/idl-BEugSyMb.js +1 -0
  627. package/ui-dist/assets/index-0DYmQxT3.js +2 -0
  628. package/ui-dist/assets/index-1BRIjwwa.js +1 -0
  629. package/ui-dist/assets/index-4pxn9bje.js +1 -0
  630. package/ui-dist/assets/index-B02pjBpR.js +7 -0
  631. package/ui-dist/assets/index-BGjMkZzC.js +1 -0
  632. package/ui-dist/assets/index-BHsjaYJ1.js +1 -0
  633. package/ui-dist/assets/index-BTwpjL-6.js +1 -0
  634. package/ui-dist/assets/index-BZ72uG4K.js +6 -0
  635. package/ui-dist/assets/index-BpC8VHcj.js +3 -0
  636. package/ui-dist/assets/index-BrvXvCkd.js +1 -0
  637. package/ui-dist/assets/index-CEBcI-2f.js +1 -0
  638. package/ui-dist/assets/index-CkmjCahV.js +1 -0
  639. package/ui-dist/assets/index-Cp84QmJD.css +1 -0
  640. package/ui-dist/assets/index-CpVjtxma.js +1 -0
  641. package/ui-dist/assets/index-D3AJPUjv.js +1 -0
  642. package/ui-dist/assets/index-DRkeP4vs.js +13 -0
  643. package/ui-dist/assets/index-DXeNhnre.js +1180 -0
  644. package/ui-dist/assets/index-DXvXmooU.js +1 -0
  645. package/ui-dist/assets/index-DZdwValG.js +1 -0
  646. package/ui-dist/assets/index-DbWj5-qO.js +1 -0
  647. package/ui-dist/assets/index-DbcKBTbp.js +1 -0
  648. package/ui-dist/assets/index-DdAQdjTR.js +1 -0
  649. package/ui-dist/assets/index-DlImcHKo.js +1 -0
  650. package/ui-dist/assets/index-X9LdJDbl.js +1 -0
  651. package/ui-dist/assets/infoDiagram-HS3SLOUP-CbJm6kuq.js +2 -0
  652. package/ui-dist/assets/init-Gi6I4Gst.js +1 -0
  653. package/ui-dist/assets/javascript-iXu5QeM3.js +1 -0
  654. package/ui-dist/assets/journeyDiagram-XKPGCS4Q-CeNVFpGu.js +139 -0
  655. package/ui-dist/assets/julia-DuME0IfC.js +1 -0
  656. package/ui-dist/assets/kanban-definition-3W4ZIXB7-DRqPoDRI.js +89 -0
  657. package/ui-dist/assets/katex-O9d3_IXG.js +261 -0
  658. package/ui-dist/assets/layout-CZTKj8OD.js +1 -0
  659. package/ui-dist/assets/linear-BDJjeIco.js +1 -0
  660. package/ui-dist/assets/livescript-BwQOo05w.js +1 -0
  661. package/ui-dist/assets/lua-BgMRiT3U.js +1 -0
  662. package/ui-dist/assets/mathematica-DTrFuWx2.js +1 -0
  663. package/ui-dist/assets/mbox-CNhZ1qSd.js +1 -0
  664. package/ui-dist/assets/mermaid.core-B5v7dPHY.js +256 -0
  665. package/ui-dist/assets/mindmap-definition-VGOIOE7T-zjw0AyzL.js +68 -0
  666. package/ui-dist/assets/mirc-CjQqDB4T.js +1 -0
  667. package/ui-dist/assets/mllike-CXdrOF99.js +1 -0
  668. package/ui-dist/assets/modelica-Dc1JOy9r.js +1 -0
  669. package/ui-dist/assets/mscgen-BA5vi2Kp.js +1 -0
  670. package/ui-dist/assets/mumps-BT43cFF4.js +1 -0
  671. package/ui-dist/assets/nginx-DdIZxoE0.js +1 -0
  672. package/ui-dist/assets/nsis-LdVXkNf5.js +1 -0
  673. package/ui-dist/assets/ntriples-BfvgReVJ.js +1 -0
  674. package/ui-dist/assets/octave-Ck1zUtKM.js +1 -0
  675. package/ui-dist/assets/ordinal-Cboi1Yqb.js +1 -0
  676. package/ui-dist/assets/oz-BzwKVEFT.js +1 -0
  677. package/ui-dist/assets/pascal--L3eBynH.js +1 -0
  678. package/ui-dist/assets/perl-CdXCOZ3F.js +1 -0
  679. package/ui-dist/assets/pieDiagram-ADFJNKIX-ojNQ8Ukr.js +30 -0
  680. package/ui-dist/assets/pig-CevX1Tat.js +1 -0
  681. package/ui-dist/assets/powershell-CFHJl5sT.js +1 -0
  682. package/ui-dist/assets/properties-C78fOPTZ.js +1 -0
  683. package/ui-dist/assets/protobuf-ChK-085T.js +1 -0
  684. package/ui-dist/assets/pug-DeIclll2.js +1 -0
  685. package/ui-dist/assets/puppet-DMA9R1ak.js +1 -0
  686. package/ui-dist/assets/python-BuPzkPfP.js +1 -0
  687. package/ui-dist/assets/q-pXgVlZs6.js +1 -0
  688. package/ui-dist/assets/quadrantDiagram-AYHSOK5B-B8K2F86x.js +7 -0
  689. package/ui-dist/assets/r-B6wPVr8A.js +1 -0
  690. package/ui-dist/assets/requirementDiagram-UZGBJVZJ-DA_Bjcpk.js +64 -0
  691. package/ui-dist/assets/rpm-CTu-6PCP.js +1 -0
  692. package/ui-dist/assets/ruby-B2Rjki9n.js +1 -0
  693. package/ui-dist/assets/sankeyDiagram-TZEHDZUN-yQfMgroQ.js +10 -0
  694. package/ui-dist/assets/sas-B4kiWyti.js +1 -0
  695. package/ui-dist/assets/scheme-C41bIUwD.js +1 -0
  696. package/ui-dist/assets/sequenceDiagram-WL72ISMW-CWQm0UQc.js +145 -0
  697. package/ui-dist/assets/shell-CjFT_Tl9.js +1 -0
  698. package/ui-dist/assets/sieve-C3Gn_uJK.js +1 -0
  699. package/ui-dist/assets/simple-mode-GW_nhZxv.js +1 -0
  700. package/ui-dist/assets/smalltalk-CnHTOXQT.js +1 -0
  701. package/ui-dist/assets/solr-DehyRSwq.js +1 -0
  702. package/ui-dist/assets/sparql-DkYu6x3z.js +1 -0
  703. package/ui-dist/assets/spreadsheet-BCZA_wO0.js +1 -0
  704. package/ui-dist/assets/sql-D0XecflT.js +1 -0
  705. package/ui-dist/assets/stateDiagram-FKZM4ZOC-C9L_ELvE.js +1 -0
  706. package/ui-dist/assets/stateDiagram-v2-4FDKWEC3-D3i22gRM.js +1 -0
  707. package/ui-dist/assets/stex-C3f8Ysf7.js +1 -0
  708. package/ui-dist/assets/stylus-B533Al4x.js +1 -0
  709. package/ui-dist/assets/swift-BzpIVaGY.js +1 -0
  710. package/ui-dist/assets/tcl-DVfN8rqt.js +1 -0
  711. package/ui-dist/assets/textile-CnDTJFAw.js +1 -0
  712. package/ui-dist/assets/tiddlywiki-DO-Gjzrf.js +1 -0
  713. package/ui-dist/assets/tiki-DGYXhP31.js +1 -0
  714. package/ui-dist/assets/timeline-definition-IT6M3QCI-Bfva-2zq.js +61 -0
  715. package/ui-dist/assets/toml-Bm5Em-hy.js +1 -0
  716. package/ui-dist/assets/treemap-GDKQZRPO-6wTQWQt4.js +162 -0
  717. package/ui-dist/assets/troff-wAsdV37c.js +1 -0
  718. package/ui-dist/assets/ttcn-CfJYG6tj.js +1 -0
  719. package/ui-dist/assets/ttcn-cfg-B9xdYoR4.js +1 -0
  720. package/ui-dist/assets/turtle-B1tBg_DP.js +1 -0
  721. package/ui-dist/assets/vb-CmGdzxic.js +1 -0
  722. package/ui-dist/assets/vbscript-BuJXcnF6.js +1 -0
  723. package/ui-dist/assets/velocity-D8B20fx6.js +1 -0
  724. package/ui-dist/assets/verilog-C6RDOZhf.js +1 -0
  725. package/ui-dist/assets/vhdl-lSbBsy5d.js +1 -0
  726. package/ui-dist/assets/webidl-ZXfAyPTL.js +1 -0
  727. package/ui-dist/assets/xquery-DzFWVndE.js +1 -0
  728. package/ui-dist/assets/xychartDiagram-PRI3JC2R-DNsmIw3v.js +7 -0
  729. package/ui-dist/assets/yacas-BJ4BC0dw.js +1 -0
  730. package/ui-dist/assets/z80-Hz9HOZM7.js +1 -0
  731. package/ui-dist/brands/opencode-logo-dark-square.svg +18 -0
  732. package/ui-dist/brands/opencode-logo-light-square.svg +18 -0
  733. package/ui-dist/favicon-16x16.png +0 -0
  734. package/ui-dist/favicon-32x32.png +0 -0
  735. package/ui-dist/favicon.ico +0 -0
  736. package/ui-dist/favicon.svg +9 -0
  737. package/ui-dist/index.html +48 -0
  738. package/ui-dist/site.webmanifest +30 -0
  739. package/ui-dist/sw.js +42 -0
  740. package/ui-dist/worktree-favicon-16x16.png +0 -0
  741. package/ui-dist/worktree-favicon-32x32.png +0 -0
  742. package/ui-dist/worktree-favicon.ico +0 -0
  743. package/ui-dist/worktree-favicon.svg +9 -0
@@ -0,0 +1,454 @@
1
+ /**
2
+ * PluginJobScheduler — tick-based scheduler for plugin scheduled jobs.
3
+ *
4
+ * The scheduler is the central coordinator for all plugin cron jobs. It
5
+ * periodically ticks (default every 30 seconds), queries the `plugin_jobs`
6
+ * table for jobs whose `nextRunAt` has passed, dispatches `runJob` RPC calls
7
+ * to the appropriate worker processes, records each execution in the
8
+ * `plugin_job_runs` table, and advances the scheduling pointer.
9
+ *
10
+ * ## Responsibilities
11
+ *
12
+ * 1. **Tick loop** — A `setInterval`-based loop fires every `tickIntervalMs`
13
+ * (default 30s). Each tick scans for due jobs and dispatches them.
14
+ *
15
+ * 2. **Cron parsing & next-run calculation** — Uses the lightweight built-in
16
+ * cron parser ({@link parseCron}, {@link nextCronTick}) to compute the
17
+ * `nextRunAt` timestamp after each run or when a new job is registered.
18
+ *
19
+ * 3. **Overlap prevention** — Before dispatching a job, the scheduler checks
20
+ * for an existing `running` run for the same job. If one exists, the job
21
+ * is skipped for that tick.
22
+ *
23
+ * 4. **Job run recording** — Every execution creates a `plugin_job_runs` row:
24
+ * `queued` → `running` → `succeeded` | `failed`. Duration and error are
25
+ * captured.
26
+ *
27
+ * 5. **Lifecycle integration** — The scheduler exposes `registerPlugin()` and
28
+ * `unregisterPlugin()` so the host lifecycle manager can wire up job
29
+ * scheduling when plugins start/stop. On registration, the scheduler
30
+ * computes `nextRunAt` for all active jobs that don't already have one.
31
+ *
32
+ * @see PLUGIN_SPEC.md §17 — Scheduled Jobs
33
+ * @see ./plugin-job-store.ts — Persistence layer
34
+ * @see ./cron.ts — Cron parsing utilities
35
+ */
36
+ import { and, eq, lte, or } from "drizzle-orm";
37
+ import { pluginJobs, pluginJobRuns } from "@fidelios/db";
38
+ import { parseCron, nextCronTick, validateCron } from "./cron.js";
39
+ import { logger } from "../middleware/logger.js";
40
+ // ---------------------------------------------------------------------------
41
+ // Constants
42
+ // ---------------------------------------------------------------------------
43
+ /** Default interval between scheduler ticks (30 seconds). */
44
+ const DEFAULT_TICK_INTERVAL_MS = 30_000;
45
+ /** Default timeout for a runJob RPC call (5 minutes). */
46
+ const DEFAULT_JOB_TIMEOUT_MS = 5 * 60 * 1_000;
47
+ /** Maximum number of concurrent job executions across all plugins. */
48
+ const DEFAULT_MAX_CONCURRENT_JOBS = 10;
49
+ // ---------------------------------------------------------------------------
50
+ // Implementation
51
+ // ---------------------------------------------------------------------------
52
+ /**
53
+ * Create a new PluginJobScheduler.
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * const scheduler = createPluginJobScheduler({
58
+ * db,
59
+ * jobStore,
60
+ * workerManager,
61
+ * });
62
+ *
63
+ * // Start the tick loop
64
+ * scheduler.start();
65
+ *
66
+ * // When a plugin comes online, register it
67
+ * await scheduler.registerPlugin(pluginId);
68
+ *
69
+ * // Manually trigger a job
70
+ * const { runId } = await scheduler.triggerJob(jobId);
71
+ *
72
+ * // On server shutdown
73
+ * scheduler.stop();
74
+ * ```
75
+ */
76
+ export function createPluginJobScheduler(options) {
77
+ const { db, jobStore, workerManager, tickIntervalMs = DEFAULT_TICK_INTERVAL_MS, jobTimeoutMs = DEFAULT_JOB_TIMEOUT_MS, maxConcurrentJobs = DEFAULT_MAX_CONCURRENT_JOBS, } = options;
78
+ const log = logger.child({ service: "plugin-job-scheduler" });
79
+ // -----------------------------------------------------------------------
80
+ // State
81
+ // -----------------------------------------------------------------------
82
+ /** Timer handle for the tick loop. */
83
+ let tickTimer = null;
84
+ /** Whether the scheduler is running. */
85
+ let running = false;
86
+ /** Set of job IDs currently being executed (for overlap prevention). */
87
+ const activeJobs = new Set();
88
+ /** Total number of ticks since start. */
89
+ let tickCount = 0;
90
+ /** Timestamp of the last tick. */
91
+ let lastTickAt = null;
92
+ /** Guard against concurrent tick execution. */
93
+ let tickInProgress = false;
94
+ // -----------------------------------------------------------------------
95
+ // Core: tick
96
+ // -----------------------------------------------------------------------
97
+ /**
98
+ * A single scheduler tick. Queries for due jobs and dispatches them.
99
+ */
100
+ async function tick() {
101
+ // Prevent overlapping ticks (in case a tick takes longer than the interval)
102
+ if (tickInProgress) {
103
+ log.debug("skipping tick — previous tick still in progress");
104
+ return;
105
+ }
106
+ tickInProgress = true;
107
+ tickCount++;
108
+ lastTickAt = new Date();
109
+ try {
110
+ const now = new Date();
111
+ // Query for jobs whose nextRunAt has passed and are active.
112
+ // We include jobs with null nextRunAt since they may have just been
113
+ // registered and need their first run calculated.
114
+ const dueJobs = await db
115
+ .select()
116
+ .from(pluginJobs)
117
+ .where(and(eq(pluginJobs.status, "active"), lte(pluginJobs.nextRunAt, now)));
118
+ if (dueJobs.length === 0) {
119
+ return;
120
+ }
121
+ log.debug({ count: dueJobs.length }, "found due jobs");
122
+ // Dispatch each due job (respecting concurrency limits)
123
+ const dispatches = [];
124
+ for (const job of dueJobs) {
125
+ // Concurrency limit
126
+ if (activeJobs.size >= maxConcurrentJobs) {
127
+ log.warn({ maxConcurrentJobs, activeJobCount: activeJobs.size }, "max concurrent jobs reached, deferring remaining jobs");
128
+ break;
129
+ }
130
+ // Overlap prevention: skip if this job is already running
131
+ if (activeJobs.has(job.id)) {
132
+ log.debug({ jobId: job.id, jobKey: job.jobKey, pluginId: job.pluginId }, "skipping job — already running (overlap prevention)");
133
+ continue;
134
+ }
135
+ // Check if the worker is available
136
+ if (!workerManager.isRunning(job.pluginId)) {
137
+ log.debug({ jobId: job.id, pluginId: job.pluginId }, "skipping job — worker not running");
138
+ continue;
139
+ }
140
+ // Validate cron expression before dispatching
141
+ if (!job.schedule) {
142
+ log.warn({ jobId: job.id, jobKey: job.jobKey }, "skipping job — no schedule defined");
143
+ continue;
144
+ }
145
+ dispatches.push(dispatchJob(job));
146
+ }
147
+ if (dispatches.length > 0) {
148
+ await Promise.allSettled(dispatches);
149
+ }
150
+ }
151
+ catch (err) {
152
+ log.error({ err: err instanceof Error ? err.message : String(err) }, "scheduler tick error");
153
+ }
154
+ finally {
155
+ tickInProgress = false;
156
+ }
157
+ }
158
+ // -----------------------------------------------------------------------
159
+ // Core: dispatch a single job
160
+ // -----------------------------------------------------------------------
161
+ /**
162
+ * Dispatch a single job run — create the run record, call the worker,
163
+ * record the result, and advance the schedule pointer.
164
+ */
165
+ async function dispatchJob(job) {
166
+ const { id: jobId, pluginId, jobKey, schedule } = job;
167
+ const jobLog = log.child({ jobId, pluginId, jobKey });
168
+ // Mark as active (overlap prevention)
169
+ activeJobs.add(jobId);
170
+ let runId;
171
+ const startedAt = Date.now();
172
+ try {
173
+ // 1. Create run record
174
+ const run = await jobStore.createRun({
175
+ jobId,
176
+ pluginId,
177
+ trigger: "schedule",
178
+ });
179
+ runId = run.id;
180
+ jobLog.info({ runId }, "dispatching scheduled job");
181
+ // 2. Mark run as running
182
+ await jobStore.markRunning(runId);
183
+ // 3. Call worker via RPC
184
+ await workerManager.call(pluginId, "runJob", {
185
+ job: {
186
+ jobKey,
187
+ runId,
188
+ trigger: "schedule",
189
+ scheduledAt: (job.nextRunAt ?? new Date()).toISOString(),
190
+ },
191
+ }, jobTimeoutMs);
192
+ // 4. Mark run as succeeded
193
+ const durationMs = Date.now() - startedAt;
194
+ await jobStore.completeRun(runId, {
195
+ status: "succeeded",
196
+ durationMs,
197
+ });
198
+ jobLog.info({ runId, durationMs }, "job completed successfully");
199
+ }
200
+ catch (err) {
201
+ const durationMs = Date.now() - startedAt;
202
+ const errorMessage = err instanceof Error ? err.message : String(err);
203
+ jobLog.error({ runId, durationMs, err: errorMessage }, "job execution failed");
204
+ // Record the failure
205
+ if (runId) {
206
+ try {
207
+ await jobStore.completeRun(runId, {
208
+ status: "failed",
209
+ error: errorMessage,
210
+ durationMs,
211
+ });
212
+ }
213
+ catch (completeErr) {
214
+ jobLog.error({
215
+ runId,
216
+ err: completeErr instanceof Error ? completeErr.message : String(completeErr),
217
+ }, "failed to record job failure");
218
+ }
219
+ }
220
+ }
221
+ finally {
222
+ // Remove from active set
223
+ activeJobs.delete(jobId);
224
+ // 5. Always advance the schedule pointer (even on failure)
225
+ try {
226
+ await advanceSchedulePointer(job);
227
+ }
228
+ catch (err) {
229
+ jobLog.error({ err: err instanceof Error ? err.message : String(err) }, "failed to advance schedule pointer");
230
+ }
231
+ }
232
+ }
233
+ // -----------------------------------------------------------------------
234
+ // Core: manual trigger
235
+ // -----------------------------------------------------------------------
236
+ async function triggerJob(jobId, trigger = "manual") {
237
+ const job = await jobStore.getJobById(jobId);
238
+ if (!job) {
239
+ throw new Error(`Job not found: ${jobId}`);
240
+ }
241
+ if (job.status !== "active") {
242
+ throw new Error(`Job "${job.jobKey}" is not active (status: ${job.status})`);
243
+ }
244
+ // Overlap prevention
245
+ if (activeJobs.has(jobId)) {
246
+ throw new Error(`Job "${job.jobKey}" is already running — cannot trigger while in progress`);
247
+ }
248
+ // Also check DB for running runs (defensive — covers multi-instance)
249
+ const existingRuns = await db
250
+ .select()
251
+ .from(pluginJobRuns)
252
+ .where(and(eq(pluginJobRuns.jobId, jobId), eq(pluginJobRuns.status, "running")));
253
+ if (existingRuns.length > 0) {
254
+ throw new Error(`Job "${job.jobKey}" already has a running execution — cannot trigger while in progress`);
255
+ }
256
+ // Check worker availability
257
+ if (!workerManager.isRunning(job.pluginId)) {
258
+ throw new Error(`Worker for plugin "${job.pluginId}" is not running — cannot trigger job`);
259
+ }
260
+ // Create the run and dispatch (non-blocking)
261
+ const run = await jobStore.createRun({
262
+ jobId,
263
+ pluginId: job.pluginId,
264
+ trigger,
265
+ });
266
+ // Dispatch in background — don't block the caller
267
+ void dispatchManualRun(job, run.id, trigger);
268
+ return { runId: run.id, jobId };
269
+ }
270
+ /**
271
+ * Dispatch a manually triggered job run.
272
+ */
273
+ async function dispatchManualRun(job, runId, trigger) {
274
+ const { id: jobId, pluginId, jobKey } = job;
275
+ const jobLog = log.child({ jobId, pluginId, jobKey, runId, trigger });
276
+ activeJobs.add(jobId);
277
+ const startedAt = Date.now();
278
+ try {
279
+ await jobStore.markRunning(runId);
280
+ await workerManager.call(pluginId, "runJob", {
281
+ job: {
282
+ jobKey,
283
+ runId,
284
+ trigger,
285
+ scheduledAt: new Date().toISOString(),
286
+ },
287
+ }, jobTimeoutMs);
288
+ const durationMs = Date.now() - startedAt;
289
+ await jobStore.completeRun(runId, {
290
+ status: "succeeded",
291
+ durationMs,
292
+ });
293
+ jobLog.info({ durationMs }, "manual job completed successfully");
294
+ }
295
+ catch (err) {
296
+ const durationMs = Date.now() - startedAt;
297
+ const errorMessage = err instanceof Error ? err.message : String(err);
298
+ jobLog.error({ durationMs, err: errorMessage }, "manual job failed");
299
+ try {
300
+ await jobStore.completeRun(runId, {
301
+ status: "failed",
302
+ error: errorMessage,
303
+ durationMs,
304
+ });
305
+ }
306
+ catch (completeErr) {
307
+ jobLog.error({
308
+ err: completeErr instanceof Error ? completeErr.message : String(completeErr),
309
+ }, "failed to record manual job failure");
310
+ }
311
+ }
312
+ finally {
313
+ activeJobs.delete(jobId);
314
+ }
315
+ }
316
+ // -----------------------------------------------------------------------
317
+ // Schedule pointer management
318
+ // -----------------------------------------------------------------------
319
+ /**
320
+ * Advance the `lastRunAt` and `nextRunAt` timestamps on a job after a run.
321
+ */
322
+ async function advanceSchedulePointer(job) {
323
+ const now = new Date();
324
+ let nextRunAt = null;
325
+ if (job.schedule) {
326
+ const validationError = validateCron(job.schedule);
327
+ if (validationError) {
328
+ log.warn({ jobId: job.id, schedule: job.schedule, error: validationError }, "invalid cron schedule — cannot compute next run");
329
+ }
330
+ else {
331
+ const cron = parseCron(job.schedule);
332
+ nextRunAt = nextCronTick(cron, now);
333
+ }
334
+ }
335
+ await jobStore.updateRunTimestamps(job.id, now, nextRunAt);
336
+ }
337
+ /**
338
+ * Ensure all active jobs for a plugin have a `nextRunAt` value.
339
+ * Called when a plugin is registered with the scheduler.
340
+ */
341
+ async function ensureNextRunTimestamps(pluginId) {
342
+ const jobs = await jobStore.listJobs(pluginId, "active");
343
+ for (const job of jobs) {
344
+ // Skip jobs that already have a valid nextRunAt in the future
345
+ if (job.nextRunAt && job.nextRunAt.getTime() > Date.now()) {
346
+ continue;
347
+ }
348
+ // Skip jobs without a schedule
349
+ if (!job.schedule) {
350
+ continue;
351
+ }
352
+ const validationError = validateCron(job.schedule);
353
+ if (validationError) {
354
+ log.warn({ jobId: job.id, jobKey: job.jobKey, schedule: job.schedule, error: validationError }, "skipping job with invalid cron schedule");
355
+ continue;
356
+ }
357
+ const cron = parseCron(job.schedule);
358
+ const nextRunAt = nextCronTick(cron, new Date());
359
+ if (nextRunAt) {
360
+ await jobStore.updateRunTimestamps(job.id, job.lastRunAt ?? new Date(0), nextRunAt);
361
+ log.debug({ jobId: job.id, jobKey: job.jobKey, nextRunAt: nextRunAt.toISOString() }, "computed nextRunAt for job");
362
+ }
363
+ }
364
+ }
365
+ // -----------------------------------------------------------------------
366
+ // Plugin registration
367
+ // -----------------------------------------------------------------------
368
+ async function registerPlugin(pluginId) {
369
+ log.info({ pluginId }, "registering plugin with job scheduler");
370
+ await ensureNextRunTimestamps(pluginId);
371
+ }
372
+ async function unregisterPlugin(pluginId) {
373
+ log.info({ pluginId }, "unregistering plugin from job scheduler");
374
+ // Cancel any in-flight run records for this plugin that are still
375
+ // queued or running. Active jobs in-memory will finish naturally.
376
+ try {
377
+ const runningRuns = await db
378
+ .select()
379
+ .from(pluginJobRuns)
380
+ .where(and(eq(pluginJobRuns.pluginId, pluginId), or(eq(pluginJobRuns.status, "running"), eq(pluginJobRuns.status, "queued"))));
381
+ for (const run of runningRuns) {
382
+ await jobStore.completeRun(run.id, {
383
+ status: "cancelled",
384
+ error: "Plugin unregistered",
385
+ durationMs: run.startedAt
386
+ ? Date.now() - run.startedAt.getTime()
387
+ : null,
388
+ });
389
+ }
390
+ }
391
+ catch (err) {
392
+ log.error({
393
+ pluginId,
394
+ err: err instanceof Error ? err.message : String(err),
395
+ }, "error cancelling in-flight runs during unregister");
396
+ }
397
+ // Remove any active tracking for jobs owned by this plugin
398
+ const jobs = await jobStore.listJobs(pluginId);
399
+ for (const job of jobs) {
400
+ activeJobs.delete(job.id);
401
+ }
402
+ }
403
+ // -----------------------------------------------------------------------
404
+ // Lifecycle: start / stop
405
+ // -----------------------------------------------------------------------
406
+ function start() {
407
+ if (running) {
408
+ log.debug("scheduler already running");
409
+ return;
410
+ }
411
+ running = true;
412
+ tickTimer = setInterval(() => {
413
+ void tick();
414
+ }, tickIntervalMs);
415
+ log.info({ tickIntervalMs, maxConcurrentJobs }, "plugin job scheduler started");
416
+ }
417
+ function stop() {
418
+ // Always clear the timer defensively, even if `running` is already false,
419
+ // to prevent leaked interval timers.
420
+ if (tickTimer !== null) {
421
+ clearInterval(tickTimer);
422
+ tickTimer = null;
423
+ }
424
+ if (!running)
425
+ return;
426
+ running = false;
427
+ log.info({ activeJobCount: activeJobs.size }, "plugin job scheduler stopped");
428
+ }
429
+ // -----------------------------------------------------------------------
430
+ // Diagnostics
431
+ // -----------------------------------------------------------------------
432
+ function diagnostics() {
433
+ return {
434
+ running,
435
+ activeJobCount: activeJobs.size,
436
+ activeJobIds: [...activeJobs],
437
+ tickCount,
438
+ lastTickAt: lastTickAt?.toISOString() ?? null,
439
+ };
440
+ }
441
+ // -----------------------------------------------------------------------
442
+ // Public API
443
+ // -----------------------------------------------------------------------
444
+ return {
445
+ start,
446
+ stop,
447
+ registerPlugin,
448
+ unregisterPlugin,
449
+ triggerJob,
450
+ tick,
451
+ diagnostics,
452
+ };
453
+ }
454
+ //# sourceMappingURL=plugin-job-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-job-scheduler.js","sourceRoot":"","sources":["../../src/services/plugin-job-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,6DAA6D;AAC7D,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,yDAAyD;AACzD,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;AAE9C,sEAAsE;AACtE,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAuHvC,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAkC;IAElC,MAAM,EACJ,EAAE,EACF,QAAQ,EACR,aAAa,EACb,cAAc,GAAG,wBAAwB,EACzC,YAAY,GAAG,sBAAsB,EACrC,iBAAiB,GAAG,2BAA2B,GAChD,GAAG,OAAO,CAAC;IAEZ,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAE9D,0EAA0E;IAC1E,QAAQ;IACR,0EAA0E;IAE1E,sCAAsC;IACtC,IAAI,SAAS,GAA0C,IAAI,CAAC;IAE5D,wCAAwC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,wEAAwE;IACxE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,yCAAyC;IACzC,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,kCAAkC;IAClC,IAAI,UAAU,GAAgB,IAAI,CAAC;IAEnC,+CAA+C;IAC/C,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,0EAA0E;IAC1E,aAAa;IACb,0EAA0E;IAE1E;;OAEG;IACH,KAAK,UAAU,IAAI;QACjB,4EAA4E;QAC5E,IAAI,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,cAAc,GAAG,IAAI,CAAC;QACtB,SAAS,EAAE,CAAC;QACZ,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YAEvB,4DAA4D;YAC5D,oEAAoE;YACpE,kDAAkD;YAClD,MAAM,OAAO,GAAG,MAAM,EAAE;iBACrB,MAAM,EAAE;iBACR,IAAI,CAAC,UAAU,CAAC;iBAChB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC/B,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAC/B,CACF,CAAC;YAEJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAEvD,wDAAwD;YACxD,MAAM,UAAU,GAAoB,EAAE,CAAC;YAEvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,oBAAoB;gBACpB,IAAI,UAAU,CAAC,IAAI,IAAI,iBAAiB,EAAE,CAAC;oBACzC,GAAG,CAAC,IAAI,CACN,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,EACtD,uDAAuD,CACxD,CAAC;oBACF,MAAM;gBACR,CAAC;gBAED,0DAA0D;gBAC1D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CACP,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAC7D,qDAAqD,CACtD,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,mCAAmC;gBACnC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3C,GAAG,CAAC,KAAK,CACP,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EACzC,mCAAmC,CACpC,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAClB,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACrC,oCAAoC,CACrC,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CACP,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzD,sBAAsB,CACvB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,8BAA8B;IAC9B,0EAA0E;IAE1E;;;OAGG;IACH,KAAK,UAAU,WAAW,CACxB,GAAmC;QAEnC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtD,sCAAsC;QACtC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEtB,IAAI,KAAyB,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC;gBACnC,KAAK;gBACL,QAAQ;gBACR,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YACH,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YAEf,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAEpD,yBAAyB;YACzB,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAElC,yBAAyB;YACzB,MAAM,aAAa,CAAC,IAAI,CACtB,QAAQ,EACR,QAAQ,EACR;gBACE,GAAG,EAAE;oBACH,MAAM;oBACN,KAAK;oBACL,OAAO,EAAE,UAAmB;oBAC5B,WAAW,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;iBACzD;aACF,EACD,YAAY,CACb,CAAC;YAEF,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;gBAChC,MAAM,EAAE,WAAW;gBACnB,UAAU;aACX,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEtE,MAAM,CAAC,KAAK,CACV,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EACxC,sBAAsB,CACvB,CAAC;YAEF,qBAAqB;YACrB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;wBAChC,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,YAAY;wBACnB,UAAU;qBACX,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,WAAW,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CACV;wBACE,KAAK;wBACL,GAAG,EAAE,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;qBAC9E,EACD,8BAA8B,CAC/B,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,yBAAyB;YACzB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzB,2DAA2D;YAC3D,IAAI,CAAC;gBACH,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CACV,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzD,oCAAoC,CACrC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,uBAAuB;IACvB,0EAA0E;IAE1E,KAAK,UAAU,UAAU,CACvB,KAAa,EACb,UAA8B,QAAQ;QAEtC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAM,GAAG,CAC5D,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,MAAM,yDAAyD,CAC5E,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,MAAM,YAAY,GAAG,MAAM,EAAE;aAC1B,MAAM,EAAE;aACR,IAAI,CAAC,aAAa,CAAC;aACnB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,EAC9B,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CACpC,CACF,CAAC;QAEJ,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,MAAM,sEAAsE,CACzF,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,CAAC,QAAQ,uCAAuC,CAC1E,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC;YACnC,KAAK;YACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO;SACR,CAAC,CAAC;QAEH,kDAAkD;QAClD,KAAK,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,UAAU,iBAAiB,CAC9B,GAAmC,EACnC,KAAa,EACb,OAA2B;QAE3B,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAEtE,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAElC,MAAM,aAAa,CAAC,IAAI,CACtB,QAAQ,EACR,QAAQ,EACR;gBACE,GAAG,EAAE;oBACH,MAAM;oBACN,KAAK;oBACL,OAAO;oBACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACtC;aACF,EACD,YAAY,CACb,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;gBAChC,MAAM,EAAE,WAAW;gBACnB,UAAU;aACX,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,mCAAmC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,mBAAmB,CAAC,CAAC;YAErE,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE;oBAChC,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,YAAY;oBACnB,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CACV;oBACE,GAAG,EAAE,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;iBAC9E,EACD,qCAAqC,CACtC,CAAC;YACJ,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,8BAA8B;IAC9B,0EAA0E;IAE1E;;OAEG;IACH,KAAK,UAAU,sBAAsB,CACnC,GAAmC;QAEnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,SAAS,GAAgB,IAAI,CAAC;QAElC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,eAAe,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EACjE,iDAAiD,CAClD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrC,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,uBAAuB,CAAC,QAAgB;QACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,8DAA8D;YAC9D,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1D,SAAS;YACX,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,eAAe,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CACN,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EACrF,yCAAyC,CAC1C,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAEjD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,CAAC,mBAAmB,CAChC,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAC5B,SAAS,CACV,CAAC;gBACF,GAAG,CAAC,KAAK,CACP,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,EAAE,EACzE,4BAA4B,CAC7B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,sBAAsB;IACtB,0EAA0E;IAE1E,KAAK,UAAU,cAAc,CAAC,QAAgB;QAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,uCAAuC,CAAC,CAAC;QAChE,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;QAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,yCAAyC,CAAC,CAAC;QAElE,kEAAkE;QAClE,kEAAkE;QAClE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,EAAE;iBACzB,MAAM,EAAE;iBACR,IAAI,CAAC,aAAa,CAAC;iBACnB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpC,EAAE,CACA,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,EACnC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CACnC,CACF,CACF,CAAC;YAEJ,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE;oBACjC,MAAM,EAAE,WAAW;oBACnB,KAAK,EAAE,qBAAqB;oBAC5B,UAAU,EAAE,GAAG,CAAC,SAAS;wBACvB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;wBACtC,CAAC,CAAC,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CACP;gBACE,QAAQ;gBACR,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,EACD,mDAAmD,CACpD,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,0BAA0B;IAC1B,0EAA0E;IAE1E,SAAS,KAAK;QACZ,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,OAAO,GAAG,IAAI,CAAC;QACf,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3B,KAAK,IAAI,EAAE,CAAC;QACd,CAAC,EAAE,cAAc,CAAC,CAAC;QAEnB,GAAG,CAAC,IAAI,CACN,EAAE,cAAc,EAAE,iBAAiB,EAAE,EACrC,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,SAAS,IAAI;QACX,0EAA0E;QAC1E,qCAAqC;QACrC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,OAAO,GAAG,KAAK,CAAC;QAEhB,GAAG,CAAC,IAAI,CACN,EAAE,cAAc,EAAE,UAAU,CAAC,IAAI,EAAE,EACnC,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,cAAc;IACd,0EAA0E;IAE1E,SAAS,WAAW;QAClB,OAAO;YACL,OAAO;YACP,cAAc,EAAE,UAAU,CAAC,IAAI;YAC/B,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;YAC7B,SAAS;YACT,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI;SAC9C,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,aAAa;IACb,0EAA0E;IAE1E,OAAO;QACL,KAAK;QACL,IAAI;QACJ,cAAc;QACd,gBAAgB;QAChB,UAAU;QACV,IAAI;QACJ,WAAW;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Plugin Job Store — persistence layer for scheduled plugin jobs and their
3
+ * execution history.
4
+ *
5
+ * This service manages the `plugin_jobs` and `plugin_job_runs` tables. It is
6
+ * the server-side backing store for the `ctx.jobs` SDK surface exposed to
7
+ * plugin workers.
8
+ *
9
+ * ## Responsibilities
10
+ *
11
+ * 1. **Sync job declarations** — When a plugin is installed or started, the
12
+ * host calls `syncJobDeclarations()` to upsert the manifest's declared jobs
13
+ * into the `plugin_jobs` table. Jobs removed from the manifest are marked
14
+ * `paused` (not deleted) to preserve history.
15
+ *
16
+ * 2. **Job CRUD** — List, get, pause, and resume jobs for a given plugin.
17
+ *
18
+ * 3. **Run lifecycle** — Create job run records, update their status, and
19
+ * record results (duration, errors, logs).
20
+ *
21
+ * 4. **Next-run calculation** — After a run completes the host should call
22
+ * `updateNextRunAt()` with the next cron tick so the scheduler knows when
23
+ * to fire next.
24
+ *
25
+ * The capability check (`jobs.schedule`) is enforced upstream by the host
26
+ * client factory and manifest validator — this store trusts that the caller
27
+ * has already been authorised.
28
+ *
29
+ * @see PLUGIN_SPEC.md §17 — Scheduled Jobs
30
+ * @see PLUGIN_SPEC.md §21.3 — `plugin_jobs` / `plugin_job_runs` tables
31
+ */
32
+ import type { Db } from "@fidelios/db";
33
+ import { pluginJobs, pluginJobRuns } from "@fidelios/db";
34
+ import type { PluginJobDeclaration, PluginJobRunStatus, PluginJobRunTrigger, PluginJobRecord } from "@fidelios/shared";
35
+ /**
36
+ * The statuses used for job *definitions* in the `plugin_jobs` table.
37
+ * Aliased from `PluginJobRecord` to keep the store API aligned with
38
+ * the domain type (`"active" | "paused" | "failed"`).
39
+ */
40
+ type JobDefinitionStatus = PluginJobRecord["status"];
41
+ /**
42
+ * Input for creating a job run record.
43
+ */
44
+ export interface CreateJobRunInput {
45
+ /** FK to the plugin_jobs row. */
46
+ jobId: string;
47
+ /** FK to the plugins row. */
48
+ pluginId: string;
49
+ /** What triggered this run. */
50
+ trigger: PluginJobRunTrigger;
51
+ }
52
+ /**
53
+ * Input for completing (or failing) a job run.
54
+ */
55
+ export interface CompleteJobRunInput {
56
+ /** Final run status. */
57
+ status: PluginJobRunStatus;
58
+ /** Error message if the run failed. */
59
+ error?: string | null;
60
+ /** Run duration in milliseconds. */
61
+ durationMs?: number | null;
62
+ }
63
+ /**
64
+ * Create a PluginJobStore backed by the given Drizzle database instance.
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const jobStore = pluginJobStore(db);
69
+ *
70
+ * // On plugin install/start — sync declared jobs into the DB
71
+ * await jobStore.syncJobDeclarations(pluginId, manifest.jobs ?? []);
72
+ *
73
+ * // Before dispatching a runJob RPC — create a run record
74
+ * const run = await jobStore.createRun({ jobId, pluginId, trigger: "schedule" });
75
+ *
76
+ * // After the RPC completes — record the result
77
+ * await jobStore.completeRun(run.id, {
78
+ * status: "succeeded",
79
+ * durationMs: Date.now() - startedAt,
80
+ * });
81
+ * ```
82
+ */
83
+ export declare function pluginJobStore(db: Db): {
84
+ /**
85
+ * Sync declared jobs from a plugin manifest into the `plugin_jobs` table.
86
+ *
87
+ * This is called at plugin install and on each worker startup so the DB
88
+ * always reflects the manifest's declared jobs:
89
+ *
90
+ * - **New jobs** are inserted with status `active`.
91
+ * - **Existing jobs** have their `schedule` updated if it changed.
92
+ * - **Removed jobs** (present in DB but absent from the manifest) are
93
+ * set to `paused` so their history is preserved.
94
+ *
95
+ * The unique constraint `(pluginId, jobKey)` is used for conflict
96
+ * resolution.
97
+ *
98
+ * @param pluginId - UUID of the owning plugin
99
+ * @param declarations - Job declarations from the plugin manifest
100
+ */
101
+ syncJobDeclarations(pluginId: string, declarations: PluginJobDeclaration[]): Promise<void>;
102
+ /**
103
+ * List all jobs for a plugin, optionally filtered by status.
104
+ *
105
+ * @param pluginId - UUID of the owning plugin
106
+ * @param status - Optional status filter
107
+ */
108
+ listJobs(pluginId: string, status?: JobDefinitionStatus): Promise<(typeof pluginJobs.$inferSelect)[]>;
109
+ /**
110
+ * Get a single job by its composite key `(pluginId, jobKey)`.
111
+ *
112
+ * @param pluginId - UUID of the owning plugin
113
+ * @param jobKey - Stable job identifier from the manifest
114
+ * @returns The job row, or `null` if not found
115
+ */
116
+ getJobByKey(pluginId: string, jobKey: string): Promise<(typeof pluginJobs.$inferSelect) | null>;
117
+ /**
118
+ * Get a single job by its primary key (UUID).
119
+ *
120
+ * @param jobId - UUID of the job row
121
+ * @returns The job row, or `null` if not found
122
+ */
123
+ getJobById(jobId: string): Promise<(typeof pluginJobs.$inferSelect) | null>;
124
+ /**
125
+ * Fetch a single job by ID, scoped to a specific plugin.
126
+ *
127
+ * Returns `null` if the job does not exist or does not belong to the
128
+ * given plugin — callers should treat both cases as "not found".
129
+ */
130
+ getJobByIdForPlugin(pluginId: string, jobId: string): Promise<(typeof pluginJobs.$inferSelect) | null>;
131
+ /**
132
+ * Update a job's status.
133
+ *
134
+ * @param jobId - UUID of the job row
135
+ * @param status - New status
136
+ */
137
+ updateJobStatus(jobId: string, status: JobDefinitionStatus): Promise<void>;
138
+ /**
139
+ * Update the `lastRunAt` and `nextRunAt` timestamps on a job.
140
+ *
141
+ * Called by the scheduler after a run completes to advance the
142
+ * scheduling pointer.
143
+ *
144
+ * @param jobId - UUID of the job row
145
+ * @param lastRunAt - When the last run started
146
+ * @param nextRunAt - When the next run should fire
147
+ */
148
+ updateRunTimestamps(jobId: string, lastRunAt: Date, nextRunAt: Date | null): Promise<void>;
149
+ /**
150
+ * Delete all jobs (and cascaded runs) owned by a plugin.
151
+ *
152
+ * Called during plugin uninstall when `removeData = true`.
153
+ *
154
+ * @param pluginId - UUID of the owning plugin
155
+ */
156
+ deleteAllJobs(pluginId: string): Promise<void>;
157
+ /**
158
+ * Create a new job run record with status `queued`.
159
+ *
160
+ * The caller should create the run record *before* dispatching the
161
+ * `runJob` RPC to the worker, then update it to `running` once the
162
+ * worker begins execution.
163
+ *
164
+ * @param input - Job run input (jobId, pluginId, trigger)
165
+ * @returns The newly created run row
166
+ */
167
+ createRun(input: CreateJobRunInput): Promise<typeof pluginJobRuns.$inferSelect>;
168
+ /**
169
+ * Mark a run as `running` and set its `startedAt` timestamp.
170
+ *
171
+ * @param runId - UUID of the run row
172
+ */
173
+ markRunning(runId: string): Promise<void>;
174
+ /**
175
+ * Complete a run — set its final status, error, duration, and
176
+ * `finishedAt` timestamp.
177
+ *
178
+ * @param runId - UUID of the run row
179
+ * @param input - Completion details
180
+ */
181
+ completeRun(runId: string, input: CompleteJobRunInput): Promise<void>;
182
+ /**
183
+ * Get a run by its primary key.
184
+ *
185
+ * @param runId - UUID of the run row
186
+ * @returns The run row, or `null` if not found
187
+ */
188
+ getRunById(runId: string): Promise<(typeof pluginJobRuns.$inferSelect) | null>;
189
+ /**
190
+ * List runs for a specific job, ordered by creation time descending.
191
+ *
192
+ * @param jobId - UUID of the job
193
+ * @param limit - Maximum number of rows to return (default: 50)
194
+ */
195
+ listRunsByJob(jobId: string, limit?: number): Promise<(typeof pluginJobRuns.$inferSelect)[]>;
196
+ /**
197
+ * List runs for a plugin, optionally filtered by status.
198
+ *
199
+ * @param pluginId - UUID of the owning plugin
200
+ * @param status - Optional status filter
201
+ * @param limit - Maximum number of rows to return (default: 50)
202
+ */
203
+ listRunsByPlugin(pluginId: string, status?: PluginJobRunStatus, limit?: number): Promise<(typeof pluginJobRuns.$inferSelect)[]>;
204
+ };
205
+ /** Type alias for the return value of `pluginJobStore()`. */
206
+ export type PluginJobStore = ReturnType<typeof pluginJobStore>;
207
+ export {};
208
+ //# sourceMappingURL=plugin-job-store.d.ts.map