@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,296 @@
1
+ import { z } from 'zod'
2
+ import { ResourceTypeSchema, OriginResourceTypeSchema } from '../../platform/utils/validation'
3
+ import { TaskScheduleConfigSchema } from './schemas'
4
+
5
+ /**
6
+ * API validation schemas for task scheduler endpoints.
7
+ * Separate from domain schemas (schemas.ts) to enforce validation at API boundary.
8
+ *
9
+ * Note: Domain schemas in schemas.ts define business logic validation.
10
+ * API schemas add transport-layer concerns (query params, path params, response validation).
11
+ *
12
+ * Schedule config schemas (TaskScheduleConfigSchema, RecurringScheduleConfigSchema, etc.)
13
+ * are defined in schemas.ts and exported from there. This file only defines API-specific
14
+ * request/response schemas.
15
+ */
16
+
17
+ // ============================================================================
18
+ // REQUEST SCHEMAS (NEW UNIFIED SYSTEM)
19
+ // ============================================================================
20
+
21
+ /**
22
+ * POST /api/task-scheduler/schedules - Create a new schedule
23
+ *
24
+ * Security:
25
+ * - organizationId extracted from JWT auth context (not in request body)
26
+ * - Strict mode prevents unknown fields (prevents mass assignment)
27
+ * - UUID validation on optional origin fields
28
+ * - Name/description length limited to prevent abuse
29
+ */
30
+ export const CreateScheduleRequestSchema = z.object({
31
+ name: z.string().min(1, 'Name is required').max(255),
32
+ description: z.string().max(1000).optional(),
33
+
34
+ target: z.object({
35
+ resourceType: ResourceTypeSchema,
36
+ resourceId: z.string().min(1, 'Resource ID is required').max(255)
37
+ }),
38
+
39
+ scheduleConfig: TaskScheduleConfigSchema,
40
+
41
+ maxRetries: z.number().int().min(0).max(10).optional(),
42
+ idempotencyKey: z.string().max(255).optional(),
43
+
44
+ // Origin tracking (optional)
45
+ originExecutionId: z.string().uuid().optional(),
46
+ originResourceType: OriginResourceTypeSchema.optional(),
47
+ originResourceId: z.string().max(255).optional()
48
+ })
49
+
50
+ /**
51
+ * GET /api/task-scheduler/schedules - List schedules with filters
52
+ *
53
+ * Security:
54
+ * - Enum validation restricts to valid status/resource type values
55
+ * - z.coerce handles string query params from URL
56
+ * - Limit capped at 100 to prevent memory exhaustion
57
+ */
58
+ export const ListSchedulesQuerySchema = z.object({
59
+ status: z.enum(['active', 'paused', 'completed', 'cancelled']).optional(),
60
+ targetResourceType: ResourceTypeSchema.optional(),
61
+ targetResourceId: z.string().optional(),
62
+ limit: z.coerce.number().int().min(1).max(100).optional().default(50),
63
+ offset: z.coerce.number().int().min(0).optional().default(0)
64
+ })
65
+
66
+ /**
67
+ * GET /api/task-scheduler/schedules/:id - Get single schedule
68
+ *
69
+ * Security:
70
+ * - UUID validation prevents SQL injection via path params
71
+ */
72
+ export const GetScheduleParamsSchema = z.object({
73
+ id: z.string().uuid('Invalid schedule ID')
74
+ })
75
+
76
+ /**
77
+ * PATCH /api/task-scheduler/schedules/:id/anchor - Update anchor for relative schedules
78
+ *
79
+ * Security:
80
+ * - Datetime validation ensures valid ISO 8601 format
81
+ * - Only applicable to relative schedules (checked at service layer)
82
+ */
83
+ export const UpdateAnchorRequestSchema = z.object({
84
+ anchorAt: z.string().datetime({ message: 'Invalid anchor datetime format' })
85
+ })
86
+
87
+ /**
88
+ * PATCH /api/task-scheduler/schedules/:id - Update schedule fields
89
+ *
90
+ * Security:
91
+ * - Strict mode prevents unknown fields (no mass assignment)
92
+ * - At least one field must be provided
93
+ * - Schedule config re-validated with discriminated union
94
+ * - Only active/paused schedules can be updated (checked at service layer)
95
+ */
96
+ export const UpdateScheduleRequestSchema = z
97
+ .object({
98
+ name: z.string().min(1, 'Name cannot be empty').max(255).optional(),
99
+ description: z.string().max(1000).nullable().optional(),
100
+ scheduleConfig: TaskScheduleConfigSchema.optional(),
101
+ maxRetries: z.number().int().min(0).max(10).optional()
102
+ })
103
+ .strict()
104
+ .refine(
105
+ (data) =>
106
+ data.name !== undefined ||
107
+ data.description !== undefined ||
108
+ data.scheduleConfig !== undefined ||
109
+ data.maxRetries !== undefined,
110
+ { message: 'At least one field (name, description, scheduleConfig, maxRetries) must be provided' }
111
+ )
112
+
113
+ /**
114
+ * POST /api/task-scheduler/process-batch - Internal webhook from pg_cron
115
+ * Note: This endpoint is called by the database, not by users
116
+ *
117
+ * Security:
118
+ * - No authentication (internal database trigger only, not exposed externally)
119
+ * - Validates database row structure (snake_case columns)
120
+ * - Batch size limited to 1-100 schedules
121
+ * - UUID validation on ID fields
122
+ */
123
+ export const ProcessSchedulesBatchRequestSchema = z.object({
124
+ schedules: z
125
+ .array(
126
+ z.object({
127
+ // Required identifiers
128
+ id: z.string().uuid(),
129
+ organization_id: z.string().uuid(),
130
+ name: z.string(),
131
+
132
+ // Target
133
+ target_resource_type: z.string(),
134
+ target_resource_id: z.string(),
135
+
136
+ // Schedule definition
137
+ schedule_config: z.record(z.string(), z.unknown()), // JSONB from database
138
+ current_step: z.number().int(),
139
+ status: z.string(),
140
+
141
+ // Scheduling state
142
+ next_run_at: z.string().nullable(),
143
+ last_run_at: z.string().nullable(),
144
+ last_execution_id: z.string().uuid().nullable(),
145
+
146
+ // Config
147
+ max_retries: z.number().int(),
148
+ retry_count: z.number().int(),
149
+ idempotency_key: z.string().nullable(),
150
+ description: z.string().nullable(),
151
+
152
+ // Origin tracking
153
+ origin_execution_id: z.string().uuid().nullable(),
154
+ origin_resource_type: z.string().nullable(),
155
+ origin_resource_id: z.string().nullable(),
156
+
157
+ // Timestamps (PostgreSQL format with microseconds)
158
+ created_at: z.string(),
159
+ updated_at: z.string()
160
+ })
161
+ )
162
+ .min(1)
163
+ .max(100)
164
+ })
165
+
166
+ /**
167
+ * GET /api/task-scheduler/schedules/:id/executions - Get execution history
168
+ *
169
+ * Security:
170
+ * - UUID validation on schedule ID path param
171
+ */
172
+ export const GetExecutionHistoryParamsSchema = z.object({
173
+ id: z.string().uuid('Invalid schedule ID')
174
+ })
175
+
176
+ /**
177
+ * Query parameters for execution history pagination
178
+ */
179
+ export const GetExecutionHistoryQuerySchema = z.object({
180
+ limit: z.coerce.number().int().min(1).max(100).optional().default(20),
181
+ offset: z.coerce.number().int().min(0).optional().default(0)
182
+ })
183
+
184
+ // ============================================================================
185
+ // RESPONSE SCHEMAS (NEW UNIFIED SYSTEM)
186
+ // ============================================================================
187
+
188
+ /**
189
+ * Single schedule response.
190
+ * Returned by GET /schedules/:id and POST /schedules
191
+ */
192
+ export const ScheduleResponseSchema = z.object({
193
+ id: z.string().uuid(),
194
+ organizationId: z.string().uuid(),
195
+ name: z.string(),
196
+ description: z.string().nullable(),
197
+
198
+ target: z.object({
199
+ resourceType: ResourceTypeSchema,
200
+ resourceId: z.string()
201
+ }),
202
+
203
+ scheduleConfig: TaskScheduleConfigSchema,
204
+
205
+ nextRunAt: z.string().datetime().nullable(),
206
+ currentStep: z.number().int(),
207
+ status: z.enum(['active', 'paused', 'completed', 'cancelled']),
208
+
209
+ lastRunAt: z.string().datetime().nullable(),
210
+ lastExecutionId: z.string().uuid().nullable(),
211
+
212
+ maxRetries: z.number().int(),
213
+ idempotencyKey: z.string().nullable(),
214
+
215
+ createdAt: z.string().datetime(),
216
+ updatedAt: z.string().datetime()
217
+ })
218
+
219
+ /**
220
+ * List schedules response.
221
+ * Returned by GET /schedules with pagination metadata.
222
+ */
223
+ export const ListSchedulesResponseSchema = z.object({
224
+ schedules: z.array(ScheduleResponseSchema),
225
+ total: z.number().int(),
226
+ limit: z.number().int(),
227
+ offset: z.number().int()
228
+ })
229
+
230
+ /**
231
+ * Execution history item.
232
+ * Represents a single execution triggered by a schedule.
233
+ */
234
+ export const ExecutionHistoryItemSchema = z.object({
235
+ id: z.string().uuid(),
236
+ createdAt: z.string().datetime(),
237
+ status: z.enum(['running', 'completed', 'failed', 'cancelled']),
238
+ step: z.number().int().nullable(),
239
+ itemLabel: z.string().nullable(),
240
+ duration: z.number().nullable(), // milliseconds
241
+ error: z.string().nullable()
242
+ })
243
+
244
+ /**
245
+ * Execution history response.
246
+ * Returned by GET /schedules/:id/executions with pagination.
247
+ */
248
+ export const ExecutionHistoryResponseSchema = z.object({
249
+ executions: z.array(ExecutionHistoryItemSchema),
250
+ total: z.number().int(),
251
+ limit: z.number().int(),
252
+ offset: z.number().int()
253
+ })
254
+
255
+ /**
256
+ * Process batch response (internal).
257
+ * Returned by POST /process-batch for monitoring/debugging.
258
+ */
259
+ export const ProcessBatchResponseSchema = z.object({
260
+ processed: z.number().int(),
261
+ succeeded: z.number().int(),
262
+ failed: z.number().int(),
263
+ errors: z
264
+ .array(
265
+ z.object({
266
+ scheduleId: z.string().uuid(),
267
+ error: z.string()
268
+ })
269
+ )
270
+ .optional()
271
+ })
272
+
273
+ // ============================================================================
274
+ // TYPE EXPORTS (NEW UNIFIED SYSTEM)
275
+ // ============================================================================
276
+
277
+ // Note: Schedule config types (RecurringScheduleConfig, RelativeScheduleConfig,
278
+ // AbsoluteScheduleConfig, TaskScheduleConfig, RelativeScheduleItem, AbsoluteScheduleItem)
279
+ // are defined in types.ts. Import them from there or from the package index.
280
+
281
+ // Request types
282
+ export type CreateScheduleRequest = z.infer<typeof CreateScheduleRequestSchema>
283
+ export type ListSchedulesQuery = z.infer<typeof ListSchedulesQuerySchema>
284
+ export type GetScheduleParams = z.infer<typeof GetScheduleParamsSchema>
285
+ export type UpdateAnchorRequest = z.infer<typeof UpdateAnchorRequestSchema>
286
+ export type UpdateScheduleRequest = z.infer<typeof UpdateScheduleRequestSchema>
287
+ export type ProcessSchedulesBatchRequest = z.infer<typeof ProcessSchedulesBatchRequestSchema>
288
+ export type GetExecutionHistoryParams = z.infer<typeof GetExecutionHistoryParamsSchema>
289
+ export type GetExecutionHistoryQuery = z.infer<typeof GetExecutionHistoryQuerySchema>
290
+
291
+ // Response types
292
+ export type ScheduleResponse = z.infer<typeof ScheduleResponseSchema>
293
+ export type ListSchedulesResponse = z.infer<typeof ListSchedulesResponseSchema>
294
+ export type ExecutionHistoryItem = z.infer<typeof ExecutionHistoryItemSchema>
295
+ export type ExecutionHistoryResponse = z.infer<typeof ExecutionHistoryResponseSchema>
296
+ export type ProcessBatchResponse = z.infer<typeof ProcessBatchResponseSchema>
@@ -0,0 +1,50 @@
1
+ // Export all types from types.ts (domain interfaces)
2
+ // These are the canonical TypeScript interfaces for schedule config types
3
+ export * from './types'
4
+
5
+ // Export schemas from schemas.ts (domain-level Zod schemas)
6
+ // Note: Type aliases from schemas.ts (e.g., RecurringScheduleConfigInput) are suffixed
7
+ // with "Input" to distinguish from the interface types in types.ts
8
+ export * from './schemas'
9
+
10
+ // Export API schemas from api-schemas.ts
11
+ // Only export schemas and types that are unique to api-schemas.ts
12
+ // Schedule config schemas are re-exported from schemas.ts, so we skip those
13
+ export {
14
+ // Request schemas
15
+ CreateScheduleRequestSchema,
16
+ ListSchedulesQuerySchema,
17
+ GetScheduleParamsSchema,
18
+ UpdateAnchorRequestSchema,
19
+ UpdateScheduleRequestSchema,
20
+ ProcessSchedulesBatchRequestSchema,
21
+ GetExecutionHistoryParamsSchema,
22
+ GetExecutionHistoryQuerySchema,
23
+
24
+ // Response schemas
25
+ ScheduleResponseSchema,
26
+ ListSchedulesResponseSchema,
27
+ ExecutionHistoryItemSchema,
28
+ ExecutionHistoryResponseSchema,
29
+ ProcessBatchResponseSchema,
30
+
31
+ // Request types
32
+ type CreateScheduleRequest,
33
+ type ListSchedulesQuery,
34
+ type GetScheduleParams,
35
+ type UpdateAnchorRequest,
36
+ type UpdateScheduleRequest,
37
+ type ProcessSchedulesBatchRequest,
38
+ type GetExecutionHistoryParams,
39
+ type GetExecutionHistoryQuery,
40
+
41
+ // Response types
42
+ type ScheduleResponse,
43
+ type ListSchedulesResponse,
44
+ type ExecutionHistoryItem,
45
+ type ExecutionHistoryResponse,
46
+ type ProcessBatchResponse
47
+ } from './api-schemas'
48
+
49
+ // Export utilities
50
+ export * from './utils'
@@ -0,0 +1,264 @@
1
+ import { z } from 'zod'
2
+ import { ExecutionTargetSchema, OriginTrackingSchema } from '../core/api-schemas'
3
+ import {
4
+ UuidSchema,
5
+ NonEmptyStringSchema,
6
+ ResourceTypeSchema,
7
+ OriginResourceTypeSchema
8
+ } from '../../platform/utils/validation'
9
+
10
+ // Note: ExecutionTargetSchema and OriginTrackingSchema are now imported from api-schemas.ts
11
+ // This ensures consistent validation across all execution endpoints
12
+
13
+ // Re-export for backward compatibility
14
+ export { ExecutionTargetSchema, OriginTrackingSchema }
15
+
16
+ // ============================================================================
17
+ // SCHEDULE ITEM SCHEMAS
18
+ // Note: These are canonical domain schemas. API-level schemas with additional
19
+ // validation constraints are in api-schemas.ts
20
+ // ============================================================================
21
+
22
+ /**
23
+ * Relative schedule item validation
24
+ * Used for schedule items with offsets from an anchor date
25
+ *
26
+ * Offset format: [+/-][number][unit]
27
+ * - Units: d (days), h (hours), m (minutes)
28
+ * - Examples: '-7d', '+3d', '-2h', '+30m'
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * {
33
+ * offset: '-7d', // 7 days before anchor
34
+ * payload: { reminder: 'one week before' },
35
+ * label: 'Week before reminder'
36
+ * }
37
+ * ```
38
+ */
39
+ export const RelativeScheduleItemSchema = z.object({
40
+ offset: z.string().regex(/^[+-]\d+[dhm]$/, 'Invalid offset format. Use +3d, -2h, +30m, etc.'),
41
+ payload: z.record(z.string(), z.unknown()),
42
+ label: z.string().optional()
43
+ })
44
+
45
+ /**
46
+ * Absolute schedule item validation
47
+ * Used for schedule items with fixed datetime
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * {
52
+ * runAt: '2025-03-15T09:00:00Z',
53
+ * payload: { event: 'launch' },
54
+ * label: 'Product launch notification'
55
+ * }
56
+ * ```
57
+ */
58
+ export const AbsoluteScheduleItemSchema = z.object({
59
+ runAt: z.string().datetime({ message: 'Invalid datetime format' }),
60
+ payload: z.record(z.string(), z.unknown()),
61
+ label: z.string().optional()
62
+ })
63
+
64
+ // ============================================================================
65
+ // SCHEDULE CONFIG SCHEMAS (DISCRIMINATED UNION)
66
+ // ============================================================================
67
+
68
+ /**
69
+ * Recurring schedule configuration
70
+ * Supports cron expressions or predefined intervals with timezone
71
+ *
72
+ * Security:
73
+ * - timezone validated as string (IANA timezone validation at service layer)
74
+ * - endAt prevents infinite schedules
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * // Cron-based (every Monday at 9am)
79
+ * {
80
+ * type: 'recurring',
81
+ * cron: '0 9 * * 1',
82
+ * timezone: 'America/New_York',
83
+ * payload: { report: 'weekly' }
84
+ * }
85
+ *
86
+ * // Interval-based (daily at 10:30)
87
+ * {
88
+ * type: 'recurring',
89
+ * interval: 'daily',
90
+ * time: '10:30',
91
+ * timezone: 'Europe/London',
92
+ * payload: { check: 'daily' }
93
+ * }
94
+ * ```
95
+ */
96
+ export const RecurringScheduleConfigSchema = z
97
+ .object({
98
+ type: z.literal('recurring'),
99
+ cron: z.string().optional(),
100
+ interval: z.enum(['daily', 'weekly', 'monthly']).optional(),
101
+ time: z
102
+ .string()
103
+ .regex(/^\d{2}:\d{2}$/, 'Time must be in HH:MM format')
104
+ .optional(),
105
+ timezone: z.string().min(1, 'Timezone is required'),
106
+ payload: z.record(z.string(), z.unknown()),
107
+ endAt: z.string().datetime().nullable().optional(),
108
+ overduePolicy: z.enum(['skip', 'execute']).optional()
109
+ })
110
+ .refine((data) => data.cron || data.interval, { message: 'Either cron or interval must be provided' })
111
+
112
+ /**
113
+ * Relative schedule configuration
114
+ * Schedule items relative to an anchor date (e.g., event countdown)
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * {
119
+ * type: 'relative',
120
+ * anchorAt: '2025-06-01T00:00:00Z',
121
+ * anchorLabel: 'Product Launch',
122
+ * items: [
123
+ * { offset: '-30d', payload: { reminder: '30 days out' } },
124
+ * { offset: '-7d', payload: { reminder: '1 week out' } },
125
+ * { offset: '-1d', payload: { reminder: 'tomorrow' } }
126
+ * ]
127
+ * }
128
+ * ```
129
+ */
130
+ export const RelativeScheduleConfigSchema = z.object({
131
+ type: z.literal('relative'),
132
+ anchorAt: z.string().datetime({ message: 'Invalid anchor datetime' }),
133
+ anchorLabel: z.string().optional(),
134
+ items: z.array(RelativeScheduleItemSchema).min(1, 'At least one item required'),
135
+ overduePolicy: z.enum(['skip', 'execute']).optional()
136
+ })
137
+
138
+ /**
139
+ * Absolute schedule configuration
140
+ * Schedule items at specific fixed datetimes
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * {
145
+ * type: 'absolute',
146
+ * items: [
147
+ * { runAt: '2025-01-15T10:00:00Z', payload: { event: 'first' } },
148
+ * { runAt: '2025-02-15T10:00:00Z', payload: { event: 'second' } }
149
+ * ]
150
+ * }
151
+ * ```
152
+ */
153
+ export const AbsoluteScheduleConfigSchema = z.object({
154
+ type: z.literal('absolute'),
155
+ items: z.array(AbsoluteScheduleItemSchema).min(1, 'At least one item required'),
156
+ overduePolicy: z.enum(['skip', 'execute']).optional()
157
+ })
158
+
159
+ /**
160
+ * Task schedule configuration discriminated union
161
+ * Efficiently validates one of three schedule types based on 'type' field
162
+ *
163
+ * Uses Zod's discriminatedUnion for optimal parsing performance
164
+ */
165
+ export const TaskScheduleConfigSchema = z.discriminatedUnion('type', [
166
+ RecurringScheduleConfigSchema,
167
+ RelativeScheduleConfigSchema,
168
+ AbsoluteScheduleConfigSchema
169
+ ])
170
+
171
+ // ============================================================================
172
+ // CREATE SCHEDULE INPUT SCHEMA
173
+ // ============================================================================
174
+
175
+ /**
176
+ * Target schema for schedule creation
177
+ * Simplified version without payload (payload is in schedule config)
178
+ */
179
+ const ScheduleTargetSchema = z.object({
180
+ resourceType: ResourceTypeSchema,
181
+ resourceId: NonEmptyStringSchema.max(255)
182
+ })
183
+
184
+ /**
185
+ * Optional origin tracking for schedule creation
186
+ * All fields are optional for schedules created via API
187
+ */
188
+ const OptionalOriginTrackingSchema = z.object({
189
+ originExecutionId: UuidSchema.optional(),
190
+ originResourceType: OriginResourceTypeSchema.optional(),
191
+ originResourceId: z.string().max(100).optional()
192
+ })
193
+
194
+ /**
195
+ * Create schedule input validation
196
+ * Complete input schema for creating a new task schedule
197
+ *
198
+ * Security Features:
199
+ * - organizationId validated as UUID (multi-tenancy)
200
+ * - name length limited (prevents DoS)
201
+ * - target validated with resource type enum
202
+ * - schedule config validated with discriminated union
203
+ * - maxRetries bounded (0-10)
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * {
208
+ * organizationId: '550e8400-e29b-41d4-a716-446655440000',
209
+ * name: 'Weekly Report Schedule',
210
+ * description: 'Sends weekly analytics report',
211
+ * target: {
212
+ * resourceType: 'workflow',
213
+ * resourceId: 'weekly-report-workflow'
214
+ * },
215
+ * scheduleConfig: {
216
+ * type: 'recurring',
217
+ * interval: 'weekly',
218
+ * time: '09:00',
219
+ * timezone: 'America/New_York',
220
+ * payload: { reportType: 'analytics' }
221
+ * },
222
+ * maxRetries: 3
223
+ * }
224
+ * ```
225
+ */
226
+ export const CreateScheduleInputSchema = z
227
+ .object({
228
+ organizationId: UuidSchema,
229
+ name: NonEmptyStringSchema.max(255),
230
+ description: z.string().max(1000).optional(),
231
+
232
+ target: ScheduleTargetSchema,
233
+ scheduleConfig: TaskScheduleConfigSchema,
234
+
235
+ maxRetries: z.number().int().min(0).max(10).optional().default(3),
236
+ idempotencyKey: z.string().max(255).optional(),
237
+ metadata: z.record(z.string(), z.unknown()).optional()
238
+ })
239
+ .merge(OptionalOriginTrackingSchema)
240
+
241
+ // ============================================================================
242
+ // INFERRED TYPES
243
+ // ============================================================================
244
+
245
+ /** Validated relative schedule item input */
246
+ export type RelativeScheduleItemInput = z.infer<typeof RelativeScheduleItemSchema>
247
+
248
+ /** Validated absolute schedule item input */
249
+ export type AbsoluteScheduleItemInput = z.infer<typeof AbsoluteScheduleItemSchema>
250
+
251
+ /** Validated recurring schedule config input */
252
+ export type RecurringScheduleConfigInput = z.infer<typeof RecurringScheduleConfigSchema>
253
+
254
+ /** Validated relative schedule config input */
255
+ export type RelativeScheduleConfigInput = z.infer<typeof RelativeScheduleConfigSchema>
256
+
257
+ /** Validated absolute schedule config input */
258
+ export type AbsoluteScheduleConfigInput = z.infer<typeof AbsoluteScheduleConfigSchema>
259
+
260
+ /** Validated task schedule config (union of all config types) */
261
+ export type TaskScheduleConfigInput = z.infer<typeof TaskScheduleConfigSchema>
262
+
263
+ /** Validated create schedule input */
264
+ export type CreateScheduleInputValidated = z.infer<typeof CreateScheduleInputSchema>