@kelpie/server 0.5.2 → 0.7.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 (406) hide show
  1. package/README.md +5 -2
  2. package/dist/app.d.ts +13 -0
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +9 -0
  5. package/dist/app.js.map +1 -1
  6. package/dist/boot.d.ts +42 -0
  7. package/dist/boot.d.ts.map +1 -0
  8. package/dist/boot.js +57 -0
  9. package/dist/boot.js.map +1 -0
  10. package/dist/index.d.ts +20 -8
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -4
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/actor.d.ts +9 -1
  15. package/dist/lib/actor.d.ts.map +1 -1
  16. package/dist/lib/actor.js +13 -0
  17. package/dist/lib/actor.js.map +1 -1
  18. package/dist/lib/config.d.ts +51 -6
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +11 -5
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/email.d.ts +15 -63
  23. package/dist/lib/email.d.ts.map +1 -1
  24. package/dist/lib/email.js +13 -65
  25. package/dist/lib/email.js.map +1 -1
  26. package/dist/lib/fromEnv.d.ts +60 -0
  27. package/dist/lib/fromEnv.d.ts.map +1 -0
  28. package/dist/lib/fromEnv.js +94 -0
  29. package/dist/lib/fromEnv.js.map +1 -0
  30. package/dist/lib/ids.d.ts +6 -0
  31. package/dist/lib/ids.d.ts.map +1 -1
  32. package/dist/lib/ids.js +6 -0
  33. package/dist/lib/ids.js.map +1 -1
  34. package/dist/lib/kelpieConfigFile.d.ts +129 -0
  35. package/dist/lib/kelpieConfigFile.d.ts.map +1 -0
  36. package/dist/lib/kelpieConfigFile.js +112 -0
  37. package/dist/lib/kelpieConfigFile.js.map +1 -0
  38. package/dist/lib/logger.d.ts +38 -7
  39. package/dist/lib/logger.d.ts.map +1 -1
  40. package/dist/lib/logger.js +58 -20
  41. package/dist/lib/logger.js.map +1 -1
  42. package/dist/modules/agent-tasks/index.d.ts.map +1 -1
  43. package/dist/modules/agent-tasks/index.js +4 -1
  44. package/dist/modules/agent-tasks/index.js.map +1 -1
  45. package/dist/modules/agent-tasks/prompt.d.ts +36 -6
  46. package/dist/modules/agent-tasks/prompt.d.ts.map +1 -1
  47. package/dist/modules/agent-tasks/prompt.js +33 -4
  48. package/dist/modules/agent-tasks/prompt.js.map +1 -1
  49. package/dist/modules/agent-tasks/service.d.ts.map +1 -1
  50. package/dist/modules/agent-tasks/service.js +3 -2
  51. package/dist/modules/agent-tasks/service.js.map +1 -1
  52. package/dist/modules/agent-tasks/wire.d.ts +11 -0
  53. package/dist/modules/agent-tasks/wire.d.ts.map +1 -1
  54. package/dist/modules/agent-tasks/wire.js +1 -0
  55. package/dist/modules/agent-tasks/wire.js.map +1 -1
  56. package/dist/modules/auth/index.d.ts.map +1 -1
  57. package/dist/modules/auth/index.js +8 -7
  58. package/dist/modules/auth/index.js.map +1 -1
  59. package/dist/modules/companies/events.d.ts +22 -0
  60. package/dist/modules/companies/events.d.ts.map +1 -0
  61. package/dist/modules/companies/events.js +8 -0
  62. package/dist/modules/companies/events.js.map +1 -0
  63. package/dist/modules/companies/index.d.ts.map +1 -1
  64. package/dist/modules/companies/index.js +2 -0
  65. package/dist/modules/companies/index.js.map +1 -1
  66. package/dist/modules/companies/service.d.ts +1 -0
  67. package/dist/modules/companies/service.d.ts.map +1 -1
  68. package/dist/modules/companies/service.js +8 -11
  69. package/dist/modules/companies/service.js.map +1 -1
  70. package/dist/modules/core.d.ts.map +1 -1
  71. package/dist/modules/core.js +4 -0
  72. package/dist/modules/core.js.map +1 -1
  73. package/dist/modules/deals/events.d.ts +31 -0
  74. package/dist/modules/deals/events.d.ts.map +1 -0
  75. package/dist/modules/deals/events.js +12 -0
  76. package/dist/modules/deals/events.js.map +1 -0
  77. package/dist/modules/deals/index.d.ts.map +1 -1
  78. package/dist/modules/deals/index.js +2 -0
  79. package/dist/modules/deals/index.js.map +1 -1
  80. package/dist/modules/deals/service.d.ts +1 -0
  81. package/dist/modules/deals/service.d.ts.map +1 -1
  82. package/dist/modules/deals/service.js +9 -18
  83. package/dist/modules/deals/service.js.map +1 -1
  84. package/dist/modules/decisions/events.d.ts +21 -0
  85. package/dist/modules/decisions/events.d.ts.map +1 -0
  86. package/dist/modules/decisions/events.js +11 -0
  87. package/dist/modules/decisions/events.js.map +1 -0
  88. package/dist/modules/decisions/index.d.ts.map +1 -1
  89. package/dist/modules/decisions/index.js +2 -0
  90. package/dist/modules/decisions/index.js.map +1 -1
  91. package/dist/modules/decisions/service.d.ts +1 -0
  92. package/dist/modules/decisions/service.d.ts.map +1 -1
  93. package/dist/modules/decisions/service.js +4 -7
  94. package/dist/modules/decisions/service.js.map +1 -1
  95. package/dist/modules/eventCatalogs.d.ts +35 -0
  96. package/dist/modules/eventCatalogs.d.ts.map +1 -0
  97. package/dist/modules/eventCatalogs.js +35 -0
  98. package/dist/modules/eventCatalogs.js.map +1 -0
  99. package/dist/modules/forms/events.d.ts +37 -0
  100. package/dist/modules/forms/events.d.ts.map +1 -0
  101. package/dist/modules/forms/events.js +15 -0
  102. package/dist/modules/forms/events.js.map +1 -0
  103. package/dist/modules/forms/index.d.ts.map +1 -1
  104. package/dist/modules/forms/index.js +2 -0
  105. package/dist/modules/forms/index.js.map +1 -1
  106. package/dist/modules/forms/service.d.ts +1 -0
  107. package/dist/modules/forms/service.d.ts.map +1 -1
  108. package/dist/modules/forms/service.js +8 -11
  109. package/dist/modules/forms/service.js.map +1 -1
  110. package/dist/modules/forms/submission.d.ts +5 -0
  111. package/dist/modules/forms/submission.d.ts.map +1 -1
  112. package/dist/modules/forms/submission.js +54 -28
  113. package/dist/modules/forms/submission.js.map +1 -1
  114. package/dist/modules/handbook/events.d.ts +28 -0
  115. package/dist/modules/handbook/events.d.ts.map +1 -0
  116. package/dist/modules/handbook/events.js +14 -0
  117. package/dist/modules/handbook/events.js.map +1 -0
  118. package/dist/modules/handbook/index.d.ts.map +1 -1
  119. package/dist/modules/handbook/index.js +2 -0
  120. package/dist/modules/handbook/index.js.map +1 -1
  121. package/dist/modules/handbook/service.d.ts +1 -0
  122. package/dist/modules/handbook/service.d.ts.map +1 -1
  123. package/dist/modules/handbook/service.js +8 -15
  124. package/dist/modules/handbook/service.js.map +1 -1
  125. package/dist/modules/hiring/candidates.d.ts +1 -0
  126. package/dist/modules/hiring/candidates.d.ts.map +1 -1
  127. package/dist/modules/hiring/candidates.js +8 -11
  128. package/dist/modules/hiring/candidates.js.map +1 -1
  129. package/dist/modules/hiring/events.d.ts +35 -0
  130. package/dist/modules/hiring/events.d.ts.map +1 -0
  131. package/dist/modules/hiring/events.js +11 -0
  132. package/dist/modules/hiring/events.js.map +1 -0
  133. package/dist/modules/hiring/index.d.ts.map +1 -1
  134. package/dist/modules/hiring/index.js +2 -0
  135. package/dist/modules/hiring/index.js.map +1 -1
  136. package/dist/modules/hiring/roles.d.ts +1 -0
  137. package/dist/modules/hiring/roles.d.ts.map +1 -1
  138. package/dist/modules/hiring/roles.js +8 -11
  139. package/dist/modules/hiring/roles.js.map +1 -1
  140. package/dist/modules/import-export/drafts.d.ts +9 -0
  141. package/dist/modules/import-export/drafts.d.ts.map +1 -1
  142. package/dist/modules/import-export/drafts.js +25 -0
  143. package/dist/modules/import-export/drafts.js.map +1 -1
  144. package/dist/modules/import-export/events.d.ts +22 -0
  145. package/dist/modules/import-export/events.d.ts.map +1 -0
  146. package/dist/modules/import-export/events.js +12 -0
  147. package/dist/modules/import-export/events.js.map +1 -0
  148. package/dist/modules/import-export/exportRows.d.ts +9 -0
  149. package/dist/modules/import-export/exportRows.d.ts.map +1 -1
  150. package/dist/modules/import-export/exportRows.js +10 -1
  151. package/dist/modules/import-export/exportRows.js.map +1 -1
  152. package/dist/modules/import-export/index.d.ts.map +1 -1
  153. package/dist/modules/import-export/index.js +2 -0
  154. package/dist/modules/import-export/index.js.map +1 -1
  155. package/dist/modules/import-export/plan.d.ts +23 -1
  156. package/dist/modules/import-export/plan.d.ts.map +1 -1
  157. package/dist/modules/import-export/plan.js +62 -3
  158. package/dist/modules/import-export/plan.js.map +1 -1
  159. package/dist/modules/import-export/presets.d.ts.map +1 -1
  160. package/dist/modules/import-export/presets.js +25 -0
  161. package/dist/modules/import-export/presets.js.map +1 -1
  162. package/dist/modules/import-export/repository.d.ts +17 -0
  163. package/dist/modules/import-export/repository.d.ts.map +1 -1
  164. package/dist/modules/import-export/repository.js +21 -1
  165. package/dist/modules/import-export/repository.js.map +1 -1
  166. package/dist/modules/import-export/routes.d.ts.map +1 -1
  167. package/dist/modules/import-export/routes.js +5 -1
  168. package/dist/modules/import-export/routes.js.map +1 -1
  169. package/dist/modules/import-export/schema.d.ts +55 -0
  170. package/dist/modules/import-export/schema.d.ts.map +1 -1
  171. package/dist/modules/import-export/schema.js +13 -1
  172. package/dist/modules/import-export/schema.js.map +1 -1
  173. package/dist/modules/import-export/service.d.ts +9 -1
  174. package/dist/modules/import-export/service.d.ts.map +1 -1
  175. package/dist/modules/import-export/service.js +104 -17
  176. package/dist/modules/import-export/service.js.map +1 -1
  177. package/dist/modules/import-export/tools.d.ts.map +1 -1
  178. package/dist/modules/import-export/tools.js +7 -1
  179. package/dist/modules/import-export/tools.js.map +1 -1
  180. package/dist/modules/import-export/writes.d.ts +16 -0
  181. package/dist/modules/import-export/writes.d.ts.map +1 -1
  182. package/dist/modules/import-export/writes.js +77 -2
  183. package/dist/modules/import-export/writes.js.map +1 -1
  184. package/dist/modules/notes/events.d.ts +22 -0
  185. package/dist/modules/notes/events.d.ts.map +1 -0
  186. package/dist/modules/notes/events.js +12 -0
  187. package/dist/modules/notes/events.js.map +1 -0
  188. package/dist/modules/notes/index.d.ts.map +1 -1
  189. package/dist/modules/notes/index.js +2 -0
  190. package/dist/modules/notes/index.js.map +1 -1
  191. package/dist/modules/notes/service.d.ts +1 -0
  192. package/dist/modules/notes/service.d.ts.map +1 -1
  193. package/dist/modules/notes/service.js +4 -7
  194. package/dist/modules/notes/service.js.map +1 -1
  195. package/dist/modules/opportunities/events.d.ts +31 -0
  196. package/dist/modules/opportunities/events.d.ts.map +1 -0
  197. package/dist/modules/opportunities/events.js +12 -0
  198. package/dist/modules/opportunities/events.js.map +1 -0
  199. package/dist/modules/opportunities/index.d.ts.map +1 -1
  200. package/dist/modules/opportunities/index.js +2 -0
  201. package/dist/modules/opportunities/index.js.map +1 -1
  202. package/dist/modules/opportunities/service.d.ts +1 -0
  203. package/dist/modules/opportunities/service.d.ts.map +1 -1
  204. package/dist/modules/opportunities/service.js +9 -18
  205. package/dist/modules/opportunities/service.js.map +1 -1
  206. package/dist/modules/partnerships/events.d.ts +31 -0
  207. package/dist/modules/partnerships/events.d.ts.map +1 -0
  208. package/dist/modules/partnerships/events.js +12 -0
  209. package/dist/modules/partnerships/events.js.map +1 -0
  210. package/dist/modules/partnerships/index.d.ts.map +1 -1
  211. package/dist/modules/partnerships/index.js +2 -0
  212. package/dist/modules/partnerships/index.js.map +1 -1
  213. package/dist/modules/partnerships/service.d.ts +1 -0
  214. package/dist/modules/partnerships/service.d.ts.map +1 -1
  215. package/dist/modules/partnerships/service.js +9 -18
  216. package/dist/modules/partnerships/service.js.map +1 -1
  217. package/dist/modules/people/events.d.ts +28 -0
  218. package/dist/modules/people/events.d.ts.map +1 -0
  219. package/dist/modules/people/events.js +18 -0
  220. package/dist/modules/people/events.js.map +1 -0
  221. package/dist/modules/people/index.d.ts.map +1 -1
  222. package/dist/modules/people/index.js +2 -0
  223. package/dist/modules/people/index.js.map +1 -1
  224. package/dist/modules/people/service.d.ts +1 -0
  225. package/dist/modules/people/service.d.ts.map +1 -1
  226. package/dist/modules/people/service.js +8 -11
  227. package/dist/modules/people/service.js.map +1 -1
  228. package/dist/modules/pipelines/service.d.ts +4 -0
  229. package/dist/modules/pipelines/service.d.ts.map +1 -1
  230. package/dist/modules/pipelines/service.js +31 -8
  231. package/dist/modules/pipelines/service.js.map +1 -1
  232. package/dist/modules/plans/events.d.ts +21 -0
  233. package/dist/modules/plans/events.d.ts.map +1 -0
  234. package/dist/modules/plans/events.js +11 -0
  235. package/dist/modules/plans/events.js.map +1 -0
  236. package/dist/modules/plans/index.d.ts.map +1 -1
  237. package/dist/modules/plans/index.js +2 -0
  238. package/dist/modules/plans/index.js.map +1 -1
  239. package/dist/modules/plans/service.d.ts +1 -0
  240. package/dist/modules/plans/service.d.ts.map +1 -1
  241. package/dist/modules/plans/service.js +6 -14
  242. package/dist/modules/plans/service.js.map +1 -1
  243. package/dist/modules/positions/events.d.ts +22 -0
  244. package/dist/modules/positions/events.d.ts.map +1 -0
  245. package/dist/modules/positions/events.js +8 -0
  246. package/dist/modules/positions/events.js.map +1 -0
  247. package/dist/modules/positions/index.d.ts.map +1 -1
  248. package/dist/modules/positions/index.js +2 -0
  249. package/dist/modules/positions/index.js.map +1 -1
  250. package/dist/modules/positions/service.d.ts +1 -0
  251. package/dist/modules/positions/service.d.ts.map +1 -1
  252. package/dist/modules/positions/service.js +8 -11
  253. package/dist/modules/positions/service.js.map +1 -1
  254. package/dist/modules/raises/events.d.ts +31 -0
  255. package/dist/modules/raises/events.d.ts.map +1 -0
  256. package/dist/modules/raises/events.js +12 -0
  257. package/dist/modules/raises/events.js.map +1 -0
  258. package/dist/modules/raises/index.d.ts.map +1 -1
  259. package/dist/modules/raises/index.js +2 -0
  260. package/dist/modules/raises/index.js.map +1 -1
  261. package/dist/modules/raises/service.d.ts +1 -0
  262. package/dist/modules/raises/service.d.ts.map +1 -1
  263. package/dist/modules/raises/service.js +9 -18
  264. package/dist/modules/raises/service.js.map +1 -1
  265. package/dist/modules/reseal.d.ts +55 -0
  266. package/dist/modules/reseal.d.ts.map +1 -1
  267. package/dist/modules/reseal.js +90 -1
  268. package/dist/modules/reseal.js.map +1 -1
  269. package/dist/modules/smtp-email/index.d.ts +69 -0
  270. package/dist/modules/smtp-email/index.d.ts.map +1 -0
  271. package/dist/modules/smtp-email/index.js +82 -0
  272. package/dist/modules/smtp-email/index.js.map +1 -0
  273. package/dist/modules/webhooks/index.d.ts.map +1 -1
  274. package/dist/modules/webhooks/index.js +5 -1
  275. package/dist/modules/webhooks/index.js.map +1 -1
  276. package/dist/modules/webhooks/payloads.d.ts +22 -7
  277. package/dist/modules/webhooks/payloads.d.ts.map +1 -1
  278. package/dist/modules/webhooks/payloads.js +63 -44
  279. package/dist/modules/webhooks/payloads.js.map +1 -1
  280. package/dist/modules/workspace/events.d.ts +52 -0
  281. package/dist/modules/workspace/events.d.ts.map +1 -0
  282. package/dist/modules/workspace/events.js +16 -0
  283. package/dist/modules/workspace/events.js.map +1 -0
  284. package/dist/modules/workspace/index.d.ts.map +1 -1
  285. package/dist/modules/workspace/index.js +6 -2
  286. package/dist/modules/workspace/index.js.map +1 -1
  287. package/dist/modules/workspace/service.d.ts +1 -0
  288. package/dist/modules/workspace/service.d.ts.map +1 -1
  289. package/dist/modules/workspace/service.js +13 -15
  290. package/dist/modules/workspace/service.js.map +1 -1
  291. package/dist/runtime/events.d.ts +86 -108
  292. package/dist/runtime/events.d.ts.map +1 -1
  293. package/dist/runtime/events.js +123 -52
  294. package/dist/runtime/events.js.map +1 -1
  295. package/dist/runtime/module.d.ts +54 -2
  296. package/dist/runtime/module.d.ts.map +1 -1
  297. package/dist/runtime/registry.d.ts +23 -0
  298. package/dist/runtime/registry.d.ts.map +1 -1
  299. package/dist/runtime/registry.js +102 -2
  300. package/dist/runtime/registry.js.map +1 -1
  301. package/dist/runtime/transaction.d.ts +29 -4
  302. package/dist/runtime/transaction.d.ts.map +1 -1
  303. package/dist/runtime/transaction.js +48 -7
  304. package/dist/runtime/transaction.js.map +1 -1
  305. package/dist/testing/app.d.ts +5 -1
  306. package/dist/testing/app.d.ts.map +1 -1
  307. package/dist/testing/app.js +13 -3
  308. package/dist/testing/app.js.map +1 -1
  309. package/dist/testing/database.d.ts.map +1 -1
  310. package/dist/testing/database.js +6 -3
  311. package/dist/testing/database.js.map +1 -1
  312. package/dist/testing/services.d.ts +21 -1
  313. package/dist/testing/services.d.ts.map +1 -1
  314. package/dist/testing/services.js +20 -5
  315. package/dist/testing/services.js.map +1 -1
  316. package/migrations/0019_sharp_red_skull.sql +4 -0
  317. package/migrations/0020_early_nemesis.sql +2 -0
  318. package/migrations/meta/0019_snapshot.json +5138 -0
  319. package/migrations/meta/0020_snapshot.json +5138 -0
  320. package/migrations/meta/_journal.json +14 -0
  321. package/package.json +5 -2
  322. package/src/app.ts +26 -0
  323. package/src/boot.ts +89 -0
  324. package/src/index.ts +52 -9
  325. package/src/lib/actor.ts +15 -1
  326. package/src/lib/config.ts +65 -7
  327. package/src/lib/email.ts +22 -92
  328. package/src/lib/fromEnv.ts +143 -0
  329. package/src/lib/ids.ts +6 -0
  330. package/src/lib/kelpieConfigFile.ts +291 -0
  331. package/src/lib/logger.ts +92 -34
  332. package/src/modules/agent-tasks/index.ts +4 -1
  333. package/src/modules/agent-tasks/prompt.ts +57 -9
  334. package/src/modules/agent-tasks/service.ts +3 -2
  335. package/src/modules/agent-tasks/wire.ts +12 -0
  336. package/src/modules/auth/index.ts +11 -9
  337. package/src/modules/companies/events.ts +25 -0
  338. package/src/modules/companies/index.ts +2 -0
  339. package/src/modules/companies/service.ts +8 -11
  340. package/src/modules/core.ts +4 -0
  341. package/src/modules/deals/events.ts +34 -0
  342. package/src/modules/deals/index.ts +2 -0
  343. package/src/modules/deals/service.ts +17 -18
  344. package/src/modules/decisions/events.ts +24 -0
  345. package/src/modules/decisions/index.ts +2 -0
  346. package/src/modules/decisions/service.ts +8 -7
  347. package/src/modules/eventCatalogs.ts +35 -0
  348. package/src/modules/forms/events.ts +37 -0
  349. package/src/modules/forms/index.ts +2 -0
  350. package/src/modules/forms/service.ts +12 -11
  351. package/src/modules/forms/submission.ts +80 -29
  352. package/src/modules/handbook/events.ts +31 -0
  353. package/src/modules/handbook/index.ts +2 -0
  354. package/src/modules/handbook/service.ts +8 -15
  355. package/src/modules/hiring/candidates.ts +8 -11
  356. package/src/modules/hiring/events.ts +36 -0
  357. package/src/modules/hiring/index.ts +2 -0
  358. package/src/modules/hiring/roles.ts +8 -11
  359. package/src/modules/import-export/drafts.ts +27 -0
  360. package/src/modules/import-export/events.ts +25 -0
  361. package/src/modules/import-export/exportRows.ts +10 -1
  362. package/src/modules/import-export/index.ts +2 -0
  363. package/src/modules/import-export/plan.ts +107 -5
  364. package/src/modules/import-export/presets.ts +25 -0
  365. package/src/modules/import-export/repository.ts +35 -1
  366. package/src/modules/import-export/routes.ts +5 -0
  367. package/src/modules/import-export/schema.ts +13 -0
  368. package/src/modules/import-export/service.ts +153 -19
  369. package/src/modules/import-export/tools.ts +9 -0
  370. package/src/modules/import-export/writes.ts +116 -3
  371. package/src/modules/notes/events.ts +25 -0
  372. package/src/modules/notes/index.ts +2 -0
  373. package/src/modules/notes/service.ts +8 -7
  374. package/src/modules/opportunities/events.ts +34 -0
  375. package/src/modules/opportunities/index.ts +2 -0
  376. package/src/modules/opportunities/service.ts +17 -18
  377. package/src/modules/partnerships/events.ts +34 -0
  378. package/src/modules/partnerships/index.ts +2 -0
  379. package/src/modules/partnerships/service.ts +17 -18
  380. package/src/modules/people/events.ts +36 -0
  381. package/src/modules/people/index.ts +2 -0
  382. package/src/modules/people/service.ts +97 -87
  383. package/src/modules/pipelines/service.ts +47 -8
  384. package/src/modules/plans/events.ts +24 -0
  385. package/src/modules/plans/index.ts +2 -0
  386. package/src/modules/plans/service.ts +14 -14
  387. package/src/modules/positions/events.ts +25 -0
  388. package/src/modules/positions/index.ts +2 -0
  389. package/src/modules/positions/service.ts +8 -11
  390. package/src/modules/raises/events.ts +34 -0
  391. package/src/modules/raises/index.ts +2 -0
  392. package/src/modules/raises/service.ts +17 -18
  393. package/src/modules/reseal.ts +144 -1
  394. package/src/modules/smtp-email/index.ts +119 -0
  395. package/src/modules/webhooks/index.ts +5 -1
  396. package/src/modules/webhooks/payloads.ts +94 -48
  397. package/src/modules/workspace/events.ts +46 -0
  398. package/src/modules/workspace/index.ts +6 -2
  399. package/src/modules/workspace/service.ts +37 -15
  400. package/src/runtime/events.ts +268 -107
  401. package/src/runtime/module.ts +55 -2
  402. package/src/runtime/registry.ts +169 -1
  403. package/src/runtime/transaction.ts +94 -17
  404. package/src/testing/app.ts +18 -4
  405. package/src/testing/database.ts +6 -3
  406. package/src/testing/services.ts +34 -5
