@aphexcms/cms-core 9.6.0 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/dist/agent-chat-state.svelte.d.ts +38 -0
  2. package/dist/agent-chat-state.svelte.d.ts.map +1 -0
  3. package/dist/agent-chat-state.svelte.js +86 -0
  4. package/dist/ai/content-workspace-tools.d.ts +3 -0
  5. package/dist/ai/content-workspace-tools.d.ts.map +1 -0
  6. package/dist/ai/content-workspace-tools.js +50 -0
  7. package/dist/ai/default-system-prompt.d.ts +2 -0
  8. package/dist/ai/default-system-prompt.d.ts.map +1 -0
  9. package/dist/ai/default-system-prompt.js +15 -0
  10. package/dist/ai/index.d.ts +2 -0
  11. package/dist/ai/index.d.ts.map +1 -0
  12. package/dist/ai/index.js +4 -0
  13. package/dist/ai/interfaces/ai-provider.d.ts +67 -0
  14. package/dist/ai/interfaces/ai-provider.d.ts.map +1 -0
  15. package/dist/ai/interfaces/ai-provider.js +16 -0
  16. package/dist/ai/run-agent-turn.d.ts +29 -0
  17. package/dist/ai/run-agent-turn.d.ts.map +1 -0
  18. package/dist/ai/run-agent-turn.js +166 -0
  19. package/dist/api/agent-chat.d.ts +27 -0
  20. package/dist/api/agent-chat.d.ts.map +1 -0
  21. package/dist/api/agent-chat.js +64 -0
  22. package/dist/api/documents.d.ts +36 -3
  23. package/dist/api/documents.d.ts.map +1 -1
  24. package/dist/api/documents.js +24 -6
  25. package/dist/api/schemas/agent-chat.d.ts +45 -0
  26. package/dist/api/schemas/agent-chat.d.ts.map +1 -0
  27. package/dist/api/schemas/agent-chat.js +35 -0
  28. package/dist/api/schemas/agent-operations.d.ts +13 -0
  29. package/dist/api/schemas/agent-operations.d.ts.map +1 -0
  30. package/dist/api/schemas/agent-operations.js +15 -0
  31. package/dist/api/schemas/documents.d.ts +41 -0
  32. package/dist/api/schemas/documents.d.ts.map +1 -1
  33. package/dist/api/schemas/documents.js +38 -2
  34. package/dist/chunk-recovery.d.ts +33 -0
  35. package/dist/chunk-recovery.d.ts.map +1 -0
  36. package/dist/chunk-recovery.js +131 -0
  37. package/dist/client/index.d.ts +1 -0
  38. package/dist/client/index.d.ts.map +1 -1
  39. package/dist/client/index.js +1 -0
  40. package/dist/client/ui.d.ts +2 -0
  41. package/dist/client/ui.d.ts.map +1 -1
  42. package/dist/client/ui.js +3 -0
  43. package/dist/components/AdminApp.svelte +37 -3
  44. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  45. package/dist/components/admin/ActivityView.svelte +436 -0
  46. package/dist/components/admin/ActivityView.svelte.d.ts +4 -0
  47. package/dist/components/admin/ActivityView.svelte.d.ts.map +1 -0
  48. package/dist/components/admin/AgentChat.svelte +977 -0
  49. package/dist/components/admin/AgentChat.svelte.d.ts +17 -0
  50. package/dist/components/admin/AgentChat.svelte.d.ts.map +1 -0
  51. package/dist/components/admin/DocumentEditor.svelte +469 -70
  52. package/dist/components/admin/DocumentEditor.svelte.d.ts +6 -0
  53. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  54. package/dist/components/admin/ObjectModal.svelte +4 -2
  55. package/dist/components/admin/ScheduleDialog.svelte +174 -0
  56. package/dist/components/admin/ScheduleDialog.svelte.d.ts +20 -0
  57. package/dist/components/admin/ScheduleDialog.svelte.d.ts.map +1 -0
  58. package/dist/components/admin/fields/ArrayField.svelte +4 -1
  59. package/dist/components/admin/fields/ReferenceField.svelte +12 -1
  60. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  61. package/dist/components/index.d.ts +1 -0
  62. package/dist/components/index.d.ts.map +1 -1
  63. package/dist/components/index.js +1 -0
  64. package/dist/components/layout/OrganizationSwitcher.svelte +3 -3
  65. package/dist/components/layout/Sidebar.svelte +26 -2
  66. package/dist/components/layout/Sidebar.svelte.d.ts +1 -0
  67. package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
  68. package/dist/components/layout/sidebar/NavUser.svelte +5 -5
  69. package/dist/db/interfaces/agent-change-sets.d.ts +17 -0
  70. package/dist/db/interfaces/agent-change-sets.d.ts.map +1 -0
  71. package/dist/db/interfaces/agent-change-sets.js +1 -0
  72. package/dist/db/interfaces/document.d.ts +25 -3
  73. package/dist/db/interfaces/document.d.ts.map +1 -1
  74. package/dist/db/interfaces/document.js +19 -1
  75. package/dist/db/interfaces/events.d.ts +55 -0
  76. package/dist/db/interfaces/events.d.ts.map +1 -0
  77. package/dist/db/interfaces/events.js +1 -0
  78. package/dist/db/interfaces/index.d.ts +13 -2
  79. package/dist/db/interfaces/index.d.ts.map +1 -1
  80. package/dist/db/interfaces/index.js +1 -1
  81. package/dist/db/interfaces/plugin-storage.d.ts +39 -0
  82. package/dist/db/interfaces/plugin-storage.d.ts.map +1 -0
  83. package/dist/db/interfaces/plugin-storage.js +1 -0
  84. package/dist/document-refresh.svelte.d.ts +2 -0
  85. package/dist/document-refresh.svelte.d.ts.map +1 -1
  86. package/dist/document-refresh.svelte.js +15 -0
  87. package/dist/document-workspace-registry.svelte.d.ts +15 -0
  88. package/dist/document-workspace-registry.svelte.d.ts.map +1 -0
  89. package/dist/document-workspace-registry.svelte.js +30 -0
  90. package/dist/events/catalog.d.ts +8 -0
  91. package/dist/events/catalog.d.ts.map +1 -0
  92. package/dist/events/catalog.js +11 -0
  93. package/dist/events/consumer.d.ts +79 -0
  94. package/dist/events/consumer.d.ts.map +1 -0
  95. package/dist/events/consumer.js +76 -0
  96. package/dist/events/define-event.d.ts +17 -0
  97. package/dist/events/define-event.d.ts.map +1 -0
  98. package/dist/events/define-event.js +7 -0
  99. package/dist/events/emit.d.ts +11 -0
  100. package/dist/events/emit.d.ts.map +1 -0
  101. package/dist/events/emit.js +20 -0
  102. package/dist/events/index.d.ts +4 -0
  103. package/dist/events/index.d.ts.map +1 -0
  104. package/dist/events/index.js +3 -0
  105. package/dist/field-validation/rule.d.ts.map +1 -1
  106. package/dist/field-validation/rule.js +15 -0
  107. package/dist/field-validation/utils.d.ts.map +1 -1
  108. package/dist/field-validation/utils.js +211 -29
  109. package/dist/forms/define-form.d.ts +25 -0
  110. package/dist/forms/define-form.d.ts.map +1 -0
  111. package/dist/forms/define-form.js +22 -0
  112. package/dist/forms/index.d.ts +4 -0
  113. package/dist/forms/index.d.ts.map +1 -0
  114. package/dist/forms/index.js +5 -0
  115. package/dist/forms/types.d.ts +49 -0
  116. package/dist/forms/types.d.ts.map +1 -0
  117. package/dist/forms/types.js +1 -0
  118. package/dist/forms/validate.d.ts +9 -0
  119. package/dist/forms/validate.d.ts.map +1 -0
  120. package/dist/forms/validate.js +18 -0
  121. package/dist/hooks.d.ts +2 -0
  122. package/dist/hooks.d.ts.map +1 -1
  123. package/dist/hooks.js +17 -0
  124. package/dist/index.d.ts +2 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +6 -0
  127. package/dist/jobs/document-jobs.d.ts +27 -0
  128. package/dist/jobs/document-jobs.d.ts.map +1 -0
  129. package/dist/jobs/document-jobs.js +42 -0
  130. package/dist/jobs/embedded-runner.d.ts +25 -0
  131. package/dist/jobs/embedded-runner.d.ts.map +1 -0
  132. package/dist/jobs/embedded-runner.js +46 -0
  133. package/dist/jobs/index.d.ts +7 -0
  134. package/dist/jobs/index.d.ts.map +1 -0
  135. package/dist/jobs/index.js +8 -0
  136. package/dist/jobs/relay.d.ts +27 -0
  137. package/dist/jobs/relay.d.ts.map +1 -0
  138. package/dist/jobs/relay.js +60 -0
  139. package/dist/jobs/run-batch.d.ts +52 -0
  140. package/dist/jobs/run-batch.d.ts.map +1 -0
  141. package/dist/jobs/run-batch.js +61 -0
  142. package/dist/jobs/run-due-jobs.d.ts +30 -0
  143. package/dist/jobs/run-due-jobs.d.ts.map +1 -0
  144. package/dist/jobs/run-due-jobs.js +69 -0
  145. package/dist/jobs/types.d.ts +18 -0
  146. package/dist/jobs/types.d.ts.map +1 -0
  147. package/dist/jobs/types.js +1 -0
  148. package/dist/lib/agent-chat-state.svelte.d.ts +38 -0
  149. package/dist/lib/agent-chat-state.svelte.d.ts.map +1 -0
  150. package/dist/lib/agent-chat-state.svelte.js +87 -0
  151. package/dist/lib/agent-chat-state.svelte.js.map +1 -0
  152. package/dist/lib/ai/content-workspace-tools.d.ts +3 -0
  153. package/dist/lib/ai/content-workspace-tools.d.ts.map +1 -0
  154. package/dist/lib/ai/content-workspace-tools.js +51 -0
  155. package/dist/lib/ai/content-workspace-tools.js.map +1 -0
  156. package/dist/lib/ai/default-system-prompt.d.ts +2 -0
  157. package/dist/lib/ai/default-system-prompt.d.ts.map +1 -0
  158. package/dist/lib/ai/default-system-prompt.js +16 -0
  159. package/dist/lib/ai/default-system-prompt.js.map +1 -0
  160. package/dist/lib/ai/index.d.ts +2 -0
  161. package/dist/lib/ai/index.d.ts.map +1 -0
  162. package/dist/lib/ai/index.js +5 -0
  163. package/dist/lib/ai/index.js.map +1 -0
  164. package/dist/lib/ai/interfaces/ai-provider.d.ts +67 -0
  165. package/dist/lib/ai/interfaces/ai-provider.d.ts.map +1 -0
  166. package/dist/lib/ai/interfaces/ai-provider.js +17 -0
  167. package/dist/lib/ai/interfaces/ai-provider.js.map +1 -0
  168. package/dist/lib/ai/run-agent-turn.d.ts +29 -0
  169. package/dist/lib/ai/run-agent-turn.d.ts.map +1 -0
  170. package/dist/lib/ai/run-agent-turn.js +167 -0
  171. package/dist/lib/ai/run-agent-turn.js.map +1 -0
  172. package/dist/lib/api/agent-chat.d.ts +27 -0
  173. package/dist/lib/api/agent-chat.d.ts.map +1 -0
  174. package/dist/lib/api/agent-chat.js +65 -0
  175. package/dist/lib/api/agent-chat.js.map +1 -0
  176. package/dist/lib/api/documents.d.ts +36 -3
  177. package/dist/lib/api/documents.d.ts.map +1 -1
  178. package/dist/lib/api/documents.js +24 -6
  179. package/dist/lib/api/documents.js.map +1 -1
  180. package/dist/lib/api/schemas/agent-chat.d.ts +45 -0
  181. package/dist/lib/api/schemas/agent-chat.d.ts.map +1 -0
  182. package/dist/lib/api/schemas/agent-chat.js +36 -0
  183. package/dist/lib/api/schemas/agent-chat.js.map +1 -0
  184. package/dist/lib/api/schemas/agent-operations.d.ts +13 -0
  185. package/dist/lib/api/schemas/agent-operations.d.ts.map +1 -0
  186. package/dist/lib/api/schemas/agent-operations.js +16 -0
  187. package/dist/lib/api/schemas/agent-operations.js.map +1 -0
  188. package/dist/lib/api/schemas/documents.d.ts +41 -0
  189. package/dist/lib/api/schemas/documents.d.ts.map +1 -1
  190. package/dist/lib/api/schemas/documents.js +38 -2
  191. package/dist/lib/api/schemas/documents.js.map +1 -1
  192. package/dist/lib/chunk-recovery.d.ts +33 -0
  193. package/dist/lib/chunk-recovery.d.ts.map +1 -0
  194. package/dist/lib/chunk-recovery.js +132 -0
  195. package/dist/lib/chunk-recovery.js.map +1 -0
  196. package/dist/lib/client/index.d.ts +1 -0
  197. package/dist/lib/client/index.d.ts.map +1 -1
  198. package/dist/lib/client/index.js +1 -0
  199. package/dist/lib/client/index.js.map +1 -1
  200. package/dist/lib/client/ui.d.ts +2 -0
  201. package/dist/lib/client/ui.d.ts.map +1 -1
  202. package/dist/lib/client/ui.js +3 -0
  203. package/dist/lib/client/ui.js.map +1 -1
  204. package/dist/lib/components/index.d.ts +1 -0
  205. package/dist/lib/components/index.d.ts.map +1 -1
  206. package/dist/lib/components/index.js +1 -0
  207. package/dist/lib/components/index.js.map +1 -1
  208. package/dist/lib/db/interfaces/agent-change-sets.d.ts +17 -0
  209. package/dist/lib/db/interfaces/agent-change-sets.d.ts.map +1 -0
  210. package/dist/lib/db/interfaces/agent-change-sets.js +2 -0
  211. package/dist/lib/db/interfaces/agent-change-sets.js.map +1 -0
  212. package/dist/lib/db/interfaces/document.d.ts +25 -3
  213. package/dist/lib/db/interfaces/document.d.ts.map +1 -1
  214. package/dist/lib/db/interfaces/document.js +19 -1
  215. package/dist/lib/db/interfaces/document.js.map +1 -1
  216. package/dist/lib/db/interfaces/events.d.ts +55 -0
  217. package/dist/lib/db/interfaces/events.d.ts.map +1 -0
  218. package/dist/lib/db/interfaces/events.js +2 -0
  219. package/dist/lib/db/interfaces/events.js.map +1 -0
  220. package/dist/lib/db/interfaces/index.d.ts +13 -2
  221. package/dist/lib/db/interfaces/index.d.ts.map +1 -1
  222. package/dist/lib/db/interfaces/index.js +1 -1
  223. package/dist/lib/db/interfaces/index.js.map +1 -1
  224. package/dist/lib/db/interfaces/plugin-storage.d.ts +39 -0
  225. package/dist/lib/db/interfaces/plugin-storage.d.ts.map +1 -0
  226. package/dist/lib/db/interfaces/plugin-storage.js +2 -0
  227. package/dist/lib/db/interfaces/plugin-storage.js.map +1 -0
  228. package/dist/lib/document-refresh.svelte.d.ts +2 -0
  229. package/dist/lib/document-refresh.svelte.d.ts.map +1 -1
  230. package/dist/lib/document-refresh.svelte.js +15 -0
  231. package/dist/lib/document-refresh.svelte.js.map +1 -1
  232. package/dist/lib/document-workspace-registry.svelte.d.ts +15 -0
  233. package/dist/lib/document-workspace-registry.svelte.d.ts.map +1 -0
  234. package/dist/lib/document-workspace-registry.svelte.js +31 -0
  235. package/dist/lib/document-workspace-registry.svelte.js.map +1 -0
  236. package/dist/lib/events/catalog.d.ts +8 -0
  237. package/dist/lib/events/catalog.d.ts.map +1 -0
  238. package/dist/lib/events/catalog.js +12 -0
  239. package/dist/lib/events/catalog.js.map +1 -0
  240. package/dist/lib/events/consumer.d.ts +79 -0
  241. package/dist/lib/events/consumer.d.ts.map +1 -0
  242. package/dist/lib/events/consumer.js +77 -0
  243. package/dist/lib/events/consumer.js.map +1 -0
  244. package/dist/lib/events/define-event.d.ts +17 -0
  245. package/dist/lib/events/define-event.d.ts.map +1 -0
  246. package/dist/lib/events/define-event.js +8 -0
  247. package/dist/lib/events/define-event.js.map +1 -0
  248. package/dist/lib/events/emit.d.ts +11 -0
  249. package/dist/lib/events/emit.d.ts.map +1 -0
  250. package/dist/lib/events/emit.js +21 -0
  251. package/dist/lib/events/emit.js.map +1 -0
  252. package/dist/lib/events/index.d.ts +4 -0
  253. package/dist/lib/events/index.d.ts.map +1 -0
  254. package/dist/lib/events/index.js +4 -0
  255. package/dist/lib/events/index.js.map +1 -0
  256. package/dist/lib/field-validation/rule.d.ts.map +1 -1
  257. package/dist/lib/field-validation/rule.js +15 -0
  258. package/dist/lib/field-validation/rule.js.map +1 -1
  259. package/dist/lib/field-validation/utils.d.ts.map +1 -1
  260. package/dist/lib/field-validation/utils.js +211 -29
  261. package/dist/lib/field-validation/utils.js.map +1 -1
  262. package/dist/lib/forms/define-form.d.ts +25 -0
  263. package/dist/lib/forms/define-form.d.ts.map +1 -0
  264. package/dist/lib/forms/define-form.js +23 -0
  265. package/dist/lib/forms/define-form.js.map +1 -0
  266. package/dist/lib/forms/index.d.ts +4 -0
  267. package/dist/lib/forms/index.d.ts.map +1 -0
  268. package/dist/lib/forms/index.js +6 -0
  269. package/dist/lib/forms/index.js.map +1 -0
  270. package/dist/lib/forms/types.d.ts +49 -0
  271. package/dist/lib/forms/types.d.ts.map +1 -0
  272. package/dist/lib/forms/types.js +2 -0
  273. package/dist/lib/forms/types.js.map +1 -0
  274. package/dist/lib/forms/validate.d.ts +9 -0
  275. package/dist/lib/forms/validate.d.ts.map +1 -0
  276. package/dist/lib/forms/validate.js +19 -0
  277. package/dist/lib/forms/validate.js.map +1 -0
  278. package/dist/lib/hooks.d.ts +2 -0
  279. package/dist/lib/hooks.d.ts.map +1 -1
  280. package/dist/lib/hooks.js +17 -0
  281. package/dist/lib/hooks.js.map +1 -1
  282. package/dist/lib/index.d.ts +2 -0
  283. package/dist/lib/index.d.ts.map +1 -1
  284. package/dist/lib/index.js +6 -0
  285. package/dist/lib/index.js.map +1 -1
  286. package/dist/lib/jobs/document-jobs.d.ts +27 -0
  287. package/dist/lib/jobs/document-jobs.d.ts.map +1 -0
  288. package/dist/lib/jobs/document-jobs.js +43 -0
  289. package/dist/lib/jobs/document-jobs.js.map +1 -0
  290. package/dist/lib/jobs/embedded-runner.d.ts +25 -0
  291. package/dist/lib/jobs/embedded-runner.d.ts.map +1 -0
  292. package/dist/lib/jobs/embedded-runner.js +47 -0
  293. package/dist/lib/jobs/embedded-runner.js.map +1 -0
  294. package/dist/lib/jobs/index.d.ts +7 -0
  295. package/dist/lib/jobs/index.d.ts.map +1 -0
  296. package/dist/lib/jobs/index.js +9 -0
  297. package/dist/lib/jobs/index.js.map +1 -0
  298. package/dist/lib/jobs/relay.d.ts +27 -0
  299. package/dist/lib/jobs/relay.d.ts.map +1 -0
  300. package/dist/lib/jobs/relay.js +61 -0
  301. package/dist/lib/jobs/relay.js.map +1 -0
  302. package/dist/lib/jobs/run-batch.d.ts +52 -0
  303. package/dist/lib/jobs/run-batch.d.ts.map +1 -0
  304. package/dist/lib/jobs/run-batch.js +62 -0
  305. package/dist/lib/jobs/run-batch.js.map +1 -0
  306. package/dist/lib/jobs/run-due-jobs.d.ts +30 -0
  307. package/dist/lib/jobs/run-due-jobs.d.ts.map +1 -0
  308. package/dist/lib/jobs/run-due-jobs.js +70 -0
  309. package/dist/lib/jobs/run-due-jobs.js.map +1 -0
  310. package/dist/lib/jobs/types.d.ts +18 -0
  311. package/dist/lib/jobs/types.d.ts.map +1 -0
  312. package/dist/lib/jobs/types.js +2 -0
  313. package/dist/lib/jobs/types.js.map +1 -0
  314. package/dist/lib/local-api/collection-api.d.ts +49 -2
  315. package/dist/lib/local-api/collection-api.d.ts.map +1 -1
  316. package/dist/lib/local-api/collection-api.js +193 -27
  317. package/dist/lib/local-api/collection-api.js.map +1 -1
  318. package/dist/lib/mcp/tools.d.ts +39 -4
  319. package/dist/lib/mcp/tools.d.ts.map +1 -1
  320. package/dist/lib/mcp/tools.js +546 -362
  321. package/dist/lib/mcp/tools.js.map +1 -1
  322. package/dist/lib/plugins/resolver.d.ts +19 -1
  323. package/dist/lib/plugins/resolver.d.ts.map +1 -1
  324. package/dist/lib/plugins/resolver.js +17 -1
  325. package/dist/lib/plugins/resolver.js.map +1 -1
  326. package/dist/lib/plugins/types.d.ts +68 -2
  327. package/dist/lib/plugins/types.d.ts.map +1 -1
  328. package/dist/lib/plugins/types.js.map +1 -1
  329. package/dist/lib/preview/stega.d.ts +2 -2
  330. package/dist/lib/preview/stega.d.ts.map +1 -1
  331. package/dist/lib/preview/stega.js +52 -29
  332. package/dist/lib/preview/stega.js.map +1 -1
  333. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  334. package/dist/lib/schema-utils/validator.js +5 -2
  335. package/dist/lib/schema-utils/validator.js.map +1 -1
  336. package/dist/lib/server/api/index.d.ts.map +1 -1
  337. package/dist/lib/server/api/index.js +16 -0
  338. package/dist/lib/server/api/index.js.map +1 -1
  339. package/dist/lib/server/api/routes/agent-change-sets.d.ts +4 -0
  340. package/dist/lib/server/api/routes/agent-change-sets.d.ts.map +1 -0
  341. package/dist/lib/server/api/routes/agent-change-sets.js +132 -0
  342. package/dist/lib/server/api/routes/agent-change-sets.js.map +1 -0
  343. package/dist/lib/server/api/routes/agent-chat.d.ts +14 -0
  344. package/dist/lib/server/api/routes/agent-chat.d.ts.map +1 -0
  345. package/dist/lib/server/api/routes/agent-chat.js +224 -0
  346. package/dist/lib/server/api/routes/agent-chat.js.map +1 -0
  347. package/dist/lib/server/api/routes/document-versions.d.ts.map +1 -1
  348. package/dist/lib/server/api/routes/document-versions.js +16 -2
  349. package/dist/lib/server/api/routes/document-versions.js.map +1 -1
  350. package/dist/lib/server/api/routes/documents-by-id.d.ts.map +1 -1
  351. package/dist/lib/server/api/routes/documents-by-id.js +11 -1
  352. package/dist/lib/server/api/routes/documents-by-id.js.map +1 -1
  353. package/dist/lib/server/api/routes/documents-publish.d.ts.map +1 -1
  354. package/dist/lib/server/api/routes/documents-publish.js +145 -2
  355. package/dist/lib/server/api/routes/documents-publish.js.map +1 -1
  356. package/dist/lib/server/api/routes/jobs.d.ts +4 -0
  357. package/dist/lib/server/api/routes/jobs.d.ts.map +1 -0
  358. package/dist/lib/server/api/routes/jobs.js +95 -0
  359. package/dist/lib/server/api/routes/jobs.js.map +1 -0
  360. package/dist/lib/server/api/routes/resolve-created-by.d.ts +13 -0
  361. package/dist/lib/server/api/routes/resolve-created-by.d.ts.map +1 -0
  362. package/dist/lib/server/api/routes/resolve-created-by.js +31 -0
  363. package/dist/lib/server/api/routes/resolve-created-by.js.map +1 -0
  364. package/dist/lib/server/api/routes/workers-run.d.ts +4 -0
  365. package/dist/lib/server/api/routes/workers-run.d.ts.map +1 -0
  366. package/dist/lib/server/api/routes/workers-run.js +41 -0
  367. package/dist/lib/server/api/routes/workers-run.js.map +1 -0
  368. package/dist/lib/server/index.d.ts +2 -0
  369. package/dist/lib/server/index.d.ts.map +1 -1
  370. package/dist/lib/server/index.js +3 -0
  371. package/dist/lib/server/index.js.map +1 -1
  372. package/dist/lib/services/version-service.d.ts +19 -3
  373. package/dist/lib/services/version-service.d.ts.map +1 -1
  374. package/dist/lib/services/version-service.js +75 -69
  375. package/dist/lib/services/version-service.js.map +1 -1
  376. package/dist/lib/type-gen.d.ts.map +1 -1
  377. package/dist/lib/type-gen.js +11 -0
  378. package/dist/lib/type-gen.js.map +1 -1
  379. package/dist/lib/types/agent-change-sets.d.ts +70 -0
  380. package/dist/lib/types/agent-change-sets.d.ts.map +1 -0
  381. package/dist/lib/types/agent-change-sets.js +7 -0
  382. package/dist/lib/types/agent-change-sets.js.map +1 -0
  383. package/dist/lib/types/agent-stream.d.ts +60 -0
  384. package/dist/lib/types/agent-stream.d.ts.map +1 -0
  385. package/dist/lib/types/agent-stream.js +12 -0
  386. package/dist/lib/types/agent-stream.js.map +1 -0
  387. package/dist/lib/types/agent-tools.d.ts +65 -0
  388. package/dist/lib/types/agent-tools.d.ts.map +1 -0
  389. package/dist/lib/types/agent-tools.js +2 -0
  390. package/dist/lib/types/agent-tools.js.map +1 -0
  391. package/dist/lib/types/config.d.ts +62 -0
  392. package/dist/lib/types/config.d.ts.map +1 -1
  393. package/dist/lib/types/document-workspace.d.ts +53 -0
  394. package/dist/lib/types/document-workspace.d.ts.map +1 -0
  395. package/dist/lib/types/document-workspace.js +15 -0
  396. package/dist/lib/types/document-workspace.js.map +1 -0
  397. package/dist/lib/types/document.d.ts +5 -0
  398. package/dist/lib/types/document.d.ts.map +1 -1
  399. package/dist/lib/types/events.d.ts +134 -0
  400. package/dist/lib/types/events.d.ts.map +1 -0
  401. package/dist/lib/types/events.js +4 -0
  402. package/dist/lib/types/events.js.map +1 -0
  403. package/dist/lib/types/index.d.ts +3 -0
  404. package/dist/lib/types/index.d.ts.map +1 -1
  405. package/dist/lib/types/index.js +3 -0
  406. package/dist/lib/types/index.js.map +1 -1
  407. package/dist/lib/types/schemas.js +1 -1
  408. package/dist/lib/types/schemas.js.map +1 -1
  409. package/dist/lib/utils/fetch-remote-file.d.ts +11 -0
  410. package/dist/lib/utils/fetch-remote-file.d.ts.map +1 -0
  411. package/dist/lib/utils/fetch-remote-file.js +169 -0
  412. package/dist/lib/utils/fetch-remote-file.js.map +1 -0
  413. package/dist/lib/utils/index.d.ts +1 -1
  414. package/dist/lib/utils/index.d.ts.map +1 -1
  415. package/dist/lib/utils/index.js.map +1 -1
  416. package/dist/local-api/collection-api.d.ts +49 -2
  417. package/dist/local-api/collection-api.d.ts.map +1 -1
  418. package/dist/local-api/collection-api.js +193 -27
  419. package/dist/mcp/tools.d.ts +39 -4
  420. package/dist/mcp/tools.d.ts.map +1 -1
  421. package/dist/mcp/tools.js +546 -362
  422. package/dist/plugins/resolver.d.ts +19 -1
  423. package/dist/plugins/resolver.d.ts.map +1 -1
  424. package/dist/plugins/resolver.js +17 -1
  425. package/dist/plugins/types.d.ts +68 -2
  426. package/dist/plugins/types.d.ts.map +1 -1
  427. package/dist/preview/stega.d.ts +2 -2
  428. package/dist/preview/stega.d.ts.map +1 -1
  429. package/dist/preview/stega.js +52 -29
  430. package/dist/schema-utils/validator.d.ts.map +1 -1
  431. package/dist/schema-utils/validator.js +5 -2
  432. package/dist/server/api/index.d.ts.map +1 -1
  433. package/dist/server/api/index.js +16 -0
  434. package/dist/server/api/routes/agent-change-sets.d.ts +4 -0
  435. package/dist/server/api/routes/agent-change-sets.d.ts.map +1 -0
  436. package/dist/server/api/routes/agent-change-sets.js +131 -0
  437. package/dist/server/api/routes/agent-chat.d.ts +14 -0
  438. package/dist/server/api/routes/agent-chat.d.ts.map +1 -0
  439. package/dist/server/api/routes/agent-chat.js +223 -0
  440. package/dist/server/api/routes/document-versions.d.ts.map +1 -1
  441. package/dist/server/api/routes/document-versions.js +16 -2
  442. package/dist/server/api/routes/documents-by-id.d.ts.map +1 -1
  443. package/dist/server/api/routes/documents-by-id.js +11 -1
  444. package/dist/server/api/routes/documents-publish.d.ts.map +1 -1
  445. package/dist/server/api/routes/documents-publish.js +145 -2
  446. package/dist/server/api/routes/jobs.d.ts +4 -0
  447. package/dist/server/api/routes/jobs.d.ts.map +1 -0
  448. package/dist/server/api/routes/jobs.js +94 -0
  449. package/dist/server/api/routes/resolve-created-by.d.ts +13 -0
  450. package/dist/server/api/routes/resolve-created-by.d.ts.map +1 -0
  451. package/dist/server/api/routes/resolve-created-by.js +30 -0
  452. package/dist/server/api/routes/workers-run.d.ts +4 -0
  453. package/dist/server/api/routes/workers-run.d.ts.map +1 -0
  454. package/dist/server/api/routes/workers-run.js +40 -0
  455. package/dist/server/index.d.ts +2 -0
  456. package/dist/server/index.d.ts.map +1 -1
  457. package/dist/server/index.js +3 -0
  458. package/dist/services/version-service.d.ts +19 -3
  459. package/dist/services/version-service.d.ts.map +1 -1
  460. package/dist/services/version-service.js +75 -69
  461. package/dist/type-gen.d.ts.map +1 -1
  462. package/dist/type-gen.js +11 -0
  463. package/dist/types/agent-change-sets.d.ts +70 -0
  464. package/dist/types/agent-change-sets.d.ts.map +1 -0
  465. package/dist/types/agent-change-sets.js +6 -0
  466. package/dist/types/agent-stream.d.ts +60 -0
  467. package/dist/types/agent-stream.d.ts.map +1 -0
  468. package/dist/types/agent-stream.js +11 -0
  469. package/dist/types/agent-tools.d.ts +65 -0
  470. package/dist/types/agent-tools.d.ts.map +1 -0
  471. package/dist/types/agent-tools.js +1 -0
  472. package/dist/types/config.d.ts +62 -0
  473. package/dist/types/config.d.ts.map +1 -1
  474. package/dist/types/document-workspace.d.ts +53 -0
  475. package/dist/types/document-workspace.d.ts.map +1 -0
  476. package/dist/types/document-workspace.js +14 -0
  477. package/dist/types/document.d.ts +5 -0
  478. package/dist/types/document.d.ts.map +1 -1
  479. package/dist/types/events.d.ts +134 -0
  480. package/dist/types/events.d.ts.map +1 -0
  481. package/dist/types/events.js +3 -0
  482. package/dist/types/index.d.ts +3 -0
  483. package/dist/types/index.d.ts.map +1 -1
  484. package/dist/types/index.js +3 -0
  485. package/dist/types/schemas.js +1 -1
  486. package/dist/utils/fetch-remote-file.d.ts +11 -0
  487. package/dist/utils/fetch-remote-file.d.ts.map +1 -0
  488. package/dist/utils/fetch-remote-file.js +168 -0
  489. package/dist/utils/index.d.ts +1 -1
  490. package/dist/utils/index.d.ts.map +1 -1
  491. package/package.json +5 -1
