@kelpie/server 0.12.0 → 0.14.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 (420) hide show
  1. package/dist/app.d.ts +13 -0
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +8 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/boot.d.ts +9 -0
  6. package/dist/boot.d.ts.map +1 -1
  7. package/dist/boot.js +12 -2
  8. package/dist/boot.js.map +1 -1
  9. package/dist/index.d.ts +6 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/apiKeyScopes.d.ts.map +1 -1
  14. package/dist/lib/apiKeyScopes.js +6 -0
  15. package/dist/lib/apiKeyScopes.js.map +1 -1
  16. package/dist/lib/columns.d.ts +6 -0
  17. package/dist/lib/columns.d.ts.map +1 -1
  18. package/dist/lib/columns.js +5 -3
  19. package/dist/lib/columns.js.map +1 -1
  20. package/dist/lib/config.d.ts +17 -0
  21. package/dist/lib/config.d.ts.map +1 -1
  22. package/dist/lib/config.js +3 -0
  23. package/dist/lib/config.js.map +1 -1
  24. package/dist/lib/egress.d.ts.map +1 -1
  25. package/dist/lib/egress.js +8 -4
  26. package/dist/lib/egress.js.map +1 -1
  27. package/dist/lib/errors.d.ts +3 -3
  28. package/dist/lib/errors.d.ts.map +1 -1
  29. package/dist/lib/errors.js +13 -5
  30. package/dist/lib/errors.js.map +1 -1
  31. package/dist/lib/ids.d.ts +11 -0
  32. package/dist/lib/ids.d.ts.map +1 -1
  33. package/dist/lib/ids.js +11 -0
  34. package/dist/lib/ids.js.map +1 -1
  35. package/dist/lib/jobs.d.ts +110 -0
  36. package/dist/lib/jobs.d.ts.map +1 -0
  37. package/dist/lib/jobs.js +5 -0
  38. package/dist/lib/jobs.js.map +1 -0
  39. package/dist/lib/kelpieConfigFile.d.ts +15 -1
  40. package/dist/lib/kelpieConfigFile.d.ts.map +1 -1
  41. package/dist/lib/kelpieConfigFile.js +33 -1
  42. package/dist/lib/kelpieConfigFile.js.map +1 -1
  43. package/dist/modules/agent-tasks/catalog.d.ts.map +1 -1
  44. package/dist/modules/agent-tasks/catalog.js +32 -1
  45. package/dist/modules/agent-tasks/catalog.js.map +1 -1
  46. package/dist/modules/agent-tasks/index.d.ts.map +1 -1
  47. package/dist/modules/agent-tasks/index.js +1 -0
  48. package/dist/modules/agent-tasks/index.js.map +1 -1
  49. package/dist/modules/agent-tasks/resolve.d.ts.map +1 -1
  50. package/dist/modules/agent-tasks/resolve.js +5 -0
  51. package/dist/modules/agent-tasks/resolve.js.map +1 -1
  52. package/dist/modules/agent-tasks/routes.d.ts +2 -0
  53. package/dist/modules/agent-tasks/routes.d.ts.map +1 -1
  54. package/dist/modules/attachedRecords.d.ts +22 -8
  55. package/dist/modules/attachedRecords.d.ts.map +1 -1
  56. package/dist/modules/attachedRecords.js +42 -5
  57. package/dist/modules/attachedRecords.js.map +1 -1
  58. package/dist/modules/auth/index.d.ts.map +1 -1
  59. package/dist/modules/auth/index.js +1 -0
  60. package/dist/modules/auth/index.js.map +1 -1
  61. package/dist/modules/auth/repository.d.ts +14 -0
  62. package/dist/modules/auth/repository.d.ts.map +1 -1
  63. package/dist/modules/auth/repository.js +20 -2
  64. package/dist/modules/auth/repository.js.map +1 -1
  65. package/dist/modules/auth/routes.d.ts.map +1 -1
  66. package/dist/modules/auth/routes.js +30 -0
  67. package/dist/modules/auth/routes.js.map +1 -1
  68. package/dist/modules/auth/service.d.ts +28 -0
  69. package/dist/modules/auth/service.d.ts.map +1 -1
  70. package/dist/modules/auth/service.js +72 -4
  71. package/dist/modules/auth/service.js.map +1 -1
  72. package/dist/modules/companies/repository.d.ts.map +1 -1
  73. package/dist/modules/companies/repository.js +1 -1
  74. package/dist/modules/companies/repository.js.map +1 -1
  75. package/dist/modules/companies/routes.d.ts +2 -4
  76. package/dist/modules/companies/routes.d.ts.map +1 -1
  77. package/dist/modules/companies/routes.js +6 -11
  78. package/dist/modules/companies/routes.js.map +1 -1
  79. package/dist/modules/companies/schema.d.ts +13 -28
  80. package/dist/modules/companies/schema.d.ts.map +1 -1
  81. package/dist/modules/companies/schema.js +2 -2
  82. package/dist/modules/companies/schema.js.map +1 -1
  83. package/dist/modules/companies/service.d.ts +2 -3
  84. package/dist/modules/companies/service.d.ts.map +1 -1
  85. package/dist/modules/companies/service.js +4 -7
  86. package/dist/modules/companies/service.js.map +1 -1
  87. package/dist/modules/core.d.ts.map +1 -1
  88. package/dist/modules/core.js +2 -0
  89. package/dist/modules/core.js.map +1 -1
  90. package/dist/modules/custom-fields/repository.d.ts.map +1 -1
  91. package/dist/modules/custom-fields/repository.js +2 -0
  92. package/dist/modules/custom-fields/repository.js.map +1 -1
  93. package/dist/modules/custom-fields/routes.d.ts +1 -0
  94. package/dist/modules/custom-fields/routes.d.ts.map +1 -1
  95. package/dist/modules/dashboard/index.d.ts.map +1 -1
  96. package/dist/modules/dashboard/index.js +1 -0
  97. package/dist/modules/dashboard/index.js.map +1 -1
  98. package/dist/modules/dashboard/repository.d.ts +13 -0
  99. package/dist/modules/dashboard/repository.d.ts.map +1 -1
  100. package/dist/modules/dashboard/repository.js +36 -0
  101. package/dist/modules/dashboard/repository.js.map +1 -1
  102. package/dist/modules/dashboard/routes.d.ts.map +1 -1
  103. package/dist/modules/dashboard/routes.js +13 -0
  104. package/dist/modules/dashboard/routes.js.map +1 -1
  105. package/dist/modules/dashboard/service.d.ts +11 -0
  106. package/dist/modules/dashboard/service.d.ts.map +1 -1
  107. package/dist/modules/dashboard/service.js +24 -1
  108. package/dist/modules/dashboard/service.js.map +1 -1
  109. package/dist/modules/decisions/repository.d.ts.map +1 -1
  110. package/dist/modules/decisions/repository.js +2 -0
  111. package/dist/modules/decisions/repository.js.map +1 -1
  112. package/dist/modules/decisions/routes.d.ts +2 -0
  113. package/dist/modules/decisions/routes.d.ts.map +1 -1
  114. package/dist/modules/events/attendances.d.ts +35 -0
  115. package/dist/modules/events/attendances.d.ts.map +1 -0
  116. package/dist/modules/events/attendances.js +157 -0
  117. package/dist/modules/events/attendances.js.map +1 -0
  118. package/dist/modules/events/catalog.d.ts +35 -0
  119. package/dist/modules/events/catalog.d.ts.map +1 -0
  120. package/dist/modules/events/catalog.js +11 -0
  121. package/dist/modules/events/catalog.js.map +1 -0
  122. package/dist/modules/events/index.d.ts +10 -0
  123. package/dist/modules/events/index.d.ts.map +1 -0
  124. package/dist/modules/events/index.js +47 -0
  125. package/dist/modules/events/index.js.map +1 -0
  126. package/dist/modules/events/repository.d.ts +67 -0
  127. package/dist/modules/events/repository.d.ts.map +1 -0
  128. package/dist/modules/events/repository.js +212 -0
  129. package/dist/modules/events/repository.js.map +1 -0
  130. package/dist/modules/events/routes.d.ts +136 -0
  131. package/dist/modules/events/routes.d.ts.map +1 -0
  132. package/dist/modules/events/routes.js +280 -0
  133. package/dist/modules/events/routes.js.map +1 -0
  134. package/dist/modules/events/schema.d.ts +626 -0
  135. package/dist/modules/events/schema.d.ts.map +1 -0
  136. package/dist/modules/events/schema.js +93 -0
  137. package/dist/modules/events/schema.js.map +1 -0
  138. package/dist/modules/events/service.d.ts +68 -0
  139. package/dist/modules/events/service.d.ts.map +1 -0
  140. package/dist/modules/events/service.js +262 -0
  141. package/dist/modules/events/service.js.map +1 -0
  142. package/dist/modules/events/tools.d.ts +8 -0
  143. package/dist/modules/events/tools.d.ts.map +1 -0
  144. package/dist/modules/events/tools.js +80 -0
  145. package/dist/modules/events/tools.js.map +1 -0
  146. package/dist/modules/forms/applySubmissionFields.d.ts.map +1 -1
  147. package/dist/modules/forms/applySubmissionFields.js +7 -5
  148. package/dist/modules/forms/applySubmissionFields.js.map +1 -1
  149. package/dist/modules/forms/fillAddresses.d.ts +4 -0
  150. package/dist/modules/forms/fillAddresses.d.ts.map +1 -0
  151. package/dist/modules/forms/fillAddresses.js +93 -0
  152. package/dist/modules/forms/fillAddresses.js.map +1 -0
  153. package/dist/modules/forms/repository.d.ts +2 -2
  154. package/dist/modules/forms/repository.d.ts.map +1 -1
  155. package/dist/modules/forms/repository.js.map +1 -1
  156. package/dist/modules/forms/routes.d.ts +2 -0
  157. package/dist/modules/forms/routes.d.ts.map +1 -1
  158. package/dist/modules/forms/routes.js +2 -2
  159. package/dist/modules/forms/routes.js.map +1 -1
  160. package/dist/modules/forms/schema.js +2 -2
  161. package/dist/modules/forms/schema.js.map +1 -1
  162. package/dist/modules/forms/service.js +2 -2
  163. package/dist/modules/forms/service.js.map +1 -1
  164. package/dist/modules/forms/submission.d.ts +1 -0
  165. package/dist/modules/forms/submission.d.ts.map +1 -1
  166. package/dist/modules/forms/submission.js +27 -4
  167. package/dist/modules/forms/submission.js.map +1 -1
  168. package/dist/modules/hiring/roles.d.ts.map +1 -1
  169. package/dist/modules/hiring/roles.js +2 -1
  170. package/dist/modules/hiring/roles.js.map +1 -1
  171. package/dist/modules/import-export/addresses.d.ts +22 -0
  172. package/dist/modules/import-export/addresses.d.ts.map +1 -0
  173. package/dist/modules/import-export/addresses.js +83 -0
  174. package/dist/modules/import-export/addresses.js.map +1 -0
  175. package/dist/modules/import-export/drafts.d.ts +3 -4
  176. package/dist/modules/import-export/drafts.d.ts.map +1 -1
  177. package/dist/modules/import-export/drafts.js +4 -5
  178. package/dist/modules/import-export/drafts.js.map +1 -1
  179. package/dist/modules/import-export/exportRows.d.ts.map +1 -1
  180. package/dist/modules/import-export/exportRows.js +3 -3
  181. package/dist/modules/import-export/exportRows.js.map +1 -1
  182. package/dist/modules/import-export/plan.d.ts.map +1 -1
  183. package/dist/modules/import-export/plan.js +17 -2
  184. package/dist/modules/import-export/plan.js.map +1 -1
  185. package/dist/modules/import-export/presets.d.ts.map +1 -1
  186. package/dist/modules/import-export/presets.js +52 -7
  187. package/dist/modules/import-export/presets.js.map +1 -1
  188. package/dist/modules/import-export/repository.d.ts +3 -4
  189. package/dist/modules/import-export/repository.d.ts.map +1 -1
  190. package/dist/modules/import-export/repository.js +2 -3
  191. package/dist/modules/import-export/repository.js.map +1 -1
  192. package/dist/modules/import-export/writes.d.ts.map +1 -1
  193. package/dist/modules/import-export/writes.js +8 -4
  194. package/dist/modules/import-export/writes.js.map +1 -1
  195. package/dist/modules/lists/routes.d.ts +4 -0
  196. package/dist/modules/lists/routes.d.ts.map +1 -1
  197. package/dist/modules/notes/routes.d.ts +2 -0
  198. package/dist/modules/notes/routes.d.ts.map +1 -1
  199. package/dist/modules/people/repository.d.ts.map +1 -1
  200. package/dist/modules/people/repository.js +1 -1
  201. package/dist/modules/people/repository.js.map +1 -1
  202. package/dist/modules/people/routes.d.ts +2 -2
  203. package/dist/modules/people/routes.js +6 -6
  204. package/dist/modules/people/routes.js.map +1 -1
  205. package/dist/modules/people/schema.d.ts +17 -14
  206. package/dist/modules/people/schema.d.ts.map +1 -1
  207. package/dist/modules/people/schema.js +6 -4
  208. package/dist/modules/people/schema.js.map +1 -1
  209. package/dist/modules/people/service.d.ts +2 -2
  210. package/dist/modules/people/service.d.ts.map +1 -1
  211. package/dist/modules/people/service.js +5 -4
  212. package/dist/modules/people/service.js.map +1 -1
  213. package/dist/modules/plans/repository.d.ts +2 -2
  214. package/dist/modules/plans/repository.d.ts.map +1 -1
  215. package/dist/modules/plans/routes.d.ts +1 -0
  216. package/dist/modules/plans/routes.d.ts.map +1 -1
  217. package/dist/modules/plans/routes.js +4 -4
  218. package/dist/modules/plans/routes.js.map +1 -1
  219. package/dist/modules/plans/schema.d.ts +2 -2
  220. package/dist/modules/plans/schema.d.ts.map +1 -1
  221. package/dist/modules/plans/schema.js +3 -3
  222. package/dist/modules/plans/schema.js.map +1 -1
  223. package/dist/modules/plans/service.d.ts +2 -2
  224. package/dist/modules/plans/service.d.ts.map +1 -1
  225. package/dist/modules/plans/service.js.map +1 -1
  226. package/dist/modules/plans/tools.js +2 -2
  227. package/dist/modules/plans/tools.js.map +1 -1
  228. package/dist/modules/recordTargets.d.ts.map +1 -1
  229. package/dist/modules/recordTargets.js +11 -0
  230. package/dist/modules/recordTargets.js.map +1 -1
  231. package/dist/modules/references.d.ts.map +1 -1
  232. package/dist/modules/references.js +2 -0
  233. package/dist/modules/references.js.map +1 -1
  234. package/dist/modules/sample-data/fixture.d.ts +26 -4
  235. package/dist/modules/sample-data/fixture.d.ts.map +1 -1
  236. package/dist/modules/sample-data/fixture.js +157 -23
  237. package/dist/modules/sample-data/fixture.js.map +1 -1
  238. package/dist/modules/sample-data/index.d.ts +5 -2
  239. package/dist/modules/sample-data/index.d.ts.map +1 -1
  240. package/dist/modules/sample-data/index.js +7 -2
  241. package/dist/modules/sample-data/index.js.map +1 -1
  242. package/dist/modules/sample-data/routes.d.ts.map +1 -1
  243. package/dist/modules/sample-data/routes.js +2 -0
  244. package/dist/modules/sample-data/routes.js.map +1 -1
  245. package/dist/modules/sample-data/service.d.ts +11 -3
  246. package/dist/modules/sample-data/service.d.ts.map +1 -1
  247. package/dist/modules/sample-data/service.js +452 -363
  248. package/dist/modules/sample-data/service.js.map +1 -1
  249. package/dist/modules/sample-data/tools.d.ts.map +1 -1
  250. package/dist/modules/sample-data/tools.js +4 -3
  251. package/dist/modules/sample-data/tools.js.map +1 -1
  252. package/dist/modules/search/index.d.ts +1 -1
  253. package/dist/modules/search/index.d.ts.map +1 -1
  254. package/dist/modules/search/index.js +2 -1
  255. package/dist/modules/search/index.js.map +1 -1
  256. package/dist/modules/search/repository.d.ts +1 -0
  257. package/dist/modules/search/repository.d.ts.map +1 -1
  258. package/dist/modules/search/repository.js +22 -0
  259. package/dist/modules/search/repository.js.map +1 -1
  260. package/dist/modules/search/service.d.ts +2 -2
  261. package/dist/modules/search/service.d.ts.map +1 -1
  262. package/dist/modules/search/service.js +4 -3
  263. package/dist/modules/search/service.js.map +1 -1
  264. package/dist/modules/smtp-email/index.d.ts +12 -4
  265. package/dist/modules/smtp-email/index.d.ts.map +1 -1
  266. package/dist/modules/smtp-email/index.js +25 -5
  267. package/dist/modules/smtp-email/index.js.map +1 -1
  268. package/dist/modules/workspace/repository.d.ts +2 -0
  269. package/dist/modules/workspace/repository.d.ts.map +1 -1
  270. package/dist/modules/workspace/repository.js +12 -0
  271. package/dist/modules/workspace/repository.js.map +1 -1
  272. package/dist/modules/workspace/routes.d.ts.map +1 -1
  273. package/dist/modules/workspace/routes.js +13 -0
  274. package/dist/modules/workspace/routes.js.map +1 -1
  275. package/dist/modules/workspace/service.d.ts +10 -0
  276. package/dist/modules/workspace/service.d.ts.map +1 -1
  277. package/dist/modules/workspace/service.js +34 -10
  278. package/dist/modules/workspace/service.js.map +1 -1
  279. package/dist/modules/workspace/starters.d.ts +17 -2
  280. package/dist/modules/workspace/starters.d.ts.map +1 -1
  281. package/dist/modules/workspace/starters.js +141 -14
  282. package/dist/modules/workspace/starters.js.map +1 -1
  283. package/dist/modules/workspace/workspaceAccessMiddleware.d.ts.map +1 -1
  284. package/dist/modules/workspace/workspaceAccessMiddleware.js +3 -4
  285. package/dist/modules/workspace/workspaceAccessMiddleware.js.map +1 -1
  286. package/dist/runtime/events.d.ts +1 -1
  287. package/dist/runtime/events.d.ts.map +1 -1
  288. package/dist/runtime/events.js +2 -0
  289. package/dist/runtime/events.js.map +1 -1
  290. package/dist/runtime/jobs.d.ts +63 -0
  291. package/dist/runtime/jobs.d.ts.map +1 -0
  292. package/dist/runtime/jobs.js +231 -0
  293. package/dist/runtime/jobs.js.map +1 -0
  294. package/dist/runtime/module.d.ts +20 -0
  295. package/dist/runtime/module.d.ts.map +1 -1
  296. package/dist/runtime/registry.d.ts +8 -0
  297. package/dist/runtime/registry.d.ts.map +1 -1
  298. package/dist/runtime/registry.js +117 -7
  299. package/dist/runtime/registry.js.map +1 -1
  300. package/dist/runtime/transaction.d.ts +19 -0
  301. package/dist/runtime/transaction.d.ts.map +1 -1
  302. package/dist/runtime/transaction.js +7 -0
  303. package/dist/runtime/transaction.js.map +1 -1
  304. package/dist/schema/index.d.ts +1 -0
  305. package/dist/schema/index.d.ts.map +1 -1
  306. package/dist/schema/index.js +1 -0
  307. package/dist/schema/index.js.map +1 -1
  308. package/dist/testing/app.d.ts +15 -0
  309. package/dist/testing/app.d.ts.map +1 -1
  310. package/dist/testing/app.js +7 -1
  311. package/dist/testing/app.js.map +1 -1
  312. package/dist/testing/client.d.ts.map +1 -1
  313. package/dist/testing/client.js +9 -1
  314. package/dist/testing/client.js.map +1 -1
  315. package/dist/testing/database.d.ts +7 -0
  316. package/dist/testing/database.d.ts.map +1 -1
  317. package/dist/testing/database.js +26 -2
  318. package/dist/testing/database.js.map +1 -1
  319. package/dist/testing/services.d.ts +7 -0
  320. package/dist/testing/services.d.ts.map +1 -1
  321. package/dist/testing/services.js +8 -1
  322. package/dist/testing/services.js.map +1 -1
  323. package/dist/worker.d.ts +15 -0
  324. package/dist/worker.d.ts.map +1 -0
  325. package/dist/worker.js +19 -0
  326. package/dist/worker.js.map +1 -0
  327. package/migrations/0044_events.sql +79 -0
  328. package/migrations/0045_addresses.sql +66 -0
  329. package/migrations/0046_drop_company_website.sql +66 -0
  330. package/migrations/meta/_journal.json +21 -0
  331. package/package.json +4 -3
  332. package/src/app.ts +25 -1
  333. package/src/boot.ts +21 -2
  334. package/src/index.ts +17 -0
  335. package/src/lib/apiKeyScopes.ts +6 -0
  336. package/src/lib/columns.ts +12 -3
  337. package/src/lib/config.ts +21 -0
  338. package/src/lib/egress.ts +8 -4
  339. package/src/lib/errors.ts +16 -9
  340. package/src/lib/ids.ts +11 -0
  341. package/src/lib/jobs.ts +126 -0
  342. package/src/lib/kelpieConfigFile.ts +69 -1
  343. package/src/modules/agent-tasks/catalog.ts +33 -1
  344. package/src/modules/agent-tasks/index.ts +1 -0
  345. package/src/modules/agent-tasks/resolve.ts +11 -0
  346. package/src/modules/attachedRecords.ts +85 -13
  347. package/src/modules/auth/index.ts +1 -0
  348. package/src/modules/auth/repository.ts +34 -3
  349. package/src/modules/auth/routes.ts +44 -1
  350. package/src/modules/auth/service.ts +118 -4
  351. package/src/modules/companies/repository.ts +1 -0
  352. package/src/modules/companies/routes.ts +6 -11
  353. package/src/modules/companies/schema.ts +3 -3
  354. package/src/modules/companies/service.ts +6 -10
  355. package/src/modules/core.ts +2 -0
  356. package/src/modules/custom-fields/repository.ts +2 -0
  357. package/src/modules/dashboard/index.ts +1 -0
  358. package/src/modules/dashboard/repository.ts +64 -0
  359. package/src/modules/dashboard/routes.ts +15 -0
  360. package/src/modules/dashboard/service.ts +48 -0
  361. package/src/modules/decisions/repository.ts +2 -0
  362. package/src/modules/events/attendances.ts +245 -0
  363. package/src/modules/events/catalog.ts +36 -0
  364. package/src/modules/events/index.ts +54 -0
  365. package/src/modules/events/repository.ts +396 -0
  366. package/src/modules/events/routes.ts +405 -0
  367. package/src/modules/events/schema.ts +148 -0
  368. package/src/modules/events/service.ts +443 -0
  369. package/src/modules/events/tools.ts +118 -0
  370. package/src/modules/forms/applySubmissionFields.ts +7 -5
  371. package/src/modules/forms/fillAddresses.ts +185 -0
  372. package/src/modules/forms/repository.ts +3 -3
  373. package/src/modules/forms/routes.ts +2 -2
  374. package/src/modules/forms/schema.ts +2 -2
  375. package/src/modules/forms/service.ts +2 -2
  376. package/src/modules/forms/submission.ts +34 -4
  377. package/src/modules/hiring/roles.ts +2 -1
  378. package/src/modules/import-export/addresses.ts +150 -0
  379. package/src/modules/import-export/drafts.ts +7 -9
  380. package/src/modules/import-export/exportRows.ts +3 -3
  381. package/src/modules/import-export/plan.ts +30 -2
  382. package/src/modules/import-export/presets.ts +55 -7
  383. package/src/modules/import-export/repository.ts +5 -7
  384. package/src/modules/import-export/writes.ts +8 -4
  385. package/src/modules/people/repository.ts +1 -0
  386. package/src/modules/people/routes.ts +6 -6
  387. package/src/modules/people/schema.ts +7 -5
  388. package/src/modules/people/service.ts +7 -5
  389. package/src/modules/plans/repository.ts +2 -2
  390. package/src/modules/plans/routes.ts +6 -6
  391. package/src/modules/plans/schema.ts +4 -4
  392. package/src/modules/plans/service.ts +3 -3
  393. package/src/modules/plans/tools.ts +2 -2
  394. package/src/modules/recordTargets.ts +14 -0
  395. package/src/modules/references.ts +2 -0
  396. package/src/modules/sample-data/fixture.ts +208 -27
  397. package/src/modules/sample-data/index.ts +7 -2
  398. package/src/modules/sample-data/routes.ts +2 -0
  399. package/src/modules/sample-data/service.ts +166 -49
  400. package/src/modules/sample-data/tools.ts +4 -3
  401. package/src/modules/search/index.ts +2 -1
  402. package/src/modules/search/repository.ts +32 -1
  403. package/src/modules/search/service.ts +6 -4
  404. package/src/modules/smtp-email/index.ts +32 -10
  405. package/src/modules/workspace/repository.ts +18 -0
  406. package/src/modules/workspace/routes.ts +16 -0
  407. package/src/modules/workspace/service.ts +59 -14
  408. package/src/modules/workspace/starters.ts +275 -14
  409. package/src/modules/workspace/workspaceAccessMiddleware.ts +3 -4
  410. package/src/runtime/events.ts +2 -0
  411. package/src/runtime/jobs.ts +358 -0
  412. package/src/runtime/module.ts +20 -0
  413. package/src/runtime/registry.ts +146 -8
  414. package/src/runtime/transaction.ts +43 -0
  415. package/src/schema/index.ts +1 -0
  416. package/src/testing/app.ts +22 -1
  417. package/src/testing/client.ts +11 -1
  418. package/src/testing/database.ts +35 -2
  419. package/src/testing/services.ts +15 -1
  420. package/src/worker.ts +20 -0
