@elevasis/core 0.7.1 → 0.8.2

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 (476) hide show
  1. package/dist/test-utils/index.d.ts +3122 -0
  2. package/dist/test-utils/index.js +386 -0
  3. package/package.json +6 -1
  4. package/src/README.md +39 -36
  5. package/src/__tests__/publish.test.ts +18 -13
  6. package/src/__tests__/{template-foundations-compatibility.test.ts → template-core-compatibility.test.ts} +99 -99
  7. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1135 -1131
  8. package/src/_gen/__tests__/scaffold-contracts.test.ts +47 -36
  9. package/src/_gen/scaffold-contracts.ts +45 -45
  10. package/src/auth/multi-tenancy/credentials/README.md +38 -38
  11. package/src/auth/multi-tenancy/credentials/index.ts +6 -6
  12. package/src/auth/multi-tenancy/credentials/server/encryption.ts +39 -39
  13. package/src/auth/multi-tenancy/credentials/server/service.ts +60 -60
  14. package/src/auth/multi-tenancy/index.ts +17 -17
  15. package/src/auth/multi-tenancy/invitations/api-schemas.ts +107 -107
  16. package/src/auth/multi-tenancy/invitations/index.ts +37 -37
  17. package/src/auth/multi-tenancy/invitations/invitation.ts +86 -86
  18. package/src/auth/multi-tenancy/invitations/server/index.ts +25 -25
  19. package/src/auth/multi-tenancy/invitations/server/transforms.ts +24 -24
  20. package/src/auth/multi-tenancy/invitations/server/workos.ts +24 -24
  21. package/src/auth/multi-tenancy/invitations/supabase.ts +50 -50
  22. package/src/auth/multi-tenancy/memberships/api-schemas.ts +126 -126
  23. package/src/auth/multi-tenancy/memberships/index.ts +21 -21
  24. package/src/auth/multi-tenancy/memberships/membership.ts +138 -138
  25. package/src/auth/multi-tenancy/memberships/server/index.ts +15 -15
  26. package/src/auth/multi-tenancy/memberships/server/transforms.ts +32 -32
  27. package/src/auth/multi-tenancy/memberships/server/workos.ts +21 -21
  28. package/src/auth/multi-tenancy/memberships/supabase.ts +46 -46
  29. package/src/auth/multi-tenancy/organizations/api-schemas.ts +128 -128
  30. package/src/auth/multi-tenancy/organizations/index.ts +23 -23
  31. package/src/auth/multi-tenancy/organizations/organization.ts +24 -24
  32. package/src/auth/multi-tenancy/organizations/server/index.ts +10 -10
  33. package/src/auth/multi-tenancy/organizations/server/transforms.ts +35 -35
  34. package/src/auth/multi-tenancy/organizations/server/workos.ts +20 -20
  35. package/src/auth/multi-tenancy/types.ts +83 -83
  36. package/src/auth/multi-tenancy/users/api-schemas.ts +194 -194
  37. package/src/auth/multi-tenancy/users/index.ts +27 -27
  38. package/src/auth/multi-tenancy/users/server/index.ts +19 -19
  39. package/src/auth/multi-tenancy/users/server/transforms.ts +21 -21
  40. package/src/auth/multi-tenancy/users/server/workos.ts +16 -16
  41. package/src/auth/multi-tenancy/users/user.ts +65 -65
  42. package/src/business/README.md +52 -52
  43. package/src/business/__tests__/entities-published.test.ts +33 -33
  44. package/src/business/acquisition/api-schemas.ts +759 -759
  45. package/src/business/acquisition/index.ts +109 -109
  46. package/src/business/acquisition/types.ts +402 -402
  47. package/src/business/base-entities.test.ts +481 -481
  48. package/src/business/base-entities.ts +241 -241
  49. package/src/business/entities-published.ts +24 -24
  50. package/src/business/index.ts +15 -15
  51. package/src/business/pdf/browser/pdfmake-browser.ts +229 -229
  52. package/src/business/pdf/index.ts +10 -10
  53. package/src/business/pdf/server/index.ts +21 -21
  54. package/src/business/pdf/server/themes/default.ts +8 -8
  55. package/src/business/pdf/server/themes/index.ts +9 -9
  56. package/src/business/pdf/server/themes/types.ts +8 -8
  57. package/src/business/pdf/types.ts +272 -272
  58. package/src/business/projects/index.ts +2 -2
  59. package/src/business/projects/sse-events.ts +21 -21
  60. package/src/business/projects/types.ts +89 -89
  61. package/src/business/sales/api-schemas.ts +75 -75
  62. package/src/business/seo/__tests__/linking.test.ts +549 -549
  63. package/src/business/seo/__tests__/types.test.ts +404 -404
  64. package/src/business/seo/index.ts +2 -2
  65. package/src/business/seo/linking.ts +281 -281
  66. package/src/business/seo/types.ts +199 -199
  67. package/src/commands/queue/index.ts +3 -3
  68. package/src/commands/queue/schemas.test.ts +593 -593
  69. package/src/commands/queue/schemas.ts +125 -125
  70. package/src/commands/queue/sse-events.ts +61 -61
  71. package/src/commands/queue/types/action.ts +52 -52
  72. package/src/commands/queue/types/checkpoint.ts +44 -44
  73. package/src/commands/queue/types/index.ts +7 -7
  74. package/src/commands/queue/types/task.ts +116 -116
  75. package/src/commands/queue/types.ts +14 -14
  76. package/src/content/distribution-metadata.ts +61 -61
  77. package/src/content/index.ts +10 -10
  78. package/src/deployments/index.ts +22 -22
  79. package/src/execution/core/__tests__/archived-logs.test.ts +72 -72
  80. package/src/execution/core/index.ts +11 -11
  81. package/src/execution/core/runner-types.ts +80 -80
  82. package/src/execution/core/server/environment.ts +31 -31
  83. package/src/execution/core/sse-executions.ts +119 -119
  84. package/src/execution/core/types.ts +29 -29
  85. package/src/execution/engine/__tests__/fixtures/test-agents.ts +4 -4
  86. package/src/execution/engine/__tests__/timeout.test.ts +565 -565
  87. package/src/execution/engine/agent/__tests__/errors.test.ts +508 -508
  88. package/src/execution/engine/agent/actions/__tests__/processor.test.ts +531 -531
  89. package/src/execution/engine/agent/actions/executor.ts +205 -205
  90. package/src/execution/engine/agent/actions/navigate-knowledge-executor.ts +230 -230
  91. package/src/execution/engine/agent/actions/processor.ts +116 -116
  92. package/src/execution/engine/agent/actions/types.ts +70 -70
  93. package/src/execution/engine/agent/core/agent.ts +810 -810
  94. package/src/execution/engine/agent/core/types.ts +155 -155
  95. package/src/execution/engine/agent/errors.ts +251 -251
  96. package/src/execution/engine/agent/index.ts +78 -78
  97. package/src/execution/engine/agent/knowledge-map/types.ts +106 -106
  98. package/src/execution/engine/agent/knowledge-map/utils.ts +101 -101
  99. package/src/execution/engine/agent/memory/__tests__/manager.test.ts +754 -754
  100. package/src/execution/engine/agent/memory/domains.ts +99 -99
  101. package/src/execution/engine/agent/memory/manager.ts +365 -365
  102. package/src/execution/engine/agent/memory/processor.ts +66 -66
  103. package/src/execution/engine/agent/memory/types.ts +90 -90
  104. package/src/execution/engine/agent/memory/utils.ts +134 -134
  105. package/src/execution/engine/agent/observability/logging.ts +467 -467
  106. package/src/execution/engine/agent/observability/types.ts +64 -64
  107. package/src/execution/engine/agent/reasoning/adapters/agent-adapter-helpers.ts +349 -349
  108. package/src/execution/engine/agent/reasoning/processor.ts +92 -92
  109. package/src/execution/engine/agent/reasoning/prompt-sections/base-actions.ts +134 -134
  110. package/src/execution/engine/agent/reasoning/prompt-sections/completion.ts +49 -49
  111. package/src/execution/engine/agent/reasoning/prompt-sections/knowledge-map.ts +93 -93
  112. package/src/execution/engine/agent/reasoning/prompt-sections/memory.ts +65 -65
  113. package/src/execution/engine/agent/reasoning/prompt-sections/tools.ts +44 -44
  114. package/src/execution/engine/agent/reasoning/request-builder.ts +169 -169
  115. package/src/execution/engine/agent/reasoning/types.ts +18 -18
  116. package/src/execution/engine/base/errors.ts +118 -118
  117. package/src/execution/engine/base/index.ts +2 -2
  118. package/src/execution/engine/base/logging.ts +31 -31
  119. package/src/execution/engine/base/serialization.ts +324 -324
  120. package/src/execution/engine/base/types.ts +126 -126
  121. package/src/execution/engine/base/utils.ts +41 -41
  122. package/src/execution/engine/index.ts +434 -434
  123. package/src/execution/engine/interface/index.ts +1 -1
  124. package/src/execution/engine/interface/types.ts +62 -62
  125. package/src/execution/engine/llm/__tests__/model-info.test.ts +50 -50
  126. package/src/execution/engine/llm/__tests__/model-validation.test.ts +321 -321
  127. package/src/execution/engine/llm/__tests__/response-schema-validator.test.ts +115 -115
  128. package/src/execution/engine/llm/adapters/__tests__/adapter-factory.test.ts +375 -375
  129. package/src/execution/engine/llm/adapters/__tests__/anthropic-adapter.test.ts +463 -463
  130. package/src/execution/engine/llm/adapters/__tests__/anthropic.integration.test.ts +177 -177
  131. package/src/execution/engine/llm/adapters/__tests__/google-adapter.test.ts +722 -722
  132. package/src/execution/engine/llm/adapters/__tests__/google.integration.test.ts +376 -376
  133. package/src/execution/engine/llm/adapters/__tests__/openai-adapter.test.ts +551 -551
  134. package/src/execution/engine/llm/adapters/__tests__/openrouter-adapter.test.ts +563 -563
  135. package/src/execution/engine/llm/adapters/__tests__/openrouter.integration.test.ts +105 -105
  136. package/src/execution/engine/llm/adapters/__tests__/universal-adapter.test.ts +537 -537
  137. package/src/execution/engine/llm/adapters/circuit-breaker.ts +147 -147
  138. package/src/execution/engine/llm/adapters/index.ts +17 -17
  139. package/src/execution/engine/llm/adapters/mock-adapter.ts +116 -116
  140. package/src/execution/engine/llm/adapters/server/adapter-factory.ts +130 -130
  141. package/src/execution/engine/llm/adapters/server/anthropic.ts +137 -137
  142. package/src/execution/engine/llm/adapters/server/google.ts +283 -283
  143. package/src/execution/engine/llm/adapters/server/index.ts +12 -12
  144. package/src/execution/engine/llm/adapters/server/openai.ts +206 -206
  145. package/src/execution/engine/llm/adapters/server/openrouter.ts +235 -235
  146. package/src/execution/engine/llm/adapters/universal-adapter.ts +230 -230
  147. package/src/execution/engine/llm/errors.ts +186 -186
  148. package/src/execution/engine/llm/model-info.ts +332 -332
  149. package/src/execution/engine/llm/response-schema-validator.ts +113 -113
  150. package/src/execution/engine/llm/types.ts +86 -86
  151. package/src/execution/engine/test-utils/index.ts +6 -6
  152. package/src/execution/engine/test-utils/mocks.ts +56 -56
  153. package/src/execution/engine/tools/integration/base-integration-adapter.ts +50 -50
  154. package/src/execution/engine/tools/integration/index.ts +53 -53
  155. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-adapter.ts +73 -73
  156. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/anymailfinder-tools.ts +209 -209
  157. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-company-email/index.ts +82 -82
  158. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-decision-maker-email/index.ts +122 -122
  159. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/find-person-email/index.ts +89 -89
  160. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/fetch/verify-email/index.ts +84 -84
  161. package/src/execution/engine/tools/integration/server/adapters/anymailfinder/index.ts +16 -16
  162. package/src/execution/engine/tools/integration/server/adapters/apify/__tests__/apify-run-actor.integration.test.ts +293 -293
  163. package/src/execution/engine/tools/integration/server/adapters/apify/apify-adapter.ts +100 -100
  164. package/src/execution/engine/tools/integration/server/adapters/apify/apify-tools.ts +217 -217
  165. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/get-dataset-items/index.ts +92 -92
  166. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/run-actor/index.ts +218 -218
  167. package/src/execution/engine/tools/integration/server/adapters/apify/fetch/start-actor/index.ts +87 -87
  168. package/src/execution/engine/tools/integration/server/adapters/apify/index.ts +11 -11
  169. package/src/execution/engine/tools/integration/server/adapters/attio/__tests__/attio-crud.integration.test.ts +361 -361
  170. package/src/execution/engine/tools/integration/server/adapters/attio/attio-adapter.ts +162 -162
  171. package/src/execution/engine/tools/integration/server/adapters/attio/attio-tools.ts +594 -594
  172. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-attribute/index.ts +214 -214
  173. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-note/index.ts +152 -152
  174. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/create-record/index.ts +141 -141
  175. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-note/index.ts +86 -86
  176. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/delete-record/index.ts +105 -105
  177. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/get-record/index.ts +118 -118
  178. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-attributes/index.ts +165 -165
  179. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-notes/index.ts +96 -96
  180. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-objects/index.ts +104 -104
  181. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/list-records/index.ts +156 -156
  182. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-attribute/index.ts +220 -220
  183. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/update-record/index.ts +140 -140
  184. package/src/execution/engine/tools/integration/server/adapters/attio/fetch/utils/types.ts +146 -146
  185. package/src/execution/engine/tools/integration/server/adapters/attio/index.ts +31 -31
  186. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-adapter.ts +210 -210
  187. package/src/execution/engine/tools/integration/server/adapters/gmail/gmail-tools.ts +104 -104
  188. package/src/execution/engine/tools/integration/server/adapters/google-sheets/__tests__/google-sheets.integration.test.ts +261 -261
  189. package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-adapter.ts +1189 -1189
  190. package/src/execution/engine/tools/integration/server/adapters/google-sheets/google-sheets-tools.ts +641 -641
  191. package/src/execution/engine/tools/integration/server/adapters/google-sheets/index.ts +18 -18
  192. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/activate-campaign/index.ts +86 -86
  193. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/__tests__/index.test.ts +289 -289
  194. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/add-to-campaign/index.ts +154 -154
  195. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/__tests__/index.test.ts +325 -325
  196. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-add-leads/index.ts +153 -153
  197. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/bulk-delete-leads/index.ts +84 -84
  198. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-campaign/index.ts +125 -125
  199. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/create-inbox-test/index.ts +107 -107
  200. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/delete-campaign/index.ts +85 -85
  201. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-account-health/index.ts +91 -91
  202. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign/index.ts +92 -92
  203. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/__tests__/index.test.ts +195 -195
  204. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-campaign-analytics/index.ts +113 -113
  205. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-daily-campaign-analytics/index.ts +104 -104
  206. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-emails/index.ts +155 -155
  207. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/__tests__/index.test.ts +196 -196
  208. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/get-step-analytics/index.ts +102 -102
  209. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/__tests__/index.test.ts +189 -189
  210. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-campaigns/index.ts +87 -87
  211. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/list-leads/index.ts +112 -112
  212. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/patch-lead/index.ts +76 -76
  213. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/pause-campaign/index.ts +86 -86
  214. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/remove-from-subsequence/index.ts +98 -98
  215. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/send-reply/index.ts +126 -126
  216. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/__tests__/index.test.ts +193 -193
  217. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-campaign/index.ts +99 -99
  218. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/__tests__/index.test.ts +621 -621
  219. package/src/execution/engine/tools/integration/server/adapters/instantly/fetch/update-interest-status/index.ts +125 -125
  220. package/src/execution/engine/tools/integration/server/adapters/instantly/index.ts +29 -29
  221. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-adapter.ts +178 -178
  222. package/src/execution/engine/tools/integration/server/adapters/instantly/instantly-tools.ts +1473 -1473
  223. package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/check-credits/index.ts +59 -59
  224. package/src/execution/engine/tools/integration/server/adapters/millionverifier/fetch/verify-email/index.ts +102 -102
  225. package/src/execution/engine/tools/integration/server/adapters/millionverifier/index.ts +17 -17
  226. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-adapter.ts +80 -80
  227. package/src/execution/engine/tools/integration/server/adapters/millionverifier/millionverifier-tools.ts +102 -102
  228. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/get-email/index.ts +102 -102
  229. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/send-email/index.ts +134 -134
  230. package/src/execution/engine/tools/integration/server/adapters/resend/fetch/utils/types.ts +75 -75
  231. package/src/execution/engine/tools/integration/server/adapters/resend/index.ts +27 -27
  232. package/src/execution/engine/tools/integration/server/adapters/resend/resend-adapter.ts +108 -108
  233. package/src/execution/engine/tools/integration/server/adapters/resend/resend-tools.ts +132 -132
  234. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/create-envelope/index.ts +274 -274
  235. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/download-document/index.ts +230 -230
  236. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/get-envelope/index.ts +133 -133
  237. package/src/execution/engine/tools/integration/server/adapters/signature-api/fetch/void-envelope/index.ts +90 -90
  238. package/src/execution/engine/tools/integration/server/adapters/stripe/fetch/utils/types.ts +210 -210
  239. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-adapter.ts +517 -517
  240. package/src/execution/engine/tools/integration/server/adapters/stripe/stripe-tools.ts +309 -309
  241. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/domain-search/index.ts +133 -133
  242. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-finder/index.ts +122 -122
  243. package/src/execution/engine/tools/integration/server/adapters/tomba/fetch/email-verifier/index.ts +111 -111
  244. package/src/execution/engine/tools/integration/server/adapters/tomba/index.ts +11 -11
  245. package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-adapter.ts +78 -78
  246. package/src/execution/engine/tools/integration/server/adapters/tomba/tomba-tools.ts +222 -222
  247. package/src/execution/engine/tools/integration/server/index.ts +61 -61
  248. package/src/execution/engine/tools/integration/service.ts +161 -161
  249. package/src/execution/engine/tools/integration/tool.ts +253 -253
  250. package/src/execution/engine/tools/integration/types/anymailfinder.ts +74 -74
  251. package/src/execution/engine/tools/integration/types/apify.ts +92 -92
  252. package/src/execution/engine/tools/integration/types/index.ts +19 -19
  253. package/src/execution/engine/tools/integration/types/instantly.ts +557 -557
  254. package/src/execution/engine/tools/integration/types/millionverifier.ts +56 -56
  255. package/src/execution/engine/tools/integration/types/stripe.ts +162 -162
  256. package/src/execution/engine/tools/integration/types/tomba.ts +94 -94
  257. package/src/execution/engine/tools/lead-service-types.ts +884 -884
  258. package/src/execution/engine/tools/llm/index.ts +11 -11
  259. package/src/execution/engine/tools/llm/server/index.ts +8 -8
  260. package/src/execution/engine/tools/llm/server/llm-call-tool.ts +118 -118
  261. package/src/execution/engine/tools/platform/__tests__/pdf.test.ts +441 -441
  262. package/src/execution/engine/tools/platform/acquisition/company-tools.ts +248 -248
  263. package/src/execution/engine/tools/platform/acquisition/contact-tools.ts +319 -319
  264. package/src/execution/engine/tools/platform/acquisition/index.ts +43 -43
  265. package/src/execution/engine/tools/platform/acquisition/list-tools.ts +148 -148
  266. package/src/execution/engine/tools/platform/acquisition/types.ts +260 -260
  267. package/src/execution/engine/tools/platform/email/index.ts +122 -122
  268. package/src/execution/engine/tools/platform/email/types.ts +96 -96
  269. package/src/execution/engine/tools/platform/index.ts +157 -157
  270. package/src/execution/engine/tools/platform/notification.ts +81 -81
  271. package/src/execution/engine/tools/platform/pdf/index.ts +110 -110
  272. package/src/execution/engine/tools/platform/pdf/types.ts +77 -77
  273. package/src/execution/engine/tools/platform/scheduler.ts +87 -87
  274. package/src/execution/engine/tools/platform/storage/index.ts +370 -370
  275. package/src/execution/engine/tools/platform/types.ts +148 -148
  276. package/src/execution/engine/tools/registry.ts +700 -700
  277. package/src/execution/engine/tools/tool-maps.ts +786 -786
  278. package/src/execution/engine/tools/types.ts +233 -233
  279. package/src/execution/engine/workflow/__tests__/errors.test.ts +139 -139
  280. package/src/execution/engine/workflow/errors.ts +63 -63
  281. package/src/execution/engine/workflow/helpers/index.ts +11 -11
  282. package/src/execution/engine/workflow/helpers/server/index.ts +8 -8
  283. package/src/execution/engine/workflow/helpers/server/llm-call.ts +93 -93
  284. package/src/execution/engine/workflow/index.ts +19 -19
  285. package/src/execution/engine/workflow/log-truncate.ts +26 -26
  286. package/src/execution/engine/workflow/logging.ts +191 -191
  287. package/src/execution/engine/workflow/types.ts +182 -182
  288. package/src/execution/engine/workflow/utils.ts +280 -280
  289. package/src/execution/engine/workflow/workflow.ts +168 -168
  290. package/src/execution/index.ts +3 -3
  291. package/src/execution/scheduler/__tests__/api-schemas.test.ts +733 -733
  292. package/src/execution/scheduler/__tests__/utils.test.ts +1009 -1009
  293. package/src/execution/scheduler/api-schemas.ts +296 -296
  294. package/src/execution/scheduler/index.ts +50 -50
  295. package/src/execution/scheduler/schemas.ts +264 -264
  296. package/src/execution/scheduler/types.ts +111 -111
  297. package/src/execution/scheduler/utils.ts +364 -364
  298. package/src/forms/index.ts +7 -7
  299. package/src/forms/schemas.ts +69 -69
  300. package/src/forms/types.ts +70 -70
  301. package/src/index.ts +71 -60
  302. package/src/integrations/credentials/__tests__/schemas.test.ts +82 -82
  303. package/src/integrations/credentials/__tests__/utils.test.ts +144 -144
  304. package/src/integrations/credentials/api-schemas.ts +143 -143
  305. package/src/integrations/credentials/index.ts +32 -32
  306. package/src/integrations/credentials/schemas.ts +164 -164
  307. package/src/integrations/credentials/utils.ts +59 -59
  308. package/src/integrations/oauth/__tests__/provider-registry.test.ts +59 -59
  309. package/src/integrations/oauth/api-schemas.ts +92 -92
  310. package/src/integrations/oauth/index.ts +19 -19
  311. package/src/integrations/oauth/provider-registry.ts +61 -61
  312. package/src/integrations/oauth/server/__tests__/refresh-concurrent.test.ts +183 -183
  313. package/src/integrations/oauth/server/__tests__/refresh.test.ts +577 -577
  314. package/src/integrations/oauth/server/credentials.ts +39 -39
  315. package/src/integrations/oauth/server/refresh.ts +214 -214
  316. package/src/integrations/oauth/types.ts +34 -34
  317. package/src/integrations/webhook-endpoints/__tests__/api-schemas.test.ts +318 -318
  318. package/src/integrations/webhook-endpoints/api-schemas.ts +102 -102
  319. package/src/integrations/webhook-endpoints/index.ts +28 -28
  320. package/src/integrations/webhook-endpoints/types.ts +51 -51
  321. package/src/operations/activities/api-schemas.ts +79 -79
  322. package/src/operations/activities/index.ts +9 -9
  323. package/src/operations/activities/sse-events.ts +30 -30
  324. package/src/operations/activities/types.ts +63 -63
  325. package/src/operations/debug-logs/client.ts +60 -60
  326. package/src/operations/debug-logs/debug-logger.ts +83 -83
  327. package/src/operations/debug-logs/index.ts +8 -8
  328. package/src/operations/debug-logs/server.ts +19 -19
  329. package/src/operations/debug-logs/types.ts +33 -33
  330. package/src/operations/index.ts +50 -50
  331. package/src/operations/notifications/api-schemas.ts +91 -91
  332. package/src/operations/notifications/index.ts +3 -3
  333. package/src/operations/notifications/sse-events.ts +21 -21
  334. package/src/operations/notifications/types.ts +47 -47
  335. package/src/operations/observability/__tests__/openrouter-cost-flow.test.ts +297 -297
  336. package/src/operations/observability/__tests__/utils.test.ts +54 -54
  337. package/src/operations/observability/ai-usage-collector.ts +64 -64
  338. package/src/operations/observability/index.ts +13 -13
  339. package/src/operations/observability/metrics-collector.ts +49 -49
  340. package/src/operations/observability/schemas.ts +39 -39
  341. package/src/operations/observability/types.ts +463 -463
  342. package/src/operations/observability/utils.ts +77 -77
  343. package/src/operations/sessions/__tests__/manager.test.ts +821 -821
  344. package/src/operations/sessions/index.ts +26 -26
  345. package/src/operations/sessions/server/manager.ts +90 -90
  346. package/src/operations/sessions/server/session.ts +180 -180
  347. package/src/operations/sessions/types.ts +98 -98
  348. package/src/operations/triggers/index.ts +12 -12
  349. package/src/operations/triggers/webhook/definitions/instantly-account-error.ts +44 -44
  350. package/src/operations/triggers/webhook/definitions/instantly-auto-reply-received.ts +51 -51
  351. package/src/operations/triggers/webhook/definitions/instantly-campaign-completed.ts +45 -45
  352. package/src/operations/triggers/webhook/definitions/instantly-email-bounced.ts +49 -49
  353. package/src/operations/triggers/webhook/definitions/instantly-lead-unsubscribed.ts +45 -45
  354. package/src/operations/triggers/webhook/definitions/instantly-reply-received.ts +54 -54
  355. package/src/operations/triggers/webhook/index.ts +35 -35
  356. package/src/operations/triggers/webhook/types.ts +74 -74
  357. package/src/organization-model/README.md +97 -97
  358. package/src/organization-model/__tests__/defaults.test.ts +175 -175
  359. package/src/organization-model/__tests__/domains/customers.test.ts +295 -295
  360. package/src/organization-model/__tests__/domains/goals.test.ts +479 -479
  361. package/src/organization-model/__tests__/domains/identity.test.ts +279 -279
  362. package/src/organization-model/__tests__/domains/navigation.test.ts +212 -212
  363. package/src/organization-model/__tests__/domains/offerings.test.ts +419 -419
  364. package/src/organization-model/__tests__/domains/operations.test.ts +203 -203
  365. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -362
  366. package/src/organization-model/__tests__/domains/roles.test.ts +347 -347
  367. package/src/organization-model/__tests__/domains/statuses.test.ts +243 -243
  368. package/src/organization-model/__tests__/foundation.test.ts +105 -105
  369. package/src/organization-model/__tests__/graph.test.ts +894 -894
  370. package/src/organization-model/__tests__/resolve.test.ts +690 -690
  371. package/src/organization-model/__tests__/schema.test.ts +407 -407
  372. package/src/organization-model/contracts.ts +14 -14
  373. package/src/organization-model/defaults.ts +148 -148
  374. package/src/organization-model/domains/branding.ts +22 -22
  375. package/src/organization-model/domains/customers.ts +75 -75
  376. package/src/organization-model/domains/features.ts +22 -22
  377. package/src/organization-model/domains/goals.ts +80 -80
  378. package/src/organization-model/domains/identity.ts +94 -94
  379. package/src/organization-model/domains/navigation.ts +391 -391
  380. package/src/organization-model/domains/offerings.ts +66 -66
  381. package/src/organization-model/domains/operations.ts +85 -85
  382. package/src/organization-model/domains/projects.ts +48 -48
  383. package/src/organization-model/domains/prospecting.ts +33 -33
  384. package/src/organization-model/domains/roles.ts +55 -55
  385. package/src/organization-model/domains/sales.ts +94 -94
  386. package/src/organization-model/domains/shared.ts +62 -62
  387. package/src/organization-model/domains/statuses.ts +130 -130
  388. package/src/organization-model/foundation.ts +97 -97
  389. package/src/organization-model/graph/build.ts +399 -399
  390. package/src/organization-model/graph/index.ts +4 -4
  391. package/src/organization-model/graph/schema.ts +48 -48
  392. package/src/organization-model/graph/types.ts +40 -40
  393. package/src/organization-model/index.ts +13 -13
  394. package/src/organization-model/organization-graph.mdx +272 -272
  395. package/src/organization-model/organization-model.mdx +320 -320
  396. package/src/organization-model/published.ts +85 -85
  397. package/src/organization-model/resolve.ts +66 -66
  398. package/src/organization-model/schema.ts +287 -287
  399. package/src/organization-model/types.ts +46 -46
  400. package/src/platform/api/index.ts +1 -1
  401. package/src/platform/api/types.ts +35 -35
  402. package/src/platform/constants/http.ts +37 -37
  403. package/src/platform/constants/index.ts +5 -5
  404. package/src/platform/constants/limits.ts +32 -32
  405. package/src/platform/constants/resilience.ts +51 -51
  406. package/src/platform/constants/timeouts.ts +20 -20
  407. package/src/platform/constants/versions.ts +3 -3
  408. package/src/platform/registry/__tests__/resource-registry-static.test.ts +347 -347
  409. package/src/platform/registry/__tests__/resource-registry.integration.test.ts +1028 -1028
  410. package/src/platform/registry/__tests__/resource-registry.list-executable.test.ts +393 -393
  411. package/src/platform/registry/__tests__/resource-registry.test.ts +2005 -2005
  412. package/src/platform/registry/__tests__/serialization.test.ts +1127 -1127
  413. package/src/platform/registry/command-view.ts +180 -180
  414. package/src/platform/registry/domains.ts +165 -165
  415. package/src/platform/registry/index.ts +93 -93
  416. package/src/platform/registry/reserved.ts +24 -24
  417. package/src/platform/registry/resource-metadata.ts +59 -59
  418. package/src/platform/registry/resource-registry.command-queue-groups.test.ts +129 -129
  419. package/src/platform/registry/resource-registry.ts +876 -876
  420. package/src/platform/registry/serialization.ts +273 -273
  421. package/src/platform/registry/serialized-types.ts +231 -231
  422. package/src/platform/registry/stats-types.ts +66 -66
  423. package/src/platform/registry/types.ts +404 -404
  424. package/src/platform/registry/validation.ts +513 -513
  425. package/src/platform/resilience/__tests__/rate-limiter.test.ts +471 -471
  426. package/src/platform/resilience/circuit-breaker.ts +164 -164
  427. package/src/platform/resilience/errors.ts +68 -68
  428. package/src/platform/resilience/http-error-mapper.ts +129 -129
  429. package/src/platform/resilience/index.ts +93 -93
  430. package/src/platform/resilience/rate-limiter-types.ts +46 -46
  431. package/src/platform/resilience/rate-limiter.ts +140 -140
  432. package/src/platform/resilience/retry.ts +89 -89
  433. package/src/platform/resilience/timeout.ts +63 -63
  434. package/src/platform/sse/events.ts +37 -37
  435. package/src/platform/sse/index.ts +7 -7
  436. package/src/platform/utils/__tests__/validation.test.ts +1083 -1083
  437. package/src/platform/utils/currency.ts +96 -96
  438. package/src/platform/utils/debounce.ts +52 -52
  439. package/src/platform/utils/error.ts +41 -41
  440. package/src/platform/utils/hmac.test.ts +97 -97
  441. package/src/platform/utils/index.ts +32 -32
  442. package/src/platform/utils/server/betterstack-logger.ts +210 -210
  443. package/src/platform/utils/server/hmac.ts +44 -44
  444. package/src/platform/utils/server/unsubscribe.ts +111 -111
  445. package/src/platform/utils/token-counter.ts +96 -96
  446. package/src/platform/utils/validation.ts +425 -425
  447. package/src/projects/api-schemas.ts +268 -268
  448. package/src/published.ts +1 -1
  449. package/src/reference/_generated/contracts.md +607 -607
  450. package/src/reference/glossary.md +105 -105
  451. package/src/requests/__tests__/api-schemas.test.ts +277 -277
  452. package/src/requests/api-schemas.ts +83 -83
  453. package/src/requests/index.ts +1 -1
  454. package/src/scaffold-registry/__tests__/index.test.ts +17 -0
  455. package/src/scaffold-registry/__tests__/schema.test.ts +329 -230
  456. package/src/scaffold-registry/index.ts +205 -189
  457. package/src/scaffold-registry/schema.ts +196 -128
  458. package/src/server.ts +272 -272
  459. package/src/supabase/database.types.ts +2719 -2719
  460. package/src/supabase/helpers.ts +20 -20
  461. package/src/supabase/index.ts +52 -52
  462. package/src/supabase/server/client.ts +58 -58
  463. package/src/test-utils/README.md +30 -138
  464. package/src/test-utils/browser-mocks.ts +54 -54
  465. package/src/test-utils/fixtures/api-keys.ts +52 -52
  466. package/src/test-utils/fixtures/index.ts +4 -4
  467. package/src/test-utils/fixtures/memberships.ts +80 -80
  468. package/src/test-utils/fixtures/organizations.ts +69 -69
  469. package/src/test-utils/fixtures/users.ts +79 -79
  470. package/src/test-utils/index.ts +7 -8
  471. package/src/test-utils/mocks/index.ts +2 -2
  472. package/src/test-utils/mocks/supabase.ts +142 -142
  473. package/src/test-utils/mocks/workos.ts +108 -108
  474. package/src/test-utils/published.ts +4 -0
  475. package/src/test-utils/rls/RLSTestContext.ts +554 -554
  476. package/src/test-utils/rls/index.ts +1 -1
