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,331 @@
1
+ # Google Sheets Integration for Veryfront
2
+
3
+ A complete Google Sheets integration following the Notion integration pattern. Provides AI tools for reading, writing, and managing Google Sheets spreadsheets.
4
+
5
+ ## Features
6
+
7
+ - **OAuth 2.0 Authentication** - Secure Google OAuth flow with token refresh
8
+ - **Read Operations** - List spreadsheets, read metadata, and fetch cell data
9
+ - **Write Operations** - Create spreadsheets, write data, and update ranges
10
+ - **Type-Safe Client** - Fully typed TypeScript API client
11
+ - **AI Tools** - Five AI tools for spreadsheet operations
12
+
13
+ ## Directory Structure
14
+
15
+ ```
16
+ sheets/
17
+ ├── connector.json # Integration metadata and configuration
18
+ └── files/
19
+ ├── _env.example # Environment variables template
20
+ ├── lib/
21
+ │ ├── oauth.ts # OAuth 2.0 helpers
22
+ │ ├── token-store.ts # Token storage (in-memory for dev)
23
+ │ └── sheets-client.ts # Google Sheets API client
24
+ ├── app/api/auth/sheets/
25
+ │ ├── route.ts # OAuth initiation endpoint
26
+ │ └── callback/route.ts # OAuth callback handler
27
+ └── ai/tools/
28
+ ├── list-spreadsheets.ts # List recent spreadsheets
29
+ ├── get-spreadsheet.ts # Get spreadsheet metadata
30
+ ├── read-range.ts # Read cell data from range
31
+ ├── write-range.ts # Write data to range
32
+ └── create-spreadsheet.ts # Create new spreadsheet
33
+ ```
34
+
35
+ ## Setup Instructions
36
+
37
+ ### 1. Create Google OAuth Credentials
38
+
39
+ 1. Go to [Google Cloud Console](https://console.cloud.google.com/apis/credentials)
40
+ 2. Create a new OAuth 2.0 Client ID (or use existing)
41
+ 3. Add authorized redirect URI: `http://localhost:3000/api/auth/sheets/callback`
42
+ 4. Copy Client ID and Client Secret
43
+
44
+ ### 2. Enable Required APIs
45
+
46
+ Enable these APIs in your Google Cloud project:
47
+ - [Google Sheets API](https://console.cloud.google.com/apis/library/sheets.googleapis.com)
48
+ - [Google Drive API](https://console.cloud.google.com/apis/library/drive.googleapis.com)
49
+
50
+ ### 3. Configure Environment Variables
51
+
52
+ ```bash
53
+ GOOGLE_CLIENT_ID=your_client_id_here
54
+ GOOGLE_CLIENT_SECRET=your_client_secret_here
55
+ ```
56
+
57
+ ### 4. OAuth Scopes
58
+
59
+ The integration requests these scopes:
60
+ - `https://www.googleapis.com/auth/spreadsheets` - Full access to spreadsheets
61
+ - `https://www.googleapis.com/auth/drive.readonly` - Read-only access to Drive (for listing)
62
+
63
+ ## API Client Usage
64
+
65
+ ### Create Client
66
+
67
+ ```typescript
68
+ import { createSheetsClient } from "./lib/sheets-client.ts";
69
+
70
+ const client = createSheetsClient("user-id");
71
+ ```
72
+
73
+ ### List Spreadsheets
74
+
75
+ ```typescript
76
+ const spreadsheets = await client.listSpreadsheets({
77
+ maxResults: 20,
78
+ orderBy: "modifiedTime",
79
+ });
80
+ ```
81
+
82
+ ### Get Spreadsheet Metadata
83
+
84
+ ```typescript
85
+ const spreadsheet = await client.getSpreadsheet("spreadsheet-id");
86
+ console.log(spreadsheet.properties.title);
87
+ console.log(spreadsheet.sheets); // All sheet tabs
88
+ ```
89
+
90
+ ### Read Data
91
+
92
+ ```typescript
93
+ // Read specific range
94
+ const data = await client.readRange("spreadsheet-id", "Sheet1!A1:D10");
95
+ console.log(data.values); // 2D array of cell values
96
+
97
+ // Read entire sheet
98
+ const allData = await client.readRange("spreadsheet-id", "Sheet1");
99
+ ```
100
+
101
+ ### Write Data
102
+
103
+ ```typescript
104
+ await client.writeRange({
105
+ spreadsheetId: "spreadsheet-id",
106
+ range: "Sheet1!A1",
107
+ values: [
108
+ ["Name", "Age", "City"],
109
+ ["John", 30, "New York"],
110
+ ["Jane", 25, "Boston"],
111
+ ],
112
+ valueInputOption: "USER_ENTERED", // Parses formulas, numbers, dates
113
+ });
114
+ ```
115
+
116
+ ### Create Spreadsheet
117
+
118
+ ```typescript
119
+ const newSpreadsheet = await client.createSpreadsheet({
120
+ title: "My New Spreadsheet",
121
+ sheets: [
122
+ { title: "Data", rowCount: 1000, columnCount: 26 },
123
+ { title: "Summary", rowCount: 100, columnCount: 10 },
124
+ ],
125
+ });
126
+ ```
127
+
128
+ ## AI Tools
129
+
130
+ ### 1. list-spreadsheets
131
+
132
+ List recent Google Sheets from Drive.
133
+
134
+ ```typescript
135
+ {
136
+ maxResults: 20,
137
+ orderBy: "modifiedTime" // or "createdTime", "name"
138
+ }
139
+ ```
140
+
141
+ ### 2. get-spreadsheet
142
+
143
+ Get spreadsheet metadata including all sheets and properties.
144
+
145
+ ```typescript
146
+ {
147
+ spreadsheetId: "abc123..."
148
+ }
149
+ ```
150
+
151
+ ### 3. read-range
152
+
153
+ Read cell data from a range using A1 notation.
154
+
155
+ ```typescript
156
+ {
157
+ spreadsheetId: "abc123...",
158
+ range: "Sheet1!A1:D10" // or "A1:B", or just "Sheet1"
159
+ }
160
+ ```
161
+
162
+ ### 4. write-range
163
+
164
+ Write data to a spreadsheet range.
165
+
166
+ ```typescript
167
+ {
168
+ spreadsheetId: "abc123...",
169
+ range: "Sheet1!A1",
170
+ values: [["Header1", "Header2"], ["Value1", "Value2"]],
171
+ valueInputOption: "USER_ENTERED" // or "RAW"
172
+ }
173
+ ```
174
+
175
+ ### 5. create-spreadsheet
176
+
177
+ Create a new spreadsheet with optional initial data.
178
+
179
+ ```typescript
180
+ {
181
+ title: "My Spreadsheet",
182
+ sheets: [{ title: "Sheet1", rowCount: 1000, columnCount: 26 }],
183
+ initialData: {
184
+ sheetTitle: "Sheet1",
185
+ range: "A1",
186
+ values: [["Name", "Value"], ["Item1", 100]]
187
+ }
188
+ }
189
+ ```
190
+
191
+ ## Suggested Prompts
192
+
193
+ The integration includes three AI prompts:
194
+
195
+ 1. **Analyze spreadsheet data** - Read and analyze data with insights and statistics
196
+ 2. **Create a report spreadsheet** - Generate formatted spreadsheets with calculations
197
+ 3. **Update a tracker** - Update tracking spreadsheets with new data
198
+
199
+ ## Integration with Other Services
200
+
201
+ This integration works well with:
202
+ - **Gmail** - Export email data to sheets
203
+ - **Calendar** - Create event trackers
204
+ - **Notion** - Sync data between Notion and Sheets
205
+
206
+ ## Advanced Features
207
+
208
+ ### Token Management
209
+
210
+ The integration includes automatic token refresh:
211
+ - Tokens expire after 1 hour
212
+ - Refresh tokens are used automatically
213
+ - Failed refreshes trigger re-authentication
214
+
215
+ ### Batch Operations
216
+
217
+ ```typescript
218
+ // Read multiple ranges at once
219
+ const ranges = await client.readRanges("spreadsheet-id", [
220
+ "Sheet1!A1:B10",
221
+ "Sheet2!C1:D10",
222
+ ]);
223
+
224
+ // Append data to a sheet
225
+ await client.appendRange("spreadsheet-id", "Sheet1!A1", [
226
+ ["New Row 1", "Value 1"],
227
+ ["New Row 2", "Value 2"],
228
+ ]);
229
+
230
+ // Clear a range
231
+ await client.clearRange("spreadsheet-id", "Sheet1!A1:Z100");
232
+ ```
233
+
234
+ ### Sheet Management
235
+
236
+ ```typescript
237
+ // Add a new sheet
238
+ await client.addSheet("spreadsheet-id", "New Sheet", {
239
+ rowCount: 500,
240
+ columnCount: 20,
241
+ });
242
+
243
+ // Delete a sheet
244
+ await client.deleteSheet("spreadsheet-id", sheetId);
245
+ ```
246
+
247
+ ## Production Considerations
248
+
249
+ ### Token Storage
250
+
251
+ The default implementation uses in-memory storage. For production:
252
+
253
+ ```typescript
254
+ import { createTokenStore } from "./lib/token-store.ts";
255
+
256
+ const tokenStore = createTokenStore({
257
+ get: async (key) => await db.get(key),
258
+ set: async (key, value) => await db.set(key, value),
259
+ delete: async (key) => await db.delete(key),
260
+ });
261
+ ```
262
+
263
+ ### User Authentication
264
+
265
+ Replace `DEFAULT_USER_ID` with actual user session management:
266
+
267
+ ```typescript
268
+ // Get user from session
269
+ const userId = await getSessionUserId(request);
270
+ const client = createSheetsClient(userId);
271
+ ```
272
+
273
+ ### Error Handling
274
+
275
+ The client throws descriptive errors:
276
+ - `"Google Sheets not connected"` - User needs to authenticate
277
+ - `"Sheets API error: 404"` - Spreadsheet not found
278
+ - `"Token refresh failed"` - Re-authentication required
279
+
280
+ ## Type Definitions
281
+
282
+ ### Spreadsheet
283
+
284
+ ```typescript
285
+ interface Spreadsheet {
286
+ spreadsheetId: string;
287
+ properties: {
288
+ title: string;
289
+ locale: string;
290
+ timeZone: string;
291
+ };
292
+ sheets: Sheet[];
293
+ spreadsheetUrl: string;
294
+ }
295
+ ```
296
+
297
+ ### Sheet
298
+
299
+ ```typescript
300
+ interface Sheet {
301
+ properties: {
302
+ sheetId: number;
303
+ title: string;
304
+ index: number;
305
+ sheetType: "GRID" | "OBJECT";
306
+ gridProperties?: {
307
+ rowCount: number;
308
+ columnCount: number;
309
+ };
310
+ };
311
+ }
312
+ ```
313
+
314
+ ### CellData
315
+
316
+ ```typescript
317
+ interface CellData {
318
+ values: unknown[][];
319
+ range: string;
320
+ }
321
+ ```
322
+
323
+ ## API Documentation
324
+
325
+ - [Google Sheets API v4](https://developers.google.com/sheets/api/reference/rest)
326
+ - [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)
327
+ - [A1 Notation](https://developers.google.com/sheets/api/guides/concepts#cell)
328
+
329
+ ## License
330
+
331
+ Part of the Veryfront framework.
@@ -0,0 +1,99 @@
1
+ {
2
+ "name": "sheets",
3
+ "displayName": "Google Sheets",
4
+ "icon": "sheets.svg",
5
+ "description": "Read, write, and manage Google Sheets spreadsheets",
6
+ "auth": {
7
+ "type": "oauth2",
8
+ "provider": "google",
9
+ "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
10
+ "tokenUrl": "https://oauth2.googleapis.com/token",
11
+ "scopes": [
12
+ "https://www.googleapis.com/auth/spreadsheets",
13
+ "https://www.googleapis.com/auth/drive.readonly"
14
+ ],
15
+ "callbackPath": "/api/auth/sheets/callback",
16
+ "requiredApis": [
17
+ {
18
+ "name": "Google Sheets API",
19
+ "enableUrl": "https://console.cloud.google.com/apis/library/sheets.googleapis.com"
20
+ },
21
+ {
22
+ "name": "Google Drive API",
23
+ "enableUrl": "https://console.cloud.google.com/apis/library/drive.googleapis.com"
24
+ }
25
+ ]
26
+ },
27
+ "envVars": [
28
+ {
29
+ "name": "GOOGLE_CLIENT_ID",
30
+ "description": "Google OAuth Client ID",
31
+ "required": true,
32
+ "sensitive": false,
33
+ "docsUrl": "https://console.cloud.google.com/apis/credentials"
34
+ },
35
+ {
36
+ "name": "GOOGLE_CLIENT_SECRET",
37
+ "description": "Google OAuth Client Secret",
38
+ "required": true,
39
+ "sensitive": true,
40
+ "docsUrl": "https://console.cloud.google.com/apis/credentials"
41
+ }
42
+ ],
43
+ "tools": [
44
+ {
45
+ "id": "list-spreadsheets",
46
+ "name": "List Spreadsheets",
47
+ "description": "List recent Google Sheets spreadsheets from Drive",
48
+ "requiresWrite": false
49
+ },
50
+ {
51
+ "id": "get-spreadsheet",
52
+ "name": "Get Spreadsheet",
53
+ "description": "Get spreadsheet metadata including sheet names and properties",
54
+ "requiresWrite": false
55
+ },
56
+ {
57
+ "id": "read-range",
58
+ "name": "Read Range",
59
+ "description": "Read cell data from a spreadsheet range",
60
+ "requiresWrite": false
61
+ },
62
+ {
63
+ "id": "write-range",
64
+ "name": "Write Range",
65
+ "description": "Write data to a spreadsheet range",
66
+ "requiresWrite": true
67
+ },
68
+ {
69
+ "id": "create-spreadsheet",
70
+ "name": "Create Spreadsheet",
71
+ "description": "Create a new spreadsheet with optional initial data",
72
+ "requiresWrite": true
73
+ }
74
+ ],
75
+ "prompts": [
76
+ {
77
+ "id": "analyze-data",
78
+ "title": "Analyze spreadsheet data",
79
+ "prompt": "Read and analyze data from a Google Sheets spreadsheet. Provide insights, trends, and statistics.",
80
+ "category": "productivity",
81
+ "icon": "chart"
82
+ },
83
+ {
84
+ "id": "create-report",
85
+ "title": "Create a report spreadsheet",
86
+ "prompt": "Create a new Google Sheets spreadsheet with formatted data, headers, and calculations.",
87
+ "category": "productivity",
88
+ "icon": "plus"
89
+ },
90
+ {
91
+ "id": "update-tracker",
92
+ "title": "Update a tracker",
93
+ "prompt": "Update a tracking spreadsheet with new data. Add rows, update values, or calculate totals.",
94
+ "category": "productivity",
95
+ "icon": "edit"
96
+ }
97
+ ],
98
+ "suggestedWith": ["gmail", "calendar", "notion"]
99
+ }
@@ -0,0 +1,8 @@
1
+ # Google Sheets Integration
2
+ # Create OAuth credentials at https://console.cloud.google.com/apis/credentials
3
+ # Make sure to enable:
4
+ # - Google Sheets API: https://console.cloud.google.com/apis/library/sheets.googleapis.com
5
+ # - Google Drive API: https://console.cloud.google.com/apis/library/drive.googleapis.com
6
+
7
+ GOOGLE_CLIENT_ID=your_client_id_here
8
+ GOOGLE_CLIENT_SECRET=your_client_secret_here
@@ -0,0 +1,85 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { createSheetsClient } from "../../lib/sheets-client.ts";
4
+
5
+ // Default user ID for demo/dev purposes
6
+ // In production, get from authenticated session
7
+ const DEFAULT_USER_ID = "demo-user";
8
+
9
+ export default tool({
10
+ id: "create-spreadsheet",
11
+ description:
12
+ "Create a new Google Sheets spreadsheet with optional sheet configurations. Returns the new spreadsheet ID and URL.",
13
+ inputSchema: z.object({
14
+ title: z
15
+ .string()
16
+ .describe("Title of the new spreadsheet"),
17
+ sheets: z
18
+ .array(
19
+ z.object({
20
+ title: z.string().describe("Name of the sheet/tab"),
21
+ rowCount: z
22
+ .number()
23
+ .min(1)
24
+ .max(10000)
25
+ .optional()
26
+ .describe("Number of rows (default: 1000)"),
27
+ columnCount: z
28
+ .number()
29
+ .min(1)
30
+ .max(26)
31
+ .optional()
32
+ .describe("Number of columns (default: 26)"),
33
+ }),
34
+ )
35
+ .optional()
36
+ .describe(
37
+ "Optional array of sheet configurations. If not provided, a single default sheet is created.",
38
+ ),
39
+ initialData: z
40
+ .object({
41
+ sheetTitle: z.string().describe("Name of the sheet to write data to"),
42
+ range: z
43
+ .string()
44
+ .describe("Range in A1 notation (e.g., 'A1', 'A1:D10')"),
45
+ values: z
46
+ .array(z.array(z.any()))
47
+ .describe(
48
+ "2D array of values to write. Example: [['Name', 'Age'], ['John', 30]]",
49
+ ),
50
+ })
51
+ .optional()
52
+ .describe("Optional initial data to populate the spreadsheet"),
53
+ }),
54
+ async execute({ title, sheets, initialData }) {
55
+ const client = createSheetsClient(DEFAULT_USER_ID);
56
+
57
+ // Create the spreadsheet
58
+ const spreadsheet = await client.createSpreadsheet({
59
+ title,
60
+ sheets,
61
+ });
62
+
63
+ // Write initial data if provided
64
+ if (initialData) {
65
+ const range = `${initialData.sheetTitle}!${initialData.range}`;
66
+ await client.writeRange({
67
+ spreadsheetId: spreadsheet.spreadsheetId,
68
+ range,
69
+ values: initialData.values,
70
+ valueInputOption: "USER_ENTERED",
71
+ });
72
+ }
73
+
74
+ return {
75
+ id: spreadsheet.spreadsheetId,
76
+ title: spreadsheet.properties.title,
77
+ url: spreadsheet.spreadsheetUrl,
78
+ sheets: spreadsheet.sheets.map((sheet) => ({
79
+ id: sheet.properties.sheetId,
80
+ title: sheet.properties.title,
81
+ index: sheet.properties.index,
82
+ })),
83
+ };
84
+ },
85
+ });
@@ -0,0 +1,39 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { createSheetsClient } from "../../lib/sheets-client.ts";
4
+
5
+ // Default user ID for demo/dev purposes
6
+ // In production, get from authenticated session
7
+ const DEFAULT_USER_ID = "demo-user";
8
+
9
+ export default tool({
10
+ id: "get-spreadsheet",
11
+ description:
12
+ "Get metadata about a Google Sheets spreadsheet including all sheet names, properties, and structure. Use this to discover available sheets and their dimensions.",
13
+ inputSchema: z.object({
14
+ spreadsheetId: z
15
+ .string()
16
+ .describe("The ID of the spreadsheet (from URL or list-spreadsheets)"),
17
+ }),
18
+ async execute({ spreadsheetId }) {
19
+ const client = createSheetsClient(DEFAULT_USER_ID);
20
+
21
+ const spreadsheet = await client.getSpreadsheet(spreadsheetId);
22
+
23
+ return {
24
+ id: spreadsheet.spreadsheetId,
25
+ title: spreadsheet.properties.title,
26
+ url: spreadsheet.spreadsheetUrl,
27
+ locale: spreadsheet.properties.locale,
28
+ timeZone: spreadsheet.properties.timeZone,
29
+ sheets: spreadsheet.sheets.map((sheet) => ({
30
+ id: sheet.properties.sheetId,
31
+ title: sheet.properties.title,
32
+ index: sheet.properties.index,
33
+ type: sheet.properties.sheetType,
34
+ rowCount: sheet.properties.gridProperties?.rowCount,
35
+ columnCount: sheet.properties.gridProperties?.columnCount,
36
+ })),
37
+ };
38
+ },
39
+ });
@@ -0,0 +1,41 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { createSheetsClient } from "../../lib/sheets-client.ts";
4
+
5
+ // Default user ID for demo/dev purposes
6
+ // In production, get from authenticated session
7
+ const DEFAULT_USER_ID = "demo-user";
8
+
9
+ export default tool({
10
+ id: "list-spreadsheets",
11
+ description:
12
+ "List recent Google Sheets spreadsheets from Google Drive. Returns spreadsheet names, IDs, and metadata.",
13
+ inputSchema: z.object({
14
+ maxResults: z
15
+ .number()
16
+ .min(1)
17
+ .max(100)
18
+ .default(20)
19
+ .describe("Maximum number of spreadsheets to return"),
20
+ orderBy: z
21
+ .enum(["createdTime", "modifiedTime", "name"])
22
+ .default("modifiedTime")
23
+ .describe("Sort order for results"),
24
+ }),
25
+ async execute({ maxResults, orderBy }) {
26
+ const client = createSheetsClient(DEFAULT_USER_ID);
27
+
28
+ const spreadsheets = await client.listSpreadsheets({
29
+ maxResults,
30
+ orderBy,
31
+ });
32
+
33
+ return spreadsheets.map((sheet) => ({
34
+ id: sheet.id,
35
+ name: sheet.name,
36
+ url: sheet.webViewLink,
37
+ createdTime: sheet.createdTime,
38
+ modifiedTime: sheet.modifiedTime,
39
+ }));
40
+ },
41
+ });
@@ -0,0 +1,35 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { createSheetsClient } from "../../lib/sheets-client.ts";
4
+
5
+ // Default user ID for demo/dev purposes
6
+ // In production, get from authenticated session
7
+ const DEFAULT_USER_ID = "demo-user";
8
+
9
+ export default tool({
10
+ id: "read-range",
11
+ description:
12
+ "Read cell data from a Google Sheets range. Returns a 2D array of values. Use A1 notation (e.g., 'Sheet1!A1:D10', 'A1:B', or just 'Sheet1' for entire sheet).",
13
+ inputSchema: z.object({
14
+ spreadsheetId: z
15
+ .string()
16
+ .describe("The ID of the spreadsheet"),
17
+ range: z
18
+ .string()
19
+ .describe(
20
+ "Range in A1 notation (e.g., 'Sheet1!A1:D10', 'A1:B5', or 'Sheet1' for entire sheet)",
21
+ ),
22
+ }),
23
+ async execute({ spreadsheetId, range }) {
24
+ const client = createSheetsClient(DEFAULT_USER_ID);
25
+
26
+ const result = await client.readRange(spreadsheetId, range);
27
+
28
+ return {
29
+ range: result.range,
30
+ values: result.values,
31
+ rowCount: result.values.length,
32
+ columnCount: result.values[0]?.length || 0,
33
+ };
34
+ },
35
+ });
@@ -0,0 +1,51 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { createSheetsClient } from "../../lib/sheets-client.ts";
4
+
5
+ // Default user ID for demo/dev purposes
6
+ // In production, get from authenticated session
7
+ const DEFAULT_USER_ID = "demo-user";
8
+
9
+ export default tool({
10
+ id: "write-range",
11
+ description:
12
+ "Write data to a Google Sheets range. Overwrites existing content in the specified range. Provide data as a 2D array where each inner array is a row.",
13
+ inputSchema: z.object({
14
+ spreadsheetId: z
15
+ .string()
16
+ .describe("The ID of the spreadsheet"),
17
+ range: z
18
+ .string()
19
+ .describe(
20
+ "Range in A1 notation where to write data (e.g., 'Sheet1!A1', 'Sheet1!A1:D5')",
21
+ ),
22
+ values: z
23
+ .array(z.array(z.any()))
24
+ .describe(
25
+ "2D array of values to write. Each inner array represents a row. Example: [['Name', 'Age'], ['John', 30], ['Jane', 25]]",
26
+ ),
27
+ valueInputOption: z
28
+ .enum(["RAW", "USER_ENTERED"])
29
+ .default("USER_ENTERED")
30
+ .describe(
31
+ "RAW: Values are stored as-is. USER_ENTERED: Values are parsed as if typed by user (formulas, numbers, dates)",
32
+ ),
33
+ }),
34
+ async execute({ spreadsheetId, range, values, valueInputOption }) {
35
+ const client = createSheetsClient(DEFAULT_USER_ID);
36
+
37
+ const result = await client.writeRange({
38
+ spreadsheetId,
39
+ range,
40
+ values,
41
+ valueInputOption,
42
+ });
43
+
44
+ return {
45
+ updatedRange: result.updatedRange,
46
+ updatedRows: result.updatedRows,
47
+ updatedColumns: result.updatedColumns,
48
+ updatedCells: result.updatedCells,
49
+ };
50
+ },
51
+ });