@@ -4,6 +4,8 @@ import { AppError } from '../../lib/errors.js';
4
4
  import { generateToken, hashToken } from '../../lib/tokens.js';
5
5
  import { limitFor } from '../../runtime/entitlements.js';
6
6
  import { moduleCapabilityName } from '../../runtime/moduleConfig.js';
7
+ import { toEventActor } from '../../lib/actor.js';
8
+ import './events.js';
7
9
  import * as authRepository from '../auth/repository.js';
8
10
  import { SEATS_LIMIT } from './capabilities.js';
9
11
  import * as repository from './repository.js';
@@ -261,10 +263,10 @@ export function createWorkspaceService(dependencies) {
261
263
  }))));
262
264
  // The session that created the workspace should land in it.
263
265
  await authRepository.setActiveWorkspace(tx, actor.sessionId, workspaceId);
264
- events.emit('workspace.created', { workspaceId, slug: workspace.slug });
265
- events.emit('member.joined', { workspaceId, memberId, userId: actor.userId });
266
+ events.emit('workspace.workspace.created', { type: 'workspace', id: workspaceId }, { slug: workspace.slug });
267
+ events.emit('workspace.member.joined', { type: 'member', id: memberId }, { userId: actor.userId });
266
268
  return toWorkspaceView(workspace);
