@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,45 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { z } from 'zod'
3
+ import { convertContractToJson } from '../utils'
4
+ import type { ContractStructure as _ContractStructure } from '../types'
5
+
6
+ describe('convertContractToJson', () => {
7
+
8
+ it('handles complex nested schemas', () => {
9
+ const inputSchema = z.object({
10
+ user: z.object({
11
+ name: z.string(),
12
+ age: z.number(),
13
+ tags: z.array(z.string())
14
+ }),
15
+ metadata: z.record(z.string(), z.unknown())
16
+ })
17
+
18
+ const outputSchema = z.object({
19
+ success: z.boolean(),
20
+ data: z.object({
21
+ userId: z.string(),
22
+ createdAt: z.string()
23
+ }).optional()
24
+ })
25
+
26
+ const result = convertContractToJson(inputSchema, outputSchema, 'complex-workflow')
27
+
28
+ // Verify structure is created with correct definition names
29
+ const inputJsonSchema = result.inputSchema as Record<string, unknown>
30
+ const outputJsonSchema = result.outputSchema as Record<string, unknown>
31
+
32
+ expect((inputJsonSchema as { $ref: string }).$ref).toBe('#/definitions/complex-workflow-input')
33
+ expect((outputJsonSchema as { $ref: string }).$ref).toBe('#/definitions/complex-workflow-output')
34
+
35
+ // Verify nested properties exist in JSON Schema definitions
36
+ const inputDef = (inputJsonSchema.definitions as Record<string, unknown>)['complex-workflow-input'] as Record<string, unknown>
37
+ expect(inputDef.properties).toHaveProperty('user')
38
+ expect(inputDef.properties).toHaveProperty('metadata')
39
+
40
+ const outputDef = (outputJsonSchema.definitions as Record<string, unknown>)['complex-workflow-output'] as Record<string, unknown>
41
+ expect(outputDef.properties).toHaveProperty('success')
42
+ expect(outputDef.properties).toHaveProperty('data')
43
+ })
44
+
45
+ })
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Error categories for observability grouping and classification.
3
+ * Used to categorize errors in the execution_errors table metadata.
4
+ */
5
+ export type ExecutionErrorCategory = 'llm' | 'tool' | 'workflow' | 'agent' | 'validation' | 'system'
6
+
7
+ /**
8
+ * Abstract base class for all execution engine errors.
9
+ * Enforces contract for execution_errors table insertion with explicit type,
10
+ * severity, category, and context properties.
11
+ *
12
+ * All execution engine errors MUST extend this class to ensure proper error
13
+ * tracking and observability in the execution_errors table.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * export class MyExecutionError extends ExecutionError {
18
+ * readonly type = 'my_execution_error' as const
19
+ * readonly severity = 'warning' as const
20
+ * readonly category = 'workflow' as const
21
+ *
22
+ * constructor(message: string, context?: Record<string, unknown>) {
23
+ * super(message, context)
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ export abstract class ExecutionError extends Error {
29
+ /**
30
+ * Error type identifier for execution_errors table.
31
+ * Should be a unique, snake_case string that identifies this specific error class.
32
+ * Used for filtering, aggregation, and error-specific handling in observability systems.
33
+ */
34
+ abstract readonly type: string
35
+
36
+ /**
37
+ * Error severity level for execution_errors table.
38
+ * - critical: System failures, auth issues, resource exhaustion - execution cannot continue
39
+ * - warning: Transient failures, configuration errors - execution may retry or requires user correction
40
+ * - info: Validation failures, expected user errors - user/developer action needed
41
+ */
42
+ abstract readonly severity: 'critical' | 'warning' | 'info'
43
+
44
+ /**
45
+ * Error category for observability grouping.
46
+ * Used to categorize errors in dashboards and analytics.
47
+ */
48
+ abstract readonly category: ExecutionErrorCategory
49
+
50
+ /**
51
+ * Additional context/metadata for the error.
52
+ * Stored in execution_errors.metadata JSONB column.
53
+ */
54
+ public readonly context?: Record<string, unknown>
55
+
56
+ /**
57
+ * @param message - Human-readable error message
58
+ * @param context - Additional context/metadata for observability
59
+ */
60
+ constructor(message: string, context?: Record<string, unknown>) {
61
+ super(message)
62
+ this.name = this.constructor.name
63
+ this.context = context
64
+
65
+ // Maintain proper stack trace for where our error was thrown
66
+ if (Error.captureStackTrace) {
67
+ Error.captureStackTrace(this, this.constructor)
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Indicates whether this error type is retryable.
73
+ * Default: false (safe default - only retry when explicitly safe to do so)
74
+ *
75
+ * Subclasses should override to return true for retryable scenarios:
76
+ * - Network/infrastructure errors (exponential backoff)
77
+ * - Rate limiting (linear backoff)
78
+ * - Service availability (exponential backoff)
79
+ * - Circuit breaker (circuit breaker's own delay)
80
+ *
81
+ * DO NOT retry:
82
+ * - Authentication/authorization errors
83
+ * - Validation errors
84
+ * - Configuration errors
85
+ * - Resource exhaustion errors
86
+ */
87
+ isRetryable(): boolean {
88
+ return false
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Unknown execution error - fallback for untyped errors
94
+ *
95
+ * Used when catching errors that are not ExecutionError instances.
96
+ * Preserves original error context for debugging while ensuring
97
+ * consistent error tracking in the execution_errors table.
98
+ *
99
+ * Severity: critical (unknown errors should be treated seriously until investigated)
100
+ */
101
+ export class UnknownExecutionError extends ExecutionError {
102
+ readonly type = 'unknown_execution_error' as const
103
+ readonly severity = 'critical' as const
104
+ readonly category = 'system' as const
105
+
106
+ constructor(
107
+ message: string,
108
+ public readonly originalError?: unknown
109
+ ) {
110
+ super(message, {
111
+ originalError: originalError instanceof Error ? {
112
+ name: originalError.name,
113
+ message: originalError.message,
114
+ stack: originalError.stack
115
+ } : originalError
116
+ })
117
+ }
118
+ }
@@ -0,0 +1,2 @@
1
+ export { ExecutionError as ExecutionError, UnknownExecutionError, type ExecutionErrorCategory } from './errors'
2
+ export * from './types'
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Base execution logger for Execution Engine
3
+ */
4
+ export type ExecutionLogLevel = 'debug' | 'info' | 'warn' | 'error'
5
+
6
+ // Import resource-specific contexts for the union type
7
+ import type { WorkflowLogContext } from '../workflow/logging'
8
+ import type { AgentLogContext } from '../agent/observability/logging'
9
+
10
+ // Union type for all contexts
11
+ export type LogContext = WorkflowLogContext | AgentLogContext
12
+
13
+ // Updated interface with consolidated context
14
+ export interface ExecutionLogMessage {
15
+ level: ExecutionLogLevel
16
+ message: string
17
+ timestamp: number
18
+ context?: LogContext
19
+ }
20
+
21
+ export interface ExecutionLoggerConfig {
22
+ context?: string
23
+ }
24
+
25
+ // Logger interface - any logger implementation must satisfy this
26
+ export interface IExecutionLogger {
27
+ debug(message: string, context?: LogContext): void
28
+ info(message: string, context?: LogContext): void
29
+ warn(message: string, context?: LogContext): void
30
+ error(message: string, context?: LogContext): void
31
+ }
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Generic serialization system for resource definitions
3
+ * Automatically handles Zod schemas, Maps, Sets, functions, and special types (Tools, KnowledgeMap)
4
+ *
5
+ * Replaces manual field extraction with automatic type detection and conversion.
6
+ * Used for API responses, CLI exports, and testing fixtures.
7
+ */
8
+
9
+ import { zodToJsonSchema } from '@alcyone-labs/zod-to-json-schema'
10
+ import type { AgentDefinition } from '../agent/core/types'
11
+ import type { WorkflowDefinition, NextConfig } from '../workflow/types'
12
+ import { StepType } from '../workflow/types'
13
+
14
+ /**
15
+ * Serialization options for different use cases
16
+ */
17
+ export interface SerializationOptions {
18
+ /** Redact secrets (apiKey, tokens, passwords) - Default: true */
19
+ redactSecrets?: boolean
20
+ /** Include tool schemas in serialized tools - Default: true */
21
+ includeToolSchemas?: boolean
22
+ /** Include knowledge map metadata - Default: true */
23
+ includeKnowledgeMap?: boolean
24
+ }
25
+
26
+ /**
27
+ * Internal serialization context (includes circular reference tracking)
28
+ */
29
+ interface SerializationContext extends Required<SerializationOptions> {
30
+ /** Circular reference protection via WeakSet */
31
+ visited: WeakSet<object>
32
+ }
33
+
34
+ /**
35
+ * Main entry point: Serialize any resource definition to JSON-safe format
36
+ *
37
+ * Automatically converts:
38
+ * - Zod schemas → JSON Schema
39
+ * - Maps → arrays with id field
40
+ * - Sets → arrays
41
+ * - Dates → ISO strings
42
+ * - Functions → removed
43
+ * - Secrets → redacted
44
+ *
45
+ * @param definition - Resource definition (AgentDefinition or WorkflowDefinition)
46
+ * @param options - Serialization options
47
+ * @returns JSON-serializable object
48
+ */
49
+ export function serializeDefinition(
50
+ definition: AgentDefinition | WorkflowDefinition,
51
+ options?: SerializationOptions
52
+ ): any {
53
+ const opts: Required<SerializationOptions> = {
54
+ redactSecrets: true,
55
+ includeToolSchemas: true,
56
+ includeKnowledgeMap: true,
57
+ ...options
58
+ }
59
+
60
+ const context: SerializationContext = {
61
+ ...opts,
62
+ visited: new WeakSet()
63
+ }
64
+
65
+ return deepSerialize(definition, context)
66
+ }
67
+
68
+ /**
69
+ * Recursive serialization with type detection
70
+ * Handles all special types and delegates to specialized handlers
71
+ */
72
+ function deepSerialize(value: any, ctx: SerializationContext): any {
73
+ // Primitives & null/undefined
74
+ if (value === null || value === undefined) return value
75
+ if (typeof value !== 'object') return value
76
+
77
+ // Zod schemas are leaf values — always convert (no circular tracking needed)
78
+ if (isZodSchema(value)) return convertZodToJsonSchema(value)
79
+
80
+ // Circular reference check (for non-leaf objects only)
81
+ if (ctx.visited.has(value)) {
82
+ return { __circular: true }
83
+ }
84
+ ctx.visited.add(value)
85
+ if (value instanceof Map) return convertMapToArray(value, ctx)
86
+ if (value instanceof Set) return convertSetToArray(value, ctx)
87
+ if (value instanceof Date) return value.toISOString()
88
+ if (typeof value === 'function') return undefined // Remove functions
89
+
90
+ // Arrays
91
+ if (Array.isArray(value)) {
92
+ return value.map((item) => deepSerialize(item, ctx)).filter((item) => item !== undefined)
93
+ }
94
+
95
+ // Objects - special handling for known types
96
+ if (isToolObject(value)) return serializeTool(value, ctx)
97
+ if (isKnowledgeMapObject(value)) return serializeKnowledgeMap(value, ctx)
98
+ if (isNextConfigObject(value)) return serializeNextConfig(value, ctx)
99
+
100
+ // Generic object recursion
101
+ return serializeObject(value, ctx)
102
+ }
103
+
104
+ /**
105
+ * Serialize generic object (recursively process all properties)
106
+ * Handles secret redaction and function removal
107
+ */
108
+ function serializeObject(obj: any, ctx: SerializationContext): any {
109
+ const result: any = {}
110
+
111
+ for (const [key, val] of Object.entries(obj)) {
112
+ if (typeof val === 'function') continue
113
+
114
+ // Redact secrets
115
+ if (ctx.redactSecrets && isSecretKey(key)) {
116
+ result[key] = redactSecret(val)
117
+ continue
118
+ }
119
+
120
+ // Record-based steps → array format (backward compat with Map-based steps)
121
+ if (key === 'steps' && isWorkflowStepsRecord(val)) {
122
+ result[key] = convertRecordToArray(val as Record<string, any>, ctx)
123
+ continue
124
+ }
125
+
126
+ // Recurse
127
+ const serialized = deepSerialize(val, ctx)
128
+ if (serialized !== undefined) {
129
+ result[key] = serialized
130
+ }
131
+ }
132
+
133
+ return result
134
+ }
135
+
136
+ /**
137
+ * Serialize Tool object
138
+ * Extracts name, description, and optional schemas
139
+ */
140
+ function serializeTool(tool: any, ctx: SerializationContext): any {
141
+ const result: any = {
142
+ name: tool.name,
143
+ description: tool.description
144
+ }
145
+
146
+ // Include schemas if requested
147
+ if (ctx.includeToolSchemas && tool.inputSchema) {
148
+ result.inputSchema = deepSerialize(tool.inputSchema, ctx)
149
+ }
150
+
151
+ if (ctx.includeToolSchemas && tool.outputSchema) {
152
+ result.outputSchema = deepSerialize(tool.outputSchema, ctx)
153
+ }
154
+
155
+ // execute function automatically omitted (typeof === 'function')
156
+
157
+ return result
158
+ }
159
+
160
+ /**
161
+ * Serialize KnowledgeMap object
162
+ * Extracts node metadata without content or file paths
163
+ */
164
+ function serializeKnowledgeMap(km: any, ctx: SerializationContext): any {
165
+ if (!ctx.includeKnowledgeMap) return undefined
166
+
167
+ // Handle nodes field (Record<string, KnowledgeNode>)
168
+ const nodes = km.nodes || {}
169
+ const nodeEntries = Object.entries(nodes).map(([id, node]: [string, any]) => ({
170
+ id,
171
+ description: node.description,
172
+ loaded: node.loaded || false,
173
+ hasPrompt: Boolean(node.prompt)
174
+ // load function automatically omitted
175
+ // prompt content omitted (too large for structure metadata)
176
+ }))
177
+
178
+ return {
179
+ nodeCount: nodeEntries.length,
180
+ nodes: nodeEntries
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Serialize NextConfig object
186
+ * Strips non-serializable condition functions while preserving route structure
187
+ */
188
+ function serializeNextConfig(nextConfig: NextConfig, _context: SerializationContext): any {
189
+ if (!nextConfig) return null
190
+
191
+ // Handle linear next (simple target)
192
+ if (nextConfig.type === StepType.LINEAR) {
193
+ return {
194
+ type: nextConfig.type,
195
+ target: nextConfig.target
196
+ }
197
+ }
198
+
199
+ // Handle conditional next (strip condition functions)
200
+ if (nextConfig.type === StepType.CONDITIONAL) {
201
+ return {
202
+ type: nextConfig.type,
203
+ routes:
204
+ nextConfig.routes?.map((route) => ({
205
+ // Strip condition function, keep only target
206
+ target: route.target
207
+ })) ?? [],
208
+ default: nextConfig.default
209
+ }
210
+ }
211
+
212
+ return null
213
+ }
214
+
215
+ /**
216
+ * Convert Map to array with id field
217
+ */
218
+ function convertMapToArray(map: Map<any, any>, ctx: SerializationContext): any[] {
219
+ return Array.from(map.entries()).map(([key, val]) => ({
220
+ id: key,
221
+ ...deepSerialize(val, ctx)
222
+ }))
223
+ }
224
+
225
+ /**
226
+ * Check if value is a Record of WorkflowStep objects (plain object with step-shaped values)
227
+ * Used to detect Record<string, WorkflowStep> after the Map-to-Record refactor
228
+ */
229
+ function isWorkflowStepsRecord(value: any): boolean {
230
+ if (!value || typeof value !== 'object' || Array.isArray(value) || value instanceof Map || value instanceof Set) {
231
+ return false
232
+ }
233
+ const entries = Object.values(value)
234
+ if (entries.length === 0) return false
235
+ // Check that at least the first entry looks like a WorkflowStep (has name + handler)
236
+ const first = entries[0] as any
237
+ return first && typeof first === 'object' && 'name' in first && 'handler' in first
238
+ }
239
+
240
+ /**
241
+ * Convert Record<string, WorkflowStep> to array with id field
242
+ * Produces the same format as convertMapToArray for backward compatibility
243
+ */
244
+ function convertRecordToArray(record: Record<string, any>, ctx: SerializationContext): any[] {
245
+ return Object.entries(record).map(([key, val]) => ({
246
+ id: key,
247
+ ...deepSerialize(val, ctx)
248
+ }))
249
+ }
250
+
251
+ /**
252
+ * Convert Set to array
253
+ */
254
+ function convertSetToArray(set: Set<any>, ctx: SerializationContext): any[] {
255
+ return Array.from(set).map((v) => deepSerialize(v, ctx))
256
+ }
257
+
258
+ /**
259
+ * Convert Zod schema to JSON Schema
260
+ * Reuses existing utility function
261
+ */
262
+ function convertZodToJsonSchema(schema: any): any {
263
+ return zodToJsonSchema(schema, {
264
+ $refStrategy: 'none',
265
+ errorMessages: true
266
+ })
267
+ }
268
+
269
+ /**
270
+ * Type guard: Check if value is a Zod schema
271
+ */
272
+ function isZodSchema(value: any): boolean {
273
+ return value && typeof value === 'object' && '_def' in value && 'parse' in value
274
+ }
275
+
276
+ /**
277
+ * Type guard: Check if value is a Tool object
278
+ */
279
+ function isToolObject(value: any): boolean {
280
+ return value && typeof value === 'object' && 'name' in value && 'description' in value && 'execute' in value
281
+ }
282
+
283
+ /**
284
+ * Type guard: Check if value is a KnowledgeMap object
285
+ */
286
+ function isKnowledgeMapObject(value: any): boolean {
287
+ return value && typeof value === 'object' && 'nodes' in value && typeof value.nodes === 'object'
288
+ }
289
+
290
+ /**
291
+ * Type guard: Check if value is a NextConfig object
292
+ */
293
+ function isNextConfigObject(value: any): boolean {
294
+ return (
295
+ value &&
296
+ typeof value === 'object' &&
297
+ 'type' in value &&
298
+ (value.type === StepType.LINEAR || value.type === StepType.CONDITIONAL)
299
+ )
300
+ }
301
+
302
+ /**
303
+ * Check if key name indicates secret data
304
+ */
305
+ function isSecretKey(key: string): boolean {
306
+ const lower = key.toLowerCase()
307
+
308
+ // Whitelist: keys that contain "token" but are not secrets
309
+ const whitelist = ['maxtokens', 'memorytokens', 'inputtokens', 'outputtokens']
310
+ if (whitelist.some((w) => lower.includes(w))) return false
311
+
312
+ const patterns = ['apikey', 'secret', 'password', 'token', 'credential']
313
+ return patterns.some((p) => lower.includes(p))
314
+ }
315
+
316
+ /**
317
+ * Redact secret value while preserving prefix
318
+ * Example: 'sk-proj-abc123...' → 'sk-proj...'
319
+ */
320
+ function redactSecret(value: any): string {
321
+ if (typeof value !== 'string') return '[REDACTED]'
322
+ if (value.length <= 7) return '[REDACTED]'
323
+ return value.substring(0, 7) + '...'
324
+ }
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Base Execution Engine type definitions
3
+ * Core types shared across all Execution Engine resources
4
+ */
5
+
6
+ import { z } from 'zod'
7
+ import { IExecutionLogger } from './logging'
8
+ import type {
9
+ SerializedAgentDefinition,
10
+ SerializedWorkflowDefinition
11
+ } from '../../../platform/registry/serialized-types'
12
+ import type { AIUsageCollector } from '../../../operations/observability/ai-usage-collector'
13
+ import type { MetricsCollector } from '../../../operations/observability/metrics-collector'
14
+ import type { ResourceType, ResourceStatus, ExecutableResourceType } from '../../../platform/registry/types'
15
+
16
+ /**
17
+ * Immutable execution metadata
18
+ * Represents complete execution identity (who, what, when, where)
19
+ * Shared across ExecutionContext and ExecutionLoggerContext to eliminate field duplication
20
+ */
21
+ export interface ExecutionMetadata {
22
+ executionId: string // Unique ID for this execution instance
23
+ organizationId: string // Required for multi-tenant isolation and security
24
+ organizationName: string // Required for resource lookup in registry
25
+ resourceId: string // Required for observability and audit trails
26
+ userId?: string // Optional: user context for audit trails (API keys, system executions may not have userId)
27
+ sessionId?: string // Optional: only for session executions
28
+ sessionTurnNumber?: number // Optional: only for session executions (maps to execution_logs.session_turn_number)
29
+ }
30
+
31
+ /**
32
+ * Unified message event type - covers all message types in sessions
33
+ * Replaces separate SessionTurnMessages and AgentActivityEvent mechanisms
34
+ */
35
+ /**
36
+ * Structured action metadata attached to assistant messages.
37
+ * Frontend reads this instead of parsing text prefixes.
38
+ */
39
+ export type AssistantAction =
40
+ | { kind: 'navigate'; path: string; reason: string }
41
+ | {
42
+ kind: 'update_filters'
43
+ timeRange: string | null
44
+ statusFilter: string | null
45
+ searchQuery: string | null
46
+ }
47
+
48
+ export type MessageEvent =
49
+ // User/Assistant text messages
50
+ | { type: 'user_message'; text: string }
51
+ | { type: 'assistant_message'; text: string; _action?: AssistantAction }
52
+
53
+ // Agent lifecycle events
54
+ | { type: 'agent:started' }
55
+ | { type: 'agent:completed' }
56
+ | { type: 'agent:error'; error: string }
57
+
58
+ // Agent activity events (with metadata for UI)
59
+ | { type: 'agent:reasoning'; iteration: number; reasoning: string }
60
+ | { type: 'agent:tool_call'; toolName: string; args: Record<string, unknown> }
61
+ | { type: 'agent:tool_result'; toolName: string; success: boolean; result?: unknown; error?: string }
62
+
63
+ /**
64
+ * Execution context for all resources
65
+ * Unified callback replaces SessionTurnMessages (removed)
66
+ */
67
+ export interface ExecutionContext extends ExecutionMetadata {
68
+ // Inherited: executionId, organizationId, organizationName, resourceId, userId, sessionId, sessionTurnNumber
69
+ logger: IExecutionLogger // Required for observability and debugging
70
+ signal?: AbortSignal // Future: cancellation support for long-running operations
71
+
72
+ // Unified message event callback (immediate persistence + streaming)
73
+ onMessageEvent?: (event: MessageEvent) => Promise<void>
74
+
75
+ /** Called per iteration to write heartbeat + check stall status. Non-fatal if it throws. */
76
+ onHeartbeat?: () => Promise<void>
77
+
78
+ // Observability collectors (optional - injected by coordinators)
79
+ aiUsageCollector?: AIUsageCollector // Tracks AI token usage and costs
80
+ metricsCollector?: MetricsCollector // Tracks execution timing and ROI metrics
81
+
82
+ // Nested execution tracking (Wave 2c - Agent Resource Invocation)
83
+ parentExecutionId?: string // Parent execution ID for nested invocations
84
+ executionDepth: number // Nesting depth: 0 = top-level, 1+ = nested
85
+
86
+ // Integration credential tracking (for OAuth token refresh persistence)
87
+ credentialName?: string // Credential name used for current integration call
88
+
89
+ // Execution-scoped storage for large data (e.g., PDF buffers) that shouldn't be logged
90
+ // Automatically garbage collected when execution context ends
91
+ store: Map<string, unknown>
92
+ }
93
+
94
+ // Contract definition - validation schemas (Zod)
95
+ export interface Contract {
96
+ inputSchema: z.ZodSchema // Required - use z.object({}) for no input
97
+ outputSchema?: z.ZodSchema // Optional - if present, agent generates output
98
+ }
99
+
100
+ // Contract structure - serializable JSON Schema representation
101
+ export interface ContractStructure {
102
+ inputSchema: unknown // JSON Schema representation
103
+ outputSchema?: unknown // JSON Schema representation (optional for side-effect resources)
104
+ }
105
+
106
+ // Re-export resource types from registry (canonical source)
107
+ export type { ResourceType, ResourceStatus, ExecutableResourceType }
108
+
109
+ /**
110
+ * NOTE: AIResource interface has been removed and replaced with ResourceDefinition
111
+ * from registry/types.ts. All resources (executable and non-executable) now extend
112
+ * the unified ResourceDefinition base interface.
113
+ *
114
+ * AgentConfig and WorkflowConfig now extend ResourceDefinition directly.
115
+ * See packages/core/src/registry/types.ts for the base interface definition.
116
+ */
117
+
118
+ // Generic/Unified Resource Structure type
119
+ // Each resource type (workflow, agent) implements its own specific structure
120
+ export type AIResourceDefinition = SerializedWorkflowDefinition | SerializedAgentDefinition
121
+
122
+ // UI color constants for resource types and statuses
123
+ export const ResourceStatusColors = {
124
+ dev: 'var(--color-primary)',
125
+ prod: 'var(--color-success)'
126
+ } as const
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Base Execution Engine utility functions
3
+ * Shared utilities used across all Execution Engine resources
4
+ */
5
+
6
+ import { zodToJsonSchema } from '@alcyone-labs/zod-to-json-schema'
7
+ import type { z } from 'zod'
8
+ import type { ContractStructure } from './types'
9
+
10
+ /**
11
+ * Convert Zod schemas to JSON Schema for serialization
12
+ * Used by Workflow and Agent getStructure() methods
13
+ *
14
+ * @param inputSchema - Zod input schema
15
+ * @param outputSchema - Zod output schema (optional for side-effect resources)
16
+ * @param resourceId - Resource identifier for schema naming
17
+ * @returns JSON Schema representation of the contract
18
+ */
19
+ export function convertContractToJson(
20
+ inputSchema: z.ZodSchema,
21
+ outputSchema: z.ZodSchema | undefined,
22
+ resourceId: string
23
+ ): ContractStructure {
24
+ const options = {
25
+ $refStrategy: 'none' as const,
26
+ errorMessages: true
27
+ }
28
+
29
+ return {
30
+ inputSchema: zodToJsonSchema(inputSchema, {
31
+ ...options,
32
+ name: `${resourceId}-input`
33
+ }),
34
+ outputSchema: outputSchema
35
+ ? zodToJsonSchema(outputSchema, {
36
+ ...options,
37
+ name: `${resourceId}-output`
38
+ })
39
+ : undefined
40
+ }
41
+ }