@kelpie/server 0.8.0 → 0.9.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 (584) hide show
  1. package/dist/lib/ids.d.ts +11 -0
  2. package/dist/lib/ids.d.ts.map +1 -1
  3. package/dist/lib/ids.js +11 -0
  4. package/dist/lib/ids.js.map +1 -1
  5. package/dist/modules/activities/repository.d.ts.map +1 -1
  6. package/dist/modules/activities/repository.js +19 -20
  7. package/dist/modules/activities/repository.js.map +1 -1
  8. package/dist/modules/activities/wording.d.ts +12 -0
  9. package/dist/modules/activities/wording.d.ts.map +1 -1
  10. package/dist/modules/activities/wording.js +16 -0
  11. package/dist/modules/activities/wording.js.map +1 -1
  12. package/dist/modules/agent-tasks/catalog.d.ts.map +1 -1
  13. package/dist/modules/agent-tasks/catalog.js +62 -0
  14. package/dist/modules/agent-tasks/catalog.js.map +1 -1
  15. package/dist/modules/agent-tasks/resolve.d.ts.map +1 -1
  16. package/dist/modules/agent-tasks/resolve.js +42 -9
  17. package/dist/modules/agent-tasks/resolve.js.map +1 -1
  18. package/dist/modules/agent-tasks/routes.d.ts +2 -0
  19. package/dist/modules/agent-tasks/routes.d.ts.map +1 -1
  20. package/dist/modules/attachedRecords.d.ts +6 -1
  21. package/dist/modules/attachedRecords.d.ts.map +1 -1
  22. package/dist/modules/attachedRecords.js +15 -1
  23. package/dist/modules/attachedRecords.js.map +1 -1
  24. package/dist/modules/companies/index.d.ts.map +1 -1
  25. package/dist/modules/companies/index.js +3 -1
  26. package/dist/modules/companies/index.js.map +1 -1
  27. package/dist/modules/companies/routes.d.ts +14 -0
  28. package/dist/modules/companies/routes.d.ts.map +1 -1
  29. package/dist/modules/companies/routes.js +7 -0
  30. package/dist/modules/companies/routes.js.map +1 -1
  31. package/dist/modules/companies/schema.d.ts +20 -0
  32. package/dist/modules/companies/schema.d.ts.map +1 -1
  33. package/dist/modules/companies/schema.js +6 -1
  34. package/dist/modules/companies/schema.js.map +1 -1
  35. package/dist/modules/companies/service.d.ts +5 -0
  36. package/dist/modules/companies/service.d.ts.map +1 -1
  37. package/dist/modules/companies/service.js +24 -12
  38. package/dist/modules/companies/service.js.map +1 -1
  39. package/dist/modules/consent-purposes/capabilities.d.ts +7 -0
  40. package/dist/modules/consent-purposes/capabilities.d.ts.map +1 -0
  41. package/dist/modules/consent-purposes/capabilities.js +10 -0
  42. package/dist/modules/consent-purposes/capabilities.js.map +1 -0
  43. package/dist/modules/consent-purposes/events.d.ts +38 -0
  44. package/dist/modules/consent-purposes/events.d.ts.map +1 -0
  45. package/dist/modules/consent-purposes/events.js +17 -0
  46. package/dist/modules/consent-purposes/events.js.map +1 -0
  47. package/dist/modules/consent-purposes/index.d.ts +13 -0
  48. package/dist/modules/consent-purposes/index.d.ts.map +1 -0
  49. package/dist/modules/consent-purposes/index.js +41 -0
  50. package/dist/modules/consent-purposes/index.js.map +1 -0
  51. package/dist/modules/consent-purposes/repository.d.ts +21 -0
  52. package/dist/modules/consent-purposes/repository.d.ts.map +1 -0
  53. package/dist/modules/consent-purposes/repository.js +98 -0
  54. package/dist/modules/consent-purposes/repository.js.map +1 -0
  55. package/dist/modules/consent-purposes/routes.d.ts +39 -0
  56. package/dist/modules/consent-purposes/routes.d.ts.map +1 -0
  57. package/dist/modules/consent-purposes/routes.js +79 -0
  58. package/dist/modules/consent-purposes/routes.js.map +1 -0
  59. package/dist/modules/consent-purposes/schema.d.ts +175 -0
  60. package/dist/modules/consent-purposes/schema.d.ts.map +1 -0
  61. package/dist/modules/consent-purposes/schema.js +35 -0
  62. package/dist/modules/consent-purposes/schema.js.map +1 -0
  63. package/dist/modules/consent-purposes/service.d.ts +50 -0
  64. package/dist/modules/consent-purposes/service.d.ts.map +1 -0
  65. package/dist/modules/consent-purposes/service.js +263 -0
  66. package/dist/modules/consent-purposes/service.js.map +1 -0
  67. package/dist/modules/consent-purposes/starters.d.ts +17 -0
  68. package/dist/modules/consent-purposes/starters.d.ts.map +1 -0
  69. package/dist/modules/consent-purposes/starters.js +15 -0
  70. package/dist/modules/consent-purposes/starters.js.map +1 -0
  71. package/dist/modules/consent-purposes/tools.d.ts +4 -0
  72. package/dist/modules/consent-purposes/tools.d.ts.map +1 -0
  73. package/dist/modules/consent-purposes/tools.js +29 -0
  74. package/dist/modules/consent-purposes/tools.js.map +1 -0
  75. package/dist/modules/core.d.ts.map +1 -1
  76. package/dist/modules/core.js +10 -0
  77. package/dist/modules/core.js.map +1 -1
  78. package/dist/modules/custom-fields/capabilities.d.ts +12 -0
  79. package/dist/modules/custom-fields/capabilities.d.ts.map +1 -0
  80. package/dist/modules/custom-fields/capabilities.js +15 -0
  81. package/dist/modules/custom-fields/capabilities.js.map +1 -0
  82. package/dist/modules/custom-fields/events.d.ts +49 -0
  83. package/dist/modules/custom-fields/events.d.ts.map +1 -0
  84. package/dist/modules/custom-fields/events.js +25 -0
  85. package/dist/modules/custom-fields/events.js.map +1 -0
  86. package/dist/modules/custom-fields/index.d.ts +19 -0
  87. package/dist/modules/custom-fields/index.d.ts.map +1 -0
  88. package/dist/modules/custom-fields/index.js +46 -0
  89. package/dist/modules/custom-fields/index.js.map +1 -0
  90. package/dist/modules/custom-fields/repository.d.ts +37 -0
  91. package/dist/modules/custom-fields/repository.d.ts.map +1 -0
  92. package/dist/modules/custom-fields/repository.js +144 -0
  93. package/dist/modules/custom-fields/repository.js.map +1 -0
  94. package/dist/modules/custom-fields/routes.d.ts +44 -0
  95. package/dist/modules/custom-fields/routes.d.ts.map +1 -0
  96. package/dist/modules/custom-fields/routes.js +103 -0
  97. package/dist/modules/custom-fields/routes.js.map +1 -0
  98. package/dist/modules/custom-fields/schema.d.ts +215 -0
  99. package/dist/modules/custom-fields/schema.d.ts.map +1 -0
  100. package/dist/modules/custom-fields/schema.js +43 -0
  101. package/dist/modules/custom-fields/schema.js.map +1 -0
  102. package/dist/modules/custom-fields/service.d.ts +57 -0
  103. package/dist/modules/custom-fields/service.d.ts.map +1 -0
  104. package/dist/modules/custom-fields/service.js +273 -0
  105. package/dist/modules/custom-fields/service.js.map +1 -0
  106. package/dist/modules/custom-fields/tools.d.ts +4 -0
  107. package/dist/modules/custom-fields/tools.d.ts.map +1 -0
  108. package/dist/modules/custom-fields/tools.js +38 -0
  109. package/dist/modules/custom-fields/tools.js.map +1 -0
  110. package/dist/modules/custom-fields/values.d.ts +49 -0
  111. package/dist/modules/custom-fields/values.d.ts.map +1 -0
  112. package/dist/modules/custom-fields/values.js +249 -0
  113. package/dist/modules/custom-fields/values.js.map +1 -0
  114. package/dist/modules/custom-fields/wire.d.ts +12 -0
  115. package/dist/modules/custom-fields/wire.d.ts.map +1 -0
  116. package/dist/modules/custom-fields/wire.js +30 -0
  117. package/dist/modules/custom-fields/wire.js.map +1 -0
  118. package/dist/modules/dashboard/repository.d.ts.map +1 -1
  119. package/dist/modules/dashboard/repository.js +4 -3
  120. package/dist/modules/dashboard/repository.js.map +1 -1
  121. package/dist/modules/deals/index.d.ts +2 -1
  122. package/dist/modules/deals/index.d.ts.map +1 -1
  123. package/dist/modules/deals/index.js +5 -2
  124. package/dist/modules/deals/index.js.map +1 -1
  125. package/dist/modules/deals/repository.d.ts +0 -16
  126. package/dist/modules/deals/repository.d.ts.map +1 -1
  127. package/dist/modules/deals/repository.js +6 -76
  128. package/dist/modules/deals/repository.js.map +1 -1
  129. package/dist/modules/deals/routes.d.ts +14 -0
  130. package/dist/modules/deals/routes.d.ts.map +1 -1
  131. package/dist/modules/deals/routes.js +7 -0
  132. package/dist/modules/deals/routes.js.map +1 -1
  133. package/dist/modules/deals/schema.d.ts +20 -42
  134. package/dist/modules/deals/schema.d.ts.map +1 -1
  135. package/dist/modules/deals/schema.js +6 -11
  136. package/dist/modules/deals/schema.js.map +1 -1
  137. package/dist/modules/deals/service.d.ts +13 -2
  138. package/dist/modules/deals/service.d.ts.map +1 -1
  139. package/dist/modules/deals/service.js +43 -20
  140. package/dist/modules/deals/service.js.map +1 -1
  141. package/dist/modules/decisions/repository.d.ts.map +1 -1
  142. package/dist/modules/decisions/repository.js +2 -0
  143. package/dist/modules/decisions/repository.js.map +1 -1
  144. package/dist/modules/decisions/routes.d.ts +1 -0
  145. package/dist/modules/decisions/routes.d.ts.map +1 -1
  146. package/dist/modules/enquiries/events.d.ts +44 -0
  147. package/dist/modules/enquiries/events.d.ts.map +1 -0
  148. package/dist/modules/enquiries/events.js +19 -0
  149. package/dist/modules/enquiries/events.js.map +1 -0
  150. package/dist/modules/enquiries/index.d.ts +13 -0
  151. package/dist/modules/enquiries/index.d.ts.map +1 -0
  152. package/dist/modules/enquiries/index.js +44 -0
  153. package/dist/modules/enquiries/index.js.map +1 -0
  154. package/dist/modules/enquiries/repository.d.ts +30 -0
  155. package/dist/modules/enquiries/repository.d.ts.map +1 -0
  156. package/dist/modules/enquiries/repository.js +94 -0
  157. package/dist/modules/enquiries/repository.js.map +1 -0
  158. package/dist/modules/enquiries/routes.d.ts +52 -0
  159. package/dist/modules/enquiries/routes.d.ts.map +1 -0
  160. package/dist/modules/enquiries/routes.js +127 -0
  161. package/dist/modules/enquiries/routes.js.map +1 -0
  162. package/dist/modules/enquiries/schema.d.ts +290 -0
  163. package/dist/modules/enquiries/schema.d.ts.map +1 -0
  164. package/dist/modules/enquiries/schema.js +52 -0
  165. package/dist/modules/enquiries/schema.js.map +1 -0
  166. package/dist/modules/enquiries/service.d.ts +85 -0
  167. package/dist/modules/enquiries/service.d.ts.map +1 -0
  168. package/dist/modules/enquiries/service.js +370 -0
  169. package/dist/modules/enquiries/service.js.map +1 -0
  170. package/dist/modules/enquiries/tools.d.ts +4 -0
  171. package/dist/modules/enquiries/tools.d.ts.map +1 -0
  172. package/dist/modules/enquiries/tools.js +50 -0
  173. package/dist/modules/enquiries/tools.js.map +1 -0
  174. package/dist/modules/eventCatalogs.d.ts +3 -0
  175. package/dist/modules/eventCatalogs.d.ts.map +1 -1
  176. package/dist/modules/eventCatalogs.js +3 -0
  177. package/dist/modules/eventCatalogs.js.map +1 -1
  178. package/dist/modules/forms/embed.d.ts +20 -6
  179. package/dist/modules/forms/embed.d.ts.map +1 -1
  180. package/dist/modules/forms/embed.js +359 -43
  181. package/dist/modules/forms/embed.js.map +1 -1
  182. package/dist/modules/forms/events.d.ts +20 -7
  183. package/dist/modules/forms/events.d.ts.map +1 -1
  184. package/dist/modules/forms/events.js +20 -2
  185. package/dist/modules/forms/events.js.map +1 -1
  186. package/dist/modules/forms/fields.d.ts +14 -1
  187. package/dist/modules/forms/fields.d.ts.map +1 -1
  188. package/dist/modules/forms/fields.js +87 -3
  189. package/dist/modules/forms/fields.js.map +1 -1
  190. package/dist/modules/forms/index.d.ts.map +1 -1
  191. package/dist/modules/forms/index.js +12 -1
  192. package/dist/modules/forms/index.js.map +1 -1
  193. package/dist/modules/forms/mapping.d.ts +62 -5
  194. package/dist/modules/forms/mapping.d.ts.map +1 -1
  195. package/dist/modules/forms/mapping.js +139 -5
  196. package/dist/modules/forms/mapping.js.map +1 -1
  197. package/dist/modules/forms/publicRoutes.d.ts.map +1 -1
  198. package/dist/modules/forms/publicRoutes.js +29 -1
  199. package/dist/modules/forms/publicRoutes.js.map +1 -1
  200. package/dist/modules/forms/repository.d.ts +31 -0
  201. package/dist/modules/forms/repository.d.ts.map +1 -1
  202. package/dist/modules/forms/repository.js +90 -1
  203. package/dist/modules/forms/repository.js.map +1 -1
  204. package/dist/modules/forms/routes.d.ts +83 -1
  205. package/dist/modules/forms/routes.d.ts.map +1 -1
  206. package/dist/modules/forms/routes.js +185 -2
  207. package/dist/modules/forms/routes.js.map +1 -1
  208. package/dist/modules/forms/schema.d.ts +672 -1
  209. package/dist/modules/forms/schema.d.ts.map +1 -1
  210. package/dist/modules/forms/schema.js +146 -3
  211. package/dist/modules/forms/schema.js.map +1 -1
  212. package/dist/modules/forms/service.d.ts +54 -1
  213. package/dist/modules/forms/service.d.ts.map +1 -1
  214. package/dist/modules/forms/service.js +338 -28
  215. package/dist/modules/forms/service.js.map +1 -1
  216. package/dist/modules/forms/submission.d.ts +15 -0
  217. package/dist/modules/forms/submission.d.ts.map +1 -1
  218. package/dist/modules/forms/submission.js +418 -40
  219. package/dist/modules/forms/submission.js.map +1 -1
  220. package/dist/modules/import-export/drafts.d.ts +10 -0
  221. package/dist/modules/import-export/drafts.d.ts.map +1 -1
  222. package/dist/modules/import-export/drafts.js +16 -2
  223. package/dist/modules/import-export/drafts.js.map +1 -1
  224. package/dist/modules/import-export/exportRows.d.ts +7 -4
  225. package/dist/modules/import-export/exportRows.d.ts.map +1 -1
  226. package/dist/modules/import-export/exportRows.js +20 -5
  227. package/dist/modules/import-export/exportRows.js.map +1 -1
  228. package/dist/modules/import-export/plan.d.ts +12 -1
  229. package/dist/modules/import-export/plan.d.ts.map +1 -1
  230. package/dist/modules/import-export/plan.js +29 -2
  231. package/dist/modules/import-export/plan.js.map +1 -1
  232. package/dist/modules/import-export/presets.d.ts.map +1 -1
  233. package/dist/modules/import-export/presets.js +10 -0
  234. package/dist/modules/import-export/presets.js.map +1 -1
  235. package/dist/modules/import-export/repository.d.ts +11 -1
  236. package/dist/modules/import-export/repository.d.ts.map +1 -1
  237. package/dist/modules/import-export/repository.js +42 -9
  238. package/dist/modules/import-export/repository.js.map +1 -1
  239. package/dist/modules/import-export/routes.d.ts.map +1 -1
  240. package/dist/modules/import-export/routes.js +4 -0
  241. package/dist/modules/import-export/routes.js.map +1 -1
  242. package/dist/modules/import-export/schema.d.ts +17 -0
  243. package/dist/modules/import-export/schema.d.ts.map +1 -1
  244. package/dist/modules/import-export/schema.js +11 -0
  245. package/dist/modules/import-export/schema.js.map +1 -1
  246. package/dist/modules/import-export/service.d.ts +6 -0
  247. package/dist/modules/import-export/service.d.ts.map +1 -1
  248. package/dist/modules/import-export/service.js +14 -2
  249. package/dist/modules/import-export/service.js.map +1 -1
  250. package/dist/modules/import-export/streams.d.ts.map +1 -1
  251. package/dist/modules/import-export/streams.js +3 -3
  252. package/dist/modules/import-export/streams.js.map +1 -1
  253. package/dist/modules/import-export/tools.d.ts.map +1 -1
  254. package/dist/modules/import-export/tools.js +8 -0
  255. package/dist/modules/import-export/tools.js.map +1 -1
  256. package/dist/modules/import-export/validation.d.ts.map +1 -1
  257. package/dist/modules/import-export/validation.js +22 -1
  258. package/dist/modules/import-export/validation.js.map +1 -1
  259. package/dist/modules/import-export/writes.d.ts.map +1 -1
  260. package/dist/modules/import-export/writes.js +37 -4
  261. package/dist/modules/import-export/writes.js.map +1 -1
  262. package/dist/modules/lists/repository.d.ts +11 -0
  263. package/dist/modules/lists/repository.d.ts.map +1 -1
  264. package/dist/modules/lists/repository.js +13 -0
  265. package/dist/modules/lists/repository.js.map +1 -1
  266. package/dist/modules/lists/routes.d.ts +4 -0
  267. package/dist/modules/lists/routes.d.ts.map +1 -1
  268. package/dist/modules/lists/routes.js +8 -0
  269. package/dist/modules/lists/routes.js.map +1 -1
  270. package/dist/modules/lists/schema.d.ts +17 -0
  271. package/dist/modules/lists/schema.d.ts.map +1 -1
  272. package/dist/modules/lists/schema.js +10 -0
  273. package/dist/modules/lists/schema.js.map +1 -1
  274. package/dist/modules/lists/service.d.ts +14 -2
  275. package/dist/modules/lists/service.d.ts.map +1 -1
  276. package/dist/modules/lists/service.js +55 -7
  277. package/dist/modules/lists/service.js.map +1 -1
  278. package/dist/modules/mcp/index.d.ts.map +1 -1
  279. package/dist/modules/mcp/index.js +5 -0
  280. package/dist/modules/mcp/index.js.map +1 -1
  281. package/dist/modules/notes/routes.d.ts +1 -0
  282. package/dist/modules/notes/routes.d.ts.map +1 -1
  283. package/dist/modules/opportunities/index.d.ts.map +1 -1
  284. package/dist/modules/opportunities/index.js +3 -1
  285. package/dist/modules/opportunities/index.js.map +1 -1
  286. package/dist/modules/opportunities/repository.d.ts +2 -0
  287. package/dist/modules/opportunities/repository.d.ts.map +1 -1
  288. package/dist/modules/opportunities/repository.js +4 -0
  289. package/dist/modules/opportunities/repository.js.map +1 -1
  290. package/dist/modules/opportunities/routes.d.ts +16 -0
  291. package/dist/modules/opportunities/routes.d.ts.map +1 -1
  292. package/dist/modules/opportunities/routes.js +13 -0
  293. package/dist/modules/opportunities/routes.js.map +1 -1
  294. package/dist/modules/opportunities/schema.d.ts +20 -0
  295. package/dist/modules/opportunities/schema.d.ts.map +1 -1
  296. package/dist/modules/opportunities/schema.js +6 -1
  297. package/dist/modules/opportunities/schema.js.map +1 -1
  298. package/dist/modules/opportunities/service.d.ts +20 -3
  299. package/dist/modules/opportunities/service.d.ts.map +1 -1
  300. package/dist/modules/opportunities/service.js +99 -18
  301. package/dist/modules/opportunities/service.js.map +1 -1
  302. package/dist/modules/opportunities/tools.d.ts.map +1 -1
  303. package/dist/modules/opportunities/tools.js +2 -0
  304. package/dist/modules/opportunities/tools.js.map +1 -1
  305. package/dist/modules/partnerships/index.d.ts.map +1 -1
  306. package/dist/modules/partnerships/index.js +3 -1
  307. package/dist/modules/partnerships/index.js.map +1 -1
  308. package/dist/modules/partnerships/repository.d.ts +0 -17
  309. package/dist/modules/partnerships/repository.d.ts.map +1 -1
  310. package/dist/modules/partnerships/repository.js +6 -82
  311. package/dist/modules/partnerships/repository.js.map +1 -1
  312. package/dist/modules/partnerships/routes.d.ts +14 -0
  313. package/dist/modules/partnerships/routes.d.ts.map +1 -1
  314. package/dist/modules/partnerships/routes.js +7 -0
  315. package/dist/modules/partnerships/routes.js.map +1 -1
  316. package/dist/modules/partnerships/schema.d.ts +20 -41
  317. package/dist/modules/partnerships/schema.d.ts.map +1 -1
  318. package/dist/modules/partnerships/schema.js +6 -10
  319. package/dist/modules/partnerships/schema.js.map +1 -1
  320. package/dist/modules/partnerships/service.d.ts +11 -1
  321. package/dist/modules/partnerships/service.d.ts.map +1 -1
  322. package/dist/modules/partnerships/service.js +43 -20
  323. package/dist/modules/partnerships/service.js.map +1 -1
  324. package/dist/modules/people/consentHydration.d.ts +26 -0
  325. package/dist/modules/people/consentHydration.d.ts.map +1 -0
  326. package/dist/modules/people/consentHydration.js +100 -0
  327. package/dist/modules/people/consentHydration.js.map +1 -0
  328. package/dist/modules/people/index.d.ts.map +1 -1
  329. package/dist/modules/people/index.js +3 -1
  330. package/dist/modules/people/index.js.map +1 -1
  331. package/dist/modules/people/personConsentWrites.d.ts +40 -0
  332. package/dist/modules/people/personConsentWrites.d.ts.map +1 -0
  333. package/dist/modules/people/personConsentWrites.js +98 -0
  334. package/dist/modules/people/personConsentWrites.js.map +1 -0
  335. package/dist/modules/people/repository.d.ts.map +1 -1
  336. package/dist/modules/people/repository.js +5 -1
  337. package/dist/modules/people/repository.js.map +1 -1
  338. package/dist/modules/people/routes.d.ts +57 -4
  339. package/dist/modules/people/routes.d.ts.map +1 -1
  340. package/dist/modules/people/routes.js +104 -5
  341. package/dist/modules/people/routes.js.map +1 -1
  342. package/dist/modules/people/schema.d.ts +366 -1
  343. package/dist/modules/people/schema.d.ts.map +1 -1
  344. package/dist/modules/people/schema.js +92 -2
  345. package/dist/modules/people/schema.js.map +1 -1
  346. package/dist/modules/people/service.d.ts +30 -1
  347. package/dist/modules/people/service.d.ts.map +1 -1
  348. package/dist/modules/people/service.js +115 -38
  349. package/dist/modules/people/service.js.map +1 -1
  350. package/dist/modules/people/tools.d.ts.map +1 -1
  351. package/dist/modules/people/tools.js +4 -1
  352. package/dist/modules/people/tools.js.map +1 -1
  353. package/dist/modules/personLinks.d.ts +79 -0
  354. package/dist/modules/personLinks.d.ts.map +1 -0
  355. package/dist/modules/personLinks.js +155 -0
  356. package/dist/modules/personLinks.js.map +1 -0
  357. package/dist/modules/pipelines/routes.d.ts +1 -0
  358. package/dist/modules/pipelines/routes.d.ts.map +1 -1
  359. package/dist/modules/plans/routes.d.ts +1 -0
  360. package/dist/modules/plans/routes.d.ts.map +1 -1
  361. package/dist/modules/raises/index.d.ts.map +1 -1
  362. package/dist/modules/raises/index.js +3 -1
  363. package/dist/modules/raises/index.js.map +1 -1
  364. package/dist/modules/raises/repository.d.ts +0 -17
  365. package/dist/modules/raises/repository.d.ts.map +1 -1
  366. package/dist/modules/raises/repository.js +6 -77
  367. package/dist/modules/raises/repository.js.map +1 -1
  368. package/dist/modules/raises/routes.d.ts +14 -0
  369. package/dist/modules/raises/routes.d.ts.map +1 -1
  370. package/dist/modules/raises/routes.js +7 -0
  371. package/dist/modules/raises/routes.js.map +1 -1
  372. package/dist/modules/raises/schema.d.ts +20 -41
  373. package/dist/modules/raises/schema.d.ts.map +1 -1
  374. package/dist/modules/raises/schema.js +6 -10
  375. package/dist/modules/raises/schema.js.map +1 -1
  376. package/dist/modules/raises/service.d.ts +11 -1
  377. package/dist/modules/raises/service.d.ts.map +1 -1
  378. package/dist/modules/raises/service.js +41 -18
  379. package/dist/modules/raises/service.js.map +1 -1
  380. package/dist/modules/recordTargets.d.ts.map +1 -1
  381. package/dist/modules/recordTargets.js +2 -0
  382. package/dist/modules/recordTargets.js.map +1 -1
  383. package/dist/modules/references.d.ts +10 -0
  384. package/dist/modules/references.d.ts.map +1 -1
  385. package/dist/modules/references.js +27 -4
  386. package/dist/modules/references.js.map +1 -1
  387. package/dist/modules/sample-data/fixture.d.ts +21 -0
  388. package/dist/modules/sample-data/fixture.d.ts.map +1 -1
  389. package/dist/modules/sample-data/fixture.js +40 -0
  390. package/dist/modules/sample-data/fixture.js.map +1 -1
  391. package/dist/modules/sample-data/index.d.ts.map +1 -1
  392. package/dist/modules/sample-data/index.js +1 -0
  393. package/dist/modules/sample-data/index.js.map +1 -1
  394. package/dist/modules/sample-data/routes.d.ts.map +1 -1
  395. package/dist/modules/sample-data/routes.js +1 -0
  396. package/dist/modules/sample-data/routes.js.map +1 -1
  397. package/dist/modules/sample-data/service.d.ts +1 -0
  398. package/dist/modules/sample-data/service.d.ts.map +1 -1
  399. package/dist/modules/sample-data/service.js +77 -8
  400. package/dist/modules/sample-data/service.js.map +1 -1
  401. package/dist/modules/search/index.d.ts +1 -1
  402. package/dist/modules/search/index.d.ts.map +1 -1
  403. package/dist/modules/search/index.js +2 -1
  404. package/dist/modules/search/index.js.map +1 -1
  405. package/dist/modules/search/repository.d.ts +1 -0
  406. package/dist/modules/search/repository.d.ts.map +1 -1
  407. package/dist/modules/search/repository.js +23 -0
  408. package/dist/modules/search/repository.js.map +1 -1
  409. package/dist/modules/search/service.d.ts +3 -3
  410. package/dist/modules/search/service.d.ts.map +1 -1
  411. package/dist/modules/search/service.js +5 -4
  412. package/dist/modules/search/service.js.map +1 -1
  413. package/dist/modules/stagedRecords.d.ts +3 -3
  414. package/dist/modules/stagedRecords.d.ts.map +1 -1
  415. package/dist/modules/stagedRecords.js +9 -0
  416. package/dist/modules/stagedRecords.js.map +1 -1
  417. package/dist/modules/webhooks/payloads.d.ts.map +1 -1
  418. package/dist/modules/webhooks/payloads.js +15 -2
  419. package/dist/modules/webhooks/payloads.js.map +1 -1
  420. package/dist/modules/workspace/repository.d.ts +2 -0
  421. package/dist/modules/workspace/repository.d.ts.map +1 -1
  422. package/dist/modules/workspace/repository.js +7 -0
  423. package/dist/modules/workspace/repository.js.map +1 -1
  424. package/dist/modules/workspace/service.d.ts.map +1 -1
  425. package/dist/modules/workspace/service.js +10 -0
  426. package/dist/modules/workspace/service.js.map +1 -1
  427. package/dist/modules/workspace/starters.d.ts.map +1 -1
  428. package/dist/modules/workspace/starters.js +5 -0
  429. package/dist/modules/workspace/starters.js.map +1 -1
  430. package/dist/runtime/events.d.ts +1 -1
  431. package/dist/runtime/events.d.ts.map +1 -1
  432. package/dist/runtime/events.js +1 -0
  433. package/dist/runtime/events.js.map +1 -1
  434. package/dist/schema/index.d.ts +3 -0
  435. package/dist/schema/index.d.ts.map +1 -1
  436. package/dist/schema/index.js +3 -0
  437. package/dist/schema/index.js.map +1 -1
  438. package/dist/testing/database.d.ts +5 -1
  439. package/dist/testing/database.d.ts.map +1 -1
  440. package/dist/testing/database.js +81 -10
  441. package/dist/testing/database.js.map +1 -1
  442. package/migrations/0024_third_king_cobra.sql +46 -0
  443. package/migrations/0025_worthless_chimera.sql +3 -0
  444. package/migrations/0026_late_aqueduct.sql +46 -0
  445. package/migrations/0027_brainy_silver_sable.sql +3 -0
  446. package/migrations/0028_freezing_scrambler.sql +19 -0
  447. package/migrations/0029_custom_fields.sql +26 -0
  448. package/migrations/0030_enquiries.sql +79 -0
  449. package/migrations/0031_consent.sql +45 -0
  450. package/migrations/0032_form_field_statement.sql +1 -0
  451. package/migrations/0033_form_field_consent_purpose_ids.sql +5 -0
  452. package/migrations/0034_drop_form_field_consent_purpose_id.sql +1 -0
  453. package/migrations/0035_form_field_consent_purpose_labels.sql +1 -0
  454. package/migrations/0036_form_field_notice_type.sql +2 -0
  455. package/migrations/meta/0024_snapshot.json +5516 -0
  456. package/migrations/meta/0025_snapshot.json +5336 -0
  457. package/migrations/meta/0026_snapshot.json +5710 -0
  458. package/migrations/meta/0027_snapshot.json +5716 -0
  459. package/migrations/meta/0028_snapshot.json +5740 -0
  460. package/migrations/meta/0029_snapshot.json +5935 -0
  461. package/migrations/meta/0030_snapshot.json +6245 -0
  462. package/migrations/meta/0031_snapshot.json +6572 -0
  463. package/migrations/meta/0032_snapshot.json +6578 -0
  464. package/migrations/meta/0033_snapshot.json +6572 -0
  465. package/migrations/meta/0034_snapshot.json +6566 -0
  466. package/migrations/meta/0035_snapshot.json +6573 -0
  467. package/migrations/meta/0036_snapshot.json +6573 -0
  468. package/migrations/meta/_journal.json +91 -0
  469. package/package.json +2 -2
  470. package/src/lib/ids.ts +11 -0
  471. package/src/modules/activities/repository.ts +22 -23
  472. package/src/modules/activities/wording.ts +18 -0
  473. package/src/modules/agent-tasks/catalog.ts +63 -0
  474. package/src/modules/agent-tasks/resolve.ts +64 -24
  475. package/src/modules/attachedRecords.ts +29 -2
  476. package/src/modules/companies/index.ts +3 -1
  477. package/src/modules/companies/routes.ts +7 -0
  478. package/src/modules/companies/schema.ts +7 -1
  479. package/src/modules/companies/service.ts +48 -13
  480. package/src/modules/consent-purposes/capabilities.ts +12 -0
  481. package/src/modules/consent-purposes/events.ts +38 -0
  482. package/src/modules/consent-purposes/index.ts +48 -0
  483. package/src/modules/consent-purposes/repository.ts +163 -0
  484. package/src/modules/consent-purposes/routes.ts +122 -0
  485. package/src/modules/consent-purposes/schema.ts +46 -0
  486. package/src/modules/consent-purposes/service.ts +423 -0
  487. package/src/modules/consent-purposes/starters.ts +32 -0
  488. package/src/modules/consent-purposes/tools.ts +44 -0
  489. package/src/modules/core.ts +10 -0
  490. package/src/modules/custom-fields/capabilities.ts +17 -0
  491. package/src/modules/custom-fields/events.ts +51 -0
  492. package/src/modules/custom-fields/index.ts +61 -0
  493. package/src/modules/custom-fields/repository.ts +225 -0
  494. package/src/modules/custom-fields/routes.ts +155 -0
  495. package/src/modules/custom-fields/schema.ts +61 -0
  496. package/src/modules/custom-fields/service.ts +439 -0
  497. package/src/modules/custom-fields/tools.ts +53 -0
  498. package/src/modules/custom-fields/values.ts +352 -0
  499. package/src/modules/custom-fields/wire.ts +32 -0
  500. package/src/modules/dashboard/repository.ts +4 -3
  501. package/src/modules/deals/index.ts +5 -2
  502. package/src/modules/deals/repository.ts +6 -106
  503. package/src/modules/deals/routes.ts +7 -0
  504. package/src/modules/deals/schema.ts +7 -15
  505. package/src/modules/deals/service.ts +92 -23
  506. package/src/modules/decisions/repository.ts +2 -0
  507. package/src/modules/enquiries/events.ts +45 -0
  508. package/src/modules/enquiries/index.ts +50 -0
  509. package/src/modules/enquiries/repository.ts +164 -0
  510. package/src/modules/enquiries/routes.ts +172 -0
  511. package/src/modules/enquiries/schema.ts +59 -0
  512. package/src/modules/enquiries/service.ts +644 -0
  513. package/src/modules/enquiries/tools.ts +66 -0
  514. package/src/modules/eventCatalogs.ts +3 -0
  515. package/src/modules/forms/embed.ts +391 -44
  516. package/src/modules/forms/events.ts +30 -2
  517. package/src/modules/forms/fields.ts +102 -2
  518. package/src/modules/forms/index.ts +12 -1
  519. package/src/modules/forms/mapping.ts +183 -6
  520. package/src/modules/forms/publicRoutes.ts +43 -1
  521. package/src/modules/forms/repository.ts +162 -1
  522. package/src/modules/forms/routes.ts +212 -2
  523. package/src/modules/forms/schema.ts +166 -4
  524. package/src/modules/forms/service.ts +565 -41
  525. package/src/modules/forms/submission.ts +718 -44
  526. package/src/modules/import-export/drafts.ts +20 -1
  527. package/src/modules/import-export/exportRows.ts +21 -5
  528. package/src/modules/import-export/plan.ts +47 -2
  529. package/src/modules/import-export/presets.ts +10 -0
  530. package/src/modules/import-export/repository.ts +73 -8
  531. package/src/modules/import-export/routes.ts +4 -0
  532. package/src/modules/import-export/schema.ts +11 -0
  533. package/src/modules/import-export/service.ts +28 -2
  534. package/src/modules/import-export/streams.ts +3 -1
  535. package/src/modules/import-export/tools.ts +10 -0
  536. package/src/modules/import-export/validation.ts +28 -0
  537. package/src/modules/import-export/writes.ts +70 -5
  538. package/src/modules/lists/repository.ts +30 -0
  539. package/src/modules/lists/routes.ts +8 -0
  540. package/src/modules/lists/schema.ts +10 -0
  541. package/src/modules/lists/service.ts +110 -9
  542. package/src/modules/mcp/index.ts +5 -0
  543. package/src/modules/opportunities/index.ts +3 -1
  544. package/src/modules/opportunities/repository.ts +11 -0
  545. package/src/modules/opportunities/routes.ts +13 -0
  546. package/src/modules/opportunities/schema.ts +7 -1
  547. package/src/modules/opportunities/service.ts +188 -22
  548. package/src/modules/opportunities/tools.ts +2 -0
  549. package/src/modules/partnerships/index.ts +3 -1
  550. package/src/modules/partnerships/repository.ts +6 -117
  551. package/src/modules/partnerships/routes.ts +7 -0
  552. package/src/modules/partnerships/schema.ts +7 -14
  553. package/src/modules/partnerships/service.ts +93 -22
  554. package/src/modules/people/consentHydration.ts +167 -0
  555. package/src/modules/people/index.ts +3 -1
  556. package/src/modules/people/personConsentWrites.ts +177 -0
  557. package/src/modules/people/repository.ts +5 -0
  558. package/src/modules/people/routes.ts +127 -18
  559. package/src/modules/people/schema.ts +109 -3
  560. package/src/modules/people/service.ts +186 -40
  561. package/src/modules/people/tools.ts +5 -1
  562. package/src/modules/personLinks.ts +278 -0
  563. package/src/modules/raises/index.ts +3 -1
  564. package/src/modules/raises/repository.ts +6 -107
  565. package/src/modules/raises/routes.ts +7 -0
  566. package/src/modules/raises/schema.ts +7 -14
  567. package/src/modules/raises/service.ts +91 -20
  568. package/src/modules/recordTargets.ts +2 -0
  569. package/src/modules/references.ts +43 -4
  570. package/src/modules/sample-data/fixture.ts +63 -0
  571. package/src/modules/sample-data/index.ts +1 -0
  572. package/src/modules/sample-data/routes.ts +1 -0
  573. package/src/modules/sample-data/service.ts +97 -8
  574. package/src/modules/search/index.ts +2 -1
  575. package/src/modules/search/repository.ts +33 -1
  576. package/src/modules/search/service.ts +7 -5
  577. package/src/modules/stagedRecords.ts +18 -3
  578. package/src/modules/webhooks/payloads.ts +20 -2
  579. package/src/modules/workspace/repository.ts +12 -0
  580. package/src/modules/workspace/service.ts +14 -0
  581. package/src/modules/workspace/starters.ts +5 -0
  582. package/src/runtime/events.ts +1 -0
  583. package/src/schema/index.ts +3 -0
  584. package/src/testing/database.ts +97 -11