267
- });
269
+ }, { workspaceId, actor: toEventActor(actor) });
268
270
  },
269
271
  async get(actor, workspaceId) {
270
272
  await requireMembership(actor, workspaceId, 'member');
@@ -312,8 +314,8 @@ export function createWorkspaceService(dependencies) {
312
314
  }
313
315
  await dependencies.transaction(async ({ tx, events }) => {
314
316
  await repository.deleteWorkspace(tx, workspaceId);
315
- events.emit('workspace.deleted', { workspaceId, slug: workspace.slug });
316
- });
317
+ events.emit('workspace.workspace.deleted', { type: 'workspace', id: workspaceId }, { slug: workspace.slug });
318
+ }, { workspaceId, actor: toEventActor(actor) });
317
319
  },
318
320
  async listMembers(actor, workspaceId) {
319
321
  await requireMembership(actor, workspaceId, 'member');
@@ -364,8 +366,8 @@ export function createWorkspaceService(dependencies) {
364
366
  try {
365
367
  await dependencies.transaction(async ({ tx, events }) => {
366
368
  await repository.deleteMember(tx, target.id);
367
- events.emit('member.removed', { workspaceId, memberId: target.id, userId: target.userId });
368
- });
369
+ events.emit('workspace.member.removed', { type: 'member', id: target.id }, { userId: target.userId });
370
+ }, { workspaceId, actor: toEventActor(actor) });
369
371
  }
