veryfront 0.0.49 → 0.0.50

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 (536) hide show
  1. package/dist/ai/components.js +260 -56
  2. package/dist/ai/components.js.map +4 -4
  3. package/dist/ai/index.d.ts +1 -0
  4. package/dist/ai/index.js +12 -4
  5. package/dist/ai/index.js.map +2 -2
  6. package/dist/ai/primitives.js +55 -10
  7. package/dist/ai/primitives.js.map +3 -3
  8. package/dist/ai/react.js +140 -1
  9. package/dist/ai/react.js.map +3 -3
  10. package/dist/ai/workflow-react.js +458 -0
  11. package/dist/ai/workflow-react.js.map +7 -0
  12. package/dist/ai/workflow.js +5422 -0
  13. package/dist/ai/workflow.js.map +7 -0
  14. package/dist/cli.js +957 -221
  15. package/dist/components.js +12 -4
  16. package/dist/components.js.map +2 -2
  17. package/dist/config.js +12 -4
  18. package/dist/config.js.map +2 -2
  19. package/dist/data.js +12 -4
  20. package/dist/data.js.map +2 -2
  21. package/dist/index.js +12 -6
  22. package/dist/index.js.map +2 -2
  23. package/dist/integrations/_base/files/SETUP.md +667 -98
  24. package/dist/integrations/_base/files/app/api/integrations/token-storage/route.ts +14 -0
  25. package/dist/integrations/_base/files/app/components/ServiceConnections.tsx +2 -1
  26. package/dist/integrations/_base/files/app/setup/page.tsx +858 -54
  27. package/dist/integrations/_base/files/lib/token-store-examples.ts +435 -0
  28. package/dist/integrations/_base/files/lib/token-store.ts +273 -23
  29. package/dist/integrations/airtable/connector.json +99 -0
  30. package/dist/integrations/airtable/files/ai/tools/create-record.ts +25 -0
  31. package/dist/integrations/airtable/files/ai/tools/get-base.ts +34 -0
  32. package/dist/integrations/airtable/files/ai/tools/get-record.ts +23 -0
  33. package/dist/integrations/airtable/files/ai/tools/list-bases.ts +19 -0
  34. package/dist/integrations/airtable/files/ai/tools/list-records.ts +47 -0
  35. package/dist/integrations/airtable/files/app/api/auth/airtable/callback/route.ts +11 -0
  36. package/dist/integrations/airtable/files/app/api/auth/airtable/route.ts +9 -0
  37. package/dist/integrations/airtable/files/lib/airtable-client.ts +244 -0
  38. package/dist/integrations/airtable/files/lib/token-store.ts +5 -0
  39. package/dist/integrations/anthropic/README.md +181 -0
  40. package/dist/integrations/anthropic/connector.json +88 -0
  41. package/dist/integrations/anthropic/files/_env.example +4 -0
  42. package/dist/integrations/anthropic/files/ai/tools/get-organization.ts +36 -0
  43. package/dist/integrations/anthropic/files/ai/tools/get-usage.ts +100 -0
  44. package/dist/integrations/anthropic/files/ai/tools/list-api-keys.ts +64 -0
  45. package/dist/integrations/anthropic/files/ai/tools/list-members.ts +65 -0
  46. package/dist/integrations/anthropic/files/ai/tools/list-workspaces.ts +35 -0
  47. package/dist/integrations/anthropic/files/lib/anthropic-admin-client.ts +264 -0
  48. package/dist/integrations/asana/connector.json +85 -0
  49. package/dist/integrations/asana/files/_env.example +4 -0
  50. package/dist/integrations/asana/files/ai/tools/create-task.ts +34 -0
  51. package/dist/integrations/asana/files/ai/tools/get-task.ts +26 -0
  52. package/dist/integrations/asana/files/ai/tools/list-projects.ts +26 -0
  53. package/dist/integrations/asana/files/ai/tools/list-tasks.ts +50 -0
  54. package/dist/integrations/asana/files/ai/tools/update-task.ts +36 -0
  55. package/dist/integrations/asana/files/app/api/auth/asana/callback/route.ts +11 -0
  56. package/dist/integrations/asana/files/app/api/auth/asana/route.ts +7 -0
  57. package/dist/integrations/asana/files/lib/asana-client.ts +162 -0
  58. package/dist/integrations/asana/files/lib/token-store.ts +11 -0
  59. package/dist/integrations/aws/connector.json +72 -0
  60. package/dist/integrations/aws/files/_env.example +10 -0
  61. package/dist/integrations/aws/files/ai/tools/get-s3-object.ts +62 -0
  62. package/dist/integrations/aws/files/ai/tools/list-ec2-instances.ts +56 -0
  63. package/dist/integrations/aws/files/ai/tools/list-lambda-functions.ts +57 -0
  64. package/dist/integrations/aws/files/ai/tools/list-s3-buckets.ts +44 -0
  65. package/dist/integrations/aws/files/ai/tools/list-s3-objects.ts +58 -0
  66. package/dist/integrations/aws/files/lib/aws-client.ts +255 -0
  67. package/dist/integrations/bitbucket/connector.json +85 -0
  68. package/dist/integrations/bitbucket/files/_env.example +9 -0
  69. package/dist/integrations/bitbucket/files/ai/tools/create-pull-request.ts +83 -0
  70. package/dist/integrations/bitbucket/files/ai/tools/list-issues.ts +112 -0
  71. package/dist/integrations/bitbucket/files/ai/tools/list-pull-requests.ts +91 -0
  72. package/dist/integrations/bitbucket/files/ai/tools/list-repositories.ts +78 -0
  73. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/callback/route.ts +11 -0
  74. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/route.ts +9 -0
  75. package/dist/integrations/bitbucket/files/lib/bitbucket-client.ts +316 -0
  76. package/dist/integrations/bitbucket/files/lib/token-store.ts +5 -0
  77. package/dist/integrations/box/connector.json +85 -0
  78. package/dist/integrations/box/files/_env.example +4 -0
  79. package/dist/integrations/box/files/ai/tools/create-folder.ts +28 -0
  80. package/dist/integrations/box/files/ai/tools/get-file.ts +29 -0
  81. package/dist/integrations/box/files/ai/tools/list-files.ts +33 -0
  82. package/dist/integrations/box/files/ai/tools/search-files.ts +35 -0
  83. package/dist/integrations/box/files/ai/tools/upload-file.ts +32 -0
  84. package/dist/integrations/box/files/app/api/auth/box/callback/route.ts +11 -0
  85. package/dist/integrations/box/files/app/api/auth/box/route.ts +7 -0
  86. package/dist/integrations/box/files/lib/box-client.ts +280 -0
  87. package/dist/integrations/box/files/lib/token-store.ts +11 -0
  88. package/dist/integrations/calendar/files/app/api/auth/calendar/callback/route.ts +7 -110
  89. package/dist/integrations/calendar/files/app/api/auth/calendar/route.ts +5 -25
  90. package/dist/integrations/calendar/files/lib/token-store.ts +2 -110
  91. package/dist/integrations/clickup/connector.json +85 -0
  92. package/dist/integrations/clickup/files/_env.example +4 -0
  93. package/dist/integrations/clickup/files/ai/tools/create-task.ts +64 -0
  94. package/dist/integrations/clickup/files/ai/tools/get-task.ts +59 -0
  95. package/dist/integrations/clickup/files/ai/tools/list-lists.ts +109 -0
  96. package/dist/integrations/clickup/files/ai/tools/list-tasks.ts +95 -0
  97. package/dist/integrations/clickup/files/ai/tools/update-task.ts +85 -0
  98. package/dist/integrations/clickup/files/app/api/auth/clickup/callback/route.ts +11 -0
  99. package/dist/integrations/clickup/files/app/api/auth/clickup/route.ts +7 -0
  100. package/dist/integrations/clickup/files/lib/clickup-client.ts +439 -0
  101. package/dist/integrations/clickup/files/lib/token-store.ts +11 -0
  102. package/dist/integrations/confluence/README.md +246 -0
  103. package/dist/integrations/confluence/connector.json +104 -0
  104. package/dist/integrations/confluence/files/_env.example +4 -0
  105. package/dist/integrations/confluence/files/ai/tools/create-page.ts +43 -0
  106. package/dist/integrations/confluence/files/ai/tools/get-page.ts +30 -0
  107. package/dist/integrations/confluence/files/ai/tools/list-spaces.ts +31 -0
  108. package/dist/integrations/confluence/files/ai/tools/search-content.ts +38 -0
  109. package/dist/integrations/confluence/files/ai/tools/update-page.ts +45 -0
  110. package/dist/integrations/confluence/files/app/api/auth/confluence/callback/route.ts +11 -0
  111. package/dist/integrations/confluence/files/app/api/auth/confluence/route.ts +9 -0
  112. package/dist/integrations/confluence/files/lib/confluence-client.ts +281 -0
  113. package/dist/integrations/confluence/files/lib/token-store.ts +5 -0
  114. package/dist/integrations/discord/connector.json +100 -0
  115. package/dist/integrations/discord/files/_env.example +12 -0
  116. package/dist/integrations/discord/files/ai/tools/get-messages.ts +55 -0
  117. package/dist/integrations/discord/files/ai/tools/get-user.ts +32 -0
  118. package/dist/integrations/discord/files/ai/tools/list-channels.ts +32 -0
  119. package/dist/integrations/discord/files/ai/tools/list-guilds.ts +24 -0
  120. package/dist/integrations/discord/files/ai/tools/send-message.ts +33 -0
  121. package/dist/integrations/discord/files/app/api/auth/discord/callback/route.ts +11 -0
  122. package/dist/integrations/discord/files/app/api/auth/discord/route.ts +9 -0
  123. package/dist/integrations/discord/files/lib/discord-client.ts +273 -0
  124. package/dist/integrations/discord/files/lib/token-store.ts +5 -0
  125. package/dist/integrations/docs-google/connector.json +101 -0
  126. package/dist/integrations/docs-google/files/_env.example +8 -0
  127. package/dist/integrations/docs-google/files/ai/tools/create-document.ts +46 -0
  128. package/dist/integrations/docs-google/files/ai/tools/get-document.ts +46 -0
  129. package/dist/integrations/docs-google/files/ai/tools/list-documents.ts +42 -0
  130. package/dist/integrations/docs-google/files/ai/tools/search-documents.ts +38 -0
  131. package/dist/integrations/docs-google/files/ai/tools/update-document.ts +131 -0
  132. package/dist/integrations/docs-google/files/app/api/auth/docs-google/callback/route.ts +11 -0
  133. package/dist/integrations/docs-google/files/app/api/auth/docs-google/route.ts +9 -0
  134. package/dist/integrations/docs-google/files/lib/docs-client.ts +582 -0
  135. package/dist/integrations/docs-google/files/lib/token-store.ts +5 -0
  136. package/dist/integrations/drive/connector.json +134 -0
  137. package/dist/integrations/drive/files/_env.example +9 -0
  138. package/dist/integrations/drive/files/ai/tools/create-folder.ts +47 -0
  139. package/dist/integrations/drive/files/ai/tools/get-file.ts +55 -0
  140. package/dist/integrations/drive/files/ai/tools/list-files.ts +78 -0
  141. package/dist/integrations/drive/files/ai/tools/search-files.ts +79 -0
  142. package/dist/integrations/drive/files/ai/tools/upload-file.ts +59 -0
  143. package/dist/integrations/drive/files/app/api/auth/drive/callback/route.ts +11 -0
  144. package/dist/integrations/drive/files/app/api/auth/drive/route.ts +9 -0
  145. package/dist/integrations/drive/files/lib/drive-client.ts +359 -0
  146. package/dist/integrations/drive/files/lib/token-store.ts +113 -0
  147. package/dist/integrations/dropbox/connector.json +107 -0
  148. package/dist/integrations/dropbox/files/_env.example +24 -0
  149. package/dist/integrations/dropbox/files/ai/tools/get-account.ts +58 -0
  150. package/dist/integrations/dropbox/files/ai/tools/get-file.ts +61 -0
  151. package/dist/integrations/dropbox/files/ai/tools/list-files.ts +56 -0
  152. package/dist/integrations/dropbox/files/ai/tools/search-files.ts +70 -0
  153. package/dist/integrations/dropbox/files/ai/tools/upload-file.ts +48 -0
  154. package/dist/integrations/dropbox/files/app/api/auth/dropbox/callback/route.ts +11 -0
  155. package/dist/integrations/dropbox/files/app/api/auth/dropbox/route.ts +9 -0
  156. package/dist/integrations/dropbox/files/lib/dropbox-client.ts +397 -0
  157. package/dist/integrations/dropbox/files/lib/token-store.ts +5 -0
  158. package/dist/integrations/figma/INTEGRATION_SUMMARY.md +436 -0
  159. package/dist/integrations/figma/README.md +287 -0
  160. package/dist/integrations/figma/connector.json +100 -0
  161. package/dist/integrations/figma/files/_env.example +5 -0
  162. package/dist/integrations/figma/files/ai/tools/get-comments.ts +72 -0
  163. package/dist/integrations/figma/files/ai/tools/get-file.ts +54 -0
  164. package/dist/integrations/figma/files/ai/tools/list-files.ts +39 -0
  165. package/dist/integrations/figma/files/ai/tools/list-projects.ts +69 -0
  166. package/dist/integrations/figma/files/ai/tools/post-comment.ts +54 -0
  167. package/dist/integrations/figma/files/app/api/auth/figma/callback/route.ts +11 -0
  168. package/dist/integrations/figma/files/app/api/auth/figma/route.ts +9 -0
  169. package/dist/integrations/figma/files/lib/figma-client.ts +355 -0
  170. package/dist/integrations/figma/files/lib/token-store.ts +5 -0
  171. package/dist/integrations/figma/files/lib/types.ts +503 -0
  172. package/dist/integrations/freshdesk/connector.json +85 -0
  173. package/dist/integrations/freshdesk/files/_env.example +4 -0
  174. package/dist/integrations/freshdesk/files/ai/tools/create-ticket.ts +60 -0
  175. package/dist/integrations/freshdesk/files/ai/tools/get-ticket.ts +46 -0
  176. package/dist/integrations/freshdesk/files/ai/tools/list-contacts.ts +37 -0
  177. package/dist/integrations/freshdesk/files/ai/tools/list-tickets.ts +59 -0
  178. package/dist/integrations/freshdesk/files/ai/tools/update-ticket.ts +61 -0
  179. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/callback/route.ts +11 -0
  180. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/route.ts +7 -0
  181. package/dist/integrations/freshdesk/files/lib/freshdesk-client.ts +178 -0
  182. package/dist/integrations/freshdesk/files/lib/token-store.ts +11 -0
  183. package/dist/integrations/github/files/app/api/auth/github/callback/route.ts +6 -127
  184. package/dist/integrations/github/files/app/api/auth/github/route.ts +4 -24
  185. package/dist/integrations/github/files/lib/token-store.ts +2 -110
  186. package/dist/integrations/gitlab/connector.json +100 -0
  187. package/dist/integrations/gitlab/files/_env.example +7 -0
  188. package/dist/integrations/gitlab/files/ai/tools/create-issue.ts +49 -0
  189. package/dist/integrations/gitlab/files/ai/tools/get-issue.ts +56 -0
  190. package/dist/integrations/gitlab/files/ai/tools/list-merge-requests.ts +75 -0
  191. package/dist/integrations/gitlab/files/ai/tools/list-projects.ts +51 -0
  192. package/dist/integrations/gitlab/files/ai/tools/search-issues.ts +67 -0
  193. package/dist/integrations/gitlab/files/app/api/auth/gitlab/callback/route.ts +11 -0
  194. package/dist/integrations/gitlab/files/app/api/auth/gitlab/route.ts +9 -0
  195. package/dist/integrations/gitlab/files/lib/gitlab-client.ts +366 -0
  196. package/dist/integrations/gitlab/files/lib/token-store.ts +5 -0
  197. package/dist/integrations/gmail/files/app/api/auth/gmail/callback/route.ts +7 -108
  198. package/dist/integrations/gmail/files/app/api/auth/gmail/route.ts +5 -23
  199. package/dist/integrations/gmail/files/lib/gmail-client.ts +16 -55
  200. package/dist/integrations/gmail/files/lib/token-store.ts +4 -109
  201. package/dist/integrations/hubspot/connector.json +98 -0
  202. package/dist/integrations/hubspot/files/_env.example +5 -0
  203. package/dist/integrations/hubspot/files/ai/tools/create-contact.ts +41 -0
  204. package/dist/integrations/hubspot/files/ai/tools/create-deal.ts +41 -0
  205. package/dist/integrations/hubspot/files/ai/tools/get-contact.ts +39 -0
  206. package/dist/integrations/hubspot/files/ai/tools/list-contacts.ts +43 -0
  207. package/dist/integrations/hubspot/files/ai/tools/list-deals.ts +41 -0
  208. package/dist/integrations/hubspot/files/app/api/auth/hubspot/callback/route.ts +11 -0
  209. package/dist/integrations/hubspot/files/app/api/auth/hubspot/route.ts +9 -0
  210. package/dist/integrations/hubspot/files/lib/hubspot-client.ts +393 -0
  211. package/dist/integrations/hubspot/files/lib/token-store.ts +5 -0
  212. package/dist/integrations/intercom/connector.json +85 -0
  213. package/dist/integrations/intercom/files/_env.example +4 -0
  214. package/dist/integrations/intercom/files/ai/tools/get-contact.ts +35 -0
  215. package/dist/integrations/intercom/files/ai/tools/get-conversation.ts +55 -0
  216. package/dist/integrations/intercom/files/ai/tools/list-contacts.ts +35 -0
  217. package/dist/integrations/intercom/files/ai/tools/list-conversations.ts +49 -0
  218. package/dist/integrations/intercom/files/ai/tools/send-message.ts +34 -0
  219. package/dist/integrations/intercom/files/app/api/auth/intercom/callback/route.ts +11 -0
  220. package/dist/integrations/intercom/files/app/api/auth/intercom/route.ts +7 -0
  221. package/dist/integrations/intercom/files/lib/intercom-client.ts +308 -0
  222. package/dist/integrations/intercom/files/lib/token-store.ts +11 -0
  223. package/dist/integrations/jira/connector.json +109 -0
  224. package/dist/integrations/jira/files/ai/tools/create-issue.ts +47 -0
  225. package/dist/integrations/jira/files/ai/tools/get-issue.ts +57 -0
  226. package/dist/integrations/jira/files/ai/tools/list-projects.ts +30 -0
  227. package/dist/integrations/jira/files/ai/tools/search-issues.ts +49 -0
  228. package/dist/integrations/jira/files/ai/tools/update-issue.ts +81 -0
  229. package/dist/integrations/jira/files/app/api/auth/jira/callback/route.ts +11 -0
  230. package/dist/integrations/jira/files/app/api/auth/jira/route.ts +9 -0
  231. package/dist/integrations/jira/files/lib/jira-client.ts +338 -0
  232. package/dist/integrations/jira/files/lib/token-store.ts +5 -0
  233. package/dist/integrations/linear/connector.json +100 -0
  234. package/dist/integrations/linear/files/_env.example +6 -0
  235. package/dist/integrations/linear/files/ai/tools/create-issue.ts +71 -0
  236. package/dist/integrations/linear/files/ai/tools/get-issue.ts +55 -0
  237. package/dist/integrations/linear/files/ai/tools/list-projects.ts +43 -0
  238. package/dist/integrations/linear/files/ai/tools/search-issues.ts +54 -0
  239. package/dist/integrations/linear/files/ai/tools/update-issue.ts +71 -0
  240. package/dist/integrations/linear/files/app/api/auth/linear/callback/route.ts +11 -0
  241. package/dist/integrations/linear/files/app/api/auth/linear/route.ts +9 -0
  242. package/dist/integrations/linear/files/lib/linear-client.ts +464 -0
  243. package/dist/integrations/linear/files/lib/token-store.ts +5 -0
  244. package/dist/integrations/mailchimp/connector.json +85 -0
  245. package/dist/integrations/mailchimp/files/_env.example +4 -0
  246. package/dist/integrations/mailchimp/files/ai/tools/get-campaign.ts +45 -0
  247. package/dist/integrations/mailchimp/files/ai/tools/get-list.ts +51 -0
  248. package/dist/integrations/mailchimp/files/ai/tools/list-campaigns.ts +46 -0
  249. package/dist/integrations/mailchimp/files/ai/tools/list-lists.ts +46 -0
  250. package/dist/integrations/mailchimp/files/ai/tools/list-members.ts +58 -0
  251. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/callback/route.ts +11 -0
  252. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/route.ts +7 -0
  253. package/dist/integrations/mailchimp/files/lib/mailchimp-client.ts +267 -0
  254. package/dist/integrations/mailchimp/files/lib/token-store.ts +11 -0
  255. package/dist/integrations/mixpanel/connector.json +96 -0
  256. package/dist/integrations/mixpanel/files/_env.example +11 -0
  257. package/dist/integrations/mixpanel/files/ai/tools/get-funnel.ts +46 -0
  258. package/dist/integrations/mixpanel/files/ai/tools/get-retention.ts +64 -0
  259. package/dist/integrations/mixpanel/files/ai/tools/list-cohorts.ts +46 -0
  260. package/dist/integrations/mixpanel/files/ai/tools/query-events.ts +43 -0
  261. package/dist/integrations/mixpanel/files/ai/tools/track-event.ts +41 -0
  262. package/dist/integrations/mixpanel/files/lib/mixpanel-client.ts +319 -0
  263. package/dist/integrations/mixpanel/files/lib/token-store.ts +43 -0
  264. package/dist/integrations/monday/connector.json +85 -0
  265. package/dist/integrations/monday/files/_env.example +4 -0
  266. package/dist/integrations/monday/files/ai/tools/create-item.ts +36 -0
  267. package/dist/integrations/monday/files/ai/tools/get-item.ts +31 -0
  268. package/dist/integrations/monday/files/ai/tools/list-boards.ts +29 -0
  269. package/dist/integrations/monday/files/ai/tools/list-items.ts +36 -0
  270. package/dist/integrations/monday/files/ai/tools/update-item.ts +36 -0
  271. package/dist/integrations/monday/files/app/api/auth/monday/callback/route.ts +11 -0
  272. package/dist/integrations/monday/files/app/api/auth/monday/route.ts +7 -0
  273. package/dist/integrations/monday/files/lib/monday-client.ts +329 -0
  274. package/dist/integrations/monday/files/lib/token-store.ts +11 -0
  275. package/dist/integrations/neon/connector.json +89 -0
  276. package/dist/integrations/neon/files/_env.example +6 -0
  277. package/dist/integrations/neon/files/ai/tools/describe-table.ts +38 -0
  278. package/dist/integrations/neon/files/ai/tools/list-branches.ts +35 -0
  279. package/dist/integrations/neon/files/ai/tools/list-projects.ts +31 -0
  280. package/dist/integrations/neon/files/ai/tools/list-tables.ts +49 -0
  281. package/dist/integrations/neon/files/ai/tools/query-database.ts +33 -0
  282. package/dist/integrations/neon/files/app/api/auth/neon/route.ts +51 -0
  283. package/dist/integrations/neon/files/lib/neon-client.ts +294 -0
  284. package/dist/integrations/neon/files/lib/token-store.ts +29 -0
  285. package/dist/integrations/notion/connector.json +87 -0
  286. package/dist/integrations/notion/files/_env.example +6 -0
  287. package/dist/integrations/notion/files/ai/tools/create-page.ts +32 -0
  288. package/dist/integrations/notion/files/ai/tools/query-database.ts +44 -0
  289. package/dist/integrations/notion/files/ai/tools/read-page.ts +34 -0
  290. package/dist/integrations/notion/files/ai/tools/search-notion.ts +51 -0
  291. package/dist/integrations/notion/files/app/api/auth/notion/callback/route.ts +11 -0
  292. package/dist/integrations/notion/files/app/api/auth/notion/route.ts +9 -0
  293. package/dist/integrations/notion/files/lib/notion-client.ts +218 -0
  294. package/dist/integrations/notion/files/lib/token-store.ts +5 -0
  295. package/dist/integrations/onedrive/connector.json +100 -0
  296. package/dist/integrations/onedrive/files/_env.example +23 -0
  297. package/dist/integrations/onedrive/files/ai/tools/download-file.ts +38 -0
  298. package/dist/integrations/onedrive/files/ai/tools/list-files.ts +63 -0
  299. package/dist/integrations/onedrive/files/ai/tools/search-files.ts +59 -0
  300. package/dist/integrations/onedrive/files/ai/tools/upload-file.ts +43 -0
  301. package/dist/integrations/onedrive/files/app/api/auth/onedrive/callback/route.ts +11 -0
  302. package/dist/integrations/onedrive/files/app/api/auth/onedrive/route.ts +9 -0
  303. package/dist/integrations/onedrive/files/lib/onedrive-client.ts +314 -0
  304. package/dist/integrations/onedrive/files/lib/token-store.ts +5 -0
  305. package/dist/integrations/outlook/README.md +308 -0
  306. package/dist/integrations/outlook/connector.json +98 -0
  307. package/dist/integrations/outlook/files/_env.example +8 -0
  308. package/dist/integrations/outlook/files/ai/tools/get-email.ts +47 -0
  309. package/dist/integrations/outlook/files/ai/tools/list-emails.ts +46 -0
  310. package/dist/integrations/outlook/files/ai/tools/list-folders.ts +22 -0
  311. package/dist/integrations/outlook/files/ai/tools/search-emails.ts +41 -0
  312. package/dist/integrations/outlook/files/ai/tools/send-email.ts +41 -0
  313. package/dist/integrations/outlook/files/app/api/auth/outlook/callback/route.ts +11 -0
  314. package/dist/integrations/outlook/files/app/api/auth/outlook/route.ts +9 -0
  315. package/dist/integrations/outlook/files/lib/outlook-client.ts +204 -0
  316. package/dist/integrations/outlook/files/lib/token-store.ts +5 -0
  317. package/dist/integrations/pipedrive/connector.json +85 -0
  318. package/dist/integrations/pipedrive/files/_env.example +4 -0
  319. package/dist/integrations/pipedrive/files/ai/tools/create-deal.ts +44 -0
  320. package/dist/integrations/pipedrive/files/ai/tools/get-deal.ts +34 -0
  321. package/dist/integrations/pipedrive/files/ai/tools/list-deals.ts +40 -0
  322. package/dist/integrations/pipedrive/files/ai/tools/list-persons.ts +33 -0
  323. package/dist/integrations/pipedrive/files/ai/tools/update-deal.ts +46 -0
  324. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/callback/route.ts +11 -0
  325. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/route.ts +7 -0
  326. package/dist/integrations/pipedrive/files/lib/pipedrive-client.ts +259 -0
  327. package/dist/integrations/pipedrive/files/lib/token-store.ts +11 -0
  328. package/dist/integrations/posthog/connector.json +84 -0
  329. package/dist/integrations/posthog/files/_env.example +6 -0
  330. package/dist/integrations/posthog/files/ai/tools/capture-event.ts +37 -0
  331. package/dist/integrations/posthog/files/ai/tools/get-trends.ts +44 -0
  332. package/dist/integrations/posthog/files/ai/tools/list-feature-flags.ts +38 -0
  333. package/dist/integrations/posthog/files/ai/tools/list-persons.ts +32 -0
  334. package/dist/integrations/posthog/files/lib/posthog-client.ts +286 -0
  335. package/dist/integrations/posthog/files/lib/token-store.ts +21 -0
  336. package/dist/integrations/quickbooks/connector.json +85 -0
  337. package/dist/integrations/quickbooks/files/_env.example +4 -0
  338. package/dist/integrations/quickbooks/files/ai/tools/create-invoice.ts +48 -0
  339. package/dist/integrations/quickbooks/files/ai/tools/get-customer.ts +36 -0
  340. package/dist/integrations/quickbooks/files/ai/tools/get-invoice.ts +46 -0
  341. package/dist/integrations/quickbooks/files/ai/tools/list-customers.ts +37 -0
  342. package/dist/integrations/quickbooks/files/ai/tools/list-invoices.ts +40 -0
  343. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/callback/route.ts +11 -0
  344. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/route.ts +7 -0
  345. package/dist/integrations/quickbooks/files/lib/quickbooks-client.ts +252 -0
  346. package/dist/integrations/quickbooks/files/lib/token-store.ts +11 -0
  347. package/dist/integrations/salesforce/connector.json +104 -0
  348. package/dist/integrations/salesforce/files/ai/tools/create-lead.ts +101 -0
  349. package/dist/integrations/salesforce/files/ai/tools/get-account.ts +53 -0
  350. package/dist/integrations/salesforce/files/ai/tools/list-accounts.ts +50 -0
  351. package/dist/integrations/salesforce/files/ai/tools/list-contacts.ts +54 -0
  352. package/dist/integrations/salesforce/files/ai/tools/list-opportunities.ts +55 -0
  353. package/dist/integrations/salesforce/files/app/api/auth/salesforce/callback/route.ts +11 -0
  354. package/dist/integrations/salesforce/files/app/api/auth/salesforce/route.ts +9 -0
  355. package/dist/integrations/salesforce/files/lib/salesforce-client.ts +539 -0
  356. package/dist/integrations/salesforce/files/lib/token-store.ts +5 -0
  357. package/dist/integrations/sentry/connector.json +84 -0
  358. package/dist/integrations/sentry/files/_env.example +6 -0
  359. package/dist/integrations/sentry/files/ai/tools/get-issue.ts +66 -0
  360. package/dist/integrations/sentry/files/ai/tools/list-issues.ts +57 -0
  361. package/dist/integrations/sentry/files/ai/tools/list-projects.ts +32 -0
  362. package/dist/integrations/sentry/files/ai/tools/resolve-issue.ts +28 -0
  363. package/dist/integrations/sentry/files/lib/sentry-client.ts +268 -0
  364. package/dist/integrations/sentry/files/lib/token-store.ts +29 -0
  365. package/dist/integrations/servicenow/connector.json +66 -0
  366. package/dist/integrations/servicenow/files/_env.example +5 -0
  367. package/dist/integrations/servicenow/files/ai/tools/create-incident.ts +58 -0
  368. package/dist/integrations/servicenow/files/ai/tools/get-incident.ts +59 -0
  369. package/dist/integrations/servicenow/files/ai/tools/list-incidents.ts +72 -0
  370. package/dist/integrations/servicenow/files/ai/tools/search-knowledge.ts +48 -0
  371. package/dist/integrations/servicenow/files/ai/tools/update-incident.ts +60 -0
  372. package/dist/integrations/servicenow/files/app/api/auth/servicenow/callback/route.ts +89 -0
  373. package/dist/integrations/servicenow/files/app/api/auth/servicenow/route.ts +42 -0
  374. package/dist/integrations/servicenow/files/lib/servicenow-client.ts +239 -0
  375. package/dist/integrations/servicenow/files/lib/token-store.ts +42 -0
  376. package/dist/integrations/sharepoint/connector.json +99 -0
  377. package/dist/integrations/sharepoint/files/ai/tools/get-file.ts +93 -0
  378. package/dist/integrations/sharepoint/files/ai/tools/get-site.ts +51 -0
  379. package/dist/integrations/sharepoint/files/ai/tools/list-files.ts +63 -0
  380. package/dist/integrations/sharepoint/files/ai/tools/list-sites.ts +28 -0
  381. package/dist/integrations/sharepoint/files/ai/tools/upload-file.ts +72 -0
  382. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/callback/route.ts +11 -0
  383. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/route.ts +9 -0
  384. package/dist/integrations/sharepoint/files/lib/sharepoint-client.ts +420 -0
  385. package/dist/integrations/sharepoint/files/lib/token-store.ts +5 -0
  386. package/dist/integrations/sheets/README.md +331 -0
  387. package/dist/integrations/sheets/connector.json +99 -0
  388. package/dist/integrations/sheets/files/_env.example +8 -0
  389. package/dist/integrations/sheets/files/ai/tools/create-spreadsheet.ts +85 -0
  390. package/dist/integrations/sheets/files/ai/tools/get-spreadsheet.ts +39 -0
  391. package/dist/integrations/sheets/files/ai/tools/list-spreadsheets.ts +41 -0
  392. package/dist/integrations/sheets/files/ai/tools/read-range.ts +35 -0
  393. package/dist/integrations/sheets/files/ai/tools/write-range.ts +51 -0
  394. package/dist/integrations/sheets/files/app/api/auth/sheets/callback/route.ts +11 -0
  395. package/dist/integrations/sheets/files/app/api/auth/sheets/route.ts +9 -0
  396. package/dist/integrations/sheets/files/lib/sheets-client.ts +425 -0
  397. package/dist/integrations/sheets/files/lib/token-store.ts +5 -0
  398. package/dist/integrations/shopify/connector.json +99 -0
  399. package/dist/integrations/shopify/files/_env.example +5 -0
  400. package/dist/integrations/shopify/files/ai/tools/get-order.ts +49 -0
  401. package/dist/integrations/shopify/files/ai/tools/get-product.ts +39 -0
  402. package/dist/integrations/shopify/files/ai/tools/list-customers.ts +40 -0
  403. package/dist/integrations/shopify/files/ai/tools/list-orders.ts +52 -0
  404. package/dist/integrations/shopify/files/ai/tools/list-products.ts +39 -0
  405. package/dist/integrations/shopify/files/app/api/auth/shopify/callback/route.ts +11 -0
  406. package/dist/integrations/shopify/files/app/api/auth/shopify/route.ts +7 -0
  407. package/dist/integrations/shopify/files/lib/shopify-client.ts +198 -0
  408. package/dist/integrations/shopify/files/lib/token-store.ts +11 -0
  409. package/dist/integrations/slack/files/app/api/auth/slack/callback/route.ts +6 -127
  410. package/dist/integrations/slack/files/app/api/auth/slack/route.ts +4 -24
  411. package/dist/integrations/slack/files/lib/token-store.ts +2 -110
  412. package/dist/integrations/snowflake/connector.json +151 -0
  413. package/dist/integrations/snowflake/files/_env.example +16 -0
  414. package/dist/integrations/snowflake/files/ai/tools/describe-table.ts +57 -0
  415. package/dist/integrations/snowflake/files/ai/tools/list-databases.ts +34 -0
  416. package/dist/integrations/snowflake/files/ai/tools/list-schemas.ts +40 -0
  417. package/dist/integrations/snowflake/files/ai/tools/list-tables.ts +49 -0
  418. package/dist/integrations/snowflake/files/ai/tools/run-query.ts +119 -0
  419. package/dist/integrations/snowflake/files/lib/snowflake-client.ts +389 -0
  420. package/dist/integrations/snowflake/files/lib/token-store.ts +77 -0
  421. package/dist/integrations/stripe/connector.json +97 -0
  422. package/dist/integrations/stripe/files/_env.example +6 -0
  423. package/dist/integrations/stripe/files/ai/tools/get-balance.ts +28 -0
  424. package/dist/integrations/stripe/files/ai/tools/get-customer.ts +26 -0
  425. package/dist/integrations/stripe/files/ai/tools/list-customers.ts +42 -0
  426. package/dist/integrations/stripe/files/ai/tools/list-payments.ts +45 -0
  427. package/dist/integrations/stripe/files/ai/tools/list-subscriptions.ts +67 -0
  428. package/dist/integrations/stripe/files/app/api/auth/stripe/route.ts +71 -0
  429. package/dist/integrations/stripe/files/lib/stripe-client.ts +376 -0
  430. package/dist/integrations/stripe/files/lib/token-store.ts +21 -0
  431. package/dist/integrations/supabase/connector.json +101 -0
  432. package/dist/integrations/supabase/files/_env.example +6 -0
  433. package/dist/integrations/supabase/files/ai/tools/delete-row.ts +77 -0
  434. package/dist/integrations/supabase/files/ai/tools/insert-row.ts +35 -0
  435. package/dist/integrations/supabase/files/ai/tools/list-tables.ts +60 -0
  436. package/dist/integrations/supabase/files/ai/tools/query-table.ts +48 -0
  437. package/dist/integrations/supabase/files/ai/tools/update-row.ts +64 -0
  438. package/dist/integrations/supabase/files/app/api/auth/supabase/route.ts +91 -0
  439. package/dist/integrations/supabase/files/lib/supabase-client.ts +296 -0
  440. package/dist/integrations/supabase/files/lib/token-store.ts +47 -0
  441. package/dist/integrations/teams/README.md +256 -0
  442. package/dist/integrations/teams/connector.json +99 -0
  443. package/dist/integrations/teams/files/ai/tools/get-messages.ts +55 -0
  444. package/dist/integrations/teams/files/ai/tools/list-channels.ts +28 -0
  445. package/dist/integrations/teams/files/ai/tools/list-chats.ts +41 -0
  446. package/dist/integrations/teams/files/ai/tools/list-teams.ts +27 -0
  447. package/dist/integrations/teams/files/ai/tools/send-message.ts +61 -0
  448. package/dist/integrations/teams/files/app/api/auth/teams/callback/route.ts +11 -0
  449. package/dist/integrations/teams/files/app/api/auth/teams/route.ts +9 -0
  450. package/dist/integrations/teams/files/lib/teams-client.ts +345 -0
  451. package/dist/integrations/teams/files/lib/token-store.ts +5 -0
  452. package/dist/integrations/trello/connector.json +85 -0
  453. package/dist/integrations/trello/files/_env.example +4 -0
  454. package/dist/integrations/trello/files/ai/tools/create-card.ts +54 -0
  455. package/dist/integrations/trello/files/ai/tools/get-card.ts +33 -0
  456. package/dist/integrations/trello/files/ai/tools/list-boards.ts +29 -0
  457. package/dist/integrations/trello/files/ai/tools/list-cards.ts +52 -0
  458. package/dist/integrations/trello/files/ai/tools/update-card.ts +65 -0
  459. package/dist/integrations/trello/files/app/api/auth/trello/callback/route.ts +11 -0
  460. package/dist/integrations/trello/files/app/api/auth/trello/route.ts +7 -0
  461. package/dist/integrations/trello/files/lib/token-store.ts +11 -0
  462. package/dist/integrations/trello/files/lib/trello-client.ts +202 -0
  463. package/dist/integrations/twilio/connector.json +146 -0
  464. package/dist/integrations/twilio/files/_env.example +14 -0
  465. package/dist/integrations/twilio/files/ai/tools/get-message.ts +58 -0
  466. package/dist/integrations/twilio/files/ai/tools/list-calls.ts +129 -0
  467. package/dist/integrations/twilio/files/ai/tools/list-messages.ts +97 -0
  468. package/dist/integrations/twilio/files/ai/tools/send-sms.ts +75 -0
  469. package/dist/integrations/twilio/files/ai/tools/send-whatsapp.ts +81 -0
  470. package/dist/integrations/twilio/files/lib/token-store.ts +60 -0
  471. package/dist/integrations/twilio/files/lib/twilio-client.ts +375 -0
  472. package/dist/integrations/twitter/connector.json +87 -0
  473. package/dist/integrations/twitter/files/_env.example +6 -0
  474. package/dist/integrations/twitter/files/ai/tools/get-timeline.ts +59 -0
  475. package/dist/integrations/twitter/files/ai/tools/post-tweet.ts +49 -0
  476. package/dist/integrations/twitter/files/ai/tools/search-tweets.ts +71 -0
  477. package/dist/integrations/twitter/files/app/api/auth/twitter/callback/route.ts +11 -0
  478. package/dist/integrations/twitter/files/app/api/auth/twitter/route.ts +9 -0
  479. package/dist/integrations/twitter/files/lib/token-store.ts +5 -0
  480. package/dist/integrations/twitter/files/lib/twitter-client.ts +236 -0
  481. package/dist/integrations/webex/connector.json +85 -0
  482. package/dist/integrations/webex/files/_env.example +4 -0
  483. package/dist/integrations/webex/files/ai/tools/create-meeting.ts +69 -0
  484. package/dist/integrations/webex/files/ai/tools/get-meeting.ts +31 -0
  485. package/dist/integrations/webex/files/ai/tools/list-meetings.ts +44 -0
  486. package/dist/integrations/webex/files/ai/tools/list-rooms.ts +35 -0
  487. package/dist/integrations/webex/files/ai/tools/send-message.ts +51 -0
  488. package/dist/integrations/webex/files/app/api/auth/webex/callback/route.ts +11 -0
  489. package/dist/integrations/webex/files/app/api/auth/webex/route.ts +7 -0
  490. package/dist/integrations/webex/files/lib/token-store.ts +11 -0
  491. package/dist/integrations/webex/files/lib/webex-client.ts +279 -0
  492. package/dist/integrations/xero/connector.json +85 -0
  493. package/dist/integrations/xero/files/_env.example +4 -0
  494. package/dist/integrations/xero/files/ai/tools/create-invoice.ts +65 -0
  495. package/dist/integrations/xero/files/ai/tools/get-contact.ts +40 -0
  496. package/dist/integrations/xero/files/ai/tools/get-invoice.ts +44 -0
  497. package/dist/integrations/xero/files/ai/tools/list-contacts.ts +54 -0
  498. package/dist/integrations/xero/files/ai/tools/list-invoices.ts +54 -0
  499. package/dist/integrations/xero/files/app/api/auth/xero/callback/route.ts +11 -0
  500. package/dist/integrations/xero/files/app/api/auth/xero/route.ts +7 -0
  501. package/dist/integrations/xero/files/lib/token-store.ts +11 -0
  502. package/dist/integrations/xero/files/lib/xero-client.ts +292 -0
  503. package/dist/integrations/zendesk/connector.json +61 -0
  504. package/dist/integrations/zendesk/files/_env.example +5 -0
  505. package/dist/integrations/zendesk/files/ai/tools/create-ticket.ts +82 -0
  506. package/dist/integrations/zendesk/files/ai/tools/get-ticket.ts +53 -0
  507. package/dist/integrations/zendesk/files/ai/tools/list-tickets.ts +60 -0
  508. package/dist/integrations/zendesk/files/ai/tools/search-tickets.ts +56 -0
  509. package/dist/integrations/zendesk/files/app/api/auth/zendesk/callback/route.ts +91 -0
  510. package/dist/integrations/zendesk/files/app/api/auth/zendesk/route.ts +41 -0
  511. package/dist/integrations/zendesk/files/lib/token-store.ts +47 -0
  512. package/dist/integrations/zendesk/files/lib/zendesk-client.ts +265 -0
  513. package/dist/integrations/zoom/connector.json +85 -0
  514. package/dist/integrations/zoom/files/_env.example +4 -0
  515. package/dist/integrations/zoom/files/ai/tools/create-meeting.ts +106 -0
  516. package/dist/integrations/zoom/files/ai/tools/delete-meeting.ts +32 -0
  517. package/dist/integrations/zoom/files/ai/tools/get-meeting.ts +44 -0
  518. package/dist/integrations/zoom/files/ai/tools/list-meetings.ts +47 -0
  519. package/dist/integrations/zoom/files/ai/tools/update-meeting.ts +111 -0
  520. package/dist/integrations/zoom/files/app/api/auth/zoom/callback/route.ts +11 -0
  521. package/dist/integrations/zoom/files/app/api/auth/zoom/route.ts +7 -0
  522. package/dist/integrations/zoom/files/lib/token-store.ts +11 -0
  523. package/dist/integrations/zoom/files/lib/zoom-client.ts +228 -0
  524. package/dist/oauth/handlers.js +554 -0
  525. package/dist/oauth/handlers.js.map +7 -0
  526. package/dist/oauth/index.js +1157 -0
  527. package/dist/oauth/index.js.map +7 -0
  528. package/dist/oauth/providers.js +927 -0
  529. package/dist/oauth/providers.js.map +7 -0
  530. package/dist/oauth/token-store.js +82 -0
  531. package/dist/oauth/token-store.js.map +7 -0
  532. package/package.json +25 -1
  533. package/dist/integrations/gmail/files/lib/oauth.ts +0 -145
  534. package/dist/integrations/slack/files/lib/oauth.ts +0 -145
  535. /package/dist/integrations/{calendar → docs-google}/files/lib/oauth.ts +0 -0
  536. /package/dist/integrations/{github → drive}/files/lib/oauth.ts +0 -0
@@ -0,0 +1,308 @@
1
+ # Microsoft Outlook Integration for Veryfront
2
+
3
+ Complete Microsoft Outlook integration following the veryfront integration pattern.
4
+
5
+ ## Features
6
+
7
+ - OAuth 2.0 authentication with Microsoft Graph API
8
+ - Read, send, and manage Outlook emails
9
+ - Search emails across all folders
10
+ - List and organize mail folders
11
+ - Full TypeScript type safety
12
+
13
+ ## Setup Instructions
14
+
15
+ ### 1. Create Azure App Registration
16
+
17
+ 1. Go to [Azure Portal - App Registrations](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade)
18
+ 2. Click "New registration"
19
+ 3. Enter application details:
20
+ - Name: Your app name (e.g., "Veryfront Outlook Integration")
21
+ - Supported account types: "Accounts in any organizational directory and personal Microsoft accounts"
22
+ - Redirect URI: `http://localhost:3000/api/auth/outlook/callback` (adjust for your domain)
23
+ 4. Click "Register"
24
+
25
+ ### 2. Configure App Credentials
26
+
27
+ 1. Note the "Application (client) ID" - this is your `MICROSOFT_CLIENT_ID`
28
+ 2. Go to "Certificates & secrets"
29
+ 3. Click "New client secret"
30
+ 4. Add a description and expiration period
31
+ 5. Copy the secret value - this is your `MICROSOFT_CLIENT_SECRET`
32
+
33
+ ### 3. Set API Permissions
34
+
35
+ 1. Go to "API permissions"
36
+ 2. Click "Add a permission" → "Microsoft Graph" → "Delegated permissions"
37
+ 3. Add these permissions:
38
+ - `Mail.Read` - Read user mail
39
+ - `Mail.Send` - Send mail as a user
40
+ - `Mail.ReadWrite` - Read and write access to user mail
41
+ - `offline_access` - Maintain access to data you have given it access to
42
+ 4. Click "Grant admin consent" (if available)
43
+
44
+ ### 4. Add Environment Variables
45
+
46
+ Add to your `.env` file:
47
+
48
+ ```bash
49
+ MICROSOFT_CLIENT_ID=your_client_id_here
50
+ MICROSOFT_CLIENT_SECRET=your_client_secret_here
51
+ ```
52
+
53
+ ## File Structure
54
+
55
+ ```
56
+ outlook/
57
+ ├── connector.json # Integration configuration
58
+ ├── files/
59
+ │ ├── _env.example # Example environment variables
60
+ │ ├── lib/
61
+ │ │ ├── oauth.ts # OAuth flow utilities
62
+ │ │ ├── outlook-client.ts # Microsoft Graph API client
63
+ │ │ └── token-store.ts # Token storage (in-memory)
64
+ │ ├── app/api/auth/outlook/
65
+ │ │ ├── route.ts # OAuth initiation
66
+ │ │ └── callback/route.ts # OAuth callback handler
67
+ │ └── ai/tools/
68
+ │ ├── list-emails.ts # List recent emails
69
+ │ ├── get-email.ts # Get email details
70
+ │ ├── send-email.ts # Send email
71
+ │ ├── search-emails.ts # Search emails
72
+ │ └── list-folders.ts # List mail folders
73
+ ```
74
+
75
+ ## API Client (`outlook-client.ts`)
76
+
77
+ ### Functions
78
+
79
+ #### `listEmails(options?)`
80
+ List emails from inbox or specific folder.
81
+ - `folderId?: string` - Folder ID (default: inbox)
82
+ - `top?: number` - Max results
83
+ - `skip?: number` - Pagination offset
84
+ - `filter?: string` - OData filter
85
+ - `orderBy?: string` - Sort order
86
+
87
+ #### `getEmail(messageId: string)`
88
+ Get detailed email information including full body.
89
+
90
+ #### `sendEmail(options: SendEmailOptions)`
91
+ Send a new email message.
92
+ - `to: string[]` - Recipients
93
+ - `subject: string` - Subject line
94
+ - `body: string` - Email body
95
+ - `cc?: string[]` - CC recipients
96
+ - `bcc?: string[]` - BCC recipients
97
+ - `importance?: 'low' | 'normal' | 'high'`
98
+ - `bodyType?: 'text' | 'html'`
99
+
100
+ #### `searchEmails(options)`
101
+ Search emails by query string.
102
+ - `query: string` - Search query
103
+ - `top?: number` - Max results
104
+ - `skip?: number` - Pagination offset
105
+
106
+ #### `listFolders()`
107
+ List all mail folders in the mailbox.
108
+
109
+ #### Helper Functions
110
+ - `markAsRead(messageId: string)`
111
+ - `markAsUnread(messageId: string)`
112
+ - `deleteEmail(messageId: string)`
113
+ - `moveEmail(messageId: string, destinationFolderId: string)`
114
+ - `formatEmail(message: OutlookMessage)` - Format for display
115
+
116
+ ## AI Tools
117
+
118
+ ### 1. `list-emails`
119
+ List recent emails from inbox or folder.
120
+
121
+ **Parameters:**
122
+ - `folderId?: string` - Folder ID
123
+ - `limit?: number` (1-50, default: 10) - Max emails
124
+ - `unreadOnly?: boolean` - Only unread emails
125
+ - `orderBy?: string` - Sort order
126
+
127
+ **Example:**
128
+ ```typescript
129
+ {
130
+ folderId: "inbox",
131
+ limit: 20,
132
+ unreadOnly: true,
133
+ orderBy: "receivedDateTime desc"
134
+ }
135
+ ```
136
+
137
+ ### 2. `get-email`
138
+ Get detailed email information.
139
+
140
+ **Parameters:**
141
+ - `messageId: string` - Email ID
142
+ - `includeBody?: boolean` (default: true) - Include full body
143
+
144
+ **Example:**
145
+ ```typescript
146
+ {
147
+ messageId: "AAMkAGI2TG93AAA=",
148
+ includeBody: true
149
+ }
150
+ ```
151
+
152
+ ### 3. `send-email`
153
+ Send a new email message.
154
+
155
+ **Parameters:**
156
+ - `to: string[]` - Recipient emails
157
+ - `subject: string` - Subject line
158
+ - `body: string` - Email body
159
+ - `cc?: string[]` - CC emails
160
+ - `bcc?: string[]` - BCC emails
161
+ - `importance?: 'low' | 'normal' | 'high'`
162
+ - `bodyType?: 'text' | 'html'`
163
+
164
+ **Example:**
165
+ ```typescript
166
+ {
167
+ to: ["user@example.com"],
168
+ subject: "Meeting Follow-up",
169
+ body: "Thank you for attending...",
170
+ cc: ["manager@example.com"],
171
+ importance: "high",
172
+ bodyType: "text"
173
+ }
174
+ ```
175
+
176
+ ### 4. `search-emails`
177
+ Search emails across all fields.
178
+
179
+ **Parameters:**
180
+ - `query: string` - Search query
181
+ - `limit?: number` (1-50, default: 10) - Max results
182
+
183
+ **Example:**
184
+ ```typescript
185
+ {
186
+ query: "quarterly report",
187
+ limit: 15
188
+ }
189
+ ```
190
+
191
+ ### 5. `list-folders`
192
+ List all mail folders.
193
+
194
+ **Parameters:** None
195
+
196
+ **Returns:** Array of folders with counts and metadata.
197
+
198
+ ## OAuth Configuration
199
+
200
+ ### Authorization URL
201
+ ```
202
+ https://login.microsoftonline.com/common/oauth2/v2.0/authorize
203
+ ```
204
+
205
+ ### Token URL
206
+ ```
207
+ https://login.microsoftonline.com/common/oauth2/v2.0/token
208
+ ```
209
+
210
+ ### Scopes
211
+ - `Mail.Read` - Read user mail
212
+ - `Mail.Send` - Send mail
213
+ - `Mail.ReadWrite` - Full mail access
214
+ - `offline_access` - Refresh token
215
+
216
+ ### Token Authentication
217
+ Uses `body` method (credentials sent in request body as form parameters).
218
+
219
+ ## Usage Flow
220
+
221
+ 1. User navigates to `/api/auth/outlook`
222
+ 2. Redirected to Microsoft login
223
+ 3. User authorizes application
224
+ 4. Microsoft redirects to `/api/auth/outlook/callback` with code
225
+ 5. Code exchanged for access token
226
+ 6. Token stored (in-memory by default)
227
+ 7. AI tools can now access Outlook data
228
+
229
+ ## Production Considerations
230
+
231
+ ### Token Storage
232
+ The default `token-store.ts` uses in-memory storage. For production:
233
+
234
+ 1. Replace with database-backed storage
235
+ 2. Implement token encryption
236
+ 3. Support multiple users with session management
237
+ 4. Implement token refresh logic
238
+
239
+ ### Token Refresh
240
+ Access tokens expire after ~1 hour. Implement refresh logic:
241
+
242
+ ```typescript
243
+ import { refreshAccessToken } from './oauth'
244
+ import { getRefreshToken, setTokens } from './token-store'
245
+
246
+ async function ensureValidToken() {
247
+ const refreshToken = getRefreshToken()
248
+ if (refreshToken) {
249
+ const tokens = await refreshAccessToken(refreshToken)
250
+ setTokens({
251
+ accessToken: tokens.access_token,
252
+ refreshToken: tokens.refresh_token,
253
+ expiresAt: Date.now() + tokens.expires_in * 1000,
254
+ })
255
+ }
256
+ }
257
+ ```
258
+
259
+ ### Security
260
+ - Store secrets in environment variables
261
+ - Use HTTPS in production
262
+ - Implement CSRF protection (state parameter)
263
+ - Validate redirect URIs
264
+ - Rate limit API calls
265
+
266
+ ## Microsoft Graph API Resources
267
+
268
+ - [Microsoft Graph Documentation](https://docs.microsoft.com/graph/)
269
+ - [Mail API Reference](https://docs.microsoft.com/graph/api/resources/mail-api-overview)
270
+ - [Authentication Guide](https://docs.microsoft.com/graph/auth/)
271
+ - [OAuth 2.0 Flow](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow)
272
+
273
+ ## Troubleshooting
274
+
275
+ ### Common Issues
276
+
277
+ **"Not authenticated" error**
278
+ - Verify OAuth flow completed successfully
279
+ - Check token storage is working
280
+ - Ensure tokens haven't expired
281
+
282
+ **"Insufficient permissions" error**
283
+ - Verify all required scopes are requested
284
+ - Check admin consent was granted
285
+ - Ensure API permissions are enabled in Azure
286
+
287
+ **"Invalid client" error**
288
+ - Verify `MICROSOFT_CLIENT_ID` is correct
289
+ - Check `MICROSOFT_CLIENT_SECRET` is valid
290
+ - Ensure redirect URI matches Azure configuration
291
+
292
+ ## Testing
293
+
294
+ To test the integration:
295
+
296
+ 1. Start your development server
297
+ 2. Navigate to `/api/auth/outlook`
298
+ 3. Complete Microsoft OAuth flow
299
+ 4. Test AI tools via chat interface
300
+
301
+ Example prompts:
302
+ - "List my recent emails"
303
+ - "Search for emails about project alpha"
304
+ - "Send an email to john@example.com"
305
+
306
+ ## License
307
+
308
+ Part of the Veryfront framework.
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "outlook",
3
+ "displayName": "Microsoft Outlook",
4
+ "icon": "outlook.svg",
5
+ "description": "Read, send, and manage Outlook emails",
6
+ "auth": {
7
+ "type": "oauth2",
8
+ "provider": "microsoft",
9
+ "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
10
+ "tokenUrl": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
11
+ "scopes": [
12
+ "Mail.Read",
13
+ "Mail.Send",
14
+ "Mail.ReadWrite",
15
+ "offline_access"
16
+ ],
17
+ "callbackPath": "/api/auth/outlook/callback",
18
+ "tokenAuthMethod": "body",
19
+ "requiredApis": [
20
+ {
21
+ "name": "Microsoft Graph API",
22
+ "enableUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade"
23
+ }
24
+ ]
25
+ },
26
+ "envVars": [
27
+ {
28
+ "name": "MICROSOFT_CLIENT_ID",
29
+ "description": "Microsoft Azure App Client ID (Application ID)",
30
+ "required": true,
31
+ "sensitive": false,
32
+ "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade"
33
+ },
34
+ {
35
+ "name": "MICROSOFT_CLIENT_SECRET",
36
+ "description": "Microsoft Azure App Client Secret",
37
+ "required": true,
38
+ "sensitive": true,
39
+ "docsUrl": "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade"
40
+ }
41
+ ],
42
+ "tools": [
43
+ {
44
+ "id": "list-emails",
45
+ "name": "List Emails",
46
+ "description": "List recent emails from inbox or a specific folder",
47
+ "requiresWrite": false
48
+ },
49
+ {
50
+ "id": "get-email",
51
+ "name": "Get Email",
52
+ "description": "Get detailed information about a specific email",
53
+ "requiresWrite": false
54
+ },
55
+ {
56
+ "id": "send-email",
57
+ "name": "Send Email",
58
+ "description": "Send a new email message",
59
+ "requiresWrite": true
60
+ },
61
+ {
62
+ "id": "search-emails",
63
+ "name": "Search Emails",
64
+ "description": "Search emails by query, subject, sender, or date",
65
+ "requiresWrite": false
66
+ },
67
+ {
68
+ "id": "list-folders",
69
+ "name": "List Folders",
70
+ "description": "List all mail folders in the mailbox",
71
+ "requiresWrite": false
72
+ }
73
+ ],
74
+ "prompts": [
75
+ {
76
+ "id": "check-emails",
77
+ "title": "Check my emails",
78
+ "prompt": "List my recent unread emails and summarize the most important ones.",
79
+ "category": "productivity",
80
+ "icon": "mail"
81
+ },
82
+ {
83
+ "id": "search-emails",
84
+ "title": "Search my emails",
85
+ "prompt": "Search my emails for specific topics, senders, or date ranges.",
86
+ "category": "productivity",
87
+ "icon": "search"
88
+ },
89
+ {
90
+ "id": "draft-email",
91
+ "title": "Draft an email",
92
+ "prompt": "Help me draft a professional email with proper formatting and tone.",
93
+ "category": "productivity",
94
+ "icon": "compose"
95
+ }
96
+ ],
97
+ "suggestedWith": ["teams", "calendar", "gmail"]
98
+ }
@@ -0,0 +1,8 @@
1
+ # Microsoft Outlook Integration
2
+ # Get these from: https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
3
+
4
+ # Your Microsoft Azure App Client ID (Application ID)
5
+ MICROSOFT_CLIENT_ID=your_client_id_here
6
+
7
+ # Your Microsoft Azure App Client Secret
8
+ MICROSOFT_CLIENT_SECRET=your_client_secret_here
@@ -0,0 +1,47 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { getEmail } from "../../lib/outlook-client.ts";
4
+
5
+ export default tool({
6
+ id: "get-email",
7
+ description:
8
+ "Get detailed information about a specific email, including full body content, recipients, and metadata.",
9
+ inputSchema: z.object({
10
+ messageId: z.string().describe("The ID of the email message to retrieve"),
11
+ includeBody: z.boolean().default(true).describe("Include full email body content"),
12
+ }),
13
+ async execute({ messageId, includeBody }) {
14
+ const message = await getEmail(messageId);
15
+
16
+ return {
17
+ id: message.id,
18
+ subject: message.subject,
19
+ from: {
20
+ name: message.from.emailAddress.name,
21
+ email: message.from.emailAddress.address,
22
+ },
23
+ to: message.toRecipients.map((r) => ({
24
+ name: r.emailAddress.name,
25
+ email: r.emailAddress.address,
26
+ })),
27
+ cc: message.ccRecipients?.map((r) => ({
28
+ name: r.emailAddress.name,
29
+ email: r.emailAddress.address,
30
+ })),
31
+ body: includeBody
32
+ ? {
33
+ contentType: message.body.contentType,
34
+ content: message.body.content,
35
+ }
36
+ : undefined,
37
+ bodyPreview: message.bodyPreview,
38
+ receivedAt: message.receivedDateTime,
39
+ sentAt: message.sentDateTime,
40
+ isRead: message.isRead,
41
+ hasAttachments: message.hasAttachments,
42
+ importance: message.importance,
43
+ conversationId: message.conversationId,
44
+ webLink: message.webLink,
45
+ };
46
+ },
47
+ });
@@ -0,0 +1,46 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { listEmails } from "../../lib/outlook-client.ts";
4
+
5
+ export default tool({
6
+ id: "list-emails",
7
+ description:
8
+ "List recent emails from inbox or a specific folder. Returns email metadata including subject, sender, date, and preview.",
9
+ inputSchema: z.object({
10
+ folderId: z.string().optional().describe("Folder ID to list emails from (default: inbox)"),
11
+ limit: z.number().min(1).max(50).default(10).describe("Maximum number of emails to return"),
12
+ unreadOnly: z.boolean().default(false).describe("Only return unread emails"),
13
+ orderBy: z.enum(["receivedDateTime desc", "receivedDateTime asc", "subject"]).default(
14
+ "receivedDateTime desc",
15
+ ).describe("Sort order for emails"),
16
+ }),
17
+ async execute({ folderId, limit, unreadOnly, orderBy }) {
18
+ const filter = unreadOnly ? "isRead eq false" : undefined;
19
+
20
+ const messages = await listEmails({
21
+ folderId,
22
+ top: limit,
23
+ filter,
24
+ orderBy,
25
+ });
26
+
27
+ return messages.map((msg) => ({
28
+ id: msg.id,
29
+ subject: msg.subject,
30
+ from: {
31
+ name: msg.from.emailAddress.name,
32
+ email: msg.from.emailAddress.address,
33
+ },
34
+ to: msg.toRecipients.map((r) => ({
35
+ name: r.emailAddress.name,
36
+ email: r.emailAddress.address,
37
+ })),
38
+ preview: msg.bodyPreview,
39
+ receivedAt: msg.receivedDateTime,
40
+ isRead: msg.isRead,
41
+ hasAttachments: msg.hasAttachments,
42
+ importance: msg.importance,
43
+ webLink: msg.webLink,
44
+ }));
45
+ },
46
+ });
@@ -0,0 +1,22 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { listFolders } from "../../lib/outlook-client.ts";
4
+
5
+ export default tool({
6
+ id: "list-folders",
7
+ description:
8
+ "List all mail folders in the mailbox, including inbox, sent items, drafts, and custom folders.",
9
+ inputSchema: z.object({}),
10
+ async execute() {
11
+ const folders = await listFolders();
12
+
13
+ return folders.map((folder) => ({
14
+ id: folder.id,
15
+ name: folder.displayName,
16
+ parentFolderId: folder.parentFolderId,
17
+ childFolderCount: folder.childFolderCount,
18
+ unreadItemCount: folder.unreadItemCount,
19
+ totalItemCount: folder.totalItemCount,
20
+ }));
21
+ },
22
+ });
@@ -0,0 +1,41 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { searchEmails } from "../../lib/outlook-client.ts";
4
+
5
+ export default tool({
6
+ id: "search-emails",
7
+ description:
8
+ "Search emails by query string. Searches across subject, body, sender, and recipients. Supports advanced search syntax.",
9
+ inputSchema: z.object({
10
+ query: z.string().min(1).describe("Search query (searches subject, body, from, to fields)"),
11
+ limit: z.number().min(1).max(50).default(10).describe("Maximum number of results to return"),
12
+ }),
13
+ async execute({ query, limit }) {
14
+ const messages = await searchEmails({
15
+ query,
16
+ top: limit,
17
+ });
18
+
19
+ return {
20
+ totalResults: messages.length,
21
+ emails: messages.map((msg) => ({
22
+ id: msg.id,
23
+ subject: msg.subject,
24
+ from: {
25
+ name: msg.from.emailAddress.name,
26
+ email: msg.from.emailAddress.address,
27
+ },
28
+ to: msg.toRecipients.map((r) => ({
29
+ name: r.emailAddress.name,
30
+ email: r.emailAddress.address,
31
+ })),
32
+ preview: msg.bodyPreview,
33
+ receivedAt: msg.receivedDateTime,
34
+ isRead: msg.isRead,
35
+ hasAttachments: msg.hasAttachments,
36
+ importance: msg.importance,
37
+ webLink: msg.webLink,
38
+ })),
39
+ };
40
+ },
41
+ });
@@ -0,0 +1,41 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { sendEmail } from "../../lib/outlook-client.ts";
4
+
5
+ export default tool({
6
+ id: "send-email",
7
+ description:
8
+ "Send a new email message. Supports multiple recipients, CC, BCC, and importance levels.",
9
+ inputSchema: z.object({
10
+ to: z.array(z.string().email()).min(1).describe("Email addresses of recipients"),
11
+ subject: z.string().min(1).describe("Email subject line"),
12
+ body: z.string().min(1).describe("Email body content"),
13
+ cc: z.array(z.string().email()).optional().describe("Email addresses to CC"),
14
+ bcc: z.array(z.string().email()).optional().describe("Email addresses to BCC"),
15
+ importance: z.enum(["low", "normal", "high"]).default("normal").describe(
16
+ "Email importance level",
17
+ ),
18
+ bodyType: z.enum(["text", "html"]).default("text").describe("Body content type (text or html)"),
19
+ }),
20
+ async execute({ to, subject, body, cc, bcc, importance, bodyType }) {
21
+ await sendEmail({
22
+ to,
23
+ subject,
24
+ body,
25
+ cc,
26
+ bcc,
27
+ importance,
28
+ bodyType,
29
+ });
30
+
31
+ return {
32
+ success: true,
33
+ message: `Email sent successfully to ${to.join(", ")}`,
34
+ recipients: {
35
+ to,
36
+ cc,
37
+ bcc,
38
+ },
39
+ };
40
+ },
41
+ });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Outlook OAuth Callback
3
+ */
4
+
5
+ import { createOAuthCallbackHandler, memoryTokenStore, outlookConfig } from "veryfront/oauth";
6
+
7
+ export const GET = createOAuthCallbackHandler(outlookConfig, {
8
+ tokenStore: memoryTokenStore,
9
+ onSuccess: () => "/",
10
+ onError: () => "/",
11
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Outlook OAuth Initiation
3
+ */
4
+
5
+ import { createOAuthInitHandler, memoryTokenStore, outlookConfig } from "veryfront/oauth";
6
+
7
+ export const GET = createOAuthInitHandler(outlookConfig, {
8
+ tokenStore: memoryTokenStore,
9
+ });