@@ -1,4 +1,4 @@
1
- import type { AccountType, CompanyStage, IcpFit, SizeBand } from '@kelpie/schemas'
1
+ import type { AccountType, CompanyAddress, CompanyStage, IcpFit, PersonAddress, SizeBand } from '@kelpie/schemas'
2
2
  import type { CandidateStatus, InterviewStage, RoleStatus } from '@kelpie/schemas'
3
3
  import type { Influence, PreferredChannel, Relationship } from '@kelpie/schemas'
4
4
  import type { PipelineKind, PlanItemStatus, RecordTargetType } from '@kelpie/schemas'
@@ -22,8 +22,7 @@ export interface FixtureCompany {
22
22
  readonly description: string
23
23
  readonly stage: CompanyStage
24
24
  readonly sizeBand: SizeBand
25
- readonly hq: string | null
26
- readonly website: string | null
25
+ readonly addresses: readonly CompanyAddress[]
27
26
  readonly accountType: AccountType
28
27
  readonly icpFit: IcpFit
29
28
  readonly techStack: readonly string[]
@@ -43,7 +42,7 @@ export interface FixturePerson {
43
42
  readonly firstName: string
44
43
  readonly lastName: string
45
44
  readonly email: string | null
46
- readonly location: string | null
45
+ readonly addresses: readonly PersonAddress[]
47
46
  readonly preferredChannel: PreferredChannel
48
47
  readonly influence: Influence
49
48
  readonly relationship: Relationship
@@ -51,6 +50,43 @@ export interface FixturePerson {
51
50
  readonly tags: readonly string[]
52
51
  }
53
52
 
53
+ function postalAddress<Kind extends string>(
54
+ kind: Kind,
55
+ parts: {
56
+ readonly line1?: string
57
+ readonly line2?: string
58
+ readonly city: string
59
+ readonly region?: string
60
+ readonly postalCode?: string
61
+ readonly country?: string
62
+ readonly primary?: boolean
63
+ },
64
+ ): {
65
+ readonly kind: Kind
66
+ readonly line1: string | null
67
+ readonly line2: string | null
68
+ readonly city: string
69
+ readonly region: string | null
70
+ readonly postalCode: string | null
71
+ readonly country: string
72
+ readonly primary: boolean
73
+ } {
74
+ return {
75
+ kind,
76
+ line1: parts.line1 ?? null,
77
+ line2: parts.line2 ?? null,
78
+ city: parts.city,
79
+ region: parts.region ?? null,
80
+ postalCode: parts.postalCode ?? null,
81
+ country: parts.country ?? 'AU',
82
+ primary: parts.primary ?? false,
83
+ }
84
+ }
85
+
86
+ function cityAddress<Kind extends string>(kind: Kind, city: string): ReturnType<typeof postalAddress<Kind>> {
87
+ return postalAddress(kind, { city, primary: true })
88
+ }
89
+
54
90
  export interface FixturePosition {
55
91
  readonly personKey: string
56
92
  readonly companyKey: string
@@ -156,6 +192,30 @@ export interface FixtureCandidate {
156
192
  readonly referrerPersonKey: string | null
157
193
  }
158
194
 
195
+ export interface FixtureEvent {
196
+ readonly key: string
197
+ readonly name: string
198
+ readonly kind: string
199
+ readonly startOffsetHours: number
200
+ readonly durationHours: number
201
+ readonly timezone: string
202
+ readonly location: string
203
+ readonly meetingUrl: string | null
204
+ readonly format: 'in_person' | 'virtual' | 'hybrid'
205
+ readonly details: string
206
+ readonly status: 'draft' | 'scheduled' | 'cancelled'
207
+ readonly summary: string
208
+ readonly tags: readonly string[]
209
+ readonly dealKey: string | null
210
+ readonly attendees: readonly FixtureAttendance[]
211
+ }
212
+
213
+ export interface FixtureAttendance {
214
+ readonly personKey: string
215
+ readonly status: 'registered' | 'attended' | 'no_show' | 'cancelled'
216
+ readonly source: 'manual' | 'form'
217
+ }
218
+
159
219
  export interface Fixture {
160
220
  readonly companies: readonly FixtureCompany[]
161
221
  readonly people: readonly FixturePerson[]
@@ -169,6 +229,7 @@ export interface Fixture {
169
229
  readonly enquiries: readonly FixtureEnquiry[]
170
230
  readonly roles: readonly FixtureRole[]
171
231
  readonly candidates: readonly FixtureCandidate[]
232
+ readonly events: readonly FixtureEvent[]
172
233
  }
173
234
 
174
235
  export const SAMPLE_DATA_FIXTURE: Fixture = {
@@ -181,8 +242,21 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
181
242
  description: 'Freight forwarding platform for mid-market importers.',
182
243
  stage: 'growth',
183
244
  sizeBand: '51-200',
184
- hq: 'Melbourne, AU',
185
- website: 'https://northwind.dev',
245
+ addresses: [
246
+ postalAddress('hq', {
247
+ line1: '120 Collins Street',
248
+ city: 'Melbourne',
249
+ region: 'VIC',
250
+ postalCode: '3000',
251
+ primary: true,
252
+ }),
253
+ postalAddress('billing', {
254
+ line1: 'PO Box 210',
255
+ city: 'Melbourne',
256
+ region: 'VIC',
257
+ postalCode: '8007',
258
+ }),
259
+ ],
186
260
  accountType: 'customer',
187
261
  icpFit: 'high',
188
262
  techStack: ['Postgres', 'Node', 'React'],
@@ -197,8 +271,15 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
197
271
  description: 'Industrial IoT platform for factory operators.',
198
272
  stage: 'enterprise',
199
273
  sizeBand: '201+',
200
- hq: 'Sydney, AU',
201
- website: 'https://globex.example',
274
+ addresses: [
275
+ postalAddress('hq', {
276
+ line1: 'Level 12, 1 Farrer Place',
277
+ city: 'Sydney',
278
+ region: 'NSW',
279
+ postalCode: '2000',
280
+ primary: true,
281
+ }),
282
+ ],
202
283
  accountType: 'prospect',
203
284
  icpFit: 'medium',
204
285
  techStack: ['Java', 'Kafka'],
@@ -213,8 +294,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
213
294
  description: 'Accounts payable automation for SMBs.',
214
295
  stage: 'startup',
215
296
  sizeBand: '11-50',
216
- hq: 'Brisbane, AU',
217
- website: 'https://initech.example',
297
+ addresses: [cityAddress('hq', 'Brisbane')],
218
298
  accountType: 'prospect',
219
299
  icpFit: 'high',
220
300
  techStack: ['Python', 'Postgres'],
@@ -229,8 +309,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
229
309
  description: 'Search and discovery for local services.',
230
310
  stage: 'growth',
231
311
  sizeBand: '51-200',
232
- hq: 'Perth, AU',
233
- website: 'https://hooli.example',
312
+ addresses: [cityAddress('hq', 'Perth')],
234
313
  accountType: 'partner',
235
314
  icpFit: 'medium',
236
315
  techStack: ['Go', 'gRPC'],
@@ -245,8 +324,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
245
324
  description: 'Contract manufacturing for defence primes.',
246
325
  stage: 'enterprise',
247
326
  sizeBand: '201+',
248
- hq: 'Adelaide, AU',
249
- website: 'https://stark.example',
327
+ addresses: [cityAddress('hq', 'Adelaide')],
250
328
  accountType: 'prospect',
251
329
  icpFit: 'low',
252
330
  techStack: [],
@@ -261,8 +339,15 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
261
339
  description: 'Seed-stage investor, one to five million cheque size.',
262
340
  stage: 'other',
263
341
  sizeBand: '11-50',
264
- hq: 'Sydney, AU',
265
- website: 'https://southerncross.example',
342
+ addresses: [
343
+ postalAddress('hq', {
344
+ line1: '88 Phillip Street',
345
+ city: 'Sydney',
346
+ region: 'NSW',
347
+ postalCode: '2000',
348
+ primary: true,
349
+ }),
350
+ ],
266
351
  accountType: 'investor',
267
352
  icpFit: 'unknown',
268
353
  techStack: [],
@@ -277,8 +362,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
277
362
  description: 'Twelve week program with a demo day and alumni network.',
278
363
  stage: 'other',
279
364
  sizeBand: '11-50',
280
- hq: 'Melbourne, AU',
281
- website: 'https://sandbox.example',
365
+ addresses: [cityAddress('hq', 'Melbourne')],
282
366
  accountType: 'partner',
283
367
  icpFit: 'unknown',
284
368
  techStack: [],
@@ -294,7 +378,22 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
294
378
  firstName: 'Ada',
295
379
  lastName: 'Lovelace',
296
380
  email: 'ada@northwind.dev',
297
- location: 'Melbourne, AU',
381
+ addresses: [
382
+ postalAddress('home', {
383
+ line1: '42 Gertrude Street',
384
+ city: 'Fitzroy',
385
+ region: 'VIC',
386
+ postalCode: '3065',
387
+ primary: true,
388
+ }),
389
+ postalAddress('mailing', {
390
+ line1: 'Northwind Traders',
391
+ line2: '120 Collins Street',
392
+ city: 'Melbourne',
393
+ region: 'VIC',
394
+ postalCode: '3000',
395
+ }),
396
+ ],
298
397
  preferredChannel: 'email',
299
398
  influence: 'champion',
300
399
  relationship: 'strong',
@@ -307,7 +406,15 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
307
406
  firstName: 'Grace',
308
407
  lastName: 'Hopper',
309
408
  email: 'grace@northwind.dev',
310
- location: 'Melbourne, AU',
409
+ addresses: [
410
+ postalAddress('work', {
411
+ line1: '120 Collins Street',
412
+ city: 'Melbourne',
413
+ region: 'VIC',
414
+ postalCode: '3000',
415
+ primary: true,
416
+ }),
417
+ ],
311
418
  preferredChannel: 'email',
312
419
  influence: 'influencer',
313
420
  relationship: 'warm',
@@ -320,7 +427,21 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
320
427
  firstName: 'Tom',
321
428
  lastName: 'Anderson',
322
429
  email: 'tom@globex.example',
323
- location: 'Sydney, AU',
430
+ addresses: [
431
+ postalAddress('work', {
432
+ line1: 'Level 12, 1 Farrer Place',
433
+ city: 'Sydney',
434
+ region: 'NSW',
435
+ postalCode: '2000',
436
+ primary: true,
437
+ }),
438
+ postalAddress('home', {
439
+ line1: '15/200 Kent Street',
440
+ city: 'Sydney',
441
+ region: 'NSW',
442
+ postalCode: '2000',
443
+ }),
444
+ ],
324
445
  preferredChannel: 'call',
325
446
  influence: 'decision_maker',
326
447
  relationship: 'warm',
@@ -333,7 +454,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
333
454
  firstName: 'Peter',
334
455
  lastName: 'Gibbons',
335
456
  email: 'peter@initech.example',
336
- location: 'Brisbane, AU',
457
+ addresses: [cityAddress('home', 'Brisbane')],
337
458
  preferredChannel: 'email',
338
459
  influence: 'influencer',
339
460
  relationship: 'warm',
@@ -346,7 +467,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
346
467
  firstName: 'Gavin',
347
468
  lastName: 'Belson',
348
469
  email: 'gavin@hooli.example',
349
- location: 'Perth, AU',
470
+ addresses: [cityAddress('home', 'Perth')],
350
471
  preferredChannel: 'linkedin',
351
472
  influence: 'decision_maker',
352
473
  relationship: 'warm',
@@ -359,7 +480,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
359
480
  firstName: 'Roelof',
360
481
  lastName: 'Nkosi',
361
482
  email: 'roelof@southerncross.example',
362
- location: 'Sydney, AU',
483
+ addresses: [cityAddress('home', 'Sydney')],
363
484
  preferredChannel: 'email',
364
485
  influence: 'decision_maker',
365
486
  relationship: 'warm',
@@ -372,7 +493,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
372
493
  firstName: 'Mei',
373
494
  lastName: 'Zhang',
374
495
  email: 'mei@sandbox.example',
375
- location: 'Melbourne, AU',
496
+ addresses: [cityAddress('home', 'Melbourne')],
376
497
  preferredChannel: 'email',
377
498
  influence: 'influencer',
378
499
  relationship: 'warm',
@@ -385,7 +506,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
385
506
  firstName: 'Charlotte',
386
507
  lastName: 'Rivera',
387
508
  email: 'charlotte@example.com',
388
- location: 'Melbourne, AU',
509
+ addresses: [cityAddress('home', 'Melbourne')],
389
510
  preferredChannel: 'email',
390
511
  influence: 'end_user',
391
512
  relationship: 'warm',
@@ -398,7 +519,7 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
398
519
  firstName: 'Omar',
399
520
  lastName: 'Haddad',
400
521
  email: 'omar@example.com',
401
- location: 'Sydney, AU',
522
+ addresses: [cityAddress('home', 'Sydney')],
402
523
  preferredChannel: 'email',
403
524
  influence: 'end_user',
404
525
  relationship: 'cold',
@@ -657,6 +778,66 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
657
778
  referrerPersonKey: null,
658
779
  },
659
780
  ],
781
+
782
+ events: [
783
+ {
784
+ key: 'product-webinar',
785
+ name: 'Product webinar — pipeline walkthrough',
786
+ kind: 'webinar',
787
+ startOffsetHours: 48,
788
+ durationHours: 1,
789
+ timezone: 'Australia/Melbourne',
790
+ location: 'Online',
791
+ meetingUrl: 'https://meet.example.com/webinar',
792
+ format: 'virtual',
793
+ details: 'Live walkthrough of the CRM for inbound leads.',
794
+ status: 'scheduled',
795
+ summary: 'Demand webinar for Q3 inbound.',
796
+ tags: ['demand'],
797
+ dealKey: 'northwind-expansion',
798
+ attendees: [
799
+ { personKey: 'ada', status: 'registered', source: 'manual' },
800
+ { personKey: 'grace', status: 'registered', source: 'form' },
801
+ ],
802
+ },
803
+ {
804
+ key: 'customer-dinner',
805
+ name: 'Northwind customer dinner',
806
+ kind: 'dinner',
807
+ startOffsetHours: 96,
808
+ durationHours: 3,
809
+ timezone: 'Australia/Melbourne',
810
+ location: 'Melbourne CBD',
811
+ meetingUrl: null,
812
+ format: 'in_person',
813
+ details: 'Small dinner with the Northwind team.',
814
+ status: 'scheduled',
815
+ summary: 'Relationship dinner.',
816
+ tags: ['customer'],
817
+ dealKey: 'northwind-expansion',
818
+ attendees: [{ personKey: 'ada', status: 'registered', source: 'manual' }],
819
+ },
820
+ {
821
+ key: 'launch-livestream',
822
+ name: 'Launch livestream recap',
823
+ kind: 'livestream',
824
+ startOffsetHours: -48,
825
+ durationHours: 1,
826
+ timezone: 'Australia/Melbourne',
827
+ location: 'Online',
828
+ meetingUrl: 'https://meet.example.com/launch',
829
+ format: 'virtual',
830
+ details: 'The launch stream that already ran.',
831
+ status: 'scheduled',
832
+ summary: 'Past livestream.',
833
+ tags: ['launch'],
834
+ dealKey: null,
835
+ attendees: [
836
+ { personKey: 'ada', status: 'attended', source: 'form' },
837
+ { personKey: 'gavin', status: 'no_show', source: 'form' },
838
+ ],
839
+ },
840
+ ],
660
841
  }
661
842
 
662
843
  /**
@@ -4,11 +4,14 @@ import { createSampleDataService } from './service.ts'
4
4
  import { registerSampleDataTools } from './tools.ts'
5
5
 
6
6
  /**
7
- * Sample data: one-shot fixture install for a new workspace.
7
+ * Sample data: fixture install for a workspace.
8
8
  *
9
9
  * Owns no tables. Requires the modules whose tables the fixture writes into.
10
10
  * A workspace admin invokes it from the setup wizard or from the admin data
11
- * page; an agent invokes it through the matching MCP tool.
11
+ * page; an agent invokes it through the matching MCP tool. Existing records
12
+ * stay. The installer skips fixture rows for a toggleable module the workspace
13
+ * has switched off, and answers 409 when a sample email or domain already
14
+ * exists.
12
15
  */
13
16
  export function createSampleDataModule(): KelpieModule {
14
17
  return {
@@ -27,6 +30,7 @@ export function createSampleDataModule(): KelpieModule {
27
30
  'partnerships',
28
31
  'enquiries',
29
32
  'hiring',
33
+ 'events',
30
34
  ],
31
35
 
32
36
  register(context) {
@@ -35,6 +39,7 @@ export function createSampleDataModule(): KelpieModule {
35
39
  transaction: context.transaction,
36
40
  createId: context.createId,
37
41
  now: context.now,
42
+ entitlements: context.entitlements,
38
43
  })
39
44
 
40
45
  context.routes((router) => {
@@ -30,6 +30,8 @@ export function sampleDataResponse(counts: SampleDataCounts): Record<string, unk
30
30
  enquiries: counts.enquiries,
31
31
  roles: counts.roles,
32
32
  candidates: counts.candidates,
33
+ events: counts.events,
34
+ attendances: counts.attendances,
33
35
  }
34
36
  }
35
37