370
372
  catch (error) {
371
373
  // A record assigned to them between the count and this delete. The
@@ -412,9 +414,9 @@ export function createWorkspaceService(dependencies) {
412
414
  tokenHash: hashToken(token),
413
415
  expiresAt: new Date(now.getTime() + INVITE_LIFETIME_MS),
414
416
  });
415
- events.emit('member.invited', { workspaceId, inviteId: created.id, email: created.email });
417
+ events.emit('workspace.member.invited', { type: 'invite', id: created.id }, { inviteId: created.id, email: created.email });
416
418
  return created;
417
- });
419
+ }, { workspaceId, actor: toEventActor(actor) });
418
420
  // Sent after commit, so a rolled-back invite never reaches an inbox.
419
421
  await sendInviteEmail(invite.email, token);
420
422
  return toInviteView(invite, now);
@@ -512,13 +514,9 @@ export function createWorkspaceService(dependencies) {
512
514
  if (workspace === undefined) {
513
515
  throw AppError.notFound('Workspace not found');
514
516
  }
515
- events.emit('member.joined', {
516
- workspaceId: invite.workspaceId,
517
- memberId,
518
- userId: actor.userId,
519
- });
517
+ events.emit('workspace.member.joined', { type: 'member', id: memberId }, { userId: actor.userId });
520
518
  return toWorkspaceView(workspace);
521
- });
519
+ }, { workspaceId: invite.workspaceId, actor: toEventActor(actor) });
522
520
  },
