@seeka-labs/cli-apps 3.7.0 → 3.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 (763) hide show
  1. package/README.md +286 -0
  2. package/dist/ai-context/common/README.md +110 -0
  3. package/dist/ai-context/common/architecture/overview.md +140 -0
  4. package/dist/ai-context/common/guides/common-patterns.md +471 -0
  5. package/dist/ai-context/common/guides/data-flow.md +455 -0
  6. package/dist/ai-context/common/guides/getting-started.md +349 -0
  7. package/dist/ai-context/common/guides/testing.md +592 -0
  8. package/dist/ai-context/common/reference/cli-commands.md +231 -0
  9. package/dist/ai-context/common/reference/config-schema.md +345 -0
  10. package/dist/ai-context/common/reference/sdk-api.md +445 -0
  11. package/dist/ai-context/internal/architecture/v1-structure.md +192 -0
  12. package/dist/ai-context/internal/architecture/v2-structure.md +261 -0
  13. package/dist/ai-context/internal/architecture/v3-structure.md +386 -0
  14. package/dist/ai-context/internal/examples/_index.md +240 -0
  15. package/dist/ai-context/internal/examples/v1/_index.md +53 -0
  16. package/dist/ai-context/internal/examples/v1/activecampaign/.eslintrc.cjs +10 -0
  17. package/dist/ai-context/internal/examples/v1/activecampaign/README.md +88 -0
  18. package/dist/ai-context/internal/examples/v1/activecampaign/_ai-summary.md +43 -0
  19. package/dist/ai-context/internal/examples/v1/activecampaign/host.json +20 -0
  20. package/dist/ai-context/internal/examples/v1/activecampaign/package.json +43 -0
  21. package/dist/ai-context/internal/examples/v1/activecampaign/src/functions/healthCheck.ts +14 -0
  22. package/dist/ai-context/internal/examples/v1/activecampaign/src/functions/seekaAppWebhook.ts +284 -0
  23. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/active-campaign/api/index.ts +41 -0
  24. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/active-campaign/contacts/index.ts +56 -0
  25. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/active-campaign/custom-fields/index.ts +8 -0
  26. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/active-campaign/pipelines/deals/index.ts +96 -0
  27. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/active-campaign/pipelines/index.ts +206 -0
  28. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/logging/index.ts +77 -0
  29. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/services/index.ts +41 -0
  30. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/state/redis/index.ts +64 -0
  31. package/dist/ai-context/internal/examples/v1/activecampaign/src/lib/state/seeka/installations.ts +96 -0
  32. package/dist/ai-context/internal/examples/v1/activecampaign/tsconfig.json +22 -0
  33. package/dist/ai-context/internal/examples/v1/complianz/.eslintrc.cjs +19 -0
  34. package/dist/ai-context/internal/examples/v1/complianz/README.md +105 -0
  35. package/dist/ai-context/internal/examples/v1/complianz/_ai-summary.md +34 -0
  36. package/dist/ai-context/internal/examples/v1/complianz/host.json +20 -0
  37. package/dist/ai-context/internal/examples/v1/complianz/jest.config.js +5 -0
  38. package/dist/ai-context/internal/examples/v1/complianz/package.json +48 -0
  39. package/dist/ai-context/internal/examples/v1/complianz/src/browser/.eslintrc.cjs +1 -0
  40. package/dist/ai-context/internal/examples/v1/complianz/src/browser/.yarnrc +1 -0
  41. package/dist/ai-context/internal/examples/v1/complianz/src/browser/package.json +37 -0
  42. package/dist/ai-context/internal/examples/v1/complianz/src/functions/healthCheck.ts +14 -0
  43. package/dist/ai-context/internal/examples/v1/complianz/src/functions/seekaAppWebhook.ts +190 -0
  44. package/dist/ai-context/internal/examples/v1/complianz/src/index.test.ts +7 -0
  45. package/dist/ai-context/internal/examples/v1/complianz/src/lib/browser/index.ts +53 -0
  46. package/dist/ai-context/internal/examples/v1/complianz/src/lib/browser/models/index.ts +5 -0
  47. package/dist/ai-context/internal/examples/v1/complianz/src/lib/logging/index.ts +77 -0
  48. package/dist/ai-context/internal/examples/v1/complianz/src/lib/services/index.ts +41 -0
  49. package/dist/ai-context/internal/examples/v1/complianz/src/lib/state/redis/index.ts +65 -0
  50. package/dist/ai-context/internal/examples/v1/complianz/src/lib/state/seeka/installations.ts +62 -0
  51. package/dist/ai-context/internal/examples/v1/complianz/tsconfig.json +18 -0
  52. package/dist/ai-context/internal/examples/v1/ivvy/.eslintrc.cjs +10 -0
  53. package/dist/ai-context/internal/examples/v1/ivvy/README.md +70 -0
  54. package/dist/ai-context/internal/examples/v1/ivvy/_ai-summary.md +32 -0
  55. package/dist/ai-context/internal/examples/v1/ivvy/package.json +58 -0
  56. package/dist/ai-context/internal/examples/v1/ivvy/src/app/index.ts +31 -0
  57. package/dist/ai-context/internal/examples/v1/ivvy/src/index.ts +32 -0
  58. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/models/booking.ts +114 -0
  59. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/models/common.ts +49 -0
  60. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/models/invoice.ts +75 -0
  61. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/models/webhooks.ts +33 -0
  62. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/requests.ts +106 -0
  63. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/api/webhooks.ts +117 -0
  64. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/ivvy/services/index.ts +127 -0
  65. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/logging/index.ts +105 -0
  66. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/polyfills/fetch.ts +21 -0
  67. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/services/index.ts +40 -0
  68. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/state/redis/index.ts +63 -0
  69. package/dist/ai-context/internal/examples/v1/ivvy/src/lib/state/seeka/installations.ts +61 -0
  70. package/dist/ai-context/internal/examples/v1/ivvy/src/routes/ivvyWebhook.ts +67 -0
  71. package/dist/ai-context/internal/examples/v1/ivvy/src/routes/seekaAppWebhook.ts +141 -0
  72. package/dist/ai-context/internal/examples/v1/ivvy/tsconfig.json +33 -0
  73. package/dist/ai-context/internal/examples/v1/me-and-u-connect/.eslintrc.cjs +11 -0
  74. package/dist/ai-context/internal/examples/v1/me-and-u-connect/README.md +66 -0
  75. package/dist/ai-context/internal/examples/v1/me-and-u-connect/_ai-summary.md +29 -0
  76. package/dist/ai-context/internal/examples/v1/me-and-u-connect/host.json +20 -0
  77. package/dist/ai-context/internal/examples/v1/me-and-u-connect/package.json +47 -0
  78. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/functions/healthCheck.ts +14 -0
  79. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/functions/meanduContactPolling.ts +38 -0
  80. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/functions/meanduContactSync.ts +69 -0
  81. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/functions/seekaAppWebhook.ts +162 -0
  82. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/jobs/index.ts +96 -0
  83. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/logging/index.ts +91 -0
  84. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/meandu/api/index.ts +46 -0
  85. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/meandu/auth/index.ts +32 -0
  86. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/meandu/contacts/index.ts +149 -0
  87. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/meandu/fields/index.ts +105 -0
  88. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/meandu/jobs/contact-sync/index.ts +143 -0
  89. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/services/index.ts +40 -0
  90. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/state/redis/index.ts +64 -0
  91. package/dist/ai-context/internal/examples/v1/me-and-u-connect/src/lib/state/seeka/installations.ts +61 -0
  92. package/dist/ai-context/internal/examples/v1/me-and-u-connect/tsconfig.json +22 -0
  93. package/dist/ai-context/internal/examples/v1/me-and-u-manage/.eslintrc.cjs +11 -0
  94. package/dist/ai-context/internal/examples/v1/me-and-u-manage/.nvmrc +1 -0
  95. package/dist/ai-context/internal/examples/v1/me-and-u-manage/README.md +134 -0
  96. package/dist/ai-context/internal/examples/v1/me-and-u-manage/_ai-summary.md +47 -0
  97. package/dist/ai-context/internal/examples/v1/me-and-u-manage/host.json +20 -0
  98. package/dist/ai-context/internal/examples/v1/me-and-u-manage/package.json +46 -0
  99. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/functions/healthCheck.ts +14 -0
  100. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/functions/pollForNewMeAndUData.ts +47 -0
  101. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/functions/processNewMeAndUMarketingOptIns.ts +69 -0
  102. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/functions/processNewMeAndUOrders.ts +69 -0
  103. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/functions/seekaAppWebhook.ts +216 -0
  104. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/jobs/index.ts +97 -0
  105. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/logging/index.ts +93 -0
  106. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/me-and-u/consent/index.ts +196 -0
  107. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/me-and-u/index.ts +96 -0
  108. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/me-and-u/menus/index.ts +125 -0
  109. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/me-and-u/orders/index.ts +264 -0
  110. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/services/index.ts +41 -0
  111. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/state/redis/index.ts +65 -0
  112. package/dist/ai-context/internal/examples/v1/me-and-u-manage/src/lib/state/seeka/installations.ts +78 -0
  113. package/dist/ai-context/internal/examples/v1/me-and-u-manage/tsconfig.json +22 -0
  114. package/dist/ai-context/internal/examples/v1/nowbookit/.eslintrc.cjs +10 -0
  115. package/dist/ai-context/internal/examples/v1/nowbookit/README.md +82 -0
  116. package/dist/ai-context/internal/examples/v1/nowbookit/_ai-summary.md +41 -0
  117. package/dist/ai-context/internal/examples/v1/nowbookit/host.json +20 -0
  118. package/dist/ai-context/internal/examples/v1/nowbookit/package.json +44 -0
  119. package/dist/ai-context/internal/examples/v1/nowbookit/src/functions/pollingExample.ts +37 -0
  120. package/dist/ai-context/internal/examples/v1/nowbookit/src/functions/queueExample.ts +31 -0
  121. package/dist/ai-context/internal/examples/v1/nowbookit/src/functions/seekaAppWebhook.ts +193 -0
  122. package/dist/ai-context/internal/examples/v1/nowbookit/src/lib/jobs/index.ts +51 -0
  123. package/dist/ai-context/internal/examples/v1/nowbookit/src/lib/logging/index.ts +90 -0
  124. package/dist/ai-context/internal/examples/v1/nowbookit/src/lib/services/index.ts +40 -0
  125. package/dist/ai-context/internal/examples/v1/nowbookit/src/lib/state/redis/index.ts +64 -0
  126. package/dist/ai-context/internal/examples/v1/nowbookit/src/lib/state/seeka/installations.ts +61 -0
  127. package/dist/ai-context/internal/examples/v1/nowbookit/tsconfig.json +22 -0
  128. package/dist/ai-context/internal/examples/v1/sevenrooms/.eslintrc.cjs +11 -0
  129. package/dist/ai-context/internal/examples/v1/sevenrooms/.nvmrc +1 -0
  130. package/dist/ai-context/internal/examples/v1/sevenrooms/.yarnrc.yml +1 -0
  131. package/dist/ai-context/internal/examples/v1/sevenrooms/README.md +131 -0
  132. package/dist/ai-context/internal/examples/v1/sevenrooms/_ai-summary.md +41 -0
  133. package/dist/ai-context/internal/examples/v1/sevenrooms/host.json +20 -0
  134. package/dist/ai-context/internal/examples/v1/sevenrooms/package.json +47 -0
  135. package/dist/ai-context/internal/examples/v1/sevenrooms/src/browser/.eslintrc.cjs +1 -0
  136. package/dist/ai-context/internal/examples/v1/sevenrooms/src/browser/.yarnrc +1 -0
  137. package/dist/ai-context/internal/examples/v1/sevenrooms/src/browser/package.json +31 -0
  138. package/dist/ai-context/internal/examples/v1/sevenrooms/src/functions/handleSevenRoomsWebhookQueueItem.ts +71 -0
  139. package/dist/ai-context/internal/examples/v1/sevenrooms/src/functions/healthCheck.ts +14 -0
  140. package/dist/ai-context/internal/examples/v1/sevenrooms/src/functions/seekaAppWebhook.ts +255 -0
  141. package/dist/ai-context/internal/examples/v1/sevenrooms/src/functions/sevenRoomsWebhook.ts +202 -0
  142. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/browser/index.ts +68 -0
  143. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/jobs/index.ts +69 -0
  144. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/logging/index.ts +106 -0
  145. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/models/index.ts +17 -0
  146. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/services/index.ts +41 -0
  147. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/auth/index.ts +70 -0
  148. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/charges/index.ts +202 -0
  149. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/clients/index.ts +505 -0
  150. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/helpers.ts +38 -0
  151. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/models.ts +193 -0
  152. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/reservations/index.ts +365 -0
  153. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/sevenrooms/venues/index.ts +54 -0
  154. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/state/redis/index.ts +102 -0
  155. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/state/seeka/installations.ts +140 -0
  156. package/dist/ai-context/internal/examples/v1/sevenrooms/src/lib/state/seeka/models.ts +34 -0
  157. package/dist/ai-context/internal/examples/v1/sevenrooms/tsconfig.json +18 -0
  158. package/dist/ai-context/internal/examples/v1/tradable-bits/.eslintrc.cjs +10 -0
  159. package/dist/ai-context/internal/examples/v1/tradable-bits/README.md +104 -0
  160. package/dist/ai-context/internal/examples/v1/tradable-bits/_ai-summary.md +45 -0
  161. package/dist/ai-context/internal/examples/v1/tradable-bits/host.json +20 -0
  162. package/dist/ai-context/internal/examples/v1/tradable-bits/package.json +43 -0
  163. package/dist/ai-context/internal/examples/v1/tradable-bits/src/browser/.eslintrc.cjs +1 -0
  164. package/dist/ai-context/internal/examples/v1/tradable-bits/src/browser/.yarnrc +1 -0
  165. package/dist/ai-context/internal/examples/v1/tradable-bits/src/browser/package.json +37 -0
  166. package/dist/ai-context/internal/examples/v1/tradable-bits/src/functions/healthCheck.ts +14 -0
  167. package/dist/ai-context/internal/examples/v1/tradable-bits/src/functions/seekaAppWebhook.ts +157 -0
  168. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/browser/index.ts +54 -0
  169. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/logging/index.ts +77 -0
  170. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/models/index.ts +6 -0
  171. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/services/index.ts +41 -0
  172. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/state/redis/index.ts +64 -0
  173. package/dist/ai-context/internal/examples/v1/tradable-bits/src/lib/state/seeka/installations.ts +64 -0
  174. package/dist/ai-context/internal/examples/v1/tradable-bits/tsconfig.json +18 -0
  175. package/dist/ai-context/internal/examples/v1/transcend/.eslintrc.cjs +19 -0
  176. package/dist/ai-context/internal/examples/v1/transcend/README.md +112 -0
  177. package/dist/ai-context/internal/examples/v1/transcend/_ai-summary.md +36 -0
  178. package/dist/ai-context/internal/examples/v1/transcend/host.json +29 -0
  179. package/dist/ai-context/internal/examples/v1/transcend/jest.config.js +5 -0
  180. package/dist/ai-context/internal/examples/v1/transcend/package.json +46 -0
  181. package/dist/ai-context/internal/examples/v1/transcend/src/browser/.eslintrc.cjs +1 -0
  182. package/dist/ai-context/internal/examples/v1/transcend/src/browser/.yarnrc +1 -0
  183. package/dist/ai-context/internal/examples/v1/transcend/src/browser/package.json +37 -0
  184. package/dist/ai-context/internal/examples/v1/transcend/src/functions/healthCheck.ts +14 -0
  185. package/dist/ai-context/internal/examples/v1/transcend/src/functions/seekaAppWebhook.ts +214 -0
  186. package/dist/ai-context/internal/examples/v1/transcend/src/index.test.ts +7 -0
  187. package/dist/ai-context/internal/examples/v1/transcend/src/lib/browser/index.ts +53 -0
  188. package/dist/ai-context/internal/examples/v1/transcend/src/lib/browser/models/index.ts +29 -0
  189. package/dist/ai-context/internal/examples/v1/transcend/src/lib/logging/index.ts +77 -0
  190. package/dist/ai-context/internal/examples/v1/transcend/src/lib/services/index.ts +41 -0
  191. package/dist/ai-context/internal/examples/v1/transcend/src/lib/state/redis/index.ts +65 -0
  192. package/dist/ai-context/internal/examples/v1/transcend/src/lib/state/seeka/installations.ts +64 -0
  193. package/dist/ai-context/internal/examples/v1/transcend/tsconfig.json +18 -0
  194. package/dist/ai-context/internal/examples/v2/_index.md +66 -0
  195. package/dist/ai-context/internal/examples/v2/calendly/.yarnrc.yml +11 -0
  196. package/dist/ai-context/internal/examples/v2/calendly/README.md +15 -0
  197. package/dist/ai-context/internal/examples/v2/calendly/_ai-summary.md +35 -0
  198. package/dist/ai-context/internal/examples/v2/calendly/app/browser/README.md +1 -0
  199. package/dist/ai-context/internal/examples/v2/calendly/app/browser/package.json +33 -0
  200. package/dist/ai-context/internal/examples/v2/calendly/app/browser/src/browser.ts +12 -0
  201. package/dist/ai-context/internal/examples/v2/calendly/app/browser/src/plugin/index.ts +164 -0
  202. package/dist/ai-context/internal/examples/v2/calendly/app/browser/tsconfig.json +34 -0
  203. package/dist/ai-context/internal/examples/v2/calendly/app/lib/package.json +25 -0
  204. package/dist/ai-context/internal/examples/v2/calendly/app/lib/src/index.ts +3 -0
  205. package/dist/ai-context/internal/examples/v2/calendly/app/lib/src/models/index.ts +30 -0
  206. package/dist/ai-context/internal/examples/v2/calendly/app/lib/tsconfig.json +22 -0
  207. package/dist/ai-context/internal/examples/v2/calendly/app/server/.eslintrc.cjs +11 -0
  208. package/dist/ai-context/internal/examples/v2/calendly/app/server/.nvmrc +1 -0
  209. package/dist/ai-context/internal/examples/v2/calendly/app/server/README.md +105 -0
  210. package/dist/ai-context/internal/examples/v2/calendly/app/server/host.json +25 -0
  211. package/dist/ai-context/internal/examples/v2/calendly/app/server/package.json +48 -0
  212. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/calendlyAuth.ts +83 -0
  213. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/calendlyWebhook.ts +97 -0
  214. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/enrichSeekaProfile.ts +117 -0
  215. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/healthCheck.ts +14 -0
  216. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/seekaAppWebhook.ts +158 -0
  217. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/functions/ui.ts +178 -0
  218. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/api/auth.ts +91 -0
  219. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/api/routes/deleteCalendlyAuth.ts +15 -0
  220. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/api/routes/getCalendlyAuth.ts +12 -0
  221. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/api/routes/setTrackingSettings.ts +26 -0
  222. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/browser/index.ts +53 -0
  223. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/calendly/attendee.ts +198 -0
  224. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/calendly/auth.ts +103 -0
  225. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/calendly/webhooks.ts +189 -0
  226. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/logging/index.ts +81 -0
  227. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/services/index.ts +41 -0
  228. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/state/redis/index.ts +102 -0
  229. package/dist/ai-context/internal/examples/v2/calendly/app/server/src/lib/state/seeka/installations.ts +100 -0
  230. package/dist/ai-context/internal/examples/v2/calendly/app/server/tsconfig.json +21 -0
  231. package/dist/ai-context/internal/examples/v2/calendly/app/ui/README.md +40 -0
  232. package/dist/ai-context/internal/examples/v2/calendly/app/ui/index.html +22 -0
  233. package/dist/ai-context/internal/examples/v2/calendly/app/ui/package.json +74 -0
  234. package/dist/ai-context/internal/examples/v2/calendly/app/ui/public/favicon.ico +0 -0
  235. package/dist/ai-context/internal/examples/v2/calendly/app/ui/public/index.html +21 -0
  236. package/dist/ai-context/internal/examples/v2/calendly/app/ui/public/manifest.json +15 -0
  237. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/App.tsx +74 -0
  238. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/assets/calendly-icon.svg +25 -0
  239. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/components/calendly/login/index.tsx +129 -0
  240. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/components/setup/steps/auth/index.tsx +46 -0
  241. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/components/setup/steps/index.tsx +36 -0
  242. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/components/setup/steps/success/index.tsx +18 -0
  243. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/components/setup/steps/tracking/index.tsx +128 -0
  244. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/index.tsx +45 -0
  245. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/react-app-env.d.ts +1 -0
  246. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/routes/home/index.tsx +11 -0
  247. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/api/redux/index.tsx +16 -0
  248. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/tokenProvider/index.tsx +54 -0
  249. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/useTokens/index.ts +8 -0
  250. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activities/index.tsx +188 -0
  251. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activityNameSelect/index.tsx +156 -0
  252. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceActivityNameFilterSelect/index.tsx +247 -0
  253. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceFilterSelect/index.tsx +132 -0
  254. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceSelect/index.tsx +74 -0
  255. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/event-pipeline/filter-row/index.tsx +263 -0
  256. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/form/provider/index.tsx +16 -0
  257. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/shared/loading-spinner/index.tsx +9 -0
  258. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/utils/index.ts +11 -0
  259. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/wizard/heading/index.tsx +33 -0
  260. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/actions/index.tsx +12 -0
  261. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/content/index.tsx +24 -0
  262. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/index.tsx +16 -0
  263. package/dist/ai-context/internal/examples/v2/calendly/app/ui/src/vite-env.d.ts +12 -0
  264. package/dist/ai-context/internal/examples/v2/calendly/app/ui/tsconfig.json +35 -0
  265. package/dist/ai-context/internal/examples/v2/calendly/app/ui/tsconfig.node.json +10 -0
  266. package/dist/ai-context/internal/examples/v2/calendly/app/ui/vite.config.mts +44 -0
  267. package/dist/ai-context/internal/examples/v2/calendly/package.json +29 -0
  268. package/dist/ai-context/internal/examples/v2/calendly/tsconfig.json +27 -0
  269. package/dist/ai-context/internal/examples/v2/clarity/.yarnrc.yml +8 -0
  270. package/dist/ai-context/internal/examples/v2/clarity/README.md +7 -0
  271. package/dist/ai-context/internal/examples/v2/clarity/_ai-summary.md +32 -0
  272. package/dist/ai-context/internal/examples/v2/clarity/app/browser/README.md +1 -0
  273. package/dist/ai-context/internal/examples/v2/clarity/app/browser/jest.config.js +11 -0
  274. package/dist/ai-context/internal/examples/v2/clarity/app/browser/package.json +39 -0
  275. package/dist/ai-context/internal/examples/v2/clarity/app/browser/src/browser.ts +12 -0
  276. package/dist/ai-context/internal/examples/v2/clarity/app/browser/src/plugin/index.test.ts +6 -0
  277. package/dist/ai-context/internal/examples/v2/clarity/app/browser/src/plugin/index.ts +119 -0
  278. package/dist/ai-context/internal/examples/v2/clarity/app/browser/tsconfig.json +35 -0
  279. package/dist/ai-context/internal/examples/v2/clarity/app/server/.eslintrc.cjs +11 -0
  280. package/dist/ai-context/internal/examples/v2/clarity/app/server/README.md +105 -0
  281. package/dist/ai-context/internal/examples/v2/clarity/app/server/host.json +20 -0
  282. package/dist/ai-context/internal/examples/v2/clarity/app/server/package.json +48 -0
  283. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/functions/healthCheck.ts +14 -0
  284. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/functions/seekaAppWebhook.ts +163 -0
  285. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/browser/index.ts +54 -0
  286. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/logging/index.ts +77 -0
  287. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/models/index.ts +6 -0
  288. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/services/index.ts +41 -0
  289. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/state/redis/index.ts +96 -0
  290. package/dist/ai-context/internal/examples/v2/clarity/app/server/src/lib/state/seeka/installations.ts +64 -0
  291. package/dist/ai-context/internal/examples/v2/clarity/app/server/tsconfig.json +18 -0
  292. package/dist/ai-context/internal/examples/v2/clarity/package.json +19 -0
  293. package/dist/ai-context/internal/examples/v2/clarity/tsconfig.json +25 -0
  294. package/dist/ai-context/internal/examples/v2/google-bigquery/.yarnrc.yml +3 -0
  295. package/dist/ai-context/internal/examples/v2/google-bigquery/_ai-summary.md +24 -0
  296. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/CHANGELOG.md +139 -0
  297. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/LICENSE +21 -0
  298. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/README.md +70 -0
  299. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/bin/jsbq +101 -0
  300. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/package.json +66 -0
  301. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/src/converter.js +282 -0
  302. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/src/errors.js +21 -0
  303. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/src/gbq.js +31 -0
  304. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/src/log.js +37 -0
  305. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/src/utils.js +17 -0
  306. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/tablediff/README.md +6 -0
  307. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/tablediff/create_tables.sh +13 -0
  308. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/tablediff/tablediff.sh +13 -0
  309. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/continueOnError/additionalProperties/expected.json +23 -0
  310. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/continueOnError/additionalProperties/input.json +21 -0
  311. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/continueOnErrorAndPreventAdditionalObjectProperties/additionalProperties/expected.json +5 -0
  312. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/continueOnErrorAndPreventAdditionalObjectProperties/additionalProperties/input.json +21 -0
  313. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/converter.js +112 -0
  314. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/preventAdditionalObjectProperties/additionalPropertiesFalse/expected.json +16 -0
  315. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/preventAdditionalObjectProperties/additionalPropertiesFalse/input.json +14 -0
  316. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/preventAdditionalObjectProperties/unevaluatedPropertiesFalse/expected.json +16 -0
  317. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/preventAdditionalObjectProperties/unevaluatedPropertiesFalse/input.json +14 -0
  318. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/allOf/expected.json +23 -0
  319. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/allOf/input.json +30 -0
  320. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/allOf_nested/expected.json +35 -0
  321. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/allOf_nested/input.json +47 -0
  322. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/anyOfMultipleTypes/expected.json +11 -0
  323. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/anyOfMultipleTypes/input.json +19 -0
  324. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/complex/expected.json +23 -0
  325. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/complex/input.json +20 -0
  326. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/date/expected.json +11 -0
  327. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/date/input.json +12 -0
  328. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/fieldDescription/expected.json +12 -0
  329. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/fieldDescription/input.json +12 -0
  330. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/json/expected.json +12 -0
  331. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/json/input.json +12 -0
  332. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedDescription/expected.json +12 -0
  333. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedDescription/input.json +23 -0
  334. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedOneOf/expected.json +11 -0
  335. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedOneOf/input.json +26 -0
  336. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedRepeated/expected.json +18 -0
  337. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nestedRepeated/input.json +20 -0
  338. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nullable/expected.json +16 -0
  339. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/nullable/input.json +15 -0
  340. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/numeric/expected.json +11 -0
  341. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/numeric/input.json +11 -0
  342. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/objectDescription/expected.json +19 -0
  343. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/objectDescription/input.json +18 -0
  344. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithDateFormat/expected.json +28 -0
  345. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithDateFormat/input.json +35 -0
  346. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithDuplicateDescriptions/expected.json +29 -0
  347. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithDuplicateDescriptions/input.json +35 -0
  348. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithNull/expected.json +11 -0
  349. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneOfWithNull/input.json +17 -0
  350. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneof/expected.json +31 -0
  351. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/oneof/input.json +65 -0
  352. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/repeated/expected.json +11 -0
  353. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/repeated/input.json +14 -0
  354. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/simple/expected.json +16 -0
  355. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/simple/input.json +14 -0
  356. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/time/expected.json +11 -0
  357. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/time/input.json +12 -0
  358. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/timestamp/expected.json +11 -0
  359. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/timestamp/input.json +12 -0
  360. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/typeArray/expected.json +16 -0
  361. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/integration/samples/typeArray/input.json +15 -0
  362. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/unit/converter.js +216 -0
  363. package/dist/ai-context/internal/examples/v2/google-bigquery/app/jsonschema-bigquery-custom/test/unit/utils.js +20 -0
  364. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/.eslintrc.cjs +19 -0
  365. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/.nvmrc +1 -0
  366. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/README.md +225 -0
  367. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/host.json +30 -0
  368. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/jest.config.js +5 -0
  369. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/package.json +58 -0
  370. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/functions/healthCheck.ts +14 -0
  371. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/functions/pushRowsToBigQueryTable.ts +149 -0
  372. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/functions/seekaAppWebhook.ts +219 -0
  373. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/index.ts +162 -0
  374. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/migrations/activities/001_addtimestamp.sql +14 -0
  375. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/migrations/activities/002_addrowversion.sql +14 -0
  376. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/migrations/index.ts +280 -0
  377. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/migrations/state.ts +98 -0
  378. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/models/index.ts +15 -0
  379. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/schema/activities/index.ts +86 -0
  380. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/schema/index.test.ts +208 -0
  381. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/schema/index.ts +95 -0
  382. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/google-big-query/utils.ts +5 -0
  383. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/jobs/index.ts +92 -0
  384. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/logging/index.ts +108 -0
  385. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/model.ts +6 -0
  386. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/services/index.ts +41 -0
  387. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/state/redis/index.ts +86 -0
  388. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/src/lib/state/seeka/installations.ts +70 -0
  389. package/dist/ai-context/internal/examples/v2/google-bigquery/app/server/tsconfig.json +18 -0
  390. package/dist/ai-context/internal/examples/v2/google-bigquery/package.json +28 -0
  391. package/dist/ai-context/internal/examples/v2/google-bigquery/tsconfig.json +24 -0
  392. package/dist/ai-context/internal/examples/v2/klaviyo-events/.yarnrc.yml +3 -0
  393. package/dist/ai-context/internal/examples/v2/klaviyo-events/README.md +1 -0
  394. package/dist/ai-context/internal/examples/v2/klaviyo-events/_ai-summary.md +26 -0
  395. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/.eslintrc.cjs +11 -0
  396. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/.nvmrc +1 -0
  397. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/README.md +191 -0
  398. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/host.json +25 -0
  399. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/package.json +48 -0
  400. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/functions/handleSeekaActivityQueueHandler.ts +45 -0
  401. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/functions/healthCheck.ts +14 -0
  402. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/functions/seekaAppWebhook.ts +199 -0
  403. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/jobs/index.ts +72 -0
  404. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/klaviyo/index.ts +15 -0
  405. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/klaviyo/utils/index.ts +152 -0
  406. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/logging/index.ts +106 -0
  407. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/services/index.ts +41 -0
  408. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/state/redis/index.ts +102 -0
  409. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/src/lib/state/seeka/installations.ts +64 -0
  410. package/dist/ai-context/internal/examples/v2/klaviyo-events/app/server/tsconfig.json +21 -0
  411. package/dist/ai-context/internal/examples/v2/klaviyo-events/package.json +25 -0
  412. package/dist/ai-context/internal/examples/v2/klaviyo-events/tsconfig.json +24 -0
  413. package/dist/ai-context/internal/examples/v2/navitas/.yarnrc.yml +8 -0
  414. package/dist/ai-context/internal/examples/v2/navitas/README.md +31 -0
  415. package/dist/ai-context/internal/examples/v2/navitas/_ai-summary.md +39 -0
  416. package/dist/ai-context/internal/examples/v2/navitas/app/browser/README.md +1 -0
  417. package/dist/ai-context/internal/examples/v2/navitas/app/browser/package.json +33 -0
  418. package/dist/ai-context/internal/examples/v2/navitas/app/browser/src/browser.ts +12 -0
  419. package/dist/ai-context/internal/examples/v2/navitas/app/browser/src/plugin/index.ts +172 -0
  420. package/dist/ai-context/internal/examples/v2/navitas/app/browser/tsconfig.json +34 -0
  421. package/dist/ai-context/internal/examples/v2/navitas/app/server/.eslintrc.cjs +11 -0
  422. package/dist/ai-context/internal/examples/v2/navitas/app/server/.nvmrc +1 -0
  423. package/dist/ai-context/internal/examples/v2/navitas/app/server/README.md +104 -0
  424. package/dist/ai-context/internal/examples/v2/navitas/app/server/host.json +25 -0
  425. package/dist/ai-context/internal/examples/v2/navitas/app/server/package.json +50 -0
  426. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/functions/healthCheck.ts +14 -0
  427. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/functions/salesforceWebhook.ts +156 -0
  428. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/functions/salesforceWebhookQueueHandler.ts +43 -0
  429. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/functions/seekaAppWebhook.ts +158 -0
  430. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/functions/stateChangeQueueHandler.ts +42 -0
  431. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/browser/index.ts +51 -0
  432. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/jobs/index.ts +73 -0
  433. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/logging/index.ts +108 -0
  434. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/models/index.ts +4 -0
  435. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/enrolment/forms/index.ts +180 -0
  436. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/index.ts +47 -0
  437. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/journeys/index.ts +192 -0
  438. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/leads/index.ts +177 -0
  439. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/models/index.ts +179 -0
  440. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/salesforce/opportunities/index.ts +193 -0
  441. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/services/index.ts +41 -0
  442. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/state/navitas/journey.ts +165 -0
  443. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/state/navitas/state/models.ts +43 -0
  444. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/state/navitas/state/state-change.ts +53 -0
  445. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/state/redis/index.ts +102 -0
  446. package/dist/ai-context/internal/examples/v2/navitas/app/server/src/lib/state/seeka/installations.ts +66 -0
  447. package/dist/ai-context/internal/examples/v2/navitas/app/server/tsconfig.json +21 -0
  448. package/dist/ai-context/internal/examples/v2/navitas/bigquery-views/acap/seekacd-stream-activity-brand-pageview.sql +93 -0
  449. package/dist/ai-context/internal/examples/v2/navitas/bigquery-views/sae/seekacd-stream-activity-brand-pageview.sql +93 -0
  450. package/dist/ai-context/internal/examples/v2/navitas/lib/google-bigquery/.nvmrc +1 -0
  451. package/dist/ai-context/internal/examples/v2/navitas/lib/google-bigquery/package.json +48 -0
  452. package/dist/ai-context/internal/examples/v2/navitas/package.json +23 -0
  453. package/dist/ai-context/internal/examples/v2/navitas/tsconfig.json +26 -0
  454. package/dist/ai-context/internal/examples/v2/trustarc/.yarnrc.yml +8 -0
  455. package/dist/ai-context/internal/examples/v2/trustarc/README.md +7 -0
  456. package/dist/ai-context/internal/examples/v2/trustarc/_ai-summary.md +36 -0
  457. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/README.md +1 -0
  458. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/jest.config.js +11 -0
  459. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/package.json +39 -0
  460. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/src/browser.ts +12 -0
  461. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/src/plugin/index.test.ts +6 -0
  462. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/src/plugin/index.ts +236 -0
  463. package/dist/ai-context/internal/examples/v2/trustarc/app/browser/tsconfig.json +35 -0
  464. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/.eslintrc.cjs +11 -0
  465. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/README.md +105 -0
  466. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/host.json +20 -0
  467. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/package.json +51 -0
  468. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/functions/healthCheck.ts +14 -0
  469. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/functions/seekaAppWebhook.ts +232 -0
  470. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/browser/index.ts +54 -0
  471. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/jobs/index.ts +96 -0
  472. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/logging/index.ts +93 -0
  473. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/models/index.ts +13 -0
  474. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/services/index.ts +41 -0
  475. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/state/redis/index.ts +96 -0
  476. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/src/lib/state/seeka/installations.ts +65 -0
  477. package/dist/ai-context/internal/examples/v2/trustarc/app/server-azure-function/tsconfig.json +18 -0
  478. package/dist/ai-context/internal/examples/v2/trustarc/package.json +22 -0
  479. package/dist/ai-context/internal/examples/v2/trustarc/tsconfig.json +25 -0
  480. package/dist/ai-context/internal/examples/v2/typeform/.yarnrc.yml +11 -0
  481. package/dist/ai-context/internal/examples/v2/typeform/README.md +15 -0
  482. package/dist/ai-context/internal/examples/v2/typeform/_ai-summary.md +31 -0
  483. package/dist/ai-context/internal/examples/v2/typeform/app/browser/README.md +1 -0
  484. package/dist/ai-context/internal/examples/v2/typeform/app/browser/package.json +34 -0
  485. package/dist/ai-context/internal/examples/v2/typeform/app/browser/src/browser.ts +12 -0
  486. package/dist/ai-context/internal/examples/v2/typeform/app/browser/src/plugin/index.ts +197 -0
  487. package/dist/ai-context/internal/examples/v2/typeform/app/browser/tsconfig.json +34 -0
  488. package/dist/ai-context/internal/examples/v2/typeform/app/lib/package.json +32 -0
  489. package/dist/ai-context/internal/examples/v2/typeform/app/lib/src/index.ts +2 -0
  490. package/dist/ai-context/internal/examples/v2/typeform/app/lib/src/models/index.ts +23 -0
  491. package/dist/ai-context/internal/examples/v2/typeform/app/lib/tsconfig.json +22 -0
  492. package/dist/ai-context/internal/examples/v2/typeform/app/server/.eslintrc.cjs +19 -0
  493. package/dist/ai-context/internal/examples/v2/typeform/app/server/.nvmrc +1 -0
  494. package/dist/ai-context/internal/examples/v2/typeform/app/server/README.md +105 -0
  495. package/dist/ai-context/internal/examples/v2/typeform/app/server/host.json +25 -0
  496. package/dist/ai-context/internal/examples/v2/typeform/app/server/package.json +50 -0
  497. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/healthCheck.ts +14 -0
  498. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/seekaAppWebhook.ts +278 -0
  499. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/typeformAuthCallback.ts +87 -0
  500. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/typeformAuthRedirect.ts +78 -0
  501. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/typeformWebhook.ts +109 -0
  502. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/functions/ui.ts +182 -0
  503. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/index.test.ts +7 -0
  504. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/api/auth.ts +91 -0
  505. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/api/routes/disconnectTypeform.ts +18 -0
  506. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/api/routes/getTypeformAuthInfo.ts +12 -0
  507. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/api/routes/setFormBindings.ts +43 -0
  508. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/browser/index.ts +52 -0
  509. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/logging/index.ts +89 -0
  510. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/services/index.ts +41 -0
  511. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/state/redis/index.ts +102 -0
  512. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/state/seeka/installations.ts +64 -0
  513. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/typeform/auth.ts +108 -0
  514. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/typeform/forms.ts +259 -0
  515. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/typeform/models.ts +105 -0
  516. package/dist/ai-context/internal/examples/v2/typeform/app/server/src/lib/typeform/webhooks.ts +182 -0
  517. package/dist/ai-context/internal/examples/v2/typeform/app/server/tsconfig.json +18 -0
  518. package/dist/ai-context/internal/examples/v2/typeform/app/ui/README.md +40 -0
  519. package/dist/ai-context/internal/examples/v2/typeform/app/ui/index.html +22 -0
  520. package/dist/ai-context/internal/examples/v2/typeform/app/ui/package.json +72 -0
  521. package/dist/ai-context/internal/examples/v2/typeform/app/ui/public/favicon.ico +0 -0
  522. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/App.tsx +79 -0
  523. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/setup/steps/auth/index.tsx +36 -0
  524. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/setup/steps/complete/index.tsx +22 -0
  525. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/setup/steps/form-binding/index.tsx +215 -0
  526. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/setup/steps/form-binding/row/index.tsx +104 -0
  527. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/setup/steps/index.tsx +31 -0
  528. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/components/typeform/login/index.tsx +140 -0
  529. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/index.tsx +45 -0
  530. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/routes/home/index.tsx +10 -0
  531. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/api/redux/index.tsx +16 -0
  532. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/tokenProvider/index.tsx +53 -0
  533. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/useTokens/index.ts +8 -0
  534. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activityNameSelect/index.tsx +237 -0
  535. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceSelect/index.tsx +135 -0
  536. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/form/provider/index.tsx +16 -0
  537. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/form/utils/index.ts +133 -0
  538. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/form/validation/activityPipelineActivityFilter/index.ts +85 -0
  539. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/loading-spinner/index.tsx +13 -0
  540. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/shared/theme/index.ts +24 -0
  541. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/utils/index.ts +11 -0
  542. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/wizard/heading/index.tsx +33 -0
  543. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/actions/index.tsx +12 -0
  544. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/content/index.tsx +24 -0
  545. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/index.tsx +16 -0
  546. package/dist/ai-context/internal/examples/v2/typeform/app/ui/src/vite-env.d.ts +12 -0
  547. package/dist/ai-context/internal/examples/v2/typeform/app/ui/tsconfig.json +35 -0
  548. package/dist/ai-context/internal/examples/v2/typeform/app/ui/tsconfig.node.json +10 -0
  549. package/dist/ai-context/internal/examples/v2/typeform/app/ui/vite.config.mts +46 -0
  550. package/dist/ai-context/internal/examples/v2/typeform/package.json +29 -0
  551. package/dist/ai-context/internal/examples/v2/typeform/tsconfig.json +37 -0
  552. package/dist/ai-context/internal/examples/v2/webhook/.yarnrc.yml +11 -0
  553. package/dist/ai-context/internal/examples/v2/webhook/README.md +14 -0
  554. package/dist/ai-context/internal/examples/v2/webhook/_ai-summary.md +26 -0
  555. package/dist/ai-context/internal/examples/v2/webhook/app/server/.eslintrc.cjs +11 -0
  556. package/dist/ai-context/internal/examples/v2/webhook/app/server/.nvmrc +1 -0
  557. package/dist/ai-context/internal/examples/v2/webhook/app/server/README.md +104 -0
  558. package/dist/ai-context/internal/examples/v2/webhook/app/server/host.json +25 -0
  559. package/dist/ai-context/internal/examples/v2/webhook/app/server/package.json +50 -0
  560. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/functions/healthCheck.ts +14 -0
  561. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/functions/inboundWebhook.ts +133 -0
  562. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/functions/inboundWebhookQueueHandler.ts +45 -0
  563. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/functions/seekaAppWebhook.ts +153 -0
  564. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/functions/ui.ts +176 -0
  565. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/api/auth.ts +91 -0
  566. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/api/routes/setSampleState.ts +25 -0
  567. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/jobs/index.ts +72 -0
  568. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/logging/index.ts +106 -0
  569. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/services/index.ts +41 -0
  570. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/state/redis/index.ts +102 -0
  571. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/state/seeka/installations.ts +85 -0
  572. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/utils/object.ts +7 -0
  573. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/webhooks/index.ts +171 -0
  574. package/dist/ai-context/internal/examples/v2/webhook/app/server/src/lib/webhooks/models/index.ts +9 -0
  575. package/dist/ai-context/internal/examples/v2/webhook/app/server/tsconfig.json +21 -0
  576. package/dist/ai-context/internal/examples/v2/webhook/app/ui/README.md +40 -0
  577. package/dist/ai-context/internal/examples/v2/webhook/app/ui/index.html +22 -0
  578. package/dist/ai-context/internal/examples/v2/webhook/app/ui/package.json +67 -0
  579. package/dist/ai-context/internal/examples/v2/webhook/app/ui/public/favicon.ico +0 -0
  580. package/dist/ai-context/internal/examples/v2/webhook/app/ui/public/index.html +21 -0
  581. package/dist/ai-context/internal/examples/v2/webhook/app/ui/public/manifest.json +15 -0
  582. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/App.tsx +72 -0
  583. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/index.tsx +45 -0
  584. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/routes/home/index.tsx +26 -0
  585. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/tokenProvider/index.tsx +53 -0
  586. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/useTokens/index.ts +8 -0
  587. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/shared/loading-spinner/index.tsx +13 -0
  588. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/shared/theme/index.ts +24 -0
  589. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/utils/index.ts +11 -0
  590. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/wizard/heading/index.tsx +33 -0
  591. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/actions/index.tsx +12 -0
  592. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/content/index.tsx +24 -0
  593. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/index.tsx +16 -0
  594. package/dist/ai-context/internal/examples/v2/webhook/app/ui/src/vite-env.d.ts +12 -0
  595. package/dist/ai-context/internal/examples/v2/webhook/app/ui/tsconfig.json +45 -0
  596. package/dist/ai-context/internal/examples/v2/webhook/app/ui/tsconfig.node.json +12 -0
  597. package/dist/ai-context/internal/examples/v2/webhook/app/ui/vite.config.mts +46 -0
  598. package/dist/ai-context/internal/examples/v2/webhook/package.json +29 -0
  599. package/dist/ai-context/internal/examples/v2/webhook/tsconfig.json +25 -0
  600. package/dist/ai-context/internal/examples/v2/yeastar/.yarnrc.yml +11 -0
  601. package/dist/ai-context/internal/examples/v2/yeastar/README.md +14 -0
  602. package/dist/ai-context/internal/examples/v2/yeastar/_ai-summary.md +26 -0
  603. package/dist/ai-context/internal/examples/v2/yeastar/app/lib/package.json +25 -0
  604. package/dist/ai-context/internal/examples/v2/yeastar/app/lib/src/index.ts +3 -0
  605. package/dist/ai-context/internal/examples/v2/yeastar/app/lib/src/models/index.ts +18 -0
  606. package/dist/ai-context/internal/examples/v2/yeastar/app/lib/tsconfig.json +22 -0
  607. package/dist/ai-context/internal/examples/v2/yeastar/app/server/.eslintrc.cjs +11 -0
  608. package/dist/ai-context/internal/examples/v2/yeastar/app/server/.nvmrc +1 -0
  609. package/dist/ai-context/internal/examples/v2/yeastar/app/server/README.md +105 -0
  610. package/dist/ai-context/internal/examples/v2/yeastar/app/server/host.json +25 -0
  611. package/dist/ai-context/internal/examples/v2/yeastar/app/server/package.json +55 -0
  612. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/definitions.d.ts +4 -0
  613. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/healthCheck.ts +14 -0
  614. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/seekaAppWebhook.ts +221 -0
  615. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/ui.ts +174 -0
  616. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/yeastarCallJournal.ts +83 -0
  617. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/yeastarContactCreate.ts +86 -0
  618. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/yeastarContactPopup.ts +84 -0
  619. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/yeastarContactsSearch.ts +95 -0
  620. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/functions/yeastarGetUsers.ts +120 -0
  621. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/api/auth.ts +91 -0
  622. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/api/routes/setTrackingSettings.ts +26 -0
  623. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/api/routes/yeastar/config/YeastarTemplate.xml +138 -0
  624. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/api/routes/yeastar/config/getYeastarCrmConfig.ts +30 -0
  625. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/api/routes/yeastar/users/setYeastarUsers.ts +26 -0
  626. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/jobs/index.ts +72 -0
  627. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/logging/index.ts +98 -0
  628. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/services/index.ts +41 -0
  629. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/state/redis/index.ts +102 -0
  630. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/state/seeka/installations.ts +67 -0
  631. package/dist/ai-context/internal/examples/v2/yeastar/app/server/src/lib/yeastar/calls.ts +120 -0
  632. package/dist/ai-context/internal/examples/v2/yeastar/app/server/tsconfig.json +21 -0
  633. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/README.md +40 -0
  634. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/index.html +22 -0
  635. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/package.json +74 -0
  636. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/public/favicon.ico +0 -0
  637. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/public/index.html +21 -0
  638. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/public/manifest.json +15 -0
  639. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/App.tsx +73 -0
  640. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/assets/yeastar-icon.svg +1 -0
  641. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/components/setup/steps/account/index.tsx +39 -0
  642. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/components/setup/steps/index.tsx +31 -0
  643. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/components/setup/steps/tracking/index.tsx +125 -0
  644. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/components/setup/steps/user-mapping/index.tsx +147 -0
  645. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/components/setup/steps/user-mapping/row/index.tsx +69 -0
  646. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/index.tsx +45 -0
  647. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/react-app-env.d.ts +1 -0
  648. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/routes/home/index.tsx +11 -0
  649. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/api/redux/index.tsx +16 -0
  650. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/tokenProvider/index.tsx +53 -0
  651. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/auth/useTokens/index.ts +8 -0
  652. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activities/index.tsx +188 -0
  653. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activityNameSelect/index.tsx +156 -0
  654. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceActivityNameFilterSelect/index.tsx +247 -0
  655. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceFilterSelect/index.tsx +132 -0
  656. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/activitySourceSelect/index.tsx +74 -0
  657. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/fields/event-pipeline/filter-row/index.tsx +263 -0
  658. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/form/provider/index.tsx +16 -0
  659. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/shared/loading-spinner/index.tsx +9 -0
  660. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/utils/index.ts +11 -0
  661. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/wizard/heading/index.tsx +33 -0
  662. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/actions/index.tsx +12 -0
  663. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/content/index.tsx +24 -0
  664. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/seeka-labs-app-sdk-ui/wizard/step/index.tsx +16 -0
  665. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/src/vite-env.d.ts +12 -0
  666. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/tsconfig.json +35 -0
  667. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/tsconfig.node.json +10 -0
  668. package/dist/ai-context/internal/examples/v2/yeastar/app/ui/vite.config.mts +46 -0
  669. package/dist/ai-context/internal/examples/v2/yeastar/developers/YeastarTemplate.xml +138 -0
  670. package/dist/ai-context/internal/examples/v2/yeastar/package.json +29 -0
  671. package/dist/ai-context/internal/examples/v2/yeastar/tsconfig.json +26 -0
  672. package/dist/ai-context/internal/examples/v3/_index.md +105 -0
  673. package/dist/ai-context/internal/examples/v3/google-ads/.nvmrc +1 -0
  674. package/dist/ai-context/internal/examples/v3/google-ads/.yarnrc.yml +7 -0
  675. package/dist/{init-template → ai-context/internal/examples/v3/google-ads}/README.md +12 -13
  676. package/dist/ai-context/internal/examples/v3/google-ads/_ai-summary.md +31 -0
  677. package/dist/ai-context/internal/examples/v3/google-ads/app/.eslintrc.cjs +13 -0
  678. package/dist/ai-context/internal/examples/v3/google-ads/app/browser/README.md +1 -0
  679. package/dist/ai-context/internal/examples/v3/google-ads/app/browser/package.json +37 -0
  680. package/dist/ai-context/internal/examples/v3/google-ads/app/browser/src/browser.ts +12 -0
  681. package/dist/ai-context/internal/examples/v3/google-ads/app/browser/src/plugin/index.ts +273 -0
  682. package/dist/ai-context/internal/examples/v3/google-ads/app/browser/tsconfig.json +34 -0
  683. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/package.json +44 -0
  684. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/src/index.ts +5 -0
  685. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/src/models/index.ts +113 -0
  686. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/src/utils/index.ts +66 -0
  687. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/src/validation/index.ts +10 -0
  688. package/dist/ai-context/internal/examples/v3/google-ads/app/lib/tsconfig.json +22 -0
  689. package/dist/ai-context/internal/examples/v3/google-ads/app/server/.eslintrc.cjs +4 -0
  690. package/dist/ai-context/internal/examples/v3/google-ads/app/server/README.md +105 -0
  691. package/dist/ai-context/internal/examples/v3/google-ads/app/server/host.json +31 -0
  692. package/dist/ai-context/internal/examples/v3/google-ads/app/server/package.json +72 -0
  693. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/router.ts +26 -0
  694. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/disconnectGoogle.ts +21 -0
  695. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/getAccessibleCustomers.ts +16 -0
  696. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/getGoogleAuthInfo.ts +23 -0
  697. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/getGoogleConversionActions.ts +32 -0
  698. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/getGoogleCustomerInfo.ts +32 -0
  699. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/setConversionMappings.ts +46 -0
  700. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/setGoogleCustomerId.ts +39 -0
  701. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/api/routes/setTrackingSettings.ts +41 -0
  702. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/jobs/index.ts +62 -0
  703. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/logging/index.ts +4 -0
  704. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/models/index.ts +12 -0
  705. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/activites.ts +8 -0
  706. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/ads.ts +47 -0
  707. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/auth.ts +126 -0
  708. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/actions.ts +102 -0
  709. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/mediate.ts +177 -0
  710. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/models.ts +10 -0
  711. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/services/adjustment.ts +101 -0
  712. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/services/call.ts +86 -0
  713. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/services/click.ts +109 -0
  714. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/conversions/utils.ts +263 -0
  715. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/customers.ts +301 -0
  716. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/app/services/google/queues/models.ts +16 -0
  717. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/googleAuthCallback.ts +133 -0
  718. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/googleAuthRedirect.ts +69 -0
  719. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/healthCheck.ts +20 -0
  720. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/legacyMediateSeekaActivityQueueHandler.ts +46 -0
  721. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/seekaAppWebhook.ts +223 -0
  722. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/trackGoogleAdsConversionQueueHandler.ts +69 -0
  723. package/dist/ai-context/internal/examples/v3/google-ads/app/server/src/functions/ui.ts +53 -0
  724. package/dist/ai-context/internal/examples/v3/google-ads/app/server/tsconfig.json +24 -0
  725. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/README.md +40 -0
  726. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/index.html +21 -0
  727. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/package.json +72 -0
  728. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/public/favicon.ico +0 -0
  729. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/App.tsx +72 -0
  730. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/assets/app-icon.svg +5 -0
  731. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/customer/index.tsx +185 -0
  732. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/google/login/index.tsx +123 -0
  733. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/account/index.tsx +222 -0
  734. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/auth/index.tsx +42 -0
  735. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/complete/index.tsx +37 -0
  736. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/conversion-mapping/index.tsx +281 -0
  737. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/conversion-mapping/row/index.tsx +253 -0
  738. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/components/setup/steps/index.tsx +70 -0
  739. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/index.tsx +45 -0
  740. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/routes/home/index.tsx +30 -0
  741. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/src/vite-env.d.ts +13 -0
  742. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/tsconfig.json +35 -0
  743. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/tsconfig.node.json +10 -0
  744. package/dist/ai-context/internal/examples/v3/google-ads/app/ui/vite.config.mts +48 -0
  745. package/dist/ai-context/internal/examples/v3/google-ads/package.json +45 -0
  746. package/dist/ai-context/internal/examples/v3/google-ads/tsconfig.json +24 -0
  747. package/dist/ai-context/public/architecture/app-structure.md +385 -0
  748. package/dist/{index.js → index.cjs} +10453 -402
  749. package/dist/index.cjs.map +7 -0
  750. package/dist/init-template/.gitlab-ci.yml +1 -1
  751. package/dist/init-template/AGENTS.md +99 -0
  752. package/dist/init-template/README.azurefunc.md +238 -0
  753. package/dist/init-template/app/browser/package.json +1 -1
  754. package/dist/init-template/app/lib/package.json +1 -1
  755. package/dist/init-template/app/lib/src/validation/index.ts +13 -13
  756. package/dist/init-template/app/server-azurefunc/package.json +1 -1
  757. package/dist/init-template/app/server-azurefunc/src/app/models/index.ts +12 -12
  758. package/dist/init-template/app/server-azurefunc/src/app/services/activites.ts +8 -8
  759. package/dist/init-template/app/ui/.env +7 -0
  760. package/dist/init-template/app/ui/package.json +1 -1
  761. package/dist/init-template/app/ui/src/index.tsx +1 -1
  762. package/package.json +21 -14
  763. package/dist/index.js.map +0 -7
@@ -0,0 +1,158 @@
1
+ import winston from 'winston';
2
+
3
+ import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
4
+ import {
5
+ SeekaAppInstalledWebhookPayload,
6
+ SeekaAppInstallSettingsUpdatedWebhookPayload, SeekaAppUninstalledWebhookPayload,
7
+ SeekaWebhookCallType, SeekaWebhookPayload,
8
+ throwOnInvalidWebhookSignature
9
+ } from '@seeka-labs/sdk-apps-server';
10
+
11
+ import { childLogger, webhookLogger } from '../lib/logging';
12
+ import { startServices } from '../lib/services';
13
+ import {
14
+ createOrUpdateInstallation, deleteInstallation, SeekaAppInstallState, tryGetInstallation
15
+ } from '../lib/state/seeka/installations';
16
+
17
+ import type { Logger } from 'winston';
18
+ import { getSeekaBrowserPlugin } from '../lib/browser';
19
+ app.http('seekaAppWebhook', {
20
+ methods: ['POST'],
21
+ authLevel: 'anonymous',
22
+ route: 'api/webhook/seeka/app',
23
+ handler: seekaAppWebhook
24
+ });
25
+
26
+ export async function seekaAppWebhook(req: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
27
+ const bodyStr = (await req.text()) as string;
28
+ const body = JSON.parse(bodyStr) as SeekaWebhookPayload;
29
+
30
+ let logger = webhookLogger(body, context);
31
+ logger.profile('http.seeka.webhook.app')
32
+ logger.verbose('Received webhook from Seeka', { body });
33
+
34
+ // Handle probe
35
+ if (body.type === SeekaWebhookCallType.Probe) {
36
+ return {
37
+ status: 204
38
+ }
39
+ }
40
+
41
+ // Validate webhook
42
+ try {
43
+ throwOnInvalidWebhookSignature(process.env.SEEKA_APP_SECRET as string, req.headers, bodyStr);
44
+ logger.debug('Webhook signature validated', { body });
45
+ }
46
+ catch {
47
+ logger.warn('Webhook signature invalid', { body });
48
+ return {
49
+ status: 401,
50
+ jsonBody: { error: "Webhook call invalid" }
51
+ }
52
+ }
53
+
54
+ if (body.isTest) {
55
+ // This is a test webhook call
56
+ return {
57
+ status: 204
58
+ }
59
+ }
60
+
61
+ await startServices(logger);
62
+
63
+ // Check if the webhook is for an app we have installed
64
+ let installation: SeekaAppInstallState | null = null;
65
+ if (body.type != SeekaWebhookCallType.AppInstalled) {
66
+ installation = await tryGetInstallation((body as SeekaAppInstalledWebhookPayload).context?.applicationInstallId as string, false, logger);
67
+ if (installation == null) {
68
+ logger.warn('Webhook call cannot be processed as the installation ID is not known by this app', { body });
69
+
70
+ return {
71
+ status: 422,
72
+ jsonBody: { error: "App not installed" }
73
+ }
74
+ }
75
+ }
76
+ logger = childLogger(null, installation, logger);
77
+
78
+ // Do something
79
+ try {
80
+ switch (body.type) {
81
+ case SeekaWebhookCallType.AppInstalled:
82
+ {
83
+ await onInstallation(body as SeekaAppInstalledWebhookPayload, logger);
84
+ break;
85
+ }
86
+ case SeekaWebhookCallType.AppInstallSettingsUpdated:
87
+ {
88
+ await onInstallationSettingsUpdate(body as SeekaAppInstallSettingsUpdatedWebhookPayload, logger);
89
+ break;
90
+ }
91
+ case SeekaWebhookCallType.AppUninstalled:
92
+ {
93
+ if (!body.isTest) {
94
+ const payload = body as SeekaAppUninstalledWebhookPayload;
95
+ await deleteInstallation(payload.context?.applicationInstallId as string, logger)
96
+ }
97
+ break;
98
+ }
99
+ case SeekaWebhookCallType.BrowserSdkPlugin: {
100
+ const plugin = await getSeekaBrowserPlugin(installation as SeekaAppInstallState, logger);
101
+
102
+ logger.profile('http.seeka.webhook.app')
103
+ return {
104
+ status: 200,
105
+ body: JSON.stringify(plugin),
106
+ headers: {
107
+ 'Content-Type': 'application/json'
108
+ }
109
+ }
110
+ }
111
+ }
112
+ }
113
+ catch (err) {
114
+ logger.error('Failed to handle webhook', { ex: winston.exceptions.getAllInfo(err) });
115
+ return {
116
+ status: 500,
117
+ jsonBody: { error: "Request failed" }
118
+ }
119
+ }
120
+ finally {
121
+ logger.profile('http.seeka.webhook.app')
122
+ logger.verbose('Seeka webhook handled');
123
+ }
124
+
125
+ return {
126
+ status: 204
127
+ }
128
+ }
129
+
130
+ const onInstallation = async (payload: SeekaAppInstalledWebhookPayload, logger: Logger) => {
131
+ if (payload.isTest) return;
132
+
133
+ const installation = await createOrUpdateInstallation({
134
+ ...payload.context,
135
+ installationState: {
136
+ grantedPermissions: payload.content?.grantedPermissions || []
137
+ },
138
+ applicationInstallId: payload.context?.applicationInstallId as string,
139
+ organisationBrandId: payload.context?.organisationBrandId as string,
140
+ organisationId: payload.context?.organisationId as string,
141
+ installedAt: new Date().toISOString(),
142
+ installationSettings: payload.content?.installationSettings || {}
143
+ }, logger)
144
+ }
145
+
146
+ const onInstallationSettingsUpdate = async (payload: SeekaAppInstallSettingsUpdatedWebhookPayload, logger: Logger) => {
147
+ if (payload.isTest) return;
148
+
149
+ const existingInstallation = await tryGetInstallation(payload.context?.applicationInstallId as string, true, logger) as SeekaAppInstallState;
150
+ const installation = await createOrUpdateInstallation({
151
+ ...existingInstallation,
152
+ installationState: {
153
+ ...existingInstallation.installationState,
154
+ grantedPermissions: payload.content?.grantedPermissions || []
155
+ },
156
+ installationSettings: payload.content?.installationSettings || {},
157
+ }, logger)
158
+ }
@@ -0,0 +1,42 @@
1
+ import winston from 'winston';
2
+ import { handleStateChange, StateChangeQueueItem } from '../lib/state/navitas/state/state-change';
3
+
4
+ import { app, InvocationContext } from '@azure/functions';
5
+
6
+ import { deserialiseQueuePayload, queueNames, sendQueueMessageToPoisonQueue } from '../lib/jobs';
7
+ import { backgroundJobLogger } from '../lib/logging';
8
+ import { startServices } from '../lib/services';
9
+ import { tryGetInstallation } from '../lib/state/seeka/installations';
10
+
11
+ app.storageQueue('stateChangeQueueHandler', {
12
+ queueName: queueNames.handleStateChange,
13
+ connection: 'AzureWebJobsStorage',
14
+ handler: stateChangeQueueHandler
15
+ });
16
+
17
+ export async function stateChangeQueueHandler(queueItem: unknown, context: InvocationContext): Promise<void> {
18
+ const body = typeof queueItem === 'string' ? deserialiseQueuePayload<StateChangeQueueItem>(queueItem) : queueItem as StateChangeQueueItem;
19
+ const logger = backgroundJobLogger(queueNames.handleStateChange, body, context);
20
+ logger.profile(`queue.${queueNames.handleStateChange}`)
21
+
22
+ await startServices(logger);
23
+
24
+ const installation = await tryGetInstallation(body.applicationInstallId as string, true, logger);
25
+
26
+ logger.verbose('Received request to handle state change item', { body });
27
+
28
+ try {
29
+ await handleStateChange(body, installation, logger)
30
+ }
31
+ catch (err) {
32
+ logger.error('Error handling state change item', { ex: winston.exceptions.getAllInfo(err) })
33
+
34
+ await sendQueueMessageToPoisonQueue(queueNames.handleStateChange, {
35
+ payload: body.payload,
36
+ causationId: body.causationId,
37
+ correlationId: context.invocationId,
38
+ } as StateChangeQueueItem, logger);
39
+ }
40
+
41
+ logger.profile(`queue.${queueNames.handleStateChange}`)
42
+ }
@@ -0,0 +1,51 @@
1
+ import { SeekaBrowserSdkPluginWebhookResponse } from '@seeka-labs/sdk-apps-server';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import util from 'util';
5
+ import winston, { Logger } from 'winston';
6
+ import type { INavitasBrowserSdkPluginConfig } from '../models';
7
+ import {
8
+ SeekaAppInstallState
9
+ } from '../state/seeka/installations';
10
+
11
+ const fileExistsAsync = util.promisify(fs.exists);
12
+ const readFileAsync = util.promisify(fs.readFile);
13
+
14
+ export async function getSeekaBrowserPlugin(installation: SeekaAppInstallState, logger: Logger): Promise<SeekaBrowserSdkPluginWebhookResponse> {
15
+ logger.profile('http.seeka.browser.plugin')
16
+
17
+ let content: string | undefined;
18
+ let init: string | undefined;
19
+
20
+ try {
21
+ logger.verbose('Handling request for browser plugin content');
22
+ const browserPluginPath = path.resolve('./dist/src/browser/seeka-app-navitas.min.js');
23
+ if (await fileExistsAsync(browserPluginPath)) {
24
+ // Content of the script. This should not change per installation it should be the same for all installations
25
+ content = await readFileAsync(browserPluginPath, 'utf8');
26
+
27
+ // Configuration for the plugin. This can be different per installation
28
+ const pluginConfig = {
29
+ appId: process.env.SEEKA_APP_ID,
30
+ appInstallId: installation.applicationInstallId,
31
+ } as INavitasBrowserSdkPluginConfig;
32
+ init = `NavitasConvergeSdkPlugin(${JSON.stringify(pluginConfig)})`;
33
+ }
34
+ else {
35
+ logger.error('Browser plugin content not found', { path: browserPluginPath });
36
+ }
37
+ }
38
+ catch (err) {
39
+ logger.error('Failed to handle request for browser plugin content', { ex: winston.exceptions.getAllInfo(err) });
40
+ }
41
+ finally {
42
+ logger.profile('http.seeka.browser.plugin')
43
+ logger.verbose('Request for browser plugin content handled');
44
+ }
45
+
46
+ if (!content || !init) {
47
+ throw new Error('Failed to handle request for browser plugin content')
48
+ }
49
+
50
+ return { content, init: init }
51
+ }
@@ -0,0 +1,73 @@
1
+ import { QueueClient } from '@azure/storage-queue';
2
+ import type { Logger } from 'winston';
3
+
4
+ export interface BackgroundJobRequestContext<TPayload> {
5
+ organisationId?: string;
6
+ organisationBrandId?: string;
7
+ applicationInstallId?: string;
8
+ causationId?: string
9
+ correlationId?: string
10
+ payload: TPayload
11
+ }
12
+
13
+ export const signatureHeaderName = 'x-signature-hmac';
14
+ export const apiKeyHeaderName = 'x-api-key';
15
+
16
+ export const queueNames = {
17
+ handleSalesforceWebhookPayload: 'navitas-salesforce-inbound-webhook-queue',
18
+ handleStateChange: 'navitas-state-change-queue'
19
+ }
20
+
21
+ export const triggerBackgroundJob = async <TPayload>(queueName: string, context: BackgroundJobRequestContext<TPayload>, logger: Logger): Promise<void> => {
22
+ const queueClient = new QueueClient(process.env.AzureWebJobsStorage as string, queueName);
23
+ return await triggerBackgroundJobWithQueue(queueClient, context, logger);
24
+ }
25
+
26
+ const serialiseQueuePayload = (payload: unknown): string => {
27
+ const jsonString = JSON.stringify(payload)
28
+ return Buffer.from(jsonString).toString('base64')
29
+ }
30
+
31
+ export const deserialiseQueuePayload = <TPayload>(payload: string): TPayload => {
32
+ const jsonString = Buffer.from(payload, 'base64').toString()
33
+ return JSON.parse(jsonString) as TPayload;
34
+ }
35
+
36
+ export const triggerBackgroundJobWithQueue = async <TPayload>(queueClient: QueueClient, context: BackgroundJobRequestContext<TPayload>, logger: Logger): Promise<void> => {
37
+ const body = {
38
+ ...context
39
+ }
40
+ const bodyStr = serialiseQueuePayload(body);
41
+
42
+ const response = await queueClient.sendMessage(bodyStr);
43
+
44
+ if (response.errorCode) {
45
+ const { requestId, date, errorCode } = response;
46
+ logger.error("Failed to trigger background job", { body, requestId, date, errorCode })
47
+ throw new Error(`Failed to trigger background job: ${response.errorCode}`);
48
+ }
49
+ else {
50
+ logger.info("Background job triggered for " + queueClient.name, { body, messageId: response.messageId, context })
51
+ }
52
+ }
53
+
54
+ export const sendQueueMessageToPoisonQueue = async <TPayload>(queueName: string, context: BackgroundJobRequestContext<TPayload>, logger: Logger): Promise<void> => {
55
+ const body = {
56
+ ...context
57
+ }
58
+ const bodyStr = serialiseQueuePayload(body);
59
+
60
+ // https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=python-v2%2Cisolated-process%2Cnodejs-v4%2Cextensionv5&pivots=programming-language-typescript#poison-messages
61
+ const queueClient = new QueueClient(process.env.AzureWebJobsStorage as string, `${queueName}-poison`);
62
+
63
+ const response = await queueClient.sendMessage(bodyStr, { messageTimeToLive: -1 });
64
+
65
+ if (response.errorCode) {
66
+ const { requestId, date, errorCode } = response;
67
+ logger.error("Failed to push to poison queue", { body, requestId, date, errorCode })
68
+ throw new Error(`Failed to push to poison queue: ${response.errorCode}`);
69
+ }
70
+ else {
71
+ logger.verbose("Message pushed to poison queue", { body, messageId: response.messageId, context })
72
+ }
73
+ }
@@ -0,0 +1,108 @@
1
+ import * as winston from 'winston';
2
+
3
+ import { InvocationContext } from '@azure/functions';
4
+ import { SeqTransport } from '@datalust/winston-seq';
5
+
6
+ import * as packageJson from '../../../package.json';
7
+
8
+ import type {
9
+ SeekaWebhookPayload, SeekaWebhookPayloadOfSeekaAppWebhookContext
10
+ } from '@seeka-labs/sdk-apps-server';
11
+ import { BackgroundJobRequestContext } from '../jobs';
12
+ import { SeekaAppInstallState } from '../state/seeka/installations';
13
+
14
+ const loggerTransports: winston.transport[] = [
15
+ new winston.transports.Console({
16
+ level: process.env.LOGGING_LEVEL,
17
+ format: winston.format.combine(
18
+ winston.format.errors({ stack: true }),
19
+ winston.format.cli(),
20
+ winston.format.splat(),
21
+ ),
22
+ handleExceptions: true,
23
+ handleRejections: true,
24
+ }),
25
+ ]
26
+ if (process.env.LOGGING_SEQ_SERVERURL) {
27
+ loggerTransports.push(
28
+ new SeqTransport({
29
+ level: process.env.LOGGING_LEVEL,
30
+ serverUrl: process.env.LOGGING_SEQ_SERVERURL,
31
+ apiKey: process.env.LOGGING_SEQ_APIKEY,
32
+ onError: ((e) => { console.error('Failed to configure Seq logging transport', e) }),
33
+ format: winston.format.combine(
34
+ winston.format.errors({ stack: true }),
35
+ winston.format.json(),
36
+ ),
37
+ handleExceptions: true,
38
+ handleRejections: true,
39
+ })
40
+ )
41
+ }
42
+
43
+
44
+ const defaultMeta = {
45
+ seekaAppId: process.env.SEEKA_APP_ID,
46
+ Hosting_Provider: 'azure',
47
+ Release_Version: `v${packageJson.version.split('-')[0]}`,
48
+ Hosting_Region: process.env.REGION_NAME,
49
+ Service_Instance_Id: process.env.WEBSITE_ROLE_INSTANCE_ID,
50
+ AzureFunctions_FunctionName: process.env.WEBSITE_SITE_NAME,
51
+ Service: `app/${packageJson.name}`,
52
+ };
53
+
54
+ export const logger = winston.createLogger({
55
+ level: process.env.LOGGING_LEVEL,
56
+ defaultMeta: {
57
+ ...defaultMeta
58
+ },
59
+ transports: loggerTransports,
60
+ exitOnError: false,
61
+ });
62
+
63
+ export const childLogger = (meta: object | null, installation?: SeekaAppInstallState, l: winston.Logger = logger) => l.child({
64
+ ...defaultMeta, ...meta, ...(installation ? {
65
+ seekaAppInstallId: installation.applicationInstallId,
66
+ seekaAppInstallOrganisationBrandId: installation.organisationBrandId,
67
+ seekaAppInstallOrganisationId: installation.organisationId
68
+ } : {})
69
+ });
70
+
71
+
72
+ export const webhookLogger = (payload: SeekaWebhookPayload, functionContext: InvocationContext) => {
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ const meta: any = {
75
+ ...defaultMeta,
76
+ seekaWebhookType: payload.type,
77
+ seekaWebhookIsTest: payload.isTest,
78
+ RequestId: payload.requestId,
79
+ AzureFunctions_InvocationId: functionContext.invocationId,
80
+ CausationId: payload.causationId,
81
+ CorrelationId: payload.causationId,
82
+ }
83
+
84
+ const context = (payload as SeekaWebhookPayloadOfSeekaAppWebhookContext).context;
85
+ if (context) {
86
+ meta.seekaAppInstallId = context.applicationInstallId;
87
+ meta.seekaAppInstallOrganisationBrandId = context.organisationBrandId;
88
+ meta.seekaAppInstallOrganisationId = context.organisationId;
89
+ }
90
+
91
+ return childLogger(meta)
92
+ }
93
+
94
+ export const backgroundJobLogger = (jobName: string, jobContext: BackgroundJobRequestContext<any> | undefined, functionContext: InvocationContext) => {
95
+ const meta: object = {
96
+ jobContext,
97
+ jobName,
98
+ AzureFunctions_InvocationId: functionContext.invocationId,
99
+ CausationId: jobContext?.causationId,
100
+ CorrelationId: jobContext?.causationId,
101
+ seekaAppInstallId: jobContext?.applicationInstallId,
102
+ seekaAppInstallOrganisationBrandId: jobContext?.organisationBrandId,
103
+ seekaAppInstallOrganisationId: jobContext?.organisationId,
104
+ ...defaultMeta
105
+ }
106
+
107
+ return childLogger(meta)
108
+ }
@@ -0,0 +1,4 @@
1
+ export interface INavitasBrowserSdkPluginConfig {
2
+ appId: string
3
+ appInstallId: string
4
+ }
@@ -0,0 +1,180 @@
1
+ import { ActivityPayload, PersonIdentifiers, PlaceAddress, SeekaAppHelper, TrackingActivityNames, TrackingEventSourceOriginType } from "@seeka-labs/sdk-apps-server";
2
+ import { Logger } from "winston";
3
+ import * as packageJson from '../../../../../package.json';
4
+ import { createOrUpdateJourney, getJourneyIdFromEnrolmentForm, handleContactMerge, tryGetJourney } from "../../../state/navitas/journey";
5
+ import { SeekaAppInstallState } from "../../../state/seeka/installations";
6
+ import { getWhoId, SalesforceEnrolmentFormWebhookPayloadObject } from "../../models";
7
+
8
+ export const handleSalesforceEnrolmentFormWebhook = async (enrolmentformPayload: SalesforceEnrolmentFormWebhookPayloadObject, installation: SeekaAppInstallState, logger: Logger): Promise<void> => {
9
+ if (!enrolmentformPayload) {
10
+ logger.error('No enrolmentform object found in Salesforce webhook payload');
11
+ return;
12
+ }
13
+
14
+ let thisLogger = logger.child({ 'enrolmentFormId': enrolmentformPayload.Id });
15
+
16
+ thisLogger.info('Handling Salesforce EnrolmentForm webhook', { enrolmentformPayload });
17
+ const enrolmentFormId = enrolmentformPayload.Id;
18
+ if (!enrolmentFormId) {
19
+ thisLogger.error('No enrolmentform id found in Salesforce webhook payload');
20
+ return;
21
+ }
22
+ let whoId = getWhoId(enrolmentformPayload.Contact_ID__c || enrolmentformPayload.Lead_Contact_Id__c, enrolmentformPayload.Lead_ID__c, thisLogger);
23
+ thisLogger = thisLogger.child({ whoId });
24
+
25
+ const leadId = enrolmentformPayload.Lead_ID__c;
26
+ // Create seeka API helper
27
+ const { name, version } = packageJson;
28
+ const helper = SeekaAppHelper.create(process.env['SEEKA_APP_SECRET'] as string, {
29
+ organisationId: installation.organisationId as string,
30
+ applicationInstallId: installation.applicationInstallId as string,
31
+ applicationId: process.env['SEEKA_APP_ID'] as string,
32
+ }, { name, version }, installation.installationState.grantedPermissions, thisLogger);
33
+
34
+ let seekaProfileId = enrolmentformPayload.SeekaProfileId__c || null;
35
+ const seekaProfile = salesforceEnrolmentFormToSeekaProfile(enrolmentformPayload, whoId);
36
+ if (!seekaProfileId) {
37
+ thisLogger.warn('No Seeka profile ID found in Salesforce enrolmentform, creating Seeka profile', { enrolmentFormId, enrolmentformPayload });
38
+ seekaProfileId = await helper.api.mergeIdentity(seekaProfile, {
39
+ origin: TrackingEventSourceOriginType.Server
40
+ })
41
+ thisLogger = thisLogger.child({ Person_PersonId: seekaProfileId });
42
+ thisLogger.info('Created Seeka profile for Salesforce enrolmentform', { enrolmentFormId, seekaProfileId });
43
+ }
44
+ else {
45
+ thisLogger = thisLogger.child({ Person_PersonId: seekaProfileId });
46
+
47
+ seekaProfile.seekaPId = seekaProfileId;
48
+ await helper.api.mergeIdentity(seekaProfile, {
49
+ origin: TrackingEventSourceOriginType.Server
50
+ })
51
+
52
+ thisLogger.info('Used existing Seeka profile ID for Salesforce enrolmentform and updated Seeka profile', { enrolmentFormId, seekaProfileId });
53
+ }
54
+
55
+ // Maintain journey
56
+ const journeyId = getJourneyIdFromEnrolmentForm(enrolmentformPayload, thisLogger);
57
+ thisLogger = thisLogger.child({ journeyId });
58
+ let journey = await tryGetJourney(journeyId, false, thisLogger);
59
+ let created = false;
60
+ if (!whoId && journey && journey.whoId) {
61
+ thisLogger.warn('No whoID found on webhook payload but exists on journey')
62
+ whoId = journey.whoId;
63
+ thisLogger = thisLogger.child({ whoId });
64
+ }
65
+ if (!journey) {
66
+ // Create journey in state
67
+ thisLogger.info("Creating journey from enrolment form")
68
+ journey = await createOrUpdateJourney({
69
+ journeyId,
70
+ leadId,
71
+ lead: undefined,
72
+ whoId,
73
+ contactId: enrolmentformPayload.Contact_ID__c,
74
+ opportunityId: undefined,
75
+ leadPreviousStage: undefined,
76
+ leadCurrentStage: undefined,
77
+ opportunityPreviousStage: undefined,
78
+ opportunityCurrentStage: undefined,
79
+ seekaPersonId: [seekaProfileId]
80
+ }, true, false, thisLogger);
81
+ created = true;
82
+ }
83
+ if (!created) {
84
+ // Update lead
85
+ if (journey.whoId && whoId && journey.whoId !== whoId) {
86
+ thisLogger.warn('Updating WhoId on journey', { prev: journey.whoId, updated: whoId })
87
+ }
88
+
89
+ const oldContactId = journey.contactId;
90
+ journey = await createOrUpdateJourney({
91
+ ...journey,
92
+ whoId: whoId || journey.whoId,
93
+ contactId: enrolmentformPayload.Contact_ID__c || journey.contactId,
94
+ seekaPersonId: [...(journey.seekaPersonId || []), seekaProfileId].filter(Boolean)
95
+ }, true, false, thisLogger);
96
+
97
+ await handleContactMerge(oldContactId, enrolmentformPayload.Contact_ID__c, whoId || journey.whoId, 'enrolmentform', enrolmentformPayload.Id, installation, thisLogger)
98
+ }
99
+
100
+ thisLogger = thisLogger.child({ 'Person_PersonId': seekaProfileId, 'Person_BrowserId': seekaProfileId });
101
+
102
+ await trackActivityForEnrolmentFormWebhook(enrolmentformPayload, seekaProfileId, whoId, helper, thisLogger)
103
+ }
104
+
105
+ const trackActivityForEnrolmentFormWebhook = async (enrolmentform: SalesforceEnrolmentFormWebhookPayloadObject, seekaProfileId: string, whoId: string | null, helper: SeekaAppHelper, logger: Logger) => {
106
+ const payload: ActivityPayload = {
107
+ activityName: TrackingActivityNames.Lead,
108
+ lead: {
109
+ sourceContentName: enrolmentform.Program_Name__c || enrolmentform.Discipline__c
110
+ },
111
+ activityId: `enrollmentform-${enrolmentform.Id}`,
112
+ properties: {
113
+ whoId,
114
+ leadId: enrolmentform.Lead_ID__c || enrolmentform.Lead_Contact_Id__c,
115
+ leadContactId: enrolmentform.Lead_Contact_Id__c,
116
+ contactId: enrolmentform.Contact_ID__c,
117
+ }
118
+ }
119
+ logger.info('Tracking activity for enrollment form', { payload, Activity_ActivityIdentifier: payload.activityId });
120
+
121
+ await helper.api.trackActivityForProfileId(payload, seekaProfileId as string, {
122
+ origin: TrackingEventSourceOriginType.Server,
123
+ // loc: sourceUrl || undefined
124
+ })
125
+ }
126
+
127
+ const salesforceEnrolmentFormToSeekaProfile = (enrolmentform: SalesforceEnrolmentFormWebhookPayloadObject, whoId: string | null): PersonIdentifiers => {
128
+ const seekaProfile: PersonIdentifiers = {
129
+ // firstName: enrolmentform.FirstName ? [enrolmentform.FirstName] : [],
130
+ // lastName: enrolmentform.LastName ? [enrolmentform.LastName] : [],
131
+ email: enrolmentform.Form_Email__c ? [enrolmentform.Form_Email__c] : [],
132
+ phone: [],
133
+ // facebook: {
134
+ // enrolmentform: enrolmentformPayload.enrolmentformSource?.toLowerCase() === 'facebook' && enrolmentformPayload.enrolmentform_Number__c ? [enrolmentformPayload.enrolmentform_Number__c] : []
135
+ // }
136
+ };
137
+ // if (enrolmentform.SO_Account_Phone__c) {
138
+ // seekaProfile.phone.push(enrolmentform.SO_Account_Phone__c);
139
+ // }
140
+ // if (enrolmentform.SO_Account_Mobile__c && enrolmentform.SO_Account_Mobile__c !== enrolmentform.SO_Account_Phone__c) {
141
+ // seekaProfile.phone.push(enrolmentform.SO_Account_Mobile__c);
142
+ // }
143
+ const address: PlaceAddress = {};
144
+ let hasAddress = false;
145
+ if (enrolmentform.Residential_Address_Counrt__c) {
146
+ address.country = enrolmentform.Residential_Address_Counrt__c;
147
+ hasAddress = true;
148
+ }
149
+ if (enrolmentform.Residential_Address_State_AUS__c) {
150
+ address.stateCode = enrolmentform.Residential_Address_State_AUS__c;
151
+ hasAddress = true;
152
+ }
153
+ if (enrolmentform.Residential_Address_Post_Code__c) {
154
+ address.postcode = enrolmentform.Residential_Address_Post_Code__c;
155
+ hasAddress = true;
156
+ }
157
+ if (hasAddress) {
158
+ seekaProfile.address = [address];
159
+ }
160
+
161
+ // ip address
162
+ if (enrolmentform.IP_Address__c) {
163
+ seekaProfile.ip = [enrolmentform.IP_Address__c];
164
+ }
165
+
166
+ // Name parts
167
+ if (enrolmentform.Form_First_Name__c) {
168
+ seekaProfile.firstName = [enrolmentform.Form_First_Name__c];
169
+ }
170
+ if (enrolmentform.Form_Last_Name__c) {
171
+ seekaProfile.lastName = [enrolmentform.Form_Last_Name__c];
172
+ }
173
+
174
+ // External ID
175
+ if (whoId) {
176
+ seekaProfile.eid = [whoId];
177
+ }
178
+
179
+ return seekaProfile;
180
+ }
@@ -0,0 +1,47 @@
1
+ import { Logger } from "winston";
2
+ import { SalesforceEnrolmentFormWebhookPayloadObject, SalesforceLeadWebhookPayloadObject, SalesforceOpportunityWebhookPayloadObject, SalesforceWebhookPayloadObject, SalesforceWebhookPayloadQueueItem } from "./models";
3
+
4
+ import { isArray } from 'lodash';
5
+ import { SeekaAppInstallState } from "../state/seeka/installations";
6
+ import { handleSalesforceEnrolmentFormWebhook } from "./enrolment/forms";
7
+ import { handleSalesforceLeadWebhook } from "./leads";
8
+ import { handleSalesforceOpportunityWebhook } from "./opportunities";
9
+
10
+ export const handleSalesforceWebhook = async (item: SalesforceWebhookPayloadQueueItem<SalesforceWebhookPayloadObject>, installation: SeekaAppInstallState, logger: Logger): Promise<void> => {
11
+ const notification = item?.payload.Body?.notifications?.Notification;
12
+
13
+ if (!notification) {
14
+ logger.warn('No notification found in Salesforce webhook payload', { payload: item.payload });
15
+ return;
16
+ }
17
+
18
+ if (isArray(notification)) {
19
+ for (const n of notification) {
20
+ handleNotification(n.sObject, installation, logger);
21
+ }
22
+ }
23
+ else {
24
+ handleNotification(notification.sObject, installation, logger);
25
+ }
26
+ }
27
+
28
+ const handleNotification = async (notification: SalesforceWebhookPayloadObject, installation: SeekaAppInstallState, logger: Logger) => {
29
+ const objectType = notification?.type;
30
+
31
+ switch (objectType) {
32
+ case 'sf:Lead':
33
+ await handleSalesforceLeadWebhook(notification as SalesforceLeadWebhookPayloadObject, installation, logger);
34
+ break;
35
+ case 'sf:Opportunity':
36
+ await handleSalesforceOpportunityWebhook(notification as SalesforceOpportunityWebhookPayloadObject, installation, logger);
37
+ break;
38
+ case 'sf:Enrolment_Form__c':
39
+ await handleSalesforceEnrolmentFormWebhook(notification as SalesforceEnrolmentFormWebhookPayloadObject, installation, logger);
40
+ break;
41
+ default:
42
+ logger.warn(`Unhandled Salesforce webhook object type ${objectType}`, { objectType, notification });
43
+ return;
44
+ }
45
+
46
+ logger.info('Handled Salesforce webhook queue payload', { objectType, notification });
47
+ }