@kelpie/server 0.7.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.
- package/dist/lib/consumerEmailDomains.d.ts +2 -0
- package/dist/lib/consumerEmailDomains.d.ts.map +1 -0
- package/dist/lib/consumerEmailDomains.js +62 -0
- package/dist/lib/consumerEmailDomains.js.map +1 -0
- package/dist/lib/email.d.ts +7 -0
- package/dist/lib/email.d.ts.map +1 -1
- package/dist/lib/email.js.map +1 -1
- package/dist/lib/emailContent.d.ts +33 -0
- package/dist/lib/emailContent.d.ts.map +1 -0
- package/dist/lib/emailContent.js +54 -0
- package/dist/lib/emailContent.js.map +1 -0
- package/dist/lib/emailDomainAutoLink.d.ts +27 -0
- package/dist/lib/emailDomainAutoLink.d.ts.map +1 -0
- package/dist/lib/emailDomainAutoLink.js +119 -0
- package/dist/lib/emailDomainAutoLink.js.map +1 -0
- package/dist/lib/ids.d.ts +13 -0
- package/dist/lib/ids.d.ts.map +1 -1
- package/dist/lib/ids.js +13 -0
- package/dist/lib/ids.js.map +1 -1
- package/dist/modules/activities/repository.d.ts.map +1 -1
- package/dist/modules/activities/repository.js +19 -20
- package/dist/modules/activities/repository.js.map +1 -1
- package/dist/modules/activities/wording.d.ts +12 -0
- package/dist/modules/activities/wording.d.ts.map +1 -1
- package/dist/modules/activities/wording.js +16 -0
- package/dist/modules/activities/wording.js.map +1 -1
- package/dist/modules/agent-tasks/catalog.d.ts.map +1 -1
- package/dist/modules/agent-tasks/catalog.js +62 -0
- package/dist/modules/agent-tasks/catalog.js.map +1 -1
- package/dist/modules/agent-tasks/resolve.d.ts.map +1 -1
- package/dist/modules/agent-tasks/resolve.js +42 -9
- package/dist/modules/agent-tasks/resolve.js.map +1 -1
- package/dist/modules/agent-tasks/routes.d.ts +2 -0
- package/dist/modules/agent-tasks/routes.d.ts.map +1 -1
- package/dist/modules/attachedRecords.d.ts +6 -1
- package/dist/modules/attachedRecords.d.ts.map +1 -1
- package/dist/modules/attachedRecords.js +18 -2
- package/dist/modules/attachedRecords.js.map +1 -1
- package/dist/modules/auth/preferences.d.ts +11 -1
- package/dist/modules/auth/preferences.d.ts.map +1 -1
- package/dist/modules/auth/preferences.js +11 -0
- package/dist/modules/auth/preferences.js.map +1 -1
- package/dist/modules/auth/routes.d.ts.map +1 -1
- package/dist/modules/auth/routes.js +18 -0
- package/dist/modules/auth/routes.js.map +1 -1
- package/dist/modules/auth/schema.d.ts +20 -0
- package/dist/modules/auth/schema.d.ts.map +1 -1
- package/dist/modules/auth/schema.js +11 -1
- package/dist/modules/auth/schema.js.map +1 -1
- package/dist/modules/auth/service.d.ts.map +1 -1
- package/dist/modules/auth/service.js +27 -3
- package/dist/modules/auth/service.js.map +1 -1
- package/dist/modules/companies/index.d.ts.map +1 -1
- package/dist/modules/companies/index.js +3 -1
- package/dist/modules/companies/index.js.map +1 -1
- package/dist/modules/companies/repository.d.ts +2 -0
- package/dist/modules/companies/repository.d.ts.map +1 -1
- package/dist/modules/companies/repository.js +1 -0
- package/dist/modules/companies/repository.js.map +1 -1
- package/dist/modules/companies/routes.d.ts +16 -0
- package/dist/modules/companies/routes.d.ts.map +1 -1
- package/dist/modules/companies/routes.js +18 -0
- package/dist/modules/companies/routes.js.map +1 -1
- package/dist/modules/companies/schema.d.ts +37 -0
- package/dist/modules/companies/schema.d.ts.map +1 -1
- package/dist/modules/companies/schema.js +10 -1
- package/dist/modules/companies/schema.js.map +1 -1
- package/dist/modules/companies/service.d.ts +6 -0
- package/dist/modules/companies/service.d.ts.map +1 -1
- package/dist/modules/companies/service.js +45 -11
- package/dist/modules/companies/service.js.map +1 -1
- package/dist/modules/consent-purposes/capabilities.d.ts +7 -0
- package/dist/modules/consent-purposes/capabilities.d.ts.map +1 -0
- package/dist/modules/consent-purposes/capabilities.js +10 -0
- package/dist/modules/consent-purposes/capabilities.js.map +1 -0
- package/dist/modules/consent-purposes/events.d.ts +38 -0
- package/dist/modules/consent-purposes/events.d.ts.map +1 -0
- package/dist/modules/consent-purposes/events.js +17 -0
- package/dist/modules/consent-purposes/events.js.map +1 -0
- package/dist/modules/consent-purposes/index.d.ts +13 -0
- package/dist/modules/consent-purposes/index.d.ts.map +1 -0
- package/dist/modules/consent-purposes/index.js +41 -0
- package/dist/modules/consent-purposes/index.js.map +1 -0
- package/dist/modules/consent-purposes/repository.d.ts +21 -0
- package/dist/modules/consent-purposes/repository.d.ts.map +1 -0
- package/dist/modules/consent-purposes/repository.js +98 -0
- package/dist/modules/consent-purposes/repository.js.map +1 -0
- package/dist/modules/consent-purposes/routes.d.ts +39 -0
- package/dist/modules/consent-purposes/routes.d.ts.map +1 -0
- package/dist/modules/consent-purposes/routes.js +79 -0
- package/dist/modules/consent-purposes/routes.js.map +1 -0
- package/dist/modules/consent-purposes/schema.d.ts +175 -0
- package/dist/modules/consent-purposes/schema.d.ts.map +1 -0
- package/dist/modules/consent-purposes/schema.js +35 -0
- package/dist/modules/consent-purposes/schema.js.map +1 -0
- package/dist/modules/consent-purposes/service.d.ts +50 -0
- package/dist/modules/consent-purposes/service.d.ts.map +1 -0
- package/dist/modules/consent-purposes/service.js +263 -0
- package/dist/modules/consent-purposes/service.js.map +1 -0
- package/dist/modules/consent-purposes/starters.d.ts +17 -0
- package/dist/modules/consent-purposes/starters.d.ts.map +1 -0
- package/dist/modules/consent-purposes/starters.js +15 -0
- package/dist/modules/consent-purposes/starters.js.map +1 -0
- package/dist/modules/consent-purposes/tools.d.ts +4 -0
- package/dist/modules/consent-purposes/tools.d.ts.map +1 -0
- package/dist/modules/consent-purposes/tools.js +29 -0
- package/dist/modules/consent-purposes/tools.js.map +1 -0
- package/dist/modules/core.d.ts.map +1 -1
- package/dist/modules/core.js +21 -0
- package/dist/modules/core.js.map +1 -1
- package/dist/modules/custom-fields/capabilities.d.ts +12 -0
- package/dist/modules/custom-fields/capabilities.d.ts.map +1 -0
- package/dist/modules/custom-fields/capabilities.js +15 -0
- package/dist/modules/custom-fields/capabilities.js.map +1 -0
- package/dist/modules/custom-fields/events.d.ts +49 -0
- package/dist/modules/custom-fields/events.d.ts.map +1 -0
- package/dist/modules/custom-fields/events.js +25 -0
- package/dist/modules/custom-fields/events.js.map +1 -0
- package/dist/modules/custom-fields/index.d.ts +19 -0
- package/dist/modules/custom-fields/index.d.ts.map +1 -0
- package/dist/modules/custom-fields/index.js +46 -0
- package/dist/modules/custom-fields/index.js.map +1 -0
- package/dist/modules/custom-fields/repository.d.ts +37 -0
- package/dist/modules/custom-fields/repository.d.ts.map +1 -0
- package/dist/modules/custom-fields/repository.js +144 -0
- package/dist/modules/custom-fields/repository.js.map +1 -0
- package/dist/modules/custom-fields/routes.d.ts +44 -0
- package/dist/modules/custom-fields/routes.d.ts.map +1 -0
- package/dist/modules/custom-fields/routes.js +103 -0
- package/dist/modules/custom-fields/routes.js.map +1 -0
- package/dist/modules/custom-fields/schema.d.ts +215 -0
- package/dist/modules/custom-fields/schema.d.ts.map +1 -0
- package/dist/modules/custom-fields/schema.js +43 -0
- package/dist/modules/custom-fields/schema.js.map +1 -0
- package/dist/modules/custom-fields/service.d.ts +57 -0
- package/dist/modules/custom-fields/service.d.ts.map +1 -0
- package/dist/modules/custom-fields/service.js +273 -0
- package/dist/modules/custom-fields/service.js.map +1 -0
- package/dist/modules/custom-fields/tools.d.ts +4 -0
- package/dist/modules/custom-fields/tools.d.ts.map +1 -0
- package/dist/modules/custom-fields/tools.js +38 -0
- package/dist/modules/custom-fields/tools.js.map +1 -0
- package/dist/modules/custom-fields/values.d.ts +49 -0
- package/dist/modules/custom-fields/values.d.ts.map +1 -0
- package/dist/modules/custom-fields/values.js +249 -0
- package/dist/modules/custom-fields/values.js.map +1 -0
- package/dist/modules/custom-fields/wire.d.ts +12 -0
- package/dist/modules/custom-fields/wire.d.ts.map +1 -0
- package/dist/modules/custom-fields/wire.js +30 -0
- package/dist/modules/custom-fields/wire.js.map +1 -0
- package/dist/modules/dashboard/repository.d.ts.map +1 -1
- package/dist/modules/dashboard/repository.js +4 -3
- package/dist/modules/dashboard/repository.js.map +1 -1
- package/dist/modules/deals/index.d.ts +2 -1
- package/dist/modules/deals/index.d.ts.map +1 -1
- package/dist/modules/deals/index.js +5 -2
- package/dist/modules/deals/index.js.map +1 -1
- package/dist/modules/deals/repository.d.ts +0 -16
- package/dist/modules/deals/repository.d.ts.map +1 -1
- package/dist/modules/deals/repository.js +6 -76
- package/dist/modules/deals/repository.js.map +1 -1
- package/dist/modules/deals/routes.d.ts +14 -0
- package/dist/modules/deals/routes.d.ts.map +1 -1
- package/dist/modules/deals/routes.js +7 -0
- package/dist/modules/deals/routes.js.map +1 -1
- package/dist/modules/deals/schema.d.ts +20 -42
- package/dist/modules/deals/schema.d.ts.map +1 -1
- package/dist/modules/deals/schema.js +6 -11
- package/dist/modules/deals/schema.js.map +1 -1
- package/dist/modules/deals/service.d.ts +13 -2
- package/dist/modules/deals/service.d.ts.map +1 -1
- package/dist/modules/deals/service.js +43 -20
- package/dist/modules/deals/service.js.map +1 -1
- package/dist/modules/decisions/repository.d.ts.map +1 -1
- package/dist/modules/decisions/repository.js +2 -0
- package/dist/modules/decisions/repository.js.map +1 -1
- package/dist/modules/decisions/routes.d.ts +1 -0
- package/dist/modules/decisions/routes.d.ts.map +1 -1
- package/dist/modules/email-domain-linker/index.d.ts +12 -0
- package/dist/modules/email-domain-linker/index.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/index.js +34 -0
- package/dist/modules/email-domain-linker/index.js.map +1 -0
- package/dist/modules/email-domain-linker/routes.d.ts +14 -0
- package/dist/modules/email-domain-linker/routes.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/routes.js +15 -0
- package/dist/modules/email-domain-linker/routes.js.map +1 -0
- package/dist/modules/email-domain-linker/service.d.ts +37 -0
- package/dist/modules/email-domain-linker/service.d.ts.map +1 -0
- package/dist/modules/email-domain-linker/service.js +63 -0
- package/dist/modules/email-domain-linker/service.js.map +1 -0
- package/dist/modules/enquiries/events.d.ts +44 -0
- package/dist/modules/enquiries/events.d.ts.map +1 -0
- package/dist/modules/enquiries/events.js +19 -0
- package/dist/modules/enquiries/events.js.map +1 -0
- package/dist/modules/enquiries/index.d.ts +13 -0
- package/dist/modules/enquiries/index.d.ts.map +1 -0
- package/dist/modules/enquiries/index.js +44 -0
- package/dist/modules/enquiries/index.js.map +1 -0
- package/dist/modules/enquiries/repository.d.ts +30 -0
- package/dist/modules/enquiries/repository.d.ts.map +1 -0
- package/dist/modules/enquiries/repository.js +94 -0
- package/dist/modules/enquiries/repository.js.map +1 -0
- package/dist/modules/enquiries/routes.d.ts +52 -0
- package/dist/modules/enquiries/routes.d.ts.map +1 -0
- package/dist/modules/enquiries/routes.js +127 -0
- package/dist/modules/enquiries/routes.js.map +1 -0
- package/dist/modules/enquiries/schema.d.ts +290 -0
- package/dist/modules/enquiries/schema.d.ts.map +1 -0
- package/dist/modules/enquiries/schema.js +52 -0
- package/dist/modules/enquiries/schema.js.map +1 -0
- package/dist/modules/enquiries/service.d.ts +85 -0
- package/dist/modules/enquiries/service.d.ts.map +1 -0
- package/dist/modules/enquiries/service.js +370 -0
- package/dist/modules/enquiries/service.js.map +1 -0
- package/dist/modules/enquiries/tools.d.ts +4 -0
- package/dist/modules/enquiries/tools.d.ts.map +1 -0
- package/dist/modules/enquiries/tools.js +50 -0
- package/dist/modules/enquiries/tools.js.map +1 -0
- package/dist/modules/eventCatalogs.d.ts +4 -0
- package/dist/modules/eventCatalogs.d.ts.map +1 -1
- package/dist/modules/eventCatalogs.js +4 -0
- package/dist/modules/eventCatalogs.js.map +1 -1
- package/dist/modules/forms/embed.d.ts +20 -6
- package/dist/modules/forms/embed.d.ts.map +1 -1
- package/dist/modules/forms/embed.js +359 -43
- package/dist/modules/forms/embed.js.map +1 -1
- package/dist/modules/forms/events.d.ts +20 -7
- package/dist/modules/forms/events.d.ts.map +1 -1
- package/dist/modules/forms/events.js +20 -2
- package/dist/modules/forms/events.js.map +1 -1
- package/dist/modules/forms/fields.d.ts +14 -1
- package/dist/modules/forms/fields.d.ts.map +1 -1
- package/dist/modules/forms/fields.js +87 -3
- package/dist/modules/forms/fields.js.map +1 -1
- package/dist/modules/forms/index.d.ts.map +1 -1
- package/dist/modules/forms/index.js +12 -1
- package/dist/modules/forms/index.js.map +1 -1
- package/dist/modules/forms/mapping.d.ts +62 -5
- package/dist/modules/forms/mapping.d.ts.map +1 -1
- package/dist/modules/forms/mapping.js +139 -5
- package/dist/modules/forms/mapping.js.map +1 -1
- package/dist/modules/forms/publicRoutes.d.ts.map +1 -1
- package/dist/modules/forms/publicRoutes.js +29 -1
- package/dist/modules/forms/publicRoutes.js.map +1 -1
- package/dist/modules/forms/repository.d.ts +31 -0
- package/dist/modules/forms/repository.d.ts.map +1 -1
- package/dist/modules/forms/repository.js +90 -1
- package/dist/modules/forms/repository.js.map +1 -1
- package/dist/modules/forms/routes.d.ts +83 -1
- package/dist/modules/forms/routes.d.ts.map +1 -1
- package/dist/modules/forms/routes.js +185 -2
- package/dist/modules/forms/routes.js.map +1 -1
- package/dist/modules/forms/schema.d.ts +672 -1
- package/dist/modules/forms/schema.d.ts.map +1 -1
- package/dist/modules/forms/schema.js +146 -3
- package/dist/modules/forms/schema.js.map +1 -1
- package/dist/modules/forms/service.d.ts +54 -1
- package/dist/modules/forms/service.d.ts.map +1 -1
- package/dist/modules/forms/service.js +338 -28
- package/dist/modules/forms/service.js.map +1 -1
- package/dist/modules/forms/submission.d.ts +15 -0
- package/dist/modules/forms/submission.d.ts.map +1 -1
- package/dist/modules/forms/submission.js +418 -40
- package/dist/modules/forms/submission.js.map +1 -1
- package/dist/modules/import-export/drafts.d.ts +10 -0
- package/dist/modules/import-export/drafts.d.ts.map +1 -1
- package/dist/modules/import-export/drafts.js +16 -2
- package/dist/modules/import-export/drafts.js.map +1 -1
- package/dist/modules/import-export/exportRows.d.ts +7 -4
- package/dist/modules/import-export/exportRows.d.ts.map +1 -1
- package/dist/modules/import-export/exportRows.js +20 -5
- package/dist/modules/import-export/exportRows.js.map +1 -1
- package/dist/modules/import-export/plan.d.ts +12 -1
- package/dist/modules/import-export/plan.d.ts.map +1 -1
- package/dist/modules/import-export/plan.js +29 -2
- package/dist/modules/import-export/plan.js.map +1 -1
- package/dist/modules/import-export/presets.d.ts.map +1 -1
- package/dist/modules/import-export/presets.js +10 -0
- package/dist/modules/import-export/presets.js.map +1 -1
- package/dist/modules/import-export/repository.d.ts +11 -1
- package/dist/modules/import-export/repository.d.ts.map +1 -1
- package/dist/modules/import-export/repository.js +42 -9
- package/dist/modules/import-export/repository.js.map +1 -1
- package/dist/modules/import-export/routes.d.ts.map +1 -1
- package/dist/modules/import-export/routes.js +4 -0
- package/dist/modules/import-export/routes.js.map +1 -1
- package/dist/modules/import-export/schema.d.ts +17 -0
- package/dist/modules/import-export/schema.d.ts.map +1 -1
- package/dist/modules/import-export/schema.js +11 -0
- package/dist/modules/import-export/schema.js.map +1 -1
- package/dist/modules/import-export/service.d.ts +6 -0
- package/dist/modules/import-export/service.d.ts.map +1 -1
- package/dist/modules/import-export/service.js +14 -2
- package/dist/modules/import-export/service.js.map +1 -1
- package/dist/modules/import-export/streams.d.ts.map +1 -1
- package/dist/modules/import-export/streams.js +3 -3
- package/dist/modules/import-export/streams.js.map +1 -1
- package/dist/modules/import-export/tools.d.ts.map +1 -1
- package/dist/modules/import-export/tools.js +8 -0
- package/dist/modules/import-export/tools.js.map +1 -1
- package/dist/modules/import-export/validation.d.ts.map +1 -1
- package/dist/modules/import-export/validation.js +22 -1
- package/dist/modules/import-export/validation.js.map +1 -1
- package/dist/modules/import-export/writes.d.ts.map +1 -1
- package/dist/modules/import-export/writes.js +37 -4
- package/dist/modules/import-export/writes.js.map +1 -1
- package/dist/modules/lists/events.d.ts +42 -0
- package/dist/modules/lists/events.d.ts.map +1 -0
- package/dist/modules/lists/events.js +16 -0
- package/dist/modules/lists/events.js.map +1 -0
- package/dist/modules/lists/index.d.ts +10 -0
- package/dist/modules/lists/index.d.ts.map +1 -0
- package/dist/modules/lists/index.js +35 -0
- package/dist/modules/lists/index.js.map +1 -0
- package/dist/modules/lists/repository.d.ts +80 -0
- package/dist/modules/lists/repository.d.ts.map +1 -0
- package/dist/modules/lists/repository.js +178 -0
- package/dist/modules/lists/repository.js.map +1 -0
- package/dist/modules/lists/routes.d.ts +55 -0
- package/dist/modules/lists/routes.d.ts.map +1 -0
- package/dist/modules/lists/routes.js +168 -0
- package/dist/modules/lists/routes.js.map +1 -0
- package/dist/modules/lists/schema.d.ts +281 -0
- package/dist/modules/lists/schema.d.ts.map +1 -0
- package/dist/modules/lists/schema.js +83 -0
- package/dist/modules/lists/schema.js.map +1 -0
- package/dist/modules/lists/service.d.ts +82 -0
- package/dist/modules/lists/service.d.ts.map +1 -0
- package/dist/modules/lists/service.js +262 -0
- package/dist/modules/lists/service.js.map +1 -0
- package/dist/modules/lists/tools.d.ts +4 -0
- package/dist/modules/lists/tools.d.ts.map +1 -0
- package/dist/modules/lists/tools.js +86 -0
- package/dist/modules/lists/tools.js.map +1 -0
- package/dist/modules/mcp/index.d.ts.map +1 -1
- package/dist/modules/mcp/index.js +5 -0
- package/dist/modules/mcp/index.js.map +1 -1
- package/dist/modules/notes/routes.d.ts +1 -0
- package/dist/modules/notes/routes.d.ts.map +1 -1
- package/dist/modules/opportunities/index.d.ts.map +1 -1
- package/dist/modules/opportunities/index.js +3 -1
- package/dist/modules/opportunities/index.js.map +1 -1
- package/dist/modules/opportunities/repository.d.ts +2 -0
- package/dist/modules/opportunities/repository.d.ts.map +1 -1
- package/dist/modules/opportunities/repository.js +4 -0
- package/dist/modules/opportunities/repository.js.map +1 -1
- package/dist/modules/opportunities/routes.d.ts +16 -0
- package/dist/modules/opportunities/routes.d.ts.map +1 -1
- package/dist/modules/opportunities/routes.js +13 -0
- package/dist/modules/opportunities/routes.js.map +1 -1
- package/dist/modules/opportunities/schema.d.ts +20 -0
- package/dist/modules/opportunities/schema.d.ts.map +1 -1
- package/dist/modules/opportunities/schema.js +6 -1
- package/dist/modules/opportunities/schema.js.map +1 -1
- package/dist/modules/opportunities/service.d.ts +20 -3
- package/dist/modules/opportunities/service.d.ts.map +1 -1
- package/dist/modules/opportunities/service.js +99 -18
- package/dist/modules/opportunities/service.js.map +1 -1
- package/dist/modules/opportunities/tools.d.ts.map +1 -1
- package/dist/modules/opportunities/tools.js +2 -0
- package/dist/modules/opportunities/tools.js.map +1 -1
- package/dist/modules/partnerships/index.d.ts.map +1 -1
- package/dist/modules/partnerships/index.js +3 -1
- package/dist/modules/partnerships/index.js.map +1 -1
- package/dist/modules/partnerships/repository.d.ts +0 -17
- package/dist/modules/partnerships/repository.d.ts.map +1 -1
- package/dist/modules/partnerships/repository.js +6 -82
- package/dist/modules/partnerships/repository.js.map +1 -1
- package/dist/modules/partnerships/routes.d.ts +14 -0
- package/dist/modules/partnerships/routes.d.ts.map +1 -1
- package/dist/modules/partnerships/routes.js +7 -0
- package/dist/modules/partnerships/routes.js.map +1 -1
- package/dist/modules/partnerships/schema.d.ts +20 -41
- package/dist/modules/partnerships/schema.d.ts.map +1 -1
- package/dist/modules/partnerships/schema.js +6 -10
- package/dist/modules/partnerships/schema.js.map +1 -1
- package/dist/modules/partnerships/service.d.ts +11 -1
- package/dist/modules/partnerships/service.d.ts.map +1 -1
- package/dist/modules/partnerships/service.js +43 -20
- package/dist/modules/partnerships/service.js.map +1 -1
- package/dist/modules/people/consentHydration.d.ts +26 -0
- package/dist/modules/people/consentHydration.d.ts.map +1 -0
- package/dist/modules/people/consentHydration.js +100 -0
- package/dist/modules/people/consentHydration.js.map +1 -0
- package/dist/modules/people/index.d.ts.map +1 -1
- package/dist/modules/people/index.js +3 -1
- package/dist/modules/people/index.js.map +1 -1
- package/dist/modules/people/personConsentWrites.d.ts +40 -0
- package/dist/modules/people/personConsentWrites.d.ts.map +1 -0
- package/dist/modules/people/personConsentWrites.js +98 -0
- package/dist/modules/people/personConsentWrites.js.map +1 -0
- package/dist/modules/people/repository.d.ts +11 -0
- package/dist/modules/people/repository.d.ts.map +1 -1
- package/dist/modules/people/repository.js +21 -1
- package/dist/modules/people/repository.js.map +1 -1
- package/dist/modules/people/routes.d.ts +57 -4
- package/dist/modules/people/routes.d.ts.map +1 -1
- package/dist/modules/people/routes.js +104 -5
- package/dist/modules/people/routes.js.map +1 -1
- package/dist/modules/people/schema.d.ts +366 -1
- package/dist/modules/people/schema.d.ts.map +1 -1
- package/dist/modules/people/schema.js +92 -2
- package/dist/modules/people/schema.js.map +1 -1
- package/dist/modules/people/service.d.ts +30 -1
- package/dist/modules/people/service.d.ts.map +1 -1
- package/dist/modules/people/service.js +131 -36
- package/dist/modules/people/service.js.map +1 -1
- package/dist/modules/people/tools.d.ts.map +1 -1
- package/dist/modules/people/tools.js +4 -1
- package/dist/modules/people/tools.js.map +1 -1
- package/dist/modules/personLinks.d.ts +79 -0
- package/dist/modules/personLinks.d.ts.map +1 -0
- package/dist/modules/personLinks.js +155 -0
- package/dist/modules/personLinks.js.map +1 -0
- package/dist/modules/pipelines/routes.d.ts +1 -0
- package/dist/modules/pipelines/routes.d.ts.map +1 -1
- package/dist/modules/plans/routes.d.ts +1 -0
- package/dist/modules/plans/routes.d.ts.map +1 -1
- package/dist/modules/positions/routes.d.ts.map +1 -1
- package/dist/modules/positions/routes.js +4 -2
- package/dist/modules/positions/routes.js.map +1 -1
- package/dist/modules/raises/index.d.ts.map +1 -1
- package/dist/modules/raises/index.js +3 -1
- package/dist/modules/raises/index.js.map +1 -1
- package/dist/modules/raises/repository.d.ts +0 -17
- package/dist/modules/raises/repository.d.ts.map +1 -1
- package/dist/modules/raises/repository.js +6 -77
- package/dist/modules/raises/repository.js.map +1 -1
- package/dist/modules/raises/routes.d.ts +14 -0
- package/dist/modules/raises/routes.d.ts.map +1 -1
- package/dist/modules/raises/routes.js +7 -0
- package/dist/modules/raises/routes.js.map +1 -1
- package/dist/modules/raises/schema.d.ts +20 -41
- package/dist/modules/raises/schema.d.ts.map +1 -1
- package/dist/modules/raises/schema.js +6 -10
- package/dist/modules/raises/schema.js.map +1 -1
- package/dist/modules/raises/service.d.ts +11 -1
- package/dist/modules/raises/service.d.ts.map +1 -1
- package/dist/modules/raises/service.js +41 -18
- package/dist/modules/raises/service.js.map +1 -1
- package/dist/modules/recordTargets.d.ts.map +1 -1
- package/dist/modules/recordTargets.js +2 -0
- package/dist/modules/recordTargets.js.map +1 -1
- package/dist/modules/references.d.ts +10 -0
- package/dist/modules/references.d.ts.map +1 -1
- package/dist/modules/references.js +27 -4
- package/dist/modules/references.js.map +1 -1
- package/dist/modules/sample-data/fixture.d.ts +160 -0
- package/dist/modules/sample-data/fixture.d.ts.map +1 -0
- package/dist/modules/sample-data/fixture.js +501 -0
- package/dist/modules/sample-data/fixture.js.map +1 -0
- package/dist/modules/sample-data/index.d.ts +11 -0
- package/dist/modules/sample-data/index.d.ts.map +1 -0
- package/dist/modules/sample-data/index.js +44 -0
- package/dist/modules/sample-data/index.js.map +1 -0
- package/dist/modules/sample-data/routes.d.ts +15 -0
- package/dist/modules/sample-data/routes.d.ts.map +1 -0
- package/dist/modules/sample-data/routes.js +25 -0
- package/dist/modules/sample-data/routes.js.map +1 -0
- package/dist/modules/sample-data/service.d.ts +39 -0
- package/dist/modules/sample-data/service.d.ts.map +1 -0
- package/dist/modules/sample-data/service.js +481 -0
- package/dist/modules/sample-data/service.js.map +1 -0
- package/dist/modules/sample-data/tools.d.ts +4 -0
- package/dist/modules/sample-data/tools.d.ts.map +1 -0
- package/dist/modules/sample-data/tools.js +22 -0
- package/dist/modules/sample-data/tools.js.map +1 -0
- package/dist/modules/search/index.d.ts +1 -1
- package/dist/modules/search/index.d.ts.map +1 -1
- package/dist/modules/search/index.js +2 -1
- package/dist/modules/search/index.js.map +1 -1
- package/dist/modules/search/repository.d.ts +1 -0
- package/dist/modules/search/repository.d.ts.map +1 -1
- package/dist/modules/search/repository.js +23 -0
- package/dist/modules/search/repository.js.map +1 -1
- package/dist/modules/search/service.d.ts +3 -3
- package/dist/modules/search/service.d.ts.map +1 -1
- package/dist/modules/search/service.js +5 -4
- package/dist/modules/search/service.js.map +1 -1
- package/dist/modules/smtp-email/index.d.ts +1 -0
- package/dist/modules/smtp-email/index.d.ts.map +1 -1
- package/dist/modules/smtp-email/index.js +1 -0
- package/dist/modules/smtp-email/index.js.map +1 -1
- package/dist/modules/stagedRecords.d.ts +3 -3
- package/dist/modules/stagedRecords.d.ts.map +1 -1
- package/dist/modules/stagedRecords.js +9 -0
- package/dist/modules/stagedRecords.js.map +1 -1
- package/dist/modules/webhooks/payloads.d.ts.map +1 -1
- package/dist/modules/webhooks/payloads.js +15 -2
- package/dist/modules/webhooks/payloads.js.map +1 -1
- package/dist/modules/workspace/repository.d.ts +2 -0
- package/dist/modules/workspace/repository.d.ts.map +1 -1
- package/dist/modules/workspace/repository.js +7 -0
- package/dist/modules/workspace/repository.js.map +1 -1
- package/dist/modules/workspace/service.d.ts.map +1 -1
- package/dist/modules/workspace/service.js +20 -1
- package/dist/modules/workspace/service.js.map +1 -1
- package/dist/modules/workspace/starters.d.ts.map +1 -1
- package/dist/modules/workspace/starters.js +5 -0
- package/dist/modules/workspace/starters.js.map +1 -1
- package/dist/runtime/events.d.ts +1 -1
- package/dist/runtime/events.d.ts.map +1 -1
- package/dist/runtime/events.js +1 -0
- package/dist/runtime/events.js.map +1 -1
- package/dist/schema/index.d.ts +4 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/testing/database.d.ts +5 -1
- package/dist/testing/database.d.ts.map +1 -1
- package/dist/testing/database.js +81 -10
- package/dist/testing/database.js.map +1 -1
- package/migrations/0021_certain_maggott.sql +30 -0
- package/migrations/0022_stormy_manta.sql +1 -0
- package/migrations/0023_funny_maddog.sql +1 -0
- package/migrations/0024_third_king_cobra.sql +46 -0
- package/migrations/0025_worthless_chimera.sql +3 -0
- package/migrations/0026_late_aqueduct.sql +46 -0
- package/migrations/0027_brainy_silver_sable.sql +3 -0
- package/migrations/0028_freezing_scrambler.sql +19 -0
- package/migrations/0029_custom_fields.sql +26 -0
- package/migrations/0030_enquiries.sql +79 -0
- package/migrations/0031_consent.sql +45 -0
- package/migrations/0032_form_field_statement.sql +1 -0
- package/migrations/0033_form_field_consent_purpose_ids.sql +5 -0
- package/migrations/0034_drop_form_field_consent_purpose_id.sql +1 -0
- package/migrations/0035_form_field_consent_purpose_labels.sql +1 -0
- package/migrations/0036_form_field_notice_type.sql +2 -0
- package/migrations/meta/0021_snapshot.json +5389 -0
- package/migrations/meta/0022_snapshot.json +5396 -0
- package/migrations/meta/0023_snapshot.json +5403 -0
- package/migrations/meta/0024_snapshot.json +5516 -0
- package/migrations/meta/0025_snapshot.json +5336 -0
- package/migrations/meta/0026_snapshot.json +5710 -0
- package/migrations/meta/0027_snapshot.json +5716 -0
- package/migrations/meta/0028_snapshot.json +5740 -0
- package/migrations/meta/0029_snapshot.json +5935 -0
- package/migrations/meta/0030_snapshot.json +6245 -0
- package/migrations/meta/0031_snapshot.json +6572 -0
- package/migrations/meta/0032_snapshot.json +6578 -0
- package/migrations/meta/0033_snapshot.json +6572 -0
- package/migrations/meta/0034_snapshot.json +6566 -0
- package/migrations/meta/0035_snapshot.json +6573 -0
- package/migrations/meta/0036_snapshot.json +6573 -0
- package/migrations/meta/_journal.json +112 -0
- package/package.json +3 -2
- package/src/lib/consumerEmailDomains.ts +62 -0
- package/src/lib/email.ts +7 -0
- package/src/lib/emailContent.ts +91 -0
- package/src/lib/emailDomainAutoLink.ts +165 -0
- package/src/lib/ids.ts +13 -0
- package/src/modules/activities/repository.ts +22 -23
- package/src/modules/activities/wording.ts +18 -0
- package/src/modules/agent-tasks/catalog.ts +63 -0
- package/src/modules/agent-tasks/resolve.ts +64 -24
- package/src/modules/attachedRecords.ts +37 -3
- package/src/modules/auth/preferences.ts +13 -1
- package/src/modules/auth/routes.ts +22 -0
- package/src/modules/auth/schema.ts +12 -2
- package/src/modules/auth/service.ts +37 -3
- package/src/modules/companies/index.ts +3 -1
- package/src/modules/companies/repository.ts +3 -0
- package/src/modules/companies/routes.ts +20 -0
- package/src/modules/companies/schema.ts +11 -1
- package/src/modules/companies/service.ts +72 -12
- package/src/modules/consent-purposes/capabilities.ts +12 -0
- package/src/modules/consent-purposes/events.ts +38 -0
- package/src/modules/consent-purposes/index.ts +48 -0
- package/src/modules/consent-purposes/repository.ts +163 -0
- package/src/modules/consent-purposes/routes.ts +122 -0
- package/src/modules/consent-purposes/schema.ts +46 -0
- package/src/modules/consent-purposes/service.ts +423 -0
- package/src/modules/consent-purposes/starters.ts +32 -0
- package/src/modules/consent-purposes/tools.ts +44 -0
- package/src/modules/core.ts +21 -0
- package/src/modules/custom-fields/capabilities.ts +17 -0
- package/src/modules/custom-fields/events.ts +51 -0
- package/src/modules/custom-fields/index.ts +61 -0
- package/src/modules/custom-fields/repository.ts +225 -0
- package/src/modules/custom-fields/routes.ts +155 -0
- package/src/modules/custom-fields/schema.ts +61 -0
- package/src/modules/custom-fields/service.ts +439 -0
- package/src/modules/custom-fields/tools.ts +53 -0
- package/src/modules/custom-fields/values.ts +352 -0
- package/src/modules/custom-fields/wire.ts +32 -0
- package/src/modules/dashboard/repository.ts +4 -3
- package/src/modules/deals/index.ts +5 -2
- package/src/modules/deals/repository.ts +6 -106
- package/src/modules/deals/routes.ts +7 -0
- package/src/modules/deals/schema.ts +7 -15
- package/src/modules/deals/service.ts +92 -23
- package/src/modules/decisions/repository.ts +2 -0
- package/src/modules/email-domain-linker/index.ts +40 -0
- package/src/modules/email-domain-linker/routes.ts +40 -0
- package/src/modules/email-domain-linker/service.ts +122 -0
- package/src/modules/enquiries/events.ts +45 -0
- package/src/modules/enquiries/index.ts +50 -0
- package/src/modules/enquiries/repository.ts +164 -0
- package/src/modules/enquiries/routes.ts +172 -0
- package/src/modules/enquiries/schema.ts +59 -0
- package/src/modules/enquiries/service.ts +644 -0
- package/src/modules/enquiries/tools.ts +66 -0
- package/src/modules/eventCatalogs.ts +4 -0
- package/src/modules/forms/embed.ts +391 -44
- package/src/modules/forms/events.ts +30 -2
- package/src/modules/forms/fields.ts +102 -2
- package/src/modules/forms/index.ts +12 -1
- package/src/modules/forms/mapping.ts +183 -6
- package/src/modules/forms/publicRoutes.ts +43 -1
- package/src/modules/forms/repository.ts +162 -1
- package/src/modules/forms/routes.ts +212 -2
- package/src/modules/forms/schema.ts +166 -4
- package/src/modules/forms/service.ts +565 -41
- package/src/modules/forms/submission.ts +718 -44
- package/src/modules/import-export/drafts.ts +20 -1
- package/src/modules/import-export/exportRows.ts +21 -5
- package/src/modules/import-export/plan.ts +47 -2
- package/src/modules/import-export/presets.ts +10 -0
- package/src/modules/import-export/repository.ts +73 -8
- package/src/modules/import-export/routes.ts +4 -0
- package/src/modules/import-export/schema.ts +11 -0
- package/src/modules/import-export/service.ts +28 -2
- package/src/modules/import-export/streams.ts +3 -1
- package/src/modules/import-export/tools.ts +10 -0
- package/src/modules/import-export/validation.ts +28 -0
- package/src/modules/import-export/writes.ts +70 -5
- package/src/modules/lists/events.ts +41 -0
- package/src/modules/lists/index.ts +41 -0
- package/src/modules/lists/repository.ts +343 -0
- package/src/modules/lists/routes.ts +255 -0
- package/src/modules/lists/schema.ts +95 -0
- package/src/modules/lists/service.ts +505 -0
- package/src/modules/lists/tools.ts +128 -0
- package/src/modules/mcp/index.ts +5 -0
- package/src/modules/opportunities/index.ts +3 -1
- package/src/modules/opportunities/repository.ts +11 -0
- package/src/modules/opportunities/routes.ts +13 -0
- package/src/modules/opportunities/schema.ts +7 -1
- package/src/modules/opportunities/service.ts +188 -22
- package/src/modules/opportunities/tools.ts +2 -0
- package/src/modules/partnerships/index.ts +3 -1
- package/src/modules/partnerships/repository.ts +6 -117
- package/src/modules/partnerships/routes.ts +7 -0
- package/src/modules/partnerships/schema.ts +7 -14
- package/src/modules/partnerships/service.ts +93 -22
- package/src/modules/people/consentHydration.ts +167 -0
- package/src/modules/people/index.ts +3 -1
- package/src/modules/people/personConsentWrites.ts +177 -0
- package/src/modules/people/repository.ts +31 -0
- package/src/modules/people/routes.ts +127 -18
- package/src/modules/people/schema.ts +109 -3
- package/src/modules/people/service.ts +205 -39
- package/src/modules/people/tools.ts +5 -1
- package/src/modules/personLinks.ts +278 -0
- package/src/modules/positions/routes.ts +4 -2
- package/src/modules/raises/index.ts +3 -1
- package/src/modules/raises/repository.ts +6 -107
- package/src/modules/raises/routes.ts +7 -0
- package/src/modules/raises/schema.ts +7 -14
- package/src/modules/raises/service.ts +91 -20
- package/src/modules/recordTargets.ts +2 -0
- package/src/modules/references.ts +43 -4
- package/src/modules/sample-data/fixture.ts +690 -0
- package/src/modules/sample-data/index.ts +51 -0
- package/src/modules/sample-data/routes.ts +50 -0
- package/src/modules/sample-data/service.ts +679 -0
- package/src/modules/sample-data/tools.ts +32 -0
- package/src/modules/search/index.ts +2 -1
- package/src/modules/search/repository.ts +33 -1
- package/src/modules/search/service.ts +7 -5
- package/src/modules/smtp-email/index.ts +8 -1
- package/src/modules/stagedRecords.ts +18 -3
- package/src/modules/webhooks/payloads.ts +20 -2
- package/src/modules/workspace/repository.ts +12 -0
- package/src/modules/workspace/service.ts +27 -1
- package/src/modules/workspace/starters.ts +5 -0
- package/src/runtime/events.ts +1 -0
- package/src/schema/index.ts +4 -0
- package/src/testing/database.ts +97 -11
|
@@ -6,18 +6,19 @@ import type { PgColumn, PgTable } from 'drizzle-orm/pg-core'
|
|
|
6
6
|
|
|
7
7
|
import type { Queryable } from '../../runtime/transaction.ts'
|
|
8
8
|
import { companies } from '../companies/schema.ts'
|
|
9
|
-
import {
|
|
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 { candidates, roles } from '../hiring/schema.ts'
|
|
13
14
|
import { notes } from '../notes/schema.ts'
|
|
14
15
|
import { opportunities } from '../opportunities/schema.ts'
|
|
15
|
-
import {
|
|
16
|
-
import { people } from '../people/schema.ts'
|
|
16
|
+
import { partnerships } from '../partnerships/schema.ts'
|
|
17
|
+
import { people, personLinks } from '../people/schema.ts'
|
|
17
18
|
import { pipelineStages } from '../pipelines/schema.ts'
|
|
18
19
|
import { planItems } from '../plans/schema.ts'
|
|
19
20
|
import { positions } from '../positions/schema.ts'
|
|
20
|
-
import {
|
|
21
|
+
import { raises } from '../raises/schema.ts'
|
|
21
22
|
import { isRecordTargetType, resolveTargetNames, targetKey } from '../recordTargets.ts'
|
|
22
23
|
import { workspaces } from '../workspace/schema.ts'
|
|
23
24
|
import type { HandbookPageReference, PromptInputs, RelatedIdList, WorkspaceSignal } from './prompt.ts'
|
|
@@ -47,6 +48,7 @@ const DEEP_LINKS: Readonly<Partial<Record<AgentTaskTargetType, string>>> = {
|
|
|
47
48
|
person: '/people',
|
|
48
49
|
company: '/companies',
|
|
49
50
|
deal: '/deals',
|
|
51
|
+
enquiry: '/enquiries',
|
|
50
52
|
opportunity: '/opportunities',
|
|
51
53
|
partnership: '/partnerships',
|
|
52
54
|
raise: '/fundraising',
|
|
@@ -253,6 +255,33 @@ async function relatedFrom(
|
|
|
253
255
|
return limitedIds(rows.map((row) => row.id))
|
|
254
256
|
}
|
|
255
257
|
|
|
258
|
+
/**
|
|
259
|
+
* The people on one pipeline record, capped and truncation-aware. Uses
|
|
260
|
+
* `person_links` directly rather than the shared helper because it needs the
|
|
261
|
+
* limit + 1 semantics of `relatedFrom`.
|
|
262
|
+
*/
|
|
263
|
+
async function personLinkIds(
|
|
264
|
+
db: Queryable,
|
|
265
|
+
workspaceId: string,
|
|
266
|
+
targetType: 'deal' | 'enquiry' | 'opportunity' | 'partnership' | 'raise',
|
|
267
|
+
targetId: string,
|
|
268
|
+
): Promise<RelatedIdList> {
|
|
269
|
+
const rows = await db
|
|
270
|
+
.select({ id: personLinks.personId })
|
|
271
|
+
.from(personLinks)
|
|
272
|
+
.where(
|
|
273
|
+
and(
|
|
274
|
+
eq(personLinks.workspaceId, workspaceId),
|
|
275
|
+
eq(personLinks.targetType, targetType),
|
|
276
|
+
eq(personLinks.targetId, targetId),
|
|
277
|
+
),
|
|
278
|
+
)
|
|
279
|
+
.orderBy(asc(personLinks.personId))
|
|
280
|
+
.limit(RELATED_ID_LIMIT + 1)
|
|
281
|
+
|
|
282
|
+
return limitedIds(rows.map((row) => row.id))
|
|
283
|
+
}
|
|
284
|
+
|
|
256
285
|
/**
|
|
257
286
|
* The related record ids `agent-tasks.md`'s context recipe names, per target
|
|
258
287
|
* type: positions for a person, people on a deal, the company behind a raise,
|
|
@@ -297,6 +326,12 @@ async function collectRelated(
|
|
|
297
326
|
deals.id,
|
|
298
327
|
workspaceScoped(deals.workspaceId, deals.companyId),
|
|
299
328
|
),
|
|
329
|
+
enquiry_ids: await relatedFrom(
|
|
330
|
+
db,
|
|
331
|
+
enquiries,
|
|
332
|
+
enquiries.id,
|
|
333
|
+
workspaceScoped(enquiries.workspaceId, enquiries.companyId),
|
|
334
|
+
),
|
|
300
335
|
opportunity_ids: await relatedFrom(
|
|
301
336
|
db,
|
|
302
337
|
opportunities,
|
|
@@ -326,14 +361,7 @@ async function collectRelated(
|
|
|
326
361
|
|
|
327
362
|
return {
|
|
328
363
|
company_ids: wholeList(deal === undefined ? [] : [deal.companyId]),
|
|
329
|
-
|
|
330
|
-
// resolved inside this workspace, which is what scopes the join.
|
|
331
|
-
person_ids: await relatedFrom(
|
|
332
|
-
db,
|
|
333
|
-
dealPeople,
|
|
334
|
-
dealPeople.personId,
|
|
335
|
-
eq(dealPeople.dealId, targetId),
|
|
336
|
-
),
|
|
364
|
+
person_ids: await personLinkIds(db, workspaceId, 'deal', targetId),
|
|
337
365
|
}
|
|
338
366
|
}
|
|
339
367
|
|
|
@@ -349,6 +377,21 @@ async function collectRelated(
|
|
|
349
377
|
? []
|
|
350
378
|
: [opportunity.companyId],
|
|
351
379
|
),
|
|
380
|
+
person_ids: await personLinkIds(db, workspaceId, 'opportunity', targetId),
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
case 'enquiry': {
|
|
385
|
+
const [enquiry] = await db
|
|
386
|
+
.select({ companyId: enquiries.companyId })
|
|
387
|
+
.from(enquiries)
|
|
388
|
+
.where(and(eq(enquiries.workspaceId, workspaceId), eq(enquiries.id, targetId)))
|
|
389
|
+
|
|
390
|
+
return {
|
|
391
|
+
company_ids: wholeList(
|
|
392
|
+
enquiry?.companyId === null || enquiry === undefined ? [] : [enquiry.companyId],
|
|
393
|
+
),
|
|
394
|
+
person_ids: await personLinkIds(db, workspaceId, 'enquiry', targetId),
|
|
352
395
|
}
|
|
353
396
|
}
|
|
354
397
|
|
|
@@ -360,12 +403,7 @@ async function collectRelated(
|
|
|
360
403
|
|
|
361
404
|
return {
|
|
362
405
|
company_ids: wholeList(partnership === undefined ? [] : [partnership.companyId]),
|
|
363
|
-
person_ids: await
|
|
364
|
-
db,
|
|
365
|
-
partnershipPeople,
|
|
366
|
-
partnershipPeople.personId,
|
|
367
|
-
eq(partnershipPeople.partnershipId, targetId),
|
|
368
|
-
),
|
|
406
|
+
person_ids: await personLinkIds(db, workspaceId, 'partnership', targetId),
|
|
369
407
|
}
|
|
370
408
|
}
|
|
371
409
|
|
|
@@ -377,12 +415,7 @@ async function collectRelated(
|
|
|
377
415
|
|
|
378
416
|
return {
|
|
379
417
|
company_ids: wholeList(raise === undefined ? [] : [raise.companyId]),
|
|
380
|
-
person_ids: await
|
|
381
|
-
db,
|
|
382
|
-
raisePeople,
|
|
383
|
-
raisePeople.personId,
|
|
384
|
-
eq(raisePeople.raiseId, targetId),
|
|
385
|
-
),
|
|
418
|
+
person_ids: await personLinkIds(db, workspaceId, 'raise', targetId),
|
|
386
419
|
}
|
|
387
420
|
}
|
|
388
421
|
|
|
@@ -433,6 +466,13 @@ const SWEEP_TABLES = {
|
|
|
433
466
|
stageId: deals.stageId,
|
|
434
467
|
summary: deals.summary,
|
|
435
468
|
},
|
|
469
|
+
enquiry: {
|
|
470
|
+
table: enquiries,
|
|
471
|
+
id: enquiries.id,
|
|
472
|
+
workspaceId: enquiries.workspaceId,
|
|
473
|
+
stageId: enquiries.stageId,
|
|
474
|
+
summary: enquiries.summary,
|
|
475
|
+
},
|
|
436
476
|
opportunity: {
|
|
437
477
|
table: opportunities,
|
|
438
478
|
id: opportunities.id,
|
|
@@ -5,8 +5,11 @@ import { and, eq } from 'drizzle-orm'
|
|
|
5
5
|
import type { Queryable } from '../runtime/transaction.ts'
|
|
6
6
|
import * as activityRepository from './activities/repository.ts'
|
|
7
7
|
import * as decisionRepository from './decisions/repository.ts'
|
|
8
|
+
import { formAttachTargets } from './forms/schema.ts'
|
|
8
9
|
import { candidates } from './hiring/schema.ts'
|
|
10
|
+
import * as listRepository from './lists/repository.ts'
|
|
9
11
|
import * as noteRepository from './notes/repository.ts'
|
|
12
|
+
import * as personLinks from './personLinks.ts'
|
|
10
13
|
import * as planRepository from './plans/repository.ts'
|
|
11
14
|
|
|
12
15
|
/**
|
|
@@ -18,7 +21,12 @@ import * as planRepository from './plans/repository.ts'
|
|
|
18
21
|
* record they described and reappear the day an id is reused.
|
|
19
22
|
*
|
|
20
23
|
* `plan_items` attach the same way but their check constraint allows only the
|
|
21
|
-
* four pipeline types, so they are removed only for those targets.
|
|
24
|
+
* four pipeline types, so they are removed only for those targets. `person_links`
|
|
25
|
+
* follows the same rule: it holds a person's involvement in a pipeline record
|
|
26
|
+
* and its check constraint allows only the four pipeline types, so a deleted
|
|
27
|
+
* deal/opportunity/raise/partnership sheds its people here. `form_attach_targets`
|
|
28
|
+
* is the same shape: forms pinning submitters into a pre-existing pipeline
|
|
29
|
+
* record shed the mapping when the target goes.
|
|
22
30
|
*/
|
|
23
31
|
|
|
24
32
|
/** Target types that can own attached records here. */
|
|
@@ -37,7 +45,7 @@ export async function deleteRecordsAttachedTo(
|
|
|
37
45
|
targetType: AttachableTargetType,
|
|
38
46
|
targetId: string,
|
|
39
47
|
): Promise<number> {
|
|
40
|
-
// Sequential, not concurrent: a transaction is one connection, and
|
|
48
|
+
// Sequential, not concurrent: a transaction is one connection, and five
|
|
41
49
|
// statements racing down it is not something to rely on for a cheap delete.
|
|
42
50
|
const notes = await noteRepository.deleteForTarget(db, workspaceId, targetType, targetId)
|
|
43
51
|
const activities = await activityRepository.deleteForTarget(db, workspaceId, targetType, targetId)
|
|
@@ -45,8 +53,34 @@ export async function deleteRecordsAttachedTo(
|
|
|
45
53
|
const plans = PLAN_TARGET_TYPES.has(targetType)
|
|
46
54
|
? await planRepository.deleteForTarget(db, workspaceId, targetType, targetId)
|
|
47
55
|
: 0
|
|
56
|
+
const links = PLAN_TARGET_TYPES.has(targetType)
|
|
57
|
+
? await personLinks.deleteLinksForTarget(db, workspaceId, {
|
|
58
|
+
targetType: targetType as PipelineKind,
|
|
59
|
+
targetId,
|
|
60
|
+
})
|
|
61
|
+
: 0
|
|
62
|
+
const attachTargets = PLAN_TARGET_TYPES.has(targetType)
|
|
63
|
+
? (
|
|
64
|
+
await db
|
|
65
|
+
.delete(formAttachTargets)
|
|
66
|
+
.where(
|
|
67
|
+
and(
|
|
68
|
+
eq(formAttachTargets.workspaceId, workspaceId),
|
|
69
|
+
eq(formAttachTargets.targetType, targetType),
|
|
70
|
+
eq(formAttachTargets.targetId, targetId),
|
|
71
|
+
),
|
|
72
|
+
)
|
|
73
|
+
.returning({ formId: formAttachTargets.formId })
|
|
74
|
+
).length
|
|
75
|
+
: 0
|
|
76
|
+
const memberships = await listRepository.deleteMembershipsForTarget(
|
|
77
|
+
db,
|
|
78
|
+
workspaceId,
|
|
79
|
+
targetType,
|
|
80
|
+
targetId,
|
|
81
|
+
)
|
|
48
82
|
|
|
49
|
-
return notes + activities + decisions + plans
|
|
83
|
+
return notes + activities + decisions + plans + links + attachTargets + memberships
|
|
50
84
|
}
|
|
51
85
|
|
|
52
86
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ThemePreference } from '@kelpie/schemas'
|
|
1
|
+
import type { ListViewPreference, ThemePreference } from '@kelpie/schemas'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* What an account's preferences are before anyone has saved any, and how a
|
|
@@ -17,12 +17,17 @@ export interface PreferenceValues {
|
|
|
17
17
|
readonly emailDigest: boolean
|
|
18
18
|
readonly mentionEmails: boolean
|
|
19
19
|
readonly productUpdates: boolean
|
|
20
|
+
readonly listViews: Readonly<Record<string, ListViewPreference>>
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* UTC, not the workspace's zone. An account is global and may belong to several
|
|
24
25
|
* workspaces in different zones, so deriving from one of them would be picking
|
|
25
26
|
* arbitrarily and calling it the person's answer.
|
|
27
|
+
*
|
|
28
|
+
* `listViews` starts empty. Each list page falls back to its own default when
|
|
29
|
+
* the map holds no entry for it, so the person sees the page's built-in shape
|
|
30
|
+
* until they change it.
|
|
26
31
|
*/
|
|
27
32
|
export const DEFAULT_PREFERENCES: PreferenceValues = {
|
|
28
33
|
timezone: 'UTC',
|
|
@@ -30,6 +35,7 @@ export const DEFAULT_PREFERENCES: PreferenceValues = {
|
|
|
30
35
|
emailDigest: true,
|
|
31
36
|
mentionEmails: true,
|
|
32
37
|
productUpdates: false,
|
|
38
|
+
listViews: {},
|
|
33
39
|
}
|
|
34
40
|
|
|
35
41
|
export type PreferenceChanges = Partial<PreferenceValues>
|
|
@@ -40,6 +46,11 @@ export type PreferenceChanges = Partial<PreferenceValues>
|
|
|
40
46
|
* The result is always a complete row, which is what makes the write an upsert
|
|
41
47
|
* with no read-modify-write hazard in the caller: the same request applied twice
|
|
42
48
|
* produces the same row.
|
|
49
|
+
*
|
|
50
|
+
* `listViews` is treated as one field, so the caller replaces the whole map
|
|
51
|
+
* rather than merging by key. The UI already holds the current map in the
|
|
52
|
+
* account-preferences query, so a per-view change becomes a PATCH of the merged
|
|
53
|
+
* map — the merge lives where the choice was made.
|
|
43
54
|
*/
|
|
44
55
|
export function applyPreferenceChanges(
|
|
45
56
|
stored: PreferenceValues | undefined,
|
|
@@ -53,5 +64,6 @@ export function applyPreferenceChanges(
|
|
|
53
64
|
emailDigest: changes.emailDigest ?? current.emailDigest,
|
|
54
65
|
mentionEmails: changes.mentionEmails ?? current.mentionEmails,
|
|
55
66
|
productUpdates: changes.productUpdates ?? current.productUpdates,
|
|
67
|
+
listViews: changes.listViews ?? current.listViews,
|
|
56
68
|
}
|
|
57
69
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { THEME_PREFERENCES } from '@kelpie/schemas'
|
|
2
|
+
import type { ListViewPreference } from '@kelpie/schemas'
|
|
2
3
|
import type { Context, Hono } from 'hono'
|
|
3
4
|
import { z } from 'zod'
|
|
4
5
|
|
|
@@ -59,6 +60,24 @@ const updateAccountBody = z
|
|
|
59
60
|
path: ['current_password'],
|
|
60
61
|
})
|
|
61
62
|
|
|
63
|
+
const listViewBody: z.ZodType<ListViewPreference, unknown> = z
|
|
64
|
+
.strictObject({
|
|
65
|
+
columns: z.array(z.string()).optional(),
|
|
66
|
+
mode: z.enum(['list', 'columns']).optional(),
|
|
67
|
+
grouping: z.string().optional(),
|
|
68
|
+
scope: z.string().optional(),
|
|
69
|
+
sort: z.string().optional(),
|
|
70
|
+
})
|
|
71
|
+
.transform(
|
|
72
|
+
(wire): ListViewPreference => ({
|
|
73
|
+
...(wire.columns === undefined ? {} : { columns: wire.columns }),
|
|
74
|
+
...(wire.mode === undefined ? {} : { mode: wire.mode }),
|
|
75
|
+
...(wire.grouping === undefined ? {} : { grouping: wire.grouping }),
|
|
76
|
+
...(wire.scope === undefined ? {} : { scope: wire.scope }),
|
|
77
|
+
...(wire.sort === undefined ? {} : { sort: wire.sort }),
|
|
78
|
+
}),
|
|
79
|
+
)
|
|
80
|
+
|
|
62
81
|
const updatePreferencesBody = z
|
|
63
82
|
.strictObject({
|
|
64
83
|
timezone: timezoneSchema,
|
|
@@ -66,6 +85,7 @@ const updatePreferencesBody = z
|
|
|
66
85
|
email_digest: z.boolean(),
|
|
67
86
|
mention_emails: z.boolean(),
|
|
68
87
|
product_updates: z.boolean(),
|
|
88
|
+
list_views: z.record(z.string(), listViewBody),
|
|
69
89
|
})
|
|
70
90
|
.partial()
|
|
71
91
|
|
|
@@ -118,6 +138,7 @@ function preferencesResponse(preferences: PreferenceValues): Record<string, unkn
|
|
|
118
138
|
email_digest: preferences.emailDigest,
|
|
119
139
|
mention_emails: preferences.mentionEmails,
|
|
120
140
|
product_updates: preferences.productUpdates,
|
|
141
|
+
list_views: preferences.listViews,
|
|
121
142
|
}
|
|
122
143
|
}
|
|
123
144
|
|
|
@@ -213,6 +234,7 @@ export function mountAuthRoutes(router: Hono, dependencies: AuthRoutesDependenci
|
|
|
213
234
|
...(body.email_digest === undefined ? {} : { emailDigest: body.email_digest }),
|
|
214
235
|
...(body.mention_emails === undefined ? {} : { mentionEmails: body.mention_emails }),
|
|
215
236
|
...(body.product_updates === undefined ? {} : { productUpdates: body.product_updates }),
|
|
237
|
+
...(body.list_views === undefined ? {} : { listViews: body.list_views }),
|
|
216
238
|
})
|
|
217
239
|
|
|
218
240
|
return context.json(preferencesResponse(preferences))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { THEME_PREFERENCES } from '@kelpie/schemas'
|
|
2
|
-
import type { ThemePreference } from '@kelpie/schemas'
|
|
3
|
-
import { boolean, pgTable, text } from 'drizzle-orm/pg-core'
|
|
2
|
+
import type { ListViewPreference, ThemePreference } from '@kelpie/schemas'
|
|
3
|
+
import { boolean, jsonb, pgTable, text } from 'drizzle-orm/pg-core'
|
|
4
4
|
|
|
5
5
|
import { checkOneOf, citext, createdAt, moment, primaryId, updatedAt } from '../../lib/columns.ts'
|
|
6
6
|
|
|
@@ -57,6 +57,16 @@ export const userPreferences = pgTable(
|
|
|
57
57
|
emailDigest: boolean('email_digest').notNull(),
|
|
58
58
|
mentionEmails: boolean('mention_emails').notNull(),
|
|
59
59
|
productUpdates: boolean('product_updates').notNull(),
|
|
60
|
+
/**
|
|
61
|
+
* Per-list column choices, keyed on a stable view id (`people`, `deals`, …).
|
|
62
|
+
* A view id the client no longer recognises stays untouched here rather than
|
|
63
|
+
* being cleaned up: the map is small, and the write path is the client
|
|
64
|
+
* merging its current choice into what it read.
|
|
65
|
+
*/
|
|
66
|
+
listViews: jsonb('list_views')
|
|
67
|
+
.$type<Readonly<Record<string, ListViewPreference>>>()
|
|
68
|
+
.notNull()
|
|
69
|
+
.default({}),
|
|
60
70
|
updatedAt: updatedAt(),
|
|
61
71
|
},
|
|
62
72
|
(table) => [checkOneOf('user_preferences_theme_check', table.theme, THEME_PREFERENCES)],
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { APP_LINK_PATHS, buildAppLink } from '../../lib/appUrl.ts'
|
|
2
2
|
import type { EmailSender } from '../../lib/email.ts'
|
|
3
|
+
import { renderEmail } from '../../lib/emailContent.ts'
|
|
3
4
|
import { AppError } from '../../lib/errors.ts'
|
|
4
5
|
import type { IdFactory } from '../../lib/ids.ts'
|
|
5
6
|
import { UNIQUE_VIOLATION, postgresErrorCode } from '../../lib/database.ts'
|
|
@@ -95,6 +96,7 @@ function toPreferenceValues(record: repository.UserPreferencesRecord): Preferenc
|
|
|
95
96
|
emailDigest: record.emailDigest,
|
|
96
97
|
mentionEmails: record.mentionEmails,
|
|
97
98
|
productUpdates: record.productUpdates,
|
|
99
|
+
listViews: record.listViews,
|
|
98
100
|
}
|
|
99
101
|
}
|
|
100
102
|
|
|
@@ -192,11 +194,23 @@ export function createAuthService(dependencies: AuthDependencies): AuthService {
|
|
|
192
194
|
|
|
193
195
|
function sendVerificationEmail(to: string, token: string): Promise<void> {
|
|
194
196
|
const link = buildAppLink(dependencies.appBaseUrl, APP_LINK_PATHS.verifyEmail, token)
|
|
197
|
+
const { text, html } = renderEmail(
|
|
198
|
+
{
|
|
199
|
+
action: {
|
|
200
|
+
instructions: 'Confirm this address to finish setting up your account:',
|
|
201
|
+
buttonText: 'Verify email address',
|
|
202
|
+
link,
|
|
203
|
+
},
|
|
204
|
+
outro: 'The link expires in 24 hours.',
|
|
205
|
+
},
|
|
206
|
+
dependencies.appBaseUrl,
|
|
207
|
+
)
|
|
195
208
|
|
|
196
209
|
return dependencies.email.send({
|
|
197
210
|
to,
|
|
198
211
|
subject: 'Verify your Kelpie email address',
|
|
199
|
-
body:
|
|
212
|
+
body: text,
|
|
213
|
+
html,
|
|
200
214
|
})
|
|
201
215
|
}
|
|
202
216
|
|
|
@@ -320,10 +334,18 @@ export function createAuthService(dependencies: AuthDependencies): AuthService {
|
|
|
320
334
|
})
|
|
321
335
|
|
|
322
336
|
if (changes.email !== undefined) {
|
|
337
|
+
const { text, html } = renderEmail(
|
|
338
|
+
{
|
|
339
|
+
intro: `Your Kelpie sign-in email changed from ${previousEmail} to ${updated.email}. If you did not make this change, reset your password right away.`,
|
|
340
|
+
},
|
|
341
|
+
dependencies.appBaseUrl,
|
|
342
|
+
)
|
|
343
|
+
|
|
323
344
|
await dependencies.email.send({
|
|
324
345
|
to: previousEmail,
|
|
325
346
|
subject: 'Your Kelpie sign-in email changed',
|
|
326
|
-
body:
|
|
347
|
+
body: text,
|
|
348
|
+
html,
|
|
327
349
|
})
|
|
328
350
|
}
|
|
329
351
|
|
|
@@ -418,11 +440,23 @@ export function createAuthService(dependencies: AuthDependencies): AuthService {
|
|
|
418
440
|
})
|
|
419
441
|
|
|
420
442
|
const link = buildAppLink(dependencies.appBaseUrl, APP_LINK_PATHS.passwordReset, token)
|
|
443
|
+
const { text, html } = renderEmail(
|
|
444
|
+
{
|
|
445
|
+
action: {
|
|
446
|
+
instructions: 'Use this link within the hour to choose a new password:',
|
|
447
|
+
buttonText: 'Reset password',
|
|
448
|
+
link,
|
|
449
|
+
},
|
|
450
|
+
outro: 'If you did not ask for this, ignore it.',
|
|
451
|
+
},
|
|
452
|
+
dependencies.appBaseUrl,
|
|
453
|
+
)
|
|
421
454
|
|
|
422
455
|
await dependencies.email.send({
|
|
423
456
|
to: user.email,
|
|
424
457
|
subject: 'Reset your Kelpie password',
|
|
425
|
-
body:
|
|
458
|
+
body: text,
|
|
459
|
+
html,
|
|
426
460
|
})
|
|
427
461
|
},
|
|
428
462
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { KelpieModule } from '../../runtime/module.ts'
|
|
2
2
|
import { createActivityRecorder } from '../activities/index.ts'
|
|
3
|
+
import { createCustomFieldValues } from '../custom-fields/index.ts'
|
|
3
4
|
import { companiesEvents } from './events.ts'
|
|
4
5
|
import { mountCompaniesRoutes } from './routes.ts'
|
|
5
6
|
import * as schema from './schema.ts'
|
|
@@ -15,7 +16,7 @@ import { registerCompaniesTools } from './tools.ts'
|
|
|
15
16
|
export function createCompaniesModule(migrationsDirectory: string): KelpieModule {
|
|
16
17
|
return {
|
|
17
18
|
id: 'companies',
|
|
18
|
-
requires: ['workspace', 'activities'],
|
|
19
|
+
requires: ['workspace', 'activities', 'custom-fields'],
|
|
19
20
|
structural: true,
|
|
20
21
|
events: companiesEvents,
|
|
21
22
|
|
|
@@ -29,6 +30,7 @@ export function createCompaniesModule(migrationsDirectory: string): KelpieModule
|
|
|
29
30
|
createId: context.createId,
|
|
30
31
|
now: context.now,
|
|
31
32
|
}),
|
|
33
|
+
customFields: createCustomFieldValues({ db: context.db }),
|
|
32
34
|
})
|
|
33
35
|
|
|
34
36
|
context.schema(schema, migrationsDirectory)
|
|
@@ -27,6 +27,8 @@ export interface CompanyFilters {
|
|
|
27
27
|
readonly term?: string | undefined
|
|
28
28
|
/** `?person_id=`, repeatable: companies where any of these people holds a position. */
|
|
29
29
|
readonly personIds?: readonly string[] | undefined
|
|
30
|
+
/** `?is_own=true` returns only the workspace's own companies; `false` returns everything else. */
|
|
31
|
+
readonly isOwn?: boolean | undefined
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
/**
|
|
@@ -64,6 +66,7 @@ function conditionsFor(workspaceId: string, filters: CompanyFilters): (SQL | und
|
|
|
64
66
|
eq(companies.workspaceId, workspaceId),
|
|
65
67
|
filters.term === undefined ? undefined : matchesTerm(filters.term),
|
|
66
68
|
filters.personIds === undefined ? undefined : employsAnyOf(filters.personIds),
|
|
69
|
+
filters.isOwn === undefined ? undefined : eq(companies.isOwn, filters.isOwn),
|
|
67
70
|
]
|
|
68
71
|
}
|
|
69
72
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { customFieldsPatchShape } from '@kelpie/schemas'
|
|
1
2
|
import type { Context, Hono } from 'hono'
|
|
2
3
|
import { z } from 'zod'
|
|
3
4
|
|
|
@@ -5,6 +6,7 @@ import { pageBody, readIdFilter, readJsonBody, readListParameters } from '../../
|
|
|
5
6
|
import type { Actor } from '../auth/actor.ts'
|
|
6
7
|
import { resolveActorFrom } from '../auth/credentials.ts'
|
|
7
8
|
import type { CredentialDependencies } from '../auth/credentials.ts'
|
|
9
|
+
import { renderCustomFieldsForWire } from '../custom-fields/wire.ts'
|
|
8
10
|
import { ACCOUNT_TYPES, COMPANY_STAGES, ICP_FITS, SIZE_BANDS } from './schema.ts'
|
|
9
11
|
import type {
|
|
10
12
|
CompaniesService,
|
|
@@ -30,6 +32,8 @@ const companyShape = {
|
|
|
30
32
|
tech_stack: z.array(z.string().min(1)),
|
|
31
33
|
summary: z.string(),
|
|
32
34
|
tags: z.array(z.string().min(1)),
|
|
35
|
+
is_own: z.boolean(),
|
|
36
|
+
custom_fields: customFieldsPatchShape,
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
/**
|
|
@@ -51,6 +55,8 @@ export const createBody = z.strictObject({
|
|
|
51
55
|
tech_stack: companyShape.tech_stack.default([]),
|
|
52
56
|
summary: companyShape.summary.default(''),
|
|
53
57
|
tags: companyShape.tags.default([]),
|
|
58
|
+
is_own: companyShape.is_own.default(false),
|
|
59
|
+
custom_fields: companyShape.custom_fields.default({}),
|
|
54
60
|
})
|
|
55
61
|
|
|
56
62
|
export const updateBody = z.strictObject(companyShape).partial()
|
|
@@ -74,6 +80,8 @@ export function toCreateInput(body: z.infer<typeof createBody>): CreateCompanyIn
|
|
|
74
80
|
techStack: body.tech_stack,
|
|
75
81
|
summary: body.summary,
|
|
76
82
|
tags: body.tags,
|
|
83
|
+
isOwn: body.is_own,
|
|
84
|
+
customFields: body.custom_fields,
|
|
77
85
|
}
|
|
78
86
|
}
|
|
79
87
|
|
|
@@ -92,6 +100,8 @@ export function toUpdateInput(body: z.infer<typeof updateBody>): UpdateCompanyIn
|
|
|
92
100
|
...(body.tech_stack === undefined ? {} : { techStack: body.tech_stack }),
|
|
93
101
|
...(body.summary === undefined ? {} : { summary: body.summary }),
|
|
94
102
|
...(body.tags === undefined ? {} : { tags: body.tags }),
|
|
103
|
+
...(body.is_own === undefined ? {} : { isOwn: body.is_own }),
|
|
104
|
+
...(body.custom_fields === undefined ? {} : { customFields: body.custom_fields }),
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
|
|
@@ -111,6 +121,8 @@ export function companyResponse(company: CompanyView): Record<string, unknown> {
|
|
|
111
121
|
tech_stack: company.techStack,
|
|
112
122
|
summary: company.summary,
|
|
113
123
|
tags: company.tags,
|
|
124
|
+
is_own: company.isOwn,
|
|
125
|
+
custom_fields: renderCustomFieldsForWire(company.customFields),
|
|
114
126
|
created_at: company.createdAt.toISOString(),
|
|
115
127
|
updated_at: company.updatedAt.toISOString(),
|
|
116
128
|
}
|
|
@@ -120,11 +132,19 @@ export function mountCompaniesRoutes(router: Hono, dependencies: CompaniesRoutes
|
|
|
120
132
|
const requireActor = (context: Context): Promise<Actor> => resolveActorFrom(dependencies, context)
|
|
121
133
|
|
|
122
134
|
router.get('/companies', async (context) => {
|
|
135
|
+
// `?is_own=true|false` narrows to the workspace's own companies (or the
|
|
136
|
+
// rest). Anything else is treated as absent, so an unknown value never
|
|
137
|
+
// returns an accidental "everything".
|
|
138
|
+
const isOwnParam = context.req.query('is_own')
|
|
139
|
+
const isOwn =
|
|
140
|
+
isOwnParam === 'true' ? true : isOwnParam === 'false' ? false : undefined
|
|
141
|
+
|
|
123
142
|
const page = await dependencies.service.list(
|
|
124
143
|
await requireActor(context),
|
|
125
144
|
{
|
|
126
145
|
term: context.req.query('q'),
|
|
127
146
|
personIds: readIdFilter(context, 'person_id'),
|
|
147
|
+
isOwn,
|
|
128
148
|
},
|
|
129
149
|
readListParameters(context),
|
|
130
150
|
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ACCOUNT_TYPES, COMPANY_STAGES, ICP_FITS, SIZE_BANDS } from '@kelpie/schemas'
|
|
2
|
-
import {
|
|
2
|
+
import type { CustomFieldValue } from '@kelpie/schemas'
|
|
3
|
+
import { boolean, index, jsonb, pgTable, text, unique } from 'drizzle-orm/pg-core'
|
|
3
4
|
|
|
4
5
|
import {
|
|
5
6
|
checkOneOf,
|
|
@@ -42,6 +43,15 @@ export const companies = pgTable(
|
|
|
42
43
|
techStack: text('tech_stack').array().notNull().default([]),
|
|
43
44
|
summary: text('summary').notNull().default(''),
|
|
44
45
|
tags: text('tags').array().notNull().default([]),
|
|
46
|
+
// "This is us": a workspace marks its own company (or several, e.g. parent
|
|
47
|
+
// and subsidiary) so downstream views can distinguish self from prospects.
|
|
48
|
+
// Loose semantics on purpose — zero or many rows may carry it.
|
|
49
|
+
isOwn: boolean('is_own').notNull().default(false),
|
|
50
|
+
// Workspace-defined fields, keyed by definition key. See people/schema.ts.
|
|
51
|
+
customFields: jsonb('custom_fields')
|
|
52
|
+
.$type<Readonly<Record<string, CustomFieldValue>>>()
|
|
53
|
+
.notNull()
|
|
54
|
+
.default({}),
|
|
45
55
|
createdAt: createdAt(),
|
|
46
56
|
updatedAt: updatedAt(),
|
|
47
57
|
searchVector: searchVector((): readonly SearchVectorPart[] => [
|