@kelpie/server 0.8.0 → 0.10.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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ids.d.ts +11 -0
- package/dist/lib/ids.d.ts.map +1 -1
- package/dist/lib/ids.js +11 -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 +15 -1
- package/dist/modules/attachedRecords.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/routes.d.ts +14 -0
- package/dist/modules/companies/routes.d.ts.map +1 -1
- package/dist/modules/companies/routes.js +7 -0
- package/dist/modules/companies/routes.js.map +1 -1
- package/dist/modules/companies/schema.d.ts +20 -0
- package/dist/modules/companies/schema.d.ts.map +1 -1
- package/dist/modules/companies/schema.js +6 -1
- package/dist/modules/companies/schema.js.map +1 -1
- package/dist/modules/companies/service.d.ts +5 -0
- package/dist/modules/companies/service.d.ts.map +1 -1
- package/dist/modules/companies/service.js +24 -12
- 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 +10 -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/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 +3 -0
- package/dist/modules/eventCatalogs.d.ts.map +1 -1
- package/dist/modules/eventCatalogs.js +3 -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/index.d.ts +38 -0
- package/dist/modules/lists/index.d.ts.map +1 -1
- package/dist/modules/lists/index.js +27 -0
- package/dist/modules/lists/index.js.map +1 -1
- package/dist/modules/lists/repository.d.ts +26 -0
- package/dist/modules/lists/repository.d.ts.map +1 -1
- package/dist/modules/lists/repository.js +32 -0
- package/dist/modules/lists/repository.js.map +1 -1
- package/dist/modules/lists/routes.d.ts +4 -0
- package/dist/modules/lists/routes.d.ts.map +1 -1
- package/dist/modules/lists/routes.js +8 -0
- package/dist/modules/lists/routes.js.map +1 -1
- package/dist/modules/lists/schema.d.ts +17 -0
- package/dist/modules/lists/schema.d.ts.map +1 -1
- package/dist/modules/lists/schema.js +10 -0
- package/dist/modules/lists/schema.js.map +1 -1
- package/dist/modules/lists/service.d.ts +14 -2
- package/dist/modules/lists/service.d.ts.map +1 -1
- package/dist/modules/lists/service.js +55 -7
- package/dist/modules/lists/service.js.map +1 -1
- 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.map +1 -1
- package/dist/modules/people/repository.js +5 -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 +115 -38
- 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/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 +21 -0
- package/dist/modules/sample-data/fixture.d.ts.map +1 -1
- package/dist/modules/sample-data/fixture.js +40 -0
- package/dist/modules/sample-data/fixture.js.map +1 -1
- package/dist/modules/sample-data/index.d.ts.map +1 -1
- package/dist/modules/sample-data/index.js +1 -0
- package/dist/modules/sample-data/index.js.map +1 -1
- package/dist/modules/sample-data/routes.d.ts.map +1 -1
- package/dist/modules/sample-data/routes.js +1 -0
- package/dist/modules/sample-data/routes.js.map +1 -1
- package/dist/modules/sample-data/service.d.ts +1 -0
- package/dist/modules/sample-data/service.d.ts.map +1 -1
- package/dist/modules/sample-data/service.js +77 -8
- package/dist/modules/sample-data/service.js.map +1 -1
- 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/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 +10 -0
- 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 +3 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +3 -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/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/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 +91 -0
- package/package.json +2 -2
- package/src/index.ts +6 -0
- package/src/lib/ids.ts +11 -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 +29 -2
- package/src/modules/companies/index.ts +3 -1
- package/src/modules/companies/routes.ts +7 -0
- package/src/modules/companies/schema.ts +7 -1
- package/src/modules/companies/service.ts +48 -13
- 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 +10 -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/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 +3 -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/index.ts +71 -0
- package/src/modules/lists/repository.ts +64 -0
- package/src/modules/lists/routes.ts +8 -0
- package/src/modules/lists/schema.ts +10 -0
- package/src/modules/lists/service.ts +110 -9
- 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 +5 -0
- package/src/modules/people/routes.ts +127 -18
- package/src/modules/people/schema.ts +109 -3
- package/src/modules/people/service.ts +186 -40
- package/src/modules/people/tools.ts +5 -1
- package/src/modules/personLinks.ts +278 -0
- 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 +63 -0
- package/src/modules/sample-data/index.ts +1 -0
- package/src/modules/sample-data/routes.ts +1 -0
- package/src/modules/sample-data/service.ts +97 -8
- 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/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 +14 -0
- package/src/modules/workspace/starters.ts +5 -0
- package/src/runtime/events.ts +1 -0
- package/src/schema/index.ts +3 -0
- 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' },
|
|
@@ -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 {
|
|
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 {
|
|
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 {
|
|
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, [
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
//
|
|
138
|
-
// in sequence they would be
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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: {
|
|
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 },
|
package/src/runtime/events.ts
CHANGED
package/src/schema/index.ts
CHANGED
|
@@ -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'
|