@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
package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts
CHANGED
|
@@ -1,209 +1,209 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
import { createIntegrationTool } from '../../../tool'
|
|
3
|
-
import type { Tool } from '../../../../types'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create Anymailfinder find company email tool
|
|
7
|
-
*
|
|
8
|
-
* Discovers all email addresses at a company domain.
|
|
9
|
-
*
|
|
10
|
-
* @param credentialName - Name of credential in credentials table
|
|
11
|
-
* @returns Tool that finds company emails via Anymailfinder
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* const findCompanyEmail = createAnymailfinderFindCompanyEmailTool('anymailfinder-elevasis')
|
|
15
|
-
*/
|
|
16
|
-
export function createAnymailfinderFindCompanyEmailTool(credentialName: string): Tool {
|
|
17
|
-
return createIntegrationTool({
|
|
18
|
-
name: 'anymailfinder_find_company_email',
|
|
19
|
-
description: `Find all email addresses at a company domain using Anymailfinder.
|
|
20
|
-
|
|
21
|
-
USE CASES:
|
|
22
|
-
- Discover all emails at a domain (up to 20)
|
|
23
|
-
- Filter by email type (personal, generic, or all)
|
|
24
|
-
|
|
25
|
-
REQUIRED PARAMETERS (at least one):
|
|
26
|
-
- domain: Company domain (e.g., "example.com")
|
|
27
|
-
- company_name: Company name (e.g., "Example Inc")
|
|
28
|
-
|
|
29
|
-
OPTIONAL PARAMETERS:
|
|
30
|
-
- email_type: "personal", "generic", or "all" (default: "all")
|
|
31
|
-
|
|
32
|
-
OUTPUT:
|
|
33
|
-
{
|
|
34
|
-
"email_status": "valid",
|
|
35
|
-
"emails": ["john@example.com", "info@example.com"],
|
|
36
|
-
"valid_emails": ["john@example.com"]
|
|
37
|
-
}`,
|
|
38
|
-
inputSchema: z.object({
|
|
39
|
-
domain: z.string().optional().describe('Company domain (e.g., "example.com")'),
|
|
40
|
-
company_name: z.string().optional().describe('Company name (e.g., "Example Inc")'),
|
|
41
|
-
email_type: z.enum(['personal', 'generic', 'all']).optional().describe('Filter by email type (default: "all")')
|
|
42
|
-
}),
|
|
43
|
-
outputSchema: z.object({
|
|
44
|
-
email_status: z.string().describe('Overall status of the email search'),
|
|
45
|
-
emails: z.array(z.string()).describe('All emails found at the domain'),
|
|
46
|
-
valid_emails: z.array(z.string()).describe('Subset of emails that passed validation')
|
|
47
|
-
}),
|
|
48
|
-
integration: 'anymailfinder' as const,
|
|
49
|
-
method: 'findCompanyEmail' as const,
|
|
50
|
-
credentialName
|
|
51
|
-
})
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Create Anymailfinder find person email tool
|
|
56
|
-
*
|
|
57
|
-
* Finds an individual's work email by name and company.
|
|
58
|
-
*
|
|
59
|
-
* @param credentialName - Name of credential in credentials table
|
|
60
|
-
* @returns Tool that finds a person's email via Anymailfinder
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* const findPersonEmail = createAnymailfinderFindPersonEmailTool('anymailfinder-elevasis')
|
|
64
|
-
*/
|
|
65
|
-
export function createAnymailfinderFindPersonEmailTool(credentialName: string): Tool {
|
|
66
|
-
return createIntegrationTool({
|
|
67
|
-
name: 'anymailfinder_find_person_email',
|
|
68
|
-
description: `Find an individual's email address using their name and company domain.
|
|
69
|
-
|
|
70
|
-
USE CASES:
|
|
71
|
-
- Find email for a specific person when you have their name and company domain
|
|
72
|
-
- Verify a person's work email
|
|
73
|
-
|
|
74
|
-
REQUIRED PARAMETERS:
|
|
75
|
-
- domain or company_name (at least one)
|
|
76
|
-
- full_name or (first_name + last_name)
|
|
77
|
-
|
|
78
|
-
OPTIONAL PARAMETERS:
|
|
79
|
-
- domain: Company domain
|
|
80
|
-
- company_name: Company name
|
|
81
|
-
- full_name: Person's full name
|
|
82
|
-
- first_name: First name
|
|
83
|
-
- last_name: Last name
|
|
84
|
-
|
|
85
|
-
OUTPUT:
|
|
86
|
-
{
|
|
87
|
-
"email": "john@example.com",
|
|
88
|
-
"email_status": "valid",
|
|
89
|
-
"valid_email": "john@example.com"
|
|
90
|
-
}`,
|
|
91
|
-
inputSchema: z.object({
|
|
92
|
-
domain: z.string().optional().describe('Company domain'),
|
|
93
|
-
company_name: z.string().optional().describe('Company name'),
|
|
94
|
-
full_name: z.string().optional().describe("Person's full name"),
|
|
95
|
-
first_name: z.string().optional().describe('First name'),
|
|
96
|
-
last_name: z.string().optional().describe('Last name')
|
|
97
|
-
}),
|
|
98
|
-
outputSchema: z.object({
|
|
99
|
-
email: z.string().describe('Found email address (empty string if not found)'),
|
|
100
|
-
email_status: z.string().describe('Validation status of the email'),
|
|
101
|
-
valid_email: z.string().describe('Email if valid, empty string otherwise')
|
|
102
|
-
}),
|
|
103
|
-
integration: 'anymailfinder' as const,
|
|
104
|
-
method: 'findPersonEmail' as const,
|
|
105
|
-
credentialName
|
|
106
|
-
})
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Create Anymailfinder find decision maker email tool
|
|
111
|
-
*
|
|
112
|
-
* Finds a decision maker's email at a company by role category.
|
|
113
|
-
*
|
|
114
|
-
* @param credentialName - Name of credential in credentials table
|
|
115
|
-
* @returns Tool that finds decision maker emails via Anymailfinder
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* const findDecisionMaker = createAnymailfinderFindDecisionMakerEmailTool('anymailfinder-elevasis')
|
|
119
|
-
*/
|
|
120
|
-
export function createAnymailfinderFindDecisionMakerEmailTool(credentialName: string): Tool {
|
|
121
|
-
return createIntegrationTool({
|
|
122
|
-
name: 'anymailfinder_find_decision_maker_email',
|
|
123
|
-
description: `Find a decision maker's email at a company by role category.
|
|
124
|
-
|
|
125
|
-
USE CASES:
|
|
126
|
-
- Find the owner/CEO email at a business
|
|
127
|
-
- Find operations manager email
|
|
128
|
-
- Find key decision makers when you don't have specific names
|
|
129
|
-
|
|
130
|
-
REQUIRED PARAMETERS:
|
|
131
|
-
- domain or company_name (at least one)
|
|
132
|
-
- decision_maker_category: Array of role categories
|
|
133
|
-
|
|
134
|
-
CATEGORIES: "ceo" (Owner/President/Founder), "operations", "marketing", "sales", "finance", "hr", "engineering", "it", "logistics", "buyer"
|
|
135
|
-
|
|
136
|
-
OUTPUT:
|
|
137
|
-
{
|
|
138
|
-
"email": "owner@example.com",
|
|
139
|
-
"email_status": "valid",
|
|
140
|
-
"valid_email": "owner@example.com",
|
|
141
|
-
"person_full_name": "Jane Smith",
|
|
142
|
-
"person_job_title": "Owner",
|
|
143
|
-
"person_linkedin_url": "https://linkedin.com/in/...",
|
|
144
|
-
"decision_maker_category": "ceo"
|
|
145
|
-
}`,
|
|
146
|
-
inputSchema: z.object({
|
|
147
|
-
domain: z.string().optional().describe('Company domain'),
|
|
148
|
-
company_name: z.string().optional().describe('Company name'),
|
|
149
|
-
decision_maker_category: z
|
|
150
|
-
.array(z.string())
|
|
151
|
-
.describe(
|
|
152
|
-
'Role categories to search: "ceo", "operations", "marketing", "sales", "finance", "hr", "engineering", "it", "logistics", "buyer"'
|
|
153
|
-
)
|
|
154
|
-
}),
|
|
155
|
-
outputSchema: z.object({
|
|
156
|
-
email: z.string().describe('Found email address (empty string if not found)'),
|
|
157
|
-
email_status: z.string().describe('Validation status of the email'),
|
|
158
|
-
valid_email: z.string().describe('Email if valid, empty string otherwise'),
|
|
159
|
-
person_full_name: z.string().describe("Decision maker's full name"),
|
|
160
|
-
person_job_title: z.string().describe("Decision maker's job title"),
|
|
161
|
-
person_linkedin_url: z.string().describe("Decision maker's LinkedIn URL"),
|
|
162
|
-
decision_maker_category: z.string().describe('Matched role category')
|
|
163
|
-
}),
|
|
164
|
-
integration: 'anymailfinder' as const,
|
|
165
|
-
method: 'findDecisionMakerEmail' as const,
|
|
166
|
-
credentialName
|
|
167
|
-
})
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Create Anymailfinder verify email tool
|
|
172
|
-
*
|
|
173
|
-
* Verifies whether an email address is deliverable.
|
|
174
|
-
*
|
|
175
|
-
* @param credentialName - Name of credential in credentials table
|
|
176
|
-
* @returns Tool that verifies email addresses via Anymailfinder
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* const verifyEmail = createAnymailfinderVerifyEmailTool('anymailfinder-elevasis')
|
|
180
|
-
*/
|
|
181
|
-
export function createAnymailfinderVerifyEmailTool(credentialName: string): Tool {
|
|
182
|
-
return createIntegrationTool({
|
|
183
|
-
name: 'anymailfinder_verify_email',
|
|
184
|
-
description: `Verify if an email address is valid using Anymailfinder.
|
|
185
|
-
|
|
186
|
-
USE CASES:
|
|
187
|
-
- Verify an email before sending outreach
|
|
188
|
-
- Check if a found email is deliverable
|
|
189
|
-
|
|
190
|
-
REQUIRED PARAMETERS:
|
|
191
|
-
- email: Email address to verify
|
|
192
|
-
|
|
193
|
-
OUTPUT:
|
|
194
|
-
{
|
|
195
|
-
"email_status": "valid"
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
Status values: "valid", "risky", "not_found", "blacklisted"`,
|
|
199
|
-
inputSchema: z.object({
|
|
200
|
-
email: z.string().describe('Email address to verify')
|
|
201
|
-
}),
|
|
202
|
-
outputSchema: z.object({
|
|
203
|
-
email_status: z.string().describe('Verification result: "valid", "risky", "not_found", or "blacklisted"')
|
|
204
|
-
}),
|
|
205
|
-
integration: 'anymailfinder' as const,
|
|
206
|
-
method: 'verifyEmail' as const,
|
|
207
|
-
credentialName
|
|
208
|
-
})
|
|
209
|
-
}
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import { createIntegrationTool } from '../../../tool'
|
|
3
|
+
import type { Tool } from '../../../../types'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create Anymailfinder find company email tool
|
|
7
|
+
*
|
|
8
|
+
* Discovers all email addresses at a company domain.
|
|
9
|
+
*
|
|
10
|
+
* @param credentialName - Name of credential in credentials table
|
|
11
|
+
* @returns Tool that finds company emails via Anymailfinder
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const findCompanyEmail = createAnymailfinderFindCompanyEmailTool('anymailfinder-elevasis')
|
|
15
|
+
*/
|
|
16
|
+
export function createAnymailfinderFindCompanyEmailTool(credentialName: string): Tool {
|
|
17
|
+
return createIntegrationTool({
|
|
18
|
+
name: 'anymailfinder_find_company_email',
|
|
19
|
+
description: `Find all email addresses at a company domain using Anymailfinder.
|
|
20
|
+
|
|
21
|
+
USE CASES:
|
|
22
|
+
- Discover all emails at a domain (up to 20)
|
|
23
|
+
- Filter by email type (personal, generic, or all)
|
|
24
|
+
|
|
25
|
+
REQUIRED PARAMETERS (at least one):
|
|
26
|
+
- domain: Company domain (e.g., "example.com")
|
|
27
|
+
- company_name: Company name (e.g., "Example Inc")
|
|
28
|
+
|
|
29
|
+
OPTIONAL PARAMETERS:
|
|
30
|
+
- email_type: "personal", "generic", or "all" (default: "all")
|
|
31
|
+
|
|
32
|
+
OUTPUT:
|
|
33
|
+
{
|
|
34
|
+
"email_status": "valid",
|
|
35
|
+
"emails": ["john@example.com", "info@example.com"],
|
|
36
|
+
"valid_emails": ["john@example.com"]
|
|
37
|
+
}`,
|
|
38
|
+
inputSchema: z.object({
|
|
39
|
+
domain: z.string().optional().describe('Company domain (e.g., "example.com")'),
|
|
40
|
+
company_name: z.string().optional().describe('Company name (e.g., "Example Inc")'),
|
|
41
|
+
email_type: z.enum(['personal', 'generic', 'all']).optional().describe('Filter by email type (default: "all")')
|
|
42
|
+
}),
|
|
43
|
+
outputSchema: z.object({
|
|
44
|
+
email_status: z.string().describe('Overall status of the email search'),
|
|
45
|
+
emails: z.array(z.string()).describe('All emails found at the domain'),
|
|
46
|
+
valid_emails: z.array(z.string()).describe('Subset of emails that passed validation')
|
|
47
|
+
}),
|
|
48
|
+
integration: 'anymailfinder' as const,
|
|
49
|
+
method: 'findCompanyEmail' as const,
|
|
50
|
+
credentialName
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Create Anymailfinder find person email tool
|
|
56
|
+
*
|
|
57
|
+
* Finds an individual's work email by name and company.
|
|
58
|
+
*
|
|
59
|
+
* @param credentialName - Name of credential in credentials table
|
|
60
|
+
* @returns Tool that finds a person's email via Anymailfinder
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* const findPersonEmail = createAnymailfinderFindPersonEmailTool('anymailfinder-elevasis')
|
|
64
|
+
*/
|
|
65
|
+
export function createAnymailfinderFindPersonEmailTool(credentialName: string): Tool {
|
|
66
|
+
return createIntegrationTool({
|
|
67
|
+
name: 'anymailfinder_find_person_email',
|
|
68
|
+
description: `Find an individual's email address using their name and company domain.
|
|
69
|
+
|
|
70
|
+
USE CASES:
|
|
71
|
+
- Find email for a specific person when you have their name and company domain
|
|
72
|
+
- Verify a person's work email
|
|
73
|
+
|
|
74
|
+
REQUIRED PARAMETERS:
|
|
75
|
+
- domain or company_name (at least one)
|
|
76
|
+
- full_name or (first_name + last_name)
|
|
77
|
+
|
|
78
|
+
OPTIONAL PARAMETERS:
|
|
79
|
+
- domain: Company domain
|
|
80
|
+
- company_name: Company name
|
|
81
|
+
- full_name: Person's full name
|
|
82
|
+
- first_name: First name
|
|
83
|
+
- last_name: Last name
|
|
84
|
+
|
|
85
|
+
OUTPUT:
|
|
86
|
+
{
|
|
87
|
+
"email": "john@example.com",
|
|
88
|
+
"email_status": "valid",
|
|
89
|
+
"valid_email": "john@example.com"
|
|
90
|
+
}`,
|
|
91
|
+
inputSchema: z.object({
|
|
92
|
+
domain: z.string().optional().describe('Company domain'),
|
|
93
|
+
company_name: z.string().optional().describe('Company name'),
|
|
94
|
+
full_name: z.string().optional().describe("Person's full name"),
|
|
95
|
+
first_name: z.string().optional().describe('First name'),
|
|
96
|
+
last_name: z.string().optional().describe('Last name')
|
|
97
|
+
}),
|
|
98
|
+
outputSchema: z.object({
|
|
99
|
+
email: z.string().describe('Found email address (empty string if not found)'),
|
|
100
|
+
email_status: z.string().describe('Validation status of the email'),
|
|
101
|
+
valid_email: z.string().describe('Email if valid, empty string otherwise')
|
|
102
|
+
}),
|
|
103
|
+
integration: 'anymailfinder' as const,
|
|
104
|
+
method: 'findPersonEmail' as const,
|
|
105
|
+
credentialName
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Create Anymailfinder find decision maker email tool
|
|
111
|
+
*
|
|
112
|
+
* Finds a decision maker's email at a company by role category.
|
|
113
|
+
*
|
|
114
|
+
* @param credentialName - Name of credential in credentials table
|
|
115
|
+
* @returns Tool that finds decision maker emails via Anymailfinder
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* const findDecisionMaker = createAnymailfinderFindDecisionMakerEmailTool('anymailfinder-elevasis')
|
|
119
|
+
*/
|
|
120
|
+
export function createAnymailfinderFindDecisionMakerEmailTool(credentialName: string): Tool {
|
|
121
|
+
return createIntegrationTool({
|
|
122
|
+
name: 'anymailfinder_find_decision_maker_email',
|
|
123
|
+
description: `Find a decision maker's email at a company by role category.
|
|
124
|
+
|
|
125
|
+
USE CASES:
|
|
126
|
+
- Find the owner/CEO email at a business
|
|
127
|
+
- Find operations manager email
|
|
128
|
+
- Find key decision makers when you don't have specific names
|
|
129
|
+
|
|
130
|
+
REQUIRED PARAMETERS:
|
|
131
|
+
- domain or company_name (at least one)
|
|
132
|
+
- decision_maker_category: Array of role categories
|
|
133
|
+
|
|
134
|
+
CATEGORIES: "ceo" (Owner/President/Founder), "operations", "marketing", "sales", "finance", "hr", "engineering", "it", "logistics", "buyer"
|
|
135
|
+
|
|
136
|
+
OUTPUT:
|
|
137
|
+
{
|
|
138
|
+
"email": "owner@example.com",
|
|
139
|
+
"email_status": "valid",
|
|
140
|
+
"valid_email": "owner@example.com",
|
|
141
|
+
"person_full_name": "Jane Smith",
|
|
142
|
+
"person_job_title": "Owner",
|
|
143
|
+
"person_linkedin_url": "https://linkedin.com/in/...",
|
|
144
|
+
"decision_maker_category": "ceo"
|
|
145
|
+
}`,
|
|
146
|
+
inputSchema: z.object({
|
|
147
|
+
domain: z.string().optional().describe('Company domain'),
|
|
148
|
+
company_name: z.string().optional().describe('Company name'),
|
|
149
|
+
decision_maker_category: z
|
|
150
|
+
.array(z.string())
|
|
151
|
+
.describe(
|
|
152
|
+
'Role categories to search: "ceo", "operations", "marketing", "sales", "finance", "hr", "engineering", "it", "logistics", "buyer"'
|
|
153
|
+
)
|
|
154
|
+
}),
|
|
155
|
+
outputSchema: z.object({
|
|
156
|
+
email: z.string().describe('Found email address (empty string if not found)'),
|
|
157
|
+
email_status: z.string().describe('Validation status of the email'),
|
|
158
|
+
valid_email: z.string().describe('Email if valid, empty string otherwise'),
|
|
159
|
+
person_full_name: z.string().describe("Decision maker's full name"),
|
|
160
|
+
person_job_title: z.string().describe("Decision maker's job title"),
|
|
161
|
+
person_linkedin_url: z.string().describe("Decision maker's LinkedIn URL"),
|
|
162
|
+
decision_maker_category: z.string().describe('Matched role category')
|
|
163
|
+
}),
|
|
164
|
+
integration: 'anymailfinder' as const,
|
|
165
|
+
method: 'findDecisionMakerEmail' as const,
|
|
166
|
+
credentialName
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Create Anymailfinder verify email tool
|
|
172
|
+
*
|
|
173
|
+
* Verifies whether an email address is deliverable.
|
|
174
|
+
*
|
|
175
|
+
* @param credentialName - Name of credential in credentials table
|
|
176
|
+
* @returns Tool that verifies email addresses via Anymailfinder
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* const verifyEmail = createAnymailfinderVerifyEmailTool('anymailfinder-elevasis')
|
|
180
|
+
*/
|
|
181
|
+
export function createAnymailfinderVerifyEmailTool(credentialName: string): Tool {
|
|
182
|
+
return createIntegrationTool({
|
|
183
|
+
name: 'anymailfinder_verify_email',
|
|
184
|
+
description: `Verify if an email address is valid using Anymailfinder.
|
|
185
|
+
|
|
186
|
+
USE CASES:
|
|
187
|
+
- Verify an email before sending outreach
|
|
188
|
+
- Check if a found email is deliverable
|
|
189
|
+
|
|
190
|
+
REQUIRED PARAMETERS:
|
|
191
|
+
- email: Email address to verify
|
|
192
|
+
|
|
193
|
+
OUTPUT:
|
|
194
|
+
{
|
|
195
|
+
"email_status": "valid"
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
Status values: "valid", "risky", "not_found", "blacklisted"`,
|
|
199
|
+
inputSchema: z.object({
|
|
200
|
+
email: z.string().describe('Email address to verify')
|
|
201
|
+
}),
|
|
202
|
+
outputSchema: z.object({
|
|
203
|
+
email_status: z.string().describe('Verification result: "valid", "risky", "not_found", or "blacklisted"')
|
|
204
|
+
}),
|
|
205
|
+
integration: 'anymailfinder' as const,
|
|
206
|
+
method: 'verifyEmail' as const,
|
|
207
|
+
credentialName
|
|
208
|
+
})
|
|
209
|
+
}
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
|
|
2
|
-
import type { ExecutionContext } from '../../../../../../../base/types'
|
|
3
|
-
|
|
4
|
-
interface AnymailfinderCredentials {
|
|
5
|
-
apiKey: string
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface FindCompanyEmailParams {
|
|
9
|
-
domain: string
|
|
10
|
-
company_name?: string
|
|
11
|
-
email_type?: 'personal' | 'generic' | 'all'
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface FindCompanyEmailResult {
|
|
15
|
-
email_status: 'valid' | 'risky' | 'not_found' | 'blacklisted'
|
|
16
|
-
emails: string[]
|
|
17
|
-
valid_emails: string[]
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const ANYMAILFINDER_API_BASE = 'https://api.anymailfinder.com/v5.1'
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Find email addresses for a company via Anymailfinder
|
|
24
|
-
*
|
|
25
|
-
* Searches for company-level email addresses by domain or company name.
|
|
26
|
-
* Returns all found emails plus the subset that passed validation.
|
|
27
|
-
*
|
|
28
|
-
* @param credentials - Anymailfinder API key
|
|
29
|
-
* @param params - Domain or company name and optional email type filter
|
|
30
|
-
* @param context - Execution context for logging
|
|
31
|
-
* @returns Email status, all emails found, and valid emails only
|
|
32
|
-
*/
|
|
33
|
-
export async function findCompanyEmail(
|
|
34
|
-
credentials: AnymailfinderCredentials,
|
|
35
|
-
params: FindCompanyEmailParams,
|
|
36
|
-
context?: ExecutionContext
|
|
37
|
-
): Promise<FindCompanyEmailResult> {
|
|
38
|
-
const { apiKey } = credentials
|
|
39
|
-
|
|
40
|
-
if (!params.domain && !params.company_name) {
|
|
41
|
-
throw new Error('Either domain or company_name is required for findCompanyEmail')
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (context?.logger) {
|
|
45
|
-
context.logger.info(
|
|
46
|
-
`[AnymailfinderAdapter] findCompanyEmail: organizationId=${context.organizationId} executionId=${context.executionId} domain=${params.domain} company_name=${params.company_name}`
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const response = await withRetry(async () => {
|
|
51
|
-
const res = await fetch(`${ANYMAILFINDER_API_BASE}/find-email/company`, {
|
|
52
|
-
method: 'POST',
|
|
53
|
-
headers: {
|
|
54
|
-
'Content-Type': 'application/json',
|
|
55
|
-
Authorization: apiKey
|
|
56
|
-
},
|
|
57
|
-
body: JSON.stringify(params)
|
|
58
|
-
})
|
|
59
|
-
|
|
60
|
-
if (!res.ok) {
|
|
61
|
-
throw await createHttpError(res, {
|
|
62
|
-
integration: 'anymailfinder',
|
|
63
|
-
method: 'findCompanyEmail',
|
|
64
|
-
organizationId: context?.organizationId
|
|
65
|
-
})
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return res.json()
|
|
69
|
-
}, DEFAULT_RETRY_POLICY)
|
|
70
|
-
|
|
71
|
-
if (context?.logger) {
|
|
72
|
-
context.logger.info(
|
|
73
|
-
`[AnymailfinderAdapter] findCompanyEmail complete: organizationId=${context.organizationId} email_status=${response.email_status} emailCount=${response.emails?.length ?? 0} validCount=${response.valid_emails?.length ?? 0}`
|
|
74
|
-
)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
email_status: response.email_status ?? 'not_found',
|
|
79
|
-
emails: response.emails ?? [],
|
|
80
|
-
valid_emails: response.valid_emails ?? []
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
|
|
2
|
+
import type { ExecutionContext } from '../../../../../../../base/types'
|
|
3
|
+
|
|
4
|
+
interface AnymailfinderCredentials {
|
|
5
|
+
apiKey: string
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface FindCompanyEmailParams {
|
|
9
|
+
domain: string
|
|
10
|
+
company_name?: string
|
|
11
|
+
email_type?: 'personal' | 'generic' | 'all'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface FindCompanyEmailResult {
|
|
15
|
+
email_status: 'valid' | 'risky' | 'not_found' | 'blacklisted'
|
|
16
|
+
emails: string[]
|
|
17
|
+
valid_emails: string[]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const ANYMAILFINDER_API_BASE = 'https://api.anymailfinder.com/v5.1'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Find email addresses for a company via Anymailfinder
|
|
24
|
+
*
|
|
25
|
+
* Searches for company-level email addresses by domain or company name.
|
|
26
|
+
* Returns all found emails plus the subset that passed validation.
|
|
27
|
+
*
|
|
28
|
+
* @param credentials - Anymailfinder API key
|
|
29
|
+
* @param params - Domain or company name and optional email type filter
|
|
30
|
+
* @param context - Execution context for logging
|
|
31
|
+
* @returns Email status, all emails found, and valid emails only
|
|
32
|
+
*/
|
|
33
|
+
export async function findCompanyEmail(
|
|
34
|
+
credentials: AnymailfinderCredentials,
|
|
35
|
+
params: FindCompanyEmailParams,
|
|
36
|
+
context?: ExecutionContext
|
|
37
|
+
): Promise<FindCompanyEmailResult> {
|
|
38
|
+
const { apiKey } = credentials
|
|
39
|
+
|
|
40
|
+
if (!params.domain && !params.company_name) {
|
|
41
|
+
throw new Error('Either domain or company_name is required for findCompanyEmail')
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (context?.logger) {
|
|
45
|
+
context.logger.info(
|
|
46
|
+
`[AnymailfinderAdapter] findCompanyEmail: organizationId=${context.organizationId} executionId=${context.executionId} domain=${params.domain} company_name=${params.company_name}`
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const response = await withRetry(async () => {
|
|
51
|
+
const res = await fetch(`${ANYMAILFINDER_API_BASE}/find-email/company`, {
|
|
52
|
+
method: 'POST',
|
|
53
|
+
headers: {
|
|
54
|
+
'Content-Type': 'application/json',
|
|
55
|
+
Authorization: apiKey
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify(params)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
if (!res.ok) {
|
|
61
|
+
throw await createHttpError(res, {
|
|
62
|
+
integration: 'anymailfinder',
|
|
63
|
+
method: 'findCompanyEmail',
|
|
64
|
+
organizationId: context?.organizationId
|
|
65
|
+
})
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return res.json()
|
|
69
|
+
}, DEFAULT_RETRY_POLICY)
|
|
70
|
+
|
|
71
|
+
if (context?.logger) {
|
|
72
|
+
context.logger.info(
|
|
73
|
+
`[AnymailfinderAdapter] findCompanyEmail complete: organizationId=${context.organizationId} email_status=${response.email_status} emailCount=${response.emails?.length ?? 0} validCount=${response.valid_emails?.length ?? 0}`
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
email_status: response.email_status ?? 'not_found',
|
|
79
|
+
emails: response.emails ?? [],
|
|
80
|
+
valid_emails: response.valid_emails ?? []
|
|
81
|
+
}
|
|
82
|
+
}
|