@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,72 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { isArchivedLogs } from '../sse-executions'
3
+
4
+ describe('isArchivedLogs', () => {
5
+ it('returns true for a valid archived pointer object', () => {
6
+ const pointer = {
7
+ __archived: true,
8
+ storage_path: 'org-123/executions/exec-456/logs.json',
9
+ archived_at: '2026-01-15T10:00:00Z',
10
+ original_count: 1500
11
+ }
12
+ expect(isArchivedLogs(pointer)).toBe(true)
13
+ })
14
+
15
+ it('returns false for null', () => {
16
+ expect(isArchivedLogs(null)).toBe(false)
17
+ })
18
+
19
+ it('returns false for undefined', () => {
20
+ expect(isArchivedLogs(undefined)).toBe(false)
21
+ })
22
+
23
+ it('returns false for an empty array (normal logs state)', () => {
24
+ expect(isArchivedLogs([])).toBe(false)
25
+ })
26
+
27
+ it('returns false for a non-empty array of log messages', () => {
28
+ const logs = [
29
+ { level: 'info', message: 'Starting execution', timestamp: 1700000000000 },
30
+ { level: 'info', message: 'Execution complete', timestamp: 1700000001000 }
31
+ ]
32
+ expect(isArchivedLogs(logs)).toBe(false)
33
+ })
34
+
35
+ it('returns false for an empty object', () => {
36
+ expect(isArchivedLogs({})).toBe(false)
37
+ })
38
+
39
+ it('returns false for an object with __archived: false', () => {
40
+ const obj = {
41
+ __archived: false,
42
+ storage_path: 'org-123/executions/exec-456/logs.json',
43
+ archived_at: '2026-01-15T10:00:00Z',
44
+ original_count: 42
45
+ }
46
+ expect(isArchivedLogs(obj)).toBe(false)
47
+ })
48
+
49
+ it('returns false for a string', () => {
50
+ expect(isArchivedLogs('archived')).toBe(false)
51
+ })
52
+
53
+ it('returns false for a number', () => {
54
+ expect(isArchivedLogs(42)).toBe(false)
55
+ })
56
+
57
+ it('narrows the type so storage_path and original_count are accessible after the guard', () => {
58
+ const value: unknown = {
59
+ __archived: true,
60
+ storage_path: 'org-123/executions/exec-789/logs.json',
61
+ archived_at: '2026-03-01T08:30:00Z',
62
+ original_count: 300
63
+ }
64
+
65
+ if (isArchivedLogs(value)) {
66
+ expect(value.storage_path).toBe('org-123/executions/exec-789/logs.json')
67
+ expect(value.original_count).toBe(300)
68
+ } else {
69
+ throw new Error('Expected isArchivedLogs to return true')
70
+ }
71
+ })
72
+ })
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Zod validation schemas for execution and workflow domain API endpoints
3
+ * @module execution/api-schemas
4
+ *
5
+ * These schemas provide runtime validation for the most critical API endpoints:
6
+ * - External API /execute (public-facing, API key auth)
7
+ * - Execution Engine /execute (internal, JWT auth)
8
+ * - Command Queue (human-in-the-loop approvals)
9
+ * - Sessions (conversational agents)
10
+ *
11
+ * Security Features:
12
+ * - UUID validation prevents injection attacks
13
+ * - Payload size limits prevent DoS attacks
14
+ * - Strict mode blocks field injection (e.g., organizationId)
15
+ * - Enum validation ensures type safety at runtime
16
+ */
17
+
18
+ import { z } from 'zod'
19
+ import {
20
+ UuidSchema,
21
+ NonEmptyStringSchema,
22
+ ResourceTypeSchema,
23
+ OriginResourceTypeSchema,
24
+ createPayloadSizeValidator
25
+ } from '../../platform/utils/validation'
26
+
27
+ // Payload size constraint (500KB limit for execution payloads)
28
+ const PayloadSchema = createPayloadSizeValidator(500_000) // Required by default
29
+ const OptionalPayloadSchema = createPayloadSizeValidator(500_000, { optional: true })
30
+
31
+ // ============================================================================
32
+ // EXECUTION TARGET SCHEMAS
33
+ // ============================================================================
34
+
35
+ /**
36
+ * Execution target validation
37
+ * Used by: Task Scheduler, Command Queue, Direct Execution
38
+ *
39
+ * Security:
40
+ * - resourceId validated as non-empty string (allows workflow/agent names)
41
+ * - resourceType enum validated at runtime
42
+ * - payload size limited to 500KB (prevents DoS)
43
+ */
44
+ export const ExecutionTargetSchema = z
45
+ .object({
46
+ resourceType: ResourceTypeSchema,
47
+ resourceId: NonEmptyStringSchema.max(255),
48
+ payload: OptionalPayloadSchema
49
+ })
50
+ .strict()
51
+
52
+ /**
53
+ * Origin tracking validation
54
+ * Required for audit trails and execution lineage
55
+ *
56
+ * Security:
57
+ * - originExecutionId validated as UUID
58
+ * - originResourceType enum validated
59
+ * - originResourceId length limited
60
+ */
61
+ export const OriginTrackingSchema = z
62
+ .object({
63
+ originExecutionId: UuidSchema,
64
+ originResourceType: OriginResourceTypeSchema,
65
+ originResourceId: NonEmptyStringSchema.max(100)
66
+ })
67
+ .strict()
68
+
69
+ // ============================================================================
70
+ // EXTERNAL API SCHEMAS (CRITICAL - PUBLIC FACING)
71
+ // ============================================================================
72
+
73
+ /**
74
+ * External API /execute endpoint validation
75
+ * CRITICAL: This is a public-facing endpoint using API key auth
76
+ *
77
+ * Only production workflows can be executed via external API (in production env).
78
+ * Production status check happens at service layer after resource lookup.
79
+ *
80
+ * Security Features:
81
+ * - resourceId validated as non-empty string (kebab-case resource names)
82
+ * - 500KB payload limit prevents memory exhaustion
83
+ * - Strict mode blocks organizationId injection
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * // Valid request
88
+ * {
89
+ * resourceId: "lead-qualification-agent",
90
+ * input: { message: "Hello" }
91
+ * }
92
+ *
93
+ * // Invalid - will be rejected
94
+ * {
95
+ * resourceId: "", // Empty string not allowed
96
+ * input: "x".repeat(600_000) // Exceeds 500KB
97
+ * }
98
+ * ```
99
+ */
100
+ export const ExternalExecuteRequestSchema = z
101
+ .object({
102
+ resourceId: NonEmptyStringSchema.max(100),
103
+ input: OptionalPayloadSchema
104
+ })
105
+ .strict()
106
+
107
+ /**
108
+ * External API /execute response schema
109
+ * Validates success/error response structure
110
+ */
111
+ export const ExternalExecuteResponseSchema = z.union([
112
+ z.object({
113
+ executionId: UuidSchema,
114
+ success: z.literal(true),
115
+ data: z.unknown()
116
+ }),
117
+ z.object({
118
+ success: z.literal(false),
119
+ error: z.string(),
120
+ message: z.string()
121
+ })
122
+ ])
123
+
124
+ // ============================================================================
125
+ // AI ENGINE SCHEMAS (CRITICAL - INTERNAL EXECUTION)
126
+ // ============================================================================
127
+
128
+ /**
129
+ * Execution Engine /execute endpoint validation
130
+ * CRITICAL: Controls agent/workflow execution in authenticated context
131
+ *
132
+ * Security Features:
133
+ * - resourceType enum validated at runtime (not just TypeScript)
134
+ * - resourceId validated as non-empty string (kebab-case pattern)
135
+ * - Optional input with size constraint (500KB)
136
+ * - Strict mode prevents field injection
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * // Valid workflow execution
141
+ * {
142
+ * resourceType: "workflow",
143
+ * resourceId: "linear-test-workflow",
144
+ * input: { data: "test" }
145
+ * }
146
+ *
147
+ * // Valid agent execution (no input)
148
+ * {
149
+ * resourceType: "agent",
150
+ * resourceId: "basic-agent"
151
+ * }
152
+ *
153
+ * // Invalid - will be rejected
154
+ * {
155
+ * resourceType: "malicious", // Invalid enum
156
+ * resourceId: "" // Empty string not allowed
157
+ * }
158
+ * ```
159
+ */
160
+ export const ExecutionEngineExecuteRequestSchema = z
161
+ .object({
162
+ resourceType: ResourceTypeSchema,
163
+ resourceId: NonEmptyStringSchema.max(100),
164
+ input: OptionalPayloadSchema
165
+ })
166
+ .strict()
167
+
168
+ /**
169
+ * Execution Engine /execute response schema
170
+ * Validates success/error response structure with execution logs
171
+ */
172
+ export const ExecutionEngineExecuteResponseSchema = z.union([
173
+ z.object({
174
+ success: z.literal(true),
175
+ executionId: UuidSchema,
176
+ logs: z.array(z.unknown()),
177
+ data: z.unknown().nullable()
178
+ }),
179
+ z.object({
180
+ success: z.literal(false),
181
+ executionId: UuidSchema,
182
+ logs: z.array(z.unknown()),
183
+ error: z.object({
184
+ message: z.string(),
185
+ code: z.string(),
186
+ details: z.string().optional(),
187
+ suggestions: z.array(z.string()).optional()
188
+ })
189
+ })
190
+ ])
191
+
192
+ // ============================================================================
193
+ // COMMAND QUEUE SCHEMAS (HUMAN-IN-THE-LOOP)
194
+ // ============================================================================
195
+
196
+ /**
197
+ * Create command queue task (approval request)
198
+ *
199
+ * Security Features:
200
+ * - All UUIDs validated
201
+ * - Execution targets validated (nested validation)
202
+ * - Payload sizes limited (both initial and targets)
203
+ * - Description and notes length limited
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * {
208
+ * originExecutionId: "550e8400-e29b-41d4-a716-446655440000",
209
+ * originResourceType: "agent",
210
+ * originResourceId: "approval-agent",
211
+ * approveTarget: {
212
+ * resourceType: "workflow",
213
+ * resourceId: "550e8400-e29b-41d4-a716-446655440001",
214
+ * payload: { approved: true }
215
+ * },
216
+ * payloadInitial: { request: "approval needed" },
217
+ * description: "Approve workflow execution",
218
+ * priority: 5
219
+ * }
220
+ * ```
221
+ */
222
+ export const CreateCommandQueueTaskSchema = z
223
+ .object({
224
+ // Origin tracking
225
+ originExecutionId: UuidSchema,
226
+ originResourceType: OriginResourceTypeSchema,
227
+ originResourceId: NonEmptyStringSchema.max(100),
228
+
229
+ // Approval targets
230
+ approveTarget: ExecutionTargetSchema,
231
+ rejectTarget: ExecutionTargetSchema.optional(),
232
+
233
+ // Task metadata
234
+ description: NonEmptyStringSchema.max(1000).optional(),
235
+ priority: z.number().int().min(1).max(10).default(5),
236
+ expiresAt: z.string().datetime().optional(),
237
+
238
+ // Initial payload
239
+ payloadInitial: PayloadSchema
240
+ })
241
+ .strict()
242
+
243
+ /**
244
+ * Submit decision on command queue task
245
+ *
246
+ * Security Features:
247
+ * - Decision enum validated (only 'approve' | 'reject')
248
+ * - Notes length limited to 5000 characters
249
+ * - Payload override size limited to 500KB
250
+ *
251
+ * @example
252
+ * ```typescript
253
+ * // Approval with notes
254
+ * {
255
+ * decision: "approve",
256
+ * notes: "Looks good to proceed"
257
+ * }
258
+ *
259
+ * // Rejection with payload override
260
+ * {
261
+ * decision: "reject",
262
+ * notes: "Missing required data",
263
+ * payloadOverride: { reason: "incomplete" }
264
+ * }
265
+ * ```
266
+ */
267
+ export const SubmitDecisionSchema = z
268
+ .object({
269
+ decision: z.enum(['approve', 'reject']),
270
+ notes: NonEmptyStringSchema.max(5000).optional(),
271
+ payloadOverride: OptionalPayloadSchema
272
+ })
273
+ .strict()
274
+
275
+ /**
276
+ * List command queue tasks
277
+ * Query parameters for filtering tasks by status
278
+ */
279
+ export const ListCommandQueueTasksSchema = z
280
+ .object({
281
+ status: z.enum(['pending', 'approved', 'rejected', 'expired']).optional(),
282
+ limit: z.coerce.number().int().min(1).max(100).default(20)
283
+ })
284
+ .strict()
285
+
286
+ // ============================================================================
287
+ // SESSION SCHEMAS (CONVERSATIONAL AGENTS)
288
+ // ============================================================================
289
+
290
+ // ============================================================================
291
+ // EXECUTION MANAGEMENT SCHEMAS
292
+ // ============================================================================
293
+
294
+ /**
295
+ * List executions query parameters
296
+ * Filter executions by resource status (dev/prod/all)
297
+ */
298
+ export const ListExecutionsSchema = z
299
+ .object({
300
+ resourceStatus: z.enum(['dev', 'prod', 'all']).default('all')
301
+ })
302
+ .strict()
303
+
304
+ /**
305
+ * Delete execution(s) query parameters
306
+ * Optional filter by resource status when bulk deleting
307
+ */
308
+ export const DeleteExecutionsSchema = z
309
+ .object({
310
+ resourceStatus: z.enum(['dev', 'prod']).optional()
311
+ })
312
+ .strict()
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Execution utilities and resource validation
3
+ *
4
+ * NOTE: canExecuteResource and detectEnvironment are server-only (use process.env)
5
+ * Import from @repo/core/server instead
6
+ */
7
+
8
+ export * from './types'
9
+ export * from './sse-executions'
10
+ export * from './api-schemas'
11
+ export * from './runner-types'
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Resource validator usage examples
3
+ * Tests moved to server/environment to match new location
4
+ */
5
+
6
+ import { describe, it, expect } from 'vitest'
7
+ import { canExecuteResource, detectEnvironment } from './server/environment'
8
+
9
+ // Example usage with AIResource
10
+ const devResource = {
11
+ resourceId: 'basic-agent',
12
+ name: 'Basic Agent',
13
+ description: 'A basic agent',
14
+ version: '1.0.0',
15
+ type: 'agent' as const,
16
+ status: 'dev' as const
17
+ }
18
+
19
+ const prodResource = {
20
+ resourceId: 'prod-agent',
21
+ name: 'Production Agent',
22
+ description: 'A production agent',
23
+ version: '1.0.0',
24
+ type: 'agent' as const,
25
+ status: 'prod' as const
26
+ }
27
+
28
+ describe('resource-validator', () => {
29
+ describe('canExecuteResource', () => {
30
+ it('should block dev resources in production', () => {
31
+ expect(canExecuteResource(devResource, 'production')).toBe(false)
32
+ })
33
+
34
+ it('should allow prod resources in production', () => {
35
+ expect(canExecuteResource(prodResource, 'production')).toBe(true)
36
+ })
37
+
38
+ it('should allow dev resources in development', () => {
39
+ expect(canExecuteResource(devResource, 'development')).toBe(true)
40
+ })
41
+
42
+ it('should allow dev resources in staging', () => {
43
+ expect(canExecuteResource(devResource, 'staging')).toBe(true)
44
+ })
45
+
46
+ it('should allow prod resources in all environments', () => {
47
+ expect(canExecuteResource(prodResource, 'production')).toBe(true)
48
+ expect(canExecuteResource(prodResource, 'development')).toBe(true)
49
+ expect(canExecuteResource(prodResource, 'staging')).toBe(true)
50
+ })
51
+ })
52
+
53
+ describe('detectEnvironment', () => {
54
+ it('should detect environment from process.env.NODE_ENV', () => {
55
+ // Note: detectEnvironment now reads directly from process.env.NODE_ENV
56
+ // In test environment, this will be 'test' which defaults to 'development'
57
+ const result = detectEnvironment()
58
+ expect(['development', 'staging', 'production']).toContain(result)
59
+ // Test environment typically returns 'development'
60
+ expect(result).toBe('development')
61
+ })
62
+ })
63
+ })
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Execution Runner Types
3
+ *
4
+ * Shared types for the Execution Runner UI feature.
5
+ * Used by both API (apps/api) and frontend (apps/command-center).
6
+ */
7
+
8
+ import type { SerializedExecutionInterface } from '../../platform/registry/serialized-types'
9
+ import type { ExecutionStatus } from './sse-executions'
10
+
11
+ // ============================================================================
12
+ // PAGINATION
13
+ // ============================================================================
14
+
15
+ export interface PaginationMetadata {
16
+ total: number
17
+ limit: number
18
+ offset: number
19
+ hasMore: boolean
20
+ }
21
+
22
+ // ============================================================================
23
+ // EXECUTION METRICS
24
+ // ============================================================================
25
+
26
+ export interface ExecutionMetrics {
27
+ tokenCount?: number
28
+ stepCount?: number
29
+ toolCallCount?: number
30
+ }
31
+
32
+ // ============================================================================
33
+ // CATALOG TYPES
34
+ // ============================================================================
35
+
36
+ export interface ExecutionRunnerCatalogItem {
37
+ resourceId: string
38
+ resourceName: string
39
+ resourceType: 'workflow' | 'agent'
40
+ description?: string
41
+ status: 'dev' | 'prod'
42
+ version: string
43
+ interface: SerializedExecutionInterface
44
+ }
45
+
46
+ export interface ExecutionRunnerCatalogResponse {
47
+ resources: ExecutionRunnerCatalogItem[]
48
+ }
49
+
50
+ // ============================================================================
51
+ // EXECUTION HISTORY TYPES
52
+ // ============================================================================
53
+
54
+ export interface ExecutionSummary {
55
+ id: string
56
+ resourceId: string
57
+ resourceName: string
58
+ status: ExecutionStatus
59
+ startedAt: string
60
+ completedAt?: string
61
+ durationMs?: number
62
+ metrics?: ExecutionMetrics
63
+ input?: unknown
64
+ output?: unknown
65
+ error?: { message: string }
66
+ }
67
+
68
+ export interface ExecutionListResponse {
69
+ executions: ExecutionSummary[]
70
+ pagination: PaginationMetadata
71
+ }
72
+
73
+ // ============================================================================
74
+ // RUN RESOURCE TYPES
75
+ // ============================================================================
76
+
77
+ export interface RunResourceResponse {
78
+ executionId: string
79
+ status: ExecutionStatus
80
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Server-only environment detection
3
+ * Uses process.env.NODE_ENV (Node.js API)
4
+ */
5
+
6
+ import type { ResourceDefinition } from '../../../platform/registry/types'
7
+
8
+ export type Environment = 'development' | 'staging' | 'production'
9
+
10
+ /**
11
+ * Detect current environment from Node.js process.env
12
+ * Server-only - do not import in browser code
13
+ */
14
+ export function detectEnvironment(): Environment {
15
+ const env = process.env.NODE_ENV || 'development'
16
+ if (env === 'production') return 'production'
17
+ if ((env as string) === 'staging') return 'staging'
18
+ return 'development'
19
+ }
20
+
21
+ /**
22
+ * Check if resource can execute in current environment
23
+ * Production: only 'prod' resources allowed
24
+ * Staging/Development: both 'dev' and 'prod' allowed
25
+ *
26
+ * Server-only - uses detectEnvironment() which accesses process.env
27
+ */
28
+ export function canExecuteResource(resource: ResourceDefinition, environment?: Environment): boolean {
29
+ const env = environment || detectEnvironment()
30
+ return env === 'production' ? resource.status === 'prod' : true
31
+ }
@@ -0,0 +1,119 @@
1
+ import type { ExecutionLogMessage } from '../engine/base/logging'
2
+ import type { ResourceStatus } from '../../platform/registry/types'
3
+
4
+ // Execution status type shared between API and UI
5
+ export type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'warning'
6
+
7
+ /**
8
+ * Event sent when new execution starts
9
+ */
10
+ export interface ExecutionStartedEvent {
11
+ type: 'new-execution'
12
+ resourceId: string
13
+ executionId: string
14
+ timestamp: number
15
+ data?: undefined
16
+ }
17
+
18
+ /**
19
+ * Event sent when execution log message is emitted
20
+ */
21
+ export interface ExecutionLogEvent {
22
+ type: 'log'
23
+ resourceId: string
24
+ executionId: string
25
+ timestamp: number
26
+ data: {
27
+ log: ExecutionLogMessage
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Event sent when execution completes (success or failure)
33
+ */
34
+ export interface ExecutionCompleteEvent {
35
+ type: 'execution-complete'
36
+ resourceId: string
37
+ executionId: string
38
+ timestamp: number
39
+ data: {
40
+ success: boolean
41
+ status?: ExecutionStatus
42
+ result?: unknown
43
+ error?: string
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Connection confirmation event
49
+ */
50
+ export interface ExecutionConnectedEvent {
51
+ type: 'connected'
52
+ resourceId: string
53
+ executionId?: undefined
54
+ timestamp: number
55
+ data?: undefined
56
+ }
57
+
58
+ /**
59
+ * Union of all execution SSE events
60
+ */
61
+ export type ExecutionSSEEvent =
62
+ | ExecutionStartedEvent
63
+ | ExecutionLogEvent
64
+ | ExecutionCompleteEvent
65
+ | ExecutionConnectedEvent
66
+
67
+ // API execution types
68
+ export interface APIExecutionSummary {
69
+ id: string
70
+ status: ExecutionStatus
71
+ startTime: number
72
+ endTime?: number
73
+ resourceStatus?: ResourceStatus // 'dev' | 'prod' - optional for backward compatibility
74
+ }
75
+
76
+ export interface APIExecutionDetail extends APIExecutionSummary {
77
+ executionLogs: ExecutionLogMessage[]
78
+ input?: unknown
79
+ result?: unknown
80
+ error?: string
81
+ resourceStatus: ResourceStatus // Required in detail view
82
+ apiVersion?: string | null
83
+ resourceVersion?: string | null
84
+ sdkVersion?: string | null
85
+ isArchived?: boolean
86
+ archivedLogCount?: number
87
+ }
88
+
89
+ // Archived logs pointer stored in execution_logs.logs column after archival
90
+ export interface ArchivedLogsPointer {
91
+ __archived: true
92
+ storage_path: string
93
+ archived_at: string
94
+ original_count: number
95
+ }
96
+
97
+ export function isArchivedLogs(logs: unknown): logs is ArchivedLogsPointer {
98
+ return (
99
+ typeof logs === 'object' &&
100
+ logs !== null &&
101
+ !Array.isArray(logs) &&
102
+ (logs as Record<string, unknown>).__archived === true
103
+ )
104
+ }
105
+
106
+ // API request/response types
107
+ export interface APIExecutionListResponse {
108
+ executions: APIExecutionSummary[]
109
+ }
110
+
111
+ // Organization -> Resource -> Execution structure
112
+ export type ExecutionMap = Map<string, APIExecutionDetail>
113
+ export type ResourceExecutionMap = Map<string, ExecutionMap>
114
+ export type OrganizationExecutionStore = Map<string, ResourceExecutionMap>
115
+
116
+ // SSE client types - generic to avoid Fastify dependency in core
117
+ export type ClientSet<T = unknown> = Set<T>
118
+ export type ResourceClientMap<T = unknown> = Map<string, ClientSet<T>>
119
+ export type OrganizationClientStore<T = unknown> = Map<string, ResourceClientMap<T>>