@elevasis/core 0.1.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.
Files changed (564) hide show
  1. package/dist/index.d.ts +435 -0
  2. package/dist/index.js +403 -0
  3. package/dist/organization-model/index.d.ts +435 -0
  4. package/dist/organization-model/index.js +403 -0
  5. package/package.json +62 -0
  6. package/src/README.md +34 -0
  7. package/src/__tests__/observability-exports.test.ts +36 -0
  8. package/src/__tests__/publish.test.ts +18 -0
  9. package/src/__tests__/template-foundations-compatibility.test.ts +34 -0
  10. package/src/auth/index.ts +8 -0
  11. package/src/auth/multi-tenancy/credentials/README.md +38 -0
  12. package/src/auth/multi-tenancy/credentials/__tests__/encryption.test.ts +216 -0
  13. package/src/auth/multi-tenancy/credentials/__tests__/service.test.ts +174 -0
  14. package/src/auth/multi-tenancy/credentials/index.ts +6 -0
  15. package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -0
  16. package/src/auth/multi-tenancy/credentials/server/service.ts +60 -0
  17. package/src/auth/multi-tenancy/index.ts +17 -0
  18. package/src/auth/multi-tenancy/invitations/__tests__/invitation.test.ts +237 -0
  19. package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -0
  20. package/src/auth/multi-tenancy/invitations/index.ts +38 -0
  21. package/src/auth/multi-tenancy/invitations/invitation.ts +86 -0
  22. package/src/auth/multi-tenancy/invitations/server/index.ts +25 -0
  23. package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -0
  24. package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -0
  25. package/src/auth/multi-tenancy/invitations/supabase.ts +50 -0
  26. package/src/auth/multi-tenancy/memberships/__tests__/membership.test.ts +227 -0
  27. package/src/auth/multi-tenancy/memberships/__tests__/supabase-transforms.test.ts +88 -0
  28. package/src/auth/multi-tenancy/memberships/__tests__/workos-transforms.test.ts +139 -0
  29. package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -0
  30. package/src/auth/multi-tenancy/memberships/index.ts +22 -0
  31. package/src/auth/multi-tenancy/memberships/membership.ts +138 -0
  32. package/src/auth/multi-tenancy/memberships/server/index.ts +15 -0
  33. package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -0
  34. package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -0
  35. package/src/auth/multi-tenancy/memberships/supabase.ts +46 -0
  36. package/src/auth/multi-tenancy/organizations/__tests__/organization.test.ts +249 -0
  37. package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -0
  38. package/src/auth/multi-tenancy/organizations/index.ts +23 -0
  39. package/src/auth/multi-tenancy/organizations/organization.ts +25 -0
  40. package/src/auth/multi-tenancy/organizations/server/index.ts +10 -0
  41. package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -0
  42. package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -0
  43. package/src/auth/multi-tenancy/types.ts +89 -0
  44. package/src/auth/multi-tenancy/users/__tests__/user.test.ts +208 -0
  45. package/src/auth/multi-tenancy/users/api-schemas.ts +194 -0
  46. package/src/auth/multi-tenancy/users/index.ts +28 -0
  47. package/src/auth/multi-tenancy/users/server/index.ts +19 -0
  48. package/src/auth/multi-tenancy/users/server/transforms.ts +21 -0
  49. package/src/auth/multi-tenancy/users/server/workos.ts +16 -0
  50. package/src/auth/multi-tenancy/users/user.ts +65 -0
  51. package/src/business/acquisition/api-schemas.ts +759 -0
  52. package/src/business/acquisition/index.ts +109 -0
  53. package/src/business/acquisition/types.ts +400 -0
  54. package/src/business/crm/api-schemas.ts +75 -0
  55. package/src/business/delivery/index.ts +1 -0
  56. package/src/business/delivery/types.ts +89 -0
  57. package/src/business/index.ts +12 -0
  58. package/src/business/pdf/assets/ElevasisLogo.png +0 -0
  59. package/src/business/pdf/browser/image-utils.ts +74 -0
  60. package/src/business/pdf/browser/index.ts +16 -0
  61. package/src/business/pdf/browser/pdfmake-browser.ts +229 -0
  62. package/src/business/pdf/index.ts +10 -0
  63. package/src/business/pdf/sections/acceptance.ts +112 -0
  64. package/src/business/pdf/sections/automation.ts +56 -0
  65. package/src/business/pdf/sections/cover.ts +51 -0
  66. package/src/business/pdf/sections/index.ts +57 -0
  67. package/src/business/pdf/sections/investment.ts +69 -0
  68. package/src/business/pdf/sections/proposal-document.ts +200 -0
  69. package/src/business/pdf/sections/summary-investment.ts +124 -0
  70. package/src/business/pdf/sections/summary.ts +55 -0
  71. package/src/business/pdf/sections/table-summary.ts +59 -0
  72. package/src/business/pdf/sections/types.ts +124 -0
  73. package/src/business/pdf/server/__tests__/pdfmake-test.ts +219 -0
  74. package/src/business/pdf/server/index.ts +21 -0
  75. package/src/business/pdf/server/pdfmake-service.ts +237 -0
  76. package/src/business/pdf/server/themes/default.ts +8 -0
  77. package/src/business/pdf/server/themes/index.ts +9 -0
  78. package/src/business/pdf/server/themes/types.ts +8 -0
  79. package/src/business/pdf/shared/convert.ts +514 -0
  80. package/src/business/pdf/shared/index.ts +12 -0
  81. package/src/business/pdf/themes.ts +78 -0
  82. package/src/business/pdf/types.ts +272 -0
  83. package/src/business/seo/__tests__/linking.test.ts +549 -0
  84. package/src/business/seo/__tests__/types.test.ts +404 -0
  85. package/src/business/seo/index.ts +2 -0
  86. package/src/business/seo/linking.ts +281 -0
  87. package/src/business/seo/types.ts +199 -0
  88. package/src/commands/index.ts +8 -0
  89. package/src/commands/queue/index.ts +3 -0
  90. package/src/commands/queue/schemas.test.ts +593 -0
  91. package/src/commands/queue/schemas.ts +125 -0
  92. package/src/commands/queue/sse-events.ts +61 -0
  93. package/src/commands/queue/types/action.ts +52 -0
  94. package/src/commands/queue/types/checkpoint.ts +44 -0
  95. package/src/commands/queue/types/index.ts +7 -0
  96. package/src/commands/queue/types/task.ts +116 -0
  97. package/src/commands/queue/types.ts +14 -0
  98. package/src/content/distribution-metadata.ts +61 -0
  99. package/src/content/index.ts +10 -0
  100. package/src/deployments/index.ts +22 -0
  101. package/src/execution/calibration/__tests__/schemas.test.ts +320 -0
  102. package/src/execution/calibration/index.ts +3 -0
  103. package/src/execution/calibration/schemas.ts +121 -0
  104. package/src/execution/calibration/sse-events.ts +125 -0
  105. package/src/execution/calibration/types.ts +190 -0
  106. package/src/execution/core/__tests__/api-schemas.test.ts +667 -0
  107. package/src/execution/core/__tests__/archived-logs.test.ts +72 -0
  108. package/src/execution/core/api-schemas.ts +312 -0
  109. package/src/execution/core/index.ts +11 -0
  110. package/src/execution/core/resource-validator.test.ts +63 -0
  111. package/src/execution/core/runner-types.ts +80 -0
  112. package/src/execution/core/server/environment.ts +31 -0
  113. package/src/execution/core/sse-executions.ts +119 -0
  114. package/src/execution/core/types.ts +29 -0
  115. package/src/execution/engine/__tests__/fixtures/index.ts +2 -0
  116. package/src/execution/engine/__tests__/fixtures/mock-scenarios.ts +60 -0
  117. package/src/execution/engine/__tests__/fixtures/test-agents.ts +85 -0
  118. package/src/execution/engine/__tests__/integration/agent-framework.integration.test.ts +1031 -0
  119. package/src/execution/engine/__tests__/timeout.test.ts +565 -0
  120. package/src/execution/engine/agent/__tests__/errors.test.ts +508 -0
  121. package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -0
  122. package/src/execution/engine/agent/actions/executor.ts +205 -0
  123. package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -0
  124. package/src/execution/engine/agent/actions/processor.ts +116 -0
  125. package/src/execution/engine/agent/actions/types.ts +70 -0
  126. package/src/execution/engine/agent/core/__tests__/agent.test.ts +614 -0
  127. package/src/execution/engine/agent/core/__tests__/error-passthrough.test.ts +134 -0
  128. package/src/execution/engine/agent/core/agent.ts +810 -0
  129. package/src/execution/engine/agent/core/types.ts +155 -0
  130. package/src/execution/engine/agent/errors.ts +251 -0
  131. package/src/execution/engine/agent/index.ts +78 -0
  132. package/src/execution/engine/agent/knowledge-map/__tests__/navigate-knowledge-executor.test.ts +580 -0
  133. package/src/execution/engine/agent/knowledge-map/__tests__/utils.test.ts +622 -0
  134. package/src/execution/engine/agent/knowledge-map/types.ts +106 -0
  135. package/src/execution/engine/agent/knowledge-map/utils.ts +101 -0
  136. package/src/execution/engine/agent/memory/__tests__/domains.test.ts +72 -0
  137. package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -0
  138. package/src/execution/engine/agent/memory/__tests__/utils.test.ts +285 -0
  139. package/src/execution/engine/agent/memory/domains.ts +99 -0
  140. package/src/execution/engine/agent/memory/manager.ts +365 -0
  141. package/src/execution/engine/agent/memory/processor.ts +66 -0
  142. package/src/execution/engine/agent/memory/types.ts +90 -0
  143. package/src/execution/engine/agent/memory/utils.ts +134 -0
  144. package/src/execution/engine/agent/observability/logging.ts +467 -0
  145. package/src/execution/engine/agent/observability/types.ts +64 -0
  146. package/src/execution/engine/agent/reasoning/__tests__/request-builder.test.ts +209 -0
  147. package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -0
  148. package/src/execution/engine/agent/reasoning/processor.ts +92 -0
  149. package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -0
  150. package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -0
  151. package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -0
  152. package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -0
  153. package/src/execution/engine/agent/reasoning/prompt-sections/security.ts +32 -0
  154. package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -0
  155. package/src/execution/engine/agent/reasoning/request-builder.ts +169 -0
  156. package/src/execution/engine/agent/reasoning/types.ts +18 -0
  157. package/src/execution/engine/base/__tests__/errors.test.ts +246 -0
  158. package/src/execution/engine/base/__tests__/serialization.test.ts +670 -0
  159. package/src/execution/engine/base/__tests__/utils.test.ts +45 -0
  160. package/src/execution/engine/base/errors.ts +118 -0
  161. package/src/execution/engine/base/index.ts +2 -0
  162. package/src/execution/engine/base/logging.ts +31 -0
  163. package/src/execution/engine/base/serialization.ts +324 -0
  164. package/src/execution/engine/base/types.ts +126 -0
  165. package/src/execution/engine/base/utils.ts +41 -0
  166. package/src/execution/engine/index.ts +440 -0
  167. package/src/execution/engine/interface/index.ts +1 -0
  168. package/src/execution/engine/interface/types.ts +62 -0
  169. package/src/execution/engine/llm/__tests__/errors.test.ts +318 -0
  170. package/src/execution/engine/llm/__tests__/input-sanitizer.test.ts +286 -0
  171. package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -0
  172. package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -0
  173. package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -0
  174. package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -0
  175. package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -0
  176. package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -0
  177. package/src/execution/engine/llm/adapters/__tests__/circuit-breaker-error.test.ts +94 -0
  178. package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -0
  179. package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -0
  180. package/src/execution/engine/llm/adapters/__tests__/mock-adapter.test.ts +432 -0
  181. package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -0
  182. package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -0
  183. package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -0
  184. package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -0
  185. package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -0
  186. package/src/execution/engine/llm/adapters/index.ts +17 -0
  187. package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -0
  188. package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -0
  189. package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -0
  190. package/src/execution/engine/llm/adapters/server/compose-signal.ts +18 -0
  191. package/src/execution/engine/llm/adapters/server/google.ts +283 -0
  192. package/src/execution/engine/llm/adapters/server/index.ts +12 -0
  193. package/src/execution/engine/llm/adapters/server/openai.ts +206 -0
  194. package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -0
  195. package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -0
  196. package/src/execution/engine/llm/errors.ts +186 -0
  197. package/src/execution/engine/llm/input-sanitizer.ts +129 -0
  198. package/src/execution/engine/llm/model-info.ts +332 -0
  199. package/src/execution/engine/llm/response-schema-validator.ts +113 -0
  200. package/src/execution/engine/llm/types.ts +86 -0
  201. package/src/execution/engine/test-utils/index.ts +6 -0
  202. package/src/execution/engine/test-utils/mocks.ts +56 -0
  203. package/src/execution/engine/tools/__tests__/tooling-error.test.ts +265 -0
  204. package/src/execution/engine/tools/__tests__/types.test.ts +47 -0
  205. package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -0
  206. package/src/execution/engine/tools/integration/index.ts +53 -0
  207. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -0
  208. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -0
  209. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -0
  210. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -0
  211. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -0
  212. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -0
  213. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -0
  214. package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -0
  215. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -0
  216. package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -0
  217. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -0
  218. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -0
  219. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -0
  220. package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -0
  221. package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +362 -0
  222. package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -0
  223. package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -0
  224. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/README.md +632 -0
  225. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -0
  226. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -0
  227. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -0
  228. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -0
  229. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -0
  230. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.test.ts +186 -0
  231. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -0
  232. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -0
  233. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -0
  234. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -0
  235. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.test.ts +338 -0
  236. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -0
  237. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -0
  238. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -0
  239. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +147 -0
  240. package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -0
  241. package/src/execution/engine/tools/integration/server/adapters/dropbox/__tests__/dropbox-adapter.test.ts +409 -0
  242. package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-adapter.ts +281 -0
  243. package/src/execution/engine/tools/integration/server/adapters/dropbox/dropbox-tools.ts +106 -0
  244. package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/__tests__/index.test.ts +451 -0
  245. package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/create-folder/index.ts +114 -0
  246. package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/__tests__/index.test.ts +415 -0
  247. package/src/execution/engine/tools/integration/server/adapters/dropbox/fetch/upload-file/index.ts +111 -0
  248. package/src/execution/engine/tools/integration/server/adapters/dropbox/index.ts +25 -0
  249. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -0
  250. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -0
  251. package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -0
  252. package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -0
  253. package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -0
  254. package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -0
  255. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -0
  256. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -0
  257. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -0
  258. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -0
  259. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -0
  260. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -0
  261. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -0
  262. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -0
  263. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -0
  264. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -0
  265. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -0
  266. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -0
  267. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -0
  268. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -0
  269. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -0
  270. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -0
  271. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -0
  272. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -0
  273. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -0
  274. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -0
  275. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -0
  276. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -0
  277. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -0
  278. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -0
  279. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -0
  280. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -0
  281. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -0
  282. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -0
  283. package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -0
  284. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -0
  285. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -0
  286. package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -0
  287. package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -0
  288. package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -0
  289. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -0
  290. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -0
  291. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -0
  292. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -0
  293. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -0
  294. package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -0
  295. package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -0
  296. package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -0
  297. package/src/execution/engine/tools/integration/server/adapters/resend/types.ts +44 -0
  298. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -0
  299. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -0
  300. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -0
  301. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/utils/types.ts +246 -0
  302. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -0
  303. package/src/execution/engine/tools/integration/server/adapters/signature-api/index.ts +38 -0
  304. package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-adapter.ts +87 -0
  305. package/src/execution/engine/tools/integration/server/adapters/signature-api/signature-api-tools.ts +179 -0
  306. package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -0
  307. package/src/execution/engine/tools/integration/server/adapters/stripe/index.ts +44 -0
  308. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -0
  309. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -0
  310. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -0
  311. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -0
  312. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -0
  313. package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -0
  314. package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -0
  315. package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -0
  316. package/src/execution/engine/tools/integration/server/index.ts +61 -0
  317. package/src/execution/engine/tools/integration/service.ts +161 -0
  318. package/src/execution/engine/tools/integration/tool.ts +253 -0
  319. package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -0
  320. package/src/execution/engine/tools/integration/types/apify.ts +92 -0
  321. package/src/execution/engine/tools/integration/types/attio.ts +354 -0
  322. package/src/execution/engine/tools/integration/types/dropbox.ts +64 -0
  323. package/src/execution/engine/tools/integration/types/gmail.ts +35 -0
  324. package/src/execution/engine/tools/integration/types/google-sheets.ts +303 -0
  325. package/src/execution/engine/tools/integration/types/index.ts +19 -0
  326. package/src/execution/engine/tools/integration/types/instantly.ts +557 -0
  327. package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -0
  328. package/src/execution/engine/tools/integration/types/resend.ts +63 -0
  329. package/src/execution/engine/tools/integration/types/signature-api.ts +164 -0
  330. package/src/execution/engine/tools/integration/types/stripe.ts +162 -0
  331. package/src/execution/engine/tools/integration/types/tomba.ts +94 -0
  332. package/src/execution/engine/tools/lead-service-types.ts +884 -0
  333. package/src/execution/engine/tools/llm/index.ts +11 -0
  334. package/src/execution/engine/tools/llm/server/index.ts +8 -0
  335. package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -0
  336. package/src/execution/engine/tools/platform/__tests__/approval.test.ts +242 -0
  337. package/src/execution/engine/tools/platform/__tests__/email.test.ts +482 -0
  338. package/src/execution/engine/tools/platform/__tests__/hitl-cancel.test.ts +97 -0
  339. package/src/execution/engine/tools/platform/__tests__/notification.test.ts +208 -0
  340. package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -0
  341. package/src/execution/engine/tools/platform/__tests__/scheduler.test.ts +189 -0
  342. package/src/execution/engine/tools/platform/__tests__/schedules.test.ts +336 -0
  343. package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -0
  344. package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -0
  345. package/src/execution/engine/tools/platform/acquisition/index.ts +43 -0
  346. package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -0
  347. package/src/execution/engine/tools/platform/acquisition/types.ts +260 -0
  348. package/src/execution/engine/tools/platform/approval/cancel-by-metadata.ts +65 -0
  349. package/src/execution/engine/tools/platform/approval/index.ts +4 -0
  350. package/src/execution/engine/tools/platform/approval/tool.ts +99 -0
  351. package/src/execution/engine/tools/platform/email/index.ts +122 -0
  352. package/src/execution/engine/tools/platform/email/types.ts +96 -0
  353. package/src/execution/engine/tools/platform/index.ts +181 -0
  354. package/src/execution/engine/tools/platform/notification.ts +81 -0
  355. package/src/execution/engine/tools/platform/pdf/index.ts +110 -0
  356. package/src/execution/engine/tools/platform/pdf/types.ts +77 -0
  357. package/src/execution/engine/tools/platform/resource-invocation/__tests__/edge-cases.test.ts +507 -0
  358. package/src/execution/engine/tools/platform/resource-invocation/__tests__/resource-invocation-service.test.ts +500 -0
  359. package/src/execution/engine/tools/platform/resource-invocation/__tests__/tool.test.ts +555 -0
  360. package/src/execution/engine/tools/platform/resource-invocation/dynamic-tool.ts +94 -0
  361. package/src/execution/engine/tools/platform/resource-invocation/index.ts +14 -0
  362. package/src/execution/engine/tools/platform/resource-invocation/resource-invocation-service.ts +147 -0
  363. package/src/execution/engine/tools/platform/resource-invocation/tool.ts +115 -0
  364. package/src/execution/engine/tools/platform/resource-invocation/types.ts +31 -0
  365. package/src/execution/engine/tools/platform/scheduler.ts +87 -0
  366. package/src/execution/engine/tools/platform/schedules/cancel-by-key-tool.ts +48 -0
  367. package/src/execution/engine/tools/platform/schedules/cancel-by-metadata-tool.ts +42 -0
  368. package/src/execution/engine/tools/platform/schedules/delete-by-key-tool.ts +43 -0
  369. package/src/execution/engine/tools/platform/schedules/index.ts +13 -0
  370. package/src/execution/engine/tools/platform/schedules/list-tool.ts +56 -0
  371. package/src/execution/engine/tools/platform/schedules/types.ts +88 -0
  372. package/src/execution/engine/tools/platform/storage/__tests__/storage.test.ts +998 -0
  373. package/src/execution/engine/tools/platform/storage/index.ts +370 -0
  374. package/src/execution/engine/tools/platform/storage/types.ts +128 -0
  375. package/src/execution/engine/tools/platform/types.ts +148 -0
  376. package/src/execution/engine/tools/registry.ts +590 -0
  377. package/src/execution/engine/tools/tool-maps.ts +694 -0
  378. package/src/execution/engine/tools/types.ts +233 -0
  379. package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -0
  380. package/src/execution/engine/workflow/__tests__/utils.test.ts +645 -0
  381. package/src/execution/engine/workflow/__tests__/workflow.test.ts +818 -0
  382. package/src/execution/engine/workflow/errors.ts +63 -0
  383. package/src/execution/engine/workflow/helpers/index.ts +11 -0
  384. package/src/execution/engine/workflow/helpers/server/index.ts +8 -0
  385. package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -0
  386. package/src/execution/engine/workflow/index.ts +19 -0
  387. package/src/execution/engine/workflow/log-truncate.ts +26 -0
  388. package/src/execution/engine/workflow/logging.ts +191 -0
  389. package/src/execution/engine/workflow/types.ts +183 -0
  390. package/src/execution/engine/workflow/utils.ts +280 -0
  391. package/src/execution/engine/workflow/workflow.ts +168 -0
  392. package/src/execution/index.ts +20 -0
  393. package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -0
  394. package/src/execution/scheduler/__tests__/retry.test.ts +37 -0
  395. package/src/execution/scheduler/__tests__/utils.test.ts +1009 -0
  396. package/src/execution/scheduler/api-schemas.ts +296 -0
  397. package/src/execution/scheduler/index.ts +50 -0
  398. package/src/execution/scheduler/schemas.ts +264 -0
  399. package/src/execution/scheduler/types.ts +111 -0
  400. package/src/execution/scheduler/utils.ts +364 -0
  401. package/src/forms/index.ts +7 -0
  402. package/src/forms/schemas.test.ts +113 -0
  403. package/src/forms/schemas.ts +69 -0
  404. package/src/forms/types.ts +70 -0
  405. package/src/index.ts +54 -0
  406. package/src/integrations/credentials/__tests__/api-schemas.test.ts +496 -0
  407. package/src/integrations/credentials/__tests__/schemas.test.ts +82 -0
  408. package/src/integrations/credentials/__tests__/utils.test.ts +144 -0
  409. package/src/integrations/credentials/api-schemas.ts +143 -0
  410. package/src/integrations/credentials/index.ts +32 -0
  411. package/src/integrations/credentials/schemas.ts +164 -0
  412. package/src/integrations/credentials/utils.ts +59 -0
  413. package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -0
  414. package/src/integrations/oauth/api-schemas.ts +92 -0
  415. package/src/integrations/oauth/index.ts +19 -0
  416. package/src/integrations/oauth/provider-registry.ts +61 -0
  417. package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -0
  418. package/src/integrations/oauth/server/__tests__/refresh.integration.test.ts +257 -0
  419. package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -0
  420. package/src/integrations/oauth/server/credentials.ts +39 -0
  421. package/src/integrations/oauth/server/refresh.ts +214 -0
  422. package/src/integrations/oauth/types.ts +34 -0
  423. package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -0
  424. package/src/integrations/webhook-endpoints/api-schemas.ts +102 -0
  425. package/src/integrations/webhook-endpoints/index.ts +28 -0
  426. package/src/integrations/webhook-endpoints/types.ts +51 -0
  427. package/src/operations/activities/api-schemas.ts +79 -0
  428. package/src/operations/activities/index.ts +9 -0
  429. package/src/operations/activities/sse-events.ts +30 -0
  430. package/src/operations/activities/types.ts +63 -0
  431. package/src/operations/debug-logs/client.ts +60 -0
  432. package/src/operations/debug-logs/debug-logger.ts +83 -0
  433. package/src/operations/debug-logs/index.ts +8 -0
  434. package/src/operations/debug-logs/server.ts +19 -0
  435. package/src/operations/debug-logs/types.ts +33 -0
  436. package/src/operations/index.ts +50 -0
  437. package/src/operations/notifications/__tests__/api-schemas.test.ts +216 -0
  438. package/src/operations/notifications/api-schemas.ts +91 -0
  439. package/src/operations/notifications/index.ts +3 -0
  440. package/src/operations/notifications/sse-events.ts +21 -0
  441. package/src/operations/notifications/types.ts +47 -0
  442. package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -0
  443. package/src/operations/observability/__tests__/schemas.test.ts +151 -0
  444. package/src/operations/observability/__tests__/types.test.ts +109 -0
  445. package/src/operations/observability/__tests__/utils.test.ts +54 -0
  446. package/src/operations/observability/ai-usage-collector.ts +64 -0
  447. package/src/operations/observability/index.ts +13 -0
  448. package/src/operations/observability/metrics-collector.ts +49 -0
  449. package/src/operations/observability/schemas.ts +39 -0
  450. package/src/operations/observability/types.ts +463 -0
  451. package/src/operations/observability/utils.ts +77 -0
  452. package/src/operations/sessions/__tests__/api-schemas.test.ts +361 -0
  453. package/src/operations/sessions/__tests__/manager.test.ts +821 -0
  454. package/src/operations/sessions/api-schemas.ts +166 -0
  455. package/src/operations/sessions/index.ts +26 -0
  456. package/src/operations/sessions/server/manager.ts +90 -0
  457. package/src/operations/sessions/server/session.ts +180 -0
  458. package/src/operations/sessions/types.ts +98 -0
  459. package/src/operations/triggers/index.ts +12 -0
  460. package/src/operations/triggers/webhook/definitions/__tests__/instantly-reply-received.test.ts +72 -0
  461. package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -0
  462. package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -0
  463. package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -0
  464. package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -0
  465. package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -0
  466. package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -0
  467. package/src/operations/triggers/webhook/index.ts +35 -0
  468. package/src/operations/triggers/webhook/types.ts +74 -0
  469. package/src/organization-model/README.md +79 -0
  470. package/src/organization-model/__tests__/graph.test.ts +250 -0
  471. package/src/organization-model/__tests__/resolve.test.ts +47 -0
  472. package/src/organization-model/defaults.ts +60 -0
  473. package/src/organization-model/domains/branding.ts +22 -0
  474. package/src/organization-model/domains/crm.ts +46 -0
  475. package/src/organization-model/domains/delivery.ts +48 -0
  476. package/src/organization-model/domains/features.ts +57 -0
  477. package/src/organization-model/domains/lead-gen.ts +33 -0
  478. package/src/organization-model/domains/navigation.ts +103 -0
  479. package/src/organization-model/domains/shared.ts +42 -0
  480. package/src/organization-model/graph/build.ts +432 -0
  481. package/src/organization-model/graph/index.ts +4 -0
  482. package/src/organization-model/graph/schema.ts +50 -0
  483. package/src/organization-model/graph/types.ts +52 -0
  484. package/src/organization-model/index.ts +11 -0
  485. package/src/organization-model/published.ts +18 -0
  486. package/src/organization-model/resolve.ts +42 -0
  487. package/src/organization-model/schema.ts +21 -0
  488. package/src/organization-model/types.ts +27 -0
  489. package/src/platform/api/index.ts +1 -0
  490. package/src/platform/api/types.ts +35 -0
  491. package/src/platform/constants/http.ts +37 -0
  492. package/src/platform/constants/index.ts +5 -0
  493. package/src/platform/constants/limits.ts +32 -0
  494. package/src/platform/constants/resilience.ts +51 -0
  495. package/src/platform/constants/timeouts.ts +20 -0
  496. package/src/platform/constants/versions.ts +3 -0
  497. package/src/platform/index.ts +27 -0
  498. package/src/platform/registry/__tests__/command-view.test.ts +410 -0
  499. package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -0
  500. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1004 -0
  501. package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -0
  502. package/src/platform/registry/__tests__/resource-registry.test.ts +1942 -0
  503. package/src/platform/registry/__tests__/serialization.test.ts +1127 -0
  504. package/src/platform/registry/__tests__/validation.test.ts +1086 -0
  505. package/src/platform/registry/command-view.ts +180 -0
  506. package/src/platform/registry/domains.ts +165 -0
  507. package/src/platform/registry/index.ts +93 -0
  508. package/src/platform/registry/reserved.ts +24 -0
  509. package/src/platform/registry/resource-metadata.ts +59 -0
  510. package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -0
  511. package/src/platform/registry/resource-registry.ts +788 -0
  512. package/src/platform/registry/serialization.ts +273 -0
  513. package/src/platform/registry/serialized-types.ts +231 -0
  514. package/src/platform/registry/stats-types.ts +66 -0
  515. package/src/platform/registry/types.ts +404 -0
  516. package/src/platform/registry/validation.ts +513 -0
  517. package/src/platform/resilience/__tests__/circuit-breaker.test.ts +291 -0
  518. package/src/platform/resilience/__tests__/http-error-mapper.test.ts +173 -0
  519. package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -0
  520. package/src/platform/resilience/__tests__/retry.test.ts +380 -0
  521. package/src/platform/resilience/__tests__/timeout.test.ts +219 -0
  522. package/src/platform/resilience/circuit-breaker.ts +164 -0
  523. package/src/platform/resilience/errors.ts +68 -0
  524. package/src/platform/resilience/http-error-mapper.ts +129 -0
  525. package/src/platform/resilience/index.ts +93 -0
  526. package/src/platform/resilience/rate-limiter-types.ts +46 -0
  527. package/src/platform/resilience/rate-limiter.ts +140 -0
  528. package/src/platform/resilience/retry.ts +89 -0
  529. package/src/platform/resilience/timeout.ts +63 -0
  530. package/src/platform/sse/events.ts +67 -0
  531. package/src/platform/sse/index.ts +7 -0
  532. package/src/platform/utils/__tests__/currency.test.ts +77 -0
  533. package/src/platform/utils/__tests__/validation.test.ts +1083 -0
  534. package/src/platform/utils/currency.ts +96 -0
  535. package/src/platform/utils/debounce.ts +52 -0
  536. package/src/platform/utils/error.ts +42 -0
  537. package/src/platform/utils/hmac.test.ts +97 -0
  538. package/src/platform/utils/index.ts +32 -0
  539. package/src/platform/utils/server/betterstack-logger.ts +210 -0
  540. package/src/platform/utils/server/hmac.ts +44 -0
  541. package/src/platform/utils/server/unsubscribe.ts +111 -0
  542. package/src/platform/utils/token-counter.ts +96 -0
  543. package/src/platform/utils/validation.ts +425 -0
  544. package/src/projects/api-schemas.ts +265 -0
  545. package/src/published.ts +1 -0
  546. package/src/server.ts +273 -0
  547. package/src/supabase/__tests__/helpers.test.ts +51 -0
  548. package/src/supabase/database.types.ts +2674 -0
  549. package/src/supabase/helpers.ts +20 -0
  550. package/src/supabase/index.ts +52 -0
  551. package/src/supabase/server/client.ts +58 -0
  552. package/src/test-utils/README.md +150 -0
  553. package/src/test-utils/browser-mocks.ts +54 -0
  554. package/src/test-utils/fixtures/api-keys.ts +52 -0
  555. package/src/test-utils/fixtures/index.ts +4 -0
  556. package/src/test-utils/fixtures/memberships.ts +80 -0
  557. package/src/test-utils/fixtures/organizations.ts +69 -0
  558. package/src/test-utils/fixtures/users.ts +79 -0
  559. package/src/test-utils/index.ts +11 -0
  560. package/src/test-utils/mocks/index.ts +2 -0
  561. package/src/test-utils/mocks/supabase.ts +142 -0
  562. package/src/test-utils/mocks/workos.ts +108 -0
  563. package/src/test-utils/rls/RLSTestContext.ts +586 -0
  564. package/src/test-utils/rls/index.ts +1 -0
@@ -0,0 +1,73 @@
1
+ import type { BaseIntegrationAdapter } from '../../../base-integration-adapter'
2
+ import { ToolingError } from '../../../../types'
3
+ import type { ExecutionContext } from '../../../../../base/types'
4
+
5
+ import { findCompanyEmail } from './fetch/find-company-email/index'
6
+ import type { FindCompanyEmailParams } from './fetch/find-company-email/index'
7
+ import { findPersonEmail } from './fetch/find-person-email/index'
8
+ import type { FindPersonEmailParams } from './fetch/find-person-email/index'
9
+ import { findDecisionMakerEmail } from './fetch/find-decision-maker-email/index'
10
+ import type { FindDecisionMakerEmailParams } from './fetch/find-decision-maker-email/index'
11
+ import { verifyEmail } from './fetch/verify-email/index'
12
+ import type { VerifyEmailParams } from './fetch/verify-email/index'
13
+
14
+ interface AnymailfinderCredentials {
15
+ apiKey: string
16
+ }
17
+
18
+ /**
19
+ * Anymailfinder integration adapter
20
+ *
21
+ * Provides access to the Anymailfinder email discovery API for finding and
22
+ * verifying email addresses by company domain, person name, or decision maker role.
23
+ *
24
+ * @example
25
+ * const adapter = new AnymailfinderAdapter()
26
+ * const result = await adapter.call(
27
+ * 'findCompanyEmail',
28
+ * { domain: 'example.com' },
29
+ * { apiKey: 'anymailfinder_api_...' },
30
+ * context
31
+ * )
32
+ */
33
+ export class AnymailfinderAdapter implements BaseIntegrationAdapter {
34
+ readonly name = 'anymailfinder'
35
+
36
+ async call(
37
+ method: string,
38
+ params: unknown,
39
+ credentials: Record<string, unknown>,
40
+ context?: ExecutionContext
41
+ ): Promise<unknown> {
42
+ if (!this.validateCredentials(credentials)) {
43
+ throw new ToolingError('credentials_invalid', 'Invalid Anymailfinder credentials', {
44
+ integration: this.name,
45
+ organizationId: context?.organizationId
46
+ })
47
+ }
48
+
49
+ const creds = credentials as unknown as AnymailfinderCredentials
50
+
51
+ switch (method) {
52
+ case 'findCompanyEmail':
53
+ return findCompanyEmail(creds, params as FindCompanyEmailParams, context)
54
+ case 'findPersonEmail':
55
+ return findPersonEmail(creds, params as FindPersonEmailParams, context)
56
+ case 'findDecisionMakerEmail':
57
+ return findDecisionMakerEmail(creds, params as FindDecisionMakerEmailParams, context)
58
+ case 'verifyEmail':
59
+ return verifyEmail(creds, params as VerifyEmailParams, context)
60
+ default:
61
+ throw new ToolingError('method_not_found', `Unknown Anymailfinder method: ${method}`, {
62
+ integration: this.name,
63
+ method,
64
+ organizationId: context?.organizationId
65
+ })
66
+ }
67
+ }
68
+
69
+ validateCredentials(credentials: Record<string, unknown>): boolean {
70
+ const creds = credentials as unknown as AnymailfinderCredentials
71
+ return !!creds.apiKey && typeof creds.apiKey === 'string' && creds.apiKey.length > 0
72
+ }
73
+ }
@@ -0,0 +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
+ }
@@ -0,0 +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
+ }
@@ -0,0 +1,122 @@
1
+ import { ToolingError } from '../../../../../../types'
2
+ import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
3
+ import type { ExecutionContext } from '../../../../../../../base/types'
4
+
5
+ interface AnymailfinderCredentials {
6
+ apiKey: string
7
+ }
8
+
9
+ export interface FindDecisionMakerEmailParams {
10
+ domain?: string
11
+ company_name?: string
12
+ decision_maker_category: string[]
13
+ }
14
+
15
+ export interface FindDecisionMakerEmailResult {
16
+ email: string
17
+ email_status: 'valid' | 'risky' | 'not_found' | 'blacklisted'
18
+ valid_email: string
19
+ person_full_name: string
20
+ person_job_title: string
21
+ person_linkedin_url: string
22
+ decision_maker_category: string
23
+ }
24
+
25
+ const ANYMAILFINDER_API_BASE = 'https://api.anymailfinder.com/v5.1'
26
+
27
+ const _VALID_CATEGORIES = [
28
+ 'ceo',
29
+ 'operations',
30
+ 'marketing',
31
+ 'sales',
32
+ 'finance',
33
+ 'hr',
34
+ 'engineering',
35
+ 'it',
36
+ 'logistics',
37
+ 'buyer'
38
+ ] as const
39
+
40
+ /**
41
+ * Find a decision maker email via Anymailfinder
42
+ *
43
+ * Searches for the email address of a decision maker at a company, identified
44
+ * by domain or company name, filtered by one or more role categories.
45
+ *
46
+ * @param credentials - Anymailfinder API key
47
+ * @param params - Company identifier (domain or name) and decision maker categories
48
+ * @param context - Execution context for logging
49
+ * @returns Email address, status, and person details for the matched decision maker
50
+ */
51
+ export async function findDecisionMakerEmail(
52
+ credentials: AnymailfinderCredentials,
53
+ params: FindDecisionMakerEmailParams,
54
+ context?: ExecutionContext
55
+ ): Promise<FindDecisionMakerEmailResult> {
56
+ const { apiKey } = credentials
57
+ const { domain, company_name, decision_maker_category } = params
58
+
59
+ if (!domain && !company_name) {
60
+ throw new ToolingError('validation_error', 'Either domain or company_name is required', {
61
+ integration: 'anymailfinder',
62
+ method: 'findDecisionMakerEmail'
63
+ })
64
+ }
65
+
66
+ if (!decision_maker_category || decision_maker_category.length === 0) {
67
+ throw new ToolingError('validation_error', 'decision_maker_category is required and must be non-empty', {
68
+ integration: 'anymailfinder',
69
+ method: 'findDecisionMakerEmail'
70
+ })
71
+ }
72
+
73
+ const findUrl = `${ANYMAILFINDER_API_BASE}/find-email/decision-maker`
74
+
75
+ if (context?.logger) {
76
+ context.logger.info(
77
+ `[AnymailfinderAdapter] Finding decision maker email: organizationId=${context.organizationId} executionId=${context.executionId} domain=${domain || 'none'} company_name=${company_name || 'none'} categories=${decision_maker_category.join(',')}`
78
+ )
79
+ }
80
+
81
+ const response = await withRetry(async () => {
82
+ const res = await fetch(findUrl, {
83
+ method: 'POST',
84
+ headers: {
85
+ Authorization: apiKey,
86
+ 'Content-Type': 'application/json'
87
+ },
88
+ body: JSON.stringify({
89
+ ...(domain ? { domain } : {}),
90
+ ...(company_name ? { company_name } : {}),
91
+ decision_maker_category
92
+ }),
93
+ signal: AbortSignal.timeout(180_000)
94
+ })
95
+
96
+ if (!res.ok) {
97
+ throw await createHttpError(res, {
98
+ integration: 'anymailfinder',
99
+ method: 'findDecisionMakerEmail',
100
+ organizationId: context?.organizationId
101
+ })
102
+ }
103
+
104
+ return res.json()
105
+ }, DEFAULT_RETRY_POLICY)
106
+
107
+ if (context?.logger) {
108
+ context.logger.info(
109
+ `[AnymailfinderAdapter] Decision maker email fetched: organizationId=${context.organizationId} executionId=${context.executionId} email_status=${response.email_status ?? 'not_found'} category=${response.decision_maker_category ?? ''}`
110
+ )
111
+ }
112
+
113
+ return {
114
+ email: response.email ?? '',
115
+ email_status: response.email_status ?? 'not_found',
116
+ valid_email: response.valid_email ?? '',
117
+ person_full_name: response.person_full_name ?? '',
118
+ person_job_title: response.person_job_title ?? '',
119
+ person_linkedin_url: response.person_linkedin_url ?? '',
120
+ decision_maker_category: response.decision_maker_category ?? ''
121
+ }
122
+ }
@@ -0,0 +1,89 @@
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 FindPersonEmailParams {
9
+ domain: string
10
+ company_name?: string
11
+ full_name?: string
12
+ first_name?: string
13
+ last_name?: string
14
+ }
15
+
16
+ export interface FindPersonEmailResult {
17
+ email: string
18
+ email_status: 'valid' | 'risky' | 'not_found' | 'blacklisted'
19
+ valid_email: string
20
+ }
21
+
22
+ const ANYMAILFINDER_API_BASE = 'https://api.anymailfinder.com/v5.1'
23
+
24
+ /**
25
+ * Find a person's email address via Anymailfinder
26
+ *
27
+ * Searches for a specific person's email by combining their name with a
28
+ * company domain or name. Requires either full_name or first_name+last_name,
29
+ * and either domain or company_name.
30
+ *
31
+ * @param credentials - Anymailfinder API key
32
+ * @param params - Person name and company domain or name
33
+ * @param context - Execution context for logging
34
+ * @returns Email address, status, and validated email if available
35
+ */
36
+ export async function findPersonEmail(
37
+ credentials: AnymailfinderCredentials,
38
+ params: FindPersonEmailParams,
39
+ context?: ExecutionContext
40
+ ): Promise<FindPersonEmailResult> {
41
+ const { apiKey } = credentials
42
+
43
+ if (!params.domain && !params.company_name) {
44
+ throw new Error('Either domain or company_name is required for findPersonEmail')
45
+ }
46
+
47
+ if (!params.full_name && !(params.first_name && params.last_name)) {
48
+ throw new Error('Either full_name or both first_name and last_name are required for findPersonEmail')
49
+ }
50
+
51
+ if (context?.logger) {
52
+ context.logger.info(
53
+ `[AnymailfinderAdapter] findPersonEmail: organizationId=${context.organizationId} executionId=${context.executionId} domain=${params.domain} company_name=${params.company_name} full_name=${params.full_name} first_name=${params.first_name} last_name=${params.last_name}`
54
+ )
55
+ }
56
+
57
+ const response = await withRetry(async () => {
58
+ const res = await fetch(`${ANYMAILFINDER_API_BASE}/find-email/person`, {
59
+ method: 'POST',
60
+ headers: {
61
+ 'Content-Type': 'application/json',
62
+ Authorization: apiKey
63
+ },
64
+ body: JSON.stringify(params)
65
+ })
66
+
67
+ if (!res.ok) {
68
+ throw await createHttpError(res, {
69
+ integration: 'anymailfinder',
70
+ method: 'findPersonEmail',
71
+ organizationId: context?.organizationId
72
+ })
73
+ }
74
+
75
+ return res.json()
76
+ }, DEFAULT_RETRY_POLICY)
77
+
78
+ if (context?.logger) {
79
+ context.logger.info(
80
+ `[AnymailfinderAdapter] findPersonEmail complete: organizationId=${context.organizationId} email_status=${response.email_status} email=${response.email ? '[found]' : '[not found]'}`
81
+ )
82
+ }
83
+
84
+ return {
85
+ email: response.email ?? '',
86
+ email_status: response.email_status ?? 'not_found',
87
+ valid_email: response.valid_email ?? ''
88
+ }
89
+ }
@@ -0,0 +1,84 @@
1
+ import { ToolingError } from '../../../../../../types'
2
+ import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
3
+ import type { ExecutionContext } from '../../../../../../../base/types'
4
+
5
+ interface AnymailfinderCredentials {
6
+ apiKey: string
7
+ }
8
+
9
+ export interface VerifyEmailParams {
10
+ email: string
11
+ }
12
+
13
+ export interface VerifyEmailResult {
14
+ email_status: 'valid' | 'risky' | 'not_found' | 'blacklisted'
15
+ }
16
+
17
+ const ANYMAILFINDER_API_BASE = 'https://api.anymailfinder.com/v5.1'
18
+
19
+ /**
20
+ * Verify an email address via Anymailfinder
21
+ *
22
+ * Checks whether the given email address is valid, risky, not found, or
23
+ * blacklisted. Costs 0.2 credits per valid result.
24
+ *
25
+ * @param credentials - Anymailfinder API key
26
+ * @param params - Email address to verify
27
+ * @param context - Execution context for logging
28
+ * @returns Email status classification
29
+ */
30
+ export async function verifyEmail(
31
+ credentials: AnymailfinderCredentials,
32
+ params: VerifyEmailParams,
33
+ context?: ExecutionContext
34
+ ): Promise<VerifyEmailResult> {
35
+ const { apiKey } = credentials
36
+ const { email } = params
37
+
38
+ if (!email) {
39
+ throw new ToolingError('validation_error', 'Missing required parameter: email', {
40
+ integration: 'anymailfinder',
41
+ method: 'verifyEmail'
42
+ })
43
+ }
44
+
45
+ const verifyUrl = `${ANYMAILFINDER_API_BASE}/verify-email`
46
+
47
+ if (context?.logger) {
48
+ context.logger.info(
49
+ `[AnymailfinderAdapter] Verifying email: organizationId=${context.organizationId} executionId=${context.executionId} email=${email}`
50
+ )
51
+ }
52
+
53
+ const response = await withRetry(async () => {
54
+ const res = await fetch(verifyUrl, {
55
+ method: 'POST',
56
+ headers: {
57
+ Authorization: apiKey,
58
+ 'Content-Type': 'application/json'
59
+ },
60
+ body: JSON.stringify({ email }),
61
+ signal: AbortSignal.timeout(180_000)
62
+ })
63
+
64
+ if (!res.ok) {
65
+ throw await createHttpError(res, {
66
+ integration: 'anymailfinder',
67
+ method: 'verifyEmail',
68
+ organizationId: context?.organizationId
69
+ })
70
+ }
71
+
72
+ return res.json()
73
+ }, DEFAULT_RETRY_POLICY)
74
+
75
+ if (context?.logger) {
76
+ context.logger.info(
77
+ `[AnymailfinderAdapter] Email verification complete: organizationId=${context.organizationId} executionId=${context.executionId} email=${email} email_status=${response.email_status ?? 'not_found'}`
78
+ )
79
+ }
80
+
81
+ return {
82
+ email_status: response.email_status ?? 'not_found'
83
+ }
84
+ }
@@ -0,0 +1,16 @@
1
+ // ============================================================================
2
+ // ANYMAILFINDER ADAPTER
3
+ // ============================================================================
4
+
5
+ export { AnymailfinderAdapter } from './anymailfinder-adapter'
6
+
7
+ // ============================================================================
8
+ // ANYMAILFINDER TOOLS
9
+ // ============================================================================
10
+
11
+ export {
12
+ createAnymailfinderFindCompanyEmailTool,
13
+ createAnymailfinderFindPersonEmailTool,
14
+ createAnymailfinderFindDecisionMakerEmailTool,
15
+ createAnymailfinderVerifyEmailTool
16
+ } from './anymailfinder-tools'