@@ -34,6 +34,14 @@ export interface FixtureCompany {
34
34
  export interface FixturePerson {
35
35
  readonly key: string
36
36
  readonly name: string
37
+ /**
38
+ * Filled for every sample person so the sample workspace shows the parts
39
+ * carrying real values rather than a column of dashes. `salutation` and
40
+ * `suffix` are left out: neither is on anybody here, and inventing one for the
41
+ * sake of the demo would put a title on a person who does not use it.
42
+ */
43
+ readonly firstName: string
44
+ readonly lastName: string
37
45
  readonly email: string | null
38
46
  readonly location: string | null
39
47
  readonly preferredChannel: PreferredChannel
@@ -91,6 +99,19 @@ export interface FixtureOpportunity {
91
99
  readonly tags: readonly string[]
92
100
  }
93
101
 
102
+ export interface FixtureEnquiry {
103
+ readonly key: string
104
+ readonly name: string
105
+ /** Free text ("Website", "Email", "Referral"). Empty means unclassified. */
106
+ readonly source: string
107
+ readonly stageSlug: string
108
+ /** Nullable: an enquiry may arrive before a company is on file. */
109
+ readonly companyKey: string | null
110
+ readonly summary: string
111
+ readonly tags: readonly string[]
112
+ readonly peopleKeys: readonly string[]
113
+ }
114
+
94
115
  export interface FixtureRaise {
95
116
  readonly key: string
96
117
  readonly name: string
@@ -145,6 +166,7 @@ export interface Fixture {
145
166
  readonly opportunities: readonly FixtureOpportunity[]
146
167
  readonly raises: readonly FixtureRaise[]
147
168
  readonly partnerships: readonly FixturePartnership[]
169
+ readonly enquiries: readonly FixtureEnquiry[]
148
170
  readonly roles: readonly FixtureRole[]
149
171
  readonly candidates: readonly FixtureCandidate[]
150
172
  }
@@ -269,6 +291,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
269
291
  {
270
292
  key: 'ada',
271
293
  name: 'Ada Lovelace',
294
+ firstName: 'Ada',
295
+ lastName: 'Lovelace',
272
296
  email: 'ada@northwind.dev',
273
297
  location: 'Melbourne, AU',
274
298
  preferredChannel: 'email',
@@ -280,6 +304,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
280
304
  {
281
305
  key: 'grace',
282
306
  name: 'Grace Hopper',
307
+ firstName: 'Grace',
308
+ lastName: 'Hopper',
283
309
  email: 'grace@northwind.dev',
284
310
  location: 'Melbourne, AU',
285
311
  preferredChannel: 'email',
@@ -291,6 +317,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
291
317
  {
292
318
  key: 'tom',
293
319
  name: 'Tom Anderson',
320
+ firstName: 'Tom',
321
+ lastName: 'Anderson',
294
322
  email: 'tom@globex.example',
295
323
  location: 'Sydney, AU',
296
324
  preferredChannel: 'call',
@@ -302,6 +330,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
302
330
  {
303
331
  key: 'peter',
304
332
  name: 'Peter Gibbons',
333
+ firstName: 'Peter',
334
+ lastName: 'Gibbons',
305
335
  email: 'peter@initech.example',
306
336
  location: 'Brisbane, AU',
307
337
  preferredChannel: 'email',
@@ -313,6 +343,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
313
343
  {
314
344
  key: 'gavin',
315
345
  name: 'Gavin Belson',
346
+ firstName: 'Gavin',
347
+ lastName: 'Belson',
316
348
  email: 'gavin@hooli.example',
317
349
  location: 'Perth, AU',
318
350
  preferredChannel: 'linkedin',
@@ -324,6 +356,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
324
356
  {
325
357
  key: 'roelof',
326
358
  name: 'Roelof Nkosi',
359
+ firstName: 'Roelof',
360
+ lastName: 'Nkosi',
327
361
  email: 'roelof@southerncross.example',
328
362
  location: 'Sydney, AU',
329
363
  preferredChannel: 'email',
@@ -335,6 +369,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
335
369
  {
336
370
  key: 'mei',
337
371
  name: 'Mei Zhang',
372
+ firstName: 'Mei',
373
+ lastName: 'Zhang',
338
374
  email: 'mei@sandbox.example',
339
375
  location: 'Melbourne, AU',
340
376
  preferredChannel: 'email',
@@ -346,6 +382,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
346
382
  {
347
383
  key: 'charlotte',
348
384
  name: 'Charlotte Rivera',
385
+ firstName: 'Charlotte',
386
+ lastName: 'Rivera',
349
387
  email: 'charlotte@example.com',
350
388
  location: 'Melbourne, AU',
351
389
  preferredChannel: 'email',
@@ -357,6 +395,8 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
357
395
  {
358
396
  key: 'omar',
359
397
  name: 'Omar Haddad',
398
+ firstName: 'Omar',
399
+ lastName: 'Haddad',
360
400
  email: 'omar@example.com',
361
401
  location: 'Sydney, AU',
362
402
  preferredChannel: 'email',
@@ -563,6 +603,29 @@ export const SAMPLE_DATA_FIXTURE: Fixture = {
563
603
  },
564
604
  ],
565
605
 
606
+ enquiries: [
607
+ {
608
+ key: 'website-demo-request',
609
+ name: 'Demo request from northwind.dev',
610
+ source: 'Website',
611
+ stageSlug: 'in_progress',
612
+ companyKey: 'northwind',
613
+ summary: 'Team of six looking to trial the pipeline module this quarter.',
614
+ tags: ['inbound'],
615
+ peopleKeys: ['ada'],
616
+ },
617
+ {
618
+ key: 'referral-globex',
619
+ name: 'Introduction from a mutual contact',
620
+ source: 'Referral',
621
+ stageSlug: 'new',
622
+ companyKey: 'globex',
623
+ summary: 'Warm intro from a former colleague. Wants a 20-minute walkthrough.',
624
+ tags: ['inbound', 'referral'],
625
+ peopleKeys: [],
626
+ },
627
+ ],
628
+
566
629
  roles: [
567
630
  { key: 'senior-engineer', title: 'Senior Software Engineer', status: 'open' },
568
631
  { key: 'product-designer', title: 'Product Designer', status: 'open' },
@@ -25,6 +25,7 @@ export function createSampleDataModule(): KelpieModule {
25
25
  'opportunities',
26
26
  'raises',
27
27
  'partnerships',
28
+ 'enquiries',
28
29
  'hiring',
29
30
  ],
30
31
 
@@ -27,6 +27,7 @@ export function sampleDataResponse(counts: SampleDataCounts): Record<string, unk
27
27
  opportunities: counts.opportunities,
28
28
  raises: counts.raises,
29
29
  partnerships: counts.partnerships,
30
+ enquiries: counts.enquiries,
30
31
  roles: counts.roles,
31
32
  candidates: counts.candidates,
32
33
  }
@@ -9,16 +9,17 @@ import type { Actor } from '../auth/actor.ts'
9
9
  import { requireWorkspaceId } from '../auth/actor.ts'
10
10
  import * as authRepository from '../auth/repository.ts'
11
11
  import { companies } from '../companies/schema.ts'
12
- import { dealPeople, deals } from '../deals/schema.ts'
12
+ import { deals } from '../deals/schema.ts'
13
13
  import { candidates, roles } from '../hiring/schema.ts'
14
14
  import { notes } from '../notes/schema.ts'
15
+ import { enquiries } from '../enquiries/schema.ts'
15
16
  import { opportunities } from '../opportunities/schema.ts'
16
- import { partnershipPeople, partnerships } from '../partnerships/schema.ts'
17
- import { people } from '../people/schema.ts'
17
+ import { partnerships } from '../partnerships/schema.ts'
18
+ import { people, personLinks } from '../people/schema.ts'
18
19
  import { pipelineStages } from '../pipelines/schema.ts'
19
20
  import { planItems } from '../plans/schema.ts'
20
21
  import { positions } from '../positions/schema.ts'
21
- import { raisePeople, raises } from '../raises/schema.ts'
22
+ import { raises } from '../raises/schema.ts'
22
23
  import { parseMemberRole, roleAllows } from '../workspace/roles.ts'
23
24
  import { SAMPLE_DATA_FIXTURE } from './fixture.ts'
24
25
  import type { Fixture } from './fixture.ts'
@@ -51,6 +52,7 @@ export interface SampleDataCounts {
51
52
  readonly opportunities: number
52
53
  readonly raises: number
53
54
  readonly partnerships: number
55
+ readonly enquiries: number
54
56
  readonly roles: number
55
57
  readonly candidates: number
56
58
  }
@@ -137,7 +139,13 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
137
139
  .where(
138
140
  and(
139
141
  eq(pipelineStages.workspaceId, workspaceId),
140
- inArray(pipelineStages.kind, ['deal', 'opportunity', 'raise', 'partnership']),
142
+ inArray(pipelineStages.kind, [
143
+ 'deal',
144
+ 'opportunity',
145
+ 'raise',
146
+ 'partnership',
147
+ 'enquiry',
148
+ ]),
141
149
  ),
142
150
  )
143
151
 
@@ -154,6 +162,7 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
154
162
  const opportunityIds = new Map<string, string>()
155
163
  const raiseIds = new Map<string, string>()
156
164
  const partnershipIds = new Map<string, string>()
165
+ const enquiryIds = new Map<string, string>()
157
166
  const roleIds = new Map<string, string>()
158
167
  const candidateIds = new Map<string, string>()
159
168
 
@@ -190,6 +199,8 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
190
199
  id,
191
200
  workspaceId,
192
201
  name: record.name,
202
+ firstName: record.firstName,
203
+ lastName: record.lastName,
193
204
  email: record.email,
194
205
  location: record.location,
195
206
  preferredChannel: record.preferredChannel,
@@ -269,7 +280,13 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
269
280
  )
270
281
  }
271
282
 
272
- await tx.insert(dealPeople).values({ dealId: id, personId })
283
+ await tx.insert(personLinks).values({
284
+ id: dependencies.createId('personLink'),
285
+ workspaceId,
286
+ personId,
287
+ targetType: 'deal',
288
+ targetId: id,
289
+ })
273
290
  }
274
291
  }
275
292
 
@@ -355,7 +372,13 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
355
372
  )
356
373
  }
357
374
 
358
- await tx.insert(raisePeople).values({ raiseId: id, personId })
375
+ await tx.insert(personLinks).values({
376
+ id: dependencies.createId('personLink'),
377
+ workspaceId,
378
+ personId,
379
+ targetType: 'raise',
380
+ targetId: id,
381
+ })
359
382
  }
360
383
  }
361
384
 
@@ -405,7 +428,68 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
405
428
  )
406
429
  }
407
430
 
408
- await tx.insert(partnershipPeople).values({ partnershipId: id, personId })
431
+ await tx.insert(personLinks).values({
432
+ id: dependencies.createId('personLink'),
433
+ workspaceId,
434
+ personId,
435
+ targetType: 'partnership',
436
+ targetId: id,
437
+ })
438
+ }
439
+ }
440
+
441
+ for (const record of fixture.enquiries) {
442
+ const stageId = stageIdByKindAndSlug.get(
443
+ stageLookupKey('enquiry', record.stageSlug),
444
+ )
445
+
446
+ if (stageId === undefined) {
447
+ throw new Error(
448
+ `Sample enquiry "${record.name}" names stage "${record.stageSlug}", which this workspace's enquiry pipeline does not carry`,
449
+ )
450
+ }
451
+
452
+ const companyId =
453
+ record.companyKey === null ? null : (companyIds.get(record.companyKey) ?? undefined)
454
+
455
+ if (companyId === undefined) {
456
+ throw new Error(
457
+ `Sample enquiry "${record.name}" names unknown company "${String(record.companyKey)}"`,
458
+ )
459
+ }
460
+
461
+ const id = dependencies.createId('enquiry')
462
+ enquiryIds.set(record.key, id)
463
+
464
+ await tx.insert(enquiries).values({
465
+ id,
466
+ workspaceId,
467
+ name: record.name,
468
+ source: record.source,
469
+ stageId,
470
+ companyId,
471
+ summary: record.summary,
472
+ tags: [...record.tags],
473
+ createdAt: now,
474
+ updatedAt: now,
475
+ })
476
+
477
+ for (const personKey of record.peopleKeys) {
478
+ const personId = personIds.get(personKey)
479
+
480
+ if (personId === undefined) {
481
+ throw new Error(
482
+ `Sample enquiry "${record.name}" names unknown person "${personKey}"`,
483
+ )
484
+ }
485
+
486
+ await tx.insert(personLinks).values({
487
+ id: dependencies.createId('personLink'),
488
+ workspaceId,
489
+ personId,
490
+ targetType: 'enquiry',
491
+ targetId: id,
492
+ })
409
493
  }
410
494
  }
