@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,108 +1,108 @@
|
|
|
1
|
-
import type { BaseIntegrationAdapter } from '../../../base-integration-adapter'
|
|
2
|
-
import { ToolingError } from '../../../../types'
|
|
3
|
-
import type { ExecutionContext } from '../../../../../base/types'
|
|
4
|
-
import { sendEmail } from './fetch/send-email/index'
|
|
5
|
-
import { getEmail } from './fetch/get-email/index'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Resend credentials format
|
|
9
|
-
* Stored in credentials table, encrypted
|
|
10
|
-
*
|
|
11
|
-
* Uses API key authentication only
|
|
12
|
-
*/
|
|
13
|
-
interface ResendCredentials {
|
|
14
|
-
apiKey: string // API key (re_xxxxxxxxx)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Send email parameters
|
|
19
|
-
*/
|
|
20
|
-
interface SendEmailParams {
|
|
21
|
-
from: string
|
|
22
|
-
to: string | string[]
|
|
23
|
-
subject: string
|
|
24
|
-
html?: string
|
|
25
|
-
text?: string
|
|
26
|
-
replyTo?: string | string[]
|
|
27
|
-
cc?: string | string[]
|
|
28
|
-
bcc?: string | string[]
|
|
29
|
-
headers?: Record<string, string>
|
|
30
|
-
tags?: Array<{ name: string; value: string }>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Get email parameters
|
|
35
|
-
*/
|
|
36
|
-
interface GetEmailParams {
|
|
37
|
-
emailId: string
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Resend integration adapter
|
|
42
|
-
*
|
|
43
|
-
* Provides access to Resend transactional email API for sending emails
|
|
44
|
-
* with unsubscribe headers (RFC 8058 compliant).
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* const adapter = new ResendAdapter()
|
|
49
|
-
* const result = await adapter.call(
|
|
50
|
-
* 'sendEmail',
|
|
51
|
-
* {
|
|
52
|
-
* from: 'Alex <alexl@elevasis.io>',
|
|
53
|
-
* to: 'john@example.com',
|
|
54
|
-
* subject: 'Reminder',
|
|
55
|
-
* html: '<p>Hello</p>'
|
|
56
|
-
* },
|
|
57
|
-
* { apiKey: 're_xxx' },
|
|
58
|
-
* context
|
|
59
|
-
* )
|
|
60
|
-
* ```
|
|
61
|
-
*/
|
|
62
|
-
export class ResendAdapter implements BaseIntegrationAdapter {
|
|
63
|
-
readonly name = 'resend'
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Call Resend API method
|
|
67
|
-
*/
|
|
68
|
-
async call(
|
|
69
|
-
method: string,
|
|
70
|
-
params: unknown,
|
|
71
|
-
credentials: Record<string, unknown>,
|
|
72
|
-
context?: ExecutionContext
|
|
73
|
-
): Promise<unknown> {
|
|
74
|
-
// Validate credentials first
|
|
75
|
-
if (!this.validateCredentials(credentials)) {
|
|
76
|
-
throw new ToolingError('credentials_invalid', 'Invalid Resend credentials', {
|
|
77
|
-
integration: this.name,
|
|
78
|
-
organizationId: context?.organizationId
|
|
79
|
-
})
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Safe to cast after validation confirms apiKey exists and is valid
|
|
83
|
-
const creds = credentials as unknown as ResendCredentials
|
|
84
|
-
|
|
85
|
-
// Route to method handler - delegate to fetch functions
|
|
86
|
-
switch (method) {
|
|
87
|
-
case 'sendEmail':
|
|
88
|
-
return sendEmail(creds, params as SendEmailParams, context)
|
|
89
|
-
case 'getEmail':
|
|
90
|
-
return getEmail(creds, params as GetEmailParams, context)
|
|
91
|
-
default:
|
|
92
|
-
throw new ToolingError('method_not_found', `Unknown Resend method: ${method}`, {
|
|
93
|
-
integration: this.name,
|
|
94
|
-
method,
|
|
95
|
-
organizationId: context?.organizationId
|
|
96
|
-
})
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Validate Resend credentials
|
|
102
|
-
*/
|
|
103
|
-
validateCredentials(credentials: Record<string, unknown>): boolean {
|
|
104
|
-
const creds = credentials as unknown as ResendCredentials
|
|
105
|
-
// Require API key (should start with 're_')
|
|
106
|
-
return !!creds.apiKey && typeof creds.apiKey === 'string' && creds.apiKey.length > 0
|
|
107
|
-
}
|
|
108
|
-
}
|
|
1
|
+
import type { BaseIntegrationAdapter } from '../../../base-integration-adapter'
|
|
2
|
+
import { ToolingError } from '../../../../types'
|
|
3
|
+
import type { ExecutionContext } from '../../../../../base/types'
|
|
4
|
+
import { sendEmail } from './fetch/send-email/index'
|
|
5
|
+
import { getEmail } from './fetch/get-email/index'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resend credentials format
|
|
9
|
+
* Stored in credentials table, encrypted
|
|
10
|
+
*
|
|
11
|
+
* Uses API key authentication only
|
|
12
|
+
*/
|
|
13
|
+
interface ResendCredentials {
|
|
14
|
+
apiKey: string // API key (re_xxxxxxxxx)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Send email parameters
|
|
19
|
+
*/
|
|
20
|
+
interface SendEmailParams {
|
|
21
|
+
from: string
|
|
22
|
+
to: string | string[]
|
|
23
|
+
subject: string
|
|
24
|
+
html?: string
|
|
25
|
+
text?: string
|
|
26
|
+
replyTo?: string | string[]
|
|
27
|
+
cc?: string | string[]
|
|
28
|
+
bcc?: string | string[]
|
|
29
|
+
headers?: Record<string, string>
|
|
30
|
+
tags?: Array<{ name: string; value: string }>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get email parameters
|
|
35
|
+
*/
|
|
36
|
+
interface GetEmailParams {
|
|
37
|
+
emailId: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Resend integration adapter
|
|
42
|
+
*
|
|
43
|
+
* Provides access to Resend transactional email API for sending emails
|
|
44
|
+
* with unsubscribe headers (RFC 8058 compliant).
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const adapter = new ResendAdapter()
|
|
49
|
+
* const result = await adapter.call(
|
|
50
|
+
* 'sendEmail',
|
|
51
|
+
* {
|
|
52
|
+
* from: 'Alex <alexl@elevasis.io>',
|
|
53
|
+
* to: 'john@example.com',
|
|
54
|
+
* subject: 'Reminder',
|
|
55
|
+
* html: '<p>Hello</p>'
|
|
56
|
+
* },
|
|
57
|
+
* { apiKey: 're_xxx' },
|
|
58
|
+
* context
|
|
59
|
+
* )
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class ResendAdapter implements BaseIntegrationAdapter {
|
|
63
|
+
readonly name = 'resend'
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Call Resend API method
|
|
67
|
+
*/
|
|
68
|
+
async call(
|
|
69
|
+
method: string,
|
|
70
|
+
params: unknown,
|
|
71
|
+
credentials: Record<string, unknown>,
|
|
72
|
+
context?: ExecutionContext
|
|
73
|
+
): Promise<unknown> {
|
|
74
|
+
// Validate credentials first
|
|
75
|
+
if (!this.validateCredentials(credentials)) {
|
|
76
|
+
throw new ToolingError('credentials_invalid', 'Invalid Resend credentials', {
|
|
77
|
+
integration: this.name,
|
|
78
|
+
organizationId: context?.organizationId
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Safe to cast after validation confirms apiKey exists and is valid
|
|
83
|
+
const creds = credentials as unknown as ResendCredentials
|
|
84
|
+
|
|
85
|
+
// Route to method handler - delegate to fetch functions
|
|
86
|
+
switch (method) {
|
|
87
|
+
case 'sendEmail':
|
|
88
|
+
return sendEmail(creds, params as SendEmailParams, context)
|
|
89
|
+
case 'getEmail':
|
|
90
|
+
return getEmail(creds, params as GetEmailParams, context)
|
|
91
|
+
default:
|
|
92
|
+
throw new ToolingError('method_not_found', `Unknown Resend method: ${method}`, {
|
|
93
|
+
integration: this.name,
|
|
94
|
+
method,
|
|
95
|
+
organizationId: context?.organizationId
|
|
96
|
+
})
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Validate Resend credentials
|
|
102
|
+
*/
|
|
103
|
+
validateCredentials(credentials: Record<string, unknown>): boolean {
|
|
104
|
+
const creds = credentials as unknown as ResendCredentials
|
|
105
|
+
// Require API key (should start with 're_')
|
|
106
|
+
return !!creds.apiKey && typeof creds.apiKey === 'string' && creds.apiKey.length > 0
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
import type { Tool } from '../../../../types'
|
|
3
|
-
import { createIntegrationTool } from '../../../tool'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create a tool that sends transactional emails via Resend
|
|
7
|
-
*
|
|
8
|
-
* @param credentialName - Name of the Resend credential to use
|
|
9
|
-
* @returns Tool instance
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const tool = createResendSendEmailTool('elevasis-resend')
|
|
14
|
-
* const result = await tool.execute({
|
|
15
|
-
* from: 'Alex <alexl@elevasis.io>',
|
|
16
|
-
* to: 'john@example.com',
|
|
17
|
-
* subject: 'Discovery Call Reminder',
|
|
18
|
-
* html: '<p>Your call is tomorrow...</p>'
|
|
19
|
-
* }, context)
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export function createResendSendEmailTool(credentialName: string): Tool {
|
|
23
|
-
return createIntegrationTool({
|
|
24
|
-
name: 'resend_send_email',
|
|
25
|
-
description: `Send a transactional email via Resend.
|
|
26
|
-
|
|
27
|
-
Use this tool to send emails for:
|
|
28
|
-
- Discovery call reminders (-24h, -1h before meeting)
|
|
29
|
-
- Proposal follow-ups (Day 3, 7, 14)
|
|
30
|
-
- Onboarding emails (welcome, kickoff scheduling)
|
|
31
|
-
|
|
32
|
-
Examples:
|
|
33
|
-
- Send reminder: from="Alex <alexl@elevasis.io>", to, subject, html with meeting details
|
|
34
|
-
- With unsubscribe: Include headers with List-Unsubscribe and List-Unsubscribe-Post
|
|
35
|
-
|
|
36
|
-
Supports RFC 8058 one-click unsubscribe via headers parameter.`,
|
|
37
|
-
inputSchema: z.object({
|
|
38
|
-
from: z.string().describe('Sender in format "Name <email@domain.com>"'),
|
|
39
|
-
to: z.union([z.string(), z.array(z.string())]).describe('Recipient email(s) - max 50'),
|
|
40
|
-
subject: z.string().describe('Email subject line'),
|
|
41
|
-
html: z.string().optional().describe('HTML email content'),
|
|
42
|
-
text: z.string().optional().describe('Plain text content (auto-generated from HTML if omitted)'),
|
|
43
|
-
replyTo: z.union([z.string(), z.array(z.string())]).optional().describe('Reply-to address(es)'),
|
|
44
|
-
cc: z.union([z.string(), z.array(z.string())]).optional().describe('CC recipient(s)'),
|
|
45
|
-
bcc: z.union([z.string(), z.array(z.string())]).optional().describe('BCC recipient(s)'),
|
|
46
|
-
headers: z.record(z.string(), z.string()).optional().describe('Custom headers (e.g., List-Unsubscribe)'),
|
|
47
|
-
tags: z.array(z.object({
|
|
48
|
-
name: z.string(),
|
|
49
|
-
value: z.string()
|
|
50
|
-
})).optional().describe('Key-value metadata tags')
|
|
51
|
-
}),
|
|
52
|
-
outputSchema: z.object({
|
|
53
|
-
id: z.string().describe('Resend email ID'),
|
|
54
|
-
success: z.boolean().describe('Whether the email was sent successfully')
|
|
55
|
-
}),
|
|
56
|
-
integration: 'resend' as const,
|
|
57
|
-
method: 'sendEmail' as const,
|
|
58
|
-
credentialName
|
|
59
|
-
})
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Create a tool that retrieves email status from Resend
|
|
64
|
-
*
|
|
65
|
-
* @param credentialName - Name of the Resend credential to use
|
|
66
|
-
* @returns Tool instance
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* const tool = createResendGetEmailTool('elevasis-resend')
|
|
71
|
-
* const result = await tool.execute({
|
|
72
|
-
* emailId: '49a3999c-0ce1-4ea6-ab68-afcd6dc2e794'
|
|
73
|
-
* }, context)
|
|
74
|
-
* // result.lastEvent: 'sent', 'delivered', 'bounced', 'complained', 'failed'
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
export function createResendGetEmailTool(credentialName: string): Tool {
|
|
78
|
-
return createIntegrationTool({
|
|
79
|
-
name: 'resend_get_email',
|
|
80
|
-
description: `Get email delivery status from Resend.
|
|
81
|
-
|
|
82
|
-
Use this tool to check if an email was delivered successfully.
|
|
83
|
-
|
|
84
|
-
Status values:
|
|
85
|
-
- sent: Email was sent
|
|
86
|
-
- delivered: Email was delivered to recipient
|
|
87
|
-
- bounced: Email bounced (hard bounce)
|
|
88
|
-
- complained: Recipient marked as spam
|
|
89
|
-
- failed: Email failed to send
|
|
90
|
-
|
|
91
|
-
Not required for MVP, but useful for debugging delivery issues.`,
|
|
92
|
-
inputSchema: z.object({
|
|
93
|
-
emailId: z.string().describe('Resend email ID to retrieve')
|
|
94
|
-
}),
|
|
95
|
-
outputSchema: z.object({
|
|
96
|
-
id: z.string().describe('Email ID'),
|
|
97
|
-
to: z.array(z.string()).describe('Recipient email addresses'),
|
|
98
|
-
from: z.string().describe('Sender email address'),
|
|
99
|
-
subject: z.string().describe('Email subject'),
|
|
100
|
-
lastEvent: z.string().describe('Last delivery event (sent, delivered, bounced, complained, failed)'),
|
|
101
|
-
createdAt: z.string().describe('ISO timestamp when email was created')
|
|
102
|
-
}),
|
|
103
|
-
integration: 'resend' as const,
|
|
104
|
-
method: 'getEmail' as const,
|
|
105
|
-
credentialName
|
|
106
|
-
})
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Create a named version of Resend send email tool (for multi-account support)
|
|
111
|
-
*
|
|
112
|
-
* @param toolName - Unique tool name
|
|
113
|
-
* @param credentialName - Name of the Resend credential to use
|
|
114
|
-
* @returns Tool instance
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```typescript
|
|
118
|
-
* // Support multiple Resend accounts or domains
|
|
119
|
-
* const salesTool = createResendSendEmailToolNamed('resend_sales_send', 'resend-sales')
|
|
120
|
-
* const supportTool = createResendSendEmailToolNamed('resend_support_send', 'resend-support')
|
|
121
|
-
* ```
|
|
122
|
-
*/
|
|
123
|
-
export function createResendSendEmailToolNamed(
|
|
124
|
-
toolName: string,
|
|
125
|
-
credentialName: string
|
|
126
|
-
): Tool {
|
|
127
|
-
const tool = createResendSendEmailTool(credentialName)
|
|
128
|
-
return {
|
|
129
|
-
...tool,
|
|
130
|
-
name: toolName
|
|
131
|
-
}
|
|
132
|
-
}
|
|
1
|
+
import { z } from 'zod'
|
|
2
|
+
import type { Tool } from '../../../../types'
|
|
3
|
+
import { createIntegrationTool } from '../../../tool'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a tool that sends transactional emails via Resend
|
|
7
|
+
*
|
|
8
|
+
* @param credentialName - Name of the Resend credential to use
|
|
9
|
+
* @returns Tool instance
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const tool = createResendSendEmailTool('elevasis-resend')
|
|
14
|
+
* const result = await tool.execute({
|
|
15
|
+
* from: 'Alex <alexl@elevasis.io>',
|
|
16
|
+
* to: 'john@example.com',
|
|
17
|
+
* subject: 'Discovery Call Reminder',
|
|
18
|
+
* html: '<p>Your call is tomorrow...</p>'
|
|
19
|
+
* }, context)
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function createResendSendEmailTool(credentialName: string): Tool {
|
|
23
|
+
return createIntegrationTool({
|
|
24
|
+
name: 'resend_send_email',
|
|
25
|
+
description: `Send a transactional email via Resend.
|
|
26
|
+
|
|
27
|
+
Use this tool to send emails for:
|
|
28
|
+
- Discovery call reminders (-24h, -1h before meeting)
|
|
29
|
+
- Proposal follow-ups (Day 3, 7, 14)
|
|
30
|
+
- Onboarding emails (welcome, kickoff scheduling)
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
- Send reminder: from="Alex <alexl@elevasis.io>", to, subject, html with meeting details
|
|
34
|
+
- With unsubscribe: Include headers with List-Unsubscribe and List-Unsubscribe-Post
|
|
35
|
+
|
|
36
|
+
Supports RFC 8058 one-click unsubscribe via headers parameter.`,
|
|
37
|
+
inputSchema: z.object({
|
|
38
|
+
from: z.string().describe('Sender in format "Name <email@domain.com>"'),
|
|
39
|
+
to: z.union([z.string(), z.array(z.string())]).describe('Recipient email(s) - max 50'),
|
|
40
|
+
subject: z.string().describe('Email subject line'),
|
|
41
|
+
html: z.string().optional().describe('HTML email content'),
|
|
42
|
+
text: z.string().optional().describe('Plain text content (auto-generated from HTML if omitted)'),
|
|
43
|
+
replyTo: z.union([z.string(), z.array(z.string())]).optional().describe('Reply-to address(es)'),
|
|
44
|
+
cc: z.union([z.string(), z.array(z.string())]).optional().describe('CC recipient(s)'),
|
|
45
|
+
bcc: z.union([z.string(), z.array(z.string())]).optional().describe('BCC recipient(s)'),
|
|
46
|
+
headers: z.record(z.string(), z.string()).optional().describe('Custom headers (e.g., List-Unsubscribe)'),
|
|
47
|
+
tags: z.array(z.object({
|
|
48
|
+
name: z.string(),
|
|
49
|
+
value: z.string()
|
|
50
|
+
})).optional().describe('Key-value metadata tags')
|
|
51
|
+
}),
|
|
52
|
+
outputSchema: z.object({
|
|
53
|
+
id: z.string().describe('Resend email ID'),
|
|
54
|
+
success: z.boolean().describe('Whether the email was sent successfully')
|
|
55
|
+
}),
|
|
56
|
+
integration: 'resend' as const,
|
|
57
|
+
method: 'sendEmail' as const,
|
|
58
|
+
credentialName
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Create a tool that retrieves email status from Resend
|
|
64
|
+
*
|
|
65
|
+
* @param credentialName - Name of the Resend credential to use
|
|
66
|
+
* @returns Tool instance
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const tool = createResendGetEmailTool('elevasis-resend')
|
|
71
|
+
* const result = await tool.execute({
|
|
72
|
+
* emailId: '49a3999c-0ce1-4ea6-ab68-afcd6dc2e794'
|
|
73
|
+
* }, context)
|
|
74
|
+
* // result.lastEvent: 'sent', 'delivered', 'bounced', 'complained', 'failed'
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export function createResendGetEmailTool(credentialName: string): Tool {
|
|
78
|
+
return createIntegrationTool({
|
|
79
|
+
name: 'resend_get_email',
|
|
80
|
+
description: `Get email delivery status from Resend.
|
|
81
|
+
|
|
82
|
+
Use this tool to check if an email was delivered successfully.
|
|
83
|
+
|
|
84
|
+
Status values:
|
|
85
|
+
- sent: Email was sent
|
|
86
|
+
- delivered: Email was delivered to recipient
|
|
87
|
+
- bounced: Email bounced (hard bounce)
|
|
88
|
+
- complained: Recipient marked as spam
|
|
89
|
+
- failed: Email failed to send
|
|
90
|
+
|
|
91
|
+
Not required for MVP, but useful for debugging delivery issues.`,
|
|
92
|
+
inputSchema: z.object({
|
|
93
|
+
emailId: z.string().describe('Resend email ID to retrieve')
|
|
94
|
+
}),
|
|
95
|
+
outputSchema: z.object({
|
|
96
|
+
id: z.string().describe('Email ID'),
|
|
97
|
+
to: z.array(z.string()).describe('Recipient email addresses'),
|
|
98
|
+
from: z.string().describe('Sender email address'),
|
|
99
|
+
subject: z.string().describe('Email subject'),
|
|
100
|
+
lastEvent: z.string().describe('Last delivery event (sent, delivered, bounced, complained, failed)'),
|
|
101
|
+
createdAt: z.string().describe('ISO timestamp when email was created')
|
|
102
|
+
}),
|
|
103
|
+
integration: 'resend' as const,
|
|
104
|
+
method: 'getEmail' as const,
|
|
105
|
+
credentialName
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Create a named version of Resend send email tool (for multi-account support)
|
|
111
|
+
*
|
|
112
|
+
* @param toolName - Unique tool name
|
|
113
|
+
* @param credentialName - Name of the Resend credential to use
|
|
114
|
+
* @returns Tool instance
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // Support multiple Resend accounts or domains
|
|
119
|
+
* const salesTool = createResendSendEmailToolNamed('resend_sales_send', 'resend-sales')
|
|
120
|
+
* const supportTool = createResendSendEmailToolNamed('resend_support_send', 'resend-support')
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function createResendSendEmailToolNamed(
|
|
124
|
+
toolName: string,
|
|
125
|
+
credentialName: string
|
|
126
|
+
): Tool {
|
|
127
|
+
const tool = createResendSendEmailTool(credentialName)
|
|
128
|
+
return {
|
|
129
|
+
...tool,
|
|
130
|
+
name: toolName
|
|
131
|
+
}
|
|
132
|
+
}
|