523
521
  async listModuleSettings(actor, workspaceId) {
524
522
  await requireMembership(actor, workspaceId, 'member');
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/workspace/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/modules/workspace/service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { EventTarget, KelpieEvent } from '@kelpie/schemas';
2
+ import type { ZodType } from 'zod';
1
3
  import type { Logger } from '../lib/logger.ts';
2
4
  /**
3
5
  * In-process typed domain events, per `modules.md`.
@@ -5,135 +7,111 @@ import type { Logger } from '../lib/logger.ts';
5
7
  * Delivery is at-least-once within the process, with no durable queue. A crash
6
8
  * between commit and dispatch loses the event. A durable outbox is a known
7
9
  * follow-up; do not build it before a consumer cannot tolerate the loss.
10
+ *
11
+ * Every event carries the envelope defined in `@kelpie/schemas`
12
+ * (`KelpieEvent<Name, Data>`). Names and payload schemas live in per-module
13
+ * catalogs the bus registers at boot; two modules cannot declare the same name.
8
14
  */
9
15
  /**
10
- * CRM object types that `record.*` events carry. Every object the API writes,
11
- * including the link and content records.
12
- *
13
- * Wider than `EXTENSIBLE_RECORD_TYPES` in `@kelpie/schemas`, which is the
14
- * shorter list of detail pages a UI module can contribute to. A Position, a
15
- * Form, and a Handbook page each publish events but have no page to extend.
16
+ * CRM object types the webhooks bridge treats as deliverable records. Kept
17
+ * here (rather than folded into a module) because import and webhooks both
18
+ * read it, and neither owns the list.
16
19
  */
17
20
  export declare const RECORD_OBJECT_TYPES: readonly ['person', 'company', 'position', 'deal', 'opportunity', 'partnership', 'raise', 'role', 'candidate', 'handbook_page', 'form'];
18
21
  export type RecordObjectType = (typeof RECORD_OBJECT_TYPES)[number];
19
- /** Objects whose stage or status moves through a pipeline. */
20
- export type StagedObjectType = 'deal' | 'opportunity' | 'raise' | 'partnership';
21
22
  /**
22
- * The event catalog. Every payload carries `workspaceId`: a consumer must never
23
- * have to look up which tenant an event belongs to.
23
+ * The compile-time event catalog.
24
24
  *
25
- * Adding an event means adding a key here. The name is the key, so a typo is a
26
- * compile error rather than a subscription that never fires.
25
+ * Modules extend this interface via TypeScript declaration merging, one
26
+ * declaration per module. The runtime catalog (see `registerCatalog`) is the
27
+ * authority; this interface is what gives autocomplete and payload typing at
28
+ * every `publish` and `subscribe` call site.
27
29
  */
28
- export interface DomainEvents {
29
- 'workspace.created': {
30
- workspaceId: string;
31
- slug: string;
32
- };
33
- /** Fires after the cascade, so nothing the workspace owned still exists. */
34
- 'workspace.deleted': {
35
- workspaceId: string;
36
- slug: string;
37
- };
38
- 'member.invited': {
39
- workspaceId: string;
40
- inviteId: string;
41
- email: string;
42
- };
43
- 'member.joined': {
44
- workspaceId: string;
45
- memberId: string;
46
- userId: string;
47
- };
48
- /** Pairs with `member.joined`, which is what a seat count subscribes to. */
49
- 'member.removed': {
50
- workspaceId: string;
51
- memberId: string;
52
- userId: string;
53
- };
54
- 'record.created': {
55
- workspaceId: string;
56
- objectType: RecordObjectType;
57
- recordId: string;
58
- };
59
- 'record.updated': {
60
- workspaceId: string;
61
- objectType: RecordObjectType;
62
- recordId: string;
63
- changedFields: readonly string[];
64
- };
65
- 'record.deleted': {
66
- workspaceId: string;
67
- objectType: RecordObjectType;
68
- recordId: string;
69
- };
70
- 'stage.changed': {
71
- workspaceId: string;
72
- objectType: StagedObjectType;
73
- recordId: string;
74
- fromStageId: string | null;
75
- toStageId: string;
76
- };
77
- 'note.added': {
78
- workspaceId: string;
79
- noteId: string;
80
- targetType: string;
81
- targetId: string;
82
- };
83
- 'decision.added': {
84
- workspaceId: string;
85
- decisionId: string;
86
- targetType: string;
87
- targetId: string;
88
- };
89
- 'plan.completed': {
90
- workspaceId: string;
91
- planItemId: string;
92
- targetType: string;
93
- targetId: string;
94
- };
95
- 'form.submitted': {
96
- workspaceId: string;
97
- formId: string;
98
- submissionId: string;
99
- };
100
- 'import.completed': {
101
- workspaceId: string;
102
- importJobId: string;
103
- object: string;
104
- };
105
- 'agent_run.finished': {
106
- workspaceId: string;
107
- agentRunId: string;
108
- status: 'succeeded' | 'failed';
109
- };
30
+ export interface KelpieEventMap {
110
31
  }
111
- export type DomainEventName = keyof DomainEvents;
112
32
  /**
113
- * The catalog as data. Webhooks needs the deliverable event names at runtime, and
114
- * `satisfies` keeps this list from drifting from the interface above.
115
- *
116
- * An event added to `DomainEvents` but forgotten here is caught by
117
- * `createHandlerRegistry`, which must produce an entry for every name.
33
+ * When `KelpieEventMap` is empty (no module has declared an event yet) `keyof`
34
+ * is `never`, which would make every `EventHandler` signature unusable. The
35
+ * fallback keeps types working during boot and in tests that build the bus
36
+ * without any modules registered.
118
37
  */
119
- export declare const DOMAIN_EVENT_NAMES: readonly ["workspace.created", "workspace.deleted", "member.invited", "member.joined", "member.removed", "record.created", "record.updated", "record.deleted", "stage.changed", "note.added", "decision.added", "plan.completed", "form.submitted", "import.completed", "agent_run.finished"];
38
+ type EventMapWithFallback = keyof KelpieEventMap extends never ? Readonly<Record<string, unknown>> : KelpieEventMap;
39
+ export type EventName = string & keyof EventMapWithFallback;
120
40
  /** Handlers are async and must be idempotent: the same event may arrive twice. */
121
- export type EventHandler<Name extends DomainEventName> = (payload: DomainEvents[Name]) => Promise<void>;
41
+ export type EventHandler<Name extends EventName> = (event: KelpieEvent<Name, EventMapWithFallback[Name]>) => Promise<void> | void;
42
+ /** Prefix subscribers see events they cannot name statically. */
43
+ export type AnyEventHandler = (event: KelpieEvent<string, unknown>) => Promise<void> | void;
44
+ /**
45
+ * What a module hands the runtime at registration: the module's id and the Zod
46
+ * schema for every event name the module publishes.
47
+ */
48
+ export interface EventCatalog {
49
+ readonly moduleId: string;
50
+ readonly events: Readonly<Record<string, ZodType>>;
51
+ }
52
+ /** One frame in the causation chain that produced an event. */
53
+ export interface EventChainEntry {
54
+ readonly id: string;
55
+ readonly name: string;
56
+ readonly targetType: string;
57
+ readonly targetId: string;
58
+ }
59
+ export declare function currentEventChain(): readonly EventChainEntry[];
60
+ /**
61
+ * Runs the cycle guard against the current chain. Called from the transaction
62
+ * scope's `emit` before it buffers the event.
63
+ */
64
+ export declare function checkEventCycle(chain: readonly EventChainEntry[], name: string, target: EventTarget, maxDepth: number): CycleGuardOutcome;
65
+ export type CycleGuardOutcome = {
66
+ readonly kind: 'ok';
67
+ } | {
68
+ readonly kind: 'depth';
69
+ } | {
70
+ readonly kind: 'repeat';
71
+ };
72
+ export interface SubscribeOptions {
73
+ /** Shown in logs when the handler fails or times out. Defaults to the event name. */
74
+ readonly label?: string;
75
+ /** Overrides the bus-wide default. */
76
+ readonly timeoutMs?: number;
77
+ }
122
78
  export interface EventBus {
123
- /** Registers a handler. Handlers for one event run concurrently, not in order. */
124
- subscribe<Name extends DomainEventName>(name: Name, handler: EventHandler<Name>): void;
79
+ /**
80
+ * Registers a module's event catalog. Called by `registerModules` at boot,
81
+ * once per module that declares events. Two modules cannot declare the same
82
+ * event name; the second call throws.
83
+ */
84
+ registerCatalog(catalog: EventCatalog): void;
85
+ /** True if any module has declared this event name. */
86
+ hasEvent(name: string): boolean;
87
+ /** The payload schema registered for this event, or `undefined` if unknown. */
88
+ getSchema(name: string): ZodType | undefined;
89
+ /**
90
+ * Subscribe to an event by exact name. Handlers for one event run
91
+ * concurrently, each in its own error and timeout boundary.
92
+ */
93
+ subscribe<Name extends EventName>(name: Name, handler: EventHandler<Name>, options?: SubscribeOptions): void;
94
+ /**
95
+ * Subscribe to every event whose name starts with `prefix`. Runs concurrently
96
+ * with exact-name subscribers. Match is a plain `startsWith`; there is no
97
+ * pattern language.
98
+ */
99
+ subscribePrefix(prefix: string, handler: AnyEventHandler, options?: SubscribeOptions): void;
125
100
  /**
126
101
  * Dispatches immediately. Services should not call this directly: they emit
127
102
  * through the transaction scope so nothing fires before the commit.
128
- *
129
- * @returns A promise that settles when every handler for this event has settled.
130
103
  */
131
- publish<Name extends DomainEventName>(name: Name, payload: DomainEvents[Name]): Promise<void>;
104
+ publish<Name extends EventName>(event: KelpieEvent<Name, EventMapWithFallback[Name]>): Promise<void>;
132
105
  /**
133
106
  * Settles once every in-flight publication has finished, including any a
134
107
  * handler started. Used by tests, and by shutdown to flush before exit.
135
108
  */
136
109
  drain(): Promise<void>;
137
110
  }
138
- export declare function createEventBus(logger: Logger): EventBus;
111
+ export interface EventBusOptions {
112
+ /** Default per-handler timeout in ms. Defaults to 5000. */
113
+ readonly defaultHandlerTimeoutMs?: number;
114
+ }
115
+ export declare function createEventBus(logger: Logger, options?: EventBusOptions): EventBus;
116
+ export {};
139
117
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import Emittery from 'emittery';
1
3
  import { describeThrown } from '../lib/errors.js';
2
4
  /**
3
5
  * In-process typed domain events, per `modules.md`.
@@ -5,14 +7,15 @@ import { describeThrown } from '../lib/errors.js';
5
7
  * Delivery is at-least-once within the process, with no durable queue. A crash
6
8
  * between commit and dispatch loses the event. A durable outbox is a known
7
9
  * follow-up; do not build it before a consumer cannot tolerate the loss.
10
+ *
11
+ * Every event carries the envelope defined in `@kelpie/schemas`
12
+ * (`KelpieEvent<Name, Data>`). Names and payload schemas live in per-module
13
+ * catalogs the bus registers at boot; two modules cannot declare the same name.
8
14
  */
9
15
  /**
10
- * CRM object types that `record.*` events carry. Every object the API writes,
11
- * including the link and content records.
12
- *
13
- * Wider than `EXTENSIBLE_RECORD_TYPES` in `@kelpie/schemas`, which is the
14
- * shorter list of detail pages a UI module can contribute to. A Position, a
15
- * Form, and a Handbook page each publish events but have no page to extend.
16
+ * CRM object types the webhooks bridge treats as deliverable records. Kept
17
+ * here (rather than folded into a module) because import and webhooks both
18
+ * read it, and neither owns the list.
16
19
  */
17
20
  export const RECORD_OBJECT_TYPES = [
18
21
  'person',
@@ -28,63 +31,131 @@ export const RECORD_OBJECT_TYPES = [
28
31
  'form',
29
32
  ];
30
33
  /**
31
- * The catalog as data. Webhooks needs the deliverable event names at runtime, and
32
- * `satisfies` keeps this list from drifting from the interface above.
34
+ * The chain of ancestor events currently being handled, keyed against the async
35
+ * context that started them. `undefined` outside any handler.
33
36
  *
34
- * An event added to `DomainEvents` but forgotten here is caught by
35
- * `createHandlerRegistry`, which must produce an entry for every name.
37
+ * The bus wraps every `publish` in `run(child, ...)`, so a handler that opens a
38
+ * transaction and calls `emit(...)` inherits the chain. The transaction scope
39
+ * reads this to stamp `causedBy` and to run the cycle guard.
36
40
  */
37
- export const DOMAIN_EVENT_NAMES = [
38
- 'workspace.created',
39
- 'workspace.deleted',
40
- 'member.invited',
41
- 'member.joined',
42
- 'member.removed',
43
- 'record.created',
44
- 'record.updated',
45
- 'record.deleted',
46
- 'stage.changed',
47
- 'note.added',
48
- 'decision.added',
49
- 'plan.completed',
50
- 'form.submitted',
51
- 'import.completed',
52
- 'agent_run.finished',
53
- ];
41
+ const chainStorage = new AsyncLocalStorage();
42
+ export function currentEventChain() {
43
+ return chainStorage.getStore() ?? [];
44
+ }
54
45
  /**
55
- * Every name gets a list up front. TypeScript cannot check a write through a
56
- * generic key, so pre-seeding turns `subscribe` into a read plus a push, which it
57
- * can check. The one assertion is building a complete record from its own key list.
46
+ * Runs the cycle guard against the current chain. Called from the transaction
47
+ * scope's `emit` before it buffers the event.
58
48
  */
59
- function createHandlerRegistry() {
60
- const registry = {};
61
- for (const name of DOMAIN_EVENT_NAMES) {
62
- registry[name] = [];
49
+ export function checkEventCycle(chain, name, target, maxDepth) {
50
+ if (chain.length >= maxDepth) {
51
+ return { kind: 'depth' };
52
+ }
53
+ for (const entry of chain) {
54
+ if (entry.name === name && entry.targetType === target.type && entry.targetId === target.id) {
55
+ return { kind: 'repeat' };
56
+ }
63
57
  }
64
- return registry;
58
+ return { kind: 'ok' };
65
59
  }
66
- export function createEventBus(logger) {
67
- const handlers = createHandlerRegistry();
60
+ const DEFAULT_HANDLER_TIMEOUT_MS = 5000;
61
+ export function createEventBus(logger, options = {}) {
62
+ const emittery = new Emittery();
63
+ const schemas = new Map();
64
+ const owners = new Map();
65
+ const prefixHandlers = [];
68
66
  const inFlight = new Set();
67
+ const defaultTimeoutMs = options.defaultHandlerTimeoutMs ?? DEFAULT_HANDLER_TIMEOUT_MS;
68
+ function wrap(label, timeoutMs, handler, context) {
69
+ return async (event) => {
70
+ let timerHandle;
71
+ const timedOut = Symbol('timeout');
72
+ const timer = new Promise((resolve) => {
73
+ timerHandle = setTimeout(() => resolve(timedOut), timeoutMs);
74
+ timerHandle.unref?.();
75
+ });
76
+ try {
77
+ const outcome = await Promise.race([
78
+ Promise.resolve().then(() => handler(event)),
79
+ timer,
80
+ ]);
81
+ if (outcome === timedOut) {
82
+ logger.error('event handler timed out', { label, timeoutMs, ...context(event) });
83
+ }
84
+ }
85
+ catch (error) {
86
+ logger.error('event handler failed', {
87
+ label,
88
+ error: describeThrown(error),
89
+ ...context(event),
90
+ });
91
+ }
92
+ finally {
93
+ if (timerHandle !== undefined) {
94
+ clearTimeout(timerHandle);
95
+ }
96
+ }
97
+ };
98
+ }
69
99
  return {
70
- subscribe(name, handler) {
71
- handlers[name].push(handler);
72
- },
73
- publish(name, payload) {
74
- const registered = handlers[name];
75
- const settled = Promise.allSettled(registered.map((handler) => handler(payload))).then((outcomes) => {
76
- for (const outcome of outcomes) {
77
- if (outcome.status === 'rejected') {
78
- logger.error('event handler failed', {
79
- event: name,
80
- error: describeThrown(outcome.reason),
81
- });
82
- }
100
+ registerCatalog(catalog) {
101
+ for (const [name, schema] of Object.entries(catalog.events)) {
102
+ const existing = owners.get(name);
103
+ if (existing !== undefined) {
104
+ throw new Error(`event "${name}" is declared by both module "${existing}" and module "${catalog.moduleId}"`);
83
105
  }
106
+ owners.set(name, catalog.moduleId);
107
+ schemas.set(name, schema);
108
+ }
109
+ },
110
+ hasEvent(name) {
111
+ return schemas.has(name);
112
+ },
113
+ getSchema(name) {
114
+ return schemas.get(name);
115
+ },
116
+ subscribe(name, handler, subscribeOptions) {
117
+ const label = subscribeOptions?.label ?? name;
118
+ const timeoutMs = subscribeOptions?.timeoutMs ?? defaultTimeoutMs;
119
+ const wrapped = wrap(label, timeoutMs, (event) => {
120
+ const envelope = event.data;
121
+ return handler(envelope);
122
+ }, (event) => {
123
+ const envelope = event.data;
124
+ return { event: envelope.name, eventId: envelope.id };
125
+ });
126
+ emittery.on(name, wrapped);
127
+ },
128
+ subscribePrefix(prefix, handler, subscribeOptions) {
129
+ const label = subscribeOptions?.label ?? `${prefix}*`;
130
+ const timeoutMs = subscribeOptions?.timeoutMs ?? defaultTimeoutMs;
131
+ prefixHandlers.push({
132
+ prefix,
133
+ label,
134
+ run: wrap(label, timeoutMs, handler, (event) => ({ event: event.name, eventId: event.id })),
84
135
  });
136
+ },
137
+ publish(event) {
138
+ const parent = chainStorage.getStore() ?? [];
139
+ const child = [
140
+ ...parent,
141
+ {
142
+ id: event.id,
143
+ name: event.name,
144
+ targetType: event.target.type,
145
+ targetId: event.target.id,
146
+ },
147
+ ];
148
+ const matching = prefixHandlers.filter((entry) => event.name.startsWith(entry.prefix));
149
+ const typedEvent = event;
150
+ const settled = chainStorage.run(child, () => Promise.allSettled([
151
+ emittery.emit(event.name, typedEvent),
152
+ ...matching.map((entry) => entry.run(typedEvent)),
153
+ ]));
85
154
  inFlight.add(settled);
86
- void settled.finally(() => inFlight.delete(settled));
87
- return settled;
155
+ void settled.finally(() => {
156
+ inFlight.delete(settled);
157
+ });
158
+ return settled.then(() => undefined);
88
159
  },
89
160
  async drain() {
90
161
  // A handler may publish further events, so keep draining until the set is