@@ -1,113 +1,113 @@
1
- /**
2
- * Lightweight JSON Schema validator for LLM responseSchema compliance
3
- *
4
- * Validates that LLM output matches the responseSchema that was sent to the provider.
5
- * Not a full JSON Schema validator -- covers the subset actually used by LLM structured output:
6
- * required fields, property types, enum values, nested objects, and arrays.
7
- *
8
- * Throws LLMResponseParseError (retryable) so the universal adapter retry loop can re-attempt.
9
- */
10
-
11
- import { LLMResponseParseError } from './errors'
12
-
13
- interface JsonSchema {
14
- type?: string
15
- properties?: Record<string, JsonSchema>
16
- required?: string[]
17
- enum?: unknown[]
18
- items?: JsonSchema
19
- const?: unknown
20
- }
21
-
22
- /**
23
- * Validate LLM output against the provided JSON Schema.
24
- * Throws LLMResponseParseError with a descriptive message listing all violations.
25
- */
26
- export function validateResponseSchema(output: unknown, schema: unknown): void {
27
- if (!schema || typeof schema !== 'object') return
28
-
29
- const errors = collectErrors(output, schema as JsonSchema, '')
30
- if (errors.length === 0) return
31
-
32
- throw new LLMResponseParseError(`LLM output does not match responseSchema: ${errors.join('; ')}`, {
33
- errors,
34
- output: summarizeOutput(output),
35
- schemaRequired: (schema as JsonSchema).required
36
- })
37
- }
38
-
39
- function collectErrors(value: unknown, schema: JsonSchema, path: string): string[] {
40
- const errors: string[] = []
41
- const label = path || 'root'
42
-
43
- // Null/undefined check
44
- if (value === null || value === undefined) {
45
- errors.push(`${label} is ${value === null ? 'null' : 'undefined'}`)
46
- return errors
47
- }
48
-
49
- // Type check
50
- if (schema.type) {
51
- const actualType = getJsonType(value)
52
- if (schema.type !== actualType) {
53
- errors.push(`${label}: expected type '${schema.type}', got '${actualType}'`)
54
- return errors // Can't check deeper if type is wrong
55
- }
56
- }
57
-
58
- // Enum check
59
- if (schema.enum && !schema.enum.includes(value)) {
60
- errors.push(`${label}: value '${String(value)}' not in enum [${schema.enum.map(String).join(', ')}]`)
61
- }
62
-
63
- // Const check
64
- if (schema.const !== undefined && value !== schema.const) {
65
- errors.push(`${label}: expected const '${String(schema.const)}', got '${String(value)}'`)
66
- }
67
-
68
- // Object: check required fields and property types
69
- if (schema.type === 'object' && schema.properties && typeof value === 'object' && value !== null) {
70
- const obj = value as Record<string, unknown>
71
-
72
- // Check required fields exist
73
- if (schema.required) {
74
- for (const field of schema.required) {
75
- if (!(field in obj)) {
76
- errors.push(`missing required field '${path ? `${path}.${field}` : field}'`)
77
- }
78
- }
79
- }
80
-
81
- // Validate each property that exists
82
- for (const [key, propSchema] of Object.entries(schema.properties)) {
83
- if (key in obj) {
84
- const propPath = path ? `${path}.${key}` : key
85
- errors.push(...collectErrors(obj[key], propSchema, propPath))
86
- }
87
- }
88
- }
89
-
90
- // Array: validate items
91
- if (schema.type === 'array' && schema.items && Array.isArray(value)) {
92
- for (let i = 0; i < value.length; i++) {
93
- const itemPath = `${path}[${i}]`
94
- errors.push(...collectErrors(value[i], schema.items, itemPath))
95
- }
96
- }
97
-
98
- return errors
99
- }
100
-
101
- function getJsonType(value: unknown): string {
102
- if (Array.isArray(value)) return 'array'
103
- if (value === null) return 'null'
104
- return typeof value // 'string' | 'number' | 'boolean' | 'object'
105
- }
106
-
107
- /** Truncate output for error context to avoid bloating logs */
108
- function summarizeOutput(output: unknown): unknown {
109
- if (output === null || output === undefined) return output
110
- const str = JSON.stringify(output)
111
- if (str.length <= 500) return output
112
- return str.substring(0, 500) + '...'
113
- }
1
+ /**
2
+ * Lightweight JSON Schema validator for LLM responseSchema compliance
3
+ *
4
+ * Validates that LLM output matches the responseSchema that was sent to the provider.
5
+ * Not a full JSON Schema validator -- covers the subset actually used by LLM structured output:
6
+ * required fields, property types, enum values, nested objects, and arrays.
7
+ *
8
+ * Throws LLMResponseParseError (retryable) so the universal adapter retry loop can re-attempt.
9
+ */
10
+
11
+ import { LLMResponseParseError } from './errors'
12
+
13
+ interface JsonSchema {
14
+ type?: string
15
+ properties?: Record<string, JsonSchema>
16
+ required?: string[]
17
+ enum?: unknown[]
18
+ items?: JsonSchema
19
+ const?: unknown
20
+ }
21
+
22
+ /**
23
+ * Validate LLM output against the provided JSON Schema.
24
+ * Throws LLMResponseParseError with a descriptive message listing all violations.
25
+ */
26
+ export function validateResponseSchema(output: unknown, schema: unknown): void {
27
+ if (!schema || typeof schema !== 'object') return
28
+
29
+ const errors = collectErrors(output, schema as JsonSchema, '')
30
+ if (errors.length === 0) return
31
+
32
+ throw new LLMResponseParseError(`LLM output does not match responseSchema: ${errors.join('; ')}`, {
33
+ errors,
34
+ output: summarizeOutput(output),
35
+ schemaRequired: (schema as JsonSchema).required
36
+ })
37
+ }
38
+
39
+ function collectErrors(value: unknown, schema: JsonSchema, path: string): string[] {
40
+ const errors: string[] = []
41
+ const label = path || 'root'
42
+
43
+ // Null/undefined check
44
+ if (value === null || value === undefined) {
45
+ errors.push(`${label} is ${value === null ? 'null' : 'undefined'}`)
46
+ return errors
47
+ }
48
+
49
+ // Type check
50
+ if (schema.type) {
51
+ const actualType = getJsonType(value)
52
+ if (schema.type !== actualType) {
53
+ errors.push(`${label}: expected type '${schema.type}', got '${actualType}'`)
54
+ return errors // Can't check deeper if type is wrong
55
+ }
56
+ }
57
+
58
+ // Enum check
59
+ if (schema.enum && !schema.enum.includes(value)) {
60
+ errors.push(`${label}: value '${String(value)}' not in enum [${schema.enum.map(String).join(', ')}]`)
61
+ }
62
+
63
+ // Const check
64
+ if (schema.const !== undefined && value !== schema.const) {
65
+ errors.push(`${label}: expected const '${String(schema.const)}', got '${String(value)}'`)
66
+ }
67
+
68
+ // Object: check required fields and property types
69
+ if (schema.type === 'object' && schema.properties && typeof value === 'object' && value !== null) {
70
+ const obj = value as Record<string, unknown>
71
+
72
+ // Check required fields exist
73
+ if (schema.required) {
74
+ for (const field of schema.required) {
75
+ if (!(field in obj)) {
76
+ errors.push(`missing required field '${path ? `${path}.${field}` : field}'`)
77
+ }
78
+ }
79
+ }
80
+
81
+ // Validate each property that exists
82
+ for (const [key, propSchema] of Object.entries(schema.properties)) {
83
+ if (key in obj) {
84
+ const propPath = path ? `${path}.${key}` : key
85
+ errors.push(...collectErrors(obj[key], propSchema, propPath))
86
+ }
87
+ }
88
+ }
89
+
90
+ // Array: validate items
91
+ if (schema.type === 'array' && schema.items && Array.isArray(value)) {
92
+ for (let i = 0; i < value.length; i++) {
93
+ const itemPath = `${path}[${i}]`
94
+ errors.push(...collectErrors(value[i], schema.items, itemPath))
95
+ }
96
+ }
97
+
98
+ return errors
99
+ }
100
+
101
+ function getJsonType(value: unknown): string {
102
+ if (Array.isArray(value)) return 'array'
103
+ if (value === null) return 'null'
104
+ return typeof value // 'string' | 'number' | 'boolean' | 'object'
105
+ }
106
+
107
+ /** Truncate output for error context to avoid bloating logs */
108
+ function summarizeOutput(output: unknown): unknown {
109
+ if (output === null || output === undefined) return output
110
+ const str = JSON.stringify(output)
111
+ if (str.length <= 500) return output
112
+ return str.substring(0, 500) + '...'
113
+ }
@@ -1,86 +1,86 @@
1
- /**
2
- * Generic LLM Types
3
- * Universal interfaces for LLM interaction across all resource types
4
- */
5
-
6
- // ============================================================================
7
- // Message Format (OpenAI-compatible)
8
- // ============================================================================
9
-
10
- /**
11
- * Standard chat message format
12
- * Compatible with OpenAI, Anthropic, and other providers
13
- */
14
- export interface LLMMessage {
15
- role: 'system' | 'user' | 'assistant'
16
- content: string
17
- }
18
-
19
- // ============================================================================
20
- // Generic Request/Response
21
- // ============================================================================
22
-
23
- /**
24
- * Generic LLM generation request
25
- * Usable by agents, workflows, tools, etc.
26
- */
27
- export interface LLMGenerateRequest {
28
- // Prompt (required)
29
- messages: LLMMessage[]
30
-
31
- // Output structure (required)
32
- responseSchema: unknown // JSON Schema for structured output
33
-
34
- // Constraints (optional)
35
- /** Maximum output tokens per LLM call. NOT the model's context window — see ModelInfo.maxTokens for that. */
36
- maxOutputTokens?: number
37
- temperature?: number
38
- topP?: number
39
-
40
- // Cancellation (optional)
41
- signal?: AbortSignal // Execution-level abort signal, composed with per-call timeout in base adapters
42
- }
43
-
44
- /**
45
- * Generic LLM generation response
46
- * Usage field is internal-only (stripped by UniversalLLMAdapter wrapper)
47
- */
48
- export interface LLMGenerateResponse<T = unknown> {
49
- output: T // Parsed structured output (validated against responseSchema)
50
-
51
- // Internal use only (for observability tracking)
52
- // Not exposed in public interface - wrapper extracts this
53
- usage?: {
54
- inputTokens: number
55
- outputTokens: number
56
- totalTokens: number
57
- }
58
-
59
- // Actual cost from provider in USD (when available)
60
- // Currently only OpenRouter provides this via usage accounting
61
- cost?: number
62
- }
63
-
64
- // ============================================================================
65
- // LLM Adapter Interface
66
- // ============================================================================
67
-
68
- /**
69
- * LLM Adapter interface
70
- * Generic primitive for all resource types (agents, workflows, tools)
71
- *
72
- * Design principles:
73
- * - Single method: generate() - the core LLM primitive
74
- * - Generic return type for type safety
75
- * - Universal format (not agent-specific)
76
- * - Standard message-based input (OpenAI-compatible)
77
- */
78
- export interface LLMAdapter {
79
- /**
80
- * Generate structured output from prompt using LLM
81
- *
82
- * @param request - Generation request with messages and response schema
83
- * @returns Generated output (typed) with optional usage metadata
84
- */
85
- generate<T = unknown>(request: LLMGenerateRequest): Promise<LLMGenerateResponse<T>>
86
- }
1
+ /**
2
+ * Generic LLM Types
3
+ * Universal interfaces for LLM interaction across all resource types
4
+ */
5
+
6
+ // ============================================================================
7
+ // Message Format (OpenAI-compatible)
8
+ // ============================================================================
9
+
10
+ /**
11
+ * Standard chat message format
12
+ * Compatible with OpenAI, Anthropic, and other providers
13
+ */
14
+ export interface LLMMessage {
15
+ role: 'system' | 'user' | 'assistant'
16
+ content: string
17
+ }
18
+
19
+ // ============================================================================
20
+ // Generic Request/Response
21
+ // ============================================================================
22
+
23
+ /**
24
+ * Generic LLM generation request
25
+ * Usable by agents, workflows, tools, etc.
26
+ */
27
+ export interface LLMGenerateRequest {
28
+ // Prompt (required)
29
+ messages: LLMMessage[]
30
+
31
+ // Output structure (required)
32
+ responseSchema: unknown // JSON Schema for structured output
33
+
34
+ // Constraints (optional)
35
+ /** Maximum output tokens per LLM call. NOT the model's context window — see ModelInfo.maxTokens for that. */
36
+ maxOutputTokens?: number
37
+ temperature?: number
38
+ topP?: number
39
+
40
+ // Cancellation (optional)
41
+ signal?: AbortSignal // Execution-level abort signal, composed with per-call timeout in base adapters
42
+ }
43
+
44
+ /**
45
+ * Generic LLM generation response
46
+ * Usage field is internal-only (stripped by UniversalLLMAdapter wrapper)
47
+ */
48
+ export interface LLMGenerateResponse<T = unknown> {
49
+ output: T // Parsed structured output (validated against responseSchema)
50
+
51
+ // Internal use only (for observability tracking)
52
+ // Not exposed in public interface - wrapper extracts this
53
+ usage?: {
54
+ inputTokens: number
55
+ outputTokens: number
56
+ totalTokens: number
57
+ }
58
+
59
+ // Actual cost from provider in USD (when available)
60
+ // Currently only OpenRouter provides this via usage accounting
61
+ cost?: number
62
+ }
63
+
64
+ // ============================================================================
65
+ // LLM Adapter Interface
66
+ // ============================================================================
67
+
68
+ /**
69
+ * LLM Adapter interface
70
+ * Generic primitive for all resource types (agents, workflows, tools)
71
+ *
72
+ * Design principles:
73
+ * - Single method: generate() - the core LLM primitive
74
+ * - Generic return type for type safety
75
+ * - Universal format (not agent-specific)
76
+ * - Standard message-based input (OpenAI-compatible)
77
+ */
78
+ export interface LLMAdapter {
79
+ /**
80
+ * Generate structured output from prompt using LLM
81
+ *
82
+ * @param request - Generation request with messages and response schema
83
+ * @returns Generated output (typed) with optional usage metadata
84
+ */
85
+ generate<T = unknown>(request: LLMGenerateRequest): Promise<LLMGenerateResponse<T>>
86
+ }
@@ -1,6 +1,6 @@
1
- /**
2
- * Test utilities for Execution Engine
3
- * Centralized exports for test helpers and mocks
4
- */
5
-
6
- export { createMockExecutionContext, createMockTool } from './mocks'
1
+ /**
2
+ * Test utilities for Execution Engine
3
+ * Centralized exports for test helpers and mocks
4
+ */
5
+
6
+ export { createMockExecutionContext, createMockTool } from './mocks'
@@ -1,56 +1,56 @@
1
- /**
2
- * Centralized test utilities for Execution Engine tests
3
- * Provides mock creators for ExecutionContext and Tools
4
- */
5
-
6
- import { vi } from 'vitest'
7
- import type { Tool, ToolExecutionOptions } from '../tools/types'
8
- import type { ExecutionContext } from '../base/types'
9
- import { z } from 'zod'
10
-
11
- /**
12
- * Create mock ExecutionContext for testing
13
- * Provides minimal required fields with sensible defaults
14
- *
15
- * @param overrides - Partial context to override defaults
16
- * @returns Complete ExecutionContext with all required fields
17
- */
18
- export function createMockExecutionContext(overrides?: Partial<ExecutionContext>): ExecutionContext {
19
- return {
20
- executionId: 'test-exec-123',
21
- organizationId: 'test-org-123',
22
- organizationName: 'test-org',
23
- userId: 'test-user-123',
24
- resourceId: 'test-resource-123',
25
- executionDepth: 0,
26
- store: new Map(),
27
- logger: {
28
- info: vi.fn(),
29
- error: vi.fn(),
30
- warn: vi.fn(),
31
- debug: vi.fn()
32
- },
33
- ...overrides
34
- }
35
- }
36
-
37
- /**
38
- * Create mock tool for testing
39
- * Uses new ToolExecutionOptions signature
40
- *
41
- * @param name - Tool name
42
- * @param overrides - Partial tool definition to override
43
- * @returns Tool with mocked execute function
44
- */
45
- export function createMockTool(name: string, overrides?: Partial<Tool>): Tool {
46
- return {
47
- name,
48
- description: `Mock tool: ${name}`,
49
- inputSchema: z.object({ input: z.string() }),
50
- outputSchema: z.object({ output: z.string() }),
51
- execute: vi.fn(async (options: ToolExecutionOptions) => ({
52
- output: `Result: ${(options.input as { input: string }).input}`
53
- })),
54
- ...overrides
55
- }
56
- }
1
+ /**
2
+ * Centralized test utilities for Execution Engine tests
3
+ * Provides mock creators for ExecutionContext and Tools
4
+ */
5
+
6
+ import { vi } from 'vitest'
7
+ import type { Tool, ToolExecutionOptions } from '../tools/types'
8
+ import type { ExecutionContext } from '../base/types'
9
+ import { z } from 'zod'
10
+
11
+ /**
12
+ * Create mock ExecutionContext for testing
13
+ * Provides minimal required fields with sensible defaults
14
+ *
15
+ * @param overrides - Partial context to override defaults
16
+ * @returns Complete ExecutionContext with all required fields
17
+ */
18
+ export function createMockExecutionContext(overrides?: Partial<ExecutionContext>): ExecutionContext {
19
+ return {
20
+ executionId: 'test-exec-123',
21
+ organizationId: 'test-org-123',
22
+ organizationName: 'test-org',
23
+ userId: 'test-user-123',
24
+ resourceId: 'test-resource-123',
25
+ executionDepth: 0,
26
+ store: new Map(),
27
+ logger: {
28
+ info: vi.fn(),
29
+ error: vi.fn(),
30
+ warn: vi.fn(),
31
+ debug: vi.fn()
32
+ },
33
+ ...overrides
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Create mock tool for testing
39
+ * Uses new ToolExecutionOptions signature
40
+ *
41
+ * @param name - Tool name
42
+ * @param overrides - Partial tool definition to override
43
+ * @returns Tool with mocked execute function
44
+ */
45
+ export function createMockTool(name: string, overrides?: Partial<Tool>): Tool {
46
+ return {
47
+ name,
48
+ description: `Mock tool: ${name}`,
49
+ inputSchema: z.object({ input: z.string() }),
50
+ outputSchema: z.object({ output: z.string() }),
51
+ execute: vi.fn(async (options: ToolExecutionOptions) => ({
52
+ output: `Result: ${(options.input as { input: string }).input}`
53
+ })),
54
+ ...overrides
55
+ }
56
+ }
@@ -1,50 +1,50 @@
1
- import type { ExecutionContext } from '../../base/types'
2
-
3
- /**
4
- * Base integration adapter interface
5
- * All integration adapters must implement this interface
6
- *
7
- * Integration adapters provide a standardized way to call external REST APIs
8
- * with proper credential validation and error handling.
9
- *
10
- * @example
11
- * ```typescript
12
- * class GmailAdapter implements BaseIntegrationAdapter {
13
- * readonly name = 'gmail'
14
- *
15
- * async call(method: string, params: unknown, credentials: Record<string, unknown>, context?: ExecutionContext) {
16
- * // Implementation
17
- * }
18
- *
19
- * validateCredentials(credentials: Record<string, unknown>): boolean {
20
- * // Validation logic
21
- * }
22
- * }
23
- * ```
24
- */
25
- export interface BaseIntegrationAdapter {
26
- /** Integration name (e.g., 'gmail', 'slack') */
27
- readonly name: string
28
-
29
- /**
30
- * Call integration method
31
- * @param method - Method name (e.g., 'sendEmail', 'postMessage')
32
- * @param params - Method parameters
33
- * @param credentials - Organization credentials for this integration
34
- * @param context - Execution context for logging and tracing
35
- * @returns Method result
36
- */
37
- call(
38
- method: string,
39
- params: unknown,
40
- credentials: Record<string, unknown>,
41
- context?: ExecutionContext
42
- ): Promise<unknown>
43
-
44
- /**
45
- * Validate credentials for this integration
46
- * @param credentials - Credentials to validate
47
- * @returns true if valid, false otherwise
48
- */
49
- validateCredentials(credentials: Record<string, unknown>): boolean
50
- }
1
+ import type { ExecutionContext } from '../../base/types'
2
+
3
+ /**
4
+ * Base integration adapter interface
5
+ * All integration adapters must implement this interface
6
+ *
7
+ * Integration adapters provide a standardized way to call external REST APIs
8
+ * with proper credential validation and error handling.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * class GmailAdapter implements BaseIntegrationAdapter {
13
+ * readonly name = 'gmail'
14
+ *
15
+ * async call(method: string, params: unknown, credentials: Record<string, unknown>, context?: ExecutionContext) {
16
+ * // Implementation
17
+ * }
18
+ *
19
+ * validateCredentials(credentials: Record<string, unknown>): boolean {
20
+ * // Validation logic
21
+ * }
22
+ * }
23
+ * ```
24
+ */
25
+ export interface BaseIntegrationAdapter {
26
+ /** Integration name (e.g., 'gmail', 'slack') */
27
+ readonly name: string
28
+
29
+ /**
30
+ * Call integration method
31
+ * @param method - Method name (e.g., 'sendEmail', 'postMessage')
32
+ * @param params - Method parameters
33
+ * @param credentials - Organization credentials for this integration
34
+ * @param context - Execution context for logging and tracing
35
+ * @returns Method result
36
+ */
37
+ call(
38
+ method: string,
39
+ params: unknown,
40
+ credentials: Record<string, unknown>,
41
+ context?: ExecutionContext
42
+ ): Promise<unknown>
43
+
44
+ /**
45
+ * Validate credentials for this integration
46
+ * @param credentials - Credentials to validate
47
+ * @returns true if valid, false otherwise
48
+ */
49
+ validateCredentials(credentials: Record<string, unknown>): boolean
50
+ }