@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,467 +1,467 @@
1
- /**
2
- * Agent-specific logging types
3
- * Simplified 2-event model: lifecycle, iteration
4
- *
5
- * Design Philosophy:
6
- * - LIFECYCLE EVENTS: Structural checkpoints (initialization, iteration, completion)
7
- * - ITERATION EVENTS: Execution activities (reasoning, actions during iterations)
8
- */
9
-
10
- import type { ExecutionLogLevel } from '../../base/logging'
11
-
12
- // ============================================================================
13
- // FORMAL TYPES
14
- // ============================================================================
15
-
16
- /**
17
- * Agent lifecycle stages
18
- * Universal checkpoints that apply to all agent executions
19
- */
20
- export type AgentLifecycle = 'initialization' | 'iteration' | 'completion'
21
-
22
- /**
23
- * Lifecycle stage status
24
- * Tracks progress through each lifecycle stage
25
- */
26
- export type LifecycleStage = 'started' | 'completed' | 'failed'
27
-
28
- /**
29
- * Iteration event types
30
- * Activities that occur during agent iterations
31
- */
32
- export type IterationEventType = 'reasoning' | 'action' | 'tool-call'
33
-
34
- // ============================================================================
35
- // LIFECYCLE EVENTS (Structural Checkpoints)
36
- // ============================================================================
37
-
38
- /**
39
- * Base fields shared by all lifecycle events
40
- */
41
- interface AgentLifecycleEventBase {
42
- type: 'agent'
43
- agentId: string
44
- lifecycle: AgentLifecycle
45
- sessionId?: string // Optional: only present when agent runs in session context
46
- }
47
-
48
- /**
49
- * Lifecycle started event - emitted when a phase begins
50
- * REQUIRED: startTime (phase has started, no end yet)
51
- */
52
- export interface AgentLifecycleStartedEvent extends AgentLifecycleEventBase {
53
- stage: 'started'
54
- startTime: number // REQUIRED: Phase start timestamp
55
- iteration?: number // Only for 'iteration' lifecycle
56
- }
57
-
58
- /**
59
- * Lifecycle completed event - emitted when a phase succeeds
60
- * REQUIRED: startTime, endTime, duration (phase has finished successfully)
61
- */
62
- export interface AgentLifecycleCompletedEvent extends AgentLifecycleEventBase {
63
- stage: 'completed'
64
- startTime: number // REQUIRED: Phase start timestamp
65
- endTime: number // REQUIRED: Phase end timestamp
66
- duration: number // REQUIRED: Calculated duration (endTime - startTime)
67
- iteration?: number // Only for 'iteration' lifecycle
68
-
69
- // Optional fields specific to certain lifecycles
70
- attempts?: number // Only for 'completion' lifecycle (tracks output generation attempts: 1 or 2)
71
- memorySize?: {
72
- sessionMemoryKeys: number
73
- historyEntries: number
74
- } // Only for 'completion' lifecycle (memory snapshot metadata)
75
- }
76
-
77
- /**
78
- * Lifecycle failed event - emitted when a phase fails
79
- * REQUIRED: startTime, endTime, duration, error (phase has finished with error)
80
- */
81
- export interface AgentLifecycleFailedEvent extends AgentLifecycleEventBase {
82
- stage: 'failed'
83
- startTime: number // REQUIRED: Phase start timestamp
84
- endTime: number // REQUIRED: Phase end timestamp
85
- duration: number // REQUIRED: Calculated duration (endTime - startTime)
86
- error: string // REQUIRED: Error message
87
- iteration?: number // Only for 'iteration' lifecycle
88
- }
89
-
90
- /**
91
- * Union type for all lifecycle events
92
- * Discriminated by 'stage' field for type narrowing
93
- */
94
- export type AgentLifecycleEvent = AgentLifecycleStartedEvent | AgentLifecycleCompletedEvent | AgentLifecycleFailedEvent
95
-
96
- // ============================================================================
97
- // ITERATION EVENTS (Execution Activities)
98
- // ============================================================================
99
-
100
- /**
101
- * Placeholder data for MVP
102
- * Will be typed per actionType in future
103
- */
104
- export interface ActionPlaceholderData {
105
- message: string
106
- }
107
-
108
- /**
109
- * Iteration event - captures activities during agent iterations
110
- * Consolidates reasoning (LLM thought process) and actions (tool use, memory ops, etc.)
111
- */
112
- export interface AgentIterationEvent {
113
- type: 'agent'
114
- agentId: string
115
- lifecycle: 'iteration' // Always iteration
116
- eventType: IterationEventType
117
- iteration: number
118
- sessionId?: string // Optional: only present when agent runs in session context
119
-
120
- // Timeline timing fields (v2 - Clean Break)
121
- startTime: number // Activity start timestamp
122
- endTime: number // Activity end timestamp
123
- duration: number // Calculated duration (endTime - startTime)
124
-
125
- // Conditional fields based on eventType
126
- output?: string // For reasoning events
127
- actionType?: string // For action events (tool-use, delegate, memory-write, etc.)
128
- data?: ActionPlaceholderData // For action events
129
- }
130
-
131
- /**
132
- * Tool call event - captures individual tool executions during iterations
133
- * Provides granular timing for each tool invocation
134
- */
135
- export interface AgentToolCallEvent {
136
- type: 'agent'
137
- agentId: string
138
- lifecycle: 'iteration' // Always iteration
139
- eventType: 'tool-call' // Specific event type for tool calls
140
- iteration: number
141
- sessionId?: string // Optional: only present when agent runs in session context
142
-
143
- // Tool identification and timing
144
- toolName: string // Tool identifier
145
- startTime: number // Tool call start timestamp
146
- endTime: number // Tool call end timestamp
147
- duration: number // Calculated duration
148
-
149
- // Execution results
150
- success: boolean // Whether tool execution succeeded
151
- error?: string // Error message if failed
152
- input?: Record<string, unknown> // Tool input parameters
153
- output?: unknown // Tool output result
154
- }
155
-
156
- // ============================================================================
157
- // UNION TYPES
158
- // ============================================================================
159
-
160
- /**
161
- * Union type for all agent log contexts
162
- * 3 event types total (lifecycle, iteration, tool-call)
163
- */
164
- export type AgentLogContext = AgentLifecycleEvent | AgentIterationEvent | AgentToolCallEvent
165
-
166
- /**
167
- * Agent execution log message (UI-specific interface)
168
- */
169
- export interface AgentLogMessage {
170
- level: ExecutionLogLevel
171
- message: string
172
- timestamp: number
173
- context?: AgentLogContext
174
- }
175
-
176
- // ============================================================================
177
- // TYPE GUARDS - Primary (2 total)
178
- // ============================================================================
179
-
180
- /**
181
- * Check if context is a lifecycle event
182
- */
183
- export function isLifecycleEvent(ctx: AgentLogContext): ctx is AgentLifecycleEvent {
184
- return 'stage' in ctx && ctx.stage !== undefined
185
- }
186
-
187
- /**
188
- * Check if context is an iteration event
189
- */
190
- export function isIterationEvent(ctx: AgentLogContext): ctx is AgentIterationEvent {
191
- return 'eventType' in ctx && ctx.eventType !== undefined
192
- }
193
-
194
- // ============================================================================
195
- // TYPE GUARDS - Helpers (optional convenience)
196
- // ============================================================================
197
-
198
- /**
199
- * Check if lifecycle event is initialization
200
- */
201
- export function isInitialization(evt: AgentLifecycleEvent): boolean {
202
- return evt.lifecycle === 'initialization'
203
- }
204
-
205
- /**
206
- * Check if lifecycle event is iteration
207
- */
208
- export function isIteration(evt: AgentLifecycleEvent): boolean {
209
- return evt.lifecycle === 'iteration'
210
- }
211
-
212
- /**
213
- * Check if lifecycle event is completion
214
- */
215
- export function isCompletion(evt: AgentLifecycleEvent): boolean {
216
- return evt.lifecycle === 'completion'
217
- }
218
-
219
- /**
220
- * Check if iteration event is reasoning
221
- */
222
- export function isReasoningEvent(evt: AgentIterationEvent): boolean {
223
- return evt.eventType === 'reasoning'
224
- }
225
-
226
- /**
227
- * Check if iteration event is action
228
- */
229
- export function isActionEvent(evt: AgentIterationEvent): boolean {
230
- return evt.eventType === 'action'
231
- }
232
-
233
- /**
234
- * Check if context is a tool call event
235
- */
236
- export function isToolCallEvent(ctx: AgentLogContext): ctx is AgentToolCallEvent {
237
- return 'eventType' in ctx && ctx.eventType === 'tool-call'
238
- }
239
-
240
- /**
241
- * Check if action is tool-use
242
- */
243
- export function isToolUseAction(evt: AgentIterationEvent): boolean {
244
- return evt.eventType === 'action' && evt.actionType === 'tool-use'
245
- }
246
-
247
- /**
248
- * Check if context has iteration information
249
- */
250
- export function isIterationContext(ctx: AgentLogContext): boolean {
251
- return 'iteration' in ctx && typeof ctx.iteration === 'number'
252
- }
253
-
254
- // ============================================================================
255
- // LOGGING UTILITIES
256
- // ============================================================================
257
-
258
- import type { IExecutionLogger } from '../../base/logging'
259
-
260
- /**
261
- * Data for lifecycle 'started' events
262
- */
263
- export interface AgentLifecycleStartedData {
264
- startTime: number
265
- iteration?: number
266
- }
267
-
268
- /**
269
- * Data for lifecycle 'completed' events
270
- */
271
- export interface AgentLifecycleCompletedData {
272
- startTime: number
273
- endTime: number
274
- duration: number
275
- iteration?: number
276
- attempts?: number
277
- memorySize?: {
278
- sessionMemoryKeys: number
279
- historyEntries: number
280
- }
281
- }
282
-
283
- /**
284
- * Data for lifecycle 'failed' events
285
- */
286
- export interface AgentLifecycleFailedData {
287
- startTime: number
288
- endTime: number
289
- duration: number
290
- error: string
291
- iteration?: number
292
- }
293
-
294
- /**
295
- * Scoped logger for agent execution
296
- * Captures logger and agentId to eliminate repetitive parameter passing
297
- *
298
- * Type-safe lifecycle logging with stage-specific required fields
299
- */
300
- export interface AgentScopedLogger {
301
- lifecycle(lifecycle: AgentLifecycle, stage: 'started', data: AgentLifecycleStartedData): void
302
- lifecycle(lifecycle: AgentLifecycle, stage: 'completed', data: AgentLifecycleCompletedData): void
303
- lifecycle(lifecycle: AgentLifecycle, stage: 'failed', data: AgentLifecycleFailedData): void
304
- reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void
305
- action(
306
- actionType: string,
307
- message: string,
308
- iteration: number,
309
- startTime: number,
310
- endTime: number,
311
- duration: number
312
- ): void
313
- toolCall(
314
- toolName: string,
315
- iteration: number,
316
- startTime: number,
317
- endTime: number,
318
- duration: number,
319
- success: boolean,
320
- error?: string,
321
- input?: unknown,
322
- output?: unknown
323
- ): void
324
- }
325
-
326
- /**
327
- * Create a scoped logger bound to specific agent and logger instance
328
- * This eliminates the need to pass logger and agentId to every logging call
329
- *
330
- * @param logger - Execution logger instance
331
- * @param agentId - Agent identifier
332
- * @param sessionId - Optional session identifier (when agent runs in session context)
333
- * @returns Scoped logger with simplified API
334
- */
335
- export function createAgentLogger(logger: IExecutionLogger, agentId: string, sessionId?: string): AgentScopedLogger {
336
- return {
337
- lifecycle(
338
- lifecycle: AgentLifecycle,
339
- stage: LifecycleStage,
340
- data: AgentLifecycleStartedData | AgentLifecycleCompletedData | AgentLifecycleFailedData
341
- ): void {
342
- // Build stage-specific event using discriminated union
343
- let event: AgentLifecycleEvent
344
-
345
- if (stage === 'started') {
346
- const startedData = data as AgentLifecycleStartedData
347
- event = {
348
- type: 'agent',
349
- agentId,
350
- lifecycle,
351
- stage: 'started',
352
- startTime: startedData.startTime,
353
- ...(sessionId && { sessionId }),
354
- ...(startedData.iteration !== undefined && { iteration: startedData.iteration })
355
- }
356
- } else if (stage === 'completed') {
357
- const completedData = data as AgentLifecycleCompletedData
358
- event = {
359
- type: 'agent',
360
- agentId,
361
- lifecycle,
362
- stage: 'completed',
363
- startTime: completedData.startTime,
364
- endTime: completedData.endTime,
365
- duration: completedData.duration,
366
- ...(sessionId && { sessionId }),
367
- ...(completedData.iteration !== undefined && { iteration: completedData.iteration }),
368
- ...(completedData.attempts !== undefined && { attempts: completedData.attempts }),
369
- ...(completedData.memorySize && { memorySize: completedData.memorySize })
370
- }
371
- } else {
372
- // stage === 'failed'
373
- const failedData = data as AgentLifecycleFailedData
374
- event = {
375
- type: 'agent',
376
- agentId,
377
- lifecycle,
378
- stage: 'failed',
379
- startTime: failedData.startTime,
380
- endTime: failedData.endTime,
381
- duration: failedData.duration,
382
- error: failedData.error,
383
- ...(sessionId && { sessionId }),
384
- ...(failedData.iteration !== undefined && { iteration: failedData.iteration })
385
- }
386
- }
387
-
388
- const level = stage === 'failed' ? 'error' : 'info'
389
- const iterationText = 'iteration' in event && event.iteration ? ` (iteration ${event.iteration})` : ''
390
- const message = `${lifecycle} ${stage}${iterationText}`
391
- logger[level](message, event)
392
- },
393
-
394
- reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void {
395
- const event: AgentIterationEvent = {
396
- type: 'agent',
397
- agentId,
398
- lifecycle: 'iteration',
399
- eventType: 'reasoning',
400
- iteration,
401
- output,
402
- startTime,
403
- endTime,
404
- duration,
405
- ...(sessionId && { sessionId }) // Include sessionId if present
406
- }
407
- logger.info('reasoning', event)
408
- },
409
-
410
- action(
411
- actionType: string,
412
- message: string,
413
- iteration: number,
414
- startTime: number,
415
- endTime: number,
416
- duration: number
417
- ): void {
418
- const event: AgentIterationEvent = {
419
- type: 'agent',
420
- agentId,
421
- lifecycle: 'iteration',
422
- eventType: 'action',
423
- iteration,
424
- actionType,
425
- startTime,
426
- endTime,
427
- duration,
428
- data: { message },
429
- ...(sessionId && { sessionId }) // Include sessionId if present
430
- }
431
- logger.info('action', event)
432
- },
433
-
434
- toolCall(
435
- toolName: string,
436
- iteration: number,
437
- startTime: number,
438
- endTime: number,
439
- duration: number,
440
- success: boolean,
441
- error?: string,
442
- input?: unknown,
443
- output?: unknown
444
- ): void {
445
- const event: AgentToolCallEvent = {
446
- type: 'agent',
447
- agentId,
448
- lifecycle: 'iteration',
449
- eventType: 'tool-call',
450
- iteration,
451
- toolName,
452
- startTime,
453
- endTime,
454
- duration,
455
- success,
456
- ...(error && { error }),
457
- ...(input !== undefined &&
458
- input !== null &&
459
- typeof input === 'object' &&
460
- !Array.isArray(input) && { input: input as Record<string, unknown> }),
461
- ...(output !== undefined && { output }),
462
- ...(sessionId && { sessionId }) // Include sessionId if present
463
- }
464
- logger.info(`tool-call: ${toolName}`, event)
465
- }
466
- }
467
- }
1
+ /**
2
+ * Agent-specific logging types
3
+ * Simplified 2-event model: lifecycle, iteration
4
+ *
5
+ * Design Philosophy:
6
+ * - LIFECYCLE EVENTS: Structural checkpoints (initialization, iteration, completion)
7
+ * - ITERATION EVENTS: Execution activities (reasoning, actions during iterations)
8
+ */
9
+
10
+ import type { ExecutionLogLevel } from '../../base/logging'
11
+
12
+ // ============================================================================
13
+ // FORMAL TYPES
14
+ // ============================================================================
15
+
16
+ /**
17
+ * Agent lifecycle stages
18
+ * Universal checkpoints that apply to all agent executions
19
+ */
20
+ export type AgentLifecycle = 'initialization' | 'iteration' | 'completion'
21
+
22
+ /**
23
+ * Lifecycle stage status
24
+ * Tracks progress through each lifecycle stage
25
+ */
26
+ export type LifecycleStage = 'started' | 'completed' | 'failed'
27
+
28
+ /**
29
+ * Iteration event types
30
+ * Activities that occur during agent iterations
31
+ */
32
+ export type IterationEventType = 'reasoning' | 'action' | 'tool-call'
33
+
34
+ // ============================================================================
35
+ // LIFECYCLE EVENTS (Structural Checkpoints)
36
+ // ============================================================================
37
+
38
+ /**
39
+ * Base fields shared by all lifecycle events
40
+ */
41
+ interface AgentLifecycleEventBase {
42
+ type: 'agent'
43
+ agentId: string
44
+ lifecycle: AgentLifecycle
45
+ sessionId?: string // Optional: only present when agent runs in session context
46
+ }
47
+
48
+ /**
49
+ * Lifecycle started event - emitted when a phase begins
50
+ * REQUIRED: startTime (phase has started, no end yet)
51
+ */
52
+ export interface AgentLifecycleStartedEvent extends AgentLifecycleEventBase {
53
+ stage: 'started'
54
+ startTime: number // REQUIRED: Phase start timestamp
55
+ iteration?: number // Only for 'iteration' lifecycle
56
+ }
57
+
58
+ /**
59
+ * Lifecycle completed event - emitted when a phase succeeds
60
+ * REQUIRED: startTime, endTime, duration (phase has finished successfully)
61
+ */
62
+ export interface AgentLifecycleCompletedEvent extends AgentLifecycleEventBase {
63
+ stage: 'completed'
64
+ startTime: number // REQUIRED: Phase start timestamp
65
+ endTime: number // REQUIRED: Phase end timestamp
66
+ duration: number // REQUIRED: Calculated duration (endTime - startTime)
67
+ iteration?: number // Only for 'iteration' lifecycle
68
+
69
+ // Optional fields specific to certain lifecycles
70
+ attempts?: number // Only for 'completion' lifecycle (tracks output generation attempts: 1 or 2)
71
+ memorySize?: {
72
+ sessionMemoryKeys: number
73
+ historyEntries: number
74
+ } // Only for 'completion' lifecycle (memory snapshot metadata)
75
+ }
76
+
77
+ /**
78
+ * Lifecycle failed event - emitted when a phase fails
79
+ * REQUIRED: startTime, endTime, duration, error (phase has finished with error)
80
+ */
81
+ export interface AgentLifecycleFailedEvent extends AgentLifecycleEventBase {
82
+ stage: 'failed'
83
+ startTime: number // REQUIRED: Phase start timestamp
84
+ endTime: number // REQUIRED: Phase end timestamp
85
+ duration: number // REQUIRED: Calculated duration (endTime - startTime)
86
+ error: string // REQUIRED: Error message
87
+ iteration?: number // Only for 'iteration' lifecycle
88
+ }
89
+
90
+ /**
91
+ * Union type for all lifecycle events
92
+ * Discriminated by 'stage' field for type narrowing
93
+ */
94
+ export type AgentLifecycleEvent = AgentLifecycleStartedEvent | AgentLifecycleCompletedEvent | AgentLifecycleFailedEvent
95
+
96
+ // ============================================================================
97
+ // ITERATION EVENTS (Execution Activities)
98
+ // ============================================================================
99
+
100
+ /**
101
+ * Placeholder data for MVP
102
+ * Will be typed per actionType in future
103
+ */
104
+ export interface ActionPlaceholderData {
105
+ message: string
106
+ }
107
+
108
+ /**
109
+ * Iteration event - captures activities during agent iterations
110
+ * Consolidates reasoning (LLM thought process) and actions (tool use, memory ops, etc.)
111
+ */
112
+ export interface AgentIterationEvent {
113
+ type: 'agent'
114
+ agentId: string
115
+ lifecycle: 'iteration' // Always iteration
116
+ eventType: IterationEventType
117
+ iteration: number
118
+ sessionId?: string // Optional: only present when agent runs in session context
119
+
120
+ // Timeline timing fields (v2 - Clean Break)
121
+ startTime: number // Activity start timestamp
122
+ endTime: number // Activity end timestamp
123
+ duration: number // Calculated duration (endTime - startTime)
124
+
125
+ // Conditional fields based on eventType
126
+ output?: string // For reasoning events
127
+ actionType?: string // For action events (tool-use, delegate, memory-write, etc.)
128
+ data?: ActionPlaceholderData // For action events
129
+ }
130
+
131
+ /**
132
+ * Tool call event - captures individual tool executions during iterations
133
+ * Provides granular timing for each tool invocation
134
+ */
135
+ export interface AgentToolCallEvent {
136
+ type: 'agent'
137
+ agentId: string
138
+ lifecycle: 'iteration' // Always iteration
139
+ eventType: 'tool-call' // Specific event type for tool calls
140
+ iteration: number
141
+ sessionId?: string // Optional: only present when agent runs in session context
142
+
143
+ // Tool identification and timing
144
+ toolName: string // Tool identifier
145
+ startTime: number // Tool call start timestamp
146
+ endTime: number // Tool call end timestamp
147
+ duration: number // Calculated duration
148
+
149
+ // Execution results
150
+ success: boolean // Whether tool execution succeeded
151
+ error?: string // Error message if failed
152
+ input?: Record<string, unknown> // Tool input parameters
153
+ output?: unknown // Tool output result
154
+ }
155
+
156
+ // ============================================================================
157
+ // UNION TYPES
158
+ // ============================================================================
159
+
160
+ /**
161
+ * Union type for all agent log contexts
162
+ * 3 event types total (lifecycle, iteration, tool-call)
163
+ */
164
+ export type AgentLogContext = AgentLifecycleEvent | AgentIterationEvent | AgentToolCallEvent
165
+
166
+ /**
167
+ * Agent execution log message (UI-specific interface)
168
+ */
169
+ export interface AgentLogMessage {
170
+ level: ExecutionLogLevel
171
+ message: string
172
+ timestamp: number
173
+ context?: AgentLogContext
174
+ }
175
+
176
+ // ============================================================================
177
+ // TYPE GUARDS - Primary (2 total)
178
+ // ============================================================================
179
+
180
+ /**
181
+ * Check if context is a lifecycle event
182
+ */
183
+ export function isLifecycleEvent(ctx: AgentLogContext): ctx is AgentLifecycleEvent {
184
+ return 'stage' in ctx && ctx.stage !== undefined
185
+ }
186
+
187
+ /**
188
+ * Check if context is an iteration event
189
+ */
190
+ export function isIterationEvent(ctx: AgentLogContext): ctx is AgentIterationEvent {
191
+ return 'eventType' in ctx && ctx.eventType !== undefined
192
+ }
193
+
194
+ // ============================================================================
195
+ // TYPE GUARDS - Helpers (optional convenience)
196
+ // ============================================================================
197
+
198
+ /**
199
+ * Check if lifecycle event is initialization
200
+ */
201
+ export function isInitialization(evt: AgentLifecycleEvent): boolean {
202
+ return evt.lifecycle === 'initialization'
203
+ }
204
+
205
+ /**
206
+ * Check if lifecycle event is iteration
207
+ */
208
+ export function isIteration(evt: AgentLifecycleEvent): boolean {
209
+ return evt.lifecycle === 'iteration'
210
+ }
211
+
212
+ /**
213
+ * Check if lifecycle event is completion
214
+ */
215
+ export function isCompletion(evt: AgentLifecycleEvent): boolean {
216
+ return evt.lifecycle === 'completion'
217
+ }
218
+
219
+ /**
220
+ * Check if iteration event is reasoning
221
+ */
222
+ export function isReasoningEvent(evt: AgentIterationEvent): boolean {
223
+ return evt.eventType === 'reasoning'
224
+ }
225
+
226
+ /**
227
+ * Check if iteration event is action
228
+ */
229
+ export function isActionEvent(evt: AgentIterationEvent): boolean {
230
+ return evt.eventType === 'action'
231
+ }
232
+
233
+ /**
234
+ * Check if context is a tool call event
235
+ */
236
+ export function isToolCallEvent(ctx: AgentLogContext): ctx is AgentToolCallEvent {
237
+ return 'eventType' in ctx && ctx.eventType === 'tool-call'
238
+ }
239
+
240
+ /**
241
+ * Check if action is tool-use
242
+ */
243
+ export function isToolUseAction(evt: AgentIterationEvent): boolean {
244
+ return evt.eventType === 'action' && evt.actionType === 'tool-use'
245
+ }
246
+
247
+ /**
248
+ * Check if context has iteration information
249
+ */
250
+ export function isIterationContext(ctx: AgentLogContext): boolean {
251
+ return 'iteration' in ctx && typeof ctx.iteration === 'number'
252
+ }
253
+
254
+ // ============================================================================
255
+ // LOGGING UTILITIES
256
+ // ============================================================================
257
+
258
+ import type { IExecutionLogger } from '../../base/logging'
259
+
260
+ /**
261
+ * Data for lifecycle 'started' events
262
+ */
263
+ export interface AgentLifecycleStartedData {
264
+ startTime: number
265
+ iteration?: number
266
+ }
267
+
268
+ /**
269
+ * Data for lifecycle 'completed' events
270
+ */
271
+ export interface AgentLifecycleCompletedData {
272
+ startTime: number
273
+ endTime: number
274
+ duration: number
275
+ iteration?: number
276
+ attempts?: number
277
+ memorySize?: {
278
+ sessionMemoryKeys: number
279
+ historyEntries: number
280
+ }
281
+ }
282
+
283
+ /**
284
+ * Data for lifecycle 'failed' events
285
+ */
286
+ export interface AgentLifecycleFailedData {
287
+ startTime: number
288
+ endTime: number
289
+ duration: number
290
+ error: string
291
+ iteration?: number
292
+ }
293
+
294
+ /**
295
+ * Scoped logger for agent execution
296
+ * Captures logger and agentId to eliminate repetitive parameter passing
297
+ *
298
+ * Type-safe lifecycle logging with stage-specific required fields
299
+ */
300
+ export interface AgentScopedLogger {
301
+ lifecycle(lifecycle: AgentLifecycle, stage: 'started', data: AgentLifecycleStartedData): void
302
+ lifecycle(lifecycle: AgentLifecycle, stage: 'completed', data: AgentLifecycleCompletedData): void
303
+ lifecycle(lifecycle: AgentLifecycle, stage: 'failed', data: AgentLifecycleFailedData): void
304
+ reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void
305
+ action(
306
+ actionType: string,
307
+ message: string,
308
+ iteration: number,
309
+ startTime: number,
310
+ endTime: number,
311
+ duration: number
312
+ ): void
313
+ toolCall(
314
+ toolName: string,
315
+ iteration: number,
316
+ startTime: number,
317
+ endTime: number,
318
+ duration: number,
319
+ success: boolean,
320
+ error?: string,
321
+ input?: unknown,
322
+ output?: unknown
323
+ ): void
324
+ }
325
+
326
+ /**
327
+ * Create a scoped logger bound to specific agent and logger instance
328
+ * This eliminates the need to pass logger and agentId to every logging call
329
+ *
330
+ * @param logger - Execution logger instance
331
+ * @param agentId - Agent identifier
332
+ * @param sessionId - Optional session identifier (when agent runs in session context)
333
+ * @returns Scoped logger with simplified API
334
+ */
335
+ export function createAgentLogger(logger: IExecutionLogger, agentId: string, sessionId?: string): AgentScopedLogger {
336
+ return {
337
+ lifecycle(
338
+ lifecycle: AgentLifecycle,
339
+ stage: LifecycleStage,
340
+ data: AgentLifecycleStartedData | AgentLifecycleCompletedData | AgentLifecycleFailedData
341
+ ): void {
342
+ // Build stage-specific event using discriminated union
343
+ let event: AgentLifecycleEvent
344
+
345
+ if (stage === 'started') {
346
+ const startedData = data as AgentLifecycleStartedData
347
+ event = {
348
+ type: 'agent',
349
+ agentId,
350
+ lifecycle,
351
+ stage: 'started',
352
+ startTime: startedData.startTime,
353
+ ...(sessionId && { sessionId }),
354
+ ...(startedData.iteration !== undefined && { iteration: startedData.iteration })
355
+ }
356
+ } else if (stage === 'completed') {
357
+ const completedData = data as AgentLifecycleCompletedData
358
+ event = {
359
+ type: 'agent',
360
+ agentId,
361
+ lifecycle,
362
+ stage: 'completed',
363
+ startTime: completedData.startTime,
364
+ endTime: completedData.endTime,
365
+ duration: completedData.duration,
366
+ ...(sessionId && { sessionId }),
367
+ ...(completedData.iteration !== undefined && { iteration: completedData.iteration }),
368
+ ...(completedData.attempts !== undefined && { attempts: completedData.attempts }),
369
+ ...(completedData.memorySize && { memorySize: completedData.memorySize })
370
+ }
371
+ } else {
372
+ // stage === 'failed'
373
+ const failedData = data as AgentLifecycleFailedData
374
+ event = {
375
+ type: 'agent',
376
+ agentId,
377
+ lifecycle,
378
+ stage: 'failed',
379
+ startTime: failedData.startTime,
380
+ endTime: failedData.endTime,
381
+ duration: failedData.duration,
382
+ error: failedData.error,
383
+ ...(sessionId && { sessionId }),
384
+ ...(failedData.iteration !== undefined && { iteration: failedData.iteration })
385
+ }
386
+ }
387
+
388
+ const level = stage === 'failed' ? 'error' : 'info'
389
+ const iterationText = 'iteration' in event && event.iteration ? ` (iteration ${event.iteration})` : ''
390
+ const message = `${lifecycle} ${stage}${iterationText}`
391
+ logger[level](message, event)
392
+ },
393
+
394
+ reasoning(output: string, iteration: number, startTime: number, endTime: number, duration: number): void {
395
+ const event: AgentIterationEvent = {
396
+ type: 'agent',
397
+ agentId,
398
+ lifecycle: 'iteration',
399
+ eventType: 'reasoning',
400
+ iteration,
401
+ output,
402
+ startTime,
403
+ endTime,
404
+ duration,
405
+ ...(sessionId && { sessionId }) // Include sessionId if present
406
+ }
407
+ logger.info('reasoning', event)
408
+ },
409
+
410
+ action(
411
+ actionType: string,
412
+ message: string,
413
+ iteration: number,
414
+ startTime: number,
415
+ endTime: number,
416
+ duration: number
417
+ ): void {
418
+ const event: AgentIterationEvent = {
419
+ type: 'agent',
420
+ agentId,
421
+ lifecycle: 'iteration',
422
+ eventType: 'action',
423
+ iteration,
424
+ actionType,
425
+ startTime,
426
+ endTime,
427
+ duration,
428
+ data: { message },
429
+ ...(sessionId && { sessionId }) // Include sessionId if present
430
+ }
431
+ logger.info('action', event)
432
+ },
433
+
434
+ toolCall(
435
+ toolName: string,
436
+ iteration: number,
437
+ startTime: number,
438
+ endTime: number,
439
+ duration: number,
440
+ success: boolean,
441
+ error?: string,
442
+ input?: unknown,
443
+ output?: unknown
444
+ ): void {
445
+ const event: AgentToolCallEvent = {
446
+ type: 'agent',
447
+ agentId,
448
+ lifecycle: 'iteration',
449
+ eventType: 'tool-call',
450
+ iteration,
451
+ toolName,
452
+ startTime,
453
+ endTime,
454
+ duration,
455
+ success,
456
+ ...(error && { error }),
457
+ ...(input !== undefined &&
458
+ input !== null &&
459
+ typeof input === 'object' &&
460
+ !Array.isArray(input) && { input: input as Record<string, unknown> }),
461
+ ...(output !== undefined && { output }),
462
+ ...(sessionId && { sessionId }) // Include sessionId if present
463
+ }
464
+ logger.info(`tool-call: ${toolName}`, event)
465
+ }
466
+ }
467
+ }