@@ -0,0 +1,25 @@
1
+ import type { Field } from '../types/schemas.js';
2
+ import type { FormDefinition } from './types.js';
3
+ /**
4
+ * Define a form whose submission type is inferred from its own fields.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * export const contactForm = defineForm({
9
+ * id: 'contact',
10
+ * title: 'Contact us',
11
+ * fields: [
12
+ * { name: 'name', type: 'string', title: 'Name', validation: (R) => R.required() },
13
+ * { name: 'email', type: 'string', title: 'Email', validation: (R) => R.required().email() },
14
+ * { name: 'message', type: 'text', title: 'Message', validation: (R) => R.required() }
15
+ * ]
16
+ * });
17
+ *
18
+ * type ContactSubmission = InferForm<typeof contactForm>;
19
+ * // { name?: string; email?: string; message?: string }
20
+ * ```
21
+ */
22
+ export declare function defineForm<const F extends readonly Field[]>(form: Omit<FormDefinition, 'fields'> & {
23
+ fields: F;
24
+ }): FormDefinition<F>;
25
+ //# sourceMappingURL=define-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-form.d.ts","sourceRoot":"","sources":["../../../src/lib/forms/define-form.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,KAAK,EAAE,EAC1D,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,GAClD,cAAc,CAAC,CAAC,CAAC,CAEnB"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Define a form whose submission type is inferred from its own fields.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * export const contactForm = defineForm({
7
+ * id: 'contact',
8
+ * title: 'Contact us',
9
+ * fields: [
10
+ * { name: 'name', type: 'string', title: 'Name', validation: (R) => R.required() },
11
+ * { name: 'email', type: 'string', title: 'Email', validation: (R) => R.required().email() },
12
+ * { name: 'message', type: 'text', title: 'Message', validation: (R) => R.required() }
13
+ * ]
14
+ * });
15
+ *
16
+ * type ContactSubmission = InferForm<typeof contactForm>;
17
+ * // { name?: string; email?: string; message?: string }
18
+ * ```
19
+ */
20
+ export function defineForm(form) {
21
+ return form;
22
+ }
23
+ //# sourceMappingURL=define-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-form.js","sourceRoot":"","sources":["../../../src/lib/forms/define-form.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CACzB,IAAoD;IAEpD,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './define-form.js';
3
+ export * from './validate.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/forms/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Forms primitives — developer-owned form definitions with compile-time inference and
2
+ // runtime validation reuse. Plain TS (no Svelte), safe in the root barrel.
3
+ export * from './types.js';
4
+ export * from './define-form.js';
5
+ export * from './validate.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/forms/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,2EAA2E;AAC3E,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,49 @@
1
+ import type { Field, InferFields } from '../types/schemas.js';
2
+ /**
3
+ * A developer-authored form. `id` is the stable public key (submission endpoint + event
4
+ * payload); `fields` is an ordinary CMS field array, so a text field, an email (a `string`
5
+ * with an email `Rule`), a number, a boolean, etc. all just work.
6
+ *
7
+ * The type parameter preserves the exact field literals when built via `defineForm`, which is
8
+ * what lets `InferForm<typeof form>` recover the submission shape with no generated types.
9
+ */
10
+ export interface FormDefinition<F extends readonly Field[] = readonly Field[]> {
11
+ /** Stable public id — the submission key and the `form.submitted` payload's `formId`. */
12
+ id: string;
13
+ title: string;
14
+ /** The form's fields, reusing the CMS field DSL. */
15
+ fields: F;
16
+ /** Optional message a client can show after a successful submit. */
17
+ successMessage?: string;
18
+ /**
19
+ * Optional input transform, run on the raw submission BEFORE validation — the one thing
20
+ * validation can't do (it judges, never mutates): `trim()` strings, lowercase an email, coerce
21
+ * shapes. Return the transformed data. This is the forms-native equivalent of a schema's
22
+ * `beforeValidate` hook — a form isn't a document, so it owns its own input shaping here rather
23
+ * than borrowing the document-hook machinery. Rejection (required, format) still belongs in a
24
+ * field's `validation` Rule; side effects (notify) belong in a `form.submitted` consumer.
25
+ */
26
+ transform?: (data: Record<string, unknown>) => Record<string, unknown>;
27
+ /**
28
+ * Where a "new submission" notification is sent. One address or several. Kept next to the form
29
+ * definition so the routing decision lives with the form, not in a global env var — different
30
+ * forms notify different inboxes. Omit to store-only (no notification); a notification consumer
31
+ * skips forms without it. The email itself is sent out of band by a `form.submitted` consumer,
32
+ * never in the submit path.
33
+ */
34
+ notifyEmail?: string | string[];
35
+ /**
36
+ * Persist submissions to `cms_plugin_storage` (under `plugin:'forms', collection:id`). Default
37
+ * `true`. Set `false` for a
38
+ * "just email me" form — the `form.submitted` event still fires (so notification consumers
39
+ * run), but nothing is stored. Matches the real split where some forms only notify.
40
+ */
41
+ store?: boolean;
42
+ }
43
+ /**
44
+ * The typed shape of a form's submission data, inferred from its fields. Values are
45
+ * `T | undefined` (a submission may omit optional fields); required-ness is enforced at
46
+ * runtime by validation, exactly as in the rest of the CMS.
47
+ */
48
+ export type InferForm<D> = D extends FormDefinition<infer F> ? InferFields<F> : never;
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/forms/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,KAAK,EAAE,GAAG,SAAS,KAAK,EAAE;IAC5E,yFAAyF;IACzF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,CAAC,CAAC;IACV,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/forms/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { FormDefinition } from './types.js';
2
+ import { type DocumentValidationResult } from '../field-validation/utils.js';
3
+ /**
4
+ * Validate raw submission data against a form's fields. Returns the standard
5
+ * `DocumentValidationResult` (`isValid`, field-keyed `errors`, `normalizedData`) — the core
6
+ * submit path rejects on `!isValid` and stores/emits from `normalizedData`.
7
+ */
8
+ export declare function validateFormData(form: FormDefinition, data: Record<string, unknown>): Promise<DocumentValidationResult>;
9
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/lib/forms/validate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAYhG;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
@@ -0,0 +1,19 @@
1
+ import { validateDocumentData } from '../field-validation/utils.js';
2
+ /** Adapt a form to a schema-like object so the field validator can run against it. */
3
+ function formToSchema(form) {
4
+ return {
5
+ type: 'object',
6
+ name: form.id,
7
+ title: form.title,
8
+ fields: [...form.fields]
9
+ };
10
+ }
11
+ /**
12
+ * Validate raw submission data against a form's fields. Returns the standard
13
+ * `DocumentValidationResult` (`isValid`, field-keyed `errors`, `normalizedData`) — the core
14
+ * submit path rejects on `!isValid` and stores/emits from `normalizedData`.
15
+ */
16
+ export function validateFormData(form, data) {
17
+ return validateDocumentData(formToSchema(form), data);
18
+ }
19
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/forms/validate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAiC,MAAM,2BAA2B,CAAC;AAEhG,sFAAsF;AACtF,SAAS,YAAY,CAAC,IAAoB;IACzC,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,CAAC,EAAE;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;KACxB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,IAAoB,EACpB,IAA6B;IAE7B,OAAO,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -5,6 +5,7 @@ import type { DatabaseAdapter } from './db/index.js';
5
5
  import type { AssetService } from './services/asset-service.js';
6
6
  import type { StorageAdapter } from './storage/interfaces/storage.js';
7
7
  import type { EmailAdapter } from './email/index.js';
8
+ import type { AIProviderAdapter } from './ai/index.js';
8
9
  import type { AuthProvider } from './auth/provider.js';
9
10
  import type { GraphQLSettings } from './graphql/index.js';
10
11
  import type { Logger } from './utils/logger.js';
@@ -20,6 +21,7 @@ export interface CMSInstances {
20
21
  storageAdapter: StorageAdapter;
21
22
  databaseAdapter: DatabaseAdapter;
22
23
  emailAdapter?: EmailAdapter | null;
24
+ aiProvider?: AIProviderAdapter | null;
23
25
  cmsEngine: CMSEngine;
24
26
  localAPI: LocalAPI;
25
27
  rolesService: RolesService;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAa,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAIN,KAAK,QAAQ,EACb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,uEAAuE;IACvE,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,sFAAsF;IACtF,YAAY,EAAE,YAAY,CAAC;CAC3B;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAGrE;AAgBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAmMvD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAa,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAIN,KAAK,QAAQ,EACb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,uEAAuE;IACvE,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,sFAAsF;IACtF,YAAY,EAAE,YAAY,CAAC;CAC3B;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAGrE;AAgBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAiNvD"}
package/dist/lib/hooks.js CHANGED
@@ -9,6 +9,7 @@ import { PluginSettingsService } from './services/plugin-settings-service.js';
9
9
  import { createCMS } from './engine.js';
10
10
  import { createLocalAPI } from './local-api/index.js';
11
11
  import { createPartResolver } from './plugins/resolver.js';
12
+ import { startEmbeddedJobRunner } from './jobs/embedded-runner.js';
12
13
  import { createAphexApi, mountAphexBuiltins, toHonoHandler } from './server/api/index.js';
13
14
  /**
14
15
  * Wrap a plugin route handler so it enforces `requiredCapabilities` before running.
@@ -35,6 +36,9 @@ let schemaError = null;
35
36
  let initPromise = null;
36
37
  let activeConfig = null;
37
38
  let configDirty = false;
39
+ // Started once per process (not per request, and not restarted on schema-HMR re-init): the loop
40
+ // resolves the live `cmsInstances` at each tick, so a rebuilt instance is picked up automatically.
41
+ let embeddedRunner = null;
38
42
  /**
39
43
  * Called by the Vite HMR plugin (`@aphexcms/cms-core/vite`) when schema
40
44
  * files or `aphex.config.ts` change. Replaces the captured config with the
@@ -105,6 +109,7 @@ export function createCMSHook(config) {
105
109
  // Use the storage adapter from config, or create the default local one.
106
110
  const storageAdapter = currentConfig.storage ?? createDefaultStorageAdapter();
107
111
  const emailAdapter = currentConfig.email ?? null;
112
+ const aiProvider = currentConfig.aiProvider ?? null;
108
113
  const assetService = new AssetServiceClass(storageAdapter, databaseAdapter);
109
114
  const cmsEngine = createCMS(currentConfig, databaseAdapter);
110
115
  const rolesService = new RolesService(databaseAdapter, currentConfig.cache ?? null);
@@ -190,6 +195,7 @@ export function createCMSHook(config) {
190
195
  assetService: assetService,
191
196
  storageAdapter: storageAdapter,
192
197
  emailAdapter: emailAdapter,
198
+ aiProvider: aiProvider,
193
199
  cmsEngine: cmsEngine,
194
200
  localAPI: localAPI,
195
201
  rolesService,
@@ -200,6 +206,17 @@ export function createCMSHook(config) {
200
206
  apiApp,
201
207
  partResolver
202
208
  };
209
+ // Start the embedded in-process job loop once, if opted in. It drives the queue
210
+ // directly (no HTTP, no worker secret) so scheduled publishes and event consumers
211
+ // run with zero setup — ideal for dev and single-instance self-hosting. It reads
212
+ // the live `cmsInstances` at each tick, so it survives schema-HMR re-init.
213
+ if (currentConfig.jobs?.embedded && !embeddedRunner) {
214
+ embeddedRunner = startEmbeddedJobRunner({
215
+ intervalMs: currentConfig.jobs.embeddedIntervalMs,
216
+ logger: cmsLogger,
217
+ getServices: () => cmsInstances
218
+ });
219
+ }
203
220
  resolveInit();
204
221
  }
205
222
  // Attach schema error to instances so it can be accessed in load functions
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export * from './field-validation/rule.js';
4
4
  export * from './field-validation/utils.js';
5
5
  export { createContentHash, hasUnpublishedChanges } from './utils/content-hash.js';
6
6
  export * from './schema-utils/index.js';
7
+ export * from './events/index.js';
8
+ export * from './forms/index.js';
7
9
  export * from './theme/index.js';
8
10
  export * from './plugins/index.js';
9
11
  export * from './utils/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAkBA,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjG,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGhF,cAAc,sBAAsB,CAAC;AAGrC,cAAc,eAAe,CAAC;AAI9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAkBA,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjG,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGhF,cAAc,sBAAsB,CAAC;AAIrC,cAAc,gBAAgB,CAAC;AAI/B,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAI9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
package/dist/lib/index.js CHANGED
@@ -23,6 +23,12 @@ export * from './field-validation/utils.js';
23
23
  export { createContentHash, hasUnpublishedChanges } from './utils/content-hash.js';
24
24
  // Schema utilities
25
25
  export * from './schema-utils/index.js';
26
+ // Event catalog — defineEvent() + built-in event definitions (document.published, …).
27
+ // Plain TS (zod only), safe for the universal barrel.
28
+ export * from './events/index.js';
29
+ // Forms primitives — defineForm(), InferForm, validateFormData. Plain TS, reuses the field
30
+ // model + validation engine, safe for the universal barrel.
31
+ export * from './forms/index.js';
26
32
  // Theme design-system tokens — plain TS (Svelte-free), safe for the universal barrel.
27
33
  export * from './theme/index.js';
28
34
  // Plugin API — definePlugin(), part types, part resolver. Runtime is plain JS
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,6BAA6B;AAC7B,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,wDAAwD;AACxD,EAAE;AACF,0EAA0E;AAC1E,oCAAoC;AAEpC,gDAAgD;AAChD,cAAc,eAAe,CAAC;AAG9B,mBAAmB;AACnB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAEzC,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,mBAAmB;AACnB,cAAc,sBAAsB,CAAC;AAErC,sFAAsF;AACtF,cAAc,eAAe,CAAC;AAE9B,8EAA8E;AAC9E,+EAA+E;AAC/E,cAAc,iBAAiB,CAAC;AAEhC,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAE9B,qBAAqB;AACrB,cAAc,aAAa,CAAC;AAG5B,uEAAuE;AACvE,wEAAwE;AACxE,2EAA2E;AAC3E,6DAA6D;AAC7D,yEAAyE;AACzE,oEAAoE;AACpE,EAAE;AACF,oFAAoF;AACpF,uFAAuF;AACvF,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,6EAA6E;AAC7E,8BAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,qEAAqE;AACrE,6BAA6B;AAC7B,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,wDAAwD;AACxD,EAAE;AACF,0EAA0E;AAC1E,oCAAoC;AAEpC,gDAAgD;AAChD,cAAc,eAAe,CAAC;AAG9B,mBAAmB;AACnB,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AAEzC,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,mBAAmB;AACnB,cAAc,sBAAsB,CAAC;AAErC,sFAAsF;AACtF,sDAAsD;AACtD,cAAc,gBAAgB,CAAC;AAE/B,2FAA2F;AAC3F,4DAA4D;AAC5D,cAAc,eAAe,CAAC;AAE9B,sFAAsF;AACtF,cAAc,eAAe,CAAC;AAE9B,8EAA8E;AAC9E,+EAA+E;AAC/E,cAAc,iBAAiB,CAAC;AAEhC,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAE9B,qBAAqB;AACrB,cAAc,aAAa,CAAC;AAG5B,uEAAuE;AACvE,wEAAwE;AACxE,2EAA2E;AAC3E,6DAA6D;AAC7D,yEAAyE;AACzE,oEAAoE;AACpE,EAAE;AACF,oFAAoF;AACpF,uFAAuF;AACvF,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,6EAA6E;AAC7E,8BAA8B"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ import type { LocalAPI } from '../local-api/index.js';
3
+ import type { JobHandlerMap } from './types.js';
4
+ /** Reserved built-in job types. Scheduling uses these; the worker maps them to the handlers below. */
5
+ export declare const DOCUMENT_PUBLISH_JOB = "document.publish";
6
+ export declare const DOCUMENT_UNPUBLISH_JOB = "document.unpublish";
7
+ /** Payload for document.publish / document.unpublish jobs — identifiers only, never content. */
8
+ export declare const documentJobPayload: z.ZodObject<{
9
+ documentId: z.ZodString;
10
+ documentType: z.ZodString;
11
+ }, z.core.$strip>;
12
+ export type DocumentJobPayload = z.infer<typeof documentJobPayload>;
13
+ export interface DocumentJobDeps {
14
+ localAPI: LocalAPI;
15
+ }
16
+ /**
17
+ * Built-in handlers for scheduled publish/unpublish.
18
+ *
19
+ * Runs as the system (override access) — the permission check already happened when the
20
+ * job was scheduled. Publish routes through `CollectionAPI.publish`, so it re-runs
21
+ * validation + reference guards + cache invalidation and emits `document.published`
22
+ * inside the publish transaction, exactly like a manual publish. A handler throw is a
23
+ * job failure: the runner retries with backoff or dead-letters it (e.g. a doc whose
24
+ * references became unpublished before the scheduled time fails validation and retries).
25
+ */
26
+ export declare function createDocumentJobHandlers(deps: DocumentJobDeps): JobHandlerMap;
27
+ //# sourceMappingURL=document-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-jobs.d.ts","sourceRoot":"","sources":["../../../src/lib/jobs/document-jobs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,sGAAsG;AACtG,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAE3D,gGAAgG;AAChG,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,QAAQ,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,eAAe,GAAG,aAAa,CAgB9E"}
@@ -0,0 +1,43 @@
1
+ // Built-in job types for the scheduled document workflow: publish / unpublish at a
2
+ // future `runAt`. The handlers are provided by core but DI'd with the request-scoped
3
+ // LocalAPI at the worker endpoint (the runner itself only knows the database adapter).
4
+ import { z } from 'zod';
5
+ import { systemContext } from '../local-api/auth-helpers.js';
6
+ /** Reserved built-in job types. Scheduling uses these; the worker maps them to the handlers below. */
7
+ export const DOCUMENT_PUBLISH_JOB = 'document.publish';
8
+ export const DOCUMENT_UNPUBLISH_JOB = 'document.unpublish';
9
+ /** Payload for document.publish / document.unpublish jobs — identifiers only, never content. */
10
+ export const documentJobPayload = z.object({
11
+ documentId: z.string(),
12
+ documentType: z.string()
13
+ });
14
+ /**
15
+ * Built-in handlers for scheduled publish/unpublish.
16
+ *
17
+ * Runs as the system (override access) — the permission check already happened when the
18
+ * job was scheduled. Publish routes through `CollectionAPI.publish`, so it re-runs
19
+ * validation + reference guards + cache invalidation and emits `document.published`
20
+ * inside the publish transaction, exactly like a manual publish. A handler throw is a
21
+ * job failure: the runner retries with backoff or dead-letters it (e.g. a doc whose
22
+ * references became unpublished before the scheduled time fails validation and retries).
23
+ */
24
+ export function createDocumentJobHandlers(deps) {
25
+ const { localAPI } = deps;
26
+ return {
27
+ [DOCUMENT_PUBLISH_JOB]: async ({ job }) => {
28
+ const { documentId, documentType } = documentJobPayload.parse(job.payload);
29
+ const collection = localAPI.getCollection(documentType);
30
+ if (!collection)
31
+ throw new Error(`Unknown collection "${documentType}" for job ${job.id}`);
32
+ await collection.publish(systemContext(job.organizationId), documentId);
33
+ },
34
+ [DOCUMENT_UNPUBLISH_JOB]: async ({ job }) => {
35
+ const { documentId, documentType } = documentJobPayload.parse(job.payload);
36
+ const collection = localAPI.getCollection(documentType);
37
+ if (!collection)
38
+ throw new Error(`Unknown collection "${documentType}" for job ${job.id}`);
39
+ await collection.unpublish(systemContext(job.organizationId), documentId);
40
+ }
41
+ };
42
+ }
43
+ //# sourceMappingURL=document-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-jobs.js","sourceRoot":"","sources":["../../../src/lib/jobs/document-jobs.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,qFAAqF;AACrF,uFAAuF;AACvF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAE3D,gGAAgG;AAChG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAOH;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAqB;IAC9D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,OAAO;QACN,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACzC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;QACzE,CAAC;QACD,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC3C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3F,MAAM,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;QAC3E,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { JobRunnerServices } from './run-batch.js';
2
+ import type { Logger } from '../utils/logger.js';
3
+ /** Handle for a running embedded loop. Call `stop()` to clear the interval. */
4
+ export interface EmbeddedJobRunner {
5
+ stop(): void;
6
+ }
7
+ export interface EmbeddedJobRunnerOptions {
8
+ /** Milliseconds between ticks. Default 3000. */
9
+ intervalMs?: number;
10
+ logger: Logger;
11
+ /**
12
+ * Resolve the live services at tick time (rather than capturing them once), so a schema-HMR
13
+ * re-init that rebuilds the CMS instances is picked up automatically. Return `null` to skip a
14
+ * tick (e.g. the app hasn't finished initializing yet).
15
+ */
16
+ getServices: () => JobRunnerServices | null;
17
+ }
18
+ /**
19
+ * Start the loop. Ticks NEVER overlap: while a tick is in flight the next interval fire is
20
+ * skipped, so a slow batch can't stack runs on top of each other. A thrown error in a tick is
21
+ * logged and swallowed — the loop must survive a transient DB blip and keep going. The interval
22
+ * is `unref`'d where supported so it never keeps the process alive on its own.
23
+ */
24
+ export declare function startEmbeddedJobRunner(options: EmbeddedJobRunnerOptions): EmbeddedJobRunner;
25
+ //# sourceMappingURL=embedded-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-runner.d.ts","sourceRoot":"","sources":["../../../src/lib/jobs/embedded-runner.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,aAAa,CAAC;AAEzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,+EAA+E;AAC/E,MAAM,WAAW,iBAAiB;IACjC,IAAI,IAAI,IAAI,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB;IACxC,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAyC3F"}
@@ -0,0 +1,47 @@
1
+ import { runJobsBatch } from './run-batch.js';
2
+ /**
3
+ * Start the loop. Ticks NEVER overlap: while a tick is in flight the next interval fire is
4
+ * skipped, so a slow batch can't stack runs on top of each other. A thrown error in a tick is
5
+ * logged and swallowed — the loop must survive a transient DB blip and keep going. The interval
6
+ * is `unref`'d where supported so it never keeps the process alive on its own.
7
+ */
8
+ export function startEmbeddedJobRunner(options) {
9
+ const intervalMs = options.intervalMs ?? 3000;
10
+ const { logger, getServices } = options;
11
+ let running = false;
12
+ let stopped = false;
13
+ const tick = async () => {
14
+ if (running || stopped)
15
+ return; // no overlap; nothing after stop()
16
+ const services = getServices();
17
+ if (!services)
18
+ return; // not initialized yet — try again next interval
19
+ running = true;
20
+ try {
21
+ const result = await runJobsBatch(services, {
22
+ workerId: 'embedded'
23
+ });
24
+ // Only surface a tick that actually did something, so an idle dev server stays quiet.
25
+ if (result.claimed > 0 || result.relay.enqueued > 0) {
26
+ logger.debug(`[jobs:embedded] relayed=${result.relay.enqueued} claimed=${result.claimed} completed=${result.completed} failed=${result.failed} retried=${result.retried}`);
27
+ }
28
+ }
29
+ catch (error) {
30
+ logger.error('[jobs:embedded] tick failed:', error);
31
+ }
32
+ finally {
33
+ running = false;
34
+ }
35
+ };
36
+ const handle = setInterval(tick, intervalMs);
37
+ // Don't let the loop hold the process open by itself (Node/Bun); harmless where unsupported.
38
+ handle.unref?.();
39
+ logger.info(`[jobs:embedded] in-process job loop started (every ${intervalMs}ms)`);
40
+ return {
41
+ stop() {
42
+ stopped = true;
43
+ clearInterval(handle);
44
+ }
45
+ };
46
+ }
47
+ //# sourceMappingURL=embedded-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-runner.js","sourceRoot":"","sources":["../../../src/lib/jobs/embedded-runner.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoB3C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAiC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC9C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAExC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,OAAO,IAAI,OAAO;YAAE,OAAO,CAAC,mCAAmC;QACnE,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,gDAAgD;QACvE,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACJ,MAAM,MAAM,GAAuB,MAAM,YAAY,CAAC,QAAQ,EAAE;gBAC/D,QAAQ,EAAE,UAAU;aACpB,CAAC,CAAC;YACH,sFAAsF;YACtF,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,CAAC,KAAK,CACX,2BAA2B,MAAM,CAAC,KAAK,CAAC,QAAQ,YAAY,MAAM,CAAC,OAAO,cAAc,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,OAAO,EAAE,CAC5J,CAAC;YACH,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACV,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,6FAA6F;IAC5F,MAAiC,CAAC,KAAK,EAAE,EAAE,CAAC;IAE7C,MAAM,CAAC,IAAI,CAAC,sDAAsD,UAAU,KAAK,CAAC,CAAC;IAEnF,OAAO;QACN,IAAI;YACH,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './types.js';
2
+ export * from './run-due-jobs.js';
3
+ export * from './relay.js';
4
+ export * from './run-batch.js';
5
+ export * from './document-jobs.js';
6
+ export * from './embedded-runner.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/jobs/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Job execution — the durable spine's runner. Plain TS (no Svelte), safe to import
2
+ // from the server barrel. Handlers and scheduling are wired via `CMSConfig.jobs`.
3
+ export * from './types.js';
4
+ export * from './run-due-jobs.js';
5
+ export * from './relay.js';
6
+ export * from './run-batch.js';
7
+ export * from './document-jobs.js';
8
+ export * from './embedded-runner.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/jobs/index.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,kFAAkF;AAClF,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Logger } from '../utils/logger.js';
2
+ import type { DatabaseAdapter } from '../db/interfaces/index.js';
3
+ import type { PartResolver } from '../plugins/resolver.js';
4
+ /** The slice of the service container the relay needs — a structural subset of `JobRunnerServices`. */
5
+ export interface RelayServices {
6
+ databaseAdapter: DatabaseAdapter;
7
+ logger: Logger;
8
+ partResolver: PartResolver;
9
+ }
10
+ export interface RelayOutboxOptions {
11
+ /** Scope to one tenant; omit to relay across all orgs (worker context, override access). */
12
+ organizationId?: string;
13
+ /** Max outbox rows drained this pass. Default 100 (fan-out is cheap; relay generously). */
14
+ batchSize?: number;
15
+ }
16
+ export interface RelayOutboxResult {
17
+ /** Outbox rows processed this pass. */
18
+ relayed: number;
19
+ /** Delivery jobs enqueued (deduped enqueues still count as one each). */
20
+ enqueued: number;
21
+ }
22
+ /**
23
+ * Drain one bounded batch of the outbox, fanning each event out to its subscribed consumers.
24
+ * Runs one pass and returns — the caller (the same tick as `runJobsBatch`) owns cadence.
25
+ */
26
+ export declare function relayOutbox(services: RelayServices, options?: RelayOutboxOptions): Promise<RelayOutboxResult>;
27
+ //# sourceMappingURL=relay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../src/lib/jobs/relay.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,uGAAuG;AACvG,MAAM,WAAW,aAAa;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAClC,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;CACjB;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAChC,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,kBAAuB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CA6D5B"}
@@ -0,0 +1,61 @@
1
+ import { consumerJobType, toDeliveryPayload } from '../events/consumer.js';
2
+ const DEFAULT_RELAY_BATCH_SIZE = 100;
3
+ /**
4
+ * Drain one bounded batch of the outbox, fanning each event out to its subscribed consumers.
5
+ * Runs one pass and returns — the caller (the same tick as `runJobsBatch`) owns cadence.
6
+ */
7
+ export async function relayOutbox(services, options = {}) {
8
+ const { databaseAdapter, logger, partResolver } = services;
9
+ const batchSize = options.batchSize ?? DEFAULT_RELAY_BATCH_SIZE;
10
+ const rows = await databaseAdapter.listUnprocessedOutbox({
11
+ organizationId: options.organizationId,
12
+ limit: batchSize
13
+ });
14
+ const result = { relayed: 0, enqueued: 0 };
15
+ for (const row of rows) {
16
+ const consumers = partResolver.consumersForEvent(row.eventType);
17
+ // A row with no subscribers is still marked processed — the relay's contract is "every
18
+ // event is considered", not "every event produces a job". Nobody listening is a valid
19
+ // outcome, and leaving it pending would re-scan it forever.
20
+ const event = {
21
+ id: row.eventId,
22
+ type: row.eventType,
23
+ organizationId: row.organizationId,
24
+ payload: row.payload,
25
+ correlationId: row.correlationId,
26
+ causationId: row.causationId,
27
+ createdBy: row.createdBy,
28
+ createdAt: row.createdAt
29
+ };
30
+ const payload = toDeliveryPayload(event);
31
+ try {
32
+ await databaseAdapter.withTransaction(async (tx) => {
33
+ for (const consumer of consumers) {
34
+ await tx.scheduleJob({
35
+ organizationId: row.organizationId,
36
+ type: consumerJobType(consumer.id),
37
+ payload,
38
+ // Exactly-once per (event, consumer): a repeated key returns the existing job.
39
+ idempotencyKey: `evt:${row.eventId}:${consumer.id}`,
40
+ maxAttempts: consumer.maxAttempts,
41
+ correlationId: row.correlationId,
42
+ // The event is the cause of every delivery it spawns — chain it for tracing.
43
+ causationId: row.eventId,
44
+ createdBy: row.createdBy
45
+ });
46
+ }
47
+ await tx.markOutboxProcessed(row.organizationId, row.id);
48
+ });
49
+ result.relayed++;
50
+ result.enqueued += consumers.length;
51
+ }
52
+ catch (err) {
53
+ // Leave the row unprocessed; the next pass retries it. Idempotent enqueue makes a
54
+ // partial failure safe to redo. Log and continue so one bad row can't stall the batch.
55
+ const message = err instanceof Error ? err.message : String(err);
56
+ logger.error('[relay]', `Failed to relay event ${row.eventId} (${row.eventType}); will retry next pass: ${message}`);
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ //# sourceMappingURL=relay.js.map