@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,157 @@
1
+ import winston from 'winston';
2
+
3
+ import { app, HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
4
+ import {
5
+ PersonIdentifiers, SeekaActivityAcceptedWebhookPayload, SeekaAppInstalledWebhookPayload,
6
+ SeekaAppInstallSettingsUpdatedWebhookPayload, SeekaAppUninstalledWebhookPayload,
7
+ SeekaIdentityChangedWebhookPayload, SeekaWebhookCallType, SeekaWebhookPayload,
8
+ throwOnInvalidWebhookSignature
9
+ } from '@seeka-labs/sdk-apps-server';
10
+
11
+ import { 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: '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
+ const 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
+
77
+ // Do something
78
+ try {
79
+ switch (body.type) {
80
+ case SeekaWebhookCallType.AppInstalled:
81
+ {
82
+ await onInstallation(body as SeekaAppInstalledWebhookPayload, logger);
83
+ break;
84
+ }
85
+ case SeekaWebhookCallType.AppInstallSettingsUpdated:
86
+ {
87
+ await onInstallationSettingsUpdate(body as SeekaAppInstallSettingsUpdatedWebhookPayload, logger);
88
+ break;
89
+ }
90
+ case SeekaWebhookCallType.AppUninstalled:
91
+ {
92
+ if (!body.isTest) {
93
+ const payload = body as SeekaAppUninstalledWebhookPayload;
94
+ await deleteInstallation(payload.context?.applicationInstallId as string, logger)
95
+ }
96
+ break;
97
+ }
98
+ case SeekaWebhookCallType.BrowserSdkPlugin: {
99
+ const plugin = await getSeekaBrowserPlugin(installation as SeekaAppInstallState, logger);
100
+
101
+ logger.profile('http.seeka.webhook.app')
102
+ return {
103
+ status: 200,
104
+ body: JSON.stringify(plugin),
105
+ headers: {
106
+ 'Content-Type': 'application/json'
107
+ }
108
+ }
109
+ }
110
+ }
111
+ }
112
+ catch (err) {
113
+ logger.error('Failed to handle webhook', { ex: winston.exceptions.getAllInfo(err) });
114
+ return {
115
+ status: 500,
116
+ jsonBody: { error: "Request failed" }
117
+ }
118
+ }
119
+ finally {
120
+ logger.profile('http.seeka.webhook.app')
121
+ logger.verbose('Seeka webhook handled');
122
+ }
123
+
124
+ return {
125
+ status: 204
126
+ }
127
+ }
128
+
129
+ const onInstallation = async (payload: SeekaAppInstalledWebhookPayload, logger: Logger) => {
130
+ if (payload.isTest) return;
131
+
132
+ const installation = await createOrUpdateInstallation({
133
+ ...payload.context,
134
+ installationState: {
135
+ grantedPermissions: payload.content?.grantedPermissions || []
136
+ },
137
+ applicationInstallId: payload.context?.applicationInstallId as string,
138
+ organisationBrandId: payload.context?.organisationBrandId as string,
139
+ organisationId: payload.context?.organisationId as string,
140
+ installedAt: new Date().toISOString(),
141
+ installationSettings: payload.content?.installationSettings || {}
142
+ }, logger)
143
+ }
144
+
145
+ const onInstallationSettingsUpdate = async (payload: SeekaAppInstallSettingsUpdatedWebhookPayload, logger: Logger) => {
146
+ if (payload.isTest) return;
147
+
148
+ const existingInstallation = await tryGetInstallation(payload.context?.applicationInstallId as string, true, logger) as SeekaAppInstallState;
149
+ const installation = await createOrUpdateInstallation({
150
+ ...existingInstallation,
151
+ installationState: {
152
+ ...existingInstallation.installationState,
153
+ grantedPermissions: payload.content?.grantedPermissions || []
154
+ },
155
+ installationSettings: payload.content?.installationSettings || {},
156
+ }, logger)
157
+ }
@@ -0,0 +1,54 @@
1
+ import winston, { Logger } from 'winston';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import util from 'util';
5
+ import { SeekaBrowserSdkPluginWebhookResponse } from '@seeka-labs/sdk-apps-server'
6
+ import {
7
+ SeekaAppInstallState
8
+ } from '../state/seeka/installations';
9
+ import type { ITradablebitsBrowserSdkPluginConfig } from '../models';
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 = '../browser/seeka-app-tradablebits.min.js';
23
+ const browserPluginPath = path.resolve('./dist/src/browser/seeka-app-tradablebits.min.js');
24
+ if (await fileExistsAsync(browserPluginPath)) {
25
+ // Content of the script. This should not change per installation it should be the same for all installations
26
+ content = await readFileAsync(browserPluginPath, 'utf8');
27
+
28
+ // Configuration for the plugin. This can be different per installation
29
+ const pluginConfig = {
30
+ fanSignUpEventName: installation.installationSettings.fanSignUpEventName,
31
+ appId: process.env.SEEKA_APP_ID,
32
+ appInstallId: installation.applicationInstallId,
33
+ appUrl: process.env.SELF_HOST_BASEURL
34
+ } as ITradablebitsBrowserSdkPluginConfig;
35
+ init = `TradablebitsConvergeSdkPlugin(${JSON.stringify(pluginConfig)})`;
36
+ }
37
+ else {
38
+ logger.error('Browser plugin content not found', { path: browserPluginPath });
39
+ }
40
+ }
41
+ catch (err) {
42
+ logger.error('Failed to handle request for browser plugin content', { ex: winston.exceptions.getAllInfo(err) });
43
+ }
44
+ finally {
45
+ logger.profile('http.seeka.browser.plugin')
46
+ logger.verbose('Request for browser plugin content handled');
47
+ }
48
+
49
+ if (!content || !init) {
50
+ throw new Error('Failed to handle request for browser plugin content')
51
+ }
52
+
53
+ return { content, init: init }
54
+ }
@@ -0,0 +1,77 @@
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
+
12
+ const loggerTransports: winston.transport[] = [
13
+ new winston.transports.Console({
14
+ level: process.env.LOGGING_LEVEL,
15
+ format: winston.format.combine(
16
+ winston.format.errors({ stack: true }),
17
+ winston.format.cli(),
18
+ winston.format.splat(),
19
+ ),
20
+ handleExceptions: true,
21
+ handleRejections: true,
22
+ }),
23
+ ]
24
+ if (process.env.LOGGING_SEQ_SERVERURL) {
25
+ loggerTransports.push(
26
+ new SeqTransport({
27
+ level: process.env.LOGGING_LEVEL,
28
+ serverUrl: process.env.LOGGING_SEQ_SERVERURL,
29
+ apiKey: process.env.LOGGING_SEQ_APIKEY,
30
+ onError: ((e) => { console.error('Failed to configure Seq logging transport', e) }),
31
+ format: winston.format.combine(
32
+ winston.format.errors({ stack: true }),
33
+ winston.format.json(),
34
+ ),
35
+ handleExceptions: true,
36
+ handleRejections: true,
37
+ })
38
+ )
39
+ }
40
+
41
+ export const logger = winston.createLogger({
42
+ level: process.env.LOGGING_LEVEL,
43
+ defaultMeta: {
44
+ seekaAppId: process.env.SEEKA_APP_ID,
45
+ Hosting_Provider: 'azure',
46
+ Release_Version: `v${packageJson.version}`,
47
+ Hosting_Region: process.env.REGION_NAME,
48
+ Service_Instance_Id: process.env.WEBSITE_ROLE_INSTANCE_ID,
49
+ AzureFunctions_FunctionName: process.env.WEBSITE_SITE_NAME,
50
+ Service: `app/${packageJson.name}`,
51
+ },
52
+ transports: loggerTransports,
53
+ exitOnError: false,
54
+ });
55
+
56
+ export const childLogger = (meta: object) => logger.child(meta);
57
+
58
+ export const webhookLogger = (payload: SeekaWebhookPayload, functionContext: InvocationContext) => {
59
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
60
+ const meta: any = {
61
+ seekaWebhookType: payload.type,
62
+ seekaWebhookIsTest: payload.isTest,
63
+ RequestId: payload.requestId,
64
+ AzureFunctions_InvocationId: functionContext.invocationId,
65
+ CausationId: payload.causationId,
66
+ CorrelationId: payload.causationId,
67
+ }
68
+
69
+ const context = (payload as SeekaWebhookPayloadOfSeekaAppWebhookContext).context;
70
+ if (context) {
71
+ meta.seekaAppInstallId = context.applicationInstallId;
72
+ meta.seekaAppInstallOrganisationBrandId = context.organisationBrandId;
73
+ meta.seekaAppInstallOrganisationId = context.organisationId;
74
+ }
75
+
76
+ return childLogger(meta)
77
+ }
@@ -0,0 +1,6 @@
1
+ export interface ITradablebitsBrowserSdkPluginConfig {
2
+ fanSignUpEventName: string
3
+ appId: string
4
+ appInstallId: string
5
+ appUrl: string
6
+ }
@@ -0,0 +1,41 @@
1
+ import winston, { Logger } from 'winston';
2
+
3
+ import { connect, disconnect, isConnected } from '../state/redis';
4
+
5
+ export const startServices = async (logger: Logger) => {
6
+ logger.debug(`Trying to connect to Redis - ${process.env.REDIS_CONNECTION_HOST}`)
7
+ try {
8
+ if (isConnected()) {
9
+ logger.verbose(`Redis already connected - ${process.env.REDIS_CONNECTION_HOST}`)
10
+ }
11
+ else {
12
+ logger.profile('service.redis.connect')
13
+ await connect();
14
+ logger.profile('service.redis.connect')
15
+ logger.debug(`Redis connected - ${process.env.REDIS_CONNECTION_HOST}`)
16
+ }
17
+ }
18
+ catch (err) {
19
+ logger.error(`Failed to connect to Redis - ${process.env.REDIS_CONNECTION_HOST}`, { ex: winston.exceptions.getAllInfo(err) })
20
+ throw err;
21
+ }
22
+ }
23
+
24
+ export const stopServices = async (logger: Logger) => {
25
+ logger.debug(`Trying to disconnect from Redis - ${process.env.REDIS_CONNECTION_HOST}`)
26
+ try {
27
+ if (isConnected() === false) {
28
+ logger.verbose(`Redis already disconnected - ${process.env.REDIS_CONNECTION_HOST}`)
29
+ }
30
+ else {
31
+ logger.profile('service.redis.disconnect')
32
+ await disconnect();
33
+ logger.profile('service.redis.disconnect')
34
+ logger.verbose(`Redis disconnected - ${process.env.REDIS_CONNECTION_HOST}`)
35
+ }
36
+ }
37
+ catch (err) {
38
+ logger.error(`Failed to disconnect from Redis - ${process.env.REDIS_CONNECTION_HOST}`, { ex: winston.exceptions.getAllInfo(err) })
39
+ throw err;
40
+ }
41
+ }
@@ -0,0 +1,64 @@
1
+ import { createClient } from 'redis';
2
+
3
+ import { logger } from '../../logging';
4
+
5
+ const redisProtocol = process.env.REDIS_CONNECTION_TLS === 'true' ? 'rediss://' : 'redis://';
6
+ const redisConn = `${redisProtocol}${process.env.REDIS_CONNECTION_USER}:${process.env.REDIS_CONNECTION_PASSWORD}@${process.env.REDIS_CONNECTION_HOST}:${process.env.REDIS_CONNECTION_PORT}`;
7
+
8
+ const redisClient = createClient({
9
+ url: redisConn
10
+ })
11
+ .on('error', err => logger.error('Redis Client ', { error: err }));
12
+
13
+ export const connect = async () => {
14
+ await redisClient.connect();
15
+ }
16
+
17
+ export const isConnected = () => {
18
+ return redisClient.isOpen;
19
+ }
20
+
21
+ export const disconnect = async () => {
22
+ await redisClient.disconnect();
23
+ }
24
+
25
+ const getKeyPrefix = (stateType: string) => `seeka:app:${process.env.SEEKA_APP_ID}:${stateType}`
26
+ const getKey = (stateType: string, key: string) => `${getKeyPrefix(stateType)}:${key}`
27
+
28
+ export async function getOrCreate<TState>(stateType: string, key: string, toCreate: TState): Promise<TState> {
29
+ const fullKey = getKey(stateType, key);
30
+ const existingStr = await redisClient.get(fullKey);
31
+ if (existingStr) return JSON.parse(existingStr);
32
+
33
+ await redisClient.set(fullKey, JSON.stringify(toCreate));
34
+
35
+ return toCreate;
36
+ }
37
+
38
+ export async function tryGet<TState>(stateType: string, key: string): Promise<TState | null> {
39
+ const fullKey = getKey(stateType, key);
40
+ const existingStr = await redisClient.get(fullKey);
41
+ if (existingStr) return JSON.parse(existingStr);
42
+
43
+ return null;
44
+ }
45
+
46
+ export async function getList<TState>(stateType: string): Promise<TState[]> {
47
+ const prefix = getKeyPrefix(stateType);
48
+ const allKeys = await redisClient.keys(`${prefix}:*`);
49
+ const listStr = await redisClient.mGet(allKeys);
50
+
51
+ if (listStr) return listStr.filter(e => Boolean(e)).map(e => JSON.parse(e as string));
52
+
53
+ return [];
54
+ }
55
+
56
+ export async function set<TState>(stateType: string, key: string, toCreate: TState): Promise<void> {
57
+ const fullKey = getKey(stateType, key);
58
+ await redisClient.set(fullKey, JSON.stringify(toCreate));
59
+ }
60
+
61
+ export async function remove(stateType: string, key: string): Promise<void> {
62
+ const fullKey = getKey(stateType, key);
63
+ await redisClient.del(fullKey);
64
+ }
@@ -0,0 +1,64 @@
1
+ import type { Logger } from 'winston';
2
+
3
+ import { getList, remove, set, tryGet } from '../redis';
4
+
5
+ export interface SeekaAppInstallState {
6
+ /** ID of the organisation that installed the app */
7
+ organisationId: string;
8
+ /** ID of the brand that installed the app */
9
+ organisationBrandId: string;
10
+ /** ID of the installation of the app */
11
+ applicationInstallId: string;
12
+ // Installation settings provided by the user installing the app
13
+ installationSettings: TradableBitsAppInstallSettings
14
+ // State relating to the app and installation of the app
15
+ installationState: TradableBitsAppInstallState;
16
+
17
+ // When the app was installed
18
+ installedAt: string; // new Date().toISOString()
19
+ }
20
+
21
+ export interface TradableBitsAppInstallState {
22
+ grantedPermissions?: string[]
23
+ }
24
+
25
+ export type TradableBitsAppInstallSettings = { [key: string]: any; } | {
26
+ fanSignUpEventName: string | undefined;
27
+ }
28
+
29
+ const stateType = 'install'
30
+
31
+ export const tryGetInstallation = async (applicationInstallId: string, throwWhenNotFound: boolean, logger: Logger): Promise<SeekaAppInstallState | null> => {
32
+ const installation = await tryGet<SeekaAppInstallState>(stateType, applicationInstallId);
33
+ if (installation == null && throwWhenNotFound) {
34
+ throw new Error(`Seeka installation ${applicationInstallId} not found`);
35
+ }
36
+
37
+ return installation;
38
+ }
39
+
40
+ export const listInstallations = async (logger: Logger): Promise<SeekaAppInstallState[]> => {
41
+ const installations = await getList<SeekaAppInstallState>(stateType);
42
+
43
+ return installations;
44
+ }
45
+
46
+
47
+ export const createOrUpdateInstallation = async (state: SeekaAppInstallState, logger: Logger): Promise<SeekaAppInstallState> => {
48
+ if (!state.installationState) state.installationState = {};
49
+ if (!state.installedAt) state.installedAt = new Date().toISOString();
50
+
51
+ const creating = (await tryGetInstallation(state.applicationInstallId, false, logger)) === null;
52
+
53
+ await set(stateType, state.applicationInstallId, state);
54
+
55
+ logger.info(creating ? 'Created installation state' : 'Updated installation state', { applicationInstallId: state.applicationInstallId, organisationId: state.organisationId, organisationBrandId: state.organisationBrandId });
56
+
57
+ return state;
58
+ }
59
+
60
+ export const deleteInstallation = async (applicationInstallId: string, logger: Logger): Promise<void> => {
61
+ await remove(stateType, applicationInstallId);
62
+
63
+ logger.info('Deleted installation state', { applicationInstallId });
64
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "allowJs": true,
4
+ "skipLibCheck": true,
5
+ "strict": false,
6
+ "esModuleInterop": true,
7
+ "outDir": "dist",
8
+ "rootDir": ".",
9
+ "sourceMap": true,
10
+ "module": "CommonJS",
11
+ "target": "ES6",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": false,
14
+ },
15
+ "include": [
16
+ "src/functions/*.ts"
17
+ ]
18
+ }
@@ -0,0 +1,19 @@
1
+ /* eslint-env node */
2
+ module.exports = {
3
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
4
+ parser: '@typescript-eslint/parser',
5
+ plugins: ['@typescript-eslint'],
6
+ root: true,
7
+ rules: {
8
+ "@typescript-eslint/no-unused-vars": "warn",
9
+ "@typescript-eslint/no-explicit-any": "off"
10
+ },
11
+ overrides: [
12
+ {
13
+ files: ["**/*/*.test.ts"],
14
+ env: {
15
+ jest: true
16
+ }
17
+ }
18
+ ]
19
+ };
@@ -0,0 +1,112 @@
1
+ # Seeka app - Azure functions
2
+
3
+ ## Transcend docs
4
+ https://docs.transcend.io/docs/articles/consent-management/configuration/tracking-purposes
5
+ IAB CMP ID for Transcend: 399
6
+
7
+ ## Development
8
+
9
+ - See [Configure your environment](https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-vs-code-typescript?pivots=nodejs-model-v4#configure-your-environment) for dependencies
10
+ - For emulating Azure storage queues, blobs and tables: `docker run --name azurite -p 10000:10000 -p 10001:10001 -p 10002:10002 --detach mcr.microsoft.com/azure-storage/azurite`
11
+ - Set `AzureWebJobsStorage` setting in local.settings.json to `UseDevelopmentStorage=true`
12
+ - If not using WSL:
13
+ `UseDevelopmentStorage=true`
14
+ - If using WSL, the following may be required to allow your app to reach Azure storage emulator:
15
+
16
+ Replace `MY-MACHINE-NAME` with your hostname. Below connection string allows running Azurite on your host machine and lets WSL connect to it
17
+ `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://MY-MACHINE-NAME.local:10000/devstoreaccount1;QueueEndpoint=http://MY-MACHINE-NAME.local:10001/devstoreaccount1;TableEndpoint=http://MY-MACHINE-NAME.local:10002/devstoreaccount1;`
18
+ - Install Azure Storage explorer and create your queues (see `./src/lib/jobs/index.ts` for `queueNames`). Azure Storage explorer can be used to view your queue items.
19
+ - `yarn install`
20
+ - `yarn dev`
21
+
22
+ ### Debugging
23
+ Supports VSCode debugging via the debugger and utilisation of breakpoints.
24
+ This is only tested on Linux but may work on Windows.
25
+ If using Windows then use WSL with an Ubuntu distro for support of attaching the VS code debugger
26
+
27
+ ### Live urls
28
+ You can expose your app locally to the internet via Ngrok to test your app before deploying.
29
+
30
+ #### Setup
31
+ 1. Sign up for a Ngrok account
32
+ 2. Get your auth token
33
+ 3. `yarn ngrok config add-authtoken [auth token here]` replacing `[auth token]` with the auth token retrieved from your Ngrok dashboard
34
+
35
+ #### Running
36
+ 1. `yarn start` OR start debugging in VSCode
37
+ 2. In separate terminal window run `yarn tunnel` and observe the log entry that starts with `Live url exposed`.
38
+ 3. Input the URL into your Seeka app configuration as the "Webook URL" via the Seeka UI.
39
+
40
+ ## Included sample functions
41
+ ### Seeka app webhook
42
+ `src/functions/seekaAppWebhook.ts`
43
+
44
+ Handles inbound webhooks sent from Seeka to your app.
45
+
46
+ ### Queue example
47
+ `src/functions/queueExample.ts`
48
+
49
+ Handles taking a message and placing it on an Azure storage queue for later processing. This concept can be used to offload long running operations based on data sent to your app from Seeka and can help to ensure Azure Function time execution limits are respected.
50
+
51
+ ### Polling example
52
+ `src/functions/pollingExample.ts`
53
+
54
+ Handles scheduled invoking of a function. This concept can be used to "fan out" long running operations based on data sent to your app from Seeka and can help to ensure Azure Function time execution limits are respected by splitting long running operations into smaller, less time consuming parts.
55
+
56
+ ## Invoking functions
57
+ ### Development environment
58
+ Scheduled / timer function: `curl -i -d '{"input": null}' -H "Content-Type: application/json" -X POST http://localhost:7072/admin/functions/pollingExample`
59
+
60
+ ### Azure cloud
61
+ Scheduled / timer function: `curl -i -d '{"input": null}' -H "Content-Type: application/json" -H "x-functions-key: <key from azure portal>" -X POST https://seeka-app-transcend.azurewebsites.net/admin/functions/pollingExample`
62
+
63
+ See [this doc](https://learn.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http?tabs=azure-portal#get-the-master-key) on how to get the functions (master) key
64
+
65
+ ## Logging
66
+ Centralised logging handled by [Winston](https://www.npmjs.com/package/winston). Winston is installed in this template and is also used in the Seeka SDK NPM packages.
67
+
68
+ [Seq](https://datalust.co/seq) Winston transport is installed in this template (optional).
69
+
70
+ To configure Seq options, see `_SEQ_` environment variables.
71
+
72
+ To install Seq on your development machine
73
+ 1. Run `docker run --name seq -d --restart=always -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:2024.2`
74
+ 2. Update your `LOGGING_SEQ_SERVERURL` environment variable to `http://localhost:5341` or `http://[YOUR MACHINE NAME].local:5341` if using WSL.
75
+
76
+ If creating an API key for Seq, only permission that is required is `Ingest`.
77
+
78
+ ## State management
79
+ Installations of your app and other state required for your app to function is stored in Redis. Another state provider can be swapped out for Redis, see `src/lib/state/seeka/installations.ts` for the file that manages the state of the installations.
80
+
81
+ ### Upstash (optional)
82
+ If you dont want to use Upstash for Redis then the connection strings in `.env` can be swapped with your Redis instance.
83
+
84
+ > If using Upstash then create a database before following the below guide to deploying your AWS lambda function.
85
+
86
+ > When choosing region - use a region that is closest to the Azure region that your function app is hosted in to reduce latency between the function and the Redis database.
87
+
88
+ ## Deployment
89
+ This project comes ready to deploy for free to Azure functions with database backed by Redis hosted by Upstash and queues, blobs and tables backed by Azure Storage.
90
+
91
+ 1. Create Azure function app via the portal with below settings
92
+ - Function app name: seeka-app-transcend
93
+ - Code or container image: Code
94
+ - Runtime stack: Node.js
95
+ - Version: 20
96
+ - Region: Closest region to where your upstash "master / write" database is located
97
+ - Operating system: linux
98
+ - Hosting: Consumption
99
+ - Enable public access: On
100
+ 2. Set environment variables of the Azure web app - reference local.settings.json "Values"
101
+ 3. If your app receives calls directly from the browser (eg. your browser app plugin) then CORS needs to be enabled for all origins from within the settings of the Function app in Azure portal.
102
+ 3. `yarn deploy`
103
+
104
+ ### Continuous delivery
105
+ This template includes a GitLab CD pipeline that can be used to trigger deployments of your app when changes are pushed to your Git repository.
106
+
107
+ ### Configuring queues
108
+ See [this article](https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue?tabs=isolated-process%2Cextensionv5%2Cextensionv3&pivots=programming-language-typescript#host-json) on settings that are settable in the `host.json` file.
109
+
110
+ ## References
111
+ - https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite
112
+ - https://learn.microsoft.com/en-us/azure/storage/queues/storage-quickstart-queues-nodejs?tabs=connection-string%2Croles-azure-portal%2Cenvironment-variable-windows%2Csign-in-azure-cli
@@ -0,0 +1,36 @@
1
+ # AI Summary for Seeka App: Transcend
2
+
3
+ ## Purpose and Functionality
4
+ The Transcend app integrates with the Transcend data privacy platform to manage consent and data rights, ensuring compliance with privacy regulations. It facilitates the handling of webhooks from Seeka, processes data rights requests, and manages installations and settings updates.
5
+
6
+ ## Key Implementation Patterns
7
+ - **Azure Functions**: The app is built using Azure Functions, allowing it to handle HTTP requests, manage queues, and perform scheduled tasks.
8
+ - **Webhook Handling**: The app processes various webhook events from Seeka, such as app installations, settings updates, and activity acceptance.
9
+ - **State Management**: Redis is used for storing app installation states, with the option to swap for another state provider.
10
+ - **Centralized Logging**: Utilizes Winston for logging, with optional integration with Seq for structured log management.
11
+
12
+ ## External APIs/Services Integrated
13
+ - **Transcend**: Integrates with Transcend for consent and data rights management.
14
+ - **Azure Storage**: Uses Azure Storage Queues for managing asynchronous operations.
15
+ - **Redis**: Employed for state management, with optional integration with Upstash.
16
+ - **Ngrok**: Used for exposing local development environments to the internet for testing.
17
+
18
+ ## Important Data Transformations
19
+ - **Webhook Payload Processing**: Parses and validates webhook payloads, ensuring the integrity and authenticity of incoming data.
20
+ - **Installation State Management**: Handles the creation, update, and deletion of app installation states based on webhook events.
21
+
22
+ ## Notable Code Patterns
23
+ - **Webhook Signature Validation**: Ensures security by validating webhook signatures before processing.
24
+ - **Queue Management**: Demonstrates how to offload long-running operations to Azure Storage Queues to respect Azure Function execution limits.
25
+ - **Modular Service Initialization**: Uses a `startServices` function to initialize necessary services, promoting modularity and separation of concerns.
26
+ - **Browser SDK Plugin Handling**: Integrates browser-specific plugins conditionally, showcasing a pattern for component-based architecture.
27
+
28
+ ## Development and Deployment
29
+ - **Local Development**: Supports local development with Docker for Azure Storage emulation and Ngrok for exposing local servers.
30
+ - **Deployment**: Provides scripts for deploying the app to Azure, ensuring a streamlined deployment process.
31
+
32
+ ## Debugging and Testing
33
+ - **VSCode Debugging**: Configured for debugging with VSCode, supporting breakpoints and step-through debugging.
34
+ - **Testing**: Uses Jest for testing, ensuring code reliability and robustness.
35
+
36
+ This summary provides an overview of the Transcend app's architecture, integration points, and implementation patterns, offering a comprehensive understanding for AI assistants and developers.