411
495
 
@@ -498,6 +582,7 @@ export function createSampleDataService(dependencies: SampleDataDependencies): S
498
582
  opportunityIds,
499
583
  raiseIds,
500
584
  partnershipIds,
585
+ enquiryIds,
501
586
  candidateIds,
502
587
  })
503
588
 
@@ -534,6 +619,7 @@ interface KeyMaps {
534
619
  readonly opportunityIds: ReadonlyMap<string, string>
535
620
  readonly raiseIds: ReadonlyMap<string, string>
536
621
  readonly partnershipIds: ReadonlyMap<string, string>
622
+ readonly enquiryIds: ReadonlyMap<string, string>
537
623
  readonly candidateIds: ReadonlyMap<string, string>
538
624
  }
539
625
 
@@ -555,6 +641,8 @@ function resolveNoteTargetId(
555
641
  return maps.raiseIds.get(targetKey)
556
642
  case 'partnership':
557
643
  return maps.partnershipIds.get(targetKey)
644
+ case 'enquiry':
645
+ return maps.enquiryIds.get(targetKey)
558
646
  case 'candidate':
559
647
  return maps.candidateIds.get(targetKey)
560
648
  default:
@@ -584,6 +672,7 @@ function countsFor(fixture: Fixture): SampleDataCounts {
584
672
  opportunities: fixture.opportunities.length,
585
673
  raises: fixture.raises.length,
586
674
  partnerships: fixture.partnerships.length,
675
+ enquiries: fixture.enquiries.length,
587
676
  roles: fixture.roles.length,
588
677
  candidates: fixture.candidates.length,
589
678
  }
@@ -4,7 +4,7 @@ import { createSearchService } from './service.ts'
4
4
  import { registerSearchTools } from './tools.ts'
5
5
 
6
6
  /**
7
- * One box across nine collections.
7
+ * One box across ten collections.
8
8
  *
9
9
  * It contributes no tables and calls no `context.schema`. The `search_vector`
10
10
  * column each searchable table carries belongs to that table's own module, which
@@ -30,6 +30,7 @@ export function createSearchModule(): KelpieModule {
30
30
  'positions',
31
31
  'companies',
32
32
  'deals',
33
+ 'enquiries',
33
34
  'opportunities',
34
35
  'partnerships',
35
36
  'raises',
@@ -8,6 +8,7 @@ import type { Queryable } from '../../runtime/transaction.ts'
8
8
  import { companies } from '../companies/schema.ts'
9
9
  import { deals } from '../deals/schema.ts'
10
10
  import { decisions } from '../decisions/schema.ts'
11
+ import { enquiries } from '../enquiries/schema.ts'
11
12
  import { handbookPages } from '../handbook/schema.ts'
12
13
  import { roles } from '../hiring/schema.ts'
13
14
  import { opportunities } from '../opportunities/schema.ts'
@@ -210,7 +211,7 @@ function byPlanItem(
210
211
  db: Queryable,
211
212
  workspaceId: string,
212
213
  query: SQL,
213
- targetType: 'deal' | 'opportunity' | 'raise',
214
+ targetType: 'deal' | 'opportunity' | 'raise' | 'enquiry',
214
215
  ) {
215
216
  return db
216
217
  .select({ id: planItems.targetId, rank: relatedRank(planItems.searchVector, query).as('rank') })
@@ -224,6 +225,37 @@ function byPlanItem(
224
225
  )
225
226
  }
226
227
 
228
+ export async function searchEnquiries(
229
+ db: Queryable,
230
+ workspaceId: string,
231
+ query: SQL,
232
+ limit: number,
233
+ ): Promise<CollectionHits> {
234
+ const own = db
235
+ .select({ id: enquiries.id, rank: rank(enquiries.searchVector, query).as('rank') })
236
+ .from(enquiries)
237
+ .where(and(eq(enquiries.workspaceId, workspaceId), matches(enquiries.searchVector, query)))
238
+
239
+ const hits = unionAll(own, byPlanItem(db, workspaceId, query, 'enquiry')).as('hits')
240
+
241
+ const rows = await db
242
+ .select({
243
+ id: enquiries.id,
244
+ title: enquiries.name,
245
+ subtitle: pipelineStages.label,
246
+ snippetSource: enquiries.summary,
247
+ total,
248
+ })
249
+ .from(hits)
250
+ .innerJoin(enquiries, eq(enquiries.id, hits.id))
251
+ .innerJoin(pipelineStages, eq(pipelineStages.id, enquiries.stageId))
252
+ .groupBy(enquiries.id, pipelineStages.label)
253
+ .orderBy(desc(bestRank(hits.rank)), asc(enquiries.id))
254
+ .limit(limit)
255
+
256
+ return collect('enquiry', rows)
257
+ }
258
+
227
259
  export async function searchDeals(
228
260
  db: Queryable,
229
261
  workspaceId: string,
@@ -10,6 +10,7 @@ import {
10
10
  searchCompanies,
11
11
  searchDeals,
12
12
  searchDecisions,
13
+ searchEnquiries,
13
14
  searchHandbookPages,
14
15
  searchOpportunities,
15
16
  searchPartnerships,
@@ -20,7 +21,7 @@ import {
20
21
  import type { CollectionHits } from './repository.ts'
21
22
 
22
23
  /**
23
- * One box across nine collections, ranked per collection rather than merged.
24
+ * One box across ten collections, ranked per collection rather than merged.
24
25
  *
25
26
  * A single merged ranking would need `ts_rank` values from different tables to
26
27
  * mean the same thing, and they do not: a handbook page is a thousand words and a
@@ -49,7 +50,7 @@ export interface SearchResults {
49
50
  readonly limit: number
50
51
  /** Across every group. The number a "12 results" heading is built from. */
51
52
  readonly total: number
52
- /** Always all nine, in `SEARCH_COLLECTIONS` order, empty ones included. */
53
+ /** Always all ten, in `SEARCH_COLLECTIONS` order, empty ones included. */
53
54
  readonly groups: readonly SearchGroup[]
54
55
  }
55
56
 
@@ -71,7 +72,7 @@ export interface SearchServiceDependencies {
71
72
  /**
72
73
  * How many rows a group carries when the caller does not say.
73
74
  *
74
- * Small on purpose: nine groups on one page, and a reader scanning them wants the
75
+ * Small on purpose: ten groups on one page, and a reader scanning them wants the
75
76
  * best few of each rather than a page of People they have to scroll past to reach
76
77
  * the handbook. The exact total sits beside each group regardless.
77
78
  */
@@ -89,6 +90,7 @@ const SEARCHES: Readonly<Record<SearchCollection, CollectionSearch>> = {
89
90
  person: searchPeople,
90
91
  role: searchRoles,
91
92
  company: searchCompanies,
93
+ enquiry: searchEnquiries,
92
94
  deal: searchDeals,
93
95
  opportunity: searchOpportunities,
94
96
  raise: searchRaises,
@@ -134,8 +136,8 @@ export function createSearchService(dependencies: SearchServiceDependencies): Se
134
136
  const query = compileQuery(tsQuery)
135
137
  const words = searchWords(request.term)
136
138
 
137
- // Nine independent reads with nothing to share but the compiled query. Run
138
- // in sequence they would be nine round trips deep rather than wide.
139
+ // Ten independent reads with nothing to share but the compiled query. Run
140
+ // in sequence they would be ten round trips deep rather than wide.
139
141
  const groups = await Promise.all(
140
142
  wanted.map(async (collection) =>
141
143
  toGroup(await SEARCHES[collection](dependencies.db, workspaceId, query, limit), words),
@@ -2,20 +2,21 @@ import { and, eq } from 'drizzle-orm'
2
2
 
3
3
  import type { Queryable } from '../runtime/transaction.ts'
4
4
  import { deals } from './deals/schema.ts'
5
+ import { enquiries } from './enquiries/schema.ts'
5
6
  import { opportunities } from './opportunities/schema.ts'
6
7
  import { partnerships } from './partnerships/schema.ts'
7
8
  import type { PipelineKind } from './pipelines/schema.ts'
8
9
  import { raises } from './raises/schema.ts'
9
10
 
10
11
  /**
11
- * The four tables whose rows sit in a pipeline stage, for the one operation that
12
+ * The five tables whose rows sit in a pipeline stage, for the one operation that
12
13
  * spans them all: removing a stage moves whatever still references it.
13
14
  *
14
- * Touching four modules' tables here rather than composing four services follows
15
+ * Touching five modules' tables here rather than composing five services follows
15
16
  * `attachedRecords.ts`: the alternative is a stage removal that imports every
16
17
  * staged service to ask each for a bulk move it exists for nowhere else.
17
18
  *
18
- * Four written-out branches rather than a table-of-tables, because Drizzle's
19
+ * Five written-out branches rather than a table-of-tables, because Drizzle's
19
20
  * `update().set()` needs the concrete table type to check the column names.
20
21
  */
21
22
 
@@ -87,5 +88,19 @@ export async function reassignStagedRecords(
87
88
 
88
89
  return moved.map((row) => row.id)
89
90
  }
91
+ case 'enquiry': {
92
+ const moved = await db
93
+ .update(enquiries)
94
+ .set(changes)
95
+ .where(
96
+ and(
97
+ eq(enquiries.workspaceId, move.workspaceId),
98
+ eq(enquiries.stageId, move.fromStageId),
99
+ ),
100
+ )
101
+ .returning({ id: enquiries.id })
102
+
103
+ return moved.map((row) => row.id)
104
+ }
90
105
  }
91
106
  }
@@ -41,6 +41,10 @@ interface RecordUpdatedData {
41
41
  interface FormSubmittedData {
42
42
  readonly formId?: string
43
43
  readonly submissionId?: string
44
+ readonly opportunityId?: string | null
45
+ readonly partnershipId?: string | null
46
+ readonly enquiryId?: string | null
47
+ readonly actions?: readonly { readonly action: string; readonly status: string }[]
44
48
  }
45
49
 
46
50
  /**
@@ -90,7 +94,11 @@ export function translateEnvelopeEvent(
90
94
 
91
95
  if (suffix === 'submitted') {
92
96
  // Form submission is the only `.submitted` wire event today. The forms
93
- // module emits its envelope with `formId` and `submissionId` in `data`.
97
+ // module emits its envelope with `formId` and `submissionId` in `data`,
98
+ // plus (per forms.md §Webhooks) the opportunity/partnership ids the
99
+ // post-submit runner created and one status per configured action. The
100
+ // per-action `detail` string is deliberately omitted — the authenticated
101
+ // Submissions read carries it in full, the webhook only says what ran.
94
102
  const data = event.data as FormSubmittedData
95
103
  if (data.formId === undefined || data.submissionId === undefined) {
96
104
  return undefined
@@ -99,7 +107,17 @@ export function translateEnvelopeEvent(
99
107
  return {
100
108
  workspaceId: event.workspaceId,
101
109
  event: 'form.submitted',
102
- data: { form_id: data.formId, submission_id: data.submissionId },
110
+ data: {
111
+ form_id: data.formId,
112
+ submission_id: data.submissionId,
113
+ opportunity_id: data.opportunityId ?? null,
114
+ partnership_id: data.partnershipId ?? null,
115
+ enquiry_id: data.enquiryId ?? null,
116
+ actions:
117
+ data.actions === undefined
118
+ ? []
119
+ : data.actions.map((entry) => ({ action: entry.action, status: entry.status })),
120
+ },
103
121
  }
104
122
  }
105
123
 
@@ -3,6 +3,7 @@ import { and, asc, count, eq, gt } from 'drizzle-orm'
3
3
  import type { Database } from '../../lib/database.ts'
4
4
  import type { Transaction } from '../../runtime/transaction.ts'
5
5
  import { users } from '../auth/schema.ts'
6
+ import { consentPurposes } from '../consent-purposes/schema.ts'
6
7
  import { deals } from '../deals/schema.ts'
7
8
  import { decisions } from '../decisions/schema.ts'
8
9
  import { handbookPages } from '../handbook/schema.ts'
@@ -387,6 +388,17 @@ export async function insertPipelineStages(
387
388
  await db.insert(pipelineStages).values([...values])
388
389
  }
389
390
 
391
+ export async function insertConsentPurposes(
392
+ db: Queryable,
393
+ values: readonly (typeof consentPurposes.$inferInsert)[],
394
+ ): Promise<void> {
395
+ if (values.length === 0) {
396
+ return
397
+ }
398
+
399
+ await db.insert(consentPurposes).values([...values])
400
+ }
401
+
390
402
  export type ModuleSettingRecord = typeof workspaceModuleSettings.$inferSelect
391
403
 
392
404
  export async function listModuleSettings(db: Queryable, workspaceId: string): Promise<ModuleSettingRecord[]> {
@@ -15,6 +15,7 @@ import type { Actor, SessionActor } from '../auth/actor.ts'
15
15
  import './events.ts'
16
16
  import * as authRepository from '../auth/repository.ts'
17
17
  import { SEATS_LIMIT } from './capabilities.ts'
18
+ import { STARTER_CONSENT_PURPOSES } from '../consent-purposes/starters.ts'
18
19
  import * as repository from './repository.ts'
19
20
  import { parseInvitableRole, parseMemberRole, roleAllows } from './roles.ts'
20
21
  import type { InvitableRole, InviteStatus, MemberRole } from './roles.ts'
@@ -471,6 +472,19 @@ export function createWorkspaceService(dependencies: WorkspaceDependencies): Wor
471
472
  ),
472
473
  )
473
474
 
475
+ await repository.insertConsentPurposes(
476
+ tx,
477
+ STARTER_CONSENT_PURPOSES.map((purpose, index) => ({
478
+ id: dependencies.createId('consentPurpose'),
479
+ workspaceId,
480
+ slug: purpose.slug,
481
+ label: purpose.label,
482
+ description: purpose.description,
483
+ defaultStatus: purpose.defaultStatus,
484
+ sortOrder: index,
485
+ })),
486
+ )
487
+
474
488
  // The session that created the workspace should land in it.
475
489
  await authRepository.setActiveWorkspace(tx, actor.sessionId, workspaceId)
476
490
 
@@ -37,6 +37,11 @@ export interface StarterStage {
37
37
 
38
38
  /** `open: false` hides a stage from the Open scope filter; it is not a delete. */
39
39
  export const STARTER_PIPELINE_STAGES: Readonly<Record<string, readonly StarterStage[]>> = {
40
+ enquiry: [
41
+ { slug: 'new', label: 'New', open: true },
42
+ { slug: 'in_progress', label: 'In progress', open: true },
43
+ { slug: 'closed', label: 'Closed', open: false },
44
+ ],
40
45
  deal: [
41
46
  { slug: 'qualifying', label: 'Qualifying', open: true },
42
47
  { slug: 'proposal', label: 'Proposal', open: true },
@@ -29,6 +29,7 @@ export const RECORD_OBJECT_TYPES = [
29
29
  'company',
30
30
  'position',
31
31
  'deal',
32
+ 'enquiry',
32
33
  'opportunity',
33
34
  'partnership',
34
35
  'raise',
@@ -9,11 +9,13 @@
9
9
  export * from '../modules/auth/schema.ts'
10
10
  export * from '../modules/workspace/schema.ts'
11
11
  export * from '../modules/api-keys/schema.ts'
12
+ export * from '../modules/consent-purposes/schema.ts'
12
13
  export * from '../modules/people/schema.ts'
13
14
  export * from '../modules/companies/schema.ts'
14
15
  export * from '../modules/positions/schema.ts'
15
16
  export * from '../modules/pipelines/schema.ts'
16
17
  export * from '../modules/deals/schema.ts'
18
+ export * from '../modules/enquiries/schema.ts'
17
19
  export * from '../modules/opportunities/schema.ts'
18
20
  export * from '../modules/partnerships/schema.ts'
19
21
  export * from '../modules/raises/schema.ts'
@@ -23,6 +25,7 @@ export * from '../modules/decisions/schema.ts'
23
25
  export * from '../modules/notes/schema.ts'
24
26
  export * from '../modules/lists/schema.ts'
25
27
  export * from '../modules/activities/schema.ts'
28
+ export * from '../modules/custom-fields/schema.ts'
26
29
  export * from '../modules/handbook/schema.ts'
27
30
  export * from '../modules/forms/schema.ts'
28
31
  export * from '../modules/import-export/schema.ts'