@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,248 @@
1
+ import { getToolServices } from '../../registry'
2
+ import { serviceUnavailable } from '../../types'
3
+ import type { Tool } from '../../types'
4
+ import {
5
+ CreateCompanyInputSchema,
6
+ UpdateCompanyInputSchema,
7
+ UpsertCompanyInputSchema,
8
+ GetCompanyInputSchema,
9
+ ListCompaniesInputSchema,
10
+ DeleteCompanyInputSchema,
11
+ CompanyOutputSchema,
12
+ CompanyArrayOutputSchema,
13
+ DeleteResultSchema,
14
+ type CreateCompanyInput,
15
+ type UpdateCompanyInput,
16
+ type UpsertCompanyInput,
17
+ type GetCompanyInput,
18
+ type ListCompaniesInput,
19
+ type DeleteCompanyInput
20
+ } from './types'
21
+
22
+ /**
23
+ * Helper to transform company result to output format
24
+ * Converts Date objects to ISO strings for consistent API responses
25
+ */
26
+ function toCompanyOutput(result: any) {
27
+ return {
28
+ id: result.id,
29
+ organizationId: result.organizationId,
30
+ name: result.name,
31
+ domain: result.domain,
32
+ linkedinUrl: result.linkedinUrl,
33
+ website: result.website,
34
+ numEmployees: result.numEmployees,
35
+ foundedYear: result.foundedYear,
36
+ locationCity: result.locationCity,
37
+ locationState: result.locationState,
38
+ category: result.category,
39
+ categoryPain: result.categoryPain ?? null,
40
+ segment: result.segment,
41
+ pipelineStatus: result.pipelineStatus,
42
+ enrichmentData: result.enrichmentData,
43
+ tags: result.tags,
44
+ source: result.source,
45
+ batchId: result.batchId ?? null,
46
+ status: result.status,
47
+ createdAt: result.createdAt instanceof Date ? result.createdAt.toISOString() : result.createdAt,
48
+ updatedAt: result.updatedAt instanceof Date ? result.updatedAt.toISOString() : result.updatedAt
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Create a tool for creating new company records
54
+ *
55
+ * @returns Tool that creates a company
56
+ *
57
+ * @example
58
+ * const tool = createAcqCompanyCreateTool()
59
+ * const result = await tool.execute({
60
+ * input: { name: 'Acme Corp', domain: 'acme.com' },
61
+ * executionContext: { organizationId: 'org-123', ... }
62
+ * })
63
+ */
64
+ export function createAcqCompanyCreateTool(): Tool {
65
+ return {
66
+ name: 'acq_company_create',
67
+ description: 'Create a new company record for lead tracking.',
68
+ inputSchema: CreateCompanyInputSchema,
69
+ outputSchema: CompanyOutputSchema,
70
+ execute: async ({ input, executionContext }) => {
71
+ const leadService = getToolServices().leadService
72
+ if (!leadService) throw serviceUnavailable('LeadService')
73
+ if (!executionContext?.organizationId)
74
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
75
+
76
+ const typedInput = input as CreateCompanyInput
77
+ const result = await leadService.createCompany({
78
+ organizationId: executionContext.organizationId,
79
+ ...typedInput
80
+ })
81
+
82
+ return toCompanyOutput(result)
83
+ }
84
+ }
85
+ }
86
+
87
+ /**
88
+ * Create a tool for updating existing company records
89
+ *
90
+ * @returns Tool that updates a company
91
+ *
92
+ * @example
93
+ * const tool = createAcqCompanyUpdateTool()
94
+ * const result = await tool.execute({
95
+ * input: { id: 'company-123', numEmployees: 500 },
96
+ * executionContext: { organizationId: 'org-123', ... }
97
+ * })
98
+ */
99
+ export function createAcqCompanyUpdateTool(): Tool {
100
+ return {
101
+ name: 'acq_company_update',
102
+ description: 'Update an existing company record with new data (e.g., enrichment data, firmographics).',
103
+ inputSchema: UpdateCompanyInputSchema,
104
+ outputSchema: CompanyOutputSchema,
105
+ execute: async ({ input, executionContext }) => {
106
+ const leadService = getToolServices().leadService
107
+ if (!leadService) throw serviceUnavailable('LeadService')
108
+ if (!executionContext?.organizationId)
109
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
110
+
111
+ const typedInput = input as UpdateCompanyInput
112
+ const { id, ...params } = typedInput
113
+ const result = await leadService.updateCompany(id, params)
114
+
115
+ return toCompanyOutput(result)
116
+ }
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Create a tool for upserting companies by domain
122
+ * Creates new record if domain does not exist, otherwise updates existing
123
+ *
124
+ * @returns Tool that upserts a company
125
+ *
126
+ * @example
127
+ * const tool = createAcqCompanyUpsertTool()
128
+ * const result = await tool.execute({
129
+ * input: { name: 'Acme Corp', domain: 'acme.com' },
130
+ * executionContext: { organizationId: 'org-123', ... }
131
+ * })
132
+ */
133
+ export function createAcqCompanyUpsertTool(): Tool {
134
+ return {
135
+ name: 'acq_company_upsert',
136
+ description: 'Upsert a company by domain. Creates new record if domain does not exist, otherwise updates existing.',
137
+ inputSchema: UpsertCompanyInputSchema,
138
+ outputSchema: CompanyOutputSchema,
139
+ execute: async ({ input, executionContext }) => {
140
+ const leadService = getToolServices().leadService
141
+ if (!leadService) throw serviceUnavailable('LeadService')
142
+ if (!executionContext?.organizationId)
143
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
144
+
145
+ const typedInput = input as UpsertCompanyInput
146
+ const result = await leadService.upsertCompany({
147
+ organizationId: executionContext.organizationId,
148
+ ...typedInput
149
+ })
150
+
151
+ return toCompanyOutput(result)
152
+ }
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Create a tool for getting a single company by ID
158
+ *
159
+ * @returns Tool that retrieves a company
160
+ *
161
+ * @example
162
+ * const tool = createAcqCompanyGetTool()
163
+ * const result = await tool.execute({
164
+ * input: { id: 'company-123' },
165
+ * executionContext: { organizationId: 'org-123', ... }
166
+ * })
167
+ */
168
+ export function createAcqCompanyGetTool(): Tool {
169
+ return {
170
+ name: 'acq_company_get',
171
+ description: 'Get a single company by ID.',
172
+ inputSchema: GetCompanyInputSchema,
173
+ outputSchema: CompanyOutputSchema.nullable(),
174
+ execute: async ({ input, executionContext }) => {
175
+ const leadService = getToolServices().leadService
176
+ if (!leadService) throw serviceUnavailable('LeadService')
177
+ if (!executionContext?.organizationId)
178
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
179
+
180
+ const typedInput = input as GetCompanyInput
181
+ const result = await leadService.getCompany(typedInput.id, executionContext.organizationId)
182
+ return result ? toCompanyOutput(result) : null
183
+ }
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Create a tool for listing companies with optional filters
189
+ *
190
+ * @returns Tool that lists companies
191
+ *
192
+ * @example
193
+ * const tool = createAcqCompanyListTool()
194
+ * const result = await tool.execute({
195
+ * input: { segment: 'smb', category: 'saas' },
196
+ * executionContext: { organizationId: 'org-123', ... }
197
+ * })
198
+ */
199
+ export function createAcqCompanyListTool(): Tool {
200
+ return {
201
+ name: 'acq_company_list',
202
+ description: 'List companies with optional filters for category, segment, or pipeline status.',
203
+ inputSchema: ListCompaniesInputSchema,
204
+ outputSchema: CompanyArrayOutputSchema,
205
+ execute: async ({ input, executionContext }) => {
206
+ const leadService = getToolServices().leadService
207
+ if (!leadService) throw serviceUnavailable('LeadService')
208
+ if (!executionContext?.organizationId)
209
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
210
+
211
+ const typedInput = input as ListCompaniesInput
212
+ const results = await leadService.listCompanies(executionContext.organizationId, typedInput)
213
+ return results.map(toCompanyOutput)
214
+ }
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Create a tool for deleting company records
220
+ * Associated contacts will have their company_id set to null
221
+ *
222
+ * @returns Tool that deletes a company
223
+ *
224
+ * @example
225
+ * const tool = createAcqCompanyDeleteTool()
226
+ * const result = await tool.execute({
227
+ * input: { id: 'company-123' },
228
+ * executionContext: { organizationId: 'org-123', ... }
229
+ * })
230
+ */
231
+ export function createAcqCompanyDeleteTool(): Tool {
232
+ return {
233
+ name: 'acq_company_delete',
234
+ description: 'Delete a company record. Associated contacts will have their company_id set to null.',
235
+ inputSchema: DeleteCompanyInputSchema,
236
+ outputSchema: DeleteResultSchema,
237
+ execute: async ({ input, executionContext }) => {
238
+ const leadService = getToolServices().leadService
239
+ if (!leadService) throw serviceUnavailable('LeadService')
240
+ if (!executionContext?.organizationId)
241
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
242
+
243
+ const typedInput = input as DeleteCompanyInput
244
+ await leadService.deleteCompany(typedInput.id, executionContext.organizationId)
245
+ return { success: true }
246
+ }
247
+ }
248
+ }
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Contact Platform Tools
3
+ *
4
+ * Platform tools for contact CRUD operations in the acquisition domain.
5
+ * Used by AI agents to manage contact records with multi-tenant isolation.
6
+ *
7
+ * All operations require organizationId from ExecutionContext for RLS enforcement.
8
+ */
9
+
10
+ import { getToolServices } from '../../registry'
11
+ import { serviceUnavailable } from '../../types'
12
+ import type { Tool } from '../../types'
13
+ import {
14
+ CreateContactInputSchema,
15
+ UpdateContactInputSchema,
16
+ UpsertContactInputSchema,
17
+ GetContactInputSchema,
18
+ ListContactsInputSchema,
19
+ DeleteContactInputSchema,
20
+ BulkImportInputSchema,
21
+ ContactOutputSchema,
22
+ PaginatedContactsOutputSchema,
23
+ BulkImportResultSchema,
24
+ DeleteResultSchema,
25
+ DeactivateContactsByCompanyInputSchema,
26
+ DeactivateContactsByCompanyResultSchema
27
+ } from './types'
28
+
29
+ /**
30
+ * Transform contact result to output format
31
+ * Converts Date objects to ISO strings for JSON serialization
32
+ */
33
+ function toContactOutput(result: any) {
34
+ return {
35
+ id: result.id,
36
+ organizationId: result.organizationId,
37
+ companyId: result.companyId,
38
+ email: result.email,
39
+ emailValid: result.emailValid,
40
+ firstName: result.firstName,
41
+ lastName: result.lastName,
42
+ linkedinUrl: result.linkedinUrl,
43
+ title: result.title,
44
+ headline: result.headline,
45
+ filterReason: result.filterReason,
46
+ openingLine: result.openingLine,
47
+ source: result.source,
48
+ sourceId: result.sourceId,
49
+ pipelineStatus: result.pipelineStatus,
50
+ enrichmentData: result.enrichmentData,
51
+ tags: result.tags,
52
+ batchId: result.batchId ?? null,
53
+ status: result.status ?? 'active',
54
+ createdAt: result.createdAt instanceof Date ? result.createdAt.toISOString() : result.createdAt,
55
+ updatedAt: result.updatedAt instanceof Date ? result.updatedAt.toISOString() : result.updatedAt
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Create a new contact record
61
+ *
62
+ * @returns Tool for creating contacts
63
+ */
64
+ export function createAcqContactCreateTool(): Tool {
65
+ return {
66
+ name: 'acq_contact_create',
67
+ description: 'Create a new contact record.',
68
+ inputSchema: CreateContactInputSchema,
69
+ outputSchema: ContactOutputSchema,
70
+ execute: async ({ input, executionContext }) => {
71
+ const leadService = getToolServices().leadService
72
+ if (!leadService) throw serviceUnavailable('LeadService')
73
+ if (!executionContext?.organizationId)
74
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
75
+
76
+ const validated = input as {
77
+ email: string
78
+ companyId?: string
79
+ firstName?: string
80
+ lastName?: string
81
+ linkedinUrl?: string
82
+ title?: string
83
+ source?: string
84
+ sourceId?: string
85
+ batchId?: string
86
+ }
87
+
88
+ const result = await leadService.createContact({
89
+ organizationId: executionContext.organizationId,
90
+ ...validated
91
+ })
92
+
93
+ return toContactOutput(result)
94
+ }
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Update an existing contact with new data
100
+ *
101
+ * @returns Tool for updating contacts (enrichment, personalization, campaign status)
102
+ */
103
+ export function createAcqContactUpdateTool(): Tool {
104
+ return {
105
+ name: 'acq_contact_update',
106
+ description: 'Update an existing contact with new data (enrichment, personalization, campaign status).',
107
+ inputSchema: UpdateContactInputSchema,
108
+ outputSchema: ContactOutputSchema,
109
+ execute: async ({ input, executionContext }) => {
110
+ const leadService = getToolServices().leadService
111
+ if (!leadService) throw serviceUnavailable('LeadService')
112
+ if (!executionContext?.organizationId)
113
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
114
+
115
+ const { id, ...params } = input as { id: string; [key: string]: unknown }
116
+ const result = await leadService.updateContact(id, params)
117
+
118
+ return toContactOutput(result)
119
+ }
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Upsert a contact by email
125
+ *
126
+ * @returns Tool for upserting contacts (creates new or updates existing by email)
127
+ */
128
+ export function createAcqContactUpsertTool(): Tool {
129
+ return {
130
+ name: 'acq_contact_upsert',
131
+ description: 'Upsert a contact by email. Creates new contact if email does not exist, otherwise updates existing.',
132
+ inputSchema: UpsertContactInputSchema,
133
+ outputSchema: ContactOutputSchema,
134
+ execute: async ({ input, executionContext }) => {
135
+ const leadService = getToolServices().leadService
136
+ if (!leadService) throw serviceUnavailable('LeadService')
137
+ if (!executionContext?.organizationId)
138
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
139
+
140
+ const validated = input as {
141
+ email: string
142
+ companyId?: string
143
+ firstName?: string
144
+ lastName?: string
145
+ linkedinUrl?: string
146
+ title?: string
147
+ source?: string
148
+ sourceId?: string
149
+ batchId?: string
150
+ }
151
+
152
+ const result = await leadService.upsertContact({
153
+ organizationId: executionContext.organizationId,
154
+ ...validated
155
+ })
156
+
157
+ return toContactOutput(result)
158
+ }
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Get a single contact by ID
164
+ *
165
+ * @returns Tool for retrieving a contact by ID
166
+ */
167
+ export function createAcqContactGetTool(): Tool {
168
+ return {
169
+ name: 'acq_contact_get',
170
+ description: 'Get a single contact by ID.',
171
+ inputSchema: GetContactInputSchema,
172
+ outputSchema: ContactOutputSchema.nullable(),
173
+ execute: async ({ input, executionContext }) => {
174
+ const leadService = getToolServices().leadService
175
+ if (!leadService) throw serviceUnavailable('LeadService')
176
+ if (!executionContext?.organizationId)
177
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
178
+
179
+ const { id } = input as { id: string }
180
+ const result = await leadService.getContact(id, executionContext.organizationId)
181
+ return result ? toContactOutput(result) : null
182
+ }
183
+ }
184
+ }
185
+
186
+ /**
187
+ * List contacts with filters and pagination
188
+ *
189
+ * @returns Tool for listing contacts with optional filters (list, qualification, campaign)
190
+ */
191
+ export function createAcqContactListTool(): Tool {
192
+ return {
193
+ name: 'acq_contact_list',
194
+ description: 'List contacts with optional filters (list, qualification, campaign) and pagination.',
195
+ inputSchema: ListContactsInputSchema,
196
+ outputSchema: PaginatedContactsOutputSchema,
197
+ execute: async ({ input, executionContext }) => {
198
+ const leadService = getToolServices().leadService
199
+ if (!leadService) throw serviceUnavailable('LeadService')
200
+ if (!executionContext?.organizationId)
201
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
202
+
203
+ const { limit, offset, ...filters } = input as {
204
+ limit?: number
205
+ offset?: number
206
+ openingLineIsNull?: boolean
207
+ batchId?: string
208
+ contactStatus?: 'active' | 'invalid'
209
+ }
210
+ const result = await leadService.listContacts(executionContext.organizationId, filters, {
211
+ limit: limit ?? 100,
212
+ offset: offset ?? 0
213
+ })
214
+
215
+ return {
216
+ data: result.data.map(toContactOutput),
217
+ total: result.total,
218
+ limit: result.limit,
219
+ offset: result.offset
220
+ }
221
+ }
222
+ }
223
+ }
224
+
225
+ /**
226
+ * Delete a contact record
227
+ *
228
+ * @returns Tool for deleting contacts
229
+ */
230
+ export function createAcqContactDeleteTool(): Tool {
231
+ return {
232
+ name: 'acq_contact_delete',
233
+ description: 'Delete a contact record.',
234
+ inputSchema: DeleteContactInputSchema,
235
+ outputSchema: DeleteResultSchema,
236
+ execute: async ({ input, executionContext }) => {
237
+ const leadService = getToolServices().leadService
238
+ if (!leadService) throw serviceUnavailable('LeadService')
239
+ if (!executionContext?.organizationId)
240
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
241
+
242
+ const { id } = input as { id: string }
243
+ await leadService.deleteContact(id, executionContext.organizationId)
244
+ return { success: true }
245
+ }
246
+ }
247
+ }
248
+
249
+ /**
250
+ * Batch import contacts with automatic deduplication
251
+ *
252
+ * @returns Tool for bulk importing contacts (creates new or updates existing by email)
253
+ */
254
+ export function createAcqContactBulkImportTool(): Tool {
255
+ return {
256
+ name: 'acq_contact_bulk_import',
257
+ description:
258
+ 'Batch import contacts with automatic deduplication. Creates new contacts or updates existing by email.',
259
+ inputSchema: BulkImportInputSchema,
260
+ outputSchema: BulkImportResultSchema,
261
+ execute: async ({ input, executionContext }) => {
262
+ const leadService = getToolServices().leadService
263
+ if (!leadService) throw serviceUnavailable('LeadService')
264
+ if (!executionContext?.organizationId)
265
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
266
+
267
+ const { contacts } = input as {
268
+ contacts: Array<{
269
+ email: string
270
+ companyId?: string
271
+ firstName?: string
272
+ lastName?: string
273
+ linkedinUrl?: string
274
+ title?: string
275
+ source?: string
276
+ sourceId?: string
277
+ batchId?: string
278
+ }>
279
+ }
280
+
281
+ const result = await leadService.bulkImportContacts({
282
+ organizationId: executionContext.organizationId,
283
+ contacts: contacts.map((c) => ({
284
+ organizationId: executionContext.organizationId,
285
+ ...c
286
+ }))
287
+ })
288
+
289
+ return result
290
+ }
291
+ }
292
+ }
293
+
294
+ /**
295
+ * Deactivate all active contacts belonging to a company.
296
+ * Used by qualification workflow to cascade company disqualification.
297
+ *
298
+ * @returns Tool for bulk deactivating contacts by company
299
+ */
300
+ export function createAcqContactDeactivateByCompanyTool(): Tool {
301
+ return {
302
+ name: 'acq_contact_deactivate_by_company',
303
+ description: 'Deactivate all active contacts belonging to a company. Used to cascade company disqualification.',
304
+ inputSchema: DeactivateContactsByCompanyInputSchema,
305
+ outputSchema: DeactivateContactsByCompanyResultSchema,
306
+ execute: async ({ input, executionContext }) => {
307
+ const leadService = getToolServices().leadService
308
+ if (!leadService) throw serviceUnavailable('LeadService')
309
+ if (!executionContext?.organizationId)
310
+ throw serviceUnavailable('ExecutionContext', { reason: 'organizationId required for multi-tenant isolation' })
311
+
312
+ const { companyId } = input as { companyId: string }
313
+ return leadService.deactivateContactsByCompany({
314
+ organizationId: executionContext.organizationId,
315
+ companyId
316
+ })
317
+ }
318
+ }
319
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Acquisition Platform Tools
3
+ * Tools for managing leads, companies, and contacts in the acquisition database.
4
+ *
5
+ * These tools are used by agents and workflows for:
6
+ * - Organizing contacts into lists
7
+ * - Managing company records and enrichment
8
+ * - Tracking contact personalization and campaigns
9
+ * - Bulk importing leads
10
+ */
11
+
12
+ // Export all types and schemas
13
+ export * from './types'
14
+
15
+ // List tools
16
+ export {
17
+ createAcqListCreateTool,
18
+ createAcqListUpdateTool,
19
+ createAcqListDeleteTool,
20
+ createAcqListListTool
21
+ } from './list-tools'
22
+
23
+ // Company tools
24
+ export {
25
+ createAcqCompanyCreateTool,
26
+ createAcqCompanyUpdateTool,
27
+ createAcqCompanyUpsertTool,
28
+ createAcqCompanyGetTool,
29
+ createAcqCompanyListTool,
30
+ createAcqCompanyDeleteTool
31
+ } from './company-tools'
32
+
33
+ // Contact tools
34
+ export {
35
+ createAcqContactCreateTool,
36
+ createAcqContactUpdateTool,
37
+ createAcqContactUpsertTool,
38
+ createAcqContactGetTool,
39
+ createAcqContactListTool,
40
+ createAcqContactDeleteTool,
41
+ createAcqContactBulkImportTool,
42
+ createAcqContactDeactivateByCompanyTool
43
+ } from './contact-tools'