@elevasis/core 0.7.0 → 0.8.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/package.json +3 -3
- package/src/README.md +41 -41
- package/src/__tests__/publish.test.ts +18 -18
- package/src/__tests__/{template-foundations-compatibility.test.ts → template-core-compatibility.test.ts} +99 -99
- package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1135 -1131
- package/src/_gen/__tests__/scaffold-contracts.test.ts +53 -53
- package/src/_gen/scaffold-contracts.ts +45 -45
- package/src/auth/multi-tenancy/credentials/README.md +38 -38
- package/src/auth/multi-tenancy/credentials/index.ts +6 -6
- package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -39
- package/src/auth/multi-tenancy/credentials/server/service.ts +60 -60
- package/src/auth/multi-tenancy/index.ts +17 -17
- package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -107
- package/src/auth/multi-tenancy/invitations/index.ts +37 -37
- package/src/auth/multi-tenancy/invitations/invitation.ts +86 -86
- package/src/auth/multi-tenancy/invitations/server/index.ts +25 -25
- package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -24
- package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -24
- package/src/auth/multi-tenancy/invitations/supabase.ts +50 -50
- package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -126
- package/src/auth/multi-tenancy/memberships/index.ts +21 -21
- package/src/auth/multi-tenancy/memberships/membership.ts +138 -138
- package/src/auth/multi-tenancy/memberships/server/index.ts +15 -15
- package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -32
- package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -21
- package/src/auth/multi-tenancy/memberships/supabase.ts +46 -46
- package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -128
- package/src/auth/multi-tenancy/organizations/index.ts +23 -23
- package/src/auth/multi-tenancy/organizations/organization.ts +24 -24
- package/src/auth/multi-tenancy/organizations/server/index.ts +10 -10
- package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -35
- package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -20
- package/src/auth/multi-tenancy/types.ts +83 -83
- package/src/auth/multi-tenancy/users/api-schemas.ts +194 -194
- package/src/auth/multi-tenancy/users/index.ts +27 -27
- package/src/auth/multi-tenancy/users/server/index.ts +19 -19
- package/src/auth/multi-tenancy/users/server/transforms.ts +21 -21
- package/src/auth/multi-tenancy/users/server/workos.ts +16 -16
- package/src/auth/multi-tenancy/users/user.ts +65 -65
- package/src/business/README.md +52 -52
- package/src/business/__tests__/entities-published.test.ts +33 -33
- package/src/business/acquisition/api-schemas.ts +759 -759
- package/src/business/acquisition/index.ts +109 -109
- package/src/business/acquisition/types.ts +402 -402
- package/src/business/base-entities.test.ts +481 -481
- package/src/business/base-entities.ts +241 -241
- package/src/business/entities-published.ts +24 -24
- package/src/business/index.ts +15 -15
- package/src/business/pdf/browser/pdfmake-browser.ts +229 -229
- package/src/business/pdf/index.ts +10 -10
- package/src/business/pdf/server/index.ts +21 -21
- package/src/business/pdf/server/themes/default.ts +8 -8
- package/src/business/pdf/server/themes/index.ts +9 -9
- package/src/business/pdf/server/themes/types.ts +8 -8
- package/src/business/pdf/types.ts +272 -272
- package/src/business/projects/index.ts +2 -1
- package/src/business/projects/sse-events.ts +21 -0
- package/src/business/projects/types.ts +89 -89
- package/src/business/sales/api-schemas.ts +75 -75
- package/src/business/seo/__tests__/linking.test.ts +549 -549
- package/src/business/seo/__tests__/types.test.ts +404 -404
- package/src/business/seo/index.ts +2 -2
- package/src/business/seo/linking.ts +281 -281
- package/src/business/seo/types.ts +199 -199
- package/src/commands/queue/index.ts +3 -3
- package/src/commands/queue/schemas.test.ts +593 -593
- package/src/commands/queue/schemas.ts +125 -125
- package/src/commands/queue/sse-events.ts +61 -61
- package/src/commands/queue/types/action.ts +52 -52
- package/src/commands/queue/types/checkpoint.ts +44 -44
- package/src/commands/queue/types/index.ts +7 -7
- package/src/commands/queue/types/task.ts +116 -116
- package/src/commands/queue/types.ts +14 -14
- package/src/content/distribution-metadata.ts +61 -61
- package/src/content/index.ts +10 -10
- package/src/deployments/index.ts +22 -22
- package/src/execution/core/__tests__/archived-logs.test.ts +72 -72
- package/src/execution/core/index.ts +11 -11
- package/src/execution/core/runner-types.ts +80 -80
- package/src/execution/core/server/environment.ts +31 -31
- package/src/execution/core/sse-executions.ts +119 -119
- package/src/execution/core/types.ts +29 -29
- package/src/execution/engine/__tests__/fixtures/test-agents.ts +4 -4
- package/src/execution/engine/__tests__/timeout.test.ts +565 -565
- package/src/execution/engine/agent/__tests__/errors.test.ts +508 -508
- package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -531
- package/src/execution/engine/agent/actions/executor.ts +205 -205
- package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -230
- package/src/execution/engine/agent/actions/processor.ts +116 -116
- package/src/execution/engine/agent/actions/types.ts +70 -70
- package/src/execution/engine/agent/core/agent.ts +810 -810
- package/src/execution/engine/agent/core/types.ts +155 -155
- package/src/execution/engine/agent/errors.ts +251 -251
- package/src/execution/engine/agent/index.ts +78 -78
- package/src/execution/engine/agent/knowledge-map/types.ts +106 -106
- package/src/execution/engine/agent/knowledge-map/utils.ts +101 -101
- package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -754
- package/src/execution/engine/agent/memory/domains.ts +99 -99
- package/src/execution/engine/agent/memory/manager.ts +365 -365
- package/src/execution/engine/agent/memory/processor.ts +66 -66
- package/src/execution/engine/agent/memory/types.ts +90 -90
- package/src/execution/engine/agent/memory/utils.ts +134 -134
- package/src/execution/engine/agent/observability/logging.ts +467 -467
- package/src/execution/engine/agent/observability/types.ts +64 -64
- package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -349
- package/src/execution/engine/agent/reasoning/processor.ts +92 -92
- package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -134
- package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -49
- package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -93
- package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -65
- package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -44
- package/src/execution/engine/agent/reasoning/request-builder.ts +169 -169
- package/src/execution/engine/agent/reasoning/types.ts +18 -18
- package/src/execution/engine/base/errors.ts +118 -118
- package/src/execution/engine/base/index.ts +2 -2
- package/src/execution/engine/base/logging.ts +31 -31
- package/src/execution/engine/base/serialization.ts +324 -324
- package/src/execution/engine/base/types.ts +126 -126
- package/src/execution/engine/base/utils.ts +41 -41
- package/src/execution/engine/index.ts +434 -434
- package/src/execution/engine/interface/index.ts +1 -1
- package/src/execution/engine/interface/types.ts +62 -62
- package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -50
- package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -321
- package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -115
- package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -375
- package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -463
- package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -177
- package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -722
- package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -376
- package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -551
- package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -563
- package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -105
- package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -537
- package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -147
- package/src/execution/engine/llm/adapters/index.ts +17 -17
- package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -116
- package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -130
- package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -137
- package/src/execution/engine/llm/adapters/server/google.ts +283 -283
- package/src/execution/engine/llm/adapters/server/index.ts +12 -12
- package/src/execution/engine/llm/adapters/server/openai.ts +206 -206
- package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -235
- package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -230
- package/src/execution/engine/llm/errors.ts +186 -186
- package/src/execution/engine/llm/model-info.ts +332 -332
- package/src/execution/engine/llm/response-schema-validator.ts +113 -113
- package/src/execution/engine/llm/types.ts +86 -86
- package/src/execution/engine/test-utils/index.ts +6 -6
- package/src/execution/engine/test-utils/mocks.ts +56 -56
- package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -50
- package/src/execution/engine/tools/integration/index.ts +53 -53
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -73
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -209
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -82
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -89
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -16
- package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -293
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -100
- package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -217
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -218
- package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +361 -361
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -162
- package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -594
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -214
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -152
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -141
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -105
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -118
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -165
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -96
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -156
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -220
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -140
- package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +146 -146
- package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -31
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -1189
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -641
- package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -18
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -289
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -154
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -325
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -153
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -84
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -107
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -85
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -91
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -92
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -195
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -113
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -104
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -155
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -196
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -189
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -87
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -112
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -76
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -86
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -98
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -126
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -193
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -99
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -621
- package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -125
- package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -29
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -178
- package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -1473
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -59
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -17
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -80
- package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -102
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -134
- package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -75
- package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -27
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -108
- package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -132
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -274
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -230
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -90
- package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -210
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -517
- package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -309
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -133
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -122
- package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -111
- package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -11
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -78
- package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -222
- package/src/execution/engine/tools/integration/server/index.ts +61 -61
- package/src/execution/engine/tools/integration/service.ts +161 -161
- package/src/execution/engine/tools/integration/tool.ts +253 -253
- package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -74
- package/src/execution/engine/tools/integration/types/apify.ts +92 -92
- package/src/execution/engine/tools/integration/types/index.ts +19 -19
- package/src/execution/engine/tools/integration/types/instantly.ts +557 -557
- package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -56
- package/src/execution/engine/tools/integration/types/stripe.ts +162 -162
- package/src/execution/engine/tools/integration/types/tomba.ts +94 -94
- package/src/execution/engine/tools/lead-service-types.ts +884 -884
- package/src/execution/engine/tools/llm/index.ts +11 -11
- package/src/execution/engine/tools/llm/server/index.ts +8 -8
- package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -118
- package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -441
- package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -248
- package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -319
- package/src/execution/engine/tools/platform/acquisition/index.ts +43 -43
- package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -148
- package/src/execution/engine/tools/platform/acquisition/types.ts +260 -260
- package/src/execution/engine/tools/platform/email/index.ts +122 -122
- package/src/execution/engine/tools/platform/email/types.ts +96 -96
- package/src/execution/engine/tools/platform/index.ts +157 -157
- package/src/execution/engine/tools/platform/notification.ts +81 -81
- package/src/execution/engine/tools/platform/pdf/index.ts +110 -110
- package/src/execution/engine/tools/platform/pdf/types.ts +77 -77
- package/src/execution/engine/tools/platform/scheduler.ts +87 -87
- package/src/execution/engine/tools/platform/storage/index.ts +370 -370
- package/src/execution/engine/tools/platform/types.ts +148 -148
- package/src/execution/engine/tools/registry.ts +700 -699
- package/src/execution/engine/tools/tool-maps.ts +786 -786
- package/src/execution/engine/tools/types.ts +233 -233
- package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -139
- package/src/execution/engine/workflow/errors.ts +63 -63
- package/src/execution/engine/workflow/helpers/index.ts +11 -11
- package/src/execution/engine/workflow/helpers/server/index.ts +8 -8
- package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -93
- package/src/execution/engine/workflow/index.ts +19 -19
- package/src/execution/engine/workflow/log-truncate.ts +26 -26
- package/src/execution/engine/workflow/logging.ts +191 -191
- package/src/execution/engine/workflow/types.ts +182 -182
- package/src/execution/engine/workflow/utils.ts +280 -280
- package/src/execution/engine/workflow/workflow.ts +168 -168
- package/src/execution/index.ts +3 -3
- package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -733
- package/src/execution/scheduler/__tests__/utils.test.ts +1009 -1009
- package/src/execution/scheduler/api-schemas.ts +296 -296
- package/src/execution/scheduler/index.ts +50 -50
- package/src/execution/scheduler/schemas.ts +264 -264
- package/src/execution/scheduler/types.ts +111 -111
- package/src/execution/scheduler/utils.ts +364 -364
- package/src/forms/index.ts +7 -7
- package/src/forms/schemas.ts +69 -69
- package/src/forms/types.ts +70 -70
- package/src/index.ts +71 -60
- package/src/integrations/credentials/__tests__/schemas.test.ts +82 -82
- package/src/integrations/credentials/__tests__/utils.test.ts +144 -144
- package/src/integrations/credentials/api-schemas.ts +143 -143
- package/src/integrations/credentials/index.ts +32 -32
- package/src/integrations/credentials/schemas.ts +164 -164
- package/src/integrations/credentials/utils.ts +59 -59
- package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -59
- package/src/integrations/oauth/api-schemas.ts +92 -92
- package/src/integrations/oauth/index.ts +19 -19
- package/src/integrations/oauth/provider-registry.ts +61 -61
- package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -183
- package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -577
- package/src/integrations/oauth/server/credentials.ts +39 -39
- package/src/integrations/oauth/server/refresh.ts +214 -214
- package/src/integrations/oauth/types.ts +34 -34
- package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -318
- package/src/integrations/webhook-endpoints/api-schemas.ts +102 -102
- package/src/integrations/webhook-endpoints/index.ts +28 -28
- package/src/integrations/webhook-endpoints/types.ts +51 -51
- package/src/operations/activities/api-schemas.ts +79 -79
- package/src/operations/activities/index.ts +9 -9
- package/src/operations/activities/sse-events.ts +30 -30
- package/src/operations/activities/types.ts +63 -63
- package/src/operations/debug-logs/client.ts +60 -60
- package/src/operations/debug-logs/debug-logger.ts +83 -83
- package/src/operations/debug-logs/index.ts +8 -8
- package/src/operations/debug-logs/server.ts +19 -19
- package/src/operations/debug-logs/types.ts +33 -33
- package/src/operations/index.ts +50 -50
- package/src/operations/notifications/api-schemas.ts +91 -91
- package/src/operations/notifications/index.ts +3 -3
- package/src/operations/notifications/sse-events.ts +21 -21
- package/src/operations/notifications/types.ts +47 -47
- package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -297
- package/src/operations/observability/__tests__/utils.test.ts +54 -54
- package/src/operations/observability/ai-usage-collector.ts +64 -64
- package/src/operations/observability/index.ts +13 -13
- package/src/operations/observability/metrics-collector.ts +49 -49
- package/src/operations/observability/schemas.ts +39 -39
- package/src/operations/observability/types.ts +463 -463
- package/src/operations/observability/utils.ts +77 -77
- package/src/operations/sessions/__tests__/manager.test.ts +821 -821
- package/src/operations/sessions/index.ts +26 -26
- package/src/operations/sessions/server/manager.ts +90 -90
- package/src/operations/sessions/server/session.ts +180 -180
- package/src/operations/sessions/types.ts +98 -98
- package/src/operations/triggers/index.ts +12 -12
- package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -44
- package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -51
- package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -49
- package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -45
- package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -54
- package/src/operations/triggers/webhook/index.ts +35 -35
- package/src/operations/triggers/webhook/types.ts +74 -74
- package/src/organization-model/README.md +97 -97
- package/src/organization-model/__tests__/defaults.test.ts +175 -175
- package/src/organization-model/__tests__/domains/customers.test.ts +295 -295
- package/src/organization-model/__tests__/domains/goals.test.ts +479 -479
- package/src/organization-model/__tests__/domains/identity.test.ts +279 -279
- package/src/organization-model/__tests__/domains/navigation.test.ts +212 -212
- package/src/organization-model/__tests__/domains/offerings.test.ts +419 -419
- package/src/organization-model/__tests__/domains/operations.test.ts +203 -203
- package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -362
- package/src/organization-model/__tests__/domains/roles.test.ts +347 -347
- package/src/organization-model/__tests__/domains/statuses.test.ts +243 -243
- package/src/organization-model/__tests__/foundation.test.ts +105 -105
- package/src/organization-model/__tests__/graph.test.ts +894 -894
- package/src/organization-model/__tests__/resolve.test.ts +690 -690
- package/src/organization-model/__tests__/schema.test.ts +407 -407
- package/src/organization-model/contracts.ts +14 -14
- package/src/organization-model/defaults.ts +148 -148
- package/src/organization-model/domains/branding.ts +22 -22
- package/src/organization-model/domains/customers.ts +75 -75
- package/src/organization-model/domains/features.ts +22 -22
- package/src/organization-model/domains/goals.ts +80 -80
- package/src/organization-model/domains/identity.ts +94 -94
- package/src/organization-model/domains/navigation.ts +391 -391
- package/src/organization-model/domains/offerings.ts +66 -66
- package/src/organization-model/domains/operations.ts +85 -85
- package/src/organization-model/domains/projects.ts +48 -48
- package/src/organization-model/domains/prospecting.ts +33 -33
- package/src/organization-model/domains/roles.ts +55 -55
- package/src/organization-model/domains/sales.ts +94 -94
- package/src/organization-model/domains/shared.ts +62 -62
- package/src/organization-model/domains/statuses.ts +130 -130
- package/src/organization-model/foundation.ts +97 -97
- package/src/organization-model/graph/build.ts +399 -399
- package/src/organization-model/graph/index.ts +4 -4
- package/src/organization-model/graph/schema.ts +48 -48
- package/src/organization-model/graph/types.ts +40 -40
- package/src/organization-model/index.ts +13 -13
- package/src/organization-model/organization-graph.mdx +272 -272
- package/src/organization-model/organization-model.mdx +320 -320
- package/src/organization-model/published.ts +85 -85
- package/src/organization-model/resolve.ts +66 -66
- package/src/organization-model/schema.ts +287 -287
- package/src/organization-model/types.ts +46 -46
- package/src/platform/api/index.ts +1 -1
- package/src/platform/api/types.ts +35 -35
- package/src/platform/constants/http.ts +37 -37
- package/src/platform/constants/index.ts +5 -5
- package/src/platform/constants/limits.ts +32 -32
- package/src/platform/constants/resilience.ts +51 -51
- package/src/platform/constants/timeouts.ts +20 -20
- package/src/platform/constants/versions.ts +3 -3
- package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -347
- package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1028 -1028
- package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -393
- package/src/platform/registry/__tests__/resource-registry.test.ts +2005 -2005
- package/src/platform/registry/__tests__/serialization.test.ts +1127 -1127
- package/src/platform/registry/command-view.ts +180 -180
- package/src/platform/registry/domains.ts +165 -165
- package/src/platform/registry/index.ts +93 -93
- package/src/platform/registry/reserved.ts +24 -24
- package/src/platform/registry/resource-metadata.ts +59 -59
- package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -129
- package/src/platform/registry/resource-registry.ts +876 -876
- package/src/platform/registry/serialization.ts +273 -273
- package/src/platform/registry/serialized-types.ts +231 -231
- package/src/platform/registry/stats-types.ts +66 -66
- package/src/platform/registry/types.ts +404 -404
- package/src/platform/registry/validation.ts +513 -513
- package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -471
- package/src/platform/resilience/circuit-breaker.ts +164 -164
- package/src/platform/resilience/errors.ts +68 -68
- package/src/platform/resilience/http-error-mapper.ts +129 -129
- package/src/platform/resilience/index.ts +93 -93
- package/src/platform/resilience/rate-limiter-types.ts +46 -46
- package/src/platform/resilience/rate-limiter.ts +140 -140
- package/src/platform/resilience/retry.ts +89 -89
- package/src/platform/resilience/timeout.ts +63 -63
- package/src/platform/sse/events.ts +37 -34
- package/src/platform/sse/index.ts +7 -7
- package/src/platform/utils/__tests__/validation.test.ts +1083 -1083
- package/src/platform/utils/currency.ts +96 -96
- package/src/platform/utils/debounce.ts +52 -52
- package/src/platform/utils/error.ts +41 -41
- package/src/platform/utils/hmac.test.ts +97 -97
- package/src/platform/utils/index.ts +32 -32
- package/src/platform/utils/server/betterstack-logger.ts +210 -210
- package/src/platform/utils/server/hmac.ts +44 -44
- package/src/platform/utils/server/unsubscribe.ts +111 -111
- package/src/platform/utils/token-counter.ts +96 -96
- package/src/platform/utils/validation.ts +425 -425
- package/src/projects/api-schemas.ts +268 -268
- package/src/published.ts +1 -1
- package/src/reference/_generated/contracts.md +611 -607
- package/src/reference/glossary.md +105 -105
- package/src/requests/__tests__/api-schemas.test.ts +277 -277
- package/src/requests/api-schemas.ts +83 -83
- package/src/requests/index.ts +1 -1
- package/src/scaffold-registry/__tests__/index.test.ts +17 -0
- package/src/scaffold-registry/__tests__/schema.test.ts +329 -230
- package/src/scaffold-registry/index.ts +205 -189
- package/src/scaffold-registry/schema.ts +196 -128
- package/src/server.ts +272 -272
- package/src/supabase/database.types.ts +2719 -2719
- package/src/supabase/helpers.ts +20 -20
- package/src/supabase/index.ts +52 -52
- package/src/supabase/server/client.ts +58 -58
- package/src/test-utils/README.md +38 -38
- package/src/test-utils/browser-mocks.ts +54 -54
- package/src/test-utils/fixtures/api-keys.ts +52 -52
- package/src/test-utils/fixtures/index.ts +4 -4
- package/src/test-utils/fixtures/memberships.ts +80 -80
- package/src/test-utils/fixtures/organizations.ts +69 -69
- package/src/test-utils/fixtures/users.ts +79 -79
- package/src/test-utils/index.ts +11 -11
- package/src/test-utils/mocks/index.ts +2 -2
- package/src/test-utils/mocks/supabase.ts +142 -142
- package/src/test-utils/mocks/workos.ts +108 -108
- package/src/test-utils/rls/RLSTestContext.ts +556 -556
- package/src/test-utils/rls/index.ts +1 -1
|
@@ -1,402 +1,402 @@
|
|
|
1
|
-
import type { Database } from '../../supabase/database.types'
|
|
2
|
-
|
|
3
|
-
// =============================================================================
|
|
4
|
-
// Supabase-Generated Types (Re-exported from database.types)
|
|
5
|
-
// =============================================================================
|
|
6
|
-
|
|
7
|
-
/** Raw database row type for acq_lists table */
|
|
8
|
-
export type AcqListRow = Database['public']['Tables']['acq_lists']['Row']
|
|
9
|
-
/** Insert type for acq_lists table */
|
|
10
|
-
export type AcqListInsert = Database['public']['Tables']['acq_lists']['Insert']
|
|
11
|
-
|
|
12
|
-
/** Raw database row type for acq_companies table */
|
|
13
|
-
export type AcqCompanyRow = Database['public']['Tables']['acq_companies']['Row']
|
|
14
|
-
/** Insert type for acq_companies table */
|
|
15
|
-
export type AcqCompanyInsert = Database['public']['Tables']['acq_companies']['Insert']
|
|
16
|
-
|
|
17
|
-
/** Raw database row type for acq_contacts table */
|
|
18
|
-
export type AcqContactRow = Database['public']['Tables']['acq_contacts']['Row']
|
|
19
|
-
/** Insert type for acq_contacts table */
|
|
20
|
-
export type AcqContactInsert = Database['public']['Tables']['acq_contacts']['Insert']
|
|
21
|
-
|
|
22
|
-
/** Raw database row type for acq_deals table */
|
|
23
|
-
export type AcqDealRow = Database['public']['Tables']['acq_deals']['Row']
|
|
24
|
-
/** Insert type for acq_deals table */
|
|
25
|
-
export type AcqDealInsert = Database['public']['Tables']['acq_deals']['Insert']
|
|
26
|
-
|
|
27
|
-
/** Raw database row type for acq_deal_tasks table */
|
|
28
|
-
export type AcqDealTaskRow = Database['public']['Tables']['acq_deal_tasks']['Row']
|
|
29
|
-
/** Insert type for acq_deal_tasks table */
|
|
30
|
-
export type AcqDealTaskInsert = Database['public']['Tables']['acq_deal_tasks']['Insert']
|
|
31
|
-
|
|
32
|
-
// =============================================================================
|
|
33
|
-
// Supporting Types
|
|
34
|
-
// =============================================================================
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Represents a web post from company website scraping.
|
|
38
|
-
* Used for recent blog posts, news, or announcements.
|
|
39
|
-
*/
|
|
40
|
-
export interface WebPost {
|
|
41
|
-
/** ISO date string of when the post was published */
|
|
42
|
-
date: string
|
|
43
|
-
/** Title of the web post */
|
|
44
|
-
title: string
|
|
45
|
-
/** Brief summary of the post content */
|
|
46
|
-
summary: string
|
|
47
|
-
/** AI-generated insight about the post's relevance */
|
|
48
|
-
aiInsight?: string
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Tracks pipeline status for a company across all processing stages.
|
|
53
|
-
*/
|
|
54
|
-
export interface CompanyPipelineStatus {
|
|
55
|
-
acquired: boolean
|
|
56
|
-
enrichment: {
|
|
57
|
-
[source: string]: {
|
|
58
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
59
|
-
completedAt?: string
|
|
60
|
-
error?: string
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Tracks pipeline status for a contact across all processing stages.
|
|
67
|
-
*/
|
|
68
|
-
export interface ContactPipelineStatus {
|
|
69
|
-
enrichment: {
|
|
70
|
-
[source: string]: {
|
|
71
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
72
|
-
completedAt?: string
|
|
73
|
-
error?: string
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
personalization: {
|
|
77
|
-
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
78
|
-
completedAt?: string
|
|
79
|
-
}
|
|
80
|
-
outreach: {
|
|
81
|
-
status: 'pending' | 'sent' | 'replied' | 'bounced' | 'opted-out'
|
|
82
|
-
sentAt?: string
|
|
83
|
-
channel?: string
|
|
84
|
-
campaignId?: string
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Enrichment data collected for a company from various sources.
|
|
90
|
-
*/
|
|
91
|
-
export interface CompanyEnrichmentData {
|
|
92
|
-
googleMaps?: {
|
|
93
|
-
placeId?: string
|
|
94
|
-
totalScore?: number
|
|
95
|
-
reviewsCount?: number
|
|
96
|
-
address?: string
|
|
97
|
-
phone?: string
|
|
98
|
-
categoryName?: string
|
|
99
|
-
googleMapsUrl?: string
|
|
100
|
-
scrapedAt?: string
|
|
101
|
-
}
|
|
102
|
-
websiteCrawl?: {
|
|
103
|
-
companyDescription?: string
|
|
104
|
-
services?: string[]
|
|
105
|
-
specialties?: string[]
|
|
106
|
-
staff?: Array<{ name: string; title?: string; email?: string }>
|
|
107
|
-
automationGaps?: string[]
|
|
108
|
-
targetAudience?: string
|
|
109
|
-
category?: string
|
|
110
|
-
segment?: string
|
|
111
|
-
recentWin?: string
|
|
112
|
-
emailCount?: number
|
|
113
|
-
pageCount?: number
|
|
114
|
-
totalChars?: number
|
|
115
|
-
crawledAt?: string
|
|
116
|
-
extractedAt?: string
|
|
117
|
-
}
|
|
118
|
-
website?: {
|
|
119
|
-
missionVision?: string
|
|
120
|
-
uniqueAttributes?: string
|
|
121
|
-
coreOfferings?: string
|
|
122
|
-
targetAudience?: string
|
|
123
|
-
companyValues?: string
|
|
124
|
-
businessDescription?: string
|
|
125
|
-
recentPosts?: Array<{ date?: string; title?: string; summary?: string; aiInsight?: string }>
|
|
126
|
-
}
|
|
127
|
-
tomba?: {
|
|
128
|
-
waterfallEmail?: {
|
|
129
|
-
email: string
|
|
130
|
-
name?: string
|
|
131
|
-
title?: string
|
|
132
|
-
department?: string
|
|
133
|
-
} | null
|
|
134
|
-
genericEmail?: string | null
|
|
135
|
-
totalFound?: number
|
|
136
|
-
searchedAt?: string
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Enrichment data collected for a contact from various sources.
|
|
142
|
-
*/
|
|
143
|
-
export interface ContactEnrichmentData {
|
|
144
|
-
linkedin?: {
|
|
145
|
-
summary?: string
|
|
146
|
-
pastExperience?: string
|
|
147
|
-
education?: string
|
|
148
|
-
activity?: Array<{ date?: string; content?: string }>
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// =============================================================================
|
|
153
|
-
// Domain Types (camelCase transformations of database rows)
|
|
154
|
-
// =============================================================================
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Acquisition list for organizing contacts and companies.
|
|
158
|
-
* Transformed from AcqListRow with camelCase properties.
|
|
159
|
-
*/
|
|
160
|
-
export interface AcqList {
|
|
161
|
-
id: string
|
|
162
|
-
organizationId: string
|
|
163
|
-
name: string
|
|
164
|
-
description: string | null
|
|
165
|
-
type: string
|
|
166
|
-
batchIds: string[]
|
|
167
|
-
instantlyCampaignId: string | null
|
|
168
|
-
status: string
|
|
169
|
-
metadata: Record<string, unknown>
|
|
170
|
-
launchedAt: Date | null
|
|
171
|
-
completedAt: Date | null
|
|
172
|
-
createdAt: Date
|
|
173
|
-
config: ListConfig
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Company record in the acquisition database.
|
|
178
|
-
* Contains enriched company data from various sources.
|
|
179
|
-
* Transformed from AcqCompanyRow with camelCase properties.
|
|
180
|
-
*/
|
|
181
|
-
export interface AcqCompany {
|
|
182
|
-
id: string
|
|
183
|
-
organizationId: string
|
|
184
|
-
name: string
|
|
185
|
-
domain: string | null
|
|
186
|
-
linkedinUrl: string | null
|
|
187
|
-
website: string | null
|
|
188
|
-
numEmployees: number | null
|
|
189
|
-
foundedYear: number | null
|
|
190
|
-
locationCity: string | null
|
|
191
|
-
locationState: string | null
|
|
192
|
-
category: string | null
|
|
193
|
-
categoryPain: string | null
|
|
194
|
-
segment: string | null
|
|
195
|
-
pipelineStatus: CompanyPipelineStatus | null
|
|
196
|
-
enrichmentData: CompanyEnrichmentData | null
|
|
197
|
-
source: string | null
|
|
198
|
-
batchId: string | null
|
|
199
|
-
status: 'active' | 'invalid'
|
|
200
|
-
verticalResearch: string | null
|
|
201
|
-
createdAt: Date
|
|
202
|
-
updatedAt: Date
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Contact record in the acquisition database.
|
|
207
|
-
* Contains enriched contact data and personalization content.
|
|
208
|
-
* Transformed from AcqContactRow with camelCase properties.
|
|
209
|
-
*/
|
|
210
|
-
export interface AcqContact {
|
|
211
|
-
id: string
|
|
212
|
-
organizationId: string
|
|
213
|
-
companyId: string | null
|
|
214
|
-
email: string
|
|
215
|
-
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
216
|
-
firstName: string | null
|
|
217
|
-
lastName: string | null
|
|
218
|
-
linkedinUrl: string | null
|
|
219
|
-
title: string | null
|
|
220
|
-
headline: string | null
|
|
221
|
-
filterReason: string | null
|
|
222
|
-
openingLine: string | null
|
|
223
|
-
source: string | null
|
|
224
|
-
sourceId: string | null
|
|
225
|
-
pipelineStatus: ContactPipelineStatus | null
|
|
226
|
-
enrichmentData: ContactEnrichmentData | null
|
|
227
|
-
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
228
|
-
attioPersonId: string | null
|
|
229
|
-
batchId: string | null
|
|
230
|
-
status: 'active' | 'invalid'
|
|
231
|
-
createdAt: Date
|
|
232
|
-
updatedAt: Date
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// ─── Deal UI Types ───────────────────────────────────────────────────────────
|
|
236
|
-
|
|
237
|
-
export type DealStage = 'interested' | 'proposal' | 'closing' | 'closed_won' | 'closed_lost' | 'nurturing'
|
|
238
|
-
|
|
239
|
-
export interface KanbanStageConfig {
|
|
240
|
-
color: string // Mantine color token (e.g. 'blue', 'teal')
|
|
241
|
-
label?: string // Optional display label override
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
export type KanbanBoardConfig = Partial<Record<DealStage, KanbanStageConfig>>
|
|
245
|
-
|
|
246
|
-
export interface DealContact {
|
|
247
|
-
id: string
|
|
248
|
-
first_name: string | null
|
|
249
|
-
last_name: string | null
|
|
250
|
-
email: string
|
|
251
|
-
title: string | null
|
|
252
|
-
headline: string | null
|
|
253
|
-
linkedin_url: string | null
|
|
254
|
-
pipeline_status: Record<string, unknown> | null
|
|
255
|
-
enrichment_data: Record<string, unknown> | null
|
|
256
|
-
company: {
|
|
257
|
-
id: string
|
|
258
|
-
name: string
|
|
259
|
-
domain: string | null
|
|
260
|
-
website: string | null
|
|
261
|
-
linkedin_url: string | null
|
|
262
|
-
segment: string | null
|
|
263
|
-
category: string | null
|
|
264
|
-
num_employees: number | null
|
|
265
|
-
} | null
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
export interface DealFilters {
|
|
269
|
-
stage?: DealStage
|
|
270
|
-
search?: string
|
|
271
|
-
limit?: number
|
|
272
|
-
offset?: number
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/** Deal list item with joined contact and company data */
|
|
276
|
-
export interface DealListItem extends AcqDealRow {
|
|
277
|
-
contact: DealContact | null
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
export type DealDetail = DealListItem
|
|
281
|
-
|
|
282
|
-
/** Task kind options for a deal task (human follow-up action type) */
|
|
283
|
-
export type AcqDealTaskKind = 'call' | 'email' | 'meeting' | 'other'
|
|
284
|
-
|
|
285
|
-
/**
|
|
286
|
-
* A CRM to-do item attached to a deal representing a human follow-up action.
|
|
287
|
-
* Transformed from AcqDealTaskRow with camelCase properties.
|
|
288
|
-
*/
|
|
289
|
-
export interface AcqDealTask {
|
|
290
|
-
id: string
|
|
291
|
-
organizationId: string
|
|
292
|
-
dealId: string
|
|
293
|
-
title: string
|
|
294
|
-
description: string | null
|
|
295
|
-
kind: AcqDealTaskKind
|
|
296
|
-
dueAt: string | null
|
|
297
|
-
assigneeUserId: string | null
|
|
298
|
-
completedAt: string | null
|
|
299
|
-
completedByUserId: string | null
|
|
300
|
-
createdAt: string
|
|
301
|
-
updatedAt: string
|
|
302
|
-
createdByUserId: string | null
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// ─── List Config / Progress / Telemetry Types ────────────────────────────────
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* One ordered step in a list's pipeline. Maps to a deployed workflow
|
|
309
|
-
* (e.g. 'lgn-03-company-qualification-workflow'). The `inputTemplate`
|
|
310
|
-
* is merged with `{ listId }` at run time to form the workflow input.
|
|
311
|
-
*/
|
|
312
|
-
export interface PipelineStep {
|
|
313
|
-
/** Stable key, e.g. 'scrape' | 'extract' | 'qualify' | 'discover' | 'verify' | 'personalize'. */
|
|
314
|
-
key: string
|
|
315
|
-
/** Human label rendered in the UI stepper. */
|
|
316
|
-
label: string
|
|
317
|
-
/** Deployed workflow resourceId (e.g. 'lgn-03-company-qualification-workflow'). */
|
|
318
|
-
resourceId: string
|
|
319
|
-
/** Input defaults merged with `{ listId }` at dispatch. */
|
|
320
|
-
inputTemplate: Record<string, unknown>
|
|
321
|
-
/** Whether the UI shows the Run button. */
|
|
322
|
-
enabled: boolean
|
|
323
|
-
/** Display order (ascending). */
|
|
324
|
-
order: number
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
export type CompanyListStage = 'populated' | 'extracted' | 'qualified'
|
|
328
|
-
|
|
329
|
-
export type ContactListStage = 'discovered' | 'verified' | 'personalized' | 'uploaded'
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Per-list pipeline configuration stored as jsonb in `acq_lists.config`.
|
|
333
|
-
*
|
|
334
|
-
* `qualification` is the only required subtree. Every other subtree is optional
|
|
335
|
-
* and inherits global defaults when omitted: workflows resolve values as
|
|
336
|
-
* `list.config.foo ?? globalDefaults.foo`. Seeded rows from
|
|
337
|
-
* `20260413000100_backfill_list_configs.sql` only populate `qualification`
|
|
338
|
-
* and `scraping`; the rest was intentionally omitted.
|
|
339
|
-
*/
|
|
340
|
-
export interface ListConfig {
|
|
341
|
-
qualification: {
|
|
342
|
-
/** One-line description of the target vertical/segment. */
|
|
343
|
-
targetDescription: string
|
|
344
|
-
/** Minimum Google review count to qualify. */
|
|
345
|
-
minReviewCount: number
|
|
346
|
-
/** Minimum Google star rating to qualify (e.g. 3.0). */
|
|
347
|
-
minRating: number
|
|
348
|
-
/** Whether to exclude franchises/chains during qualification. */
|
|
349
|
-
excludeFranchises: boolean
|
|
350
|
-
/** Free-form LLM rules layered on top of the structured criteria. */
|
|
351
|
-
customRules: string
|
|
352
|
-
}
|
|
353
|
-
enrichment?: {
|
|
354
|
-
emailDiscovery?: {
|
|
355
|
-
primary: 'tomba' | 'anymailfinder'
|
|
356
|
-
credentialName?: string
|
|
357
|
-
}
|
|
358
|
-
emailVerification?: {
|
|
359
|
-
provider: 'millionverifier'
|
|
360
|
-
threshold?: 'ok' | 'ok+catch_all'
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
personalization?: {
|
|
364
|
-
industryContext?: string
|
|
365
|
-
/** Email body template with tags like {{opening_line}} / {{category_pain}}. */
|
|
366
|
-
emailBody?: string
|
|
367
|
-
creativeDirection?: string
|
|
368
|
-
/** Contradiction-prevention rules layered into the personalization prompt. */
|
|
369
|
-
exclusionRules?: string[]
|
|
370
|
-
}
|
|
371
|
-
pipeline?: {
|
|
372
|
-
steps: PipelineStep[]
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* Live-scan aggregate telemetry for a single list, computed on demand from
|
|
378
|
-
* the list junction tables and current contact deliverability state.
|
|
379
|
-
*/
|
|
380
|
-
export interface ListTelemetry {
|
|
381
|
-
listId: string
|
|
382
|
-
totalCompanies: number
|
|
383
|
-
totalContacts: number
|
|
384
|
-
stageCounts: {
|
|
385
|
-
populated: number
|
|
386
|
-
extracted: number
|
|
387
|
-
qualified: number
|
|
388
|
-
discovered: number
|
|
389
|
-
verified: number
|
|
390
|
-
personalized: number
|
|
391
|
-
uploaded: number
|
|
392
|
-
}
|
|
393
|
-
deliverability: {
|
|
394
|
-
valid: number
|
|
395
|
-
risky: number
|
|
396
|
-
invalid: number
|
|
397
|
-
unknown: number
|
|
398
|
-
bounced: number
|
|
399
|
-
}
|
|
400
|
-
/** Reserved -- active workflow IDs associated with this list. */
|
|
401
|
-
activeWorkflows?: string[]
|
|
402
|
-
}
|
|
1
|
+
import type { Database } from '../../supabase/database.types'
|
|
2
|
+
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Supabase-Generated Types (Re-exported from database.types)
|
|
5
|
+
// =============================================================================
|
|
6
|
+
|
|
7
|
+
/** Raw database row type for acq_lists table */
|
|
8
|
+
export type AcqListRow = Database['public']['Tables']['acq_lists']['Row']
|
|
9
|
+
/** Insert type for acq_lists table */
|
|
10
|
+
export type AcqListInsert = Database['public']['Tables']['acq_lists']['Insert']
|
|
11
|
+
|
|
12
|
+
/** Raw database row type for acq_companies table */
|
|
13
|
+
export type AcqCompanyRow = Database['public']['Tables']['acq_companies']['Row']
|
|
14
|
+
/** Insert type for acq_companies table */
|
|
15
|
+
export type AcqCompanyInsert = Database['public']['Tables']['acq_companies']['Insert']
|
|
16
|
+
|
|
17
|
+
/** Raw database row type for acq_contacts table */
|
|
18
|
+
export type AcqContactRow = Database['public']['Tables']['acq_contacts']['Row']
|
|
19
|
+
/** Insert type for acq_contacts table */
|
|
20
|
+
export type AcqContactInsert = Database['public']['Tables']['acq_contacts']['Insert']
|
|
21
|
+
|
|
22
|
+
/** Raw database row type for acq_deals table */
|
|
23
|
+
export type AcqDealRow = Database['public']['Tables']['acq_deals']['Row']
|
|
24
|
+
/** Insert type for acq_deals table */
|
|
25
|
+
export type AcqDealInsert = Database['public']['Tables']['acq_deals']['Insert']
|
|
26
|
+
|
|
27
|
+
/** Raw database row type for acq_deal_tasks table */
|
|
28
|
+
export type AcqDealTaskRow = Database['public']['Tables']['acq_deal_tasks']['Row']
|
|
29
|
+
/** Insert type for acq_deal_tasks table */
|
|
30
|
+
export type AcqDealTaskInsert = Database['public']['Tables']['acq_deal_tasks']['Insert']
|
|
31
|
+
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// Supporting Types
|
|
34
|
+
// =============================================================================
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Represents a web post from company website scraping.
|
|
38
|
+
* Used for recent blog posts, news, or announcements.
|
|
39
|
+
*/
|
|
40
|
+
export interface WebPost {
|
|
41
|
+
/** ISO date string of when the post was published */
|
|
42
|
+
date: string
|
|
43
|
+
/** Title of the web post */
|
|
44
|
+
title: string
|
|
45
|
+
/** Brief summary of the post content */
|
|
46
|
+
summary: string
|
|
47
|
+
/** AI-generated insight about the post's relevance */
|
|
48
|
+
aiInsight?: string
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Tracks pipeline status for a company across all processing stages.
|
|
53
|
+
*/
|
|
54
|
+
export interface CompanyPipelineStatus {
|
|
55
|
+
acquired: boolean
|
|
56
|
+
enrichment: {
|
|
57
|
+
[source: string]: {
|
|
58
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
59
|
+
completedAt?: string
|
|
60
|
+
error?: string
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Tracks pipeline status for a contact across all processing stages.
|
|
67
|
+
*/
|
|
68
|
+
export interface ContactPipelineStatus {
|
|
69
|
+
enrichment: {
|
|
70
|
+
[source: string]: {
|
|
71
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
72
|
+
completedAt?: string
|
|
73
|
+
error?: string
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
personalization: {
|
|
77
|
+
status: 'pending' | 'complete' | 'failed' | 'skipped'
|
|
78
|
+
completedAt?: string
|
|
79
|
+
}
|
|
80
|
+
outreach: {
|
|
81
|
+
status: 'pending' | 'sent' | 'replied' | 'bounced' | 'opted-out'
|
|
82
|
+
sentAt?: string
|
|
83
|
+
channel?: string
|
|
84
|
+
campaignId?: string
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Enrichment data collected for a company from various sources.
|
|
90
|
+
*/
|
|
91
|
+
export interface CompanyEnrichmentData {
|
|
92
|
+
googleMaps?: {
|
|
93
|
+
placeId?: string
|
|
94
|
+
totalScore?: number
|
|
95
|
+
reviewsCount?: number
|
|
96
|
+
address?: string
|
|
97
|
+
phone?: string
|
|
98
|
+
categoryName?: string
|
|
99
|
+
googleMapsUrl?: string
|
|
100
|
+
scrapedAt?: string
|
|
101
|
+
}
|
|
102
|
+
websiteCrawl?: {
|
|
103
|
+
companyDescription?: string
|
|
104
|
+
services?: string[]
|
|
105
|
+
specialties?: string[]
|
|
106
|
+
staff?: Array<{ name: string; title?: string; email?: string }>
|
|
107
|
+
automationGaps?: string[]
|
|
108
|
+
targetAudience?: string
|
|
109
|
+
category?: string
|
|
110
|
+
segment?: string
|
|
111
|
+
recentWin?: string
|
|
112
|
+
emailCount?: number
|
|
113
|
+
pageCount?: number
|
|
114
|
+
totalChars?: number
|
|
115
|
+
crawledAt?: string
|
|
116
|
+
extractedAt?: string
|
|
117
|
+
}
|
|
118
|
+
website?: {
|
|
119
|
+
missionVision?: string
|
|
120
|
+
uniqueAttributes?: string
|
|
121
|
+
coreOfferings?: string
|
|
122
|
+
targetAudience?: string
|
|
123
|
+
companyValues?: string
|
|
124
|
+
businessDescription?: string
|
|
125
|
+
recentPosts?: Array<{ date?: string; title?: string; summary?: string; aiInsight?: string }>
|
|
126
|
+
}
|
|
127
|
+
tomba?: {
|
|
128
|
+
waterfallEmail?: {
|
|
129
|
+
email: string
|
|
130
|
+
name?: string
|
|
131
|
+
title?: string
|
|
132
|
+
department?: string
|
|
133
|
+
} | null
|
|
134
|
+
genericEmail?: string | null
|
|
135
|
+
totalFound?: number
|
|
136
|
+
searchedAt?: string
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Enrichment data collected for a contact from various sources.
|
|
142
|
+
*/
|
|
143
|
+
export interface ContactEnrichmentData {
|
|
144
|
+
linkedin?: {
|
|
145
|
+
summary?: string
|
|
146
|
+
pastExperience?: string
|
|
147
|
+
education?: string
|
|
148
|
+
activity?: Array<{ date?: string; content?: string }>
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// =============================================================================
|
|
153
|
+
// Domain Types (camelCase transformations of database rows)
|
|
154
|
+
// =============================================================================
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Acquisition list for organizing contacts and companies.
|
|
158
|
+
* Transformed from AcqListRow with camelCase properties.
|
|
159
|
+
*/
|
|
160
|
+
export interface AcqList {
|
|
161
|
+
id: string
|
|
162
|
+
organizationId: string
|
|
163
|
+
name: string
|
|
164
|
+
description: string | null
|
|
165
|
+
type: string
|
|
166
|
+
batchIds: string[]
|
|
167
|
+
instantlyCampaignId: string | null
|
|
168
|
+
status: string
|
|
169
|
+
metadata: Record<string, unknown>
|
|
170
|
+
launchedAt: Date | null
|
|
171
|
+
completedAt: Date | null
|
|
172
|
+
createdAt: Date
|
|
173
|
+
config: ListConfig
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Company record in the acquisition database.
|
|
178
|
+
* Contains enriched company data from various sources.
|
|
179
|
+
* Transformed from AcqCompanyRow with camelCase properties.
|
|
180
|
+
*/
|
|
181
|
+
export interface AcqCompany {
|
|
182
|
+
id: string
|
|
183
|
+
organizationId: string
|
|
184
|
+
name: string
|
|
185
|
+
domain: string | null
|
|
186
|
+
linkedinUrl: string | null
|
|
187
|
+
website: string | null
|
|
188
|
+
numEmployees: number | null
|
|
189
|
+
foundedYear: number | null
|
|
190
|
+
locationCity: string | null
|
|
191
|
+
locationState: string | null
|
|
192
|
+
category: string | null
|
|
193
|
+
categoryPain: string | null
|
|
194
|
+
segment: string | null
|
|
195
|
+
pipelineStatus: CompanyPipelineStatus | null
|
|
196
|
+
enrichmentData: CompanyEnrichmentData | null
|
|
197
|
+
source: string | null
|
|
198
|
+
batchId: string | null
|
|
199
|
+
status: 'active' | 'invalid'
|
|
200
|
+
verticalResearch: string | null
|
|
201
|
+
createdAt: Date
|
|
202
|
+
updatedAt: Date
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Contact record in the acquisition database.
|
|
207
|
+
* Contains enriched contact data and personalization content.
|
|
208
|
+
* Transformed from AcqContactRow with camelCase properties.
|
|
209
|
+
*/
|
|
210
|
+
export interface AcqContact {
|
|
211
|
+
id: string
|
|
212
|
+
organizationId: string
|
|
213
|
+
companyId: string | null
|
|
214
|
+
email: string
|
|
215
|
+
emailValid: 'VALID' | 'INVALID' | 'RISKY' | 'UNKNOWN' | null
|
|
216
|
+
firstName: string | null
|
|
217
|
+
lastName: string | null
|
|
218
|
+
linkedinUrl: string | null
|
|
219
|
+
title: string | null
|
|
220
|
+
headline: string | null
|
|
221
|
+
filterReason: string | null
|
|
222
|
+
openingLine: string | null
|
|
223
|
+
source: string | null
|
|
224
|
+
sourceId: string | null
|
|
225
|
+
pipelineStatus: ContactPipelineStatus | null
|
|
226
|
+
enrichmentData: ContactEnrichmentData | null
|
|
227
|
+
/** Attio Person record ID - set when contact responds and is added to CRM */
|
|
228
|
+
attioPersonId: string | null
|
|
229
|
+
batchId: string | null
|
|
230
|
+
status: 'active' | 'invalid'
|
|
231
|
+
createdAt: Date
|
|
232
|
+
updatedAt: Date
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// ─── Deal UI Types ───────────────────────────────────────────────────────────
|
|
236
|
+
|
|
237
|
+
export type DealStage = 'interested' | 'proposal' | 'closing' | 'closed_won' | 'closed_lost' | 'nurturing'
|
|
238
|
+
|
|
239
|
+
export interface KanbanStageConfig {
|
|
240
|
+
color: string // Mantine color token (e.g. 'blue', 'teal')
|
|
241
|
+
label?: string // Optional display label override
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export type KanbanBoardConfig = Partial<Record<DealStage, KanbanStageConfig>>
|
|
245
|
+
|
|
246
|
+
export interface DealContact {
|
|
247
|
+
id: string
|
|
248
|
+
first_name: string | null
|
|
249
|
+
last_name: string | null
|
|
250
|
+
email: string
|
|
251
|
+
title: string | null
|
|
252
|
+
headline: string | null
|
|
253
|
+
linkedin_url: string | null
|
|
254
|
+
pipeline_status: Record<string, unknown> | null
|
|
255
|
+
enrichment_data: Record<string, unknown> | null
|
|
256
|
+
company: {
|
|
257
|
+
id: string
|
|
258
|
+
name: string
|
|
259
|
+
domain: string | null
|
|
260
|
+
website: string | null
|
|
261
|
+
linkedin_url: string | null
|
|
262
|
+
segment: string | null
|
|
263
|
+
category: string | null
|
|
264
|
+
num_employees: number | null
|
|
265
|
+
} | null
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export interface DealFilters {
|
|
269
|
+
stage?: DealStage
|
|
270
|
+
search?: string
|
|
271
|
+
limit?: number
|
|
272
|
+
offset?: number
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/** Deal list item with joined contact and company data */
|
|
276
|
+
export interface DealListItem extends AcqDealRow {
|
|
277
|
+
contact: DealContact | null
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export type DealDetail = DealListItem
|
|
281
|
+
|
|
282
|
+
/** Task kind options for a deal task (human follow-up action type) */
|
|
283
|
+
export type AcqDealTaskKind = 'call' | 'email' | 'meeting' | 'other'
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* A CRM to-do item attached to a deal representing a human follow-up action.
|
|
287
|
+
* Transformed from AcqDealTaskRow with camelCase properties.
|
|
288
|
+
*/
|
|
289
|
+
export interface AcqDealTask {
|
|
290
|
+
id: string
|
|
291
|
+
organizationId: string
|
|
292
|
+
dealId: string
|
|
293
|
+
title: string
|
|
294
|
+
description: string | null
|
|
295
|
+
kind: AcqDealTaskKind
|
|
296
|
+
dueAt: string | null
|
|
297
|
+
assigneeUserId: string | null
|
|
298
|
+
completedAt: string | null
|
|
299
|
+
completedByUserId: string | null
|
|
300
|
+
createdAt: string
|
|
301
|
+
updatedAt: string
|
|
302
|
+
createdByUserId: string | null
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// ─── List Config / Progress / Telemetry Types ────────────────────────────────
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* One ordered step in a list's pipeline. Maps to a deployed workflow
|
|
309
|
+
* (e.g. 'lgn-03-company-qualification-workflow'). The `inputTemplate`
|
|
310
|
+
* is merged with `{ listId }` at run time to form the workflow input.
|
|
311
|
+
*/
|
|
312
|
+
export interface PipelineStep {
|
|
313
|
+
/** Stable key, e.g. 'scrape' | 'extract' | 'qualify' | 'discover' | 'verify' | 'personalize'. */
|
|
314
|
+
key: string
|
|
315
|
+
/** Human label rendered in the UI stepper. */
|
|
316
|
+
label: string
|
|
317
|
+
/** Deployed workflow resourceId (e.g. 'lgn-03-company-qualification-workflow'). */
|
|
318
|
+
resourceId: string
|
|
319
|
+
/** Input defaults merged with `{ listId }` at dispatch. */
|
|
320
|
+
inputTemplate: Record<string, unknown>
|
|
321
|
+
/** Whether the UI shows the Run button. */
|
|
322
|
+
enabled: boolean
|
|
323
|
+
/** Display order (ascending). */
|
|
324
|
+
order: number
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export type CompanyListStage = 'populated' | 'extracted' | 'qualified'
|
|
328
|
+
|
|
329
|
+
export type ContactListStage = 'discovered' | 'verified' | 'personalized' | 'uploaded'
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Per-list pipeline configuration stored as jsonb in `acq_lists.config`.
|
|
333
|
+
*
|
|
334
|
+
* `qualification` is the only required subtree. Every other subtree is optional
|
|
335
|
+
* and inherits global defaults when omitted: workflows resolve values as
|
|
336
|
+
* `list.config.foo ?? globalDefaults.foo`. Seeded rows from
|
|
337
|
+
* `20260413000100_backfill_list_configs.sql` only populate `qualification`
|
|
338
|
+
* and `scraping`; the rest was intentionally omitted.
|
|
339
|
+
*/
|
|
340
|
+
export interface ListConfig {
|
|
341
|
+
qualification: {
|
|
342
|
+
/** One-line description of the target vertical/segment. */
|
|
343
|
+
targetDescription: string
|
|
344
|
+
/** Minimum Google review count to qualify. */
|
|
345
|
+
minReviewCount: number
|
|
346
|
+
/** Minimum Google star rating to qualify (e.g. 3.0). */
|
|
347
|
+
minRating: number
|
|
348
|
+
/** Whether to exclude franchises/chains during qualification. */
|
|
349
|
+
excludeFranchises: boolean
|
|
350
|
+
/** Free-form LLM rules layered on top of the structured criteria. */
|
|
351
|
+
customRules: string
|
|
352
|
+
}
|
|
353
|
+
enrichment?: {
|
|
354
|
+
emailDiscovery?: {
|
|
355
|
+
primary: 'tomba' | 'anymailfinder'
|
|
356
|
+
credentialName?: string
|
|
357
|
+
}
|
|
358
|
+
emailVerification?: {
|
|
359
|
+
provider: 'millionverifier'
|
|
360
|
+
threshold?: 'ok' | 'ok+catch_all'
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
personalization?: {
|
|
364
|
+
industryContext?: string
|
|
365
|
+
/** Email body template with tags like {{opening_line}} / {{category_pain}}. */
|
|
366
|
+
emailBody?: string
|
|
367
|
+
creativeDirection?: string
|
|
368
|
+
/** Contradiction-prevention rules layered into the personalization prompt. */
|
|
369
|
+
exclusionRules?: string[]
|
|
370
|
+
}
|
|
371
|
+
pipeline?: {
|
|
372
|
+
steps: PipelineStep[]
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Live-scan aggregate telemetry for a single list, computed on demand from
|
|
378
|
+
* the list junction tables and current contact deliverability state.
|
|
379
|
+
*/
|
|
380
|
+
export interface ListTelemetry {
|
|
381
|
+
listId: string
|
|
382
|
+
totalCompanies: number
|
|
383
|
+
totalContacts: number
|
|
384
|
+
stageCounts: {
|
|
385
|
+
populated: number
|
|
386
|
+
extracted: number
|
|
387
|
+
qualified: number
|
|
388
|
+
discovered: number
|
|
389
|
+
verified: number
|
|
390
|
+
personalized: number
|
|
391
|
+
uploaded: number
|
|
392
|
+
}
|
|
393
|
+
deliverability: {
|
|
394
|
+
valid: number
|
|
395
|
+
risky: number
|
|
396
|
+
invalid: number
|
|
397
|
+
unknown: number
|
|
398
|
+
bounced: number
|
|
399
|
+
}
|
|
400
|
+
/** Reserved -- active workflow IDs associated with this list. */
|
|
401
|
+
activeWorkflows?: string[]
|
|
402
|
+
}
|