@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,309 @@
1
+ import { z } from 'zod'
2
+ import type { Tool } from '../../../../types'
3
+ import { createIntegrationTool } from '../../../tool'
4
+
5
+ /**
6
+ * Create a tool that generates Stripe payment links
7
+ *
8
+ * @param credentialName - Name of the Stripe credential to use
9
+ * @returns Tool instance
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const tool = createStripeCreatePaymentLinkTool('elevasis-stripe')
14
+ * const result = await tool.execute({
15
+ * priceId: 'price_xxx',
16
+ * metadata: { deal_id: 'deal-123' },
17
+ * redirectUrl: 'https://app.elevasis.io/payment-success'
18
+ * }, context)
19
+ * ```
20
+ */
21
+ export function createStripeCreatePaymentLinkTool(credentialName: string): Tool {
22
+ return createIntegrationTool({
23
+ name: 'stripe_create_payment_link',
24
+ description: `Create a Stripe payment link for collecting payments.
25
+
26
+ Use this tool to generate a payment URL that can be sent to customers.
27
+ The link directs to Stripe's hosted checkout page.
28
+
29
+ Examples:
30
+ - Create link for proposal payment: priceId, metadata with deal_id, redirectUrl
31
+ - Create link with invoice: set invoiceCreation=true`,
32
+ inputSchema: z.object({
33
+ priceId: z.string().describe('Stripe price ID (price_xxx)'),
34
+ quantity: z.number().optional().default(1).describe('Quantity of items'),
35
+ metadata: z.record(z.string(), z.string()).optional().describe('Custom metadata'),
36
+ afterCompletionType: z
37
+ .enum(['redirect', 'hosted_confirmation'])
38
+ .optional()
39
+ .describe('What happens after payment'),
40
+ redirectUrl: z.string().url().optional().describe('URL to redirect after payment'),
41
+ allowPromotionCodes: z.boolean().optional().describe('Allow promo codes'),
42
+ automaticTax: z.boolean().optional().describe('Enable automatic tax'),
43
+ billingAddressCollection: z.enum(['auto', 'required']).optional().describe('Billing address mode'),
44
+ invoiceCreation: z.boolean().optional().describe('Generate invoice')
45
+ }),
46
+ outputSchema: z.object({
47
+ id: z.string().describe('Payment link ID (plink_xxx)'),
48
+ url: z.string().describe('Shareable payment URL'),
49
+ active: z.boolean().describe('Whether the link is active'),
50
+ livemode: z.boolean().describe('Whether in production mode')
51
+ }),
52
+ integration: 'stripe' as const,
53
+ method: 'createPaymentLink' as const,
54
+ credentialName
55
+ })
56
+ }
57
+
58
+ /**
59
+ * Create a tool that retrieves a Stripe payment link
60
+ *
61
+ * @param credentialName - Name of the Stripe credential to use
62
+ * @returns Tool instance
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const tool = createStripeGetPaymentLinkTool('elevasis-stripe')
67
+ * const result = await tool.execute({
68
+ * paymentLinkId: 'plink_xxx'
69
+ * }, context)
70
+ * ```
71
+ */
72
+ export function createStripeGetPaymentLinkTool(credentialName: string): Tool {
73
+ return createIntegrationTool({
74
+ name: 'stripe_get_payment_link',
75
+ description: `Get details of a Stripe payment link.
76
+
77
+ Use this tool to retrieve information about an existing payment link,
78
+ including its URL, status, and metadata.
79
+
80
+ Useful for:
81
+ - Checking if a payment link is still active
82
+ - Retrieving the URL for a previously created link
83
+ - Accessing metadata associated with the link`,
84
+ inputSchema: z.object({
85
+ paymentLinkId: z.string().describe('Payment link ID (plink_xxx)')
86
+ }),
87
+ outputSchema: z.object({
88
+ id: z.string().describe('Payment link ID'),
89
+ url: z.string().describe('Shareable payment URL'),
90
+ active: z.boolean().describe('Whether the link is active'),
91
+ livemode: z.boolean().describe('Whether in production mode'),
92
+ metadata: z.record(z.string(), z.string()).describe('Custom metadata')
93
+ }),
94
+ integration: 'stripe' as const,
95
+ method: 'getPaymentLink' as const,
96
+ credentialName
97
+ })
98
+ }
99
+
100
+ /**
101
+ * Create a tool that updates a Stripe payment link
102
+ *
103
+ * @param credentialName - Name of the Stripe credential to use
104
+ * @returns Tool instance
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const tool = createStripeUpdatePaymentLinkTool('elevasis-stripe')
109
+ * const result = await tool.execute({
110
+ * paymentLinkId: 'plink_xxx',
111
+ * active: false // Deactivate the link
112
+ * }, context)
113
+ * ```
114
+ */
115
+ export function createStripeUpdatePaymentLinkTool(credentialName: string): Tool {
116
+ return createIntegrationTool({
117
+ name: 'stripe_update_payment_link',
118
+ description: `Update a Stripe payment link.
119
+
120
+ Use this tool to modify an existing payment link.
121
+ Common operations:
122
+ - Deactivate a link (set active=false)
123
+ - Update metadata
124
+
125
+ Note: You cannot change the price after creation.`,
126
+ inputSchema: z.object({
127
+ paymentLinkId: z.string().describe('Payment link ID (plink_xxx)'),
128
+ active: z.boolean().optional().describe('Enable or disable the link'),
129
+ metadata: z.record(z.string(), z.string()).optional().describe('Update metadata')
130
+ }),
131
+ outputSchema: z.object({
132
+ id: z.string().describe('Payment link ID'),
133
+ active: z.boolean().describe('Whether the link is active'),
134
+ url: z.string().describe('Shareable payment URL')
135
+ }),
136
+ integration: 'stripe' as const,
137
+ method: 'updatePaymentLink' as const,
138
+ credentialName
139
+ })
140
+ }
141
+
142
+ /**
143
+ * Create a tool that lists Stripe payment links
144
+ *
145
+ * @param credentialName - Name of the Stripe credential to use
146
+ * @returns Tool instance
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const tool = createStripeListPaymentLinksTool('elevasis-stripe')
151
+ * const result = await tool.execute({
152
+ * active: true,
153
+ * limit: 10
154
+ * }, context)
155
+ * ```
156
+ */
157
+ export function createStripeListPaymentLinksTool(credentialName: string): Tool {
158
+ return createIntegrationTool({
159
+ name: 'stripe_list_payment_links',
160
+ description: `List Stripe payment links.
161
+
162
+ Use this tool to retrieve a list of payment links.
163
+ Supports filtering by active status and pagination.
164
+
165
+ Useful for:
166
+ - Finding active payment links
167
+ - Auditing created links
168
+ - Paginating through large numbers of links`,
169
+ inputSchema: z.object({
170
+ active: z.boolean().optional().describe('Filter by active status'),
171
+ limit: z.number().min(1).max(100).optional().describe('Number of links to return (1-100)'),
172
+ startingAfter: z.string().optional().describe('Cursor for pagination (payment link ID)'),
173
+ endingBefore: z.string().optional().describe('Cursor for pagination (payment link ID)')
174
+ }),
175
+ outputSchema: z.object({
176
+ data: z
177
+ .array(
178
+ z.object({
179
+ id: z.string().describe('Payment link ID'),
180
+ url: z.string().describe('Shareable payment URL'),
181
+ active: z.boolean().describe('Whether the link is active'),
182
+ metadata: z.record(z.string(), z.string()).describe('Custom metadata')
183
+ })
184
+ )
185
+ .describe('List of payment links'),
186
+ hasMore: z.boolean().describe('Whether more results are available')
187
+ }),
188
+ integration: 'stripe' as const,
189
+ method: 'listPaymentLinks' as const,
190
+ credentialName
191
+ })
192
+ }
193
+
194
+ /**
195
+ * Create a tool that generates Stripe checkout sessions for custom amounts
196
+ *
197
+ * Use this for variable/custom pricing where the amount comes from the proposal.
198
+ * Unlike payment links (which require pre-defined price IDs), checkout sessions
199
+ * support price_data with any unit_amount.
200
+ *
201
+ * @param credentialName - Name of the Stripe credential to use
202
+ * @returns Tool instance
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * const tool = createStripeCheckoutSessionTool('elevasis-stripe')
207
+ * const result = await tool.execute({
208
+ * amount: 2400000, // $24,000 in cents
209
+ * metadata: { deal_id: 'deal-123' },
210
+ * successUrl: 'https://app.elevasis.io/payment-success',
211
+ * cancelUrl: 'https://app.elevasis.io/payment-cancelled'
212
+ * }, context)
213
+ * ```
214
+ */
215
+ export function createStripeCheckoutSessionTool(credentialName: string): Tool {
216
+ return createIntegrationTool({
217
+ name: 'stripe_create_checkout_session',
218
+ description: `Create a Stripe checkout session for custom-amount payments.
219
+
220
+ Use this tool for variable pricing where the amount comes from the proposal.
221
+ Creates a one-time payment URL that expires in 24 hours.
222
+
223
+ Key differences from payment links:
224
+ - Supports any amount (no pre-defined price IDs needed)
225
+ - URL expires in 24 hours (must recreate if needed)
226
+ - Created per-transaction (not reusable)
227
+
228
+ Examples:
229
+ - Collect payment for signed proposal: amount from proposal, metadata with deal_id
230
+ - Customer receives hosted Stripe checkout page`,
231
+ inputSchema: z.object({
232
+ amount: z.number().int().positive().describe('Amount in cents (e.g., 2400000 for $24,000)'),
233
+ currency: z.string().optional().default('usd').describe('Currency code (default: usd)'),
234
+ productName: z.string().optional().describe('Product name shown in checkout'),
235
+ productDescription: z.string().optional().describe('Product description'),
236
+ metadata: z.record(z.string(), z.string()).optional().describe('Metadata (deal_id, etc.)'),
237
+ successUrl: z.string().url().describe('URL after successful payment'),
238
+ cancelUrl: z.string().url().describe('URL if customer cancels'),
239
+ customerEmail: z.string().email().optional().describe('Pre-fill customer email')
240
+ }),
241
+ outputSchema: z.object({
242
+ id: z.string().describe('Session ID (cs_xxx)'),
243
+ url: z.string().describe('Payment URL (expires in 24h)'),
244
+ expiresAt: z.number().describe('Expiration timestamp (Unix seconds)')
245
+ }),
246
+ integration: 'stripe' as const,
247
+ method: 'createCheckoutSession' as const,
248
+ credentialName
249
+ })
250
+ }
251
+
252
+ /**
253
+ * Create a tool that generates Stripe payment links with dynamic pricing
254
+ *
255
+ * Unlike standard payment links (which require pre-created Price IDs),
256
+ * this tool uses inline price_data for dynamic pricing. Supports both
257
+ * one-time setup fees and recurring monthly subscriptions.
258
+ *
259
+ * @param credentialName - Name of the Stripe credential to use
260
+ * @returns Tool instance
261
+ *
262
+ * @example
263
+ * ```typescript
264
+ * const tool = createStripeAutoPaymentLinkTool('elevasis-stripe')
265
+ * const result = await tool.execute({
266
+ * dealId: 'deal-123',
267
+ * companyName: 'Acme Corp',
268
+ * contactEmail: 'john@acme.com',
269
+ * initialFee: 3000, // $3,000 one-time
270
+ * monthlyFee: 500 // $500/month recurring
271
+ * }, context)
272
+ * ```
273
+ */
274
+ export function createStripeAutoPaymentLinkTool(credentialName: string): Tool {
275
+ return createIntegrationTool({
276
+ name: 'stripe_create_auto_payment_link',
277
+ description: `Create a Stripe payment link with dynamic pricing (inline price_data).
278
+
279
+ Use this tool for variable pricing with both one-time and recurring fees.
280
+ URLs NEVER EXPIRE - same link can be used in all reminder emails.
281
+
282
+ Key features:
283
+ - Supports dynamic amounts (no pre-defined Price IDs needed)
284
+ - Can include both one-time setup fee AND monthly recurring in one link
285
+ - URL never expires (unlike checkout sessions)
286
+ - Metadata propagates to all webhooks (checkout.session.completed, etc.)
287
+
288
+ Examples:
289
+ - Setup + monthly: initialFee=3000, monthlyFee=500 ($3,000 one-time + $500/month)
290
+ - Monthly only: initialFee=0, monthlyFee=500 ($500/month subscription)
291
+ - One-time only: initialFee=3000, monthlyFee=0 ($3,000 one-time payment)`,
292
+ inputSchema: z.object({
293
+ dealId: z.string().describe('Local deal ID for metadata'),
294
+ companyName: z.string().describe('Company name for product description'),
295
+ contactEmail: z.string().email().describe('Contact email for metadata'),
296
+ initialFee: z.number().min(0).describe('One-time setup fee in dollars (e.g., 3000 for $3,000)'),
297
+ monthlyFee: z.number().min(0).describe('Recurring monthly fee in dollars (e.g., 500 for $500/month)')
298
+ }),
299
+ outputSchema: z.object({
300
+ paymentLinkId: z.string().describe('Payment link ID (plink_xxx)'),
301
+ url: z.string().describe('Payment URL (NEVER EXPIRES)'),
302
+ hasInitialFee: z.boolean().describe('Whether link includes one-time fee'),
303
+ hasRecurring: z.boolean().describe('Whether link includes recurring subscription')
304
+ }),
305
+ integration: 'stripe' as const,
306
+ method: 'createAutoPaymentLink' as const,
307
+ credentialName
308
+ })
309
+ }
@@ -0,0 +1,133 @@
1
+ import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
2
+ import type { ExecutionContext } from '../../../../../../../base/types'
3
+
4
+ interface TombaCredentials {
5
+ apiKey: string
6
+ apiSecret: string
7
+ }
8
+
9
+ export interface DomainSearchParams {
10
+ domain: string
11
+ limit?: number
12
+ department?: string
13
+ type?: 'personal' | 'generic'
14
+ }
15
+
16
+ export interface DomainSearchEmail {
17
+ email: string
18
+ firstName: string
19
+ lastName: string
20
+ fullName: string
21
+ position: string
22
+ department: string
23
+ verificationDate: string
24
+ verificationStatus: string
25
+ sources: Array<{
26
+ uri: string
27
+ extractedOn: string
28
+ lastSeenOn: string
29
+ stillOnPage: boolean
30
+ }>
31
+ }
32
+
33
+ export interface DomainSearchResult {
34
+ organizationName: string
35
+ domain: string
36
+ emails: DomainSearchEmail[]
37
+ }
38
+
39
+ const TOMBA_API_BASE = 'https://api.tomba.io/v1'
40
+
41
+ /**
42
+ * Find all email addresses at a company domain via Tomba
43
+ *
44
+ * Searches for all known email addresses at the given domain. Optionally filter
45
+ * by department. Returns enriched data per email including position and
46
+ * verification status.
47
+ *
48
+ * @param credentials - Tomba API key and secret
49
+ * @param params - Domain, optional limit, and optional department filter
50
+ * @param context - Execution context for logging
51
+ * @returns Organization name, domain, and list of found email records
52
+ */
53
+ export async function domainSearch(
54
+ credentials: TombaCredentials,
55
+ params: DomainSearchParams,
56
+ context?: ExecutionContext
57
+ ): Promise<DomainSearchResult> {
58
+ const { apiKey, apiSecret } = credentials
59
+ const { domain, limit, department, type } = params
60
+
61
+ if (!domain) {
62
+ throw new Error('domain is required for domainSearch')
63
+ }
64
+
65
+ if (context?.logger) {
66
+ context.logger.info(
67
+ `[TombaAdapter] domainSearch: domain=${domain} limit=${limit} department=${department} type=${type} organizationId=${context.organizationId} executionId=${context.executionId}`
68
+ )
69
+ }
70
+
71
+ const url = new URL(`${TOMBA_API_BASE}/domain-search`)
72
+ url.searchParams.set('domain', domain)
73
+ if (limit !== undefined) {
74
+ url.searchParams.set('limit', String(limit))
75
+ }
76
+ if (department) {
77
+ url.searchParams.set('department', department)
78
+ }
79
+ if (type) {
80
+ url.searchParams.set('type', type)
81
+ }
82
+
83
+ const response = await withRetry(async () => {
84
+ const res = await fetch(url.toString(), {
85
+ method: 'GET',
86
+ headers: {
87
+ 'X-Tomba-Key': apiKey,
88
+ 'X-Tomba-Secret': apiSecret
89
+ },
90
+ signal: AbortSignal.timeout(60_000)
91
+ })
92
+
93
+ if (!res.ok) {
94
+ throw await createHttpError(res, {
95
+ integration: 'tomba',
96
+ method: 'domainSearch',
97
+ organizationId: context?.organizationId
98
+ })
99
+ }
100
+
101
+ return res.json()
102
+ }, DEFAULT_RETRY_POLICY)
103
+
104
+ const data = response.data ?? {}
105
+ const rawEmails: Array<Record<string, unknown>> = data.emails ?? []
106
+
107
+ if (context?.logger) {
108
+ context.logger.info(
109
+ `[TombaAdapter] domainSearch complete: domain=${domain} emailCount=${rawEmails.length} organizationId=${context.organizationId}`
110
+ )
111
+ }
112
+
113
+ return {
114
+ organizationName: data.organization_name ?? '',
115
+ domain: data.domain ?? domain,
116
+ emails: rawEmails.map((e) => ({
117
+ email: (e.email as string) ?? '',
118
+ firstName: (e.first_name as string) ?? '',
119
+ lastName: (e.last_name as string) ?? '',
120
+ fullName: (e.full_name as string) ?? '',
121
+ position: (e.position as string) ?? '',
122
+ department: (e.department as string) ?? '',
123
+ verificationDate: ((e.verification as Record<string, unknown>)?.date as string) ?? '',
124
+ verificationStatus: ((e.verification as Record<string, unknown>)?.status as string) ?? '',
125
+ sources: ((e.sources as Array<Record<string, unknown>>) ?? []).map((s) => ({
126
+ uri: (s.uri as string) ?? '',
127
+ extractedOn: (s.extracted_on as string) ?? '',
128
+ lastSeenOn: (s.last_seen_on as string) ?? '',
129
+ stillOnPage: (s.still_on_page as boolean) ?? false
130
+ }))
131
+ }))
132
+ }
133
+ }
@@ -0,0 +1,122 @@
1
+ import { withRetry, createHttpError, DEFAULT_RETRY_POLICY } from '../../../../../../../../../platform/resilience'
2
+ import type { ExecutionContext } from '../../../../../../../base/types'
3
+
4
+ interface TombaCredentials {
5
+ apiKey: string
6
+ apiSecret: string
7
+ }
8
+
9
+ export interface EmailFinderParams {
10
+ domain: string
11
+ firstName: string
12
+ lastName: string
13
+ }
14
+
15
+ export interface EmailFinderResult {
16
+ email: string
17
+ firstName: string
18
+ lastName: string
19
+ fullName: string
20
+ position: string
21
+ company: string
22
+ country: string
23
+ score: number
24
+ verificationDate: string
25
+ verificationStatus: string
26
+ sources: Array<{
27
+ uri: string
28
+ extractedOn: string
29
+ lastSeenOn: string
30
+ stillOnPage: boolean
31
+ }>
32
+ }
33
+
34
+ const TOMBA_API_BASE = 'https://api.tomba.io/v1'
35
+
36
+ /**
37
+ * Find a person's email address via Tomba
38
+ *
39
+ * Searches for a specific person's email by combining their first/last name
40
+ * with a company domain. Returns enriched data including position, score, and
41
+ * verification status.
42
+ *
43
+ * @param credentials - Tomba API key and secret
44
+ * @param params - Domain, first name, and last name
45
+ * @param context - Execution context for logging
46
+ * @returns Email address with enrichment data and verification status
47
+ */
48
+ export async function emailFinder(
49
+ credentials: TombaCredentials,
50
+ params: EmailFinderParams,
51
+ context?: ExecutionContext
52
+ ): Promise<EmailFinderResult> {
53
+ const { apiKey, apiSecret } = credentials
54
+ const { domain, firstName, lastName } = params
55
+
56
+ if (!domain) {
57
+ throw new Error('domain is required for emailFinder')
58
+ }
59
+
60
+ if (!firstName || !lastName) {
61
+ throw new Error('firstName and lastName are required for emailFinder')
62
+ }
63
+
64
+ if (context?.logger) {
65
+ context.logger.info(
66
+ `[TombaAdapter] emailFinder: domain=${domain} firstName=${firstName} lastName=${lastName} organizationId=${context.organizationId} executionId=${context.executionId}`
67
+ )
68
+ }
69
+
70
+ const url = new URL(`${TOMBA_API_BASE}/email-finder`)
71
+ url.searchParams.set('domain', domain)
72
+ url.searchParams.set('first_name', firstName)
73
+ url.searchParams.set('last_name', lastName)
74
+
75
+ const response = await withRetry(async () => {
76
+ const res = await fetch(url.toString(), {
77
+ method: 'GET',
78
+ headers: {
79
+ 'X-Tomba-Key': apiKey,
80
+ 'X-Tomba-Secret': apiSecret
81
+ },
82
+ signal: AbortSignal.timeout(60_000)
83
+ })
84
+
85
+ if (!res.ok) {
86
+ throw await createHttpError(res, {
87
+ integration: 'tomba',
88
+ method: 'emailFinder',
89
+ organizationId: context?.organizationId
90
+ })
91
+ }
92
+
93
+ return res.json()
94
+ }, DEFAULT_RETRY_POLICY)
95
+
96
+ const data = response.data ?? {}
97
+
98
+ if (context?.logger) {
99
+ context.logger.info(
100
+ `[TombaAdapter] emailFinder complete: email=${data.email ? '[found]' : '[not found]'} score=${data.score ?? 0} organizationId=${context.organizationId}`
101
+ )
102
+ }
103
+
104
+ return {
105
+ email: data.email ?? '',
106
+ firstName: data.first_name ?? '',
107
+ lastName: data.last_name ?? '',
108
+ fullName: data.full_name ?? '',
109
+ position: data.position ?? '',
110
+ company: data.company ?? '',
111
+ country: data.country ?? '',
112
+ score: data.score ?? 0,
113
+ verificationDate: data.verification?.date ?? '',
114
+ verificationStatus: data.verification?.status ?? '',
115
+ sources: (data.sources ?? []).map((s: Record<string, unknown>) => ({
116
+ uri: s.uri ?? '',
117
+ extractedOn: s.extracted_on ?? '',
118
+ lastSeenOn: s.last_seen_on ?? '',
119
+ stillOnPage: s.still_on_page ?? false
120
+ }))
121
+ }
122
+ }
@@ -0,0 +1,111 @@
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 TombaCredentials {
6
+ apiKey: string
7
+ apiSecret: string
8
+ }
9
+
10
+ export interface EmailVerifierParams {
11
+ email: string
12
+ }
13
+
14
+ export interface EmailVerifierResult {
15
+ email: string
16
+ result: string
17
+ status: string
18
+ score: number
19
+ mxRecords: boolean
20
+ smtpServer: boolean
21
+ smtpCheck: boolean
22
+ acceptAll: boolean
23
+ block: boolean
24
+ gibberish: boolean
25
+ disposable: boolean
26
+ webmail: boolean
27
+ regex: boolean
28
+ }
29
+
30
+ const TOMBA_API_BASE = 'https://api.tomba.io/v1'
31
+
32
+ /**
33
+ * Verify an email address deliverability via Tomba
34
+ *
35
+ * Checks whether the given email address is valid and deliverable. Performs
36
+ * MX record lookup, SMTP server check, and other validation signals.
37
+ *
38
+ * @param credentials - Tomba API key and secret
39
+ * @param params - Email address to verify
40
+ * @param context - Execution context for logging
41
+ * @returns Detailed verification result including deliverability signals
42
+ */
43
+ export async function emailVerifier(
44
+ credentials: TombaCredentials,
45
+ params: EmailVerifierParams,
46
+ context?: ExecutionContext
47
+ ): Promise<EmailVerifierResult> {
48
+ const { apiKey, apiSecret } = credentials
49
+ const { email } = params
50
+
51
+ if (!email) {
52
+ throw new ToolingError('validation_error', 'Missing required parameter: email', {
53
+ integration: 'tomba',
54
+ method: 'emailVerifier'
55
+ })
56
+ }
57
+
58
+ if (context?.logger) {
59
+ context.logger.info(
60
+ `[TombaAdapter] emailVerifier: email=${email} organizationId=${context.organizationId} executionId=${context.executionId}`
61
+ )
62
+ }
63
+
64
+ const url = new URL(`${TOMBA_API_BASE}/email-verifier`)
65
+ url.searchParams.set('email', email)
66
+
67
+ const response = await withRetry(async () => {
68
+ const res = await fetch(url.toString(), {
69
+ method: 'GET',
70
+ headers: {
71
+ 'X-Tomba-Key': apiKey,
72
+ 'X-Tomba-Secret': apiSecret
73
+ },
74
+ signal: AbortSignal.timeout(60_000)
75
+ })
76
+
77
+ if (!res.ok) {
78
+ throw await createHttpError(res, {
79
+ integration: 'tomba',
80
+ method: 'emailVerifier',
81
+ organizationId: context?.organizationId
82
+ })
83
+ }
84
+
85
+ return res.json()
86
+ }, DEFAULT_RETRY_POLICY)
87
+
88
+ const data = (response.data?.email as Record<string, unknown>) ?? {}
89
+
90
+ if (context?.logger) {
91
+ context.logger.info(
92
+ `[TombaAdapter] emailVerifier complete: email=${email} result=${data.result ?? ''} status=${data.status ?? ''} organizationId=${context.organizationId}`
93
+ )
94
+ }
95
+
96
+ return {
97
+ email: (data.email as string) ?? email,
98
+ result: (data.result as string) ?? '',
99
+ status: (data.status as string) ?? '',
100
+ score: (data.score as number) ?? 0,
101
+ mxRecords: (data.mx_records as boolean) ?? false,
102
+ smtpServer: (data.smtp_server as boolean) ?? false,
103
+ smtpCheck: (data.smtp_check as boolean) ?? false,
104
+ acceptAll: (data.accept_all as boolean) ?? false,
105
+ block: (data.block as boolean) ?? false,
106
+ gibberish: (data.gibberish as boolean) ?? false,
107
+ disposable: (data.disposable as boolean) ?? false,
108
+ webmail: (data.webmail as boolean) ?? false,
109
+ regex: (data.regex as boolean) ?? false
110
+ }
111
+ }
@@ -0,0 +1,11 @@
1
+ // ============================================================================
2
+ // TOMBA ADAPTER
3
+ // ============================================================================
4
+
5
+ export { TombaAdapter } from './tomba-adapter'
6
+
7
+ // ============================================================================
8
+ // TOMBA TOOLS
9
+ // ============================================================================
10
+
11
+ export { createTombaEmailFinderTool, createTombaDomainSearchTool, createTombaEmailVerifierTool } from